mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge remote-tracking branch 'refs/remotes/larshp/master'
This commit is contained in:
commit
d69901345f
|
@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100.
|
|||
* See http://www.abapgit.org
|
||||
|
||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.24.7'. "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.24.13'. "#EC NOTEXT
|
||||
|
||||
********************************************************************************
|
||||
* The MIT License (MIT)
|
||||
|
|
|
@ -166,6 +166,8 @@ CLASS lcl_background IMPLEMENTATION.
|
|||
|
||||
METHOD run.
|
||||
|
||||
CONSTANTS: c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
|
||||
|
||||
DATA: lo_per TYPE REF TO lcl_persistence_background,
|
||||
lo_repo TYPE REF TO lcl_repo_online,
|
||||
lt_list TYPE lcl_persistence_background=>tt_background,
|
||||
|
@ -174,6 +176,20 @@ CLASS lcl_background IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
|
||||
|
||||
|
||||
CALL FUNCTION 'ENQUEUE_EZABAPGIT'
|
||||
EXPORTING
|
||||
mode_zabapgit = 'E'
|
||||
type = c_enq_type
|
||||
_scope = '3'
|
||||
EXCEPTIONS
|
||||
foreign_lock = 1
|
||||
system_failure = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
WRITE: / 'Another intance of the program is already running'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CREATE OBJECT lo_per.
|
||||
lt_list = lo_per->list( ).
|
||||
|
||||
|
@ -204,6 +220,10 @@ CLASS lcl_background IMPLEMENTATION.
|
|||
WRITE: / 'Nothing configured' ##NO_TEXT.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DEQUEUE_EZABAPGIT'
|
||||
EXPORTING
|
||||
type = c_enq_type.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -33,15 +33,22 @@ form input:focus, textarea:focus {
|
|||
border: 1px solid #8cadd9;
|
||||
}
|
||||
|
||||
/* MODIFIERS */
|
||||
/* COLOR PALETTE */
|
||||
.grey { color: lightgrey !important; }
|
||||
.emphasis { font-weight: bold !important; }
|
||||
.darkgrey { color: #808080 !important; }
|
||||
.attention { color: red !important; }
|
||||
.blue { color: #5e8dc9; !important; }
|
||||
.red { color: red !important; }
|
||||
|
||||
/* MODIFIERS */
|
||||
.emphasis { font-weight: bold !important; }
|
||||
.crossout { text-decoration: line-through !important; }
|
||||
.right { text-align:right; }
|
||||
.paddings { padding: 0.5em 0.5em; }
|
||||
.pad-sides { padding: 0 0.3em; }
|
||||
.pad4px { padding: 4px; }
|
||||
.w100 { width: 100%; }
|
||||
.w40 { width: 40%; }
|
||||
|
||||
/* STRUCTURE DIVS, HEADER & FOOTER */
|
||||
td.headpad { padding-top: 11px; }
|
||||
|
@ -172,6 +179,7 @@ div.menu_vertical a {
|
|||
.dropdown_content td { text-align: left; padding: 2px; }
|
||||
.dropdown_content td a { padding: 0em 0.2em; }
|
||||
.dropdown_content td.icon { padding: 0 3px 0 6px; }
|
||||
.dropdown_content td.text { width: 100%; }
|
||||
.dropdown_content a:hover { background-color: #f1f1f1 }
|
||||
.dropdown:hover .dropbtn { color: #79a0d2; }
|
||||
|
||||
|
@ -248,11 +256,12 @@ div.repo {
|
|||
div.repo_container {
|
||||
position: relative;
|
||||
}
|
||||
.repo_tab {
|
||||
table.repo_tab {
|
||||
border: 1px solid #DDD;
|
||||
border-radius: 3px;
|
||||
background: #fff;
|
||||
margin-top: 0.5em;
|
||||
width: 100%;
|
||||
}
|
||||
.repo_tab td {
|
||||
border-top: 1px solid #eee;
|
||||
|
@ -463,6 +472,7 @@ div.diff_head span.state-block span.none {
|
|||
table.diff_tab {
|
||||
font-family: Consolas, Courier, monospace;
|
||||
font-size: 10pt;
|
||||
width: 100%;
|
||||
}
|
||||
table.diff_tab td,th {
|
||||
color: #444;
|
||||
|
|
|
@ -14,17 +14,19 @@ TYPES: BEGIN OF ty_file_signature,
|
|||
sha1 TYPE ty_sha1,
|
||||
END OF ty_file_signature.
|
||||
|
||||
TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAULT KEY.
|
||||
TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename.
|
||||
TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF
|
||||
ty_file_signature WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF
|
||||
ty_file_signature WITH UNIQUE KEY path filename.
|
||||
|
||||
TYPES: BEGIN OF ty_file.
|
||||
INCLUDE TYPE ty_file_signature.
|
||||
TYPES: data TYPE xstring,
|
||||
INCLUDE TYPE ty_file_signature.
|
||||
TYPES: data TYPE xstring,
|
||||
END OF ty_file.
|
||||
TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
|
||||
TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_comment,
|
||||
username TYPE string,
|
||||
|
@ -49,8 +51,9 @@ TYPES: ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY.
|
|||
TYPES: BEGIN OF ty_metadata,
|
||||
class TYPE string,
|
||||
version TYPE string,
|
||||
late_deser TYPE string,
|
||||
late_deser TYPE abap_bool,
|
||||
delete_tadir TYPE abap_bool,
|
||||
ddic TYPE abap_bool,
|
||||
END OF ty_metadata.
|
||||
|
||||
TYPES: BEGIN OF ty_web_asset,
|
||||
|
@ -61,11 +64,11 @@ TYPES: BEGIN OF ty_web_asset,
|
|||
TYPES tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_repo_file,
|
||||
path TYPE string,
|
||||
filename TYPE string,
|
||||
is_changed TYPE abap_bool,
|
||||
rstate TYPE char1,
|
||||
lstate TYPE char1,
|
||||
path TYPE string,
|
||||
filename TYPE string,
|
||||
is_changed TYPE abap_bool,
|
||||
rstate TYPE char1,
|
||||
lstate TYPE char1,
|
||||
END OF ty_repo_file.
|
||||
TYPES tt_repo_files TYPE STANDARD TABLE OF ty_repo_file WITH DEFAULT KEY.
|
||||
|
||||
|
@ -101,19 +104,35 @@ TYPES: BEGIN OF ty_tadir,
|
|||
TYPES: ty_tadir_tt TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_result,
|
||||
obj_type TYPE tadir-object,
|
||||
obj_name TYPE tadir-obj_name,
|
||||
path TYPE string,
|
||||
filename TYPE string,
|
||||
package TYPE devclass,
|
||||
match TYPE sap_bool,
|
||||
lstate TYPE char1,
|
||||
rstate TYPE char1,
|
||||
obj_type TYPE tadir-object,
|
||||
obj_name TYPE tadir-obj_name,
|
||||
path TYPE string,
|
||||
filename TYPE string,
|
||||
package TYPE devclass,
|
||||
match TYPE sap_bool,
|
||||
lstate TYPE char1,
|
||||
rstate TYPE char1,
|
||||
END OF ty_result.
|
||||
TYPES: ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_tpool.
|
||||
INCLUDE TYPE textpool.
|
||||
TYPES: split TYPE c LENGTH 8.
|
||||
TYPES: END OF ty_tpool.
|
||||
|
||||
TYPES: ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_sotr,
|
||||
header TYPE sotr_head,
|
||||
entries TYPE sotr_text_tt,
|
||||
END OF ty_sotr.
|
||||
|
||||
TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY.
|
||||
|
||||
CONSTANTS: BEGIN OF gc_state, " https://git-scm.com/docs/git-status
|
||||
unchanged TYPE char1 VALUE '',
|
||||
added TYPE char1 VALUE 'A',
|
||||
|
@ -140,7 +159,7 @@ CONSTANTS: BEGIN OF gc_event_state,
|
|||
END OF gc_event_state.
|
||||
|
||||
CONSTANTS: BEGIN OF gc_html_opt,
|
||||
emphas TYPE c VALUE 'E',
|
||||
strong TYPE c VALUE 'E',
|
||||
cancel TYPE c VALUE 'C',
|
||||
crossout TYPE c VALUE 'X',
|
||||
END OF gc_html_opt.
|
||||
|
@ -171,43 +190,43 @@ CONSTANTS: BEGIN OF gc_action,
|
|||
repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums',
|
||||
repo_toggle_fav TYPE string VALUE 'repo_toggle_fav',
|
||||
|
||||
abapgit_home TYPE string VALUE 'abapgit_home',
|
||||
abapgit_wiki TYPE string VALUE 'abapgit_wiki',
|
||||
abapgit_install TYPE string VALUE 'abapgit_install',
|
||||
abapgit_install_pi TYPE string VALUE 'abapgit_install_pi',
|
||||
abapgit_home TYPE string VALUE 'abapgit_home',
|
||||
abapgit_wiki TYPE string VALUE 'abapgit_wiki',
|
||||
abapgit_install TYPE string VALUE 'abapgit_install',
|
||||
abapgit_install_pi TYPE string VALUE 'abapgit_install_pi',
|
||||
|
||||
zip_import TYPE string VALUE 'zip_import',
|
||||
zip_export TYPE string VALUE 'zip_export',
|
||||
zip_package TYPE string VALUE 'zip_package',
|
||||
zip_transport TYPE string VALUE 'zip_transport',
|
||||
zip_object TYPE string VALUE 'zip_object',
|
||||
zip_import TYPE string VALUE 'zip_import',
|
||||
zip_export TYPE string VALUE 'zip_export',
|
||||
zip_package TYPE string VALUE 'zip_package',
|
||||
zip_transport TYPE string VALUE 'zip_transport',
|
||||
zip_object TYPE string VALUE 'zip_object',
|
||||
|
||||
git_pull TYPE string VALUE 'git_pull',
|
||||
git_reset TYPE string VALUE 'git_reset',
|
||||
git_branch_create TYPE string VALUE 'git_branch_create',
|
||||
git_branch_switch TYPE string VALUE 'git_branch_switch',
|
||||
git_branch_delete TYPE string VALUE 'git_branch_delete',
|
||||
git_commit TYPE string VALUE 'git_commit',
|
||||
git_pull TYPE string VALUE 'git_pull',
|
||||
git_reset TYPE string VALUE 'git_reset',
|
||||
git_branch_create TYPE string VALUE 'git_branch_create',
|
||||
git_branch_switch TYPE string VALUE 'git_branch_switch',
|
||||
git_branch_delete TYPE string VALUE 'git_branch_delete',
|
||||
git_commit TYPE string VALUE 'git_commit',
|
||||
|
||||
db_delete TYPE string VALUE 'db_delete',
|
||||
db_update TYPE string VALUE 'db_update',
|
||||
db_display TYPE string VALUE 'db_display',
|
||||
db_edit TYPE string VALUE 'db_edit',
|
||||
bg_update TYPE string VALUE 'bg_update',
|
||||
db_delete TYPE string VALUE 'db_delete',
|
||||
db_update TYPE string VALUE 'db_update',
|
||||
db_display TYPE string VALUE 'db_display',
|
||||
db_edit TYPE string VALUE 'db_edit',
|
||||
bg_update TYPE string VALUE 'bg_update',
|
||||
|
||||
go_main TYPE string VALUE 'go_main',
|
||||
go_explore TYPE string VALUE 'go_explore',
|
||||
go_db TYPE string VALUE 'go_db',
|
||||
go_background TYPE string VALUE 'go_background',
|
||||
go_background_run TYPE string VALUE 'go_background_run',
|
||||
go_diff TYPE string VALUE 'go_diff',
|
||||
go_stage TYPE string VALUE 'go_stage',
|
||||
go_commit TYPE string VALUE 'go_commit',
|
||||
go_branch_overview TYPE string VALUE 'go_branch_overview',
|
||||
go_playground TYPE string VALUE 'go_playground',
|
||||
go_debuginfo TYPE string VALUE 'go_debuginfo',
|
||||
go_settings TYPE STRING VALUE 'go_settings',
|
||||
go_tutorial TYPE STRING VALUE 'go_tutorial',
|
||||
jump TYPE string VALUE 'jump',
|
||||
jump_pkg TYPE string VALUE 'jump_pkg',
|
||||
go_main TYPE string VALUE 'go_main',
|
||||
go_explore TYPE string VALUE 'go_explore',
|
||||
go_db TYPE string VALUE 'go_db',
|
||||
go_background TYPE string VALUE 'go_background',
|
||||
go_background_run TYPE string VALUE 'go_background_run',
|
||||
go_diff TYPE string VALUE 'go_diff',
|
||||
go_stage TYPE string VALUE 'go_stage',
|
||||
go_commit TYPE string VALUE 'go_commit',
|
||||
go_branch_overview TYPE string VALUE 'go_branch_overview',
|
||||
go_playground TYPE string VALUE 'go_playground',
|
||||
go_debuginfo TYPE string VALUE 'go_debuginfo',
|
||||
go_settings TYPE string VALUE 'go_settings',
|
||||
go_tutorial TYPE string VALUE 'go_tutorial',
|
||||
jump TYPE string VALUE 'jump',
|
||||
jump_pkg TYPE string VALUE 'jump_pkg',
|
||||
END OF gc_action.
|
|
@ -193,7 +193,8 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
|
||||
" Match against current state
|
||||
READ TABLE it_state INTO ls_file_sig
|
||||
WITH KEY path = is_local-file-path filename = is_local-file-filename
|
||||
WITH KEY path = is_local-file-path
|
||||
filename = is_local-file-filename
|
||||
BINARY SEARCH.
|
||||
|
||||
IF sy-subrc = 0.
|
||||
|
@ -203,7 +204,8 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
IF ls_file_sig-sha1 <> is_remote-sha1.
|
||||
rs_result-rstate = gc_state-modified.
|
||||
ENDIF.
|
||||
rs_result-match = boolc( rs_result-lstate IS INITIAL AND rs_result-rstate IS INITIAL ).
|
||||
rs_result-match = boolc( rs_result-lstate IS INITIAL
|
||||
AND rs_result-rstate IS INITIAL ).
|
||||
ELSE.
|
||||
" This is a strange situation. As both local and remote exist
|
||||
" the state should also be present. Maybe this is a first run of the code.
|
||||
|
|
|
@ -337,7 +337,8 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
LOOP AT lt_branches FROM 1 ASSIGNING <ls_branch>.
|
||||
IF sy-tabix = 1.
|
||||
lv_capa = 'side-band-64k no-progress multi_ack agent=' && lcl_http=>get_agent( ) ##NO_TEXT.
|
||||
lv_capa = 'side-band-64k no-progress multi_ack agent='
|
||||
&& lcl_http=>get_agent( ) ##NO_TEXT.
|
||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& ` ` && lv_capa && gc_newline. "#EC NOTEXT
|
||||
ELSE.
|
||||
|
@ -348,14 +349,16 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
|
||||
IF iv_deepen = abap_true.
|
||||
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT
|
||||
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1'
|
||||
&& gc_newline ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
lv_buffer = lv_buffer
|
||||
&& '0000'
|
||||
&& '0009done' && gc_newline.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close( lcl_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
lv_xstring = lo_client->send_receive_close(
|
||||
lcl_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
|
||||
parse( IMPORTING ev_pack = lv_pack
|
||||
CHANGING cv_data = lv_xstring ).
|
||||
|
|
|
@ -273,9 +273,9 @@ CLASS lcl_git_branch_list IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
IF iv_branch_name CP 'refs/pull/*'
|
||||
OR iv_branch_name CP 'refs/merge-requests/*'
|
||||
OR iv_branch_name CP 'refs/keep-around/*'
|
||||
OR iv_branch_name CP 'refs/tmp/*'.
|
||||
OR iv_branch_name CP 'refs/merge-requests/*'
|
||||
OR iv_branch_name CP 'refs/keep-around/*'
|
||||
OR iv_branch_name CP 'refs/tmp/*'.
|
||||
rv_ignore = abap_true.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -13,6 +13,9 @@ CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui.
|
|||
METHODS get_images
|
||||
RETURNING VALUE(rt_images) TYPE tt_web_assets.
|
||||
|
||||
CLASS-METHODS get_webfont_link
|
||||
RETURNING VALUE(rv_link) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS get_inline_asset
|
||||
|
@ -108,11 +111,7 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION.
|
|||
TABLES
|
||||
binary_tab = lt_w3mime
|
||||
EXCEPTIONS
|
||||
failed = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
failed = 1 ##FM_SUBRC_OK.
|
||||
|
||||
ENDMETHOD. " get_mime_asset.
|
||||
|
||||
|
@ -145,6 +144,7 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION.
|
|||
DATA: lt_data TYPE ty_string_tt,
|
||||
lv_str TYPE string.
|
||||
|
||||
|
||||
CASE iv_asset_name.
|
||||
WHEN 'CSS_COMMON'.
|
||||
" @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'.
|
||||
|
@ -158,11 +158,11 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION.
|
|||
|
||||
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
|
||||
EXPORTING
|
||||
text = lv_str
|
||||
text = lv_str
|
||||
IMPORTING
|
||||
buffer = rv_data
|
||||
buffer = rv_data
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
OTHERS = 1.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. " get_inline_asset.
|
||||
|
@ -255,160 +255,15 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION.
|
|||
&& 'cpUAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
* http://fa2png.io/r/octicons/
|
||||
* colour: #808080
|
||||
* size: 16
|
||||
* https://www.base64-image.de/ can be used to convert images to base64
|
||||
|
||||
ls_image-url = 'img/sync' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG'
|
||||
&& '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu'
|
||||
&& 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ'
|
||||
&& '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM'
|
||||
&& 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8'
|
||||
&& 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/toc' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB'
|
||||
&& 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA'
|
||||
&& 'AABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/repo_online' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL'
|
||||
&& 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn'
|
||||
&& '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV'
|
||||
&& 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH'
|
||||
&& 'C3HLClrWc70ZAAAAAElFTkSuQmCC'.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/repo_offline' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI'
|
||||
&& 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk'
|
||||
&& 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ'
|
||||
&& '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/pkg' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF'
|
||||
&& '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3'
|
||||
&& 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+'
|
||||
&& 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db'
|
||||
&& '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV'
|
||||
&& '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/branch' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ'
|
||||
&& 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0'
|
||||
&& 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP'
|
||||
&& 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr'
|
||||
&& 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/link' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK'
|
||||
&& 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z'
|
||||
&& '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL'
|
||||
&& 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/code' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg'
|
||||
&& 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E'
|
||||
&& 'rkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/bin' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9'
|
||||
&& 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2'
|
||||
&& 'RotPsQAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/obj' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA'
|
||||
&& 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG'
|
||||
&& '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/lock' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI'
|
||||
&& 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB'
|
||||
&& 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0'
|
||||
&& 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y'
|
||||
&& 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/dir' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A'
|
||||
&& 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx'
|
||||
&& 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/burger' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt'
|
||||
&& 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE'
|
||||
&& 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF'
|
||||
&& 'TkSuQmCC'.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/star' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/star-grey' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
|
||||
ENDMETHOD. " get_inline_images.
|
||||
|
||||
METHOD get_webfont_link.
|
||||
|
||||
rv_link = '<link rel="stylesheet"'
|
||||
&& ' type="text/css" href="'
|
||||
&& 'https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.min.css'
|
||||
&& '">'. "#EC NOTEXT
|
||||
|
||||
ENDMETHOD. " get_webfont_link
|
||||
|
||||
ENDCLASS. "lcl_gui_asset_manager
|
|
@ -4,17 +4,18 @@
|
|||
|
||||
* All UI pages
|
||||
|
||||
* Super class
|
||||
* Super class & common html chunks
|
||||
INCLUDE zabapgit_html_chunks.
|
||||
INCLUDE zabapgit_page.
|
||||
|
||||
* Utils and helpers
|
||||
INCLUDE zabapgit_html_action_utils.
|
||||
INCLUDE zabapgit_repo_browser_util.
|
||||
INCLUDE zabapgit_syntax_highlighter.
|
||||
|
||||
* Components and templates
|
||||
INCLUDE zabapgit_view_repo.
|
||||
INCLUDE zabapgit_view_tutorial.
|
||||
INCLUDE zabapgit_syntax_highlighter.
|
||||
|
||||
* Pages
|
||||
INCLUDE zabapgit_page_commit.
|
||||
|
|
|
@ -7,9 +7,9 @@ DEFINE _add.
|
|||
END-OF-DEFINITION.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_html_helper DEFINITION
|
||||
* CLASS lcl_html DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_html_helper DEFINITION FINAL.
|
||||
CLASS lcl_html DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_indent_size TYPE i VALUE 2.
|
||||
|
||||
|
@ -21,27 +21,49 @@ CLASS lcl_html_helper DEFINITION FINAL.
|
|||
METHODS add IMPORTING iv_chunk TYPE any.
|
||||
METHODS reset.
|
||||
|
||||
METHODS add_anchor IMPORTING iv_txt TYPE string
|
||||
iv_act TYPE string
|
||||
iv_opt TYPE clike OPTIONAL
|
||||
iv_typ TYPE char1 DEFAULT gc_action_type-sapevent
|
||||
METHODS add_a IMPORTING iv_txt TYPE string
|
||||
iv_act TYPE string
|
||||
iv_typ TYPE char1 DEFAULT gc_action_type-sapevent
|
||||
iv_opt TYPE clike OPTIONAL
|
||||
iv_class TYPE string OPTIONAL
|
||||
iv_id TYPE string OPTIONAL
|
||||
iv_style TYPE string OPTIONAL.
|
||||
|
||||
METHODS add_icon IMPORTING iv_name TYPE string
|
||||
iv_hint TYPE string OPTIONAL
|
||||
iv_alt TYPE string OPTIONAL
|
||||
iv_class TYPE string OPTIONAL.
|
||||
|
||||
CLASS-METHODS a IMPORTING iv_txt TYPE string
|
||||
iv_act TYPE string
|
||||
iv_typ TYPE char1 DEFAULT gc_action_type-sapevent
|
||||
iv_opt TYPE clike OPTIONAL
|
||||
iv_class TYPE string OPTIONAL
|
||||
iv_id TYPE string OPTIONAL
|
||||
iv_style TYPE string OPTIONAL
|
||||
RETURNING VALUE(rv_str) TYPE string.
|
||||
|
||||
CLASS-METHODS icon IMPORTING iv_name TYPE string
|
||||
iv_hint TYPE string OPTIONAL
|
||||
iv_alt TYPE string OPTIONAL
|
||||
iv_class TYPE string OPTIONAL
|
||||
iv_id TYPE string OPTIONAL
|
||||
iv_style TYPE string OPTIONAL.
|
||||
RETURNING VALUE(rv_str) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS _add_str IMPORTING iv_str TYPE csequence.
|
||||
METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html_helper.
|
||||
METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html.
|
||||
|
||||
ENDCLASS. "lcl_html_helper DEFINITION
|
||||
ENDCLASS. "lcl_html DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_html_helper IMPLEMENTATION
|
||||
* CLASS lcl_html IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_html_helper IMPLEMENTATION.
|
||||
CLASS lcl_html IMPLEMENTATION.
|
||||
|
||||
METHOD add.
|
||||
|
||||
DATA lo_type TYPE REF TO cl_abap_typedescr.
|
||||
DATA lo_html TYPE REF TO lcl_html_helper.
|
||||
DATA lo_html TYPE REF TO lcl_html.
|
||||
|
||||
lo_type = cl_abap_typedescr=>describe_by_data( iv_chunk ).
|
||||
|
||||
|
@ -71,6 +93,7 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
|||
ENDMETHOD. "reset
|
||||
|
||||
METHOD _add_str.
|
||||
|
||||
CONSTANTS lc_single_tags_re TYPE string " HTML5 singleton tags
|
||||
VALUE '<(area|base|br|col|command|embed|hr|img|input|link|meta|param|source|!)'.
|
||||
|
||||
|
@ -93,7 +116,7 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
|||
|
||||
FIND FIRST OCCURRENCE OF '}' IN iv_str MATCH OFFSET lv_close_offs. " Find close } @beginning
|
||||
IF ( mv_within_style > 0 OR mv_within_js > 0 )
|
||||
AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0.
|
||||
AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0.
|
||||
lv_shift_back = 1.
|
||||
ENDIF.
|
||||
|
||||
|
@ -145,7 +168,20 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "_add_htm
|
||||
|
||||
METHOD add_anchor.
|
||||
METHOD add_a.
|
||||
|
||||
_add_str( a( iv_txt = iv_txt
|
||||
iv_act = iv_act
|
||||
iv_typ = iv_typ
|
||||
iv_opt = iv_opt
|
||||
iv_class = iv_class
|
||||
iv_id = iv_id
|
||||
iv_style = iv_style ) ).
|
||||
|
||||
ENDMETHOD. "add_a
|
||||
|
||||
METHOD a.
|
||||
|
||||
DATA: lv_class TYPE string,
|
||||
lv_href TYPE string,
|
||||
lv_id TYPE string,
|
||||
|
@ -153,7 +189,7 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
|||
|
||||
lv_class = iv_class.
|
||||
|
||||
IF iv_opt CA gc_html_opt-emphas.
|
||||
IF iv_opt CA gc_html_opt-strong.
|
||||
lv_class = lv_class && ' emphasis' ##NO_TEXT.
|
||||
ENDIF.
|
||||
IF iv_opt CA gc_html_opt-cancel.
|
||||
|
@ -186,11 +222,43 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
|||
lv_style = | style="{ iv_style }"|.
|
||||
ENDIF.
|
||||
|
||||
_add_str( |<a{ lv_id }{ lv_class }{ lv_href }{ lv_style }>{ iv_txt }</a>| ).
|
||||
rv_str = |<a{ lv_id }{ lv_class }{ lv_href }{ lv_style }>{ iv_txt }</a>|.
|
||||
|
||||
ENDMETHOD. "add_action
|
||||
ENDMETHOD. "a
|
||||
|
||||
ENDCLASS. "lcl_html_helper IMPLEMENTATION
|
||||
METHOD add_icon.
|
||||
|
||||
_add_str( icon( iv_name = iv_name
|
||||
iv_class = iv_class
|
||||
iv_alt = iv_alt
|
||||
iv_hint = iv_hint ) ).
|
||||
|
||||
ENDMETHOD. "add_icon
|
||||
|
||||
METHOD icon.
|
||||
|
||||
DATA: lv_hint TYPE string,
|
||||
lv_name TYPE string,
|
||||
lv_color TYPE string,
|
||||
lv_class TYPE string.
|
||||
|
||||
SPLIT iv_name AT '/' INTO lv_name lv_color.
|
||||
|
||||
IF iv_hint IS NOT INITIAL.
|
||||
lv_hint = | title="{ iv_hint }"|.
|
||||
ENDIF.
|
||||
IF iv_class IS NOT INITIAL.
|
||||
lv_class = | { iv_class }|.
|
||||
ENDIF.
|
||||
IF lv_color IS NOT INITIAL.
|
||||
lv_color = | { lv_color }|.
|
||||
ENDIF.
|
||||
|
||||
rv_str = |<i class="octicon octicon-{ lv_name }{ lv_color }{ lv_class }"{ lv_hint }></i>|.
|
||||
|
||||
ENDMETHOD. "icon
|
||||
|
||||
ENDCLASS. "lcl_html IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_html_toolbar DEFINITION
|
||||
|
@ -219,7 +287,7 @@ CLASS lcl_html_toolbar DEFINITION FINAL.
|
|||
iv_with_icons TYPE abap_bool OPTIONAL
|
||||
iv_add_minizone TYPE abap_bool OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_item,
|
||||
|
@ -295,7 +363,10 @@ CLASS lcl_html_toolbar IMPLEMENTATION.
|
|||
IF iv_no_separator = abap_true.
|
||||
lv_class = lv_class && ' menu_end' ##NO_TEXT.
|
||||
ENDIF.
|
||||
ro_html->add( |<a class="{ lv_class }">{ iv_as_droplist_with_label }</a>| ).
|
||||
|
||||
ro_html->add_a( iv_txt = iv_as_droplist_with_label
|
||||
iv_class = lv_class
|
||||
iv_act = '' ).
|
||||
ENDIF.
|
||||
|
||||
IF iv_add_minizone = abap_true.
|
||||
|
@ -327,15 +398,15 @@ CLASS lcl_html_toolbar IMPLEMENTATION.
|
|||
|
||||
IF iv_with_icons = abap_true.
|
||||
ro_html->add( '<tr>' ).
|
||||
ro_html->add( |<td class="icon">{ <ls_item>-ico }</td>| ).
|
||||
ro_html->add( '<td width="100%">' ).
|
||||
ro_html->add( |<td class="icon">{ lcl_html=>icon( <ls_item>-ico ) }</td>| ).
|
||||
ro_html->add( '<td class="text">' ).
|
||||
ENDIF.
|
||||
|
||||
ro_html->add_anchor( iv_txt = <ls_item>-txt
|
||||
iv_act = <ls_item>-act
|
||||
iv_opt = <ls_item>-opt
|
||||
iv_typ = <ls_item>-typ
|
||||
iv_class = lv_class ).
|
||||
ro_html->add_a( iv_txt = <ls_item>-txt
|
||||
iv_act = <ls_item>-act
|
||||
iv_opt = <ls_item>-opt
|
||||
iv_typ = <ls_item>-typ
|
||||
iv_class = lv_class ).
|
||||
|
||||
IF iv_with_icons = abap_true.
|
||||
ro_html->add( '</td>' ).
|
||||
|
|
204
src/zabapgit_html_chunks.prog.abap
Normal file
204
src/zabapgit_html_chunks.prog.abap
Normal file
|
@ -0,0 +1,204 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_HTML_CHUNKS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_chunk_lib DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS render_error
|
||||
IMPORTING ix_error TYPE REF TO lcx_exception OPTIONAL
|
||||
iv_error TYPE string OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
CLASS-METHODS render_repo_top
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
iv_show_package TYPE abap_bool DEFAULT abap_true
|
||||
iv_show_branch TYPE abap_bool DEFAULT abap_true
|
||||
iv_interactive_branch TYPE abap_bool DEFAULT abap_false
|
||||
iv_branch TYPE string OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS render_item_state
|
||||
IMPORTING iv1 TYPE char1
|
||||
iv2 TYPE char1
|
||||
RETURNING VALUE(rv_html) TYPE string.
|
||||
|
||||
CLASS-METHODS render_branch_span
|
||||
IMPORTING iv_branch TYPE string
|
||||
io_repo TYPE REF TO lcl_repo_online
|
||||
iv_interactive TYPE abap_bool
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_gui_chunk_lib
|
||||
|
||||
CLASS lcl_gui_chunk_lib IMPLEMENTATION.
|
||||
|
||||
METHOD render_repo_top.
|
||||
|
||||
DATA: lo_repo_online TYPE REF TO lcl_repo_online,
|
||||
lo_pback TYPE REF TO lcl_persistence_background,
|
||||
lv_hint TYPE string,
|
||||
lv_icon TYPE string.
|
||||
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
CREATE OBJECT lo_pback.
|
||||
|
||||
IF io_repo->is_offline( ) = abap_true.
|
||||
lv_icon = 'plug/darkgrey' ##NO_TEXT.
|
||||
lv_hint = 'Offline repository' ##NO_TEXT.
|
||||
ELSE.
|
||||
lv_icon = 'cloud-upload/blue' ##NO_TEXT.
|
||||
lv_hint = 'On-line repository' ##NO_TEXT.
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '<table class="w100"><tr>' ).
|
||||
|
||||
ro_html->add( '<td class="repo_name">' ).
|
||||
ro_html->add_icon( iv_name = lv_icon iv_hint = lv_hint ).
|
||||
ro_html->add( |<span class="name">{ io_repo->get_name( ) }</span>| ).
|
||||
IF io_repo->is_offline( ) = abap_false.
|
||||
lo_repo_online ?= io_repo.
|
||||
ro_html->add( |<span class="url">{ lo_repo_online->get_url( ) }</span>| ).
|
||||
ENDIF.
|
||||
ro_html->add( '</td>' ).
|
||||
|
||||
ro_html->add( '<td class="repo_attr right">' ).
|
||||
|
||||
IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ).
|
||||
lv_icon = 'star/blue' ##NO_TEXT.
|
||||
ELSE.
|
||||
lv_icon = 'star/grey' ##NO_TEXT.
|
||||
ENDIF.
|
||||
ro_html->add_a( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }|
|
||||
iv_txt = lcl_html=>icon( iv_name = lv_icon
|
||||
iv_class = 'pad-sides'
|
||||
iv_hint = 'Click to toggle favorite' ) ).
|
||||
|
||||
IF lo_pback->exists( io_repo->get_key( ) ) = abap_true.
|
||||
ro_html->add( '<span class="bg_marker" title="background">BG</span>' ).
|
||||
ENDIF.
|
||||
|
||||
IF io_repo->is_write_protected( ) = abap_true.
|
||||
ro_html->add_icon( iv_name = 'lock/darkgrey' iv_hint = 'Locked from pulls' ).
|
||||
ENDIF.
|
||||
|
||||
IF io_repo->is_offline( ) = abap_false.
|
||||
lo_repo_online ?= io_repo.
|
||||
IF iv_show_branch = abap_true.
|
||||
IF iv_branch IS INITIAL.
|
||||
ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( )
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ELSE.
|
||||
ro_html->add( render_branch_span( iv_branch = iv_branch
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF iv_show_package = abap_true.
|
||||
ro_html->add_icon( iv_name = 'package/darkgrey' iv_hint = 'SAP package' ).
|
||||
ro_html->add( '<span>' ).
|
||||
ro_html->add_a( iv_txt = io_repo->get_package( )
|
||||
iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ).
|
||||
ro_html->add( '</span>' ).
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '</td>' ).
|
||||
ro_html->add( '</tr></table>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_item_state.
|
||||
|
||||
DATA: lv_system TYPE string.
|
||||
|
||||
FIELD-SYMBOLS <state> TYPE char1.
|
||||
|
||||
|
||||
rv_html = '<span class="state-block">'.
|
||||
|
||||
DO 2 TIMES.
|
||||
CASE sy-index.
|
||||
WHEN 1.
|
||||
ASSIGN iv1 TO <state>.
|
||||
lv_system = 'Local:'.
|
||||
WHEN 2.
|
||||
ASSIGN iv2 TO <state>.
|
||||
lv_system = 'Remote:'.
|
||||
ENDCASE.
|
||||
|
||||
CASE <state>.
|
||||
WHEN gc_state-unchanged. "None or unchanged
|
||||
IF iv1 = gc_state-added OR iv2 = gc_state-added.
|
||||
rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|.
|
||||
ELSE.
|
||||
rv_html = rv_html && |<span class="none" title="{ lv_system } No changes"> </span>|.
|
||||
ENDIF.
|
||||
WHEN gc_state-modified. "Changed
|
||||
rv_html = rv_html && |<span class="changed" title="{ lv_system } Modified">M</span>|.
|
||||
WHEN gc_state-added. "Added new
|
||||
rv_html = rv_html && |<span class="added" title="{ lv_system } Added new">A</span>|.
|
||||
WHEN gc_state-mixed. "Multiple changes (multifile)
|
||||
rv_html = rv_html && |<span class="mixed" title="{ lv_system } Multiple changes">■</span>|.
|
||||
WHEN gc_state-deleted. "Deleted
|
||||
rv_html = rv_html && |<span class="deleted" title="{ lv_system } Deleted">D</span>|.
|
||||
ENDCASE.
|
||||
ENDDO.
|
||||
|
||||
rv_html = rv_html && '</span>'.
|
||||
|
||||
ENDMETHOD. "render_item_state
|
||||
|
||||
METHOD render_branch_span.
|
||||
|
||||
DATA: lv_text TYPE string,
|
||||
lv_class TYPE string.
|
||||
|
||||
lv_text = lcl_git_branch_list=>get_display_name( iv_branch ).
|
||||
|
||||
IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name.
|
||||
lv_class = 'branch branch_head'.
|
||||
ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch.
|
||||
lv_class = 'branch branch_branch'.
|
||||
ELSE.
|
||||
lv_class = 'branch'.
|
||||
ENDIF.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( |<span class="{ lv_class }">| ).
|
||||
ro_html->add_icon( iv_name = 'git-branch/darkgrey' iv_hint = 'Current branch' ).
|
||||
IF iv_interactive = abap_true.
|
||||
ro_html->add_a( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }|
|
||||
iv_txt = lv_text ).
|
||||
ELSE.
|
||||
ro_html->add( lv_text ).
|
||||
ENDIF.
|
||||
ro_html->add( '</span>' ).
|
||||
|
||||
ENDMETHOD. "render_branch_span
|
||||
|
||||
METHOD render_error.
|
||||
|
||||
DATA lv_error TYPE string.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
IF ix_error IS BOUND.
|
||||
lv_error = ix_error->mv_text.
|
||||
ELSE.
|
||||
lv_error = iv_error.
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '<div class="dummydiv attention">' ).
|
||||
ro_html->add( |{ lcl_html=>icon( 'alert/red' ) } Error: { lv_error }| ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ENDMETHOD. "render_error
|
||||
|
||||
ENDCLASS. "lcl_gui_chunk_lib
|
48
src/zabapgit_html_chunks.prog.xml
Normal file
48
src/zabapgit_html_chunks.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_HTML_CHUNKS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_HTML_CHUNKS</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -46,7 +46,7 @@ CLASS lcl_migrations IMPLEMENTATION.
|
|||
|
||||
" Ignore empty repos or repos with file checksums
|
||||
IF lines( <repo>->get_local_checksums( ) ) = 0
|
||||
OR lines( <repo>->get_local_checksums_per_file( ) ) > 0 .
|
||||
OR lines( <repo>->get_local_checksums_per_file( ) ) > 0.
|
||||
DELETE lt_repos INDEX lv_index.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
@ -61,13 +61,13 @@ CLASS lcl_migrations IMPLEMENTATION.
|
|||
|
||||
SHIFT lv_repo_list BY 2 PLACES LEFT. " Remove leading ', '
|
||||
|
||||
lv_question = 'abapGit wants to rebuild missing local checksums'
|
||||
&& ' (changes from 2016-12-11).'
|
||||
&& ' Generally this is safe except if there are both local '
|
||||
&& ' and remote changes at the same time. If unsure, please'
|
||||
&& ' skip and update repos individually'
|
||||
&& ' by "Advances/Update local checksums" command.'
|
||||
&& | Repos affected: { lv_repo_list }|.
|
||||
lv_question = 'abapGit wants to rebuild missing local checksums'
|
||||
&& ' (changes from 2016-12-11).'
|
||||
&& ' Generally this is safe except if there are both local '
|
||||
&& ' and remote changes at the same time. If unsure, please'
|
||||
&& ' skip and update repos individually'
|
||||
&& ' by "Advances/Update local checksums" command.'
|
||||
&& | Repos affected: { lv_repo_list }|.
|
||||
|
||||
lv_answer = lcl_popups=>popup_to_confirm(
|
||||
titlebar = 'Warning'
|
||||
|
|
|
@ -71,7 +71,9 @@ CLASS lcl_object_acid IMPLEMENTATION.
|
|||
|
||||
lo_aab = create_object( ).
|
||||
|
||||
lo_aab->get_descript( IMPORTING ex_descript = lv_description ).
|
||||
lo_aab->get_descript(
|
||||
IMPORTING ex_descript = lv_description
|
||||
EXCEPTIONS no_description_found = 1 ).
|
||||
|
||||
io_xml->add( iv_name = 'DESCRIPTION'
|
||||
ig_data = lv_description ).
|
||||
|
|
|
@ -7,34 +7,416 @@
|
|||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
INTERFACE lif_object_oriented_object.
|
||||
METHODS:
|
||||
create
|
||||
IMPORTING
|
||||
iv_package TYPE devclass
|
||||
iv_overwrite TYPE seox_boolean DEFAULT seox_true
|
||||
CHANGING
|
||||
is_properties TYPE any
|
||||
RAISING
|
||||
lcx_exception,
|
||||
generate_locals
|
||||
IMPORTING
|
||||
is_key TYPE seoclskey
|
||||
iv_force TYPE seox_boolean DEFAULT seox_true
|
||||
it_local_definitions TYPE seop_source_string OPTIONAL
|
||||
it_local_implementations TYPE seop_source_string OPTIONAL
|
||||
it_local_macros TYPE seop_source_string OPTIONAL
|
||||
it_local_test_classes TYPE seop_source_string OPTIONAL
|
||||
RAISING
|
||||
lcx_exception,
|
||||
deserialize_source
|
||||
IMPORTING
|
||||
is_key TYPE seoclskey
|
||||
it_source TYPE ty_string_tt
|
||||
RAISING
|
||||
lcx_exception
|
||||
cx_sy_dyn_call_error,
|
||||
insert_text_pool
|
||||
IMPORTING
|
||||
iv_class_name TYPE seoclsname
|
||||
it_text_pool TYPE textpool_table
|
||||
iv_language TYPE spras
|
||||
RAISING
|
||||
lcx_exception,
|
||||
update_descriptions
|
||||
IMPORTING
|
||||
is_key TYPE seoclskey
|
||||
it_descriptions TYPE ty_seocompotx_tt,
|
||||
add_to_activation_list
|
||||
IMPORTING
|
||||
is_item TYPE ty_item
|
||||
RAISING
|
||||
lcx_exception,
|
||||
create_sotr
|
||||
IMPORTING
|
||||
iv_package TYPE devclass
|
||||
it_sotr TYPE ty_sotr_tt
|
||||
RAISING
|
||||
lcx_exception,
|
||||
create_documentation
|
||||
IMPORTING
|
||||
it_lines TYPE tlinetab
|
||||
iv_object_name TYPE dokhl-object
|
||||
iv_language TYPE spras
|
||||
RAISING
|
||||
lcx_exception.
|
||||
ENDINTERFACE.
|
||||
|
||||
CLASS lcl_object_oriented_base DEFINITION ABSTRACT.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES: lif_object_oriented_object.
|
||||
PRIVATE SECTION.
|
||||
METHODS deserialize_abap_source_old
|
||||
IMPORTING is_clskey TYPE seoclskey
|
||||
it_source TYPE ty_string_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_abap_source_new
|
||||
IMPORTING is_clskey TYPE seoclskey
|
||||
it_source TYPE ty_string_tt
|
||||
RAISING lcx_exception
|
||||
cx_sy_dyn_call_error.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_oriented_base IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object_oriented_object~create.
|
||||
"Subclass responsibility
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~deserialize_source.
|
||||
TRY.
|
||||
deserialize_abap_source_new(
|
||||
is_clskey = is_key
|
||||
it_source = it_source ).
|
||||
CATCH cx_sy_dyn_call_error.
|
||||
deserialize_abap_source_old(
|
||||
is_clskey = is_key
|
||||
it_source = it_source ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~generate_locals.
|
||||
"Subclass responsibility
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_abap_source_old.
|
||||
"for backwards compatability down to 702
|
||||
|
||||
DATA: lo_source TYPE REF TO cl_oo_source.
|
||||
|
||||
CREATE OBJECT lo_source
|
||||
EXPORTING
|
||||
clskey = is_clskey
|
||||
EXCEPTIONS
|
||||
class_not_existing = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from CL_OO_SOURCE' ).
|
||||
ENDIF.
|
||||
|
||||
TRY.
|
||||
lo_source->access_permission( seok_access_modify ).
|
||||
lo_source->set_source( it_source ).
|
||||
lo_source->save( ).
|
||||
lo_source->access_permission( seok_access_free ).
|
||||
CATCH cx_oo_access_permission.
|
||||
lcx_exception=>raise( 'permission error' ).
|
||||
CATCH cx_oo_source_save_failure.
|
||||
lcx_exception=>raise( 'save failure' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_abap_source_new.
|
||||
DATA: lo_factory TYPE REF TO object,
|
||||
lo_source TYPE REF TO object.
|
||||
|
||||
CALL METHOD ('CL_OO_FACTORY')=>('CREATE_INSTANCE')
|
||||
RECEIVING
|
||||
result = lo_factory.
|
||||
|
||||
CALL METHOD lo_factory->('CREATE_CLIF_SOURCE')
|
||||
EXPORTING
|
||||
clif_name = is_clskey-clsname
|
||||
RECEIVING
|
||||
result = lo_source.
|
||||
|
||||
TRY.
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~LOCK').
|
||||
CATCH cx_oo_access_permission.
|
||||
lcx_exception=>raise( 'source_new, access permission exception' ).
|
||||
ENDTRY.
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SET_SOURCE')
|
||||
EXPORTING
|
||||
source = it_source.
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SAVE').
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~UNLOCK').
|
||||
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_oriented_object~add_to_activation_list.
|
||||
lcl_objects_activation=>add_item( is_item ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~update_descriptions.
|
||||
DELETE FROM seocompotx WHERE clsname = is_key-clsname.
|
||||
INSERT seocompotx FROM TABLE it_descriptions.
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_oriented_object~insert_text_pool.
|
||||
"Subclass responsibility
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~create_sotr.
|
||||
"Subclass responsibility
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~create_documentation.
|
||||
CALL FUNCTION 'DOCU_UPD'
|
||||
EXPORTING
|
||||
id = 'CL'
|
||||
langu = iv_language
|
||||
object = iv_object_name
|
||||
TABLES
|
||||
line = it_lines
|
||||
EXCEPTIONS
|
||||
ret_code = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from DOCU_UPD' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS lcl_object_oriented_class DEFINITION
|
||||
INHERITING FROM lcl_object_oriented_base.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
lif_object_oriented_object~create REDEFINITION,
|
||||
lif_object_oriented_object~generate_locals REDEFINITION,
|
||||
lif_object_oriented_object~insert_text_pool REDEFINITION,
|
||||
lif_object_oriented_object~create_sotr REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
CLASS lcl_object_oriented_class IMPLEMENTATION.
|
||||
METHOD lif_object_oriented_object~create.
|
||||
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = iv_overwrite
|
||||
CHANGING
|
||||
class = is_properties
|
||||
EXCEPTIONS
|
||||
existing = 1
|
||||
is_interface = 2
|
||||
db_error = 3
|
||||
component_error = 4
|
||||
no_access = 5
|
||||
other = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_oriented_object~generate_locals.
|
||||
CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS'
|
||||
EXPORTING
|
||||
clskey = is_key
|
||||
force = iv_force
|
||||
locals_def = it_local_definitions
|
||||
locals_imp = it_local_implementations
|
||||
locals_mac = it_local_macros
|
||||
locals_testclasses = it_local_test_classes
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
model_only = 2
|
||||
locals_not_generated = 3
|
||||
locals_not_initialised = 4
|
||||
OTHERS = 5.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from generate_locals' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_oriented_object~insert_text_pool.
|
||||
DATA: lv_cp TYPE program.
|
||||
|
||||
lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ).
|
||||
|
||||
INSERT TEXTPOOL lv_cp
|
||||
FROM it_text_pool
|
||||
LANGUAGE iv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = lv_cp ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~create_sotr.
|
||||
DATA: lt_sotr TYPE ty_sotr_tt,
|
||||
lt_objects TYPE sotr_objects,
|
||||
ls_paket TYPE sotr_pack,
|
||||
lv_object LIKE LINE OF lt_objects.
|
||||
|
||||
FIELD-SYMBOLS: <ls_sotr> LIKE LINE OF lt_sotr.
|
||||
|
||||
LOOP AT it_sotr ASSIGNING <ls_sotr>.
|
||||
CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS'
|
||||
EXPORTING
|
||||
object_vector = <ls_sotr>-header-objid_vec
|
||||
IMPORTING
|
||||
objects = lt_objects
|
||||
EXCEPTIONS
|
||||
object_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SOTR_OBJECT_GET_OBJECTS' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_objects INDEX 1 INTO lv_object.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_paket-paket = iv_package.
|
||||
|
||||
CALL FUNCTION 'SOTR_CREATE_CONCEPT'
|
||||
EXPORTING
|
||||
paket = ls_paket
|
||||
crea_lan = <ls_sotr>-header-crea_lan
|
||||
alias_name = <ls_sotr>-header-alias_name
|
||||
object = lv_object
|
||||
entries = <ls_sotr>-entries
|
||||
concept_default = <ls_sotr>-header-concept
|
||||
EXCEPTIONS
|
||||
package_missing = 1
|
||||
crea_lan_missing = 2
|
||||
object_missing = 3
|
||||
paket_does_not_exist = 4
|
||||
alias_already_exist = 5
|
||||
object_type_not_found = 6
|
||||
langu_missing = 7
|
||||
identical_context_not_allowed = 8
|
||||
text_too_long = 9
|
||||
error_in_update = 10
|
||||
no_master_langu = 11
|
||||
error_in_concept_id = 12
|
||||
alias_not_allowed = 13
|
||||
tadir_entry_creation_failed = 14
|
||||
internal_error = 15
|
||||
error_in_correction = 16
|
||||
user_cancelled = 17
|
||||
no_entry_found = 18
|
||||
OTHERS = 19.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SOTR_CREATE_CONCEPT' ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_oriented_interface DEFINITION
|
||||
INHERITING FROM lcl_object_oriented_base.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
lif_object_oriented_object~create REDEFINITION.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_oriented_interface IMPLEMENTATION.
|
||||
METHOD lif_object_oriented_object~create.
|
||||
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
||||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = iv_overwrite
|
||||
CHANGING
|
||||
interface = is_properties
|
||||
EXCEPTIONS
|
||||
existing = 1
|
||||
is_class = 2
|
||||
db_error = 3
|
||||
component_error = 4
|
||||
no_access = 5
|
||||
other = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from SEO_INTERFACE_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lth_oo_factory_injector DEFINITION DEFERRED.
|
||||
|
||||
CLASS lcl_object_oriented_factory DEFINITION
|
||||
FRIENDS lth_oo_factory_injector.
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS:
|
||||
make
|
||||
IMPORTING
|
||||
iv_object_type TYPE tadir-object
|
||||
RETURNING
|
||||
VALUE(ro_object_oriented_object) TYPE REF TO lif_object_oriented_object.
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA:
|
||||
go_object_oriented_object TYPE REF TO lif_object_oriented_object.
|
||||
ENDCLASS.
|
||||
CLASS lcl_object_oriented_factory IMPLEMENTATION.
|
||||
METHOD make.
|
||||
IF go_object_oriented_object IS BOUND.
|
||||
ro_object_oriented_object = go_object_oriented_object.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
IF iv_object_type = 'CLAS'.
|
||||
CREATE OBJECT ro_object_oriented_object TYPE lcl_object_oriented_class.
|
||||
ELSEIF iv_object_type = 'INTF'.
|
||||
CREATE OBJECT ro_object_oriented_object TYPE lcl_object_oriented_interface.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lth_oo_factory_injector DEFINITION FOR TESTING.
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS:
|
||||
inject
|
||||
IMPORTING
|
||||
io_object_oriented_object TYPE REF TO lif_object_oriented_object.
|
||||
ENDCLASS.
|
||||
CLASS lth_oo_factory_injector IMPLEMENTATION.
|
||||
METHOD inject.
|
||||
lcl_object_oriented_factory=>go_object_oriented_object = io_object_oriented_object.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_sotr,
|
||||
header TYPE sotr_head,
|
||||
entries TYPE sotr_text_tt,
|
||||
END OF ty_sotr.
|
||||
|
||||
TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY.
|
||||
|
||||
DATA mv_skip_testclass TYPE abap_bool.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS deserialize_abap
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_textpool
|
||||
METHODS deserialize_docu
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
RAISING lcx_exception.
|
||||
DATA mo_object_oriented_object TYPE REF TO lif_object_oriented_object.
|
||||
PRIVATE SECTION.
|
||||
DATA mv_skip_testclass TYPE abap_bool.
|
||||
|
||||
METHODS deserialize_docu
|
||||
METHODS deserialize_tpool
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
@ -48,17 +430,6 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program.
|
|||
RETURNING VALUE(rt_source) TYPE ty_string_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_abap_source_old
|
||||
IMPORTING is_clskey TYPE seoclskey
|
||||
it_source TYPE ty_string_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_abap_source_new
|
||||
IMPORTING is_clskey TYPE seoclskey
|
||||
it_source TYPE ty_string_tt
|
||||
RAISING lcx_exception
|
||||
cx_sy_dyn_call_error.
|
||||
|
||||
METHODS serialize_abap_new
|
||||
IMPORTING is_clskey TYPE seoclskey
|
||||
RETURNING VALUE(rt_source) TYPE ty_string_tt
|
||||
|
@ -109,16 +480,6 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program.
|
|||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_intf DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_intf DEFINITION INHERITING FROM lcl_object_clas FINAL.
|
||||
* todo, CLAS + INTF to be refactored, see:
|
||||
* https://github.com/larshp/abapGit/issues/21
|
||||
ENDCLASS. "lcl_object_intf DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_clas IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -409,7 +770,9 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
ELSEIF lines( rt_source ) = 1.
|
||||
READ TABLE rt_source INDEX 1 INTO lv_line1.
|
||||
ASSERT sy-subrc = 0.
|
||||
IF lv_line1(3) = '*"*' OR lv_line1 IS INITIAL.
|
||||
IF lv_line1 IS INITIAL
|
||||
OR ( strlen( lv_line1 ) >= 3 AND lv_line1(3) = '*"*' )
|
||||
OR ( strlen( lv_line1 ) = 1 AND lv_line1(1) = '*' ).
|
||||
mv_skip_testclass = abap_true.
|
||||
ENDIF.
|
||||
ELSEIF lines( rt_source ) = 0.
|
||||
|
@ -601,7 +964,7 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
no_entry_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SOTR_GET_CONCEPT' ).
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_header-paket,
|
||||
|
@ -737,34 +1100,23 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
* function group SEOK
|
||||
* function group SEOQ
|
||||
* function group SEOP
|
||||
* class CL_OO_CLASSNAME_SERVICE
|
||||
* class CL_OO_SOURCE
|
||||
mo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ).
|
||||
|
||||
deserialize_abap( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
|
||||
IF ms_item-obj_type = 'CLAS'.
|
||||
deserialize_textpool( io_xml ).
|
||||
deserialize_tpool( io_xml ).
|
||||
|
||||
deserialize_sotr( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
ENDIF.
|
||||
deserialize_sotr( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
|
||||
deserialize_docu( io_xml ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD deserialize_sotr.
|
||||
|
||||
"OTR stands for Online Text Repository
|
||||
DATA: lt_sotr TYPE ty_sotr_tt,
|
||||
lt_objects TYPE sotr_objects,
|
||||
ls_paket TYPE sotr_pack,
|
||||
lv_object LIKE LINE OF lt_objects.
|
||||
|
||||
FIELD-SYMBOLS: <ls_sotr> LIKE LINE OF lt_sotr.
|
||||
lt_objects TYPE sotr_objects.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SOTR'
|
||||
|
@ -774,58 +1126,9 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_sotr ASSIGNING <ls_sotr>.
|
||||
CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS'
|
||||
EXPORTING
|
||||
object_vector = <ls_sotr>-header-objid_vec
|
||||
IMPORTING
|
||||
objects = lt_objects
|
||||
EXCEPTIONS
|
||||
object_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SOTR_OBJECT_GET_OBJECTS' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_objects INDEX 1 INTO lv_object.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_paket-paket = iv_package.
|
||||
|
||||
CALL FUNCTION 'SOTR_CREATE_CONCEPT'
|
||||
EXPORTING
|
||||
paket = ls_paket
|
||||
crea_lan = <ls_sotr>-header-crea_lan
|
||||
alias_name = <ls_sotr>-header-alias_name
|
||||
object = lv_object
|
||||
entries = <ls_sotr>-entries
|
||||
concept_default = <ls_sotr>-header-concept
|
||||
EXCEPTIONS
|
||||
package_missing = 1
|
||||
crea_lan_missing = 2
|
||||
object_missing = 3
|
||||
paket_does_not_exist = 4
|
||||
alias_already_exist = 5
|
||||
object_type_not_found = 6
|
||||
langu_missing = 7
|
||||
identical_context_not_allowed = 8
|
||||
text_too_long = 9
|
||||
error_in_update = 10
|
||||
no_master_langu = 11
|
||||
error_in_concept_id = 12
|
||||
alias_not_allowed = 13
|
||||
tadir_entry_creation_failed = 14
|
||||
internal_error = 15
|
||||
error_in_correction = 16
|
||||
user_cancelled = 17
|
||||
no_entry_found = 18
|
||||
OTHERS = 19.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SOTR_CREATE_CONCEPT' ).
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
mo_object_oriented_object->create_sotr(
|
||||
iv_package = iv_package
|
||||
it_sotr = lt_sotr ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_docu.
|
||||
|
@ -833,7 +1136,6 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
DATA: lt_lines TYPE tlinetab,
|
||||
lv_object TYPE dokhl-object.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||
CHANGING cg_data = lt_lines ).
|
||||
|
||||
|
@ -842,26 +1144,16 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
CALL FUNCTION 'DOCU_UPD'
|
||||
EXPORTING
|
||||
id = 'CL'
|
||||
langu = mv_language
|
||||
object = lv_object
|
||||
TABLES
|
||||
line = lt_lines
|
||||
EXCEPTIONS
|
||||
ret_code = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from DOCU_UPD' ).
|
||||
ENDIF.
|
||||
|
||||
mo_object_oriented_object->create_documentation(
|
||||
it_lines = lt_lines
|
||||
iv_object_name = lv_object
|
||||
iv_language = mv_language ).
|
||||
ENDMETHOD. "deserialize_doku
|
||||
|
||||
METHOD deserialize_textpool.
|
||||
METHOD deserialize_tpool.
|
||||
|
||||
DATA: lv_cp TYPE program,
|
||||
lv_clsname TYPE seoclsname,
|
||||
DATA: lv_clsname TYPE seoclsname,
|
||||
lt_tpool_ext TYPE ty_tpool_tt,
|
||||
lt_tpool TYPE textpool_table.
|
||||
|
||||
|
@ -875,202 +1167,131 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
lv_clsname = ms_item-obj_name.
|
||||
lv_cp = cl_oo_classname_service=>get_classpool_name( lv_clsname ).
|
||||
|
||||
INSERT TEXTPOOL lv_cp
|
||||
FROM lt_tpool
|
||||
LANGUAGE mv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = lv_cp ).
|
||||
mo_object_oriented_object->insert_text_pool(
|
||||
iv_class_name = lv_clsname
|
||||
it_text_pool = lt_tpool
|
||||
iv_language = mv_language ).
|
||||
|
||||
ENDMETHOD. "deserialize_textpool
|
||||
|
||||
METHOD deserialize_abap.
|
||||
|
||||
DATA: ls_vseoclass TYPE vseoclass,
|
||||
ls_vseointerf TYPE vseointerf,
|
||||
lt_source TYPE seop_source_string,
|
||||
lt_locals_def TYPE seop_source_string,
|
||||
lt_locals_imp TYPE seop_source_string,
|
||||
lt_locals_mac TYPE seop_source_string,
|
||||
lt_testclasses TYPE seop_source_string,
|
||||
lt_descriptions TYPE ty_seocompotx_tt,
|
||||
ls_clskey TYPE seoclskey.
|
||||
DATA: ls_vseoclass TYPE vseoclass,
|
||||
lt_source TYPE seop_source_string,
|
||||
lt_local_definitions TYPE seop_source_string,
|
||||
lt_local_implementations TYPE seop_source_string,
|
||||
lt_local_macros TYPE seop_source_string,
|
||||
lt_test_classes TYPE seop_source_string,
|
||||
lt_descriptions TYPE ty_seocompotx_tt,
|
||||
ls_class_key TYPE seoclskey.
|
||||
|
||||
|
||||
lt_source = mo_files->read_abap( ).
|
||||
|
||||
lt_locals_def = mo_files->read_abap( iv_extra = 'locals_def'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
lt_local_definitions = mo_files->read_abap( iv_extra = 'locals_def'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
|
||||
lt_locals_imp = mo_files->read_abap( iv_extra = 'locals_imp'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
lt_local_implementations = mo_files->read_abap( iv_extra = 'locals_imp'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
|
||||
lt_locals_mac = mo_files->read_abap( iv_extra = 'macros'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
lt_local_macros = mo_files->read_abap( iv_extra = 'macros'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
|
||||
lt_testclasses = mo_files->read_abap( iv_extra = 'testclasses'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
lt_test_classes = mo_files->read_abap( iv_extra = 'testclasses'
|
||||
iv_error = abap_false ). "#EC NOTEXT
|
||||
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
ls_class_key-clsname = ms_item-obj_name.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'VSEOCLASS'
|
||||
CHANGING cg_data = ls_vseoclass ).
|
||||
|
||||
CASE ms_item-obj_type.
|
||||
WHEN 'CLAS'.
|
||||
io_xml->read( EXPORTING iv_name = 'VSEOCLASS'
|
||||
CHANGING cg_data = ls_vseoclass ).
|
||||
mo_object_oriented_object->create(
|
||||
EXPORTING
|
||||
iv_package = iv_package
|
||||
CHANGING
|
||||
is_properties = ls_vseoclass ).
|
||||
mo_object_oriented_object->generate_locals(
|
||||
is_key = ls_class_key
|
||||
iv_force = seox_true
|
||||
it_local_definitions = lt_local_definitions
|
||||
it_local_implementations = lt_local_implementations
|
||||
it_local_macros = lt_local_macros
|
||||
it_local_test_classes = lt_test_classes ).
|
||||
|
||||
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = seox_true
|
||||
CHANGING
|
||||
class = ls_vseoclass
|
||||
EXCEPTIONS
|
||||
existing = 1
|
||||
is_interface = 2
|
||||
db_error = 3
|
||||
component_error = 4
|
||||
no_access = 5
|
||||
other = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
|
||||
WHEN 'INTF'.
|
||||
io_xml->read( EXPORTING iv_name = 'VSEOINTERF'
|
||||
CHANGING cg_data = ls_vseointerf ).
|
||||
|
||||
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
|
||||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = seox_true
|
||||
CHANGING
|
||||
interface = ls_vseointerf
|
||||
EXCEPTIONS
|
||||
existing = 1
|
||||
is_class = 2
|
||||
db_error = 3
|
||||
component_error = 4
|
||||
no_access = 5
|
||||
other = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from SEO_INTERFACE_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
|
||||
WHEN OTHERS.
|
||||
ASSERT 0 = 1.
|
||||
ENDCASE.
|
||||
|
||||
IF ms_item-obj_type = 'CLAS'.
|
||||
CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS'
|
||||
EXPORTING
|
||||
clskey = ls_clskey
|
||||
force = seox_true
|
||||
locals_def = lt_locals_def
|
||||
locals_imp = lt_locals_imp
|
||||
locals_mac = lt_locals_mac
|
||||
locals_testclasses = lt_testclasses
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
model_only = 2
|
||||
locals_not_generated = 3
|
||||
locals_not_initialised = 4
|
||||
OTHERS = 5.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from generate_locals' ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
TRY.
|
||||
deserialize_abap_source_new(
|
||||
is_clskey = ls_clskey
|
||||
it_source = lt_source ).
|
||||
CATCH cx_sy_dyn_call_error.
|
||||
deserialize_abap_source_old(
|
||||
is_clskey = ls_clskey
|
||||
it_source = lt_source ).
|
||||
ENDTRY.
|
||||
mo_object_oriented_object->deserialize_source(
|
||||
is_key = ls_class_key
|
||||
it_source = lt_source ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
|
||||
CHANGING cg_data = lt_descriptions ).
|
||||
DELETE FROM seocompotx WHERE clsname = ls_clskey-clsname.
|
||||
INSERT seocompotx FROM TABLE lt_descriptions.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
mo_object_oriented_object->update_descriptions(
|
||||
is_key = ls_class_key
|
||||
it_descriptions = lt_descriptions ).
|
||||
|
||||
mo_object_oriented_object->add_to_activation_list( is_item = ms_item ).
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD deserialize_abap_source_old.
|
||||
* for backwards compatability down to 702
|
||||
|
||||
DATA: lo_source TYPE REF TO cl_oo_source.
|
||||
|
||||
|
||||
CREATE OBJECT lo_source
|
||||
EXPORTING
|
||||
clskey = is_clskey
|
||||
EXCEPTIONS
|
||||
class_not_existing = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from CL_OO_SOURCE' ).
|
||||
ENDIF.
|
||||
|
||||
TRY.
|
||||
lo_source->access_permission( seok_access_modify ).
|
||||
lo_source->set_source( it_source ).
|
||||
lo_source->save( ).
|
||||
lo_source->access_permission( seok_access_free ).
|
||||
CATCH cx_oo_access_permission.
|
||||
lcx_exception=>raise( 'permission error' ).
|
||||
CATCH cx_oo_source_save_failure.
|
||||
lcx_exception=>raise( 'save failure' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_abap_source_new.
|
||||
|
||||
DATA: lo_factory TYPE REF TO object,
|
||||
lo_source TYPE REF TO object.
|
||||
|
||||
|
||||
CALL METHOD ('CL_OO_FACTORY')=>('CREATE_INSTANCE')
|
||||
RECEIVING
|
||||
result = lo_factory.
|
||||
|
||||
CALL METHOD lo_factory->('CREATE_CLIF_SOURCE')
|
||||
EXPORTING
|
||||
clif_name = is_clskey-clsname
|
||||
RECEIVING
|
||||
result = lo_source.
|
||||
|
||||
TRY.
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~LOCK').
|
||||
CATCH cx_oo_access_permission.
|
||||
lcx_exception=>raise( 'source_new, access permission exception' ).
|
||||
ENDTRY.
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SET_SOURCE')
|
||||
EXPORTING
|
||||
source = it_source.
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SAVE').
|
||||
|
||||
CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~UNLOCK').
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_CLAS IMPLEMENTATION
|
||||
ENDCLASS. "lcl_object_CLAS IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_intf DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_intf DEFINITION INHERITING FROM lcl_object_clas FINAL.
|
||||
* todo, CLAS + INTF to be refactored, see:
|
||||
* https://github.com/larshp/abapGit/issues/21
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
lif_object~deserialize REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
deserialize_abap REDEFINITION.
|
||||
ENDCLASS. "lcl_object_intf DEFINITION
|
||||
CLASS lcl_object_intf IMPLEMENTATION.
|
||||
METHOD lif_object~deserialize.
|
||||
mo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ).
|
||||
|
||||
deserialize_abap( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
|
||||
deserialize_docu( io_xml ).
|
||||
ENDMETHOD.
|
||||
METHOD deserialize_abap.
|
||||
DATA: ls_vseointerf TYPE vseointerf,
|
||||
lt_source TYPE seop_source_string,
|
||||
lt_descriptions TYPE ty_seocompotx_tt,
|
||||
ls_clskey TYPE seoclskey.
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
|
||||
lt_source = mo_files->read_abap( ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'VSEOINTERF'
|
||||
CHANGING cg_data = ls_vseointerf ).
|
||||
|
||||
mo_object_oriented_object->create(
|
||||
EXPORTING
|
||||
iv_package = iv_package
|
||||
CHANGING
|
||||
is_properties = ls_vseointerf ).
|
||||
|
||||
mo_object_oriented_object->deserialize_source(
|
||||
is_key = ls_clskey
|
||||
it_source = lt_source ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
|
||||
CHANGING cg_data = lt_descriptions ).
|
||||
|
||||
mo_object_oriented_object->update_descriptions(
|
||||
is_key = ls_clskey
|
||||
it_descriptions = lt_descriptions ).
|
||||
|
||||
mo_object_oriented_object->add_to_activation_list( is_item = ms_item ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -80,6 +80,7 @@ CLASS lcl_object_doma IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
@ -128,9 +129,10 @@ CLASS lcl_object_doma IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd01v TYPE dd01v,
|
||||
lt_dd07v TYPE TABLE OF dd07v.
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd01v TYPE dd01v,
|
||||
lv_masklen TYPE c LENGTH 4,
|
||||
lt_dd07v TYPE TABLE OF dd07v.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
@ -154,6 +156,16 @@ CLASS lcl_object_doma IMPLEMENTATION.
|
|||
ls_dd01v-as4date,
|
||||
ls_dd01v-as4time.
|
||||
|
||||
* make sure XML serialization does not dump if the field contains invalid data
|
||||
* note that this is a N field, so '' is not valid
|
||||
IF ls_dd01v-authclass = ''.
|
||||
CLEAR ls_dd01v-authclass.
|
||||
ENDIF.
|
||||
lv_masklen = ls_dd01v-masklen.
|
||||
IF lv_masklen = '' OR NOT lv_masklen CO '0123456789'.
|
||||
CLEAR ls_dd01v-masklen.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'DD01V'
|
||||
ig_data = ls_dd01v ).
|
||||
io_xml->add( iv_name = 'DD07V_TAB'
|
||||
|
|
|
@ -73,6 +73,7 @@ CLASS lcl_object_dtel IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
@ -158,6 +159,14 @@ CLASS lcl_object_dtel IMPLEMENTATION.
|
|||
ls_dd04v-entitytab.
|
||||
ENDIF.
|
||||
|
||||
IF ls_dd04v-routputlen = ''.
|
||||
* numeric field, make sure it is initial or XML serilization will dump
|
||||
CLEAR ls_dd04v-routputlen.
|
||||
ENDIF.
|
||||
IF ls_dd04v-authclass = ''.
|
||||
CLEAR ls_dd04v-authclass.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'DD04V'
|
||||
ig_data = ls_dd04v ).
|
||||
io_xml->add( iv_name = 'TPARA'
|
||||
|
@ -232,7 +241,7 @@ CLASS lcl_object_dtel IMPLEMENTATION.
|
|||
langu = <lang>
|
||||
IMPORTING
|
||||
dd04v_wa = ls_dd04v
|
||||
* tpara_wa = ls_tpara
|
||||
* tpara_wa = ls_tpara
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
*& Include ZABAPGIT_OBJECT_ENHO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, this include could use some refactoring
|
||||
|
||||
* todo, CL_ENH_TOOL_CLASS inherits from CL_ENH_TOOL_CLIF so this
|
||||
* should also be reflected in the code in this include
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enho DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -29,6 +34,15 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
METHODS deserialize_class
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
METHODS hook_impl_deserialize
|
||||
IMPORTING it_spaces TYPE ty_spaces_tt
|
||||
CHANGING ct_impl TYPE enh_hook_impl_it
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
||||
METHODS serialize_badi
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_output
|
||||
|
@ -40,15 +54,15 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|||
iv_tool TYPE enhtooltype
|
||||
ii_enh_tool TYPE REF TO if_enh_tool
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS serialize_class
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_output
|
||||
iv_tool TYPE enhtooltype
|
||||
ii_enh_tool TYPE REF TO if_enh_tool
|
||||
RAISING lcx_exception.
|
||||
METHODS hook_impl_serialize
|
||||
EXPORTING et_spaces TYPE ty_spaces_tt
|
||||
CHANGING ct_impl TYPE enh_hook_impl_it
|
||||
RAISING lcx_exception.
|
||||
METHODS hook_impl_deserialize
|
||||
IMPORTING it_spaces TYPE ty_spaces_tt
|
||||
CHANGING ct_impl TYPE enh_hook_impl_it
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_enho DEFINITION
|
||||
|
||||
|
@ -120,16 +134,19 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_tadir TYPE tadir.
|
||||
DATA: lv_enh_id TYPE enhname.
|
||||
|
||||
|
||||
lv_enh_id = ms_item-obj_name.
|
||||
TRY.
|
||||
cl_enh_factory=>get_enhancement(
|
||||
enhancement_id = lv_enh_id
|
||||
bypassing_buffer = abap_true ).
|
||||
rv_bool = abap_true.
|
||||
CATCH cx_enh_root.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
* todo, it should look up in the ENHO database tables or call some methods
|
||||
* to see if the object exists, looking in TADIR will not work
|
||||
ls_tadir = lcl_tadir=>read_single(
|
||||
iv_object = ms_item-obj_type
|
||||
iv_obj_name = ms_item-obj_name ).
|
||||
IF ls_tadir IS NOT INITIAL.
|
||||
rv_bool = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
@ -155,15 +172,18 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
CASE lv_tool.
|
||||
WHEN cl_enh_tool_badi_impl=>tooltype.
|
||||
serialize_badi( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
serialize_badi( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
ii_enh_tool = li_enh_tool ).
|
||||
WHEN cl_enh_tool_hook_impl=>tooltype.
|
||||
serialize_hook( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
serialize_hook( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
ii_enh_tool = li_enh_tool ).
|
||||
WHEN cl_enh_tool_class=>tooltype.
|
||||
serialize_class( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
ii_enh_tool = li_enh_tool ).
|
||||
* ToDo:
|
||||
* WHEN cl_enh_tool_class=>tooltype.
|
||||
* WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr
|
||||
* WHEN cl_enh_tool_intf=>tooltype.
|
||||
* WHEN cl_wdr_cfg_enhancement=>tooltype.
|
||||
|
@ -192,8 +212,10 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
WHEN cl_enh_tool_hook_impl=>tooltype.
|
||||
deserialize_hook( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
WHEN cl_enh_tool_class=>tooltype.
|
||||
deserialize_class( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
* ToDo:
|
||||
* WHEN cl_enh_tool_class=>tooltype.
|
||||
* WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr
|
||||
* WHEN cl_enh_tool_intf=>tooltype.
|
||||
* WHEN cl_wdr_cfg_enhancement=>tooltype.
|
||||
|
@ -220,24 +242,24 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
io_xml->read( EXPORTING iv_name = 'SPOT_NAME'
|
||||
CHANGING cg_data = lv_spot_name ).
|
||||
CHANGING cg_data = lv_spot_name ).
|
||||
io_xml->read( EXPORTING iv_name = 'IMPL'
|
||||
CHANGING cg_data = lt_impl ).
|
||||
CHANGING cg_data = lt_impl ).
|
||||
|
||||
lv_enhname = ms_item-obj_name.
|
||||
lv_package = iv_package.
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement(
|
||||
EXPORTING
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_badi_impl=>tooltype
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_badi_impl=>tooltype
|
||||
IMPORTING
|
||||
enhancement = li_tool
|
||||
enhancement = li_tool
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
devclass = lv_package ).
|
||||
lo_badi ?= li_tool.
|
||||
|
||||
lo_badi->set_spot_name( lv_spot_name ).
|
||||
|
@ -253,6 +275,65 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize_badi
|
||||
|
||||
METHOD deserialize_class.
|
||||
|
||||
DATA: lo_enh_class TYPE REF TO cl_enh_tool_class,
|
||||
lt_owr TYPE enhmeth_tabkeys,
|
||||
lt_pre TYPE enhmeth_tabkeys,
|
||||
lt_post TYPE enhmeth_tabkeys,
|
||||
lt_source TYPE rswsourcet,
|
||||
li_tool TYPE REF TO if_enh_tool,
|
||||
lv_shorttext TYPE string,
|
||||
lv_class TYPE seoclsname,
|
||||
lv_enhname TYPE enhname,
|
||||
lv_package TYPE devclass.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
io_xml->read( EXPORTING iv_name = 'OWR_METHODS'
|
||||
CHANGING cg_data = lt_owr ).
|
||||
io_xml->read( EXPORTING iv_name = 'PRE_METHODS'
|
||||
CHANGING cg_data = lt_pre ).
|
||||
io_xml->read( EXPORTING iv_name = 'POST_METHODS'
|
||||
CHANGING cg_data = lt_post ).
|
||||
io_xml->read( EXPORTING iv_name = 'CLASS'
|
||||
CHANGING cg_data = lv_class ).
|
||||
lt_source = mo_files->read_abap( ).
|
||||
|
||||
lv_enhname = ms_item-obj_name.
|
||||
lv_package = iv_package.
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement(
|
||||
EXPORTING
|
||||
enhname = lv_enhname
|
||||
enhtype = ''
|
||||
enhtooltype = cl_enh_tool_class=>tooltype
|
||||
IMPORTING
|
||||
enhancement = li_tool
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
lo_enh_class ?= li_tool.
|
||||
|
||||
lo_enh_class->if_enh_object_docu~set_shorttext( lv_shorttext ).
|
||||
lo_enh_class->set_class( lv_class ).
|
||||
lo_enh_class->set_owr_methods( version = 'I'
|
||||
owr_methods = lt_owr ).
|
||||
lo_enh_class->set_pre_methods( version = 'I'
|
||||
pre_methods = lt_pre ).
|
||||
lo_enh_class->set_post_methods( version = 'I'
|
||||
post_methods = lt_post ).
|
||||
lo_enh_class->set_eimp_include( version = 'I'
|
||||
eimp_source = lt_source ).
|
||||
|
||||
lo_enh_class->if_enh_object~save( ).
|
||||
lo_enh_class->if_enh_object~unlock( ).
|
||||
CATCH cx_enh_root.
|
||||
lcx_exception=>raise( 'error deserializing ENHO class' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_hook.
|
||||
|
||||
DATA: lv_shorttext TYPE string,
|
||||
|
@ -268,29 +349,29 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT'
|
||||
CHANGING cg_data = ls_original_object ).
|
||||
CHANGING cg_data = ls_original_object ).
|
||||
io_xml->read( EXPORTING iv_name = 'ENHANCEMENTS'
|
||||
CHANGING cg_data = lt_enhancements ).
|
||||
CHANGING cg_data = lt_enhancements ).
|
||||
io_xml->read( EXPORTING iv_name = 'SPACES'
|
||||
CHANGING cg_data = lt_spaces ).
|
||||
CHANGING cg_data = lt_spaces ).
|
||||
|
||||
hook_impl_deserialize( EXPORTING it_spaces = lt_spaces
|
||||
CHANGING ct_impl = lt_enhancements ).
|
||||
CHANGING ct_impl = lt_enhancements ).
|
||||
|
||||
lv_enhname = ms_item-obj_name.
|
||||
lv_package = iv_package.
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement(
|
||||
EXPORTING
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_hook_impl=>tooltype
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_hook_impl=>tooltype
|
||||
IMPORTING
|
||||
enhancement = li_tool
|
||||
enhancement = li_tool
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
devclass = lv_package ).
|
||||
lo_hook_impl ?= li_tool.
|
||||
|
||||
lo_hook_impl->if_enh_object_docu~set_shorttext( lv_shorttext ).
|
||||
|
@ -305,13 +386,13 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
LOOP AT lt_enhancements ASSIGNING <ls_enhancement>.
|
||||
lo_hook_impl->add_hook_impl(
|
||||
overwrite = <ls_enhancement>-overwrite
|
||||
method = <ls_enhancement>-method
|
||||
enhmode = <ls_enhancement>-enhmode
|
||||
full_name = <ls_enhancement>-full_name
|
||||
source = <ls_enhancement>-source
|
||||
spot = <ls_enhancement>-spotname
|
||||
parent_full_name = <ls_enhancement>-parent_full_name ).
|
||||
overwrite = <ls_enhancement>-overwrite
|
||||
method = <ls_enhancement>-method
|
||||
enhmode = <ls_enhancement>-enhmode
|
||||
full_name = <ls_enhancement>-full_name
|
||||
source = <ls_enhancement>-source
|
||||
spot = <ls_enhancement>-spotname
|
||||
parent_full_name = <ls_enhancement>-parent_full_name ).
|
||||
ENDLOOP.
|
||||
lo_hook_impl->if_enh_object~save( ).
|
||||
lo_hook_impl->if_enh_object~unlock( ).
|
||||
|
@ -328,12 +409,31 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
lv_shorttext TYPE string,
|
||||
lt_impl TYPE enh_badi_impl_data_it.
|
||||
|
||||
FIELD-SYMBOLS: <ls_impl> LIKE LINE OF lt_impl,
|
||||
<ls_values> LIKE LINE OF <ls_impl>-filter_values,
|
||||
<ls_filter> LIKE LINE OF <ls_impl>-filters.
|
||||
|
||||
|
||||
lo_badi_impl ?= ii_enh_tool.
|
||||
|
||||
lv_shorttext = lo_badi_impl->if_enh_object_docu~get_shorttext( ).
|
||||
lv_spot_name = lo_badi_impl->get_spot_name( ).
|
||||
lt_impl = lo_badi_impl->get_implementations( ).
|
||||
|
||||
LOOP AT lt_impl ASSIGNING <ls_impl>.
|
||||
* make sure the XML serialization does not dump, field type = N
|
||||
LOOP AT <ls_impl>-filter_values ASSIGNING <ls_values>.
|
||||
IF <ls_values>-filter_numeric_value1 CA space.
|
||||
CLEAR <ls_values>-filter_numeric_value1.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
LOOP AT <ls_impl>-filters ASSIGNING <ls_filter>.
|
||||
IF <ls_filter>-filter_numeric_value1 CA space.
|
||||
CLEAR <ls_filter>-filter_numeric_value1.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'TOOL'
|
||||
ig_data = iv_tool ).
|
||||
io_xml->add( ig_data = lv_shorttext
|
||||
|
@ -345,6 +445,43 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "serialize_badi
|
||||
|
||||
METHOD serialize_class.
|
||||
|
||||
DATA: lo_enh_class TYPE REF TO cl_enh_tool_class,
|
||||
lt_owr TYPE enhmeth_tabkeys,
|
||||
lt_pre TYPE enhmeth_tabkeys,
|
||||
lt_post TYPE enhmeth_tabkeys,
|
||||
lt_source TYPE rswsourcet,
|
||||
lv_class TYPE seoclsname,
|
||||
lv_shorttext TYPE string.
|
||||
|
||||
|
||||
lo_enh_class ?= ii_enh_tool.
|
||||
|
||||
lv_shorttext = lo_enh_class->if_enh_object_docu~get_shorttext( ).
|
||||
lt_owr = lo_enh_class->get_owr_methods( ).
|
||||
lt_pre = lo_enh_class->get_pre_methods( ).
|
||||
lt_post = lo_enh_class->get_post_methods( ).
|
||||
lt_source = lo_enh_class->get_eimp_include( ).
|
||||
lo_enh_class->get_class( IMPORTING class_name = lv_class ).
|
||||
|
||||
io_xml->add( iv_name = 'TOOL'
|
||||
ig_data = iv_tool ).
|
||||
io_xml->add( ig_data = lv_shorttext
|
||||
iv_name = 'SHORTTEXT' ).
|
||||
io_xml->add( iv_name = 'CLASS'
|
||||
ig_data = lv_class ).
|
||||
io_xml->add( iv_name = 'OWR_METHODS'
|
||||
ig_data = lt_owr ).
|
||||
io_xml->add( iv_name = 'PRE_METHODS'
|
||||
ig_data = lt_pre ).
|
||||
io_xml->add( iv_name = 'POST_METHODS'
|
||||
ig_data = lt_post ).
|
||||
|
||||
mo_files->add_abap( lt_source ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize_hook.
|
||||
|
||||
DATA: lv_shorttext TYPE string,
|
||||
|
|
|
@ -53,6 +53,7 @@ CLASS lcl_object_enqu IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -317,6 +317,9 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
it_tpool = lt_tpool
|
||||
iv_package = iv_package ).
|
||||
|
||||
deserialize_textpool( iv_program = <lv_include>
|
||||
it_tpool = lt_tpool ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "deserialize_includes
|
||||
|
@ -395,10 +398,7 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
SELECT SINGLE areat INTO lv_areat
|
||||
FROM tlibt
|
||||
WHERE spras = mv_language
|
||||
AND area = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'not found in TLIBT' ).
|
||||
ENDIF.
|
||||
AND area = ms_item-obj_name. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||
|
||||
lt_functab = functions( ).
|
||||
lt_includes = includes( ).
|
||||
|
@ -490,6 +490,9 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ).
|
||||
ENDIF.
|
||||
|
||||
SORT rt_functab BY funcname ASCENDING.
|
||||
DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname.
|
||||
|
||||
ENDMETHOD. "functions
|
||||
|
||||
METHOD main_name.
|
||||
|
@ -533,10 +536,10 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
DATA:
|
||||
lt_source TYPE TABLE OF rssource,
|
||||
lt_functab TYPE ty_rs38l_incl_tt,
|
||||
lt_new_source TYPE rsfb_source.
|
||||
lt_new_source TYPE rsfb_source,
|
||||
ls_ret LIKE LINE OF rt_functions.
|
||||
|
||||
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab,
|
||||
<ls_ret> LIKE LINE OF rt_functions.
|
||||
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab.
|
||||
|
||||
|
||||
lt_functab = functions( ).
|
||||
|
@ -544,8 +547,8 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
LOOP AT lt_functab ASSIGNING <ls_func>.
|
||||
* fm RPY_FUNCTIONMODULE_READ does not support source code
|
||||
* lines longer than 72 characters
|
||||
APPEND INITIAL LINE TO rt_functions ASSIGNING <ls_ret>.
|
||||
MOVE-CORRESPONDING <ls_func> TO <ls_ret>.
|
||||
CLEAR ls_ret.
|
||||
MOVE-CORRESPONDING <ls_func> TO ls_ret.
|
||||
|
||||
CLEAR lt_new_source.
|
||||
CLEAR lt_source.
|
||||
|
@ -554,18 +557,18 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
EXPORTING
|
||||
functionname = <ls_func>-funcname
|
||||
IMPORTING
|
||||
global_flag = <ls_ret>-global_flag
|
||||
remote_call = <ls_ret>-remote_call
|
||||
update_task = <ls_ret>-update_task
|
||||
short_text = <ls_ret>-short_text
|
||||
remote_basxml_supported = <ls_ret>-remote_basxml
|
||||
global_flag = ls_ret-global_flag
|
||||
remote_call = ls_ret-remote_call
|
||||
update_task = ls_ret-update_task
|
||||
short_text = ls_ret-short_text
|
||||
remote_basxml_supported = ls_ret-remote_basxml
|
||||
TABLES
|
||||
import_parameter = <ls_ret>-import
|
||||
changing_parameter = <ls_ret>-changing
|
||||
export_parameter = <ls_ret>-export
|
||||
tables_parameter = <ls_ret>-tables
|
||||
exception_list = <ls_ret>-exception
|
||||
documentation = <ls_ret>-documentation
|
||||
import_parameter = ls_ret-import
|
||||
changing_parameter = ls_ret-changing
|
||||
export_parameter = ls_ret-export
|
||||
tables_parameter = ls_ret-tables
|
||||
exception_list = ls_ret-exception
|
||||
documentation = ls_ret-documentation
|
||||
source = lt_source
|
||||
CHANGING
|
||||
new_source = lt_new_source
|
||||
|
@ -574,10 +577,14 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
function_not_found = 2
|
||||
invalid_name = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc <> 0.
|
||||
IF sy-subrc = 2.
|
||||
CONTINUE.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from RPY_FUNCTIONMODULE_READ_NEW' ).
|
||||
ENDIF.
|
||||
|
||||
APPEND ls_ret TO rt_functions.
|
||||
|
||||
IF NOT lt_new_source IS INITIAL.
|
||||
mo_files->add_abap( iv_extra = <ls_func>-funcname
|
||||
it_abap = lt_new_source ).
|
||||
|
|
|
@ -60,10 +60,7 @@ CLASS lcl_object_para IMPLEMENTATION.
|
|||
|
||||
SELECT SINGLE * FROM tparat INTO ls_tparat
|
||||
WHERE paramid = ms_item-obj_name
|
||||
AND sprache = mv_language. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'PARA no english description' ).
|
||||
ENDIF.
|
||||
AND sprache = mv_language. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||
|
||||
io_xml->add( iv_name = 'TPARA'
|
||||
ig_data = ls_tpara ).
|
||||
|
|
|
@ -13,12 +13,6 @@ CLASS lcl_object_prog DEFINITION INHERITING FROM lcl_objects_program FINAL.
|
|||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS deserialize_textpool
|
||||
IMPORTING it_tpool TYPE textpool_table
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_prog DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -95,26 +89,6 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD deserialize_textpool.
|
||||
|
||||
READ TABLE it_tpool WITH KEY id = 'R' TRANSPORTING NO FIELDS.
|
||||
IF ( sy-subrc = 0 AND lines( it_tpool ) = 1 ) OR lines( it_tpool ) = 0.
|
||||
RETURN. " no action for includes
|
||||
ENDIF.
|
||||
|
||||
INSERT TEXTPOOL ms_item-obj_name
|
||||
FROM it_tpool
|
||||
LANGUAGE mv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = ms_item-obj_name ).
|
||||
|
||||
ENDMETHOD. "deserialize_textpool
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
serialize_program( io_xml = io_xml
|
||||
|
@ -157,7 +131,8 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
deserialize_cua( iv_program_name = lv_program_name
|
||||
is_cua = ls_cua ).
|
||||
|
||||
deserialize_textpool( lt_tpool ).
|
||||
deserialize_textpool( iv_program = ms_item-obj_name
|
||||
it_tpool = lt_tpool ).
|
||||
|
||||
ENDMETHOD. "lif_serialize~deserialize
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ CLASS lcl_object_sfbf IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -56,6 +56,7 @@ CLASS lcl_object_sfbs IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -39,6 +39,7 @@ CLASS lcl_object_sfsw IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -158,6 +158,7 @@ CLASS lcl_object_shi3 IMPLEMENTATION.
|
|||
lt_texts TYPE TABLE OF hier_texts,
|
||||
lt_refs TYPE TABLE OF hier_ref.
|
||||
|
||||
|
||||
CALL FUNCTION 'STREE_STRUCTURE_READ'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
|
@ -167,10 +168,6 @@ CLASS lcl_object_shi3 IMPLEMENTATION.
|
|||
TABLES
|
||||
description = lt_titles.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from STREE_STRUCTURE_READ, SHI3' ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'STREE_HIERARCHY_READ'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
|
@ -182,9 +179,6 @@ CLASS lcl_object_shi3 IMPLEMENTATION.
|
|||
list_of_nodes = lt_nodes
|
||||
list_of_references = lt_refs
|
||||
list_of_texts = lt_texts.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from STREE_HIERARCHY_READ, SHI3' ).
|
||||
ENDIF.
|
||||
|
||||
strip_stamps( CHANGING cs_head = ls_head
|
||||
ct_nodes = lt_nodes ).
|
||||
|
|
|
@ -50,6 +50,7 @@ CLASS lcl_object_shlp IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -191,7 +191,7 @@ CLASS lcl_object_smim IMPLEMENTATION.
|
|||
not_found = 3
|
||||
permission_failure = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
IF sy-subrc <> 0 AND sy-subrc <> 2 AND sy-subrc <> 3.
|
||||
lcx_exception=>raise( 'error from mime api->get:' && sy-msgv1 ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
@ -121,17 +122,18 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd02v TYPE dd02v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd03p TYPE TABLE OF dd03p,
|
||||
lt_dd05m TYPE TABLE OF dd05m,
|
||||
lt_dd08v TYPE TABLE OF dd08v,
|
||||
lt_dd12v TYPE dd12vtab,
|
||||
lt_dd17v TYPE dd17vtab,
|
||||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lv_index LIKE sy-index,
|
||||
lt_dd36m TYPE dd36mttyp.
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd02v TYPE dd02v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd03p TYPE TABLE OF dd03p,
|
||||
lt_dd05m TYPE TABLE OF dd05m,
|
||||
lt_dd08v TYPE TABLE OF dd08v,
|
||||
lt_dd12v TYPE dd12vtab,
|
||||
lt_dd17v TYPE dd17vtab,
|
||||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lv_index LIKE sy-index,
|
||||
lv_masklen TYPE c LENGTH 4,
|
||||
lt_dd36m TYPE dd36mttyp.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd12v> LIKE LINE OF lt_dd12v,
|
||||
<ls_dd05m> LIKE LINE OF lt_dd05m,
|
||||
|
@ -170,6 +172,20 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
ls_dd02v-as4date,
|
||||
ls_dd02v-as4time.
|
||||
|
||||
* reset numeric field, so XML does not crash
|
||||
IF ls_dd02v-prozpuff = ''.
|
||||
CLEAR ls_dd02v-prozpuff.
|
||||
ENDIF.
|
||||
IF ls_dd02v-datmin = ''.
|
||||
CLEAR ls_dd02v-datmin.
|
||||
ENDIF.
|
||||
IF ls_dd02v-datmax = ''.
|
||||
CLEAR ls_dd02v-datmax.
|
||||
ENDIF.
|
||||
IF ls_dd02v-datavg = ''.
|
||||
CLEAR ls_dd02v-datavg.
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd09l-as4user,
|
||||
ls_dd09l-as4date,
|
||||
ls_dd09l-as4time.
|
||||
|
@ -195,7 +211,8 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
<ls_dd03p>-scrtext_m,
|
||||
<ls_dd03p>-scrtext_l.
|
||||
|
||||
IF <ls_dd03p>-masklen = '' OR NOT <ls_dd03p>-masklen CO '0123456789'.
|
||||
lv_masklen = <ls_dd03p>-masklen.
|
||||
IF lv_masklen = '' OR NOT lv_masklen CO '0123456789'.
|
||||
* make sure the field contains valid data, or the XML will dump
|
||||
CLEAR <ls_dd03p>-masklen.
|
||||
ENDIF.
|
||||
|
@ -218,7 +235,10 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
<ls_dd03p>-convexit,
|
||||
<ls_dd03p>-entitytab,
|
||||
<ls_dd03p>-dommaster,
|
||||
<ls_dd03p>-domname3l.
|
||||
<ls_dd03p>-domname3l,
|
||||
<ls_dd03p>-decimals,
|
||||
<ls_dd03p>-lowercase,
|
||||
<ls_dd03p>-signflag.
|
||||
ENDIF.
|
||||
|
||||
IF <ls_dd03p>-shlporigin = 'D'.
|
||||
|
|
|
@ -187,9 +187,6 @@ CLASS lct_table_validation IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD no_fields_no_message.
|
||||
DATA:
|
||||
ls_current_table_field LIKE LINE OF mt_current_table_fields.
|
||||
|
||||
create_xmls( ).
|
||||
|
||||
mv_validation_message = mo_table_validator->validate(
|
||||
|
@ -199,7 +196,6 @@ CLASS lct_table_validation IMPLEMENTATION.
|
|||
cl_abap_unit_assert=>assert_initial( mv_validation_message ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD create_xmls.
|
||||
CREATE OBJECT mo_previous_version_out_xml.
|
||||
mo_previous_version_out_xml->add(
|
||||
|
@ -220,6 +216,4 @@ CLASS lct_table_validation IMPLEMENTATION.
|
|||
iv_xml = mo_current_version_out_xml->render( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
ENDCLASS.
|
|
@ -243,8 +243,7 @@ CLASS lcl_object_tran IMPLEMENTATION.
|
|||
communication_failure = 2
|
||||
resource_failure = 3
|
||||
OTHERS = 4
|
||||
##fm_subrc_ok
|
||||
. "#EC CI_SUBRC
|
||||
##fm_subrc_ok. "#EC CI_SUBRC
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
|
|
@ -52,7 +52,7 @@ CLASS lcl_object_type IMPLEMENTATION.
|
|||
TRY.
|
||||
read( ).
|
||||
rv_bool = abap_true.
|
||||
CATCH lcx_not_found.
|
||||
CATCH lcx_not_found lcx_exception.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
|
|
|
@ -39,13 +39,19 @@ CLASS lcl_object_vcls IMPLEMENTATION.
|
|||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
DATA lv_vclname TYPE vcl_name.
|
||||
|
||||
SELECT SINGLE vclname INTO lv_vclname FROM vcldir
|
||||
DATA lv_changedate TYPE vcldir-changedate.
|
||||
|
||||
SELECT SINGLE changedate INTO lv_changedate FROM vcldir
|
||||
WHERE vclname = ms_item-obj_name.
|
||||
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
IF lv_changedate IS INITIAL.
|
||||
* same logic as in function module VIEWCLUSTER_GET_DEFINITION
|
||||
rv_bool = abap_false.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
|
|
@ -24,9 +24,9 @@ CLASS lcl_object_view IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd25l " View
|
||||
INTO (lv_date, lv_time)
|
||||
|
@ -60,6 +60,7 @@ CLASS lcl_object_view IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-ddic = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
@ -115,6 +116,8 @@ CLASS lcl_object_view IMPLEMENTATION.
|
|||
lt_dd28j TYPE TABLE OF dd28j,
|
||||
lt_dd28v TYPE TABLE OF dd28v.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd27p> LIKE LINE OF lt_dd27p.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
|
@ -149,6 +152,30 @@ CLASS lcl_object_view IMPLEMENTATION.
|
|||
ls_dd09l-as4date,
|
||||
ls_dd09l-as4time.
|
||||
|
||||
LOOP AT lt_dd27p ASSIGNING <ls_dd27p>.
|
||||
CLEAR: <ls_dd27p>-ddtext,
|
||||
<ls_dd27p>-reptext,
|
||||
<ls_dd27p>-scrtext_s,
|
||||
<ls_dd27p>-scrtext_m,
|
||||
<ls_dd27p>-scrtext_l,
|
||||
<ls_dd27p>-outputlen,
|
||||
<ls_dd27p>-decimals,
|
||||
<ls_dd27p>-lowercase,
|
||||
<ls_dd27p>-convexit,
|
||||
<ls_dd27p>-signflag,
|
||||
<ls_dd27p>-flength,
|
||||
<ls_dd27p>-domname,
|
||||
<ls_dd27p>-datatype,
|
||||
<ls_dd27p>-entitytab,
|
||||
<ls_dd27p>-inttype,
|
||||
<ls_dd27p>-intlen,
|
||||
<ls_dd27p>-headlen,
|
||||
<ls_dd27p>-scrlen1,
|
||||
<ls_dd27p>-scrlen2,
|
||||
<ls_dd27p>-scrlen3,
|
||||
<ls_dd27p>-memoryid.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'DD25V'
|
||||
ig_data = ls_dd25v ).
|
||||
io_xml->add( iv_name = 'DD09L'
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,7 +20,8 @@ CLASS lcl_objects_activation DEFINITION FINAL.
|
|||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS activate
|
||||
RAISING lcx_exception.
|
||||
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS clear.
|
||||
|
||||
|
@ -29,8 +30,7 @@ CLASS lcl_objects_activation DEFINITION FINAL.
|
|||
IMPORTING iv_obj_name TYPE trobj_name
|
||||
CHANGING ct_objects TYPE dwinactiv_tab.
|
||||
|
||||
CLASS-DATA: gt_ddic TYPE TABLE OF dwinactiv,
|
||||
gt_programs TYPE TABLE OF dwinactiv.
|
||||
CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv.
|
||||
|
||||
ENDCLASS. "lcl_objects_activation DEFINITION
|
||||
|
||||
|
@ -47,38 +47,18 @@ CLASS lcl_objects_activation IMPLEMENTATION.
|
|||
ENDMETHOD. "add_item
|
||||
|
||||
METHOD clear.
|
||||
CLEAR: gt_ddic,
|
||||
gt_programs.
|
||||
CLEAR gt_objects.
|
||||
ENDMETHOD. "clear
|
||||
|
||||
METHOD activate.
|
||||
|
||||
* ddic
|
||||
IF NOT gt_ddic IS INITIAL.
|
||||
IF NOT gt_objects IS INITIAL.
|
||||
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
|
||||
EXPORTING
|
||||
activate_ddic_objects = abap_true
|
||||
activate_ddic_objects = iv_ddic
|
||||
with_popup = abap_true
|
||||
TABLES
|
||||
objects = gt_ddic
|
||||
EXCEPTIONS
|
||||
excecution_error = 1
|
||||
cancelled = 2
|
||||
insert_into_corr_error = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
* programs
|
||||
IF NOT gt_programs IS INITIAL.
|
||||
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
|
||||
EXPORTING
|
||||
activate_ddic_objects = abap_false
|
||||
with_popup = abap_true
|
||||
TABLES
|
||||
objects = gt_programs
|
||||
objects = gt_objects
|
||||
EXCEPTIONS
|
||||
excecution_error = 1
|
||||
cancelled = 2
|
||||
|
@ -139,9 +119,9 @@ CLASS lcl_objects_activation IMPLEMENTATION.
|
|||
|
||||
lv_obj_name = iv_name.
|
||||
|
||||
* todo, refactoring
|
||||
CASE iv_type.
|
||||
WHEN 'CLAS' OR 'WDYN'.
|
||||
* todo, move this to the object type include instead
|
||||
CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT'
|
||||
EXPORTING
|
||||
obj_name = lv_obj_name
|
||||
|
@ -160,22 +140,11 @@ CLASS lcl_objects_activation IMPLEMENTATION.
|
|||
CHANGING ct_objects = lt_objects ).
|
||||
ENDIF.
|
||||
|
||||
APPEND LINES OF lt_objects TO gt_programs.
|
||||
WHEN 'DOMA' OR 'DTEL' OR 'TABL' OR 'INDX' OR 'TTYP'
|
||||
OR 'VIEW' OR 'SHLP' OR 'ENQU'
|
||||
OR 'SFSW' OR 'SFBF' OR 'SFBS'.
|
||||
* todo also insert_into_working_area?
|
||||
APPEND INITIAL LINE TO gt_ddic ASSIGNING <ls_object>.
|
||||
<ls_object>-object = iv_type.
|
||||
<ls_object>-obj_name = lv_obj_name.
|
||||
WHEN 'REPS' OR 'DYNP' OR 'CUAD' OR 'REPT' OR 'INTF'
|
||||
OR 'FUNC' OR 'ENHO' OR 'TYPE' OR 'XSLT' OR 'WEBI'.
|
||||
* these seem to go into the workarea automatically
|
||||
APPEND INITIAL LINE TO gt_programs ASSIGNING <ls_object>.
|
||||
<ls_object>-object = iv_type.
|
||||
<ls_object>-obj_name = lv_obj_name.
|
||||
APPEND LINES OF lt_objects TO gt_objects.
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( 'activate, unknown type' ).
|
||||
APPEND INITIAL LINE TO gt_objects ASSIGNING <ls_object>.
|
||||
<ls_object>-object = iv_type.
|
||||
<ls_object>-obj_name = lv_obj_name.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "activate
|
||||
|
@ -187,7 +156,7 @@ ENDCLASS. "lcl_objects_activation IMPLEMENTATION
|
|||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_objects_files DEFINITION FINAL.
|
||||
CLASS lcl_objects_files DEFINITION.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
|
@ -859,13 +828,6 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
|
||||
TYPES: ty_spaces_tt TYPE STANDARD TABLE OF i WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_tpool.
|
||||
INCLUDE TYPE textpool.
|
||||
TYPES: split TYPE c LENGTH 8.
|
||||
TYPES: END OF ty_tpool.
|
||||
|
||||
TYPES: ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_dynpro,
|
||||
header TYPE rpy_dyhead,
|
||||
containers TYPE dycatt_tab,
|
||||
|
@ -905,6 +867,11 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
IMPORTING it_dynpros TYPE ty_dynpro_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_textpool
|
||||
IMPORTING iv_program TYPE programm
|
||||
it_tpool TYPE textpool_table
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_cua
|
||||
IMPORTING iv_program_name TYPE programm
|
||||
is_cua TYPE ty_cua
|
||||
|
@ -1043,12 +1010,9 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF lines( lt_tpool ) = 1.
|
||||
READ TABLE lt_tpool INDEX 1 INTO ls_tpool.
|
||||
ASSERT sy-subrc = 0.
|
||||
IF ls_tpool-id = 'R' AND ls_tpool-key = '' AND ls_tpool-length = 0.
|
||||
DELETE lt_tpool INDEX 1.
|
||||
ENDIF.
|
||||
READ TABLE lt_tpool WITH KEY id = 'R' INTO ls_tpool.
|
||||
IF sy-subrc = 0 AND ls_tpool-key = '' AND ls_tpool-length = 0.
|
||||
DELETE lt_tpool INDEX sy-tabix.
|
||||
ENDIF.
|
||||
|
||||
lo_xml->add( iv_name = 'TPOOL'
|
||||
|
@ -1423,12 +1387,42 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "read_tpool
|
||||
|
||||
METHOD deserialize_textpool.
|
||||
|
||||
READ TABLE it_tpool WITH KEY id = 'R' TRANSPORTING NO FIELDS.
|
||||
IF ( sy-subrc = 0 AND lines( it_tpool ) = 1 ) OR lines( it_tpool ) = 0.
|
||||
RETURN. " no action for includes
|
||||
ENDIF.
|
||||
|
||||
INSERT TEXTPOOL iv_program
|
||||
FROM it_tpool
|
||||
LANGUAGE mv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = iv_program ).
|
||||
|
||||
ENDMETHOD. "deserialize_textpool
|
||||
|
||||
METHOD deserialize_cua.
|
||||
|
||||
DATA: ls_tr_key TYPE trkey.
|
||||
|
||||
|
||||
IF is_cua-adm IS INITIAL.
|
||||
IF lines( is_cua-sta ) = 0
|
||||
AND lines( is_cua-fun ) = 0
|
||||
AND lines( is_cua-men ) = 0
|
||||
AND lines( is_cua-mtx ) = 0
|
||||
AND lines( is_cua-act ) = 0
|
||||
AND lines( is_cua-but ) = 0
|
||||
AND lines( is_cua-pfk ) = 0
|
||||
AND lines( is_cua-set ) = 0
|
||||
AND lines( is_cua-doc ) = 0
|
||||
AND lines( is_cua-tit ) = 0
|
||||
AND lines( is_cua-biv ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -1442,14 +1436,14 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ls_tr_key-obj_type = ms_item-obj_type.
|
||||
ls_tr_key-obj_name = iv_program_name.
|
||||
ls_tr_key-obj_name = ms_item-obj_name.
|
||||
ls_tr_key-sub_type = 'CUAD'.
|
||||
ls_tr_key-sub_name = ms_item-obj_name.
|
||||
ls_tr_key-sub_name = iv_program_name.
|
||||
|
||||
sy-tcode = 'SE41' ##write_ok. " evil hack, workaround to handle fixes in note 2159455
|
||||
CALL FUNCTION 'RS_CUA_INTERNAL_WRITE'
|
||||
EXPORTING
|
||||
program = ms_item-obj_name
|
||||
program = iv_program_name
|
||||
language = mv_language
|
||||
tr_key = ls_tr_key
|
||||
adm = is_cua-adm
|
||||
|
@ -1474,7 +1468,7 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'CUAD'
|
||||
iv_name = ms_item-obj_name ).
|
||||
iv_name = iv_program_name ).
|
||||
|
||||
ENDMETHOD. "deserialize_cua
|
||||
|
||||
|
@ -1631,11 +1625,14 @@ CLASS lcl_objects DEFINITION FINAL.
|
|||
PUBLIC SECTION.
|
||||
TYPES: ty_types_tt TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_late,
|
||||
TYPES: BEGIN OF ty_deserialization,
|
||||
obj TYPE REF TO lif_object,
|
||||
xml TYPE REF TO lcl_xml_input,
|
||||
package TYPE devclass,
|
||||
END OF ty_late.
|
||||
item TYPE ty_item,
|
||||
END OF ty_deserialization.
|
||||
|
||||
TYPES: ty_deserialization_tt TYPE STANDARD TABLE OF ty_deserialization WITH DEFAULT KEY.
|
||||
|
||||
CLASS-METHODS serialize
|
||||
IMPORTING is_item TYPE ty_item
|
||||
|
@ -1680,10 +1677,6 @@ CLASS lcl_objects DEFINITION FINAL.
|
|||
CLASS-METHODS supported_list
|
||||
RETURNING VALUE(rt_types) TYPE ty_types_tt.
|
||||
|
||||
CLASS-METHODS is_language_installed
|
||||
IMPORTING iv_language TYPE langu
|
||||
RETURNING VALUE(rv_yes) TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-DATA: mv_langs_installed TYPE scplangs.
|
||||
|
@ -1722,9 +1715,8 @@ CLASS lcl_objects DEFINITION FINAL.
|
|||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS warning_overwrite
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
CHANGING ct_results TYPE ty_results_tt
|
||||
RAISING lcx_exception.
|
||||
CHANGING ct_results TYPE ty_results_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS warning_package
|
||||
IMPORTING is_item TYPE ty_item
|
||||
|
@ -1747,4 +1739,11 @@ CLASS lcl_objects DEFINITION FINAL.
|
|||
RAISING
|
||||
lcx_exception.
|
||||
|
||||
CLASS-METHODS deserialize_objects
|
||||
IMPORTING it_objects TYPE ty_deserialization_tt
|
||||
iv_ddic TYPE abap_bool DEFAULT abap_false
|
||||
iv_descr TYPE string
|
||||
CHANGING ct_files TYPE ty_file_signatures_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object DEFINITION
|
|
@ -207,18 +207,6 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "supported_list
|
||||
|
||||
METHOD is_language_installed.
|
||||
|
||||
IF mv_langs_installed IS INITIAL.
|
||||
CALL FUNCTION 'RSAQ_READ_INSTALLED_LANGUAGES'
|
||||
IMPORTING
|
||||
inst_languages = mv_langs_installed.
|
||||
ENDIF.
|
||||
|
||||
rv_yes = boolc( mv_langs_installed CA iv_language ).
|
||||
|
||||
ENDMETHOD. "is_language_installed
|
||||
|
||||
METHOD exists.
|
||||
|
||||
DATA: li_obj TYPE REF TO lif_object.
|
||||
|
@ -238,26 +226,29 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
METHOD path_to_package.
|
||||
|
||||
DATA: lv_length TYPE i,
|
||||
lv_parent TYPE devclass,
|
||||
lv_new TYPE string,
|
||||
lv_path TYPE string.
|
||||
|
||||
|
||||
lv_length = strlen( iv_start ) - 1.
|
||||
lv_length = strlen( iv_start ).
|
||||
lv_path = iv_path+lv_length.
|
||||
lv_parent = iv_top.
|
||||
rv_package = iv_top.
|
||||
|
||||
CONCATENATE iv_top lv_path INTO rv_package.
|
||||
WHILE lv_path CA '/'.
|
||||
SPLIT lv_path AT '/' INTO lv_new lv_path.
|
||||
|
||||
TRANSLATE rv_package USING '/_'.
|
||||
CONCATENATE rv_package '_' lv_new INTO rv_package.
|
||||
TRANSLATE rv_package TO UPPER CASE.
|
||||
|
||||
lv_length = strlen( rv_package ) - 1.
|
||||
IF lcl_sap_package=>exists( rv_package ) = abap_false.
|
||||
lcl_sap_package=>create_child( iv_parent = lv_parent
|
||||
iv_child = rv_package ).
|
||||
ENDIF.
|
||||
|
||||
rv_package = rv_package(lv_length).
|
||||
|
||||
TRANSLATE rv_package TO UPPER CASE.
|
||||
|
||||
IF lcl_sap_package=>exists( rv_package ) = abap_false.
|
||||
lcl_sap_package=>create_child( iv_parent = iv_top
|
||||
iv_child = rv_package ).
|
||||
ENDIF.
|
||||
lv_parent = rv_package.
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -589,18 +580,20 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
METHOD deserialize.
|
||||
|
||||
DATA: ls_item TYPE ty_item,
|
||||
lv_cancel TYPE abap_bool,
|
||||
li_obj TYPE REF TO lif_object,
|
||||
lt_remote TYPE ty_files_tt,
|
||||
lv_package TYPE devclass,
|
||||
lo_files TYPE REF TO lcl_objects_files,
|
||||
lo_xml TYPE REF TO lcl_xml_input,
|
||||
lt_results TYPE ty_results_tt,
|
||||
lt_late TYPE TABLE OF ty_late.
|
||||
DATA: ls_item TYPE ty_item,
|
||||
lv_cancel TYPE abap_bool,
|
||||
li_obj TYPE REF TO lif_object,
|
||||
lt_remote TYPE ty_files_tt,
|
||||
lv_package TYPE devclass,
|
||||
lo_files TYPE REF TO lcl_objects_files,
|
||||
lo_xml TYPE REF TO lcl_xml_input,
|
||||
lt_results TYPE ty_results_tt,
|
||||
lt_ddic TYPE TABLE OF ty_deserialization,
|
||||
lt_rest TYPE TABLE OF ty_deserialization,
|
||||
lt_late TYPE TABLE OF ty_deserialization.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> TYPE ty_result,
|
||||
<ls_late> LIKE LINE OF lt_late.
|
||||
<ls_deser> LIKE LINE OF lt_late.
|
||||
|
||||
|
||||
lcl_objects_activation=>clear( ).
|
||||
|
@ -616,8 +609,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
lt_results = prioritize_deser( lt_results ).
|
||||
|
||||
warning_overwrite( EXPORTING io_repo = io_repo
|
||||
CHANGING ct_results = lt_results ).
|
||||
warning_overwrite( CHANGING ct_results = lt_results ).
|
||||
|
||||
LOOP AT lt_results ASSIGNING <ls_result> WHERE obj_type IS NOT INITIAL
|
||||
AND NOT ( lstate = gc_state-added AND rstate IS INITIAL ).
|
||||
|
@ -656,34 +648,38 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
is_metadata = lo_xml->get_metadata( ) ).
|
||||
|
||||
compare_remote_to_local(
|
||||
io_object = li_obj
|
||||
it_remote = lt_remote
|
||||
is_result = <ls_result> ).
|
||||
io_object = li_obj
|
||||
it_remote = lt_remote
|
||||
is_result = <ls_result> ).
|
||||
|
||||
li_obj->mo_files = lo_files.
|
||||
|
||||
IF li_obj->get_metadata( )-late_deser = abap_true.
|
||||
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_late>.
|
||||
<ls_late>-obj = li_obj.
|
||||
<ls_late>-xml = lo_xml.
|
||||
<ls_late>-package = lv_package.
|
||||
CONTINUE.
|
||||
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_deser>.
|
||||
ELSEIF li_obj->get_metadata( )-ddic = abap_true.
|
||||
APPEND INITIAL LINE TO lt_ddic ASSIGNING <ls_deser>.
|
||||
ELSE.
|
||||
APPEND INITIAL LINE TO lt_rest ASSIGNING <ls_deser>.
|
||||
ENDIF.
|
||||
<ls_deser>-item = ls_item.
|
||||
<ls_deser>-obj = li_obj.
|
||||
<ls_deser>-xml = lo_xml.
|
||||
<ls_deser>-package = lv_package.
|
||||
|
||||
|
||||
li_obj->deserialize( iv_package = lv_package
|
||||
io_xml = lo_xml ).
|
||||
|
||||
" Remember accessed files
|
||||
APPEND LINES OF lo_files->get_accessed_files( ) TO rt_accessed_files.
|
||||
ENDLOOP.
|
||||
|
||||
lcl_objects_activation=>activate( ).
|
||||
deserialize_objects( EXPORTING it_objects = lt_ddic
|
||||
iv_ddic = abap_true
|
||||
iv_descr = 'DDIC'
|
||||
CHANGING ct_files = rt_accessed_files ).
|
||||
|
||||
LOOP AT lt_late ASSIGNING <ls_late>.
|
||||
<ls_late>-obj->deserialize( iv_package = <ls_late>-package
|
||||
io_xml = <ls_late>-xml ).
|
||||
ENDLOOP.
|
||||
deserialize_objects( EXPORTING it_objects = lt_rest
|
||||
iv_descr = 'Objects'
|
||||
CHANGING ct_files = rt_accessed_files ).
|
||||
|
||||
deserialize_objects( EXPORTING it_objects = lt_late
|
||||
iv_descr = 'Late'
|
||||
CHANGING ct_files = rt_accessed_files ).
|
||||
|
||||
update_package_tree( io_repo->get_package( ) ).
|
||||
|
||||
|
@ -692,6 +688,27 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD deserialize_objects.
|
||||
|
||||
FIELD-SYMBOLS: <ls_obj> LIKE LINE OF it_objects.
|
||||
|
||||
|
||||
lcl_objects_activation=>clear( ).
|
||||
|
||||
LOOP AT it_objects ASSIGNING <ls_obj>.
|
||||
lcl_progress=>show( iv_key = |Deserialize { iv_descr }|
|
||||
iv_current = sy-tabix
|
||||
iv_total = lines( it_objects )
|
||||
iv_text = <ls_obj>-item-obj_name ) ##NO_TEXT.
|
||||
|
||||
<ls_obj>-obj->deserialize( iv_package = <ls_obj>-package
|
||||
io_xml = <ls_obj>-xml ).
|
||||
APPEND LINES OF <ls_obj>-obj->mo_files->get_accessed_files( ) TO ct_files.
|
||||
ENDLOOP.
|
||||
|
||||
lcl_objects_activation=>activate( iv_ddic ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD compare_remote_to_local.
|
||||
|
||||
|
|
|
@ -17,241 +17,90 @@ INTERFACE lif_gui_page.
|
|||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
METHODS render
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
||||
CLASS lcl_gui_page_super DEFINITION ABSTRACT.
|
||||
CLASS lcl_gui_page DEFINITION ABSTRACT.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_gui_page ABSTRACT METHODS render.
|
||||
|
||||
CLASS-METHODS render_error
|
||||
IMPORTING ix_error TYPE REF TO lcx_exception
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
INTERFACES lif_gui_page.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_repo_top
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
iv_show_package TYPE abap_bool DEFAULT abap_true
|
||||
iv_show_branch TYPE abap_bool DEFAULT abap_true
|
||||
iv_interactive_branch TYPE abap_bool DEFAULT abap_false
|
||||
iv_branch TYPE string OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
|
||||
TYPES: BEGIN OF ty_control,
|
||||
redirect_url TYPE string,
|
||||
page_title TYPE string,
|
||||
page_menu TYPE REF TO lcl_html_toolbar,
|
||||
END OF ty_control.
|
||||
|
||||
DATA: ms_control TYPE ty_control.
|
||||
|
||||
METHODS render_content ABSTRACT
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS render_item_state
|
||||
IMPORTING iv1 TYPE char1
|
||||
iv2 TYPE char1
|
||||
RETURNING VALUE(rv_html) TYPE string.
|
||||
|
||||
METHODS render_branch_span
|
||||
IMPORTING iv_branch TYPE string
|
||||
io_repo TYPE REF TO lcl_repo_online
|
||||
iv_interactive TYPE abap_bool
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
METHODS scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS header
|
||||
IMPORTING io_include_style TYPE REF TO lcl_html_helper OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS footer
|
||||
IMPORTING io_include_script TYPE REF TO lcl_html_helper OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS html_head
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
METHODS title
|
||||
IMPORTING iv_title TYPE string
|
||||
io_menu TYPE REF TO lcl_html_toolbar OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
|
||||
METHODS footer
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
METHODS redirect
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
ENDCLASS.
|
||||
ENDCLASS. "lcl_gui_page
|
||||
|
||||
CLASS lcl_gui_page_super IMPLEMENTATION.
|
||||
CLASS lcl_gui_page IMPLEMENTATION.
|
||||
|
||||
METHOD render_repo_top.
|
||||
|
||||
DATA: lo_repo_online TYPE REF TO lcl_repo_online,
|
||||
lo_pback TYPE REF TO lcl_persistence_background,
|
||||
lv_icon TYPE string.
|
||||
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
CREATE OBJECT lo_pback.
|
||||
|
||||
IF io_repo->is_offline( ) = abap_true.
|
||||
lv_icon = 'img/repo_offline' ##NO_TEXT.
|
||||
ELSE.
|
||||
lv_icon = 'img/repo_online' ##NO_TEXT.
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( |<a id="repo{ io_repo->get_key( ) }"></a>| ).
|
||||
ro_html->add( '<table width="100%"><tr>' ).
|
||||
|
||||
ro_html->add( '<td class="repo_name">' ).
|
||||
ro_html->add( |<img src="{ lv_icon }">| ).
|
||||
ro_html->add( |<span class="name">{ io_repo->get_name( ) }</span>| ).
|
||||
IF io_repo->is_offline( ) = abap_false.
|
||||
lo_repo_online ?= io_repo.
|
||||
ro_html->add( |<span class="url">{ lo_repo_online->get_url( ) }</span>| ).
|
||||
ENDIF.
|
||||
ro_html->add( '</td>' ).
|
||||
|
||||
ro_html->add( '<td class="repo_attr right">' ).
|
||||
|
||||
IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ).
|
||||
lv_icon = 'img/star' ##NO_TEXT.
|
||||
ELSE.
|
||||
lv_icon = 'img/star-grey' ##NO_TEXT.
|
||||
ENDIF.
|
||||
lv_icon = |<img class="pad-sides" src="{ lv_icon }" title="Click to toggle favorite">|.
|
||||
ro_html->add_anchor( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }|
|
||||
iv_txt = lv_icon ).
|
||||
|
||||
IF lo_pback->exists( io_repo->get_key( ) ) = abap_true.
|
||||
ro_html->add( '<span class="bg_marker" title="background">BG</span>' ).
|
||||
ENDIF.
|
||||
|
||||
IF io_repo->is_write_protected( ) = abap_true.
|
||||
ro_html->add( '<img src="img/lock" title="locked">' ).
|
||||
ENDIF.
|
||||
|
||||
IF io_repo->is_offline( ) = abap_false.
|
||||
lo_repo_online ?= io_repo.
|
||||
IF iv_show_branch = abap_true.
|
||||
IF iv_branch IS INITIAL.
|
||||
ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( )
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ELSE.
|
||||
ro_html->add( render_branch_span( iv_branch = iv_branch
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF iv_show_package = abap_true.
|
||||
ro_html->add( '<img src="img/pkg">' ).
|
||||
ro_html->add( '<span>' ).
|
||||
ro_html->add_anchor( iv_txt = io_repo->get_package( )
|
||||
iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ).
|
||||
ro_html->add( '</span>' ).
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '</td>' ).
|
||||
ro_html->add( '</tr></table>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_item_state.
|
||||
|
||||
DATA: lv_system TYPE string.
|
||||
|
||||
FIELD-SYMBOLS <state> TYPE char1.
|
||||
|
||||
|
||||
rv_html = '<span class="state-block">'.
|
||||
|
||||
DO 2 TIMES.
|
||||
CASE sy-index.
|
||||
WHEN 1.
|
||||
ASSIGN iv1 TO <state>.
|
||||
lv_system = 'Local:'.
|
||||
WHEN 2.
|
||||
ASSIGN iv2 TO <state>.
|
||||
lv_system = 'Remote:'.
|
||||
ENDCASE.
|
||||
|
||||
CASE <state>.
|
||||
WHEN gc_state-unchanged. "None or unchanged
|
||||
IF iv1 = gc_state-added OR iv2 = gc_state-added.
|
||||
rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|.
|
||||
ELSE.
|
||||
rv_html = rv_html && |<span class="none" title="{ lv_system } No changes"> </span>|.
|
||||
ENDIF.
|
||||
WHEN gc_state-modified. "Changed
|
||||
rv_html = rv_html && |<span class="changed" title="{ lv_system } Modified">M</span>|.
|
||||
WHEN gc_state-added. "Added new
|
||||
rv_html = rv_html && |<span class="added" title="{ lv_system } Added new">A</span>|.
|
||||
WHEN gc_state-mixed. "Multiple changes (multifile)
|
||||
rv_html = rv_html && |<span class="mixed" title="{ lv_system } Multiple changes">■</span>|.
|
||||
WHEN gc_state-deleted. "Deleted
|
||||
rv_html = rv_html && |<span class="deleted" title="{ lv_system } Deleted">D</span>|.
|
||||
ENDCASE.
|
||||
ENDDO.
|
||||
|
||||
rv_html = rv_html && '</span>'.
|
||||
|
||||
ENDMETHOD. "render_item_state
|
||||
|
||||
METHOD render_branch_span.
|
||||
DATA: lv_text TYPE string,
|
||||
lv_class TYPE string.
|
||||
|
||||
lv_text = lcl_git_branch_list=>get_display_name( iv_branch ).
|
||||
|
||||
IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name.
|
||||
lv_class = 'branch branch_head'.
|
||||
ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch.
|
||||
lv_class = 'branch branch_branch'.
|
||||
ELSE.
|
||||
lv_class = 'branch'.
|
||||
ENDIF.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( |<span class="{ lv_class }">| ).
|
||||
ro_html->add( '<img src="img/branch">' ).
|
||||
IF iv_interactive = abap_true.
|
||||
ro_html->add_anchor( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }|
|
||||
iv_txt = lv_text ).
|
||||
ELSE.
|
||||
ro_html->add( lv_text ).
|
||||
ENDIF.
|
||||
ro_html->add( '</span>' ).
|
||||
|
||||
ENDMETHOD. "render_branch_span
|
||||
|
||||
METHOD header.
|
||||
METHOD html_head.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<head>' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ). "#EC NOTEXT
|
||||
ro_html->add( '<meta http-equiv="X-UA-Compatible" content="IE=11,10,9,8" />' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
|
||||
ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ).
|
||||
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ). "#EC NOTEXT
|
||||
ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT
|
||||
ro_html->add( '</head>' ). "#EC NOTEXT
|
||||
ro_html->add( '<body>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD. "render html header
|
||||
ro_html->add( lcl_gui_asset_manager=>get_webfont_link( ) ). " Web fonts
|
||||
|
||||
ro_html->add( '</head>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD. "html_head
|
||||
|
||||
METHOD title.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div id="header">' ). "#EC NOTEXT
|
||||
ro_html->add( '<table width="100%"><tr>' ). "#EC NOTEXT
|
||||
ro_html->add( '<table class="w100"><tr>' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<td class="logo">' ). "#EC NOTEXT
|
||||
ro_html->add( |<a href="sapevent:{ gc_action-abapgit_home }">| ). "#EC NOTEXT
|
||||
ro_html->add( '<img src="img/logo">' ). "#EC NOTEXT
|
||||
ro_html->add( '</a>' ). "#EC NOTEXT
|
||||
ro_html->add( '</td>' ). "#EC NOTEXT
|
||||
ro_html->add( |<td class="logo">{
|
||||
lcl_html=>a( iv_txt = '<img src="img/logo" alt="logo">'
|
||||
iv_act = gc_action-abapgit_home )
|
||||
}</td>| ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<td class="headpad"><span class="page_title">' ). "#EC NOTEXT
|
||||
ro_html->add( |► { iv_title }| ). "#EC NOTEXT
|
||||
ro_html->add( '</span></td>' ). "#EC NOTEXT
|
||||
ro_html->add( |<td class="headpad"><span class="page_title"> ► {
|
||||
ms_control-page_title
|
||||
}</span></td>| ). "#EC NOTEXT
|
||||
|
||||
IF io_menu IS BOUND.
|
||||
IF ms_control-page_menu IS BOUND.
|
||||
ro_html->add( '<td class="headpad right">' ). "#EC NOTEXT
|
||||
ro_html->add( io_menu->render( ) ).
|
||||
ro_html->add( ms_control-page_menu->render( ) ).
|
||||
ro_html->add( '</td>' ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
|
@ -265,47 +114,74 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
|
||||
ro_html->add( '<img src="img/logo" >' ). "#EC NOTEXT
|
||||
ro_html->add( '<table width="100%"><tr><td width="40%"></td><td>' ). "#EC NOTEXT
|
||||
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
|
||||
ro_html->add( '</td><td id="debug-output" width="40%"></td></tr></table>' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<img src="img/logo" alt="logo">' ). "#EC NOTEXT
|
||||
ro_html->add( '<table class="w100"><tr>' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '<td class="w40"></td>' ). "#EC NOTEXT
|
||||
ro_html->add( |<td><span class="version">{ gc_abap_version }</span></td>| ). "#EC NOTEXT
|
||||
ro_html->add( '<td id="debug-output" class="w40"></td>' ). "#EC NOTEXT
|
||||
|
||||
ro_html->add( '</tr></table>' ). "#EC NOTEXT
|
||||
ro_html->add( '</div>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD. "footer
|
||||
|
||||
METHOD redirect.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<head>' ). "#EC NOTEXT
|
||||
ro_html->add( |<meta http-equiv="refresh" content="0; url={
|
||||
ms_control-redirect_url }">| ). "#EC NOTEXT
|
||||
ro_html->add( '</head>'). "#EC NOTEXT
|
||||
ro_html->add( '</html>'). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD scripts.
|
||||
ASSERT 1 = 1. " Dummy
|
||||
ENDMETHOD. "scripts
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
ev_state = gc_event_state-not_handled.
|
||||
ENDMETHOD. "lif_gui_page~on_event
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
|
||||
DATA lo_script TYPE REF TO lcl_html.
|
||||
|
||||
" Redirect
|
||||
IF ms_control-redirect_url IS NOT INITIAL.
|
||||
ro_html = redirect( ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" Real page
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<html>' ). "#EC NOTEXT
|
||||
ro_html->add( html_head( ) ).
|
||||
ro_html->add( '<body>' ). "#EC NOTEXT
|
||||
ro_html->add( title( ) ).
|
||||
ro_html->add( render_content( ) ).
|
||||
ro_html->add( footer( ) ).
|
||||
ro_html->add( '</body>' ). "#EC NOTEXT
|
||||
|
||||
IF io_include_script IS BOUND.
|
||||
lo_script = scripts( ).
|
||||
|
||||
IF lo_script IS BOUND AND lo_script->mv_html IS NOT INITIAL.
|
||||
ro_html->add( '<script type="text/javascript">' ).
|
||||
ro_html->add( io_include_script ).
|
||||
ro_html->add( lo_script ).
|
||||
ro_html->add( 'debugOutput("js: OK");' ).
|
||||
ro_html->add( '</script>' ).
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '</html>'). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD. "render html footer & logo
|
||||
ENDMETHOD. " lif_gui_page~render.
|
||||
|
||||
METHOD render_error.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div class="dummydiv attention">' ).
|
||||
ro_html->add( |Error: { ix_error->mv_text }| ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ENDMETHOD. "render_error
|
||||
|
||||
METHOD redirect.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<html><head>' ). "#EC NOTEXT
|
||||
ro_html->add( |<meta http-equiv="refresh" content="0; url={ iv_url }">| ). "#EC NOTEXT
|
||||
ro_html->add( '</head></html>'). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
ev_state = gc_event_state-not_handled.
|
||||
ENDMETHOD. "lif_gui_page~on_event
|
||||
|
||||
ENDCLASS.
|
||||
ENDCLASS. "lcl_gui_page
|
|
@ -3,12 +3,14 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_background_run DEFINITION FINAL
|
||||
INHERITING FROM lcl_gui_page_super.
|
||||
INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
lif_gui_page~on_event REDEFINITION,
|
||||
lif_gui_page~render REDEFINITION.
|
||||
METHODS constructor.
|
||||
METHODS lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mt_text TYPE TABLE OF string.
|
||||
|
@ -19,6 +21,11 @@ ENDCLASS.
|
|||
|
||||
CLASS lcl_gui_page_background_run IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'BACKGROUND_RUN'.
|
||||
ENDMETHOD. " constructor.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
@ -47,46 +54,44 @@ CLASS lcl_gui_page_background_run IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lv_text LIKE LINE OF mt_text.
|
||||
|
||||
|
||||
run( ).
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'BACKGROUND_RUN' ) ).
|
||||
ro_html->add( '<div id="toc">' ).
|
||||
LOOP AT mt_text INTO lv_text.
|
||||
ro_html->add( '<pre>' && lv_text && '</pre><br>' ).
|
||||
ENDLOOP.
|
||||
ro_html->add( '</div>' ).
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_background DEFINITION FINAL
|
||||
INHERITING FROM lcl_gui_page_super.
|
||||
INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
iv_key TYPE lcl_persistence_repo=>ty_repo-key,
|
||||
lif_gui_page~on_event REDEFINITION,
|
||||
lif_gui_page~render REDEFINITION.
|
||||
constructor IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key,
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_key TYPE lcl_persistence_repo=>ty_repo-key.
|
||||
|
||||
METHODS:
|
||||
build_menu
|
||||
RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar,
|
||||
render_data
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -94,10 +99,21 @@ ENDCLASS.
|
|||
CLASS lcl_gui_page_background IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
super->constructor( ).
|
||||
|
||||
mv_key = iv_key.
|
||||
ms_control-page_title = 'BACKGROUND'.
|
||||
ms_control-page_menu = build_menu( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD build_menu.
|
||||
CREATE OBJECT ro_menu.
|
||||
ro_menu->add( iv_txt = 'Run background logic'
|
||||
iv_act = gc_action-go_background_run ) ##NO_TEXT.
|
||||
ENDMETHOD. "build_menu
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
||||
DATA ls_bg_task TYPE lcl_persistence_background=>ty_background.
|
||||
|
@ -162,7 +178,7 @@ CLASS lcl_gui_page_background IMPLEMENTATION.
|
|||
lv_afixed = ' checked' ##NO_TEXT.
|
||||
ENDCASE.
|
||||
|
||||
ro_html->add( render_repo_top( lo_repo ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top( lo_repo ) ).
|
||||
ro_html->add( '<br>' ).
|
||||
|
||||
ro_html->add( '<u>Method</u><br>' ) ##NO_TEXT.
|
||||
|
@ -222,22 +238,12 @@ CLASS lcl_gui_page_background IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA lo_toolbar TYPE REF TO lcl_html_toolbar.
|
||||
|
||||
|
||||
CREATE OBJECT lo_toolbar.
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
lo_toolbar->add( iv_txt = 'Run background logic'
|
||||
iv_act = gc_action-go_background_run ) ##NO_TEXT.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( iv_title = 'BACKGROUND' io_menu = lo_toolbar ) ).
|
||||
ro_html->add( render_data( ) ).
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
|
@ -302,15 +302,17 @@ ENDCLASS.
|
|||
|
||||
***********************
|
||||
|
||||
CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~on_event REDEFINITION,
|
||||
lif_gui_page~render REDEFINITION.
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
|
@ -333,13 +335,13 @@ CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page
|
|||
refresh
|
||||
RAISING lcx_exception,
|
||||
body
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
form_select
|
||||
IMPORTING iv_name TYPE string
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
render_merge
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
decode_merge
|
||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||
|
@ -360,6 +362,8 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'BRANCH_OVERVIEW'.
|
||||
ms_control-page_menu = build_menu( ).
|
||||
mo_repo = io_repo.
|
||||
refresh( ).
|
||||
ENDMETHOD.
|
||||
|
@ -416,7 +420,7 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( render_repo_top(
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_package = abap_false
|
||||
iv_show_branch = abap_false ) ).
|
||||
|
@ -577,17 +581,14 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( iv_title = 'BRANCH_OVERVIEW' io_menu = build_menu( ) ) ).
|
||||
ro_html->add( '<div id="toc">' ).
|
||||
ro_html->add( body( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
|
@ -2,7 +2,7 @@
|
|||
*& Include ZABAPGIT_PAGE_COMMIT
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
|
@ -16,24 +16,26 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~render REDEFINITION,
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
render_content REDEFINITION,
|
||||
scripts REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
mo_stage TYPE REF TO lcl_stage.
|
||||
|
||||
METHODS:
|
||||
render_menu
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
render_stage
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
render_form
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RAISING lcx_exception,
|
||||
scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -44,6 +46,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
mo_repo = io_repo.
|
||||
mo_stage = io_stage.
|
||||
|
||||
ms_control-page_title = 'COMMIT'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
@ -68,15 +72,12 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'COMMIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
ro_html->add( render_repo_top(
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_package = abap_false
|
||||
iv_branch = mo_stage->get_branch_name( ) ) ).
|
||||
|
@ -86,9 +87,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
ro_html->add( render_stage( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD render_stage.
|
||||
|
||||
|
@ -201,7 +200,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
lo_toolbar->add( iv_act = 'submitFormById(''commit_form'');'
|
||||
iv_txt = 'Commit'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||
iv_opt = gc_html_opt-strong ) ##NO_TEXT.
|
||||
|
||||
lo_toolbar->add( iv_act = 'commit_cancel'
|
||||
iv_txt = 'Cancel'
|
||||
|
|
|
@ -2,14 +2,15 @@
|
|||
*& Include ZABAPGIT_PAGE_DB
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
METHODS: constructor
|
||||
IMPORTING is_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
|
@ -20,9 +21,10 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
|||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_key = is_key.
|
||||
ms_control-page_title = 'CONFIG DISPLAY'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str,
|
||||
ls_action TYPE lcl_persistence_db=>ty_content,
|
||||
|
@ -44,8 +46,6 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
|||
format = cl_abap_format=>e_html_attr ).
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'CONFIG DISPLAY' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_entry">' ).
|
||||
ro_html->add( '<table class="toolbar"><tr><td>' ).
|
||||
|
@ -56,26 +56,25 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
|||
| <td>{ ms_key-value }</td></tr></table>| ).
|
||||
|
||||
ro_html->add( '</td><td class="right">' ).
|
||||
ro_html->add_anchor( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ).
|
||||
ro_html->add_a( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ).
|
||||
ro_html->add( '</td></tr></table>' ).
|
||||
|
||||
ro_html->add( |<pre>{ lv_data }</pre>| ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
METHODS: constructor
|
||||
IMPORTING is_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
|
@ -86,9 +85,10 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_key = is_key.
|
||||
ms_control-page_title = 'CONFIG EDIT'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str,
|
||||
lo_toolbar TYPE REF TO lcl_html_toolbar.
|
||||
|
@ -112,9 +112,6 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
CREATE OBJECT lo_toolbar.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'CONFIG EDIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_entry">' ).
|
||||
|
||||
" Banners
|
||||
|
@ -135,7 +132,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
lo_toolbar->add( iv_act = 'submitFormById(''db_form'');'
|
||||
iv_txt = 'Save'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||
iv_opt = gc_html_opt-strong ) ##NO_TEXT.
|
||||
|
||||
ro_html->add( '<div class="paddings">' ).
|
||||
ro_html->add( lo_toolbar->render( ) ).
|
||||
|
@ -143,16 +140,17 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
|
||||
ro_html->add( '</div>' ). "db_entry
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
METHODS constructor.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS explain_content
|
||||
|
@ -160,12 +158,16 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
RETURNING VALUE(rv_text) TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db IMPLEMENTATION.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'DATABASE PERSISTENCY'.
|
||||
ENDMETHOD. " constructor.
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lt_data TYPE lcl_persistence_db=>tt_content,
|
||||
lv_action TYPE string,
|
||||
|
@ -179,9 +181,6 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DATABASE PERSISTENCY' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_list">' ).
|
||||
ro_html->add( '<table class="db_tab">' ).
|
||||
|
||||
|
@ -220,9 +219,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
|
|||
ro_html->add( '</table>' ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD explain_content.
|
||||
DATA: lv_result TYPE match_result,
|
||||
|
@ -241,9 +238,10 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
|
|||
FIND FIRST OCCURRENCE OF REGEX '<OFFLINE/>'
|
||||
IN is_data-data_str IGNORING CASE MATCH COUNT lv_cnt.
|
||||
IF lv_cnt > 0.
|
||||
rv_text = |<b>On-line</b>, Name: <b>{ lcl_url=>name( rv_text ) }</b>|.
|
||||
rv_text = |<strong>On-line</strong>, Name: <strong>{
|
||||
lcl_url=>name( rv_text ) }</strong>|.
|
||||
ELSE.
|
||||
rv_text = |Off-line, Name: <b>{ rv_text }</b>|.
|
||||
rv_text = |Off-line, Name: <strong>{ rv_text }</strong>|.
|
||||
ENDIF.
|
||||
|
||||
WHEN 'BACKGROUND'.
|
||||
|
|
|
@ -2,37 +2,40 @@
|
|||
*& Include ZABAPGIT_PAGE_DEBUG
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
METHODS constructor.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
render_content REDEFINITION,
|
||||
scripts REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS render_debug_info
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_supported_object_types
|
||||
RETURNING VALUE(rv_html) TYPE string.
|
||||
RETURNING VALUE(rv_html) TYPE string.
|
||||
|
||||
ENDCLASS. "lcl_gui_page_debuginfo
|
||||
|
||||
CLASS lcl_gui_page_debuginfo IMPLEMENTATION.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'DEBUG INFO'.
|
||||
ENDMETHOD. " constructor.
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DEBUG INFO' ) ).
|
||||
|
||||
ro_html->add( '<div id="debug_info" class="debug_container">' ).
|
||||
ro_html->add( render_debug_info( ) ).
|
||||
ro_html->add( render_supported_object_types( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD render_debug_info.
|
||||
|
||||
|
@ -69,7 +72,7 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION.
|
|||
TABLES
|
||||
wt_object_text = lt_objects
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
OTHERS = 1 ##FM_SUBRC_OK.
|
||||
|
||||
LOOP AT lt_objects ASSIGNING <object> WHERE pgmid = 'R3TR'.
|
||||
ls_item-obj_type = <object>-object.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*& Include ZABAPGIT_PAGE_DIFF
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
|
@ -28,26 +28,27 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
is_object TYPE ty_item OPTIONAL
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mt_diff_files TYPE tt_file_diff.
|
||||
|
||||
METHODS render_diff
|
||||
IMPORTING is_diff TYPE ty_file_diff
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_diff_head
|
||||
IMPORTING is_diff TYPE ty_file_diff
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_table_head
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_lines
|
||||
IMPORTING is_diff TYPE ty_file_diff
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_beacon
|
||||
IMPORTING is_diff_line TYPE lcl_diff=>ty_diff
|
||||
is_diff TYPE ty_file_diff
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS get_line_hl
|
||||
IMPORTING iv_mod TYPE char1
|
||||
iv_result TYPE lcl_diff=>ty_diff-result
|
||||
|
@ -73,6 +74,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ls_status> LIKE LINE OF lt_status.
|
||||
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'DIFF'.
|
||||
|
||||
ASSERT is_file IS INITIAL OR is_object IS INITIAL. " just one passed
|
||||
|
||||
|
@ -93,10 +95,9 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
ELSEIF is_object IS NOT INITIAL. " Diff for whole object
|
||||
|
||||
LOOP AT lt_status ASSIGNING <ls_status>
|
||||
WHERE obj_type = is_object-obj_type
|
||||
AND obj_name = is_object-obj_name
|
||||
AND match IS INITIAL.
|
||||
|
||||
WHERE obj_type = is_object-obj_type
|
||||
AND obj_name = is_object-obj_name
|
||||
AND match IS INITIAL.
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
|
@ -175,7 +176,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD. "append_diff
|
||||
|
||||
METHOD render_diff_head.
|
||||
DATA: lo_html TYPE REF TO lcl_html_helper,
|
||||
DATA: lo_html TYPE REF TO lcl_html,
|
||||
ls_stats TYPE lcl_diff=>ty_count.
|
||||
|
||||
CREATE OBJECT lo_html.
|
||||
|
@ -192,7 +193,8 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
lo_html->add( |<span class="diff_banner diff_del">- { ls_stats-delete }</span>| ).
|
||||
lo_html->add( |<span class="diff_banner diff_upd">~ { ls_stats-update }</span>| ).
|
||||
lo_html->add( |<span class="diff_name">{ is_diff-filename }</span>| ). "#EC NOTEXT
|
||||
lo_html->add( render_item_state( iv1 = is_diff-lstate iv2 = is_diff-rstate ) ).
|
||||
lo_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_diff-lstate
|
||||
iv2 = is_diff-rstate ) ).
|
||||
lo_html->add( '</div>' ). "#EC NOTEXT
|
||||
|
||||
ro_html = lo_html.
|
||||
|
@ -222,7 +224,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
" Content
|
||||
ro_html->add( '<div class="diff_content">' ). "#EC NOTEXT
|
||||
ro_html->add( '<table width="100%" class="diff_tab">' ). "#EC NOTEXT
|
||||
ro_html->add( '<table class="diff_tab">' ). "#EC NOTEXT
|
||||
ro_html->add( render_table_head( ) ).
|
||||
ro_html->add( render_lines( is_diff ) ).
|
||||
ro_html->add( '</table>' ). "#EC NOTEXT
|
||||
|
@ -343,15 +345,12 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. " get_line_hl.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA ls_diff_file LIKE LINE OF mt_diff_files.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DIFF' ) ).
|
||||
|
||||
LOOP AT mt_diff_files INTO ls_diff_file.
|
||||
lcl_progress=>show( iv_key = 'Diff'
|
||||
iv_current = sy-tabix
|
||||
|
@ -361,8 +360,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
ro_html->add( render_diff( ls_diff_file ) ).
|
||||
ENDLOOP.
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS. "lcl_gui_page_diff
|
|
@ -2,19 +2,28 @@
|
|||
*& Include ZABAPGIT_PAGE_EXPLORE
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
CONSTANTS c_explore_url TYPE string
|
||||
VALUE 'http://larshp.github.io/abapGit/explore.html'.
|
||||
|
||||
METHODS constructor.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
ENDCLASS. "lcl_gui_page_explore DEFINITION
|
||||
|
||||
CLASS lcl_gui_page_explore IMPLEMENTATION.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-redirect_url = c_explore_url.
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( redirect( 'http://larshp.github.io/abapGit/explore.html' ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
METHOD render_content.
|
||||
ASSERT 1 = 1. " Dummy
|
||||
ENDMETHOD. "render_content.
|
||||
|
||||
ENDCLASS. "lcl_gui_page_explore IMPLEMENTATION
|
|
@ -2,15 +2,17 @@
|
|||
*& Include ZABAPGIT_PAGE_MAIN
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~render REDEFINITION,
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS: BEGIN OF c_actions,
|
||||
show TYPE string VALUE 'show' ##NO_TEXT,
|
||||
|
@ -27,16 +29,16 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
RAISING lcx_exception,
|
||||
render_toc
|
||||
IMPORTING it_repo_list TYPE lcl_repo_srv=>ty_repo_tt
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
build_main_menu
|
||||
RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar,
|
||||
render_explore
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
render_repo
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -46,6 +48,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'HOME'.
|
||||
ms_control-page_menu = build_main_menu( ).
|
||||
ENDMETHOD. " constructor
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
@ -112,7 +116,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
* RENDERING
|
||||
**********************************************************************
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
|
||||
lx_error TYPE REF TO lcx_exception,
|
||||
|
@ -123,33 +127,26 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( iv_title = 'HOME'
|
||||
io_menu = build_main_menu( ) ) ).
|
||||
|
||||
TRY.
|
||||
lt_repos = lcl_app=>repo_srv( )->list( ).
|
||||
CATCH lcx_exception INTO lx_error.
|
||||
ro_html->add( render_error( lx_error ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ).
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
ro_html->add( render_toc( lt_repos ) ).
|
||||
|
||||
IF lines( lt_repos ) = 0 AND lx_error IS INITIAL.
|
||||
ro_html->add( render_explore( ) ).
|
||||
ELSEIF mv_show IS INITIAL.
|
||||
CREATE OBJECT lo_tutorial.
|
||||
ro_html->add( lo_tutorial->render( ) ).
|
||||
ELSE.
|
||||
IF mv_show IS INITIAL.
|
||||
CREATE OBJECT lo_tutorial.
|
||||
ro_html->add( lo_tutorial->lif_gui_page~render( ) ).
|
||||
ELSE.
|
||||
lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
|
||||
ro_html->add( render_repo( lo_repo ) ).
|
||||
ENDIF.
|
||||
lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
|
||||
ro_html->add( render_repo( lo_repo ) ).
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD. "render
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD retrieve_active_repo.
|
||||
|
||||
|
@ -237,7 +234,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
LOOP AT it_repo_list INTO lo_repo.
|
||||
lv_key = lo_repo->get_key( ).
|
||||
IF lv_key = mv_show.
|
||||
lv_opt = gc_html_opt-emphas.
|
||||
lv_opt = gc_html_opt-strong.
|
||||
ELSE.
|
||||
CLEAR lv_opt.
|
||||
ENDIF.
|
||||
|
@ -258,9 +255,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
IF lo_repo->is_offline( ) = abap_true.
|
||||
lv_icon = '<img src="img/repo_offline">'.
|
||||
lv_icon = 'plug/darkgrey'.
|
||||
ELSE.
|
||||
lv_icon = '<img src="img/repo_online">'.
|
||||
lv_icon = 'cloud-upload/blue'.
|
||||
ENDIF.
|
||||
|
||||
lo_allbar->add( iv_txt = lv_repo_title
|
||||
|
@ -281,22 +278,24 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
**********************************************************************
|
||||
|
||||
ro_html->add( '<table width="100%"><tr>' ).
|
||||
ro_html->add( '<td class="pad-sides"><img src="img/star"></td>' ).
|
||||
ro_html->add( '<table class="w100"><tr>' ).
|
||||
ro_html->add( |<td class="pad-sides">{
|
||||
lcl_html=>icon( iv_name = 'star/blue' iv_alt = 'Favs' iv_hint = 'Favorites' )
|
||||
}</td>| ).
|
||||
|
||||
ro_html->add( '<td class="pad-sides" width="100%">' ). " Maximize width
|
||||
ro_html->add( '<td class="pad-sides w100">' ). " Maximize width
|
||||
IF lo_favbar->count( ) > 0.
|
||||
ro_html->add( lo_favbar->render( iv_sort = abap_true ) ).
|
||||
ELSE.
|
||||
ro_html->add( `<span class="grey">No favorites so far. For more info please check ` ).
|
||||
ro_html->add_anchor( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ).
|
||||
ro_html->add( '</span>' ).
|
||||
ro_html->add( |<span class="grey">No favorites so far. For more info please check {
|
||||
lcl_html=>a( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial )
|
||||
}</span>| ).
|
||||
ENDIF.
|
||||
ro_html->add( '</td>' ).
|
||||
|
||||
ro_html->add( '<td class="right">' ).
|
||||
ro_html->add( lo_allbar->render(
|
||||
iv_as_droplist_with_label = '<img class="pad4px" src="img/burger">'
|
||||
iv_as_droplist_with_label = lcl_html=>icon( iv_name = 'three-bars/blue' iv_class = 'pad4px' )
|
||||
iv_sort = abap_true
|
||||
iv_with_icons = abap_true
|
||||
iv_add_minizone = abap_true ) ).
|
||||
|
@ -332,8 +331,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( |<div class="repo" id="repo{ io_repo->get_key( ) }">| ).
|
||||
ro_html->add( render_repo_top( io_repo = io_repo iv_interactive_branch = abap_true ) ).
|
||||
ro_html->add( mo_repo_content->lif_gui_page~render( ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = io_repo
|
||||
iv_interactive_branch = abap_true ) ).
|
||||
ro_html->add( mo_repo_content->render( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ENDMETHOD. "render_repo
|
||||
|
|
|
@ -315,7 +315,7 @@ ENDCLASS.
|
|||
|
||||
*********************************
|
||||
|
||||
CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
|
@ -324,8 +324,10 @@ CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
iv_source TYPE string
|
||||
iv_target TYPE string
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~on_event REDEFINITION,
|
||||
lif_gui_page~render REDEFINITION.
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
|
@ -346,6 +348,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION.
|
|||
METHOD constructor.
|
||||
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'MERGE'.
|
||||
ms_control-page_menu = build_menu( ).
|
||||
|
||||
mo_repo = io_repo.
|
||||
|
||||
|
@ -381,7 +385,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
DEFINE _show_file.
|
||||
READ TABLE &1 ASSIGNING <ls_show>
|
||||
|
@ -410,10 +414,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( iv_title = 'MERGE' io_menu = build_menu( ) ) ).
|
||||
ro_html->add( '<div id="toc">' ).
|
||||
ro_html->add( render_repo_top(
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_package = abap_false
|
||||
iv_show_branch = abap_false ) ).
|
||||
|
@ -473,8 +475,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION.
|
|||
ro_html->add( ms_merge-conflict ).
|
||||
ro_html->add( '</b>' ).
|
||||
ro_html->add( '</div>' ).
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
ENDCLASS.
|
|
@ -2,17 +2,20 @@
|
|||
*& Include ZABAPGIT_PAGE_SETTINGS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
METHODS lif_gui_page~on_event REDEFINITION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_action,
|
||||
save_settings TYPE string VALUE 'save_settings',
|
||||
END OF c_action.
|
||||
|
||||
METHODS constructor.
|
||||
METHODS lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA:
|
||||
|
@ -20,13 +23,13 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
mv_error TYPE abap_bool.
|
||||
|
||||
METHODS render_proxy
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_development_internals
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_form_begin
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS render_form_end
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
METHODS build_settings
|
||||
IMPORTING
|
||||
it_post_fields TYPE tihttpnvp.
|
||||
|
@ -45,24 +48,24 @@ ENDCLASS.
|
|||
|
||||
CLASS lcl_gui_page_settings IMPLEMENTATION.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'SETTINGS'.
|
||||
ENDMETHOD. " constructor.
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
read_settings( ).
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'Settings' ) ).
|
||||
|
||||
ro_html->add( render_form_begin( ) ).
|
||||
ro_html->add( render_proxy( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_development_internals( ) ).
|
||||
ro_html->add( render_form_end( ) ).
|
||||
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD render_proxy.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*& Include ZABAPGIT_PAGE_STAGE
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: BEGIN OF c_action,
|
||||
|
@ -14,9 +14,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
constructor
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~render REDEFINITION,
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
render_content REDEFINITION,
|
||||
scripts REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
ms_files TYPE ty_stage_files,
|
||||
|
@ -25,15 +29,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
|
||||
METHODS:
|
||||
render_list
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
render_file
|
||||
IMPORTING is_file TYPE ty_file
|
||||
iv_context TYPE string
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
render_menu
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
METHODS process_stage_list
|
||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||
|
@ -46,6 +48,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
METHOD constructor.
|
||||
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'STAGE'.
|
||||
mo_repo = io_repo.
|
||||
|
||||
ms_files = lcl_stage_logic=>get( mo_repo ).
|
||||
|
@ -150,8 +153,8 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
ro_html->add('<thead><tr>').
|
||||
ro_html->add('<th></th><th colspan="2">LOCAL</th><th>' ).
|
||||
IF lines( ms_files-local ) > 1.
|
||||
ro_html->add_anchor( iv_txt = |{ lines( ms_files-local ) } diffs|
|
||||
iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ).
|
||||
ro_html->add_a( iv_txt = |{ lines( ms_files-local ) } diffs|
|
||||
iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ).
|
||||
ENDIF.
|
||||
ro_html->add('</th></tr></thead>').
|
||||
ro_html->add('<tbody class="local">').
|
||||
|
@ -200,7 +203,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
ig_file = is_file ).
|
||||
ro_html->add( '<td class="cmd"><a>add</a></td>' ).
|
||||
ro_html->add( '<td>' ).
|
||||
ro_html->add_anchor( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ).
|
||||
ro_html->add_a( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ).
|
||||
ro_html->add( '</td>' ).
|
||||
WHEN 'remote'.
|
||||
ro_html->add( '<td class="cmd"><a>ignore</a><a>remove</a></td>' ).
|
||||
|
@ -211,38 +214,33 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render_file
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'STAGE' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
ro_html->add( render_repo_top( mo_repo ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_repo_top( mo_repo ) ).
|
||||
ro_html->add( render_menu( ) ).
|
||||
ro_html->add( render_list( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( scripts( ) ) ).
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
ENDMETHOD. "render_content
|
||||
|
||||
METHOD render_menu.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div class="paddings">' ).
|
||||
ro_html->add_anchor( iv_act = 'gHelper.submit();'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_id = 'act_commit'
|
||||
iv_style = 'display: none'
|
||||
iv_txt = 'Commit'
|
||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||
ro_html->add_a( iv_act = 'gHelper.submit();'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_id = 'act_commit'
|
||||
iv_style = 'display: none'
|
||||
iv_txt = 'Commit'
|
||||
iv_opt = gc_html_opt-strong ) ##NO_TEXT.
|
||||
IF lines( ms_files-local ) > 0.
|
||||
ro_html->add_anchor( iv_act = |{ c_action-stage_all }|
|
||||
iv_id = 'act_commit_all'
|
||||
iv_txt = 'Add all and commit') ##NO_TEXT.
|
||||
ro_html->add_a( iv_act = |{ c_action-stage_all }|
|
||||
iv_id = 'act_commit_all'
|
||||
iv_txt = 'Add all and commit') ##NO_TEXT.
|
||||
ENDIF.
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
|
|
|
@ -1432,14 +1432,12 @@ CLASS lcl_settings DEFINITION FINAL.
|
|||
METHODS
|
||||
get_run_critical_tests
|
||||
RETURNING VALUE(rv_run) TYPE abap_bool.
|
||||
PROTECTED SECTION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mv_proxy_url TYPE string.
|
||||
DATA mv_proxy_port TYPE string.
|
||||
DATA mv_run_critical_tests TYPE abap_bool.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_settings IMPLEMENTATION.
|
||||
|
@ -1484,10 +1482,6 @@ CLASS lcl_persistence_settings DEFINITION FINAL.
|
|||
RETURNING
|
||||
VALUE(ro_settings) TYPE REF TO lcl_settings.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_persistence_settings IMPLEMENTATION.
|
||||
|
@ -1520,8 +1514,7 @@ CLASS lcl_persistence_settings IMPLEMENTATION.
|
|||
ro_settings->set_proxy_url(
|
||||
lcl_app=>db( )->read(
|
||||
iv_type = 'SETTINGS'
|
||||
iv_value = 'PROXY_URL'
|
||||
) ).
|
||||
iv_value = 'PROXY_URL' ) ).
|
||||
CATCH lcx_not_found.
|
||||
ro_settings->set_proxy_url( '' ).
|
||||
ENDTRY.
|
||||
|
@ -1529,8 +1522,7 @@ CLASS lcl_persistence_settings IMPLEMENTATION.
|
|||
ro_settings->set_proxy_port(
|
||||
lcl_app=>db( )->read(
|
||||
iv_type = 'SETTINGS'
|
||||
iv_value = 'PROXY_PORT'
|
||||
) ).
|
||||
iv_value = 'PROXY_PORT' ) ).
|
||||
CATCH lcx_not_found.
|
||||
ro_settings->set_proxy_port( '' ).
|
||||
ENDTRY.
|
||||
|
|
|
@ -549,8 +549,9 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
WITH KEY item = ls_item. " type+name+package key
|
||||
" There is something in cache and the object is unchanged
|
||||
IF sy-subrc = 0
|
||||
AND abap_false = lcl_objects=>has_changed_since( is_item = ls_item
|
||||
iv_timestamp = mv_last_serialization ).
|
||||
AND abap_false = lcl_objects=>has_changed_since(
|
||||
is_item = ls_item
|
||||
iv_timestamp = mv_last_serialization ).
|
||||
LOOP AT lt_cache ASSIGNING <ls_cache> WHERE item = ls_item.
|
||||
APPEND <ls_cache> TO rt_files.
|
||||
ENDLOOP.
|
||||
|
|
|
@ -117,7 +117,8 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
|||
SORT lt_res_sort BY obj_type ASCENDING obj_name ASCENDING.
|
||||
|
||||
LOOP AT it_results ASSIGNING <ls_res1> WHERE NOT obj_type IS INITIAL.
|
||||
IF NOT ( <ls_res1>-obj_type = ls_item-obj_type AND <ls_res1>-obj_name = ls_item-obj_name ).
|
||||
IF NOT ( <ls_res1>-obj_type = ls_item-obj_type
|
||||
AND <ls_res1>-obj_name = ls_item-obj_name ).
|
||||
APPEND INITIAL LINE TO lt_item_idx ASSIGNING <ls_res2>.
|
||||
<ls_res2>-obj_type = <ls_res1>-obj_type.
|
||||
<ls_res2>-obj_name = <ls_res1>-obj_name.
|
||||
|
|
|
@ -5,12 +5,18 @@
|
|||
CLASS lcl_services_abapgit DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
|
||||
CONSTANTS c_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org' ##NO_TEXT.
|
||||
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://github.com/larshp/abapGit/wiki'.
|
||||
CONSTANTS c_package_abapgit TYPE devclass VALUE '$ABAPGIT'.
|
||||
CONSTANTS c_package_plugins TYPE devclass VALUE '$ABAPGIT_PLUGINS'.
|
||||
CONSTANTS c_abapgit_url TYPE string VALUE 'https://github.com/larshp/abapGit.git'.
|
||||
CONSTANTS c_plugins_url TYPE string VALUE 'https://github.com/larshp/abapGit-plugins.git'.
|
||||
CONSTANTS c_abapgit_homepage TYPE string
|
||||
VALUE 'http://www.abapgit.org' ##NO_TEXT.
|
||||
CONSTANTS c_abapgit_wikipage TYPE string
|
||||
VALUE 'https://github.com/larshp/abapGit/wiki'.
|
||||
CONSTANTS c_package_abapgit TYPE devclass
|
||||
VALUE '$ABAPGIT'.
|
||||
CONSTANTS c_package_plugins TYPE devclass
|
||||
VALUE '$ABAPGIT_PLUGINS'.
|
||||
CONSTANTS c_abapgit_url TYPE string
|
||||
VALUE 'https://github.com/larshp/abapGit.git'.
|
||||
CONSTANTS c_plugins_url TYPE string
|
||||
VALUE 'https://github.com/larshp/abapGit-plugins.git'.
|
||||
|
||||
CLASS-METHODS open_abapgit_homepage
|
||||
RAISING lcx_exception.
|
||||
|
|
|
@ -32,8 +32,7 @@ CLASS lcl_services_db IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false
|
||||
). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
|
|
@ -34,9 +34,9 @@ CLASS lcl_services_git DEFINITION FINAL.
|
|||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
CLASS-METHODS commit
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
is_commit TYPE ty_commit_fields
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
is_commit TYPE ty_commit_fields
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
ENDCLASS. " lcl_services_git
|
||||
|
@ -63,8 +63,7 @@ CLASS lcl_services_git IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false
|
||||
). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
@ -124,7 +123,7 @@ CLASS lcl_services_git IMPLEMENTATION.
|
|||
|
||||
METHOD switch_branch.
|
||||
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_online,
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_online,
|
||||
ls_branch TYPE lcl_git_branch_list=>ty_git_branch.
|
||||
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ CLASS lcl_services_repo DEFINITION FINAL.
|
|||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
CLASS-METHODS new_offline
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
CLASS-METHODS remote_attach
|
||||
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
|
||||
|
@ -53,7 +53,7 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
|
||||
METHOD clone.
|
||||
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_online,
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_online,
|
||||
ls_popup TYPE lcl_popups=>ty_popup.
|
||||
|
||||
|
||||
|
@ -105,8 +105,7 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false
|
||||
). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
@ -149,8 +148,7 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false
|
||||
). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
@ -199,8 +197,7 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false
|
||||
). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
@ -215,8 +212,8 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
|
||||
METHOD remote_attach.
|
||||
|
||||
DATA: ls_popup TYPE lcl_popups=>ty_popup,
|
||||
lo_repo TYPE REF TO lcl_repo_online.
|
||||
DATA: ls_popup TYPE lcl_popups=>ty_popup,
|
||||
lo_repo TYPE REF TO lcl_repo_online.
|
||||
|
||||
ls_popup = lcl_popups=>repo_popup(
|
||||
iv_title = 'Attach repo to remote ...'
|
||||
|
@ -239,8 +236,8 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
|
||||
METHOD remote_change.
|
||||
|
||||
DATA: ls_popup TYPE lcl_popups=>ty_popup,
|
||||
lo_repo TYPE REF TO lcl_repo_online.
|
||||
DATA: ls_popup TYPE lcl_popups=>ty_popup,
|
||||
lo_repo TYPE REF TO lcl_repo_online.
|
||||
|
||||
lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ).
|
||||
|
||||
|
@ -267,7 +264,8 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
lv_question TYPE string,
|
||||
lo_repo TYPE REF TO lcl_repo.
|
||||
|
||||
lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ).
|
||||
|
||||
lo_repo = lcl_app=>repo_srv( )->get( iv_key ).
|
||||
|
||||
lv_question = 'This will rebuild and overwrite local repo checksums.'.
|
||||
|
||||
|
@ -288,7 +286,7 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
|
@ -308,11 +306,11 @@ CLASS lcl_services_repo IMPLEMENTATION.
|
|||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
OPERATION = 'SHOW'
|
||||
IN_NEW_WINDOW = 'X'
|
||||
OBJECT_NAME = iv_package
|
||||
OBJECT_TYPE = 'DEVC'
|
||||
WITH_OBJECTLIST = 'X'.
|
||||
operation = 'SHOW'
|
||||
in_new_window = 'X'
|
||||
object_name = iv_package
|
||||
object_type = 'DEVC'
|
||||
with_objectlist = 'X'.
|
||||
|
||||
ENDMETHOD. " open_se80.
|
||||
|
||||
|
|
|
@ -197,8 +197,7 @@ CLASS lcl_syntax_highlighter IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS:
|
||||
<regex> LIKE LINE OF mt_rules,
|
||||
<result> TYPE match_result,
|
||||
<match> TYPE ty_match.
|
||||
<result> TYPE match_result.
|
||||
|
||||
CLEAR et_matches.
|
||||
|
||||
|
@ -651,8 +650,7 @@ CLASS ltcl_syntax_cases DEFINITION FINAL
|
|||
|
||||
METHODS:
|
||||
do_test IMPORTING iv_line TYPE string
|
||||
iv_filename TYPE string
|
||||
RETURNING VALUE(ro_instance) TYPE REF TO lcl_syntax_highlighter,
|
||||
iv_filename TYPE string,
|
||||
test_abap_01 FOR TESTING,
|
||||
test_abap_02 FOR TESTING,
|
||||
test_abap_03 FOR TESTING,
|
||||
|
@ -702,7 +700,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION.
|
|||
lo TYPE REF TO lcl_syntax_highlighter.
|
||||
|
||||
|
||||
lo = lcl_syntax_highlighter=>create( iv_filename ).
|
||||
lo = lcl_syntax_highlighter=>create( iv_filename ).
|
||||
lo->parse_line( EXPORTING iv_line = iv_line
|
||||
IMPORTING et_matches = lt_matches_act ).
|
||||
|
||||
|
|
|
@ -1237,7 +1237,7 @@ ENDCLASS. "lcl_abap_unit IMPLEMENTATION
|
|||
CLASS ltcl_html_helper DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_html TYPE REF TO lcl_html_helper.
|
||||
DATA: mo_html TYPE REF TO lcl_html.
|
||||
|
||||
METHODS:
|
||||
indent1 FOR TESTING RAISING lcx_exception,
|
||||
|
@ -1819,6 +1819,10 @@ CLASS ltcl_path IMPLEMENTATION.
|
|||
lv_filename = lcl_path=>get_filename_from_syspath( '\\server$\file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath(
|
||||
'C:\foo\bar\moo.boo\dev\qas\_blah\goog\muuh\sap\hello\world\lorem\ipsum\s_foo.gif' ).
|
||||
assert_equals( act = lv_filename exp = 's_foo.gif' ).
|
||||
|
||||
ENDMETHOD. " get_filename_from_syspath.
|
||||
|
||||
ENDCLASS. "ltcl_path
|
||||
|
@ -1839,7 +1843,6 @@ CLASS ltcl_file_status IMPLEMENTATION.
|
|||
DATA: lt_local TYPE ty_files_item_tt,
|
||||
lt_remote TYPE ty_files_tt,
|
||||
lt_state TYPE ty_file_signatures_tt,
|
||||
lt_tadir TYPE ty_tadir_tt,
|
||||
lt_results TYPE ty_results_tt,
|
||||
lt_results_exp TYPE ty_results_tt.
|
||||
|
||||
|
@ -2185,24 +2188,570 @@ CLASS ltcl_persistence_settings IMPLEMENTATION.
|
|||
lcl_app=>db( )->delete(
|
||||
iv_type = 'SETTINGS'
|
||||
iv_value = 'PROXY_URL' ).
|
||||
CATCH cx_static_check.
|
||||
CATCH cx_static_check ##NO_HANDLER.
|
||||
"If entry didn't exist, that's okay
|
||||
ENDTRY.
|
||||
TRY.
|
||||
lcl_app=>db( )->delete(
|
||||
iv_type = 'SETTINGS'
|
||||
iv_value = 'PROXY_PORT' ).
|
||||
CATCH cx_static_check.
|
||||
CATCH cx_static_check ##NO_HANDLER.
|
||||
"If entry didn't exist, that's okay
|
||||
ENDTRY.
|
||||
TRY.
|
||||
lcl_app=>db( )->delete(
|
||||
iv_type = 'SETTINGS'
|
||||
iv_value = 'CRIT_TESTS' ).
|
||||
CATCH cx_static_check.
|
||||
CATCH cx_static_check ##NO_HANDLER.
|
||||
"If entry didn't exist, that's okay
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_spy_oo_object DEFINITION FOR TESTING.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES: lif_object_oriented_object.
|
||||
DATA:
|
||||
mv_package TYPE devclass,
|
||||
mv_overwrite TYPE seox_boolean,
|
||||
ms_interface_properties TYPE vseointerf,
|
||||
ms_class_properties TYPE vseoclass,
|
||||
ms_locals_key TYPE seoclskey,
|
||||
mt_local_definitions TYPE rswsourcet,
|
||||
mt_local_implementations TYPE rswsourcet,
|
||||
mt_local_macros TYPE rswsourcet,
|
||||
mt_local_test_classes TYPE rswsourcet,
|
||||
mv_force TYPE seoflag,
|
||||
ms_deserialize_key TYPE seoclskey,
|
||||
mt_source TYPE ty_string_tt,
|
||||
ms_item_to_activate TYPE ty_item,
|
||||
mt_descriptions TYPE ty_seocompotx_tt,
|
||||
ms_description_key TYPE seoclskey,
|
||||
mv_text_pool_class_name TYPE seoclsname,
|
||||
mt_text_pool TYPE textpool_table,
|
||||
mv_text_pool_inserted TYPE abap_bool,
|
||||
mt_sotr TYPE ty_sotr_tt,
|
||||
mt_sotr_package TYPE devclass,
|
||||
mv_docu_object_name TYPE dokhl-object,
|
||||
mv_docu_language TYPE spras,
|
||||
mt_docu_lines TYPE tlinetab.
|
||||
|
||||
ENDCLASS.
|
||||
CLASS ltd_spy_oo_object IMPLEMENTATION.
|
||||
METHOD lif_object_oriented_object~create.
|
||||
DATA lv_properties_structure_name TYPE string.
|
||||
lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name.
|
||||
IF lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name.
|
||||
ms_interface_properties = is_properties.
|
||||
ELSE.
|
||||
ms_class_properties = is_properties.
|
||||
ENDIF.
|
||||
mv_package = iv_package.
|
||||
mv_overwrite = iv_overwrite.
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_oriented_object~generate_locals.
|
||||
ms_locals_key = is_key.
|
||||
mt_local_definitions = it_local_definitions.
|
||||
mt_local_implementations = it_local_implementations.
|
||||
mt_local_macros = it_local_macros.
|
||||
mt_local_test_classes = it_local_test_classes.
|
||||
mv_force = iv_force.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~deserialize_source.
|
||||
ms_deserialize_key = is_key.
|
||||
mt_source = it_source.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~add_to_activation_list.
|
||||
ms_item_to_activate = is_item.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~update_descriptions.
|
||||
ms_description_key = is_key.
|
||||
mt_descriptions = it_descriptions.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~insert_text_pool.
|
||||
mv_text_pool_inserted = abap_true.
|
||||
mv_text_pool_class_name = iv_class_name.
|
||||
mt_text_pool = it_text_pool.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = iv_language
|
||||
exp = sy-langu ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~create_sotr.
|
||||
mt_sotr = it_sotr.
|
||||
mt_sotr_package = iv_package.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_oriented_object~create_documentation.
|
||||
mv_docu_object_name = iv_object_name.
|
||||
mv_docu_language = iv_language.
|
||||
mt_docu_lines = it_lines.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||
INHERITING FROM lcl_objects_files.
|
||||
PUBLIC SECTION.
|
||||
METHODS constructor.
|
||||
METHODS read_abap REDEFINITION.
|
||||
DATA:
|
||||
mt_sources TYPE seop_source_string,
|
||||
mt_local_definitions TYPE seop_source_string,
|
||||
mt_local_implementations TYPE seop_source_string,
|
||||
mt_local_macros TYPE seop_source_string,
|
||||
mt_local_test_classes TYPE seop_source_string.
|
||||
ENDCLASS.
|
||||
CLASS ltd_fake_object_files IMPLEMENTATION.
|
||||
METHOD read_abap.
|
||||
CASE iv_extra.
|
||||
WHEN 'locals_def'.
|
||||
rt_abap = mt_local_definitions.
|
||||
WHEN 'locals_imp'.
|
||||
rt_abap = mt_local_implementations.
|
||||
WHEN 'macros'.
|
||||
rt_abap = mt_local_macros.
|
||||
WHEN 'testclasses'.
|
||||
rt_abap = mt_local_test_classes.
|
||||
WHEN OTHERS.
|
||||
rt_abap = mt_sources.
|
||||
RETURN.
|
||||
ENDCASE.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = iv_error
|
||||
exp = abap_false ).
|
||||
ENDMETHOD.
|
||||
METHOD constructor.
|
||||
DATA ls_empty_item TYPE ty_item.
|
||||
super->constructor( ls_empty_item ).
|
||||
APPEND 'source' TO me->mt_sources.
|
||||
APPEND 'definition' TO me->mt_local_definitions.
|
||||
APPEND 'implementation' TO me->mt_local_implementations.
|
||||
APPEND 'macro' TO me->mt_local_macros.
|
||||
APPEND 'test' TO me->mt_local_test_classes.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||
PROTECTED SECTION.
|
||||
DATA:
|
||||
mo_spy_oo_object TYPE REF TO ltd_spy_oo_object,
|
||||
mo_fake_object_files TYPE REF TO ltd_fake_object_files,
|
||||
mo_xml_input TYPE REF TO lcl_xml_input,
|
||||
mo_xml_out TYPE REF TO lcl_xml_output,
|
||||
mo_oo_object TYPE REF TO lif_object,
|
||||
ms_item TYPE ty_item.
|
||||
METHODS: when_deserializing
|
||||
RAISING
|
||||
lcx_exception,
|
||||
then_should_deserialize_source,
|
||||
given_the_descriptions
|
||||
IMPORTING
|
||||
it_descriptions TYPE ty_seocompotx_tt
|
||||
RAISING
|
||||
lcx_exception,
|
||||
then_shuld_update_descriptions
|
||||
IMPORTING
|
||||
it_descriptions TYPE ty_seocompotx_tt,
|
||||
then_it_should_add_activation,
|
||||
given_documentation_in_xml_as
|
||||
IMPORTING
|
||||
it_lines TYPE tlinetab
|
||||
RAISING
|
||||
lcx_exception,
|
||||
then_docu_should_be_created
|
||||
IMPORTING
|
||||
it_lines TYPE tlinetab.
|
||||
|
||||
ENDCLASS.
|
||||
CLASS ltc_oo_test IMPLEMENTATION.
|
||||
|
||||
METHOD then_docu_should_be_created.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_docu_lines
|
||||
exp = it_lines ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mv_docu_object_name
|
||||
exp = ms_item-obj_name ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mv_docu_language
|
||||
exp = sy-langu ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_documentation_in_xml_as.
|
||||
mo_xml_out->add(
|
||||
iv_name = 'LINES'
|
||||
ig_data = it_lines ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_it_should_add_activation.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_item_to_activate
|
||||
exp = ms_item ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_shuld_update_descriptions.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_descriptions
|
||||
exp = it_descriptions ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_description_key
|
||||
exp = ms_item-obj_name ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_descriptions.
|
||||
mo_xml_out->add(
|
||||
iv_name = 'DESCRIPTIONS'
|
||||
ig_data = it_descriptions ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_should_deserialize_source.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_source
|
||||
exp = mo_fake_object_files->mt_sources ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_deserialize_key
|
||||
exp = ms_item-obj_name ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD when_deserializing.
|
||||
CREATE OBJECT mo_xml_input
|
||||
EXPORTING
|
||||
iv_xml = mo_xml_out->render( ).
|
||||
mo_oo_object->deserialize(
|
||||
iv_package = 'package_name'
|
||||
io_xml = mo_xml_input ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT
|
||||
INHERITING FROM ltc_oo_test.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
setup,
|
||||
given_a_class_properties
|
||||
RAISING
|
||||
lcx_exception,
|
||||
then_should_create_class,
|
||||
then_it_should_generate_locals,
|
||||
should_create_class FOR TESTING RAISING cx_static_check,
|
||||
should_generate_locals FOR TESTING RAISING cx_static_check,
|
||||
should_deserialize_source FOR TESTING RAISING cx_static_check,
|
||||
should_update_descriptions FOR TESTING RAISING cx_static_check,
|
||||
should_add_to_activation FOR TESTING RAISING cx_static_check,
|
||||
no_text_pool_no_insert FOR TESTING RAISING cx_static_check,
|
||||
insert_text_pool FOR TESTING RAISING cx_static_check,
|
||||
create_stor_from_xml FOR TESTING RAISING cx_static_check,
|
||||
create_documentation FOR TESTING RAISING cx_static_check.
|
||||
DATA:
|
||||
ms_class_properties TYPE vseoclass.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_class_deserialization IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_fake_object_files.
|
||||
CREATE OBJECT mo_spy_oo_object.
|
||||
CREATE OBJECT mo_xml_out.
|
||||
lth_oo_factory_injector=>inject( mo_spy_oo_object ).
|
||||
|
||||
ms_item-devclass = 'package_name'.
|
||||
ms_item-obj_name = 'zcl_class'.
|
||||
ms_item-obj_type = 'CLAS'.
|
||||
|
||||
CREATE OBJECT mo_oo_object TYPE lcl_object_clas
|
||||
EXPORTING
|
||||
is_item = ms_item
|
||||
iv_language = sy-langu.
|
||||
mo_oo_object->mo_files = mo_fake_object_files.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD should_create_class.
|
||||
ms_class_properties-clsname = ms_item-obj_name.
|
||||
|
||||
given_a_class_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_should_create_class( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD should_generate_locals.
|
||||
given_a_class_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_it_should_generate_locals( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD should_deserialize_source.
|
||||
given_a_class_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_should_deserialize_source( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD should_update_descriptions.
|
||||
DATA:
|
||||
ls_description TYPE seocompotx,
|
||||
lt_descriptions TYPE ty_seocompotx_tt.
|
||||
|
||||
given_a_class_properties( ).
|
||||
|
||||
ls_description-clsname = ms_item-obj_name.
|
||||
ls_description-cmpname = 'a_method'.
|
||||
APPEND ls_description TO lt_descriptions.
|
||||
given_the_descriptions( lt_descriptions ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_shuld_update_descriptions( lt_descriptions ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD should_add_to_activation.
|
||||
given_a_class_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_it_should_add_activation( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_a_class_properties.
|
||||
mo_xml_out->add(
|
||||
iv_name = 'VSEOCLASS'
|
||||
ig_data = ms_class_properties ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_should_create_class.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_class_properties
|
||||
exp = ms_class_properties ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_overwrite
|
||||
exp = abap_true ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mv_package
|
||||
exp = 'package_name' ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD then_it_should_generate_locals.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_locals_key
|
||||
exp = ms_item-obj_name ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_force
|
||||
exp = abap_true ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_local_definitions
|
||||
exp = mo_fake_object_files->mt_local_definitions ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_local_implementations
|
||||
exp = mo_fake_object_files->mt_local_implementations ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_local_macros
|
||||
exp = mo_fake_object_files->mt_local_macros ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_local_test_classes
|
||||
exp = mo_fake_object_files->mt_local_test_classes ).
|
||||
ENDMETHOD.
|
||||
METHOD no_text_pool_no_insert.
|
||||
given_a_class_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_text_pool_inserted
|
||||
exp = abap_false ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD insert_text_pool.
|
||||
DATA: lt_pool_external TYPE textpool_table,
|
||||
ls_pool_external TYPE ty_tpool.
|
||||
ls_pool_external-id = 'ID'.
|
||||
ls_pool_external-key = 'KEY'.
|
||||
APPEND ls_pool_external TO lt_pool_external.
|
||||
|
||||
given_a_class_properties( ).
|
||||
|
||||
mo_xml_out->add(
|
||||
iv_name = 'TPOOL'
|
||||
ig_data = lt_pool_external ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_text_pool
|
||||
exp = lt_pool_external ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mv_text_pool_class_name
|
||||
exp = 'zcl_class' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_stor_from_xml.
|
||||
DATA:
|
||||
lt_sotr TYPE ty_sotr_tt,
|
||||
ls_sotr LIKE LINE OF lt_sotr.
|
||||
|
||||
given_a_class_properties( ).
|
||||
|
||||
ls_sotr-header-concept = 'HEADER'.
|
||||
APPEND ls_sotr TO lt_sotr.
|
||||
mo_xml_out->add(
|
||||
iv_name = 'SOTR'
|
||||
ig_data = lt_sotr ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_sotr
|
||||
exp = lt_sotr ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mt_sotr_package
|
||||
exp = 'package_name' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_documentation.
|
||||
DATA: lt_lines TYPE tlinetab,
|
||||
ls_line TYPE LINE OF tlinetab.
|
||||
ls_line-tdline = 'Class Line Doc'.
|
||||
APPEND ls_line TO lt_lines.
|
||||
|
||||
given_a_class_properties( ).
|
||||
|
||||
given_documentation_in_xml_as( lt_lines ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_docu_should_be_created( lt_lines ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_interface_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT
|
||||
INHERITING FROM ltc_oo_test.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
setup,
|
||||
given_an_interface_properties
|
||||
RAISING
|
||||
lcx_exception,
|
||||
then_should_create_interface,
|
||||
create_interface FOR TESTING RAISING cx_static_check,
|
||||
update_descriptions FOR TESTING RAISING cx_static_check,
|
||||
add_to_activation FOR TESTING RAISING cx_static_check,
|
||||
deserialize_source FOR TESTING RAISING cx_static_check,
|
||||
create_documentation FOR TESTING RAISING cx_static_check.
|
||||
DATA:
|
||||
ms_interface_properties TYPE vseointerf.
|
||||
ENDCLASS.
|
||||
CLASS ltcl_interface_deserialization IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_fake_object_files.
|
||||
CREATE OBJECT mo_spy_oo_object.
|
||||
CREATE OBJECT mo_xml_out.
|
||||
lth_oo_factory_injector=>inject( mo_spy_oo_object ).
|
||||
|
||||
ms_item-devclass = 'package_name'.
|
||||
ms_item-obj_name = 'zif_interface'.
|
||||
ms_item-obj_type = 'INTF'.
|
||||
|
||||
CREATE OBJECT mo_oo_object TYPE lcl_object_intf
|
||||
EXPORTING
|
||||
is_item = ms_item
|
||||
iv_language = sy-langu.
|
||||
mo_oo_object->mo_files = mo_fake_object_files.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_interface.
|
||||
ms_interface_properties-clsname = ms_item-obj_name.
|
||||
given_an_interface_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_should_create_interface( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD update_descriptions.
|
||||
DATA:
|
||||
ls_description TYPE seocompotx,
|
||||
lt_descriptions TYPE ty_seocompotx_tt.
|
||||
|
||||
given_an_interface_properties( ).
|
||||
|
||||
ls_description-clsname = ms_item-obj_name.
|
||||
ls_description-cmpname = 'a_method'.
|
||||
APPEND ls_description TO lt_descriptions.
|
||||
given_the_descriptions( lt_descriptions ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_shuld_update_descriptions( lt_descriptions ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD add_to_activation.
|
||||
given_an_interface_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_it_should_add_activation( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_source.
|
||||
given_an_interface_properties( ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_should_deserialize_source( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_an_interface_properties.
|
||||
mo_xml_out->add(
|
||||
iv_name = 'VSEOINTERF'
|
||||
ig_data = ms_interface_properties ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_should_create_interface.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->ms_interface_properties
|
||||
exp = ms_interface_properties ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_overwrite
|
||||
exp = abap_true ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_spy_oo_object->mv_package
|
||||
exp = 'package_name' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_documentation.
|
||||
DATA: lt_lines TYPE tlinetab,
|
||||
ls_line TYPE LINE OF tlinetab.
|
||||
ls_line-tdline = 'Interface Line Doc'.
|
||||
APPEND ls_line TO lt_lines.
|
||||
|
||||
given_an_interface_properties( ).
|
||||
|
||||
given_documentation_in_xml_as( lt_lines ).
|
||||
|
||||
when_deserializing( ).
|
||||
|
||||
then_docu_should_be_created( lt_lines ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -440,10 +440,22 @@ CLASS lcl_path IMPLEMENTATION.
|
|||
|
||||
METHOD get_filename_from_syspath.
|
||||
|
||||
" filename | c:\filename | /dir/filename | \\server\filename
|
||||
FIND FIRST OCCURRENCE OF REGEX '^(?:/(?:.+/)*|(?:\w:|\\)\\(?:.+\\)*)?([^\\/]+)$'
|
||||
IN iv_path
|
||||
SUBMATCHES rv_filename.
|
||||
DATA: lv_split TYPE c LENGTH 1,
|
||||
lv_index TYPE i,
|
||||
lt_split TYPE TABLE OF string.
|
||||
|
||||
" filename | c:\filename | /dir/filename | \\server\filename
|
||||
IF iv_path CA '/'.
|
||||
lv_split = '/'.
|
||||
ELSE.
|
||||
lv_split = '\'.
|
||||
ENDIF.
|
||||
|
||||
SPLIT iv_path AT lv_split INTO TABLE lt_split.
|
||||
|
||||
lv_index = lines( lt_split ).
|
||||
|
||||
READ TABLE lt_split INDEX lv_index INTO rv_filename.
|
||||
|
||||
ENDMETHOD. " get_filename_from_syspath.
|
||||
|
||||
|
@ -535,13 +547,13 @@ CLASS lcl_diff DEFINITION FINAL.
|
|||
END OF c_diff.
|
||||
|
||||
TYPES: BEGIN OF ty_diff,
|
||||
new_line TYPE c LENGTH 6,
|
||||
new TYPE string,
|
||||
result TYPE c LENGTH 1,
|
||||
old_line TYPE c LENGTH 6,
|
||||
old TYPE string,
|
||||
short TYPE abap_bool,
|
||||
beacon TYPE i,
|
||||
new_line TYPE c LENGTH 6,
|
||||
new TYPE string,
|
||||
result TYPE c LENGTH 1,
|
||||
old_line TYPE c LENGTH 6,
|
||||
old TYPE string,
|
||||
short TYPE abap_bool,
|
||||
beacon TYPE i,
|
||||
END OF ty_diff.
|
||||
TYPES: ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY.
|
||||
|
||||
|
@ -760,9 +772,9 @@ CLASS lcl_diff IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
DATA: lt_delta TYPE vxabapt255_tab,
|
||||
lt_new TYPE abaptxt255_tab,
|
||||
lt_old TYPE abaptxt255_tab.
|
||||
DATA: lt_delta TYPE vxabapt255_tab,
|
||||
lt_new TYPE abaptxt255_tab,
|
||||
lt_old TYPE abaptxt255_tab.
|
||||
|
||||
|
||||
unpack( EXPORTING iv_new = iv_new
|
||||
|
@ -828,10 +840,10 @@ CLASS lcl_diff IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
ELSE.
|
||||
CLEAR ls_new.
|
||||
READ TABLE it_new INTO ls_new INDEX lv_nindex. "#EC CI_SUBRC
|
||||
READ TABLE it_new INTO ls_new INDEX lv_nindex. "#EC CI_SUBRC
|
||||
lv_nindex = lv_nindex + 1.
|
||||
CLEAR ls_old.
|
||||
READ TABLE it_old INTO ls_old INDEX lv_oindex. "#EC CI_SUBRC
|
||||
READ TABLE it_old INTO ls_old INDEX lv_oindex. "#EC CI_SUBRC
|
||||
lv_oindex = lv_oindex + 1.
|
||||
_append ls_new '' ls_old.
|
||||
ENDIF.
|
||||
|
@ -1031,7 +1043,7 @@ CLASS lcl_log DEFINITION FINAL.
|
|||
count
|
||||
RETURNING VALUE(rv_count) TYPE i,
|
||||
to_html
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
clear,
|
||||
has_rc "For unit tests mainly
|
||||
IMPORTING iv_rc TYPE balsort
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
*& Include ZABAPGIT_VIEW_REPO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_view_repo_content DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_gui_page.
|
||||
ALIASES render FOR lif_gui_page~render.
|
||||
|
||||
CONSTANTS: BEGIN OF c_actions,
|
||||
change_dir TYPE string VALUE 'change_dir' ##NO_TEXT,
|
||||
|
@ -12,9 +14,6 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su
|
|||
toggle_changes TYPE string VALUE 'toggle_changes' ##NO_TEXT,
|
||||
END OF c_actions.
|
||||
|
||||
METHODS: lif_gui_page~render REDEFINITION,
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
|
||||
RAISING lcx_exception.
|
||||
|
@ -31,21 +30,21 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su
|
|||
render_head_menu
|
||||
IMPORTING iv_lstate TYPE char1
|
||||
iv_rstate TYPE char1
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
render_grid_menu
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
render_item
|
||||
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception,
|
||||
render_item_files
|
||||
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
render_item_command
|
||||
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html,
|
||||
get_item_class
|
||||
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
|
||||
RETURNING VALUE(rv_html) TYPE string,
|
||||
|
@ -55,7 +54,7 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su
|
|||
render_empty_package
|
||||
RETURNING VALUE(rv_html) TYPE string,
|
||||
render_parent_dir
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS:
|
||||
|
@ -150,7 +149,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
ro_html->add( render_grid_menu( ) ).
|
||||
|
||||
" Repo content table
|
||||
ro_html->add( '<table width="100%" class="repo_tab">' ).
|
||||
ro_html->add( '<table class="repo_tab">' ).
|
||||
|
||||
IF lcl_path=>is_root( mv_cur_dir ) = abap_false.
|
||||
ro_html->add( render_parent_dir( ) ).
|
||||
|
@ -169,7 +168,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
|
||||
CATCH lcx_exception INTO lx_error.
|
||||
ro_html->add( render_head_menu( iv_lstate = lv_lstate iv_rstate = lv_rstate ) ).
|
||||
ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
|
@ -233,7 +232,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
lv_wp_opt = gc_html_opt-crossout.
|
||||
lv_pull_opt = gc_html_opt-crossout.
|
||||
ELSE.
|
||||
lv_pull_opt = gc_html_opt-emphas.
|
||||
lv_pull_opt = gc_html_opt-strong.
|
||||
ENDIF.
|
||||
|
||||
" Build branch drop-down ========================
|
||||
|
@ -283,12 +282,12 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
IF iv_lstate IS NOT INITIAL. " Something new at local
|
||||
lo_toolbar->add( iv_txt = 'Stage'
|
||||
iv_act = |{ gc_action-go_stage }?{ lv_key }|
|
||||
iv_opt = gc_html_opt-emphas ).
|
||||
iv_opt = gc_html_opt-strong ).
|
||||
ENDIF.
|
||||
IF iv_rstate IS NOT INITIAL OR iv_lstate IS NOT INITIAL. " Any changes
|
||||
lo_toolbar->add( iv_txt = 'Show diff'
|
||||
iv_act = |{ gc_action-go_diff }?key={ lv_key }|
|
||||
iv_opt = gc_html_opt-emphas ).
|
||||
iv_opt = gc_html_opt-strong ).
|
||||
ENDIF.
|
||||
CATCH lcx_exception ##NO_HANDLER.
|
||||
" authorization error or repository does not exist
|
||||
|
@ -299,10 +298,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
ELSE.
|
||||
lo_toolbar->add( iv_txt = 'Import ZIP'
|
||||
iv_act = |{ gc_action-zip_import }?{ lv_key }|
|
||||
iv_opt = gc_html_opt-emphas ).
|
||||
iv_opt = gc_html_opt-strong ).
|
||||
lo_toolbar->add( iv_txt = 'Export ZIP'
|
||||
iv_act = |{ gc_action-zip_export }?{ lv_key }|
|
||||
iv_opt = gc_html_opt-emphas ).
|
||||
iv_opt = gc_html_opt-strong ).
|
||||
ENDIF.
|
||||
|
||||
lo_toolbar->add( iv_txt = 'Advanced'
|
||||
|
@ -312,7 +311,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
|
||||
" Render ==========================================
|
||||
ro_html->add( '<div class="paddings">' ).
|
||||
ro_html->add( '<table width="100%"><tr>' ).
|
||||
ro_html->add( '<table class="w100"><tr>' ).
|
||||
|
||||
IF mv_show_folders = abap_true.
|
||||
ro_html->add( |<td class="current_dir">{ mv_cur_dir }</td>| ).
|
||||
|
@ -321,7 +320,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
ro_html->add( '<td class="right">' ).
|
||||
ro_html->add( lo_toolbar->render( ) ).
|
||||
ro_html->add( '</td>' ).
|
||||
ro_html->add( '<tr></table>' ).
|
||||
ro_html->add( '</tr></table>' ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
|
||||
|
@ -349,17 +348,17 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
|
||||
CASE is_item-obj_type.
|
||||
WHEN 'PROG' OR 'CLAS' OR 'FUGR'.
|
||||
rv_html = |<img src="img/code">|.
|
||||
rv_html = lcl_html=>icon( 'file-code/darkgrey' ).
|
||||
WHEN 'W3MI' OR 'W3HT'.
|
||||
rv_html = |<img src="img/bin">|.
|
||||
rv_html = lcl_html=>icon( 'file-binary/darkgrey' ).
|
||||
WHEN ''.
|
||||
rv_html = space. " no icon
|
||||
WHEN OTHERS.
|
||||
rv_html = |<img src="img/obj">|.
|
||||
rv_html = lcl_html=>icon( 'file/darkgrey' ).
|
||||
ENDCASE.
|
||||
|
||||
IF is_item-is_dir = abap_true.
|
||||
rv_html = |<img src="img/dir">|.
|
||||
rv_html = lcl_html=>icon( 'file-directory/darkgrey' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "get_item_icon
|
||||
|
@ -436,7 +435,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
|
||||
ro_html->add( '<div>' ).
|
||||
ro_html->add( |<span class="grey">{ is_item-changes } changes</span>| ).
|
||||
ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate
|
||||
iv2 = is_item-rstate ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ELSEIF is_item-changes > 0.
|
||||
|
@ -448,9 +448,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
ig_object = is_item ).
|
||||
|
||||
ro_html->add( '<div>' ).
|
||||
ro_html->add_anchor( iv_txt = |view diff ({ is_item-changes })|
|
||||
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
|
||||
ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ).
|
||||
ro_html->add_a( iv_txt = |view diff ({ is_item-changes })|
|
||||
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate
|
||||
iv2 = is_item-rstate ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ELSE.
|
||||
|
@ -461,10 +462,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
lv_difflink = lcl_html_action_utils=>file_encode(
|
||||
iv_key = mo_repo->get_key( )
|
||||
ig_file = ls_file ).
|
||||
ro_html->add_anchor(
|
||||
iv_txt = 'view diff'
|
||||
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
|
||||
ro_html->add( render_item_state( iv1 = ls_file-lstate iv2 = ls_file-rstate ) ).
|
||||
ro_html->add_a( iv_txt = 'view diff'
|
||||
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
|
||||
ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = ls_file-lstate
|
||||
iv2 = ls_file-rstate ) ).
|
||||
ELSE.
|
||||
ro_html->add( ' ' ).
|
||||
ENDIF.
|
||||
|
@ -490,7 +491,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<tr class="folder">' ).
|
||||
ro_html->add( |<td class="icon"><img src="img/dir"></td>| ).
|
||||
ro_html->add( |<td class="icon">{ lcl_html=>icon( 'dir' ) }</td>| ).
|
||||
ro_html->add( |<td class="object" colspan="2">{ build_dir_jump_link( '..' ) }</td>| ).
|
||||
IF mo_repo->is_offline( ) = abap_false.
|
||||
ro_html->add( |<td colspan="2"></td>| ). " Dummy for online
|
||||
|
@ -503,14 +504,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
|
||||
DATA: lv_path TYPE string,
|
||||
lv_encode TYPE string,
|
||||
lo_html TYPE REF TO lcl_html_helper.
|
||||
lo_html TYPE REF TO lcl_html.
|
||||
|
||||
lv_path = iv_path.
|
||||
REPLACE FIRST OCCURRENCE OF mv_cur_dir IN lv_path WITH ''.
|
||||
lv_encode = lcl_html_action_utils=>dir_encode( lv_path ).
|
||||
|
||||
CREATE OBJECT lo_html.
|
||||
lo_html->add_anchor( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ).
|
||||
lo_html->add_a( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ).
|
||||
rv_html = lo_html->mv_html.
|
||||
|
||||
ENDMETHOD. "build_dir_jump_link
|
||||
|
@ -518,14 +519,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
METHOD build_obj_jump_link.
|
||||
|
||||
DATA: lv_encode TYPE string,
|
||||
lo_html TYPE REF TO lcl_html_helper.
|
||||
lo_html TYPE REF TO lcl_html.
|
||||
|
||||
lv_encode = lcl_html_action_utils=>jump_encode( iv_obj_type = is_item-obj_type
|
||||
iv_obj_name = is_item-obj_name ).
|
||||
|
||||
CREATE OBJECT lo_html.
|
||||
lo_html->add_anchor( iv_txt = |{ is_item-obj_name }|
|
||||
iv_act = |{ gc_action-jump }?{ lv_encode }| ).
|
||||
lo_html->add_a( iv_txt = |{ is_item-obj_name }|
|
||||
iv_act = |{ gc_action-jump }?{ lv_encode }| ).
|
||||
rv_html = lo_html->mv_html.
|
||||
|
||||
ENDMETHOD. "build_obj_jump_link
|
||||
|
|
|
@ -2,18 +2,23 @@
|
|||
*& Include ZABAPGIT_PAGE_TUTORIAL
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_view_tutorial DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
CLASS lcl_gui_view_tutorial DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
INTERFACES lif_gui_page.
|
||||
ALIASES render FOR lif_gui_page~render.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS render_content
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html.
|
||||
|
||||
ENDCLASS. "lcl_gui_view_tutorial
|
||||
|
||||
CLASS lcl_gui_view_tutorial IMPLEMENTATION.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
ev_state = gc_event_state-not_handled.
|
||||
ENDMETHOD. " lif_gui_page~on_event.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
@ -34,10 +39,10 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION.
|
|||
_add '<h2>Adding and cloning repos</h2>'.
|
||||
_add '<p><ul>'.
|
||||
_add `<li>To clone a remote repo (e.g. from github) click `.
|
||||
ro_html->add_anchor( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ).
|
||||
ro_html->add_a( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ).
|
||||
_add ' from the top menu. This will copy a remote repo to your system.</li>'.
|
||||
_add `<li>To add a local package as a repo click `.
|
||||
ro_html->add_anchor( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ).
|
||||
ro_html->add_a( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ).
|
||||
_add ' from the top menu. This will track a repo which already exist in'.
|
||||
_add ' the system with abapGit. You''ll be able to attach it to remote origin'.
|
||||
_add ' or just serialize as a zip file</li>'.
|
||||
|
@ -45,18 +50,20 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION.
|
|||
|
||||
_add '<h2>Repository list and favorites</h2>'.
|
||||
_add '<p><ul>'.
|
||||
_add '<li>To choose a repo press <img src="img/burger"> at the favorite bar.</li>'.
|
||||
_add '<li>To favorite a repo click <img src="img/star-grey"> icon at repo toolbar.</li>'.
|
||||
ro_html->add( |<li>To choose a repo press {
|
||||
lcl_html=>icon( 'three-bars/blue' ) } at the favorite bar.</li>| ).
|
||||
ro_html->add( |<li>To favorite a repo click {
|
||||
lcl_html=>icon( 'star/darkgrey' ) } icon at repo toolbar.</li>| ).
|
||||
_add '</ul></p>'.
|
||||
|
||||
_add '<h2>abapGit related repositories</h2>'.
|
||||
_add '<p><ul>'.
|
||||
_add '<li>'.
|
||||
ro_html->add_anchor( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ).
|
||||
ro_html->add_a( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ).
|
||||
_add ' - To keep abapGit up-to-date (or also to contribute) you need to'.
|
||||
_add 'install it as a repository.</li>'.
|
||||
_add '<li>'.
|
||||
ro_html->add_anchor( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ).
|
||||
ro_html->add_a( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ).
|
||||
_add ' - you can also install plugins to extend supported object types</li>'.
|
||||
_add '</ul></p>'.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user