From 31553ac03a92d5c86f37dd3cd326b1b3ebffef96 Mon Sep 17 00:00:00 2001
From: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Date: Mon, 3 Mar 2025 22:01:21 +0100
Subject: [PATCH] v1.4.6 (#93)
---
.abapgit.xml | 2 +-
CHANGELOG.md | 10 +-
installer/zmbtinst.abap | 8643 +++++++++++++++++++++++++++------------
3 files changed, 5952 insertions(+), 2703 deletions(-)
diff --git a/.abapgit.xml b/.abapgit.xml
index 4679391..21fa79b 100644
--- a/.abapgit.xml
+++ b/.abapgit.xml
@@ -15,7 +15,7 @@
/MBTOOLS/CL_TOOL_BC=>C_TOOL-VERSION
mbt-package-manager
- 1.4.5
+ 1.4.6
Package Manager for Marc Bernard Tools
/MBTOOLS/BC
/MBTOOLS/MBT_PACKAGE_MANAGER_TN
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 632d94d..5363636 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,13 @@ and [ISO Date Format](https://www.iso.org/iso-8601-date-and-time-format.html).
## [Unreleased]
+## Version [1.4.6] - 2025-03-03
+
+### Fixed
+
+- Fix application setup at first start
+- Update installer to recent abapGit object types
+
## Version [1.4.5] - 2024-04-05
### Changed
@@ -139,7 +146,8 @@ Launch Release
Initial Release. For details, seeĀ [Features](https://marcbernardtools.com/docs/marc-bernard-tools/features).
-[Unreleased]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.5...main
+[Unreleased]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.6...main
+[1.4.6]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.5...1.4.6
[1.4.5]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.4...1.4.5
[1.4.4]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.3...1.4.4
[1.4.3]: https://github.com/Marc-Bernard-Tools/MBT-Package-Manager/compare/1.4.2...1.4.3
diff --git a/installer/zmbtinst.abap b/installer/zmbtinst.abap
index d2522af..13263e0 100644
--- a/installer/zmbtinst.abap
+++ b/installer/zmbtinst.abap
@@ -27,16 +27,19 @@ REPORT zmbtinst.
************************************************************************
CONSTANTS:
- c_version TYPE string VALUE '1.4.4',
+ c_version TYPE string VALUE '1.4.6',
c_home TYPE string VALUE 'https://marcbernardtools.com/' ##NO_TEXT,
c_github TYPE string VALUE 'github.com' ##NO_TEXT.
+****** INTERFACES DEFERRED ******
+
INTERFACE zif_abapgit_aff_types_v1 DEFERRED.
INTERFACE zif_abapgit_git_definitions DEFERRED.
INTERFACE zif_abapgit_definitions DEFERRED.
INTERFACE zif_abapgit_ajson_types DEFERRED.
INTERFACE zif_abapgit_ajson DEFERRED.
INTERFACE zif_abapgit_ajson_filter DEFERRED.
+INTERFACE zif_abapgit_ajson_mapping DEFERRED.
INTERFACE zif_abapgit_cts_api DEFERRED.
INTERFACE zif_abapgit_data_config DEFERRED.
INTERFACE zif_abapgit_data_deserializer DEFERRED.
@@ -44,7 +47,6 @@ INTERFACE zif_abapgit_data_serializer DEFERRED.
INTERFACE zif_abapgit_data_supporter DEFERRED.
INTERFACE zif_abapgit_default_transport DEFERRED.
INTERFACE zif_abapgit_sap_package DEFERRED.
-INTERFACE zif_abapinst_dot_abapgit DEFERRED.
INTERFACE zif_abapgit_dot_abapgit DEFERRED.
INTERFACE zif_abapgit_environment DEFERRED.
INTERFACE zif_abapgit_persistence DEFERRED.
@@ -62,6 +64,7 @@ INTERFACE zif_abapgit_sap_report DEFERRED.
INTERFACE zif_abapgit_xml_output DEFERRED.
INTERFACE zif_abapgit_lang_definitions DEFERRED.
INTERFACE zif_abapgit_oo_object_fnc DEFERRED.
+INTERFACE zif_abapgit_object_enho DEFERRED.
INTERFACE zif_abapgit_aff_oo_types_v1 DEFERRED.
INTERFACE zif_abapgit_aff_intf_v1 DEFERRED.
INTERFACE zif_abapgit_object_tabl DEFERRED.
@@ -70,12 +73,14 @@ INTERFACE zif_abapgit_progress DEFERRED.
INTERFACE zif_abapgit_sap_namespace DEFERRED.
INTERFACE zif_abapgit_tadir DEFERRED.
INTERFACE zif_abapinst_definitions DEFERRED.
-INTERFACE zif_abapgit_ajson_mapping DEFERRED.
+INTERFACE zif_abapinst_dot_abapgit DEFERRED.
INTERFACE zif_abapgit_apack_definitions DEFERRED.
INTERFACE zif_abapgit_function_module DEFERRED.
-INTERFACE zif_abapgit_object_enho DEFERRED.
INTERFACE zif_abapgit_object_enhs DEFERRED.
INTERFACE zif_abapgit_version DEFERRED.
+
+****** EXCEPTIONS ******
+
CLASS zcx_abapgit_not_found DEFINITION
INHERITING FROM cx_static_check
@@ -92,17 +97,15 @@ CLASS zcx_abapgit_not_found DEFINITION
PRIVATE SECTION.
ENDCLASS.
-
-
CLASS zcx_abapgit_not_found IMPLEMENTATION.
-
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor(
textid = textid
previous = previous ).
ENDMETHOD.
ENDCLASS.
+
class zcx_abapgit_ajson_error definition
inheriting from CX_STATIC_CHECK
@@ -167,11 +170,8 @@ private section.
end of ty_message_parts.
ENDCLASS.
-
-
CLASS zcx_abapgit_ajson_error IMPLEMENTATION.
-
method CONSTRUCTOR.
CALL METHOD SUPER->CONSTRUCTOR
EXPORTING
@@ -192,7 +192,6 @@ else.
endif.
endmethod.
-
method raise.
data lx type ref to zcx_abapgit_ajson_error.
@@ -205,7 +204,6 @@ method raise.
endmethod.
-
method set_location.
data ls_msg type ty_message_parts.
@@ -240,6 +238,7 @@ method set_location.
endmethod.
ENDCLASS.
+
"! abapGit general error
CLASS zcx_abapgit_exception DEFINITION
@@ -346,11 +345,6 @@ CLASS zcx_abapgit_exception DEFINITION
CONSTANTS c_generic_error_msg TYPE string VALUE `An error occurred (ZCX_ABAPGIT_EXCEPTION)`.
- CLASS-METHODS split_text_to_symsg
- IMPORTING
- !iv_text TYPE string
- RETURNING
- VALUE(rs_msg) TYPE symsg .
METHODS save_callstack .
METHODS itf_to_string
IMPORTING
@@ -376,11 +370,8 @@ CLASS zcx_abapgit_exception DEFINITION
VALUE(rv_result) TYPE string.
ENDCLASS.
-
-
CLASS zcx_abapgit_exception IMPLEMENTATION.
-
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor( previous = previous ).
@@ -404,7 +395,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_source_position.
FIELD-SYMBOLS: LIKE LINE OF mt_callstack.
@@ -425,7 +415,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_t100_longtext_itf.
DATA: lv_docu_key TYPE doku_obj.
@@ -466,7 +455,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD if_message~get_longtext.
DATA: lv_preserve_newlines_handled TYPE abap_bool VALUE abap_false.
@@ -484,7 +472,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD itf_to_string.
CONSTANTS: lc_format_section TYPE string VALUE 'U1'.
@@ -492,7 +479,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
DATA:
lt_stream TYPE TABLE OF tdline,
lt_string TYPE TABLE OF string,
- lv_string LIKE LINE OF lt_string,
lt_itf TYPE tline_tab,
lv_has_content TYPE abap_bool,
lv_tabix_from TYPE syst-tabix,
@@ -549,32 +535,20 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
itf_text = lt_itf
text_stream = lt_stream.
- LOOP AT lt_string INTO lv_string.
- IF sy-tabix = 1.
- rv_result = lv_string.
- ELSE.
- CONCATENATE rv_result lv_string
- INTO rv_result
- SEPARATED BY cl_abap_char_utilities=>newline.
- ENDIF.
-
- ENDLOOP.
+ rv_result = concat_lines_of(
+ table = lt_string
+ sep = cl_abap_char_utilities=>newline ).
ENDMETHOD.
-
METHOD raise.
- DATA lv_text TYPE string.
-
IF iv_text IS INITIAL.
- lv_text = c_generic_error_msg.
+ cl_message_helper=>set_msg_vars_for_clike( c_generic_error_msg ).
ELSE.
- lv_text = iv_text.
+ cl_message_helper=>set_msg_vars_for_clike( iv_text ).
ENDIF.
- split_text_to_symsg( lv_text ).
-
raise_t100(
ii_log = ii_log
ix_previous = ix_previous
@@ -582,7 +556,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise_t100.
DATA: ls_t100_key TYPE scx_t100key.
@@ -609,7 +582,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
longtext = iv_longtext.
ENDMETHOD.
-
METHOD raise_with_text.
raise(
iv_text = ix_previous->get_text( )
@@ -617,7 +589,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
iv_longtext = iv_longtext ).
ENDMETHOD.
-
METHOD remove_empty_section.
IF iv_tabix_to BETWEEN iv_tabix_from AND lines( ct_itf ).
DELETE ct_itf FROM iv_tabix_from TO iv_tabix_to.
@@ -626,7 +597,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD remove_newlines_from_string.
rv_result = iv_string.
@@ -636,7 +606,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
ENDMETHOD.
-
METHOD replace_section_head_with_text.
CASE cs_itf-tdline.
@@ -652,7 +621,6 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD save_callstack.
FIELD-SYMBOLS: LIKE LINE OF mt_callstack.
@@ -681,25 +649,8 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDLOOP.
ENDMETHOD.
-
-
- METHOD split_text_to_symsg.
-
- DATA ls_msg TYPE symsg.
-
- cl_message_helper=>set_msg_vars_for_clike( iv_text ).
- ls_msg-msgv1 = sy-msgv1.
- ls_msg-msgv2 = sy-msgv2.
- ls_msg-msgv3 = sy-msgv3.
- ls_msg-msgv4 = sy-msgv4.
-
- " Set syst using generic error message
- MESSAGE e001(00) WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO null.
-
- rs_msg = ls_msg.
-
- ENDMETHOD.
ENDCLASS.
+
CLASS zcx_abapgit_cancel DEFINITION
INHERITING FROM zcx_abapgit_exception
@@ -722,11 +673,8 @@ CLASS zcx_abapgit_cancel DEFINITION
PRIVATE SECTION.
ENDCLASS.
-
-
CLASS zcx_abapgit_cancel IMPLEMENTATION.
-
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor(
previous = previous
@@ -746,6 +694,7 @@ CLASS zcx_abapgit_cancel IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.
+
CLASS zcx_abapinst_exception DEFINITION
INHERITING FROM cx_static_check
@@ -762,7 +711,6 @@ CLASS zcx_abapinst_exception DEFINITION
what_to_do TYPE string VALUE `Procedure`,
sys_admin TYPE string VALUE `System administration`,
END OF gc_section_text,
-
BEGIN OF gc_section_token,
cause TYPE string VALUE `&CAUSE&`,
system_response TYPE string VALUE `&SYSTEM_RESPONSE&`,
@@ -830,7 +778,6 @@ CLASS zcx_abapinst_exception DEFINITION
METHODS get_source_position REDEFINITION.
METHODS if_message~get_longtext REDEFINITION.
-
PROTECTED SECTION.
PRIVATE SECTION.
@@ -865,11 +812,8 @@ CLASS zcx_abapinst_exception DEFINITION
ENDCLASS.
-
-
CLASS zcx_abapinst_exception IMPLEMENTATION.
-
METHOD constructor ##ADT_SUPPRESS_GENERATION.
CALL METHOD super->constructor
@@ -891,7 +835,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_source_position.
FIELD-SYMBOLS TYPE abap_callstack_line.
@@ -911,7 +854,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_t100_longtext_itf.
DATA lv_docu_key TYPE doku_obj.
@@ -952,7 +894,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD if_message~get_longtext.
result = super->get_longtext( ).
@@ -965,7 +906,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD itf_to_string.
CONSTANTS lc_format_section TYPE string VALUE 'U1'.
@@ -1041,7 +981,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise.
DATA lv_text TYPE string.
@@ -1058,7 +997,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise_t100.
DATA ls_t100_key TYPE scx_t100key.
@@ -1085,14 +1023,12 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise_with_text.
raise(
iv_text = ix_previous->get_text( )
ix_previous = ix_previous ).
ENDMETHOD.
-
METHOD remove_empty_section.
IF iv_tabix_to BETWEEN iv_tabix_from AND lines( ct_itf ).
DELETE ct_itf FROM iv_tabix_from TO iv_tabix_to.
@@ -1101,7 +1037,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD replace_section_head_with_text.
CASE cs_itf-tdline.
@@ -1117,7 +1052,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD save_callstack.
FIELD-SYMBOLS TYPE abap_callstack_line.
@@ -1146,7 +1080,6 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
-
METHOD split_text_to_symsg.
CONSTANTS:
@@ -1200,11 +1133,16 @@ CLASS zcx_abapinst_exception IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
+
+****** CLASSES DEFERRED ******
+
CLASS zcl_abapgit_abap_language_vers DEFINITION DEFERRED.
CLASS zcl_abapgit_adt_link DEFINITION DEFERRED.
CLASS zcl_abapgit_aff_registry DEFINITION DEFERRED.
CLASS zcl_abapgit_ajson DEFINITION DEFERRED.
CLASS zcl_abapgit_ajson_filter_lib DEFINITION DEFERRED.
+CLASS zcl_abapgit_ajson_mapping DEFINITION DEFERRED.
+CLASS zcl_abapgit_ajson_utilities DEFINITION DEFERRED.
CLASS zcl_abapgit_convert DEFINITION DEFERRED.
CLASS zcl_abapgit_cts_api DEFINITION DEFERRED.
CLASS zcl_abapgit_data_config DEFINITION DEFERRED.
@@ -1227,6 +1165,7 @@ CLASS zcl_abapgit_gui_jumper DEFINITION DEFERRED.
CLASS zcl_abapgit_hash DEFINITION DEFERRED.
CLASS zcl_abapgit_i18n_params DEFINITION DEFERRED.
CLASS zcl_abapgit_item_graph DEFINITION DEFERRED.
+CLASS zcl_abapgit_json_path DEFINITION DEFERRED.
CLASS zcl_abapgit_language DEFINITION DEFERRED.
CLASS zcl_abapgit_log DEFINITION DEFERRED.
CLASS zcl_abapgit_longtexts DEFINITION DEFERRED.
@@ -1290,6 +1229,7 @@ CLASS zcl_abapgit_path DEFINITION DEFERRED.
CLASS zcl_abapgit_persistence_db DEFINITION DEFERRED.
CLASS zcl_abapgit_po_file DEFINITION DEFERRED.
CLASS zcl_abapgit_progress DEFINITION DEFERRED.
+CLASS zcl_abapgit_properties_file DEFINITION DEFERRED.
CLASS zcl_abapgit_sap_namespace DEFINITION DEFERRED.
CLASS zcl_abapgit_sap_package DEFINITION DEFERRED.
CLASS zcl_abapgit_sap_report DEFINITION DEFERRED.
@@ -1302,6 +1242,7 @@ CLASS zcl_abapgit_xml_pretty DEFINITION DEFERRED.
CLASS zcl_abapinst_factory DEFINITION DEFERRED.
CLASS zcl_abapinst_file DEFINITION DEFERRED.
CLASS zcl_abapinst_popups DEFINITION DEFERRED.
+CLASS zcl_tar DEFINITION DEFERRED.
CLASS zcl_abapinst_installer DEFINITION DEFERRED.
CLASS zcl_abapinst_log_viewer DEFINITION DEFERRED.
CLASS zcl_abapinst_objects DEFINITION DEFERRED.
@@ -1311,6 +1252,9 @@ CLASS zcl_abapinst_requirements DEFINITION DEFERRED.
CLASS zcl_abapinst_screen DEFINITION DEFERRED.
CLASS zcl_abapinst_setup DEFINITION DEFERRED.
CLASS zcl_abapinst_textpool DEFINITION DEFERRED.
+
+****** INTERFACES ******
+
INTERFACE zif_abapgit_aff_types_v1 .
TYPES ty_format_version TYPE string.
@@ -1371,8 +1315,8 @@ INTERFACE zif_abapgit_aff_types_v1 .
TYPES:
BEGIN OF ty_header_60_no_abap_lv,
- description TYPE ty_description_60,
- original_language TYPE ty_original_language,
+ description TYPE ty_description_60,
+ original_language TYPE ty_original_language,
END OF ty_header_60_no_abap_lv.
TYPES:
@@ -1412,6 +1356,7 @@ INTERFACE zif_abapgit_aff_types_v1 .
END OF co_sign.
ENDINTERFACE.
+
INTERFACE zif_abapgit_git_definitions
.
* this interface is self contained
@@ -1492,10 +1437,11 @@ INTERFACE zif_abapgit_git_definitions
CONSTANTS:
BEGIN OF c_chmod,
- file TYPE ty_chmod VALUE '100644',
- executable TYPE ty_chmod VALUE '100755',
- dir TYPE ty_chmod VALUE '40000 ',
- submodule TYPE ty_chmod VALUE '160000',
+ file TYPE ty_chmod VALUE '100644',
+ executable TYPE ty_chmod VALUE '100755',
+ dir TYPE ty_chmod VALUE '40000 ',
+ submodule TYPE ty_chmod VALUE '160000',
+ symbolic_link TYPE ty_chmod VALUE '120000',
END OF c_chmod .
TYPES:
@@ -1562,6 +1508,7 @@ INTERFACE zif_abapgit_git_definitions
END OF c_git_branch.
ENDINTERFACE.
+
INTERFACE zif_abapgit_definitions
.
@@ -1796,6 +1743,8 @@ INTERFACE zif_abapgit_definitions
hide_sapgui_hint TYPE abap_bool,
activate_wo_popup TYPE abap_bool,
label_colors TYPE string,
+ default_git_uname TYPE string,
+ default_git_email TYPE string,
END OF ty_s_user_settings .
TYPES:
BEGIN OF ty_list_settings,
@@ -1830,11 +1779,6 @@ INTERFACE zif_abapgit_definitions
prerelase TYPE string,
prerelase_patch TYPE i,
END OF ty_version.
- TYPES:
- ty_deserialization_step TYPE string.
- TYPES:
- ty_deserialization_step_tt TYPE STANDARD TABLE OF ty_deserialization_step
- WITH DEFAULT KEY .
TYPES ty_sci_result TYPE c LENGTH 1.
CONSTANTS:
BEGIN OF c_sci_result,
@@ -1935,7 +1879,7 @@ INTERFACE zif_abapgit_definitions
sponsor TYPE string VALUE 'sponsor',
toggle_favorites TYPE string VALUE 'toggle_favorites',
url TYPE string VALUE 'url',
- yank_to_clipboard TYPE string VALUE 'yank_to_clipboard',
+ where_used TYPE string VALUE 'where_used',
zip_export TYPE string VALUE 'zip_export',
zip_export_transport TYPE string VALUE 'zip_export_transport',
zip_import TYPE string VALUE 'zip_import',
@@ -1982,6 +1926,7 @@ INTERFACE zif_abapgit_definitions
END OF ty_i18n_params .
TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr.
ENDINTERFACE.
+
INTERFACE zif_abapgit_ajson_types
.
@@ -2000,12 +1945,12 @@ INTERFACE zif_abapgit_ajson_types
TYPES:
BEGIN OF ty_node,
- path TYPE string,
- name TYPE string,
- type TYPE ty_node_type,
- value TYPE string,
- index TYPE i,
- order TYPE i,
+ path TYPE string,
+ name TYPE string,
+ type TYPE ty_node_type,
+ value TYPE string,
+ index TYPE i,
+ order TYPE i,
children TYPE i,
END OF ty_node.
TYPES:
@@ -2023,6 +1968,7 @@ INTERFACE zif_abapgit_ajson_types
END OF ty_path_name.
ENDINTERFACE.
+
INTERFACE zif_abapgit_ajson
.
@@ -2032,9 +1978,9 @@ INTERFACE zif_abapgit_ajson
TYPES:
BEGIN OF ty_opts,
- read_only TYPE abap_bool,
- keep_item_order TYPE abap_bool,
- format_datetime TYPE abap_bool,
+ read_only TYPE abap_bool,
+ keep_item_order TYPE abap_bool,
+ format_datetime TYPE abap_bool,
to_abap_corresponding_only TYPE abap_bool,
END OF ty_opts.
@@ -2051,14 +1997,14 @@ INTERFACE zif_abapgit_ajson
zcx_abapgit_ajson_error.
METHODS filter
IMPORTING
- ii_filter TYPE REF TO zif_abapgit_ajson_filter
+ ii_filter TYPE REF TO zif_abapgit_ajson_filter
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS map
IMPORTING
- ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
+ ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2072,12 +2018,12 @@ INTERFACE zif_abapgit_ajson
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS format_datetime
IMPORTING
- iv_use_iso TYPE abap_bool DEFAULT abap_true
+ iv_use_iso TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS to_abap_corresponding_only
IMPORTING
- iv_enable TYPE abap_bool DEFAULT abap_true
+ iv_enable TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS opts
@@ -2092,67 +2038,67 @@ INTERFACE zif_abapgit_ajson
METHODS exists
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_exists) TYPE abap_bool.
METHODS members
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rt_members) TYPE string_table.
METHODS get
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS get_node_type
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_node_type) TYPE zif_abapgit_ajson_types=>ty_node_type.
METHODS get_boolean
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE abap_bool.
METHODS get_integer
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE i.
METHODS get_number
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE f.
METHODS get_date
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE d.
METHODS get_timestamp
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE timestamp.
METHODS get_string
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS slice
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
@@ -2160,13 +2106,13 @@ INTERFACE zif_abapgit_ajson
IMPORTING
iv_corresponding TYPE abap_bool DEFAULT abap_false
EXPORTING
- ev_container TYPE any
+ ev_container TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS array_to_string_table
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rt_string_table) TYPE string_table
RAISING
@@ -2180,18 +2126,18 @@ INTERFACE zif_abapgit_ajson
METHODS set
IMPORTING
- iv_path TYPE string
- iv_val TYPE any
+ iv_path TYPE string
+ iv_val TYPE any
iv_ignore_empty TYPE abap_bool DEFAULT abap_true
- iv_node_type TYPE zif_abapgit_ajson_types=>ty_node_type OPTIONAL
+ iv_node_type TYPE zif_abapgit_ajson_types=>ty_node_type OPTIONAL
RETURNING
- VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
+ VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS setx
IMPORTING
- iv_param TYPE string
+ iv_param TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2199,8 +2145,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_boolean
IMPORTING
- iv_path TYPE string
- iv_val TYPE any
+ iv_path TYPE string
+ iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2208,8 +2154,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_string
IMPORTING
- iv_path TYPE string
- iv_val TYPE clike
+ iv_path TYPE string
+ iv_val TYPE clike
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2217,8 +2163,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_integer
IMPORTING
- iv_path TYPE string
- iv_val TYPE i
+ iv_path TYPE string
+ iv_val TYPE i
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2226,8 +2172,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_date
IMPORTING
- iv_path TYPE string
- iv_val TYPE d
+ iv_path TYPE string
+ iv_val TYPE d
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2235,8 +2181,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_timestamp
IMPORTING
- iv_path TYPE string
- iv_val TYPE timestamp
+ iv_path TYPE string
+ iv_val TYPE timestamp
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2244,7 +2190,7 @@ INTERFACE zif_abapgit_ajson
METHODS set_null
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2252,7 +2198,7 @@ INTERFACE zif_abapgit_ajson
METHODS delete
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2260,8 +2206,8 @@ INTERFACE zif_abapgit_ajson
METHODS touch_array
IMPORTING
- iv_path TYPE string
- iv_clear TYPE abap_bool DEFAULT abap_false
+ iv_path TYPE string
+ iv_clear TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2269,8 +2215,8 @@ INTERFACE zif_abapgit_ajson
METHODS push
IMPORTING
- iv_path TYPE string
- iv_val TYPE any
+ iv_path TYPE string
+ iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
@@ -2278,13 +2224,14 @@ INTERFACE zif_abapgit_ajson
METHODS stringify
IMPORTING
- iv_indent TYPE i DEFAULT 0
+ iv_indent TYPE i DEFAULT 0
RETURNING
VALUE(rv_json) TYPE string
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.
+
INTERFACE zif_abapgit_ajson_filter
.
@@ -2300,18 +2247,63 @@ INTERFACE zif_abapgit_ajson_filter
METHODS keep_node
IMPORTING
- is_node TYPE zif_abapgit_ajson_types=>ty_node
- iv_visit TYPE ty_visit_type DEFAULT visit_type-value
+ is_node TYPE zif_abapgit_ajson_types=>ty_node
+ iv_visit TYPE ty_visit_type DEFAULT visit_type-value
RETURNING
VALUE(rv_keep) TYPE abap_bool
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.
+
+INTERFACE zif_abapgit_ajson_mapping
+ .
+
+ TYPES:
+ BEGIN OF ty_mapping_field, " deprecated, will be removed
+ abap TYPE string,
+ json TYPE string,
+ END OF ty_mapping_field,
+ ty_mapping_fields TYPE STANDARD TABLE OF ty_mapping_field
+ WITH UNIQUE SORTED KEY abap COMPONENTS abap
+ WITH UNIQUE SORTED KEY json COMPONENTS json.
+
+ TYPES:
+ BEGIN OF ty_rename,
+ from TYPE string,
+ to TYPE string,
+ END OF ty_rename,
+ tty_rename_map TYPE STANDARD TABLE OF ty_rename
+ WITH UNIQUE SORTED KEY by_name COMPONENTS from.
+
+ TYPES:
+ ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson_mapping.
+
+ METHODS to_abap " deprecated, will be removed
+ IMPORTING
+ !iv_path TYPE string
+ !iv_name TYPE string
+ RETURNING
+ VALUE(rv_result) TYPE string.
+
+ METHODS to_json " deprecated, will be removed
+ IMPORTING
+ !iv_path TYPE string
+ !iv_name TYPE string
+ RETURNING
+ VALUE(rv_result) TYPE string.
+
+ METHODS rename_node
+ IMPORTING
+ !is_node TYPE zif_abapgit_ajson_types=>ty_node
+ CHANGING
+ !cv_name TYPE zif_abapgit_ajson_types=>ty_node-name.
+
+ENDINTERFACE.
+
INTERFACE zif_abapgit_cts_api
.
-
TYPES:
BEGIN OF ty_transport,
obj_type TYPE tadir-object,
@@ -2370,9 +2362,9 @@ INTERFACE zif_abapgit_cts_api
METHODS create_transport_entries
IMPORTING
!iv_transport TYPE trkorr
- !it_table_ins TYPE ANY TABLE
- !it_table_upd TYPE ANY TABLE
- !it_table_del TYPE ANY TABLE
+ !it_table_ins TYPE ANY TABLE OPTIONAL
+ !it_table_upd TYPE ANY TABLE OPTIONAL
+ !it_table_del TYPE ANY TABLE OPTIONAL
!iv_tabname TYPE tabname
RAISING
zcx_abapgit_exception .
@@ -2466,15 +2458,16 @@ INTERFACE zif_abapgit_cts_api
METHODS change_transport_type
IMPORTING
- !iv_transport_request TYPE trkorr
- !iv_transport_type TYPE trfunction
+ !iv_transport_request TYPE trkorr
+ !iv_transport_type_from TYPE trfunction
+ !iv_transport_type_to TYPE trfunction
RAISING
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_data_config
.
-
TYPES:
ty_data_type TYPE c LENGTH 4 .
TYPES:
@@ -2527,10 +2520,10 @@ INTERFACE zif_abapgit_data_config
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_data_deserializer
.
-
TYPES: BEGIN OF ty_result,
type TYPE zif_abapgit_data_config=>ty_config-type,
name TYPE zif_abapgit_data_config=>ty_config-name,
@@ -2569,10 +2562,10 @@ INTERFACE zif_abapgit_data_deserializer
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_data_serializer
.
-
METHODS serialize
IMPORTING
!ii_config TYPE REF TO zif_abapgit_data_config
@@ -2581,6 +2574,7 @@ INTERFACE zif_abapgit_data_serializer
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_data_supporter
.
@@ -2600,6 +2594,7 @@ INTERFACE zif_abapgit_data_supporter
VALUE(rv_supported) TYPE abap_bool.
ENDINTERFACE.
+
INTERFACE zif_abapgit_default_transport .
TYPES: BEGIN OF ty_get,
@@ -2624,10 +2619,10 @@ INTERFACE zif_abapgit_default_transport .
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_sap_package
.
-
TYPES:
ty_devclass_tt TYPE STANDARD TABLE OF devclass WITH DEFAULT KEY .
@@ -2667,14 +2662,10 @@ INTERFACE zif_abapgit_sap_package
zcx_abapgit_exception .
METHODS read_description
RETURNING
- VALUE(rv_description) TYPE string
- RAISING
- zcx_abapgit_exception .
+ VALUE(rv_description) TYPE string.
METHODS read_responsible
RETURNING
- VALUE(rv_responsible) TYPE usnam
- RAISING
- zcx_abapgit_exception .
+ VALUE(rv_responsible) TYPE usnam.
METHODS create_child
IMPORTING
!iv_child TYPE devclass
@@ -2694,38 +2685,7 @@ INTERFACE zif_abapgit_sap_package
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
-INTERFACE zif_abapinst_dot_abapgit .
- TYPES:
- " Former APACK
- BEGIN OF ty_dependency,
- name TYPE string,
- version TYPE string,
- sem_version TYPE zif_abapgit_definitions=>ty_version,
- git_url TYPE string,
- target_package TYPE devclass,
- END OF ty_dependency,
- ty_dependencies TYPE STANDARD TABLE OF ty_dependency WITH NON-UNIQUE DEFAULT KEY.
-
- TYPES:
- BEGIN OF ty_descriptor,
- name TYPE string,
- version TYPE string,
- sem_version TYPE zif_abapgit_definitions=>ty_version,
- description TYPE string,
- git_url TYPE string,
- target_package TYPE devclass,
- logo TYPE string,
- END OF ty_descriptor.
-
- TYPES:
- BEGIN OF ty_packaging.
- INCLUDE TYPE ty_descriptor.
- TYPES:
- dependencies TYPE ty_dependencies,
- END OF ty_packaging.
-
-ENDINTERFACE.
INTERFACE zif_abapgit_dot_abapgit .
TYPES:
@@ -2750,7 +2710,6 @@ INTERFACE zif_abapgit_dot_abapgit .
version_constant TYPE string,
abap_language_version TYPE string,
original_system TYPE tadir-srcsystem,
- packaging TYPE zif_abapinst_dot_abapgit=>ty_packaging,
END OF ty_dot_abapgit .
CONSTANTS:
@@ -2769,6 +2728,7 @@ INTERFACE zif_abapgit_dot_abapgit .
END OF c_abap_language_version.
ENDINTERFACE.
+
INTERFACE zif_abapgit_environment
.
TYPES:
@@ -2810,8 +2770,17 @@ INTERFACE zif_abapgit_environment
iv_group TYPE clike
RETURNING
VALUE(rv_free_work_processes) TYPE i.
+ METHODS check_parallel_processing
+ IMPORTING
+ iv_group TYPE clike
+ RETURNING
+ VALUE(rv_checked) TYPE abap_bool.
+ METHODS get_available_user_sessions
+ RETURNING
+ VALUE(rv_sessions) TYPE i.
ENDINTERFACE.
+
INTERFACE zif_abapgit_persistence .
TYPES:
@@ -2845,6 +2814,7 @@ INTERFACE zif_abapgit_persistence .
transport_request TYPE trkorr,
customizing_request TYPE trkorr,
flow TYPE abap_bool,
+ exclude_remote_paths TYPE string_table,
END OF ty_local_settings.
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.
@@ -2892,8 +2862,8 @@ INTERFACE zif_abapgit_persistence .
TYPES: ty_repo_keys TYPE STANDARD TABLE OF ty_repo-key WITH DEFAULT KEY.
ENDINTERFACE.
-INTERFACE zif_abapgit_objects
- .
+
+INTERFACE zif_abapgit_objects .
TYPES:
BEGIN OF ty_serialization,
@@ -2909,9 +2879,15 @@ INTERFACE zif_abapgit_objects
END OF ty_deserialization .
TYPES:
ty_deserialization_tt TYPE STANDARD TABLE OF ty_deserialization WITH DEFAULT KEY .
+ TYPES:
+ ty_types_tt TYPE SORTED TABLE OF tadir-object WITH UNIQUE KEY table_line.
+ TYPES:
+ ty_deserialization_step TYPE string.
+ TYPES:
+ ty_deserialization_step_tt TYPE STANDARD TABLE OF ty_deserialization_step WITH DEFAULT KEY.
TYPES:
BEGIN OF ty_step_data,
- step_id TYPE zif_abapgit_definitions=>ty_deserialization_step,
+ step_id TYPE ty_deserialization_step,
order TYPE i,
descr TYPE string,
syntax_check TYPE abap_bool,
@@ -2935,18 +2911,19 @@ INTERFACE zif_abapgit_objects
END OF c_deserialize_action.
ENDINTERFACE.
-INTERFACE zif_abapgit_exit .
+INTERFACE zif_abapgit_exit .
TYPES:
BEGIN OF ty_ci_repo,
name TYPE string,
clone_url TYPE string,
END OF ty_ci_repo.
- TYPES:
- ty_ci_repos TYPE TABLE OF ty_ci_repo.
- TYPES:
- ty_object_types TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY.
+
+ TYPES ty_ci_repos TYPE STANDARD TABLE OF ty_ci_repo WITH DEFAULT KEY.
+
+ TYPES ty_object_types TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY.
+
TYPES:
BEGIN OF ty_class_key,
clsname TYPE abap_classname,
@@ -2962,47 +2939,58 @@ INTERFACE zif_abapgit_exit .
!cv_display_url TYPE csequence
RAISING
zcx_abapgit_exception.
+
METHODS adjust_display_filename
IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
!iv_filename TYPE string
RETURNING
VALUE(rv_filename) TYPE string.
+
METHODS allow_sap_objects
RETURNING
VALUE(rv_allowed) TYPE abap_bool.
+
METHODS change_local_host
CHANGING
!ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt.
+
METHODS change_max_parallel_processes
IMPORTING
!iv_package TYPE devclass
CHANGING
!cv_max_processes TYPE i.
+
METHODS change_proxy_authentication
IMPORTING
!iv_repo_url TYPE csequence
CHANGING
!cv_proxy_authentication TYPE abap_bool.
+
METHODS change_proxy_port
IMPORTING
!iv_repo_url TYPE csequence
CHANGING
!cv_proxy_port TYPE string.
+
METHODS change_proxy_url
IMPORTING
!iv_repo_url TYPE csequence
CHANGING
!cv_proxy_url TYPE string.
+
METHODS change_rfc_server_group
CHANGING
!cv_group TYPE rzlli_apcl.
+
METHODS change_supported_data_objects
CHANGING
!ct_objects TYPE zif_abapgit_data_supporter=>ty_objects.
+
METHODS change_supported_object_types
CHANGING
!ct_types TYPE ty_object_types.
+
METHODS change_tadir
IMPORTING
!iv_package TYPE devclass
@@ -3012,6 +3000,7 @@ INTERFACE zif_abapgit_exit .
!iv_only_local_objects TYPE abap_bool DEFAULT abap_false
CHANGING
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
+
METHODS create_http_client
IMPORTING
!iv_url TYPE string
@@ -3019,6 +3008,7 @@ INTERFACE zif_abapgit_exit .
VALUE(ri_client) TYPE REF TO if_http_client
RAISING
zcx_abapgit_exception.
+
METHODS custom_serialize_abap_clif
IMPORTING
!is_class_key TYPE ty_class_key
@@ -3027,33 +3017,44 @@ INTERFACE zif_abapgit_exit .
VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt
RAISING
zcx_abapgit_exception.
+
METHODS deserialize_postprocess
IMPORTING
!is_step TYPE zif_abapgit_objects=>ty_step_data
!ii_log TYPE REF TO zif_abapgit_log.
+
METHODS determine_transport_request
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
CHANGING
!cv_transport_request TYPE trkorr.
+
+ METHODS enhance_any_toolbar
+ IMPORTING
+ !io_menu TYPE REF TO zcl_abapgit_html_toolbar.
+
METHODS enhance_repo_toolbar
IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar
!iv_key TYPE zif_abapgit_persistence=>ty_value
!iv_act TYPE string.
+
METHODS get_ci_tests
IMPORTING
!iv_object TYPE tadir-object
CHANGING
!ct_ci_repos TYPE ty_ci_repos.
+
METHODS get_ssl_id
RETURNING
VALUE(rv_ssl_id) TYPE ssfapplssl.
+
METHODS http_client
IMPORTING
!iv_url TYPE string
!ii_client TYPE REF TO if_http_client.
+
METHODS pre_calculate_repo_status
IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
@@ -3062,12 +3063,14 @@ INTERFACE zif_abapgit_exit .
!ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt
RAISING
zcx_abapgit_exception.
+
METHODS serialize_postprocess
IMPORTING
!iv_package TYPE devclass
!ii_log TYPE REF TO zif_abapgit_log
CHANGING
!ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt.
+
METHODS validate_before_push
IMPORTING
!is_comment TYPE zif_abapgit_git_definitions=>ty_comment
@@ -3075,7 +3078,9 @@ INTERFACE zif_abapgit_exit .
!io_repo TYPE REF TO zcl_abapgit_repo_online
RAISING
zcx_abapgit_exception.
+
ENDINTERFACE.
+
INTERFACE zif_abapgit_frontend_services .
TYPES:
@@ -3206,6 +3211,7 @@ INTERFACE zif_abapgit_frontend_services .
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_gui_jumper
.
@@ -3214,12 +3220,12 @@ INTERFACE zif_abapgit_gui_jumper
METHODS jump
IMPORTING
- !is_item TYPE zif_abapgit_definitions=>ty_item
- !is_sub_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
- !iv_line_number TYPE i OPTIONAL
- !iv_new_window TYPE abap_bool DEFAULT abap_true
+ !is_item TYPE zif_abapgit_definitions=>ty_item
+ !is_sub_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
+ !iv_line_number TYPE i OPTIONAL
+ !iv_new_window TYPE abap_bool DEFAULT abap_true
RETURNING
- VALUE(rv_exit) TYPE abap_bool
+ VALUE(rv_exit) TYPE abap_bool
RAISING
zcx_abapgit_exception.
@@ -3249,6 +3255,7 @@ INTERFACE zif_abapgit_gui_jumper
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_log
.
@@ -3270,6 +3277,8 @@ INTERFACE zif_abapgit_log
TYPES:
BEGIN OF ty_log_out,
type TYPE sy-msgty,
+ id TYPE sy-msgid,
+ number TYPE sy-msgno,
text TYPE string,
obj_type TYPE tadir-object,
obj_name TYPE tadir-obj_name,
@@ -3280,9 +3289,11 @@ INTERFACE zif_abapgit_log
WITH NON-UNIQUE DEFAULT KEY .
TYPES:
BEGIN OF ty_msg,
- text TYPE string,
- type TYPE sy-msgty,
- level TYPE i,
+ text TYPE string,
+ type TYPE sy-msgty,
+ id TYPE sy-msgid,
+ number TYPE sy-msgno,
+ level TYPE i,
END OF ty_msg .
TYPES:
ty_msgs TYPE STANDARD TABLE OF ty_msg
@@ -3299,10 +3310,12 @@ INTERFACE zif_abapgit_log
METHODS add
IMPORTING
- !iv_msg TYPE csequence
- !iv_type TYPE sy-msgty DEFAULT 'E'
- !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
- !ix_exc TYPE REF TO cx_root OPTIONAL .
+ !iv_msg TYPE csequence
+ !iv_type TYPE sy-msgty DEFAULT 'E'
+ !iv_class TYPE sy-msgid OPTIONAL
+ !iv_number TYPE sy-msgno OPTIONAL
+ !is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
+ !ix_exc TYPE REF TO cx_root OPTIONAL .
METHODS add_error
IMPORTING
!iv_msg TYPE csequence
@@ -3344,13 +3357,13 @@ INTERFACE zif_abapgit_log
VALUE(rv_title) TYPE string .
METHODS set_title
IMPORTING
- !iv_title TYPE csequence
+ !iv_title TYPE csequence
RETURNING
VALUE(ri_log) TYPE REF TO zif_abapgit_log.
METHODS merge_with
IMPORTING
- ii_log TYPE REF TO zif_abapgit_log
- iv_min_level TYPE i DEFAULT 0
+ ii_log TYPE REF TO zif_abapgit_log
+ iv_min_level TYPE i DEFAULT 0
RETURNING
VALUE(ri_log) TYPE REF TO zif_abapgit_log.
METHODS clone
@@ -3358,6 +3371,7 @@ INTERFACE zif_abapgit_log
VALUE(ri_log) TYPE REF TO zif_abapgit_log.
ENDINTERFACE.
+
INTERFACE zif_abapgit_longtexts
.
@@ -3407,6 +3421,7 @@ INTERFACE zif_abapgit_longtexts
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_lxe_texts
.
@@ -3424,34 +3439,35 @@ INTERFACE zif_abapgit_lxe_texts
METHODS serialize
IMPORTING
- !iv_object_type TYPE tadir-object
- !iv_object_name TYPE tadir-obj_name
- !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
- !ii_xml TYPE REF TO zif_abapgit_xml_output
- !io_files TYPE REF TO zcl_abapgit_objects_files
+ !iv_object_type TYPE tadir-object
+ !iv_object_name TYPE tadir-obj_name
+ !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
+ !ii_xml TYPE REF TO zif_abapgit_xml_output
+ !io_files TYPE REF TO zcl_abapgit_objects_files
RAISING
zcx_abapgit_exception .
METHODS deserialize
IMPORTING
- !iv_object_type TYPE tadir-object OPTIONAL
- !iv_object_name TYPE tadir-obj_name OPTIONAL
- !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
- !ii_xml TYPE REF TO zif_abapgit_xml_input
- !io_files TYPE REF TO zcl_abapgit_objects_files
+ !iv_object_type TYPE tadir-object OPTIONAL
+ !iv_object_name TYPE tadir-obj_name OPTIONAL
+ !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
+ !ii_xml TYPE REF TO zif_abapgit_xml_input
+ !io_files TYPE REF TO zcl_abapgit_objects_files
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
-INTERFACE zif_abapgit_i18n_file
- .
- TYPES: ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_i18n_file WITH DEFAULT KEY.
+INTERFACE zif_abapgit_i18n_file .
+
+ TYPES ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_i18n_file WITH DEFAULT KEY.
METHODS render
RETURNING
VALUE(rv_data) TYPE xstring
RAISING
zcx_abapgit_exception.
+
METHODS translate
CHANGING
ct_text_pairs TYPE zif_abapgit_lxe_texts=>ty_text_pairs
@@ -3461,20 +3477,21 @@ INTERFACE zif_abapgit_i18n_file
METHODS ext
RETURNING
VALUE(rv_ext) TYPE string.
+
METHODS lang
RETURNING
- VALUE(rv_lang) TYPE string.
+ VALUE(rv_lang) TYPE laiso.
ENDINTERFACE.
-INTERFACE zif_abapgit_object
- .
+
+INTERFACE zif_abapgit_object .
CONSTANTS:
BEGIN OF gc_step_id,
- early TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `EARLY`,
- abap TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `ABAP`,
- ddic TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `DDIC`,
- late TYPE zif_abapgit_definitions=>ty_deserialization_step VALUE `LATE`,
+ early TYPE zif_abapgit_objects=>ty_deserialization_step VALUE 'EARLY',
+ abap TYPE zif_abapgit_objects=>ty_deserialization_step VALUE 'ABAP',
+ ddic TYPE zif_abapgit_objects=>ty_deserialization_step VALUE 'DDIC',
+ late TYPE zif_abapgit_objects=>ty_deserialization_step VALUE 'LATE',
END OF gc_step_id.
METHODS serialize
@@ -3487,7 +3504,7 @@ INTERFACE zif_abapgit_object
IMPORTING
!iv_package TYPE devclass
!io_xml TYPE REF TO zif_abapgit_xml_input
- !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step
+ !iv_step TYPE zif_abapgit_objects=>ty_deserialization_step
!ii_log TYPE REF TO zif_abapgit_log
!iv_transport TYPE trkorr
RAISING
@@ -3546,7 +3563,7 @@ INTERFACE zif_abapgit_object
METHODS get_deserialize_steps
RETURNING
- VALUE(rt_steps) TYPE zif_abapgit_definitions=>ty_deserialization_step_tt .
+ VALUE(rt_steps) TYPE zif_abapgit_objects=>ty_deserialization_step_tt.
METHODS get_deserialize_order
IMPORTING
@@ -3568,12 +3585,15 @@ INTERFACE zif_abapgit_object
CLASS-METHODS map_object_to_filename
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
+ !iv_ext TYPE string
+ !iv_extra TYPE clike
CHANGING
cv_filename TYPE string
RAISING
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_xml_input
.
@@ -3594,6 +3614,7 @@ INTERFACE zif_abapgit_xml_input
VALUE(rs_metadata) TYPE zif_abapgit_definitions=>ty_metadata .
ENDINTERFACE.
+
INTERFACE zif_abapgit_sap_report
.
@@ -3695,6 +3716,7 @@ INTERFACE zif_abapgit_sap_report
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_xml_output
.
@@ -3719,6 +3741,7 @@ INTERFACE zif_abapgit_xml_output
VALUE(rv_xml) TYPE string .
ENDINTERFACE.
+
INTERFACE zif_abapgit_lang_definitions
.
@@ -3737,6 +3760,7 @@ INTERFACE zif_abapgit_lang_definitions
TYPES: ty_langus TYPE STANDARD TABLE OF langu.
ENDINTERFACE.
+
INTERFACE zif_abapgit_oo_object_fnc .
CONSTANTS:
@@ -3752,6 +3776,8 @@ INTERFACE zif_abapgit_oo_object_fnc .
END OF ty_includes,
ty_includes_tt TYPE STANDARD TABLE OF ty_includes WITH DEFAULT KEY.
+ TYPES:
+ ty_seoclasstx_tt TYPE STANDARD TABLE OF seoclasstx WITH DEFAULT KEY .
TYPES:
ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY .
TYPES:
@@ -3806,11 +3832,16 @@ INTERFACE zif_abapgit_oo_object_fnc .
iv_state TYPE c DEFAULT 'I'
RAISING
zcx_abapgit_exception,
- update_descriptions
+ update_descriptions_class
+ IMPORTING
+ is_key TYPE seoclskey
+ iv_language TYPE spras
+ it_descriptions TYPE ty_seoclasstx_tt,
+ update_descriptions_compo
IMPORTING
is_key TYPE seoclskey
it_descriptions TYPE ty_seocompotx_tt,
- update_descriptions_sub
+ update_descriptions_subco
IMPORTING
is_key TYPE seoclskey
it_descriptions TYPE ty_seosubcotx_tt,
@@ -3900,13 +3931,19 @@ INTERFACE zif_abapgit_oo_object_fnc .
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
RAISING
zcx_abapgit_exception,
- read_descriptions
+ read_descriptions_class
+ IMPORTING
+ iv_object_name TYPE seoclsname
+ iv_language TYPE spras OPTIONAL
+ RETURNING
+ VALUE(rt_descriptions) TYPE ty_seoclasstx_tt,
+ read_descriptions_compo
IMPORTING
iv_object_name TYPE seoclsname
iv_language TYPE spras OPTIONAL
RETURNING
VALUE(rt_descriptions) TYPE ty_seocompotx_tt,
- read_descriptions_sub
+ read_descriptions_subco
IMPORTING
iv_object_name TYPE seoclsname
iv_language TYPE spras OPTIONAL
@@ -3929,10 +3966,25 @@ INTERFACE zif_abapgit_oo_object_fnc .
VALUE(rt_attributes) TYPE ty_obj_attribute_tt,
syntax_check
IMPORTING
- iv_object_name TYPE seoclsname
+ iv_object_name TYPE seoclsname
RAISING
zcx_abapgit_exception.
ENDINTERFACE.
+
+INTERFACE zif_abapgit_object_enho .
+
+ METHODS:
+ deserialize
+ IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input
+ iv_package TYPE devclass
+ RAISING zcx_abapgit_exception,
+ serialize
+ IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output
+ ii_enh_tool TYPE REF TO if_enh_tool
+ RAISING zcx_abapgit_exception.
+
+ENDINTERFACE.
+
INTERFACE zif_abapgit_aff_oo_types_v1
.
@@ -3944,7 +3996,6 @@ INTERFACE zif_abapgit_aff_oo_types_v1
ty_component_descriptions TYPE SORTED TABLE OF ty_component_description WITH UNIQUE KEY name.
-
TYPES:
BEGIN OF ty_method,
name TYPE zif_abapgit_aff_types_v1=>ty_object_name_30,
@@ -3971,6 +4022,7 @@ INTERFACE zif_abapgit_aff_oo_types_v1
END OF ty_descriptions.
ENDINTERFACE.
+
INTERFACE zif_abapgit_aff_intf_v1 .
TYPES ty_category TYPE n LENGTH 2.
@@ -3996,6 +4048,7 @@ INTERFACE zif_abapgit_aff_intf_v1 .
END OF ty_main.
ENDINTERFACE.
+
INTERFACE zif_abapgit_object_tabl .
CONSTANTS: BEGIN OF c_s_dataname,
segment_definition TYPE string VALUE 'SEGMENT_DEFINITION',
@@ -4041,10 +4094,10 @@ INTERFACE zif_abapgit_object_tabl .
END OF ty_internal.
ENDINTERFACE.
+
INTERFACE zif_abapgit_comparator
.
-
TYPES:
BEGIN OF ty_result,
text TYPE string,
@@ -4059,10 +4112,10 @@ INTERFACE zif_abapgit_comparator
RAISING
zcx_abapgit_exception .
ENDINTERFACE.
+
INTERFACE zif_abapgit_progress
.
-
METHODS show
IMPORTING
!iv_current TYPE i
@@ -4072,6 +4125,7 @@ INTERFACE zif_abapgit_progress
!iv_total TYPE i .
METHODS off .
ENDINTERFACE.
+
INTERFACE zif_abapgit_sap_namespace
.
@@ -4097,10 +4151,10 @@ INTERFACE zif_abapgit_sap_namespace
zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_tadir
.
-
METHODS get_object_package
IMPORTING
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
@@ -4131,6 +4185,7 @@ INTERFACE zif_abapgit_tadir
RETURNING
VALUE(rs_tadir) TYPE zif_abapgit_definitions=>ty_tadir.
ENDINTERFACE.
+
INTERFACE zif_abapinst_definitions .
CONSTANTS c_version TYPE string VALUE '1.1.0' ##NO_TEXT.
@@ -4194,52 +4249,41 @@ INTERFACE zif_abapinst_definitions .
ty_list TYPE STANDARD TABLE OF ty_inst WITH KEY name pack.
ENDINTERFACE.
-INTERFACE zif_abapgit_ajson_mapping
- .
- TYPES:
- BEGIN OF ty_mapping_field, " deprecated, will be removed
- abap TYPE string,
- json TYPE string,
- END OF ty_mapping_field,
- ty_mapping_fields TYPE STANDARD TABLE OF ty_mapping_field
- WITH UNIQUE SORTED KEY abap COMPONENTS abap
- WITH UNIQUE SORTED KEY json COMPONENTS json.
+INTERFACE zif_abapinst_dot_abapgit .
TYPES:
- BEGIN OF ty_rename,
- from TYPE string,
- to TYPE string,
- END OF ty_rename,
- tty_rename_map TYPE STANDARD TABLE OF ty_rename
- WITH UNIQUE SORTED KEY by_name COMPONENTS from.
+ " Former APACK
+ BEGIN OF ty_dependency,
+ name TYPE string,
+ version TYPE string,
+ sem_version TYPE zif_abapgit_definitions=>ty_version,
+ git_url TYPE string,
+ target_package TYPE devclass,
+ END OF ty_dependency,
+ ty_dependencies TYPE STANDARD TABLE OF ty_dependency WITH NON-UNIQUE DEFAULT KEY.
TYPES:
- ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson_mapping.
-
- METHODS to_abap " deprecated, will be removed
- IMPORTING
- !iv_path TYPE string
- !iv_name TYPE string
- RETURNING
- VALUE(rv_result) TYPE string.
-
- METHODS to_json " deprecated, will be removed
- IMPORTING
- !iv_path TYPE string
- !iv_name TYPE string
- RETURNING
- VALUE(rv_result) TYPE string.
+ BEGIN OF ty_descriptor,
+ name TYPE string,
+ version TYPE string,
+ sem_version TYPE zif_abapgit_definitions=>ty_version,
+ description TYPE string,
+ git_url TYPE string,
+ target_package TYPE devclass,
+ logo TYPE string,
+ END OF ty_descriptor.
- METHODS rename_node
- IMPORTING
- !is_node TYPE zif_abapgit_ajson_types=>ty_node
- CHANGING
- !cv_name TYPE zif_abapgit_ajson_types=>ty_node-name.
+ TYPES:
+ BEGIN OF ty_packaging.
+ INCLUDE TYPE ty_descriptor.
+ TYPES:
+ dependencies TYPE ty_dependencies,
+ END OF ty_packaging.
ENDINTERFACE.
-INTERFACE zif_abapgit_apack_definitions .
+INTERFACE zif_abapgit_apack_definitions .
TYPES:
BEGIN OF ty_dependency,
@@ -4285,6 +4329,7 @@ INTERFACE zif_abapgit_apack_definitions .
CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT.
CONSTANTS c_apack_interface_nspc TYPE seoclsname VALUE '/*/IF_APACK_MANIFEST' ##NO_TEXT.
ENDINTERFACE.
+
INTERFACE zif_abapgit_function_module
.
@@ -4296,19 +4341,7 @@ INTERFACE zif_abapgit_function_module
VALUE(rv_exists) TYPE abap_bool.
ENDINTERFACE.
-INTERFACE zif_abapgit_object_enho .
- METHODS:
- deserialize
- IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input
- iv_package TYPE devclass
- RAISING zcx_abapgit_exception,
- serialize
- IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_output
- ii_enh_tool TYPE REF TO if_enh_tool
- RAISING zcx_abapgit_exception.
-
-ENDINTERFACE.
INTERFACE zif_abapgit_object_enhs .
METHODS:
@@ -4324,13 +4357,17 @@ INTERFACE zif_abapgit_object_enhs .
RAISING zcx_abapgit_exception.
ENDINTERFACE.
+
INTERFACE zif_abapgit_version
.
CONSTANTS c_xml_version TYPE string VALUE 'v1.0.0' ##NO_TEXT.
- CONSTANTS c_abap_version TYPE string VALUE '1.127.0' ##NO_TEXT.
+ CONSTANTS c_abap_version TYPE string VALUE '1.131.0' ##NO_TEXT.
ENDINTERFACE.
+
+****** CLASSES ******
+
CLASS zcl_abapgit_abap_language_vers DEFINITION
FINAL
@@ -4349,12 +4386,14 @@ CLASS zcl_abapgit_abap_language_vers DEFINITION
METHODS get_abap_language_vers_by_objt
IMPORTING
- !iv_object_type TYPE trobjtype
- !iv_package TYPE devclass
+ !iv_object_type TYPE trobjtype
+ !iv_package TYPE devclass
RETURNING
- VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
+ VALUE(rv_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS get_repo_abap_language_version
+ IMPORTING
+ !iv_object_type TYPE trobjtype OPTIONAL
RETURNING
VALUE(rv_abap_language_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
@@ -4401,7 +4440,14 @@ CLASS zcl_abapgit_abap_language_vers DEFINITION
RETURNING
VALUE(rv_description) TYPE string.
+ METHODS is_source_object_type
+ IMPORTING
+ !iv_object_type TYPE trobjtype
+ RETURNING
+ VALUE(rv_source_object_type) TYPE abap_bool.
+
ENDCLASS.
+
CLASS zcl_abapgit_adt_link DEFINITION
FINAL
@@ -4420,7 +4466,7 @@ CLASS zcl_abapgit_adt_link DEFINITION
CLASS-METHODS link_transport
IMPORTING
- iv_transport TYPE trkorr
+ iv_transport TYPE trkorr
RETURNING
VALUE(rv_link) TYPE string.
@@ -4461,6 +4507,7 @@ CLASS zcl_abapgit_adt_link DEFINITION
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_aff_registry DEFINITION
FINAL
@@ -4497,6 +4544,7 @@ CLASS zcl_abapgit_aff_registry DEFINITION
iv_experimental TYPE abap_bool DEFAULT abap_false.
ENDCLASS.
+
CLASS zcl_abapgit_ajson DEFINITION
CREATE PUBLIC .
@@ -4549,30 +4597,30 @@ CLASS zcl_abapgit_ajson DEFINITION
CLASS-METHODS parse
IMPORTING
- !iv_json TYPE string
+ !iv_json TYPE any
!iv_freeze TYPE abap_bool DEFAULT abap_false
!ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
!iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING
- VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson
+ VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson
RAISING
zcx_abapgit_ajson_error .
CLASS-METHODS create_empty " Might be deprecated, prefer using new( ) or create object
IMPORTING
- !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
- iv_keep_item_order TYPE abap_bool DEFAULT abap_false
- iv_format_datetime TYPE abap_bool DEFAULT abap_true
+ !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ iv_keep_item_order TYPE abap_bool DEFAULT abap_false
+ iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false
RETURNING
- VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
+ VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
" Experimental ! May change
CLASS-METHODS create_from " TODO, rename to 'from' ?
IMPORTING
- !ii_source_json TYPE REF TO zif_abapgit_ajson
- !ii_filter TYPE REF TO zif_abapgit_ajson_filter OPTIONAL " Might be deprecated, use filter() instead
- !ii_mapper TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL " Might be deprecated, use map() instead
+ !ii_source_json TYPE REF TO zif_abapgit_ajson
+ !ii_filter TYPE REF TO zif_abapgit_ajson_filter OPTIONAL " Might be deprecated, use filter() instead
+ !ii_mapper TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL " Might be deprecated, use map() instead
RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson
RAISING
@@ -4580,16 +4628,16 @@ CLASS zcl_abapgit_ajson DEFINITION
METHODS constructor
IMPORTING
- iv_keep_item_order TYPE abap_bool DEFAULT abap_false
- iv_format_datetime TYPE abap_bool DEFAULT abap_true
+ iv_keep_item_order TYPE abap_bool DEFAULT abap_false
+ iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false.
CLASS-METHODS new
IMPORTING
- iv_keep_item_order TYPE abap_bool DEFAULT abap_false
- iv_format_datetime TYPE abap_bool DEFAULT abap_true
+ iv_keep_item_order TYPE abap_bool DEFAULT abap_false
+ iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false
RETURNING
- VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
+ VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
PROTECTED SECTION.
@@ -4607,22 +4655,23 @@ CLASS zcl_abapgit_ajson DEFINITION
VALUE(rv_item) TYPE REF TO zif_abapgit_ajson_types=>ty_node.
METHODS prove_path_exists
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson_types=>ty_node
RAISING
zcx_abapgit_ajson_error.
METHODS delete_subtree
IMPORTING
- iv_path TYPE string
- iv_name TYPE string
- ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL
+ iv_path TYPE string
+ iv_name TYPE string
+ ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL
RETURNING
VALUE(rs_top_node) TYPE zif_abapgit_ajson_types=>ty_node.
METHODS read_only_watchdog
RAISING
zcx_abapgit_ajson_error.
ENDCLASS.
+
CLASS zcl_abapgit_ajson_filter_lib DEFINITION
FINAL
@@ -4637,16 +4686,16 @@ CLASS zcl_abapgit_ajson_filter_lib DEFINITION
zcx_abapgit_ajson_error .
CLASS-METHODS create_path_filter
IMPORTING
- !it_skip_paths TYPE string_table OPTIONAL
- !iv_skip_paths TYPE string OPTIONAL
+ !it_skip_paths TYPE string_table OPTIONAL
+ !iv_skip_paths TYPE string OPTIONAL
!iv_pattern_search TYPE abap_bool DEFAULT abap_false
RETURNING
- VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter
+ VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter
RAISING
zcx_abapgit_ajson_error .
CLASS-METHODS create_and_filter
IMPORTING
- !it_filters TYPE zif_abapgit_ajson_filter=>ty_filter_tab
+ !it_filters TYPE zif_abapgit_ajson_filter=>ty_filter_tab
RETURNING
VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter
RAISING
@@ -4655,6 +4704,283 @@ CLASS zcl_abapgit_ajson_filter_lib DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
+CLASS lcl_mapping_fields DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mt_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields.
+
+ENDCLASS.
+
+CLASS lcl_rename DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map
+ iv_rename_by TYPE i.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mt_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map.
+ DATA mv_rename_by TYPE i.
+
+ENDCLASS.
+
+CLASS lcl_mapping_to_upper DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping.
+
+ENDCLASS.
+
+CLASS lcl_mapping_to_lower DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping.
+
+ENDCLASS.
+
+CLASS lcl_mapping_camel DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping~ty_mapping_fields OPTIONAL
+ iv_first_json_upper TYPE abap_bool DEFAULT abap_true.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mv_first_json_upper TYPE abap_bool.
+ DATA mi_mapping_fields TYPE REF TO zif_abapgit_ajson_mapping.
+
+ENDCLASS.
+
+CLASS lcl_compound_mapper DEFINITION.
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+
+ METHODS constructor
+ IMPORTING
+ it_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+ DATA mt_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of.
+
+ENDCLASS.
+
+CLASS lcl_to_snake DEFINITION.
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+ENDCLASS.
+
+CLASS lcl_to_camel DEFINITION.
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_ajson_mapping.
+ METHODS constructor
+ IMPORTING
+ iv_first_json_upper TYPE abap_bool.
+ PRIVATE SECTION.
+ DATA mv_first_json_upper TYPE abap_bool.
+ENDCLASS.
+
+CLASS zcl_abapgit_ajson_mapping DEFINITION
+
+ FINAL
+ CREATE PUBLIC.
+
+ PUBLIC SECTION.
+
+ CONSTANTS:
+ BEGIN OF rename_by,
+ attr_name TYPE i VALUE 0,
+ full_path TYPE i VALUE 1,
+ pattern TYPE i VALUE 2,
+ " regex type i value 3, " TODO add if needed in future
+ END OF rename_by.
+
+ CLASS-METHODS create_camel_case " DEPRECATED
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL
+ iv_first_json_upper TYPE abap_bool DEFAULT abap_true
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_upper_case
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_lower_case
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields OPTIONAL
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_field_mapping " DEPRECATED
+ IMPORTING
+ it_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_rename
+ IMPORTING
+ it_rename_map TYPE zif_abapgit_ajson_mapping=>tty_rename_map
+ iv_rename_by TYPE i DEFAULT rename_by-attr_name
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_compound_mapper
+ IMPORTING
+ ii_mapper1 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ ii_mapper2 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ ii_mapper3 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ it_more TYPE zif_abapgit_ajson_mapping=>ty_table_of OPTIONAL
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_to_snake_case
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ CLASS-METHODS create_to_camel_case
+ IMPORTING
+ iv_first_json_upper TYPE abap_bool DEFAULT abap_false
+ RETURNING
+ VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+
+ENDCLASS.
+
+CLASS zcl_abapgit_ajson_utilities DEFINITION
+
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ CLASS-METHODS new
+ RETURNING
+ VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson_utilities.
+ METHODS diff
+ IMPORTING
+ !iv_json_a TYPE string OPTIONAL
+ !iv_json_b TYPE string OPTIONAL
+ !io_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL
+ !io_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL
+ !iv_keep_empty_arrays TYPE abap_bool DEFAULT abap_false
+ EXPORTING
+ !eo_insert TYPE REF TO zif_abapgit_ajson
+ !eo_delete TYPE REF TO zif_abapgit_ajson
+ !eo_change TYPE REF TO zif_abapgit_ajson
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS merge
+ IMPORTING
+ !iv_json_a TYPE string OPTIONAL
+ !iv_json_b TYPE string OPTIONAL
+ !io_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL
+ !io_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL
+ !iv_keep_empty_arrays TYPE abap_bool DEFAULT abap_false
+ RETURNING
+ VALUE(ro_json) TYPE REF TO zif_abapgit_ajson
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS sort
+ IMPORTING
+ !iv_json TYPE string OPTIONAL
+ !io_json TYPE REF TO zif_abapgit_ajson OPTIONAL
+ RETURNING
+ VALUE(rv_sorted) TYPE string
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS is_equal
+ IMPORTING
+ !iv_json_a TYPE string OPTIONAL
+ !iv_json_b TYPE string OPTIONAL
+ !ii_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL
+ !ii_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL
+ RETURNING
+ VALUE(rv_yes) TYPE abap_bool
+ RAISING
+ zcx_abapgit_ajson_error .
+
+ PROTECTED SECTION.
+
+ PRIVATE SECTION.
+
+ DATA mo_json_a TYPE REF TO zif_abapgit_ajson .
+ DATA mo_json_b TYPE REF TO zif_abapgit_ajson .
+ DATA mo_insert TYPE REF TO zif_abapgit_ajson .
+ DATA mo_delete TYPE REF TO zif_abapgit_ajson .
+ DATA mo_change TYPE REF TO zif_abapgit_ajson .
+
+ METHODS normalize_input
+ IMPORTING
+ !iv_json TYPE string OPTIONAL
+ !io_json TYPE REF TO zif_abapgit_ajson OPTIONAL
+ RETURNING
+ VALUE(ro_json) TYPE REF TO zif_abapgit_ajson
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS diff_a_b
+ IMPORTING
+ !iv_path TYPE string
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS diff_b_a
+ IMPORTING
+ !iv_path TYPE string
+ !iv_array TYPE abap_bool DEFAULT abap_false
+ RAISING
+ zcx_abapgit_ajson_error .
+ METHODS delete_empty_nodes
+ IMPORTING
+ !io_json TYPE REF TO zif_abapgit_ajson
+ !iv_keep_empty_arrays TYPE abap_bool
+ RAISING
+ zcx_abapgit_ajson_error .
+ENDCLASS.
+
CLASS zcl_abapgit_convert DEFINITION
CREATE PUBLIC .
@@ -4742,7 +5068,7 @@ CLASS zcl_abapgit_convert DEFINITION
VALUE(rv_xstr) TYPE xstring .
CLASS-METHODS xstring_to_bintab
IMPORTING
- !iv_xstr TYPE xstring
+ !iv_xstr TYPE xsequence
EXPORTING
!ev_size TYPE i
!et_bintab TYPE STANDARD TABLE .
@@ -4763,6 +5089,31 @@ CLASS zcl_abapgit_convert DEFINITION
EXCEPTIONS
no_assignment.
+ CLASS-METHODS language_sap1_to_bcp47
+ IMPORTING
+ im_lang_sap1 TYPE sy-langu
+ RETURNING
+ VALUE(re_lang_bcp47) TYPE string
+ EXCEPTIONS
+ no_assignment.
+
+ CLASS-METHODS language_bcp47_to_sap1
+ IMPORTING
+ im_lang_bcp47 TYPE string
+ RETURNING
+ VALUE(re_lang_sap1) TYPE sy-langu
+ EXCEPTIONS
+ no_assignment.
+
+ TYPES ty_char02 TYPE c LENGTH 2.
+ CLASS-METHODS uccp
+ IMPORTING
+ iv_uccp TYPE string
+ RETURNING
+ VALUE(rv_char) TYPE ty_char02
+ EXCEPTIONS
+ no_assignment.
+
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS xstring_remove_bom
@@ -4771,6 +5122,7 @@ CLASS zcl_abapgit_convert DEFINITION
RETURNING
VALUE(rv_xstr) TYPE xstring.
ENDCLASS.
+
"! Change transport system API
CLASS zcl_abapgit_cts_api DEFINITION
@@ -4852,6 +5204,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
RETURNING
VALUE(rv_transportable) TYPE abap_bool .
ENDCLASS.
+
CLASS zcl_abapgit_data_config DEFINITION
FINAL
@@ -4873,6 +5226,7 @@ CLASS zcl_abapgit_data_config DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_data_deserializer DEFINITION
CREATE PRIVATE
@@ -4930,6 +5284,7 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
VALUE(rv_allowed_to_edit) TYPE abap_bool .
ENDCLASS.
+
CLASS zcl_abapgit_data_serializer DEFINITION
CREATE PRIVATE
@@ -4962,6 +5317,7 @@ CLASS zcl_abapgit_data_serializer DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_data_supporter DEFINITION
CREATE PRIVATE
@@ -4979,6 +5335,7 @@ CLASS zcl_abapgit_data_supporter DEFINITION
METHODS get_supported_objects.
ENDCLASS.
+
CLASS zcl_abapgit_data_factory DEFINITION
CREATE PUBLIC
@@ -5005,8 +5362,8 @@ CLASS zcl_abapgit_data_factory DEFINITION
CLASS-DATA gi_serializer TYPE REF TO zif_abapgit_data_serializer .
CLASS-DATA gi_deserializer TYPE REF TO zif_abapgit_data_deserializer .
ENDCLASS.
-CLASS zcl_abapgit_data_injector DEFINITION
+CLASS zcl_abapgit_data_injector DEFINITION
CREATE PUBLIC .
@@ -5024,6 +5381,7 @@ CLASS zcl_abapgit_data_injector DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_data_utils DEFINITION
CREATE PUBLIC.
@@ -5049,7 +5407,7 @@ CLASS zcl_abapgit_data_utils DEFINITION
VALUE(rv_filename) TYPE string.
CLASS-METHODS jump
IMPORTING
- !is_item TYPE zif_abapgit_definitions=>ty_item
+ !is_item TYPE zif_abapgit_definitions=>ty_item
RAISING
zcx_abapgit_exception.
CLASS-METHODS does_table_exist
@@ -5072,6 +5430,7 @@ CLASS zcl_abapgit_data_utils DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_default_transport DEFINITION
CREATE PUBLIC .
@@ -5079,19 +5438,14 @@ CLASS zcl_abapgit_default_transport DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_default_transport.
- METHODS
- constructor
- RAISING
- zcx_abapgit_exception.
+ METHODS constructor.
PROTECTED SECTION.
PRIVATE SECTION.
DATA mv_is_set_by_abapgit TYPE abap_bool .
DATA ms_save TYPE e070use .
- METHODS store
- RAISING
- zcx_abapgit_exception .
+ METHODS store.
METHODS restore
RAISING
zcx_abapgit_exception .
@@ -5106,6 +5460,7 @@ CLASS zcl_abapgit_default_transport DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_dependencies DEFINITION
FINAL
@@ -5154,6 +5509,7 @@ CLASS zcl_abapgit_dependencies DEFINITION
CHANGING
ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
ENDCLASS.
+
CLASS zcl_abapgit_dot_abapgit DEFINITION
CREATE PUBLIC .
@@ -5225,6 +5581,13 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
it_languages TYPE zif_abapgit_definitions=>ty_languages
RAISING
zcx_abapgit_exception .
+ METHODS determine_i18n_parameters
+ IMPORTING
+ !iv_main_language_only TYPE abap_bool
+ RETURNING
+ VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params
+ RAISING
+ zcx_abapgit_exception.
METHODS get_signature
RETURNING
VALUE(rs_signature) TYPE zif_abapgit_git_definitions=>ty_file_signature
@@ -5266,16 +5629,6 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
IMPORTING
!iv_original_system TYPE csequence .
- METHODS get_packaging
- RETURNING
- VALUE(rs_packaging) TYPE zif_abapinst_dot_abapgit=>ty_packaging
- RAISING
- zcx_abapgit_exception.
-
- METHODS set_packaging
- IMPORTING
- !is_packaging TYPE zif_abapinst_dot_abapgit=>ty_packaging.
-
PROTECTED SECTION.
PRIVATE SECTION.
@@ -5294,15 +5647,16 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
RETURNING
VALUE(rs_data) TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit .
ENDCLASS.
+
CLASS zcl_abapgit_environment DEFINITION
FINAL
CREATE PRIVATE
- FRIENDS zcl_abapinst_factory .
+ FRIENDS zcl_abapinst_factory.
PUBLIC SECTION.
- INTERFACES zif_abapgit_environment .
+ INTERFACES zif_abapgit_environment.
PROTECTED SECTION.
PRIVATE SECTION.
@@ -5312,8 +5666,9 @@ CLASS zcl_abapgit_environment DEFINITION
METHODS is_system_changes_allowed
RETURNING
- VALUE(rv_result) TYPE abap_bool .
+ VALUE(rv_result) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_exit DEFINITION
CREATE PUBLIC
@@ -5338,6 +5693,7 @@ CLASS zcl_abapgit_exit DEFINITION
VALUE(rv_running_in_test_context) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_filename_logic DEFINITION
FINAL
@@ -5386,6 +5742,17 @@ CLASS zcl_abapgit_filename_logic DEFINITION
RAISING
zcx_abapgit_exception .
+ CLASS-METHODS i18n_file_to_object
+ IMPORTING
+ !iv_filename TYPE string
+ !iv_path TYPE string
+ EXPORTING
+ !es_item TYPE zif_abapgit_definitions=>ty_item
+ !ev_lang TYPE laiso
+ !ev_ext TYPE string
+ RAISING
+ zcx_abapgit_exception .
+
CLASS-METHODS object_to_file
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
@@ -5394,6 +5761,14 @@ CLASS zcl_abapgit_filename_logic DEFINITION
RETURNING
VALUE(rv_filename) TYPE string .
+ CLASS-METHODS object_to_i18n_file
+ IMPORTING
+ !is_item TYPE zif_abapgit_definitions=>ty_item
+ !iv_lang TYPE laiso
+ !iv_ext TYPE string
+ RETURNING
+ VALUE(rv_filename) TYPE string.
+
PROTECTED SECTION.
PRIVATE SECTION.
@@ -5426,12 +5801,24 @@ CLASS zcl_abapgit_filename_logic DEFINITION
CLASS-METHODS map_object_to_filename
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
+ !iv_ext TYPE string
+ !iv_extra TYPE clike
CHANGING
cv_filename TYPE string
RAISING
zcx_abapgit_exception.
+ CLASS-METHODS get_lang_and_ext
+ IMPORTING
+ iv_filename TYPE string
+ EXPORTING
+ ev_lang TYPE laiso
+ ev_ext TYPE string
+ RAISING
+ zcx_abapgit_exception.
+
ENDCLASS.
+
CLASS zcl_abapgit_folder_logic DEFINITION
CREATE PUBLIC .
@@ -5483,6 +5870,7 @@ CLASS zcl_abapgit_folder_logic DEFINITION
DATA mt_top_subpackages TYPE ty_devclass_info_tt .
DATA mt_parent TYPE ty_devclass_info_tt .
ENDCLASS.
+
CLASS zcl_abapgit_frontend_services DEFINITION
CREATE PRIVATE
@@ -5502,6 +5890,7 @@ CLASS zcl_abapgit_frontend_services DEFINITION
VALUE(rv_path) TYPE string.
ENDCLASS.
+
CLASS zcl_abapgit_function_module DEFINITION
FINAL
@@ -5514,6 +5903,7 @@ CLASS zcl_abapgit_function_module DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_gui_jumper DEFINITION
FINAL
@@ -5557,6 +5947,7 @@ CLASS zcl_abapgit_gui_jumper DEFINITION
VALUE(rv_exit) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_hash DEFINITION
CREATE PUBLIC .
@@ -5621,6 +6012,7 @@ CLASS zcl_abapgit_hash DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_i18n_params DEFINITION
FINAL
@@ -5638,7 +6030,7 @@ CLASS zcl_abapgit_i18n_params DEFINITION
!iv_use_lxe TYPE abap_bool DEFAULT abap_false
!is_params TYPE zif_abapgit_definitions=>ty_i18n_params OPTIONAL
RETURNING
- VALUE(ro_instance) TYPE REF TO zcl_abapgit_i18n_params .
+ VALUE(ro_instance) TYPE REF TO zcl_abapgit_i18n_params .
METHODS constructor
IMPORTING
!iv_main_language TYPE spras DEFAULT zif_abapgit_definitions=>c_english
@@ -5655,7 +6047,7 @@ CLASS zcl_abapgit_i18n_params DEFINITION
VALUE(rt_language_filter) TYPE zif_abapgit_environment=>ty_system_language_filter .
METHODS trim_saplang_list
CHANGING
- ct_sap_langs TYPE zif_abapgit_definitions=>ty_sap_langu_tab
+ ct_sap_langs TYPE zif_abapgit_definitions=>ty_sap_langu_tab
RAISING
zcx_abapgit_exception.
METHODS trim_saplang_keyed_table
@@ -5673,11 +6065,12 @@ CLASS zcl_abapgit_i18n_params DEFINITION
CLASS-METHODS iso_langs_to_lang_filter
IMPORTING
- it_iso_filter TYPE zif_abapgit_definitions=>ty_languages
+ it_iso_filter TYPE zif_abapgit_definitions=>ty_languages
RETURNING
VALUE(rt_language_filter) TYPE zif_abapgit_environment=>ty_system_language_filter.
ENDCLASS.
+
CLASS zcl_abapgit_item_graph DEFINITION
CREATE PUBLIC .
@@ -5699,6 +6092,7 @@ CLASS zcl_abapgit_item_graph DEFINITION
!ii_log TYPE REF TO zif_abapgit_log
RETURNING
VALUE(rs_item) TYPE zif_abapgit_definitions=>ty_item .
+ PROTECTED SECTION.
PRIVATE SECTION.
TYPES: BEGIN OF ty_edge,
from TYPE zif_abapgit_definitions=>ty_item,
@@ -5707,13 +6101,27 @@ CLASS zcl_abapgit_item_graph DEFINITION
DATA mt_vertices TYPE STANDARD TABLE OF zif_abapgit_definitions=>ty_item WITH DEFAULT KEY.
DATA mt_edges TYPE STANDARD TABLE OF ty_edge WITH DEFAULT KEY
- WITH NON-UNIQUE SORTED KEY sec_key
- COMPONENTS to.
+ WITH NON-UNIQUE SORTED KEY sec_to COMPONENTS to
+ WITH NON-UNIQUE SORTED KEY sec_from COMPONENTS from.
DATA mv_warning TYPE abap_bool.
METHODS remove_vertex IMPORTING iv_index TYPE i.
+ENDCLASS.
+CLASS zcl_abapgit_json_path DEFINITION CREATE PUBLIC.
+ PUBLIC SECTION.
+ METHODS: serialize
+ IMPORTING iv_json TYPE string
+ RETURNING VALUE(rt_result) TYPE string_table
+ RAISING zcx_abapgit_exception.
+ METHODS: deserialize
+ IMPORTING it_json_path TYPE string_table
+ RETURNING VALUE(rv_result) TYPE string
+ RAISING zcx_abapgit_exception.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
ENDCLASS.
+
*----------------------------------------------------------------------*
* This helper class is used to set and restore the current language.
* As some of the SAP functions used rely on SY-LANGU containing the
@@ -5736,6 +6144,7 @@ CLASS zcl_abapgit_language DEFINITION
CLASS-DATA gv_login_language TYPE sy-langu .
ENDCLASS.
+
CLASS zcl_abapgit_log DEFINITION
CREATE PUBLIC .
@@ -5750,7 +6159,7 @@ CLASS zcl_abapgit_log DEFINITION
CLASS-METHODS from_exception
IMPORTING
- io_x TYPE REF TO cx_root
+ io_x TYPE REF TO cx_root
RETURNING
VALUE(ro_log) TYPE REF TO zcl_abapgit_log.
@@ -5774,6 +6183,7 @@ CLASS zcl_abapgit_log DEFINITION
VALUE(rv_status) TYPE sy-msgty .
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_longtexts DEFINITION
CREATE PRIVATE
@@ -5807,6 +6217,7 @@ CLASS zcl_abapgit_longtexts DEFINITION
RETURNING
VALUE(rv_object) TYPE dokil-object.
ENDCLASS.
+
CLASS zcl_abapgit_lxe_texts DEFINITION
FINAL
@@ -5856,7 +6267,7 @@ CLASS zcl_abapgit_lxe_texts DEFINITION
IMPORTING
iv_object_type TYPE tadir-object
RETURNING
- VALUE(rv_yes) TYPE abap_bool.
+ VALUE(rv_yes) TYPE abap_bool.
PROTECTED SECTION.
PRIVATE SECTION.
@@ -5894,8 +6305,8 @@ CLASS zcl_abapgit_lxe_texts DEFINITION
METHODS serialize_as_po
IMPORTING
- !iv_object_type TYPE tadir-object
- !iv_object_name TYPE tadir-obj_name
+ !iv_object_type TYPE tadir-object
+ !iv_object_name TYPE tadir-obj_name
RAISING
zcx_abapgit_exception .
@@ -5910,8 +6321,8 @@ CLASS zcl_abapgit_lxe_texts DEFINITION
METHODS deserialize_from_po
IMPORTING
- !iv_object_type TYPE tadir-object
- !iv_object_name TYPE tadir-obj_name
+ !iv_object_type TYPE tadir-object
+ !iv_object_name TYPE tadir-obj_name
RAISING
zcx_abapgit_exception .
@@ -5982,6 +6393,7 @@ CLASS zcl_abapgit_lxe_texts DEFINITION
et_intersection TYPE zif_abapgit_definitions=>ty_languages
et_missfits TYPE zif_abapgit_definitions=>ty_languages.
ENDCLASS.
+
CLASS zcl_abapgit_objects_activation DEFINITION
CREATE PUBLIC .
@@ -6030,7 +6442,7 @@ CLASS zcl_abapgit_objects_activation DEFINITION
CONSTANTS:
c_domain TYPE c LENGTH 9 VALUE 'DOMA DOMD',
- c_types TYPE c LENGTH 50 VALUE 'DTEL DTED TABL TABD SQLT SQLD TTYP TTYD VIEW VIED',
+ c_types TYPE c LENGTH 55 VALUE 'DTEL DTED TABL TABD SQLT SQLD TTYP TTYD VIEW VIED DRTY',
c_technset TYPE c LENGTH 24 VALUE 'TABT VIET SQTT INDX XINX',
c_f4_objects TYPE c LENGTH 35 VALUE 'SHLP SHLD MCOB MCOD MACO MACD MCID',
c_enqueue TYPE c LENGTH 9 VALUE 'ENQU ENQD',
@@ -6040,7 +6452,9 @@ CLASS zcl_abapgit_objects_activation DEFINITION
c_ddls TYPE c LENGTH 24 VALUE 'DDLS DRUL DTDC DTEB',
c_switches TYPE c LENGTH 24 VALUE 'SF01 SF02 SFSW SFBS SFBF',
c_para TYPE c LENGTH 4 VALUE 'PARA', " can be referenced by DTEL
- c_enhd TYPE c LENGTH 4 VALUE 'ENHD'.
+ c_enhd TYPE c LENGTH 4 VALUE 'ENHD',
+ c_scalarfunc TYPE c LENGTH 9 VALUE 'DSFD DSFI',
+ c_aspect TYPE c LENGTH 4 VALUE 'DRAS'.
CLASS-DATA:
gt_classes TYPE STANDARD TABLE OF ty_classes WITH DEFAULT KEY .
@@ -6109,6 +6523,7 @@ CLASS zcl_abapgit_objects_activation DEFINITION
RAISING
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_objects_super DEFINITION
ABSTRACT
@@ -6212,6 +6627,7 @@ CLASS zcl_abapgit_objects_super DEFINITION
zcx_abapgit_exception .
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_objects_bridge DEFINITION FINAL CREATE PUBLIC INHERITING FROM zcl_abapgit_objects_super.
PUBLIC SECTION.
@@ -6253,6 +6669,7 @@ CLASS zcl_abapgit_objects_bridge DEFINITION FINAL CREATE PUBLIC INHERITING FROM
CLASS-DATA gt_objtype_map TYPE ty_t_objtype_map.
ENDCLASS.
+
CLASS zcl_abapgit_objects_factory DEFINITION
CREATE PRIVATE
@@ -6267,6 +6684,7 @@ CLASS zcl_abapgit_objects_factory DEFINITION
CLASS-DATA gi_gui_jumper TYPE REF TO zif_abapgit_gui_jumper .
ENDCLASS.
+
CLASS zcl_abapgit_xml DEFINITION
ABSTRACT
@@ -6312,6 +6730,7 @@ CLASS zcl_abapgit_xml DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_xml_input DEFINITION
INHERITING FROM zcl_abapgit_xml
@@ -6334,6 +6753,7 @@ CLASS zcl_abapgit_xml_input DEFINITION
METHODS fix_xml.
ENDCLASS.
+
CLASS zcl_abapgit_objects_files DEFINITION
CREATE PRIVATE.
@@ -6466,8 +6886,8 @@ CLASS zcl_abapgit_objects_files DEFINITION
!iv_sha1 TYPE zif_abapgit_git_definitions=>ty_file-sha1.
ENDCLASS.
-CLASS zcl_abapgit_objects_injector DEFINITION
+CLASS zcl_abapgit_objects_injector DEFINITION
CREATE PRIVATE .
@@ -6479,6 +6899,7 @@ CLASS zcl_abapgit_objects_injector DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_xml_output DEFINITION
INHERITING FROM zcl_abapgit_xml
@@ -6497,6 +6918,7 @@ CLASS zcl_abapgit_xml_output DEFINITION
RETURNING
VALUE(ri_element) TYPE REF TO if_ixml_element .
ENDCLASS.
+
CLASS zcl_abapgit_objects_program DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -6548,6 +6970,9 @@ CLASS zcl_abapgit_objects_program DEFINITION
fields TYPE dyfatc_tab,
flow_logic TYPE swydyflow,
spaces TYPE ty_spaces_tt,
+ nat_header TYPE d020s,
+ nat_fields TYPE STANDARD TABLE OF d021s WITH DEFAULT KEY,
+ nat_texts TYPE STANDARD TABLE OF d021t WITH DEFAULT KEY,
END OF ty_dynpro .
TYPES:
ty_dynpro_tt TYPE STANDARD TABLE OF ty_dynpro WITH DEFAULT KEY .
@@ -6627,6 +7052,8 @@ CLASS zcl_abapgit_objects_program DEFINITION
inactive TYPE r3state VALUE 'I',
END OF c_state.
+ CONSTANTS c_native_dynpro TYPE c LENGTH 2 VALUE 'IN'.
+
METHODS:
uncondense_flow
IMPORTING it_flow TYPE swydyflow
@@ -6650,6 +7077,7 @@ CLASS zcl_abapgit_objects_program DEFINITION
!it_source TYPE abaptxt255_tab
!iv_title TYPE repti
!iv_package TYPE devclass
+ !iv_state TYPE progdir-state DEFAULT c_state-inactive
RAISING
zcx_abapgit_exception .
METHODS update_program
@@ -6657,9 +7085,24 @@ CLASS zcl_abapgit_objects_program DEFINITION
!is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
!it_source TYPE abaptxt255_tab
!iv_title TYPE repti
+ !iv_state TYPE progdir-state DEFAULT c_state-inactive
RAISING
zcx_abapgit_exception .
+ METHODS is_exit_include
+ IMPORTING
+ !iv_program TYPE syrepid
+ RETURNING
+ VALUE(rv_is_exit_include) TYPE abap_bool.
+ METHODS deserialize_exit_include
+ IMPORTING
+ !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
+ !it_source TYPE abaptxt255_tab
+ !it_tpool TYPE textpool_table
+ !iv_package TYPE devclass
+ RAISING
+ zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_acid DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -6671,6 +7114,7 @@ CLASS zcl_abapgit_object_acid DEFINITION INHERITING FROM zcl_abapgit_objects_su
RAISING zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_avar DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -6687,6 +7131,7 @@ CLASS zcl_abapgit_object_avar DEFINITION
RAISING zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_clas DEFINITION
INHERITING FROM zcl_abapgit_objects_program
@@ -6714,6 +7159,9 @@ CLASS zcl_abapgit_object_clas DEFINITION
IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input
iv_package TYPE devclass
RAISING zcx_abapgit_exception,
+ deserialize_descr
+ IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input
+ RAISING zcx_abapgit_exception,
deserialize_docu
IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input
RAISING zcx_abapgit_exception,
@@ -6739,13 +7187,19 @@ CLASS zcl_abapgit_object_clas DEFINITION
!iv_clsname TYPE seoclsname
RAISING
zcx_abapgit_exception,
- serialize_descr
+ serialize_descr_class
+ IMPORTING
+ !ii_xml TYPE REF TO zif_abapgit_xml_output
+ !iv_clsname TYPE seoclsname
+ RAISING
+ zcx_abapgit_exception,
+ serialize_descr_compo
IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output
!iv_clsname TYPE seoclsname
RAISING
zcx_abapgit_exception,
- serialize_descr_sub
+ serialize_descr_subco
IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output
!iv_clsname TYPE seoclsname
@@ -6829,6 +7283,7 @@ CLASS zcl_abapgit_object_clas DEFINITION
!ct_source TYPE seop_source_string.
ENDCLASS.
+
CLASS zcl_abapgit_persist_packages DEFINITION
CREATE PRIVATE .
@@ -6882,6 +7337,7 @@ CLASS zcl_abapgit_persist_packages DEFINITION
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_devc DEFINITION
INHERITING FROM zcl_abapgit_objects_super
FINAL.
@@ -6948,7 +7404,11 @@ CLASS zcl_abapgit_object_devc DEFINITION
METHODS remove_obsolete_tadir
IMPORTING
!iv_package_name TYPE devclass .
+ METHODS adjust_sw_component
+ CHANGING
+ cv_dlvunit TYPE dlvunit.
ENDCLASS.
+
CLASS zcl_abapgit_object_doma DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -6994,7 +7454,7 @@ CLASS zcl_abapgit_object_doma DEFINITION INHERITING FROM zcl_abapgit_objects_su
METHODS handle_dependencies
IMPORTING
- !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step
+ !iv_step TYPE zif_abapgit_objects=>ty_deserialization_step
CHANGING
!cv_exit TYPE dd01v-convexit
!cv_done TYPE abap_bool.
@@ -7010,6 +7470,7 @@ CLASS zcl_abapgit_object_doma DEFINITION INHERITING FROM zcl_abapgit_objects_su
VALUE(rv_done) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_object_dsys DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7051,6 +7512,7 @@ CLASS zcl_abapgit_object_dsys DEFINITION INHERITING FROM zcl_abapgit_objects_su
VALUE(rv_language) TYPE spras.
ENDCLASS.
+
CLASS zcl_abapgit_object_dtel DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7085,6 +7547,7 @@ CLASS zcl_abapgit_object_dtel DEFINITION INHERITING FROM zcl_abapgit_objects_su
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_object_enhc DEFINITION
INHERITING FROM zcl_abapgit_objects_super.
@@ -7107,6 +7570,7 @@ CLASS zcl_abapgit_object_enhc DEFINITION
mv_composite_id TYPE enhcompositename.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_badi DEFINITION .
PUBLIC SECTION.
@@ -7120,6 +7584,7 @@ CLASS zcl_abapgit_object_enho_badi DEFINITION .
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_hook DEFINITION .
PUBLIC SECTION.
METHODS: constructor
@@ -7171,18 +7636,24 @@ CLASS zcl_abapgit_object_enho_hook DEFINITION .
RAISING
zcx_abapgit_exception .
ENDCLASS.
-CLASS zcl_abapgit_object_enho_class DEFINITION .
+
+CLASS zcl_abapgit_object_enho_class DEFINITION
+
+ CREATE PUBLIC.
PUBLIC SECTION.
- METHODS:
- constructor
- IMPORTING
- is_item TYPE zif_abapgit_definitions=>ty_item
- io_files TYPE REF TO zcl_abapgit_objects_files.
- INTERFACES: zif_abapgit_object_enho.
+ INTERFACES zif_abapgit_object_enho.
+
+ METHODS constructor
+ IMPORTING
+ !is_item TYPE zif_abapgit_definitions=>ty_item
+ !io_files TYPE REF TO zcl_abapgit_objects_files.
PROTECTED SECTION.
PRIVATE SECTION.
+ CLASS-METHODS adjust_generated_comments
+ CHANGING
+ ct_source TYPE rswsourcet.
METHODS:
serialize_includes
IMPORTING
@@ -7200,6 +7671,7 @@ CLASS zcl_abapgit_object_enho_class DEFINITION .
DATA: mo_files TYPE REF TO zcl_abapgit_objects_files.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_intf DEFINITION .
PUBLIC SECTION.
@@ -7216,6 +7688,7 @@ CLASS zcl_abapgit_object_enho_intf DEFINITION .
mo_files TYPE REF TO zcl_abapgit_objects_files.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_wdyc DEFINITION .
PUBLIC SECTION.
@@ -7229,6 +7702,7 @@ CLASS zcl_abapgit_object_enho_wdyc DEFINITION .
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_fugr DEFINITION .
PUBLIC SECTION.
@@ -7244,6 +7718,7 @@ CLASS zcl_abapgit_object_enho_fugr DEFINITION .
mo_files TYPE REF TO zcl_abapgit_objects_files.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_wdyn DEFINITION .
PUBLIC SECTION.
@@ -7257,6 +7732,7 @@ CLASS zcl_abapgit_object_enho_wdyn DEFINITION .
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7274,6 +7750,7 @@ CLASS zcl_abapgit_object_enho DEFINITION INHERITING FROM zcl_abapgit_objects_su
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_enho_clif DEFINITION
CREATE PUBLIC .
@@ -7297,6 +7774,7 @@ CLASS zcl_abapgit_object_enho_clif DEFINITION
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_object_enhs_badi_d DEFINITION .
PUBLIC SECTION.
@@ -7305,6 +7783,7 @@ CLASS zcl_abapgit_object_enhs_badi_d DEFINITION .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_object_enhs_hook_d DEFINITION .
PUBLIC SECTION.
@@ -7323,6 +7802,7 @@ CLASS zcl_abapgit_object_enhs_hook_d DEFINITION .
END OF ty_hook_defifnition.
ENDCLASS.
+
CLASS zcl_abapgit_object_enhs DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7339,6 +7819,7 @@ CLASS zcl_abapgit_object_enhs DEFINITION INHERITING FROM zcl_abapgit_objects_su
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_enqu DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -7354,10 +7835,15 @@ CLASS zcl_abapgit_object_enqu DEFINITION
METHODS _clear_dd27p_fields CHANGING ct_dd27p TYPE ty_dd27p.
ENDCLASS.
-CLASS zcl_abapgit_object_fugr DEFINITION INHERITING FROM zcl_abapgit_objects_program FINAL.
+
+CLASS zcl_abapgit_object_fugr DEFINITION
+
+ INHERITING FROM zcl_abapgit_objects_program
+ CREATE PUBLIC .
PUBLIC SECTION.
- INTERFACES zif_abapgit_object.
+
+ INTERFACES zif_abapgit_object .
PROTECTED SECTION.
PRIVATE SECTION.
@@ -7517,6 +8003,7 @@ CLASS zcl_abapgit_object_fugr DEFINITION INHERITING FROM zcl_abapgit_objects_pr
RETURNING
VALUE(rv_belongs_to_other_fugr) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_object_idoc DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7550,6 +8037,7 @@ CLASS zcl_abapgit_object_idoc DEFINITION INHERITING FROM zcl_abapgit_objects_su
RETURNING
VALUE(rv_closed) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_objects_program.
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
@@ -7564,6 +8052,7 @@ CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_obje
BEGIN OF ty_intf,
vseointerf TYPE vseointerf,
docu TYPE ty_docu,
+ description_int TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt,
description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt,
description_sub TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt,
END OF ty_intf.
@@ -7596,18 +8085,27 @@ CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_obje
RETURNING VALUE(rs_docu) TYPE ty_docu
RAISING
zcx_abapgit_exception.
- METHODS serialize_descr
+ METHODS serialize_descr_class
IMPORTING
- !iv_clsname TYPE seoclsname
- RETURNING VALUE(rs_description) TYPE ty_intf-description
+ !iv_clsname TYPE seoclsname
+ RETURNING
+ VALUE(rs_description) TYPE ty_intf-description_int
RAISING
- zcx_abapgit_exception.
- METHODS serialize_descr_sub
+ zcx_abapgit_exception.
+ METHODS serialize_descr_compo
IMPORTING
- !iv_clsname TYPE seoclsname
- RETURNING VALUE(rs_description) TYPE ty_intf-description_sub
+ !iv_clsname TYPE seoclsname
+ RETURNING
+ VALUE(rs_description) TYPE ty_intf-description
RAISING
- zcx_abapgit_exception.
+ zcx_abapgit_exception.
+ METHODS serialize_descr_subco
+ IMPORTING
+ !iv_clsname TYPE seoclsname
+ RETURNING
+ VALUE(rs_description) TYPE ty_intf-description_sub
+ RAISING
+ zcx_abapgit_exception.
METHODS serialize_xml
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_output
@@ -7640,10 +8138,13 @@ CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_obje
RAISING
zcx_abapgit_exception.
- METHODS deserialize_descriptions
+ METHODS deserialize_descr_class
+ IMPORTING
+ it_description TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt OPTIONAL.
+ METHODS deserialize_descr_compo
IMPORTING
it_description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt OPTIONAL.
- METHODS deserialize_descr_sub
+ METHODS deserialize_descr_subco
IMPORTING
it_description TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt OPTIONAL.
METHODS read_xml
@@ -7656,7 +8157,11 @@ CLASS zcl_abapgit_object_intf DEFINITION FINAL INHERITING FROM zcl_abapgit_obje
RETURNING VALUE(rs_intf) TYPE ty_intf
RAISING
zcx_abapgit_exception.
+ METHODS extract_languages_for_transl
+ IMPORTING is_intf TYPE ty_intf
+ RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_languages.
ENDCLASS.
+
CLASS zcl_abapgit_object_msag DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7696,14 +8201,19 @@ CLASS zcl_abapgit_object_msag DEFINITION INHERITING FROM zcl_abapgit_objects_su
zcx_abapgit_exception .
METHODS delete_msgid
IMPORTING
- !iv_message_id TYPE arbgb .
+ !iv_message_id TYPE arbgb
+ RAISING
+ zcx_abapgit_exception.
METHODS free_access_permission
IMPORTING
!iv_message_id TYPE arbgb .
METHODS delete_documentation
IMPORTING
- !iv_message_id TYPE arbgb .
+ !iv_message_id TYPE arbgb
+ RAISING
+ zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_nspc DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -7712,6 +8222,14 @@ CLASS zcl_abapgit_object_nspc DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_object .
+
+ METHODS constructor
+ IMPORTING
+ is_item TYPE zif_abapgit_definitions=>ty_item
+ iv_language TYPE spras
+ !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
+ !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL.
+
PROTECTED SECTION.
PRIVATE SECTION.
@@ -7732,6 +8250,8 @@ CLASS zcl_abapgit_object_nspc DEFINITION
TYPES:
ty_nspc_texts TYPE STANDARD TABLE OF ty_nspc_text .
+ DATA mv_component TYPE cvers-component.
+
METHODS serialize_texts
IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output
@@ -7748,7 +8268,18 @@ CLASS zcl_abapgit_object_nspc DEFINITION
!iv_package TYPE devclass
RAISING
zcx_abapgit_exception .
+ METHODS serialize_sw_component
+ IMPORTING
+ !ii_xml TYPE REF TO zif_abapgit_xml_output
+ RAISING
+ zcx_abapgit_exception .
+ METHODS deserialize_sw_component
+ IMPORTING
+ !ii_xml TYPE REF TO zif_abapgit_xml_input
+ RAISING
+ zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_object_para DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7761,6 +8292,7 @@ CLASS zcl_abapgit_object_para DEFINITION INHERITING FROM zcl_abapgit_objects_su
!iv_paramid TYPE memoryid .
ENDCLASS.
+
CLASS zcl_abapgit_object_prog DEFINITION INHERITING FROM zcl_abapgit_objects_program FINAL.
PUBLIC SECTION.
@@ -7801,6 +8333,7 @@ CLASS zcl_abapgit_object_prog DEFINITION INHERITING FROM zcl_abapgit_objects_pr
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_object_shlp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7810,7 +8343,7 @@ CLASS zcl_abapgit_object_shlp DEFINITION INHERITING FROM zcl_abapgit_objects_su
METHODS handle_dependencies
IMPORTING
- !iv_step TYPE zif_abapgit_definitions=>ty_deserialization_step
+ !iv_step TYPE zif_abapgit_objects=>ty_deserialization_step
CHANGING
!cv_exit TYPE dd30v-selmexit
!cv_done TYPE abap_bool.
@@ -7826,6 +8359,7 @@ CLASS zcl_abapgit_object_shlp DEFINITION INHERITING FROM zcl_abapgit_objects_su
VALUE(rv_done) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_object_sots DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -7861,6 +8395,7 @@ CLASS zcl_abapgit_object_sots DEFINITION INHERITING FROM zcl_abapgit_objects_su
VALUE(rv_filename) TYPE string.
ENDCLASS.
+
CLASS zcl_abapgit_object_tabl_compar DEFINITION
CREATE PUBLIC .
@@ -7912,6 +8447,7 @@ CLASS zcl_abapgit_object_tabl_compar DEFINITION
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_object_tabl DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -7995,6 +8531,7 @@ CLASS zcl_abapgit_object_tabl DEFINITION
RETURNING
VALUE(rv_is_db_table_type) TYPE dd02l-tabclass .
ENDCLASS.
+
CLASS zcl_abapgit_object_tabl_ddl DEFINITION
FINAL
@@ -8097,6 +8634,7 @@ CLASS zcl_abapgit_object_tabl_ddl DEFINITION
CHANGING
!cs_dd03p TYPE dd03p .
ENDCLASS.
+
CLASS zcl_abapgit_object_tobj DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -8116,6 +8654,7 @@ CLASS zcl_abapgit_object_tobj DEFINITION INHERITING FROM zcl_abapgit_objects_su
delete_extra IMPORTING iv_tabname TYPE vim_name.
ENDCLASS.
+
CLASS zcl_abapgit_object_tran DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -8221,6 +8760,7 @@ CLASS zcl_abapgit_object_tran DEFINITION
METHODS is_variant_transaction IMPORTING is_tstcp TYPE tstcp
RETURNING VALUE(rv_variant_transaction) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_object_ttyp DEFINITION INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
@@ -8229,6 +8769,7 @@ CLASS zcl_abapgit_object_ttyp DEFINITION INHERITING FROM zcl_abapgit_objects_su
PRIVATE SECTION.
CONSTANTS c_longtext_id_ttyp TYPE dokil-id VALUE 'TT'.
ENDCLASS.
+
CLASS zcl_abapgit_object_w3xx_super DEFINITION
INHERITING FROM zcl_abapgit_objects_super
@@ -8293,18 +8834,21 @@ CLASS zcl_abapgit_object_w3xx_super DEFINITION
RAISING zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_object_w3ht DEFINITION INHERITING FROM zcl_abapgit_object_w3xx_super FINAL.
PROTECTED SECTION.
METHODS: change_bdc_jump_data REDEFINITION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_object_w3mi DEFINITION INHERITING FROM zcl_abapgit_object_w3xx_super FINAL.
PROTECTED SECTION.
METHODS: change_bdc_jump_data REDEFINITION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_oo_base DEFINITION
ABSTRACT
@@ -8329,6 +8873,7 @@ CLASS zcl_abapgit_oo_base DEFINITION
DATA mv_skip_test_classes TYPE abap_bool .
ENDCLASS.
+
CLASS zcl_abapgit_oo_class DEFINITION
INHERITING FROM zcl_abapgit_oo_base
@@ -8456,6 +9001,7 @@ CLASS zcl_abapgit_oo_class DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_oo_interface DEFINITION
INHERITING FROM zcl_abapgit_oo_base
@@ -8506,6 +9052,7 @@ CLASS zcl_abapgit_oo_interface DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_oo_factory DEFINITION .
PUBLIC SECTION.
@@ -8525,6 +9072,7 @@ CLASS zcl_abapgit_oo_factory DEFINITION .
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_oo_serializer DEFINITION
CREATE PUBLIC .
@@ -8610,6 +9158,7 @@ CLASS zcl_abapgit_oo_serializer DEFINITION
CHANGING
!ct_source TYPE zif_abapgit_definitions=>ty_string_tt .
ENDCLASS.
+
CLASS zcl_abapgit_path DEFINITION
FINAL
CREATE PUBLIC.
@@ -8640,6 +9189,7 @@ CLASS zcl_abapgit_path DEFINITION
RETURNING VALUE(rv_filename) TYPE string.
ENDCLASS.
+
CLASS zcl_abapgit_persistence_db DEFINITION
CREATE PRIVATE .
@@ -8715,7 +9265,7 @@ CLASS zcl_abapgit_persistence_db DEFINITION
zcx_abapgit_exception .
CLASS-METHODS validate_entry_type
IMPORTING
- !iv_type TYPE zif_abapgit_persistence=>ty_type
+ !iv_type TYPE zif_abapgit_persistence=>ty_type
RAISING
zcx_abapgit_exception .
@@ -8736,6 +9286,7 @@ CLASS zcl_abapgit_persistence_db DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_po_file DEFINITION
FINAL
@@ -8785,7 +9336,6 @@ CLASS zcl_abapgit_po_file DEFINITION
comments TYPE STANDARD TABLE OF ty_comment WITH KEY kind text,
END OF ty_msg_pair.
-
DATA mv_lang TYPE laiso.
DATA mt_pairs TYPE SORTED TABLE OF ty_msg_pair WITH UNIQUE KEY source.
@@ -8821,6 +9371,7 @@ CLASS zcl_abapgit_po_file DEFINITION
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_progress DEFINITION
FINAL
@@ -8853,6 +9404,45 @@ CLASS zcl_abapgit_progress DEFINITION
DATA mv_cv_time_next TYPE sy-uzeit .
DATA mv_cv_datum_next TYPE sy-datum .
ENDCLASS.
+
+CLASS zcl_abapgit_properties_file DEFINITION
+
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+ INTERFACES zif_abapgit_i18n_file.
+
+ CONSTANTS:
+ c_properties_feature TYPE string VALUE 'TRANSL'.
+
+ METHODS constructor
+ IMPORTING
+ iv_lang TYPE laiso.
+
+ METHODS parse
+ IMPORTING
+ iv_xdata TYPE xstring
+ RAISING
+ zcx_abapgit_exception.
+
+ METHODS push_text_pairs
+ IMPORTING it_translation TYPE string_table.
+
+ METHODS get_translations
+ EXPORTING
+ ev_data TYPE data
+ RAISING
+ zcx_abapgit_exception.
+
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+
+ DATA mv_lang TYPE laiso.
+ DATA mt_translation TYPE string_table.
+
+ENDCLASS.
+
CLASS zcl_abapgit_sap_namespace DEFINITION
FINAL
@@ -8863,6 +9453,7 @@ CLASS zcl_abapgit_sap_namespace DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_sap_package DEFINITION
CREATE PRIVATE
@@ -8886,6 +9477,7 @@ CLASS zcl_abapgit_sap_package DEFINITION
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_sap_report DEFINITION
FINAL
@@ -8906,6 +9498,7 @@ CLASS zcl_abapgit_sap_report DEFINITION
zcx_abapgit_exception.
ENDCLASS.
+
CLASS zcl_abapgit_sotr_handler DEFINITION
FINAL
@@ -8925,14 +9518,14 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
CLASS-METHODS read_sotr
IMPORTING
- !iv_pgmid TYPE pgmid DEFAULT 'R3TR'
- !iv_object TYPE trobjtype
- !iv_obj_name TYPE csequence
- !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
+ !iv_pgmid TYPE pgmid DEFAULT 'R3TR'
+ !iv_object TYPE trobjtype
+ !iv_obj_name TYPE csequence
+ !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
EXPORTING
- !et_sotr TYPE ty_sotr_tt
- !et_sotr_use TYPE ty_sotr_use_tt
+ !et_sotr TYPE ty_sotr_tt
+ !et_sotr_use TYPE ty_sotr_use_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS create_sotr
@@ -8976,6 +9569,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
VALUE(rs_sotr) TYPE ty_sotr .
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_sots_handler DEFINITION
FINAL
@@ -8995,14 +9589,14 @@ CLASS zcl_abapgit_sots_handler DEFINITION
CLASS-METHODS read_sots
IMPORTING
- !iv_pgmid TYPE pgmid DEFAULT 'R3TR'
- !iv_object TYPE trobjtype
- !iv_obj_name TYPE csequence
- !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
+ !iv_pgmid TYPE pgmid DEFAULT 'R3TR'
+ !iv_object TYPE trobjtype
+ !iv_obj_name TYPE csequence
+ !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params
EXPORTING
- !et_sots TYPE ty_sots_tt
- !et_sots_use TYPE ty_sots_use_tt
+ !et_sots TYPE ty_sots_tt
+ !et_sots_use TYPE ty_sots_use_tt
RAISING
zcx_abapgit_exception.
@@ -9048,6 +9642,7 @@ CLASS zcl_abapgit_sots_handler DEFINITION
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapgit_tadir DEFINITION
FINAL
@@ -9118,12 +9713,8 @@ CLASS zcl_abapgit_tadir DEFINITION
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING
zcx_abapgit_exception .
- METHODS is_sots_excluded
- IMPORTING
- !it_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt
- RETURNING
- VALUE(rv_exclude) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapgit_url DEFINITION
FINAL
@@ -9183,6 +9774,7 @@ CLASS zcl_abapgit_url DEFINITION
RAISING
zcx_abapgit_exception .
ENDCLASS.
+
CLASS zcl_abapgit_version DEFINITION
FINAL
@@ -9232,6 +9824,7 @@ CLASS zcl_abapgit_version DEFINITION
RETURNING
VALUE(rv_version) TYPE i.
ENDCLASS.
+
CLASS zcl_abapgit_xml_pretty DEFINITION
CREATE PUBLIC .
@@ -9250,6 +9843,7 @@ CLASS zcl_abapgit_xml_pretty DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
+
CLASS zcl_abapinst_factory DEFINITION
CREATE PRIVATE.
@@ -9324,12 +9918,13 @@ CLASS zcl_abapinst_factory DEFINITION
CLASS-DATA gi_longtext TYPE REF TO zif_abapgit_longtexts.
CLASS-DATA gi_fe_serv TYPE REF TO zcl_abapgit_frontend_services.
CLASS-DATA gi_lxe_texts TYPE REF TO zif_abapgit_lxe_texts.
- CLASS-DATA gi_gui_jumper TYPE REF TO zif_abapgit_gui_jumper.
+ CLASS-DATA gi_gui_jumper TYPE REF TO zif_abapgit_gui_jumper ##NEEDED.
CLASS-DATA gi_sap_namespace TYPE REF TO zif_abapgit_sap_namespace.
CLASS-DATA gi_sap_report TYPE REF TO zif_abapgit_sap_report.
CLASS-DATA gi_function_module TYPE REF TO zif_abapgit_function_module.
CLASS-DATA gi_default_transport TYPE REF TO zif_abapgit_default_transport .
ENDCLASS.
+
CLASS zcl_abapinst_file DEFINITION
FINAL
@@ -9400,6 +9995,7 @@ CLASS zcl_abapinst_file DEFINITION
zcx_abapinst_exception.
ENDCLASS.
+
CLASS zcl_abapinst_popups DEFINITION
FINAL
@@ -9414,7 +10010,6 @@ CLASS zcl_abapinst_popups DEFINITION
length TYPE lvc_outlen,
key TYPE abap_bool,
END OF ty_alv_column,
-
ty_alv_column_tt TYPE STANDARD TABLE OF ty_alv_column WITH KEY name.
CONSTANTS c_default_column TYPE lvc_fname VALUE `DEFAULT_COLUMN` ##NO_TEXT.
@@ -9476,7 +10071,6 @@ CLASS zcl_abapinst_popups DEFINITION
!iv_height TYPE i
RETURNING
VALUE(rs_position) TYPE ty_popup_position.
-
PROTECTED SECTION.
PRIVATE SECTION.
@@ -9514,6 +10108,317 @@ CLASS zcl_abapinst_popups DEFINITION
!column.
ENDCLASS.
+
+CLASS zcl_tar DEFINITION
+
+ CREATE PRIVATE.
+
+************************************************************************
+* Tar
+*
+* Tar UStar and Pax Formats
+*
+* Based on
+* https://en.wikipedia.org/wiki/Tar_(computing)
+* https://en.wikipedia.org/wiki/Gzip
+* https://en.wikipedia.org/wiki/Pax_(command)
+* https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html
+*
+* Note: Supports reading 7-zip tar files with long links but does not
+* support writing such files.
+*
+* Copyright 2024 apm.to Inc.
+* SPDX-License-Identifier: MIT
+************************************************************************
+* Limitation: Block size is hardcoded to 512 bytes
+************************************************************************
+* Performance note: Do not use && to concatenate xstring since it
+* converts to string implicitly. Use CONCATENATE ... IN BYTE MODE.
+************************************************************************
+
+ PUBLIC SECTION.
+
+ CONSTANTS c_version TYPE string VALUE '2.0.1' ##NEEDED.
+
+ CONSTANTS c_blocksize TYPE i VALUE 512.
+
+ TYPES:
+ ty_typeflag TYPE c LENGTH 1,
+ BEGIN OF ty_keyword,
+ keyword TYPE string,
+ value TYPE string,
+ END OF ty_keyword,
+ ty_keywords TYPE STANDARD TABLE OF ty_keyword WITH KEY keyword,
+ BEGIN OF ty_file,
+ name TYPE string,
+ date TYPE d,
+ time TYPE t,
+ mode TYPE i,
+ unixtime TYPE i,
+ size TYPE i,
+ typeflag TYPE ty_typeflag,
+ content TYPE xstring,
+ keywords TYPE ty_keywords,
+ END OF ty_file,
+ ty_tar_files TYPE STANDARD TABLE OF ty_file WITH KEY name.
+
+ TYPES:
+ "! Ustar header record (512 bytes)
+ BEGIN OF ty_header,
+ name TYPE c LENGTH 100, " Offset 0
+ mode TYPE c LENGTH 8, " 100
+ uid TYPE c LENGTH 8, " 108
+ gid TYPE c LENGTH 8, " 116
+ size TYPE c LENGTH 12, " 124
+ mtime TYPE c LENGTH 12, " 136
+ chksum TYPE c LENGTH 8, " 148
+ typeflag TYPE c LENGTH 1, " 156
+ linkname TYPE c LENGTH 100, " 157
+ magic TYPE c LENGTH 6, " 257
+ version TYPE c LENGTH 2, " 263
+ uname TYPE c LENGTH 32, " 265
+ gname TYPE c LENGTH 32, " 297
+ devmajor TYPE c LENGTH 8, " 329
+ devminor TYPE c LENGTH 8, " 337
+ prefix TYPE c LENGTH 155, " 345
+ padding TYPE c LENGTH 12, " 500
+ END OF ty_header.
+
+ CONSTANTS:
+ BEGIN OF c_typeflag,
+ file TYPE ty_typeflag VALUE '0',
+ hard_link TYPE ty_typeflag VALUE '1',
+ symbolic_link TYPE ty_typeflag VALUE '2',
+ character_special TYPE ty_typeflag VALUE '3',
+ block_special TYPE ty_typeflag VALUE '4',
+ directory TYPE ty_typeflag VALUE '5',
+ fifo TYPE ty_typeflag VALUE '6',
+ contiguous_file TYPE ty_typeflag VALUE '7',
+ long_link TYPE ty_typeflag VALUE 'L', " 7-zip
+ global_header TYPE ty_typeflag VALUE 'g', " pax
+ extended_header TYPE ty_typeflag VALUE 'x', " pax
+ END OF c_typeflag.
+
+ CLASS-METHODS class_constructor.
+
+ "! Create archive
+ CLASS-METHODS new
+ IMPORTING
+ !force_ustar TYPE abap_bool DEFAULT abap_false
+ RETURNING
+ VALUE(result) TYPE REF TO zcl_tar.
+
+ METHODS constructor
+ IMPORTING
+ !force_ustar TYPE abap_bool.
+
+ "! Load archive
+ METHODS load
+ IMPORTING
+ !tar TYPE xstring
+ RETURNING
+ VALUE(result) TYPE REF TO zcl_tar
+ RAISING
+ zcx_error.
+
+ "! Create archive
+ METHODS save
+ RETURNING
+ VALUE(result) TYPE xstring
+ RAISING
+ zcx_error.
+
+ "! Read file from archive
+ METHODS get
+ IMPORTING
+ !name TYPE csequence
+ RETURNING
+ VALUE(result) TYPE xstring
+ RAISING
+ zcx_error.
+
+ "! List the table of contents of an archive (no data)
+ METHODS list
+ RETURNING
+ VALUE(result) TYPE ty_tar_files
+ RAISING
+ zcx_error.
+
+ "! Number of files in archive
+ METHODS file_count
+ RETURNING
+ VALUE(result) TYPE i
+ RAISING
+ zcx_error.
+
+ "! Total size of unpackage files in bytes
+ METHODS unpacked_size
+ RETURNING
+ VALUE(result) TYPE i
+ RAISING
+ zcx_error.
+
+ "! Append file to archive
+ METHODS append
+ IMPORTING
+ !name TYPE csequence
+ !content TYPE xsequence
+ !date TYPE d OPTIONAL
+ !time TYPE t OPTIONAL
+ !mode TYPE i OPTIONAL
+ !typeflag TYPE c OPTIONAL
+ !keywords TYPE ty_keywords OPTIONAL " pax
+ RETURNING
+ VALUE(result) TYPE REF TO zcl_tar
+ RAISING
+ zcx_error.
+
+ "! Delete file from archive
+ METHODS delete
+ IMPORTING
+ !name TYPE csequence
+ RETURNING
+ VALUE(result) TYPE REF TO zcl_tar
+ RAISING
+ zcx_error.
+
+ "! Gzip archive
+ METHODS gzip
+ IMPORTING
+ !tar TYPE xstring
+ RETURNING
+ VALUE(result) TYPE xstring
+ RAISING
+ zcx_error.
+
+ "! Gunzip archive
+ METHODS gunzip
+ IMPORTING
+ !gzip TYPE xstring
+ RETURNING
+ VALUE(result) TYPE xstring
+ RAISING
+ zcx_error.
+
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+
+ CONSTANTS:
+ c_ustar_magic TYPE c LENGTH 5 VALUE 'ustar',
+ c_ustar_version TYPE c LENGTH 2 VALUE '00',
+ c_mode_default TYPE i VALUE 436, " octal 664 rw-rw-r--
+ c_path_sep TYPE c VALUE '/', " unix
+ c_epoch TYPE timestamp VALUE '19700101000000'.
+
+ TYPES:
+ BEGIN OF ty_tar_item,
+ name TYPE string,
+ content TYPE xstring,
+ END OF ty_tar_item,
+ ty_tar_data TYPE HASHED TABLE OF ty_tar_item WITH UNIQUE KEY name.
+
+ TYPES ty_block TYPE x LENGTH c_blocksize.
+
+ CLASS-DATA null TYPE c LENGTH 256.
+
+ DATA:
+ force_ustar TYPE abap_bool,
+ tar_files TYPE ty_tar_files,
+ tar_data TYPE ty_tar_data.
+
+ CLASS-METHODS _append_nulls
+ CHANGING
+ !data TYPE simple.
+
+ CLASS-METHODS _remove_nulls
+ CHANGING
+ !data TYPE simple.
+
+ CLASS-METHODS _pad
+ IMPORTING
+ !number TYPE numeric
+ !length TYPE i
+ RETURNING
+ VALUE(result) TYPE string.
+
+ CLASS-METHODS _unpad
+ IMPORTING
+ !data TYPE csequence
+ RETURNING
+ VALUE(result) TYPE i.
+
+ CLASS-METHODS _from_octal
+ IMPORTING
+ !octal TYPE string
+ RETURNING
+ VALUE(result) TYPE i.
+
+ CLASS-METHODS _to_octal
+ IMPORTING
+ !number TYPE numeric
+ RETURNING
+ VALUE(result) TYPE string.
+
+ CLASS-METHODS _from_xstring
+ IMPORTING
+ !data TYPE xstring
+ RETURNING
+ VALUE(result) TYPE string
+ RAISING
+ zcx_error.
+
+ CLASS-METHODS _to_xstring
+ IMPORTING
+ !data TYPE simple
+ RETURNING
+ VALUE(result) TYPE xstring
+ RAISING
+ zcx_error.
+
+ CLASS-METHODS _from_filename
+ IMPORTING
+ !filename TYPE string
+ EXPORTING
+ !prefix TYPE ty_header-prefix
+ !name TYPE ty_header-name
+ RAISING
+ zcx_error.
+
+ CLASS-METHODS _to_filename
+ IMPORTING
+ !prefix TYPE ty_header-prefix
+ !name TYPE ty_header-name
+ RETURNING
+ VALUE(result) TYPE string.
+
+ CLASS-METHODS _from_unixtime
+ IMPORTING
+ !unixtime TYPE i
+ EXPORTING
+ !date TYPE d
+ !time TYPE t
+ RAISING
+ zcx_error.
+
+ CLASS-METHODS _to_unixtime
+ IMPORTING
+ !date TYPE d
+ !time TYPE t
+ RETURNING
+ VALUE(result) TYPE i
+ RAISING
+ zcx_error.
+
+ CLASS-METHODS _checksum
+ IMPORTING
+ !data TYPE any
+ RETURNING
+ VALUE(result) TYPE i
+ RAISING
+ zcx_error.
+
+ENDCLASS.
+
CLASS zcl_abapinst_installer DEFINITION
FINAL
@@ -9557,6 +10462,8 @@ CLASS zcl_abapinst_installer DEFINITION
CLASS-METHODS install
IMPORTING
+ !iv_apm_name TYPE string OPTIONAL
+ !iv_apm_version TYPE string OPTIONAL
!iv_enum_zip TYPE i OPTIONAL
!iv_name TYPE char255 OPTIONAL
!iv_data TYPE xstring OPTIONAL
@@ -9578,8 +10485,9 @@ CLASS zcl_abapinst_installer DEFINITION
CLASS-METHODS uninstall
IMPORTING
- !iv_name TYPE zif_abapinst_definitions=>ty_name
- !iv_pack TYPE zif_abapinst_definitions=>ty_pack
+ !iv_apm TYPE abap_bool DEFAULT abap_false
+ !iv_name TYPE zif_abapinst_definitions=>ty_name OPTIONAL
+ !iv_pack TYPE zif_abapinst_definitions=>ty_pack OPTIONAL
RAISING
zcx_abapinst_exception.
@@ -9597,6 +10505,10 @@ CLASS zcl_abapinst_installer DEFINITION
PRIVATE SECTION.
CLASS-DATA:
+ BEGIN OF gs_apm,
+ name TYPE string,
+ version TYPE string,
+ END OF gs_apm,
go_db TYPE REF TO zcl_abapinst_persistence,
gt_remote TYPE zif_abapgit_git_definitions=>ty_files_tt,
gs_inst TYPE zif_abapinst_definitions=>ty_inst,
@@ -9781,6 +10693,7 @@ CLASS zcl_abapinst_installer DEFINITION
!it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
ENDCLASS.
+
CLASS zcl_abapinst_log_viewer DEFINITION
FINAL
@@ -9841,6 +10754,7 @@ CLASS zcl_abapinst_log_viewer DEFINITION
zcx_abapgit_exception .
CLASS-METHODS calculate_cell_type .
ENDCLASS.
+
CLASS zcl_abapinst_objects DEFINITION
CREATE PUBLIC .
@@ -10049,6 +10963,7 @@ CLASS zcl_abapinst_objects DEFINITION
RETURNING
VALUE(rv_extra) TYPE string.
ENDCLASS.
+
CLASS zcl_abapinst_persistence DEFINITION
CREATE PUBLIC.
@@ -10081,6 +10996,7 @@ CLASS zcl_abapinst_persistence DEFINITION
!is_inst TYPE zif_abapinst_definitions=>ty_inst
RAISING
zcx_abapinst_exception ##SHADOW[INSERT].
+
METHODS update
IMPORTING
!is_inst TYPE zif_abapinst_definitions=>ty_inst
@@ -10162,6 +11078,7 @@ CLASS zcl_abapinst_persistence DEFINITION
zcx_abapinst_exception.
ENDCLASS.
+
CLASS zcl_abapinst_repo_status DEFINITION
FINAL
@@ -10281,6 +11198,7 @@ CLASS zcl_abapinst_repo_status DEFINITION
VALUE(rt_state) TYPE zif_abapgit_git_definitions=>ty_file_signatures_tt.
ENDCLASS.
+
CLASS zcl_abapinst_requirements DEFINITION
FINAL
@@ -10329,6 +11247,7 @@ CLASS zcl_abapinst_requirements DEFINITION
VALUE(rv_true) TYPE abap_bool.
ENDCLASS.
+
CLASS zcl_abapinst_screen DEFINITION
FINAL
@@ -10407,6 +11326,7 @@ CLASS zcl_abapinst_screen DEFINITION
gv_banner_url TYPE ty_url.
ENDCLASS.
+
CLASS zcl_abapinst_setup DEFINITION
FINAL
@@ -10451,6 +11371,7 @@ CLASS zcl_abapinst_setup DEFINITION
VALUE(rv_package) TYPE devclass.
ENDCLASS.
+
CLASS zcl_abapinst_textpool DEFINITION
FINAL
@@ -10480,11 +11401,8 @@ CLASS zcl_abapinst_textpool DEFINITION
ENDCLASS.
-
-
CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
-
METHOD check_abap_language_version.
" Check if ABAP language version matches repository setting
@@ -10496,7 +11414,6 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDMETHOD.
-
METHOD constructor.
mo_dot_abapgit = io_dot_abapgit.
@@ -10513,7 +11430,6 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_abap_language_vers_by_devc.
DATA lv_class TYPE string.
@@ -10556,18 +11472,16 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_abap_language_vers_by_objt.
DATA lv_class TYPE string.
DATA lo_abap_language_version TYPE REF TO object.
IF mv_has_abap_language_vers = abap_undefined.
- rv_allowed_abap_langu_version = c_any_abap_language_version.
+ rv_abap_langu_version = c_any_abap_language_version.
ELSEIF mv_has_abap_language_vers = abap_false.
- rv_allowed_abap_langu_version = c_no_abap_language_version.
- ELSE. " abap_true
-
+ rv_abap_langu_version = c_no_abap_language_version.
+ ELSE.
lv_class = 'CL_ABAP_LANGUAGE_VERSION'.
TRY.
@@ -10580,17 +11494,15 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
iv_object_type = iv_object_type
iv_package = iv_package
RECEIVING
- rv_default_version = rv_allowed_abap_langu_version.
+ rv_default_version = rv_abap_langu_version.
CATCH cx_root.
- rv_allowed_abap_langu_version = get_default_abap_language_vers( iv_object_type ).
+ rv_abap_langu_version = get_default_abap_language_vers( iv_object_type ).
ENDTRY.
-
ENDIF.
ENDMETHOD.
-
METHOD get_abap_language_vers_by_repo.
rv_abap_language_version = mo_dot_abapgit->get_abap_language_version( ).
IF rv_abap_language_version IS INITIAL.
@@ -10598,7 +11510,6 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD get_default_abap_language_vers.
IF zcl_abapinst_factory=>get_environment( )->is_sap_cloud_platform( ) = abap_true.
@@ -10606,17 +11517,15 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_cloud-cloud_development.
ELSE.
" Differentiate between source code object and non-source code objects
- CASE iv_object_type.
- WHEN 'BDEF' OR 'CLAS' OR 'FUGR' OR 'FUGS' OR 'INTF' OR 'PROG' OR 'TYPE'.
- rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
- WHEN OTHERS.
- rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
- ENDCASE.
+ IF is_source_object_type( iv_object_type ).
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
+ ELSE.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
+ ENDIF.
ENDIF.
ENDMETHOD.
-
METHOD get_description.
CASE iv_abap_language_version.
@@ -10637,7 +11546,6 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_repo_abap_language_version.
DATA lv_abap_language_version TYPE string.
@@ -10648,11 +11556,23 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
CASE lv_abap_language_version.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
- rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
+ IF iv_object_type IS INITIAL OR is_source_object_type( iv_object_type ) = abap_true.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
+ ELSE.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
+ ENDIF.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-key_user.
- rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-key_user.
+ IF iv_object_type IS INITIAL OR is_source_object_type( iv_object_type ) = abap_true.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-key_user.
+ ELSE.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-key_user.
+ ENDIF.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development.
- rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development.
+ IF iv_object_type IS INITIAL OR is_source_object_type( iv_object_type ) = abap_true.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development.
+ ELSE.
+ rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-cloud_development.
+ ENDIF.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
rv_abap_language_version = c_no_abap_language_version.
WHEN OTHERS. " undefined or feature off
@@ -10661,7 +11581,6 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_import_allowed.
DATA lv_package_version TYPE string.
@@ -10685,9 +11604,19 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
ENDCASE.
ENDMETHOD.
-ENDCLASS.
+ METHOD is_source_object_type.
+ " See cl_ars_lang_vrs_objtyp_factory=>constructor
+ CASE iv_object_type.
+ WHEN 'BDEF' OR 'CLAS' OR 'FUGR' OR 'FUGS' OR 'INTF' OR 'PROG'.
+ rv_source_object_type = abap_true.
+ WHEN OTHERS.
+ rv_source_object_type = abap_false.
+ ENDCASE.
+
+ ENDMETHOD.
+ENDCLASS.
CLASS zcl_abapgit_adt_link IMPLEMENTATION.
@@ -10754,7 +11683,6 @@ CLASS zcl_abapgit_adt_link IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_adt_objects_and_names.
DATA lv_obj_type TYPE trobjtype.
@@ -10815,7 +11743,6 @@ CLASS zcl_abapgit_adt_link IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_adt_jump_possible.
DATA: lo_wb_request TYPE REF TO cl_wb_request,
@@ -10855,7 +11782,6 @@ CLASS zcl_abapgit_adt_link IMPLEMENTATION.
ENDMETHOD.
-
METHOD jump.
DATA lv_adt_link TYPE string.
@@ -10876,33 +11802,41 @@ CLASS zcl_abapgit_adt_link IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
-CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
-
+CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION.
METHOD constructor.
mv_aff_enabled = zcl_abapgit_feature=>is_enabled( c_aff_feature ).
ENDMETHOD.
-
METHOD initialize_registry_table.
+ register( 'APLO' ).
+ register( 'BGQC' ).
+ register( 'CDBO' ).
register( 'CHKC' ).
register( 'CHKO' ).
register( 'CHKV' ).
+ register( 'COTA' ).
register( 'DRTY' ).
register( 'DTEB' ).
+ register( 'DSFI' ).
+ register( 'DRAS' ).
+ register( 'DSFD' ).
register( 'EVTB' ).
register( 'EEEC' ).
register( 'GSMP' ).
register( iv_obj_type = 'INTF'
iv_experimental = abap_true ).
+ register( 'SAJT' ).
+ register( 'SAJC' ).
register( 'SMBC' ).
+ register( 'SWCR' ).
register( 'NONT' ).
register( 'RONT' ).
+ register( 'UIAD' ).
+ register( 'UIPG' ).
+ register( 'UIST' ).
ENDMETHOD.
-
METHOD register.
DATA ls_registry_entry TYPE ty_registry_entry.
@@ -10911,7 +11845,6 @@ CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
INSERT ls_registry_entry INTO TABLE gt_registry.
ENDMETHOD.
-
METHOD zif_abapgit_aff_registry~is_supported_object_type.
DATA ls_registry_entry TYPE ty_registry_entry.
@@ -10930,6 +11863,7 @@ CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.
+
**********************************************************************
* UTILS
**********************************************************************
@@ -10952,27 +11886,27 @@ INTERFACE lif_kind.
CONSTANTS:
BEGIN OF numeric,
- int1 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int1,
- int2 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int2,
- int4 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int,
- int8 TYPE ty_kind VALUE '8', " cl_abap_tabledescr=>typekind_int8 not in lower releases
- float TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_float,
- packed TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_packed,
- decfloat16 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_decfloat16,
- decfloat34 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_decfloat34,
+ int1 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int1,
+ int2 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int2,
+ int4 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int,
+ int8 TYPE ty_kind VALUE '8', " cl_abap_typedescr=>typekind_int8 not in lower releases
+ float TYPE ty_kind VALUE cl_abap_typedescr=>typekind_float,
+ packed TYPE ty_kind VALUE cl_abap_typedescr=>typekind_packed,
+ decfloat16 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_decfloat16,
+ decfloat34 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_decfloat34,
END OF numeric.
CONSTANTS:
BEGIN OF texts,
- char TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_char,
- numc TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_num,
- string TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_string,
+ char TYPE ty_kind VALUE cl_abap_typedescr=>typekind_char,
+ numc TYPE ty_kind VALUE cl_abap_typedescr=>typekind_num,
+ string TYPE ty_kind VALUE cl_abap_typedescr=>typekind_string,
END OF texts.
CONSTANTS:
BEGIN OF binary,
- hex TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_hex,
- xstring TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_xstring,
+ hex TYPE ty_kind VALUE cl_abap_typedescr=>typekind_hex,
+ xstring TYPE ty_kind VALUE cl_abap_typedescr=>typekind_xstring,
END OF binary.
CONSTANTS:
@@ -10991,27 +11925,46 @@ CLASS lcl_utils DEFINITION FINAL.
CLASS-METHODS normalize_path
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_path) TYPE string.
CLASS-METHODS split_path
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
RETURNING
VALUE(rv_path_name) TYPE zif_abapgit_ajson_types=>ty_path_name.
CLASS-METHODS validate_array_index
IMPORTING
- iv_path TYPE string
- iv_index TYPE string
+ iv_path TYPE string
+ iv_index TYPE string
RETURNING
VALUE(rv_index) TYPE i
RAISING
zcx_abapgit_ajson_error.
CLASS-METHODS string_to_xstring_utf8
IMPORTING
- iv_str TYPE string
+ iv_str TYPE string
RETURNING
VALUE(rv_xstr) TYPE xstring.
+ CLASS-METHODS xstring_to_string_utf8
+ IMPORTING
+ iv_xstr TYPE xstring
+ RETURNING
+ VALUE(rv_str) TYPE string.
+ CLASS-METHODS any_to_xstring
+ IMPORTING
+ iv_data TYPE any
+ RETURNING
+ VALUE(rv_xstr) TYPE xstring
+ RAISING
+ zcx_abapgit_ajson_error.
+ CLASS-METHODS any_to_string
+ IMPORTING
+ iv_data TYPE any
+ RETURNING
+ VALUE(rv_str) TYPE string
+ RAISING
+ zcx_abapgit_ajson_error.
ENDCLASS.
@@ -11026,24 +11979,55 @@ CLASS lcl_utils IMPLEMENTATION.
TRY.
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out
- RECEIVING
- instance = lo_conv.
+ RECEIVING
+ instance = lo_conv.
CALL METHOD lo_conv->('IF_ABAP_CONV_OUT~CONVERT')
- EXPORTING
- source = iv_str
- RECEIVING
- result = rv_xstr.
+ EXPORTING
+ source = iv_str
+ RECEIVING
+ result = rv_xstr.
CATCH cx_sy_dyn_call_illegal_class.
CALL METHOD (lv_out_ce)=>create
- EXPORTING
- encoding = 'UTF-8'
- RECEIVING
- conv = lo_conv.
+ EXPORTING
+ encoding = 'UTF-8'
+ RECEIVING
+ conv = lo_conv.
CALL METHOD lo_conv->('CONVERT')
- EXPORTING
- data = iv_str
- IMPORTING
- buffer = rv_xstr.
+ EXPORTING
+ data = iv_str
+ IMPORTING
+ buffer = rv_xstr.
+ ENDTRY.
+
+ ENDMETHOD.
+
+ METHOD xstring_to_string_utf8.
+
+ DATA lo_conv TYPE REF TO object.
+ DATA lv_in_ce TYPE string.
+
+ lv_in_ce = 'CL_ABAP_CONV_IN_CE'.
+
+ TRY.
+ CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
+ RECEIVING
+ instance = lo_conv.
+ CALL METHOD lo_conv->('IF_ABAP_CONV_IN~CONVERT')
+ EXPORTING
+ source = iv_xstr
+ RECEIVING
+ result = rv_str.
+ CATCH cx_sy_dyn_call_illegal_class.
+ CALL METHOD (lv_in_ce)=>create
+ EXPORTING
+ encoding = 'UTF-8'
+ RECEIVING
+ conv = lo_conv.
+ CALL METHOD lo_conv->('CONVERT')
+ EXPORTING
+ data = iv_xstr
+ IMPORTING
+ buffer = rv_str.
ENDTRY.
ENDMETHOD.
@@ -11108,8 +12092,75 @@ CLASS lcl_utils IMPLEMENTATION.
ENDMETHOD.
-ENDCLASS.
+ METHOD any_to_xstring.
+ " supports xstring, char, string, or string_table as input
+
+ DATA lo_type TYPE REF TO cl_abap_typedescr.
+ DATA lo_table_type TYPE REF TO cl_abap_tabledescr.
+ DATA lv_str TYPE string.
+
+ FIELD-SYMBOLS: TYPE STANDARD TABLE.
+
+ lo_type = cl_abap_typedescr=>describe_by_data( iv_data ).
+ CASE lo_type->type_kind.
+ WHEN lif_kind=>binary-xstring.
+ rv_xstr = iv_data.
+ WHEN lif_kind=>texts-string OR lif_kind=>texts-char.
+ rv_xstr = string_to_xstring_utf8( iv_data ).
+ WHEN lif_kind=>table.
+ lo_table_type ?= lo_type.
+ IF lo_table_type->table_kind <> cl_abap_tabledescr=>tablekind_std.
+ zcx_abapgit_ajson_error=>raise( 'Unsupported type of input table (must be standard table)' ).
+ ENDIF.
+ TRY.
+ ASSIGN iv_data TO .
+ lv_str = concat_lines_of( table =
+ sep = cl_abap_char_utilities=>newline ).
+ rv_xstr = string_to_xstring_utf8( lv_str ).
+ CATCH cx_root.
+ zcx_abapgit_ajson_error=>raise( 'Error converting input table (should be string_table)' ).
+ ENDTRY.
+ WHEN OTHERS.
+ zcx_abapgit_ajson_error=>raise( 'Unsupported type of input (must be char, string, string_table, or xstring)' ).
+ ENDCASE.
+
+ ENDMETHOD.
+
+ METHOD any_to_string.
+ " supports xstring, char, string, or string_table as input
+
+ DATA lo_type TYPE REF TO cl_abap_typedescr.
+ DATA lo_table_type TYPE REF TO cl_abap_tabledescr.
+
+ FIELD-SYMBOLS: TYPE STANDARD TABLE.
+
+ lo_type = cl_abap_typedescr=>describe_by_data( iv_data ).
+
+ CASE lo_type->type_kind.
+ WHEN lif_kind=>binary-xstring.
+ rv_str = xstring_to_string_utf8( iv_data ).
+ WHEN lif_kind=>texts-string OR lif_kind=>texts-char.
+ rv_str = iv_data.
+ WHEN lif_kind=>table.
+ lo_table_type ?= lo_type.
+ IF lo_table_type->table_kind <> cl_abap_tabledescr=>tablekind_std.
+ zcx_abapgit_ajson_error=>raise( 'Unsupported type of input table (must be standard table)' ).
+ ENDIF.
+ TRY.
+ ASSIGN iv_data TO .
+ rv_str = concat_lines_of( table =
+ sep = cl_abap_char_utilities=>newline ).
+ CATCH cx_root.
+ zcx_abapgit_ajson_error=>raise( 'Error converting input table (should be string_table)' ).
+ ENDTRY.
+ WHEN OTHERS.
+ zcx_abapgit_ajson_error=>raise( 'Unsupported type of input (must be char, string, string_table, or xstring)' ).
+ ENDCASE.
+
+ ENDMETHOD.
+
+ENDCLASS.
**********************************************************************
* PARSER
@@ -11120,8 +12171,8 @@ CLASS lcl_json_parser DEFINITION FINAL.
METHODS parse
IMPORTING
- iv_json TYPE string
- iv_keep_item_order TYPE abap_bool DEFAULT abap_false
+ iv_json TYPE any
+ iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
@@ -11144,7 +12195,7 @@ CLASS lcl_json_parser DEFINITION FINAL.
METHODS _parse
IMPORTING
- iv_json TYPE string
+ iv_json TYPE xstring
RETURNING
VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
@@ -11165,17 +12216,20 @@ CLASS lcl_json_parser IMPLEMENTATION.
DATA lx_sxml_parse TYPE REF TO cx_sxml_parse_error.
DATA lx_sxml TYPE REF TO cx_dynamic_check.
DATA lv_location TYPE string.
+ DATA lv_json TYPE xstring.
mv_keep_item_order = iv_keep_item_order.
+ lv_json = lcl_utils=>any_to_xstring( iv_json ).
+
TRY.
- " TODO sane JSON check:
- " JSON can be true,false,null,(-)digits
- " or start from " or from {
- rt_json_tree = _parse( iv_json ).
+ " TODO sane JSON check:
+ " JSON can be true,false,null,(-)digits
+ " or start from " or from {
+ rt_json_tree = _parse( lv_json ).
CATCH cx_sxml_parse_error INTO lx_sxml_parse.
lv_location = _get_location(
- iv_json = iv_json
+ iv_json = lcl_utils=>any_to_string( iv_json )
iv_offset = lx_sxml_parse->xml_offset ).
zcx_abapgit_ajson_error=>raise(
iv_msg = |Json parsing error (SXML): { lx_sxml_parse->get_text( ) }|
@@ -11237,7 +12291,7 @@ CLASS lcl_json_parser IMPLEMENTATION.
IF iv_json IS INITIAL.
RETURN.
ENDIF.
- lo_reader = cl_sxml_string_reader=>create( lcl_utils=>string_to_xstring_utf8( iv_json ) ).
+ lo_reader = cl_sxml_string_reader=>create( iv_json ).
" TODO: self protection, check non-empty, check starting from object ...
@@ -11247,7 +12301,6 @@ CLASS lcl_json_parser IMPLEMENTATION.
EXIT.
ENDIF.
-
CASE lo_node->type.
WHEN if_sxml_node=>co_nt_element_open.
DATA lt_attributes TYPE if_sxml_attribute=>attributes.
@@ -11338,9 +12391,9 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
CLASS-METHODS stringify
IMPORTING
- it_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
- iv_indent TYPE i DEFAULT 0
- iv_keep_item_order TYPE abap_bool DEFAULT abap_false
+ it_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
+ iv_indent TYPE i DEFAULT 0
+ iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rv_json_string) TYPE string
RAISING
@@ -11360,7 +12413,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
CLASS-METHODS escape_string
IMPORTING
- iv_unescaped TYPE string
+ iv_unescaped TYPE string
RETURNING
VALUE(rv_escaped) TYPE string.
@@ -11379,7 +12432,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
METHODS stringify_set
IMPORTING
iv_parent_path TYPE string
- iv_array TYPE abap_bool
+ iv_array TYPE abap_bool
RAISING
zcx_abapgit_ajson_error.
@@ -11567,7 +12620,6 @@ CLASS lcl_json_serializer IMPLEMENTATION.
ENDCLASS.
-
**********************************************************************
* JSON_TO_ABAP
**********************************************************************
@@ -11582,7 +12634,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS to_abap
IMPORTING
- it_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_ts
+ it_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_ts
CHANGING
c_container TYPE any
RAISING
@@ -11630,16 +12682,16 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS any_to_abap
IMPORTING
- iv_path TYPE string
- is_parent_type TYPE ty_type_cache OPTIONAL
+ iv_path TYPE string
+ is_parent_type TYPE ty_type_cache OPTIONAL
i_container_ref TYPE REF TO data
RAISING
zcx_abapgit_ajson_error.
METHODS value_to_abap
IMPORTING
- is_node TYPE zif_abapgit_ajson_types=>ty_node
- is_node_type TYPE ty_type_cache
+ is_node TYPE zif_abapgit_ajson_types=>ty_node
+ is_node_type TYPE ty_type_cache
i_container_ref TYPE REF TO data
RAISING
zcx_abapgit_ajson_error
@@ -11647,9 +12699,9 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS get_node_type
IMPORTING
- is_node TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL " Empty for root
- is_parent_type TYPE ty_type_cache OPTIONAL
- i_container_ref TYPE REF TO data OPTIONAL
+ is_node TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL " Empty for root
+ is_parent_type TYPE ty_type_cache OPTIONAL
+ i_container_ref TYPE REF TO data OPTIONAL
RETURNING
VALUE(rs_node_type) TYPE ty_type_cache
RAISING
@@ -11793,12 +12845,12 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
TRY.
- " array_index because stringified index goes in wrong order [1, 10, 2 ...]
+ " array_index because stringified index goes in wrong order [1, 10, 2 ...]
LOOP AT mr_nodes->* ASSIGNING USING KEY array_index WHERE path = iv_path.
- " Get or create type cache record
+ " Get or create type cache record
IF is_parent_type-type_kind <> lif_kind=>table OR ls_node_type-type_kind IS INITIAL.
- " table records are the same, no need to refetch twice
+ " table records are the same, no need to refetch twice
ls_node_type = get_node_type(
is_node =
@@ -11810,28 +12862,45 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
ENDIF.
- " Validate node type
+ " Validate node type
IF ls_node_type-type_kind = lif_kind=>data_ref OR
ls_node_type-type_kind = lif_kind=>object_ref.
- " TODO maybe in future
+
+ FIELD-SYMBOLS TYPE any.
+* ASSIGN COMPONENT ls_node_type-target_field_name OF STRUCTURE TO .
+* ASSERT sy-subrc = 0.
+* lr_target_field = .
+*
+* ls_node_type = get_node_type(
+* is_node =
+* is_parent_type = is_parent_type ).
+*
+* any_to_abap(
+* iv_path = iv_path
+* is_parent_type = ls_node_type
+* i_container_ref = i_container_ref ).
+*
+* RETURN.
+ " TODO maybe in future
zcx_abapgit_ajson_error=>raise( 'Cannot assign to ref' ).
ENDIF.
- " Find target field reference
+ " Find target field reference
CASE is_parent_type-type_kind.
WHEN lif_kind=>table.
IF NOT ls_node_type-target_field_name CO '0123456789'.
- " Does not affect anything actually but for integrity
+ " Does not affect anything actually but for integrity
zcx_abapgit_ajson_error=>raise( 'Need index to access tables' ).
ENDIF.
IF is_parent_type-tab_item_buf IS NOT BOUND. " Indirect hint that table was srt/hsh, see get_node_type
APPEND INITIAL LINE TO REFERENCE INTO lr_target_field.
ASSERT sy-subrc = 0.
+ ELSE.
+ CLEAR .
ENDIF.
WHEN lif_kind=>struct_flat OR lif_kind=>struct_deep.
- FIELD-SYMBOLS TYPE any.
ASSIGN COMPONENT ls_node_type-target_field_name OF STRUCTURE TO .
ASSERT sy-subrc = 0.
GET REFERENCE OF INTO lr_target_field.
@@ -11843,7 +12912,7 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
zcx_abapgit_ajson_error=>raise( 'Unexpected parent type' ).
ENDCASE.
- " Process value assignment
+ " Process value assignment
CASE -type.
WHEN zif_abapgit_ajson_types=>node_type-object.
IF ls_node_type-type_kind <> lif_kind=>struct_flat AND
@@ -11924,12 +12993,19 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
WHEN zif_abapgit_ajson_types=>node_type-string.
" TODO: check type ?
- IF is_node_type-type_kind = lif_kind=>date AND is_node-value IS NOT INITIAL.
- = to_date( is_node-value ).
- ELSEIF is_node_type-type_kind = lif_kind=>time AND is_node-value IS NOT INITIAL.
- = to_time( is_node-value ).
- ELSEIF is_node_type-type_kind = lif_kind=>packed AND is_node-value IS NOT INITIAL.
- = to_timestamp( is_node-value ).
+ IF is_node-value IS NOT INITIAL.
+ IF is_node_type-type_kind = lif_kind=>date.
+ = to_date( is_node-value ).
+ ELSEIF is_node_type-type_kind = lif_kind=>time.
+ = to_time( is_node-value ).
+ ELSEIF is_node_type-dd->absolute_name = '\TYPE=TIMESTAMP'
+ OR is_node_type-dd->absolute_name = '\TYPE=TIMESTAMPL'.
+ = to_timestamp( is_node-value ).
+ ELSEIF is_node_type-type_kind = lif_kind=>packed. " Number as a string, but not a timestamp
+ = is_node-value.
+ ELSE.
+ = is_node-value.
+ ENDIF.
ELSE.
= is_node-value.
ENDIF.
@@ -12064,12 +13140,12 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS convert
IMPORTING
- iv_data TYPE any
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
- iv_array_index TYPE i DEFAULT 0
- ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
- is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
- iv_item_order TYPE i DEFAULT 0
+ iv_data TYPE any
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
+ iv_array_index TYPE i DEFAULT 0
+ ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
+ iv_item_order TYPE i DEFAULT 0
RETURNING
VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
@@ -12077,13 +13153,13 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS insert_with_type
IMPORTING
- iv_data TYPE any
- iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
- iv_array_index TYPE i DEFAULT 0
- ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
- is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
- iv_item_order TYPE i DEFAULT 0
+ iv_data TYPE any
+ iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
+ iv_array_index TYPE i DEFAULT 0
+ ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
+ is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
+ iv_item_order TYPE i DEFAULT 0
RETURNING
VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
@@ -12091,17 +13167,17 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS format_date
IMPORTING
- iv_date TYPE d
+ iv_date TYPE d
RETURNING
VALUE(rv_str) TYPE string.
CLASS-METHODS format_time
IMPORTING
- iv_time TYPE t
+ iv_time TYPE t
RETURNING
VALUE(rv_str) TYPE string.
CLASS-METHODS format_timestamp
IMPORTING
- iv_ts TYPE timestamp
+ iv_ts TYPE timestamp
RETURNING
VALUE(rv_str) TYPE string.
@@ -12116,84 +13192,84 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
METHODS convert_any
IMPORTING
- iv_data TYPE any
- io_type TYPE REF TO cl_abap_typedescr
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ io_type TYPE REF TO cl_abap_typedescr
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS convert_ajson
IMPORTING
- io_json TYPE REF TO zif_abapgit_ajson
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ io_json TYPE REF TO zif_abapgit_ajson
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS convert_value
IMPORTING
- iv_data TYPE any
- io_type TYPE REF TO cl_abap_typedescr
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ io_type TYPE REF TO cl_abap_typedescr
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS convert_ref
IMPORTING
- iv_data TYPE any
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS convert_struc
IMPORTING
- iv_data TYPE any
- io_type TYPE REF TO cl_abap_typedescr
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ io_type TYPE REF TO cl_abap_typedescr
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS convert_table
IMPORTING
- iv_data TYPE any
- io_type TYPE REF TO cl_abap_typedescr
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ io_type TYPE REF TO cl_abap_typedescr
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
METHODS insert_value_with_type
IMPORTING
- iv_data TYPE any
- iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
- io_type TYPE REF TO cl_abap_typedescr
- is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
- iv_index TYPE i DEFAULT 0
+ iv_data TYPE any
+ iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
+ io_type TYPE REF TO cl_abap_typedescr
+ is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
+ iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0
CHANGING
- ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
+ ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING
zcx_abapgit_ajson_error.
@@ -12424,6 +13500,8 @@ CLASS lcl_abap_to_json IMPLEMENTATION.
DATA ls_node LIKE LINE OF ct_nodes.
+ FIELD-SYMBOLS TYPE any.
+
ls_node-path = is_prefix-path.
ls_node-name = is_prefix-name.
ls_node-index = iv_index.
@@ -12442,12 +13520,22 @@ CLASS lcl_abap_to_json IMPLEMENTATION.
IF iv_data IS INITIAL.
ls_node-type = zif_abapgit_ajson_types=>node_type-null.
ls_node-value = 'null'.
+ APPEND ls_node TO ct_nodes.
ELSE.
" TODO support data references
- zcx_abapgit_ajson_error=>raise( |Unexpected reference @{ is_prefix-path && is_prefix-name }| ).
- ENDIF.
+ ASSIGN iv_data->* TO .
- APPEND ls_node TO ct_nodes.
+ convert_any(
+ EXPORTING
+ iv_data =
+ io_type = cl_abap_typedescr=>describe_by_data( )
+ is_prefix = is_prefix
+ iv_index = iv_index
+ iv_item_order = iv_item_order
+ CHANGING
+ ct_nodes = ct_nodes ).
+ "zcx_abapgit_ajson_error=>raise( |Unexpected reference @{ is_prefix-path && is_prefix-name }| ).
+ ENDIF.
ENDMETHOD.
@@ -12674,7 +13762,7 @@ INTERFACE lif_mutator_runner.
IMPORTING
it_source_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
EXPORTING
- et_dest_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
+ et_dest_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.
@@ -12688,7 +13776,7 @@ CLASS lcl_filter_runner DEFINITION FINAL.
INTERFACES lif_mutator_runner.
CLASS-METHODS new
IMPORTING
- ii_filter TYPE REF TO zif_abapgit_ajson_filter
+ ii_filter TYPE REF TO zif_abapgit_ajson_filter
RETURNING
VALUE(ro_instance) TYPE REF TO lcl_filter_runner.
METHODS constructor
@@ -12702,7 +13790,7 @@ CLASS lcl_filter_runner DEFINITION FINAL.
METHODS walk
IMPORTING
- iv_path TYPE string
+ iv_path TYPE string
CHANGING
cs_parent TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL
RAISING
@@ -12734,8 +13822,13 @@ CLASS lcl_filter_runner IMPLEMENTATION.
METHOD walk.
DATA ls_node TYPE zif_abapgit_ajson_types=>ty_node.
+ DATA lv_tab_key TYPE string.
- LOOP AT mr_source_tree->* INTO ls_node WHERE path = iv_path.
+ IF cs_parent-type = zif_abapgit_ajson_types=>node_type-array.
+ lv_tab_key = 'array_index'. " path + index
+ ENDIF.
+
+ LOOP AT mr_source_tree->* INTO ls_node USING KEY (lv_tab_key) WHERE path = iv_path.
CASE ls_node-type.
WHEN zif_abapgit_ajson_types=>node_type-boolean OR zif_abapgit_ajson_types=>node_type-null
OR zif_abapgit_ajson_types=>node_type-number OR zif_abapgit_ajson_types=>node_type-string.
@@ -12795,7 +13888,7 @@ CLASS lcl_mapper_runner DEFINITION FINAL.
INTERFACES lif_mutator_runner.
CLASS-METHODS new
IMPORTING
- ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
+ ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
RETURNING
VALUE(ro_instance) TYPE REF TO lcl_mapper_runner.
METHODS constructor
@@ -12854,7 +13947,6 @@ CLASS lcl_mapper_runner IMPLEMENTATION.
METHOD process_deep_node.
-
FIELD-SYMBOLS - LIKE LINE OF mr_source_tree->*.
DATA ls_renamed_node LIKE
- .
@@ -12909,7 +14001,7 @@ CLASS lcl_mutator_queue DEFINITION FINAL.
VALUE(ro_instance) TYPE REF TO lcl_mutator_queue.
METHODS add
IMPORTING
- ii_mutator TYPE REF TO lif_mutator_runner
+ ii_mutator TYPE REF TO lif_mutator_runner
RETURNING
VALUE(ro_self) TYPE REF TO lcl_mutator_queue.
@@ -12971,18 +14063,14 @@ CLASS lcl_mutator_queue IMPLEMENTATION.
ENDCLASS.
-
-
CLASS zcl_abapgit_ajson IMPLEMENTATION.
-
METHOD constructor.
ms_opts-keep_item_order = iv_keep_item_order.
ms_opts-to_abap_corresponding_only = iv_to_abap_corresponding_only.
format_datetime( iv_format_datetime ).
ENDMETHOD.
-
METHOD create_empty.
CREATE OBJECT ro_instance
EXPORTING
@@ -12992,7 +14080,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ro_instance->mi_custom_mapping = ii_custom_mapping.
ENDMETHOD.
-
METHOD create_from.
DATA lo_mutator_queue TYPE REF TO lcl_mutator_queue.
@@ -13027,7 +14114,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD delete_subtree.
DATA lv_parent_path TYPE string.
@@ -13060,7 +14146,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_item.
FIELD-SYMBOLS
- LIKE LINE OF mt_json_tree.
@@ -13078,7 +14163,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD new.
CREATE OBJECT ro_instance
EXPORTING
@@ -13087,7 +14171,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
iv_keep_item_order = iv_keep_item_order.
ENDMETHOD.
-
METHOD parse.
DATA lo_parser TYPE REF TO lcl_json_parser.
@@ -13106,7 +14189,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD prove_path_exists.
DATA lt_path TYPE string_table.
@@ -13148,14 +14230,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_only_watchdog.
IF ms_opts-read_only = abap_true.
zcx_abapgit_ajson_error=>raise( 'This json instance is read only' ).
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~array_to_string_table.
DATA lv_normalized_path TYPE string.
@@ -13194,7 +14274,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~clear.
read_only_watchdog( ).
@@ -13202,12 +14281,10 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~clone.
ri_json = create_from( me ).
ENDMETHOD.
-
METHOD zif_abapgit_ajson~delete.
read_only_watchdog( ).
@@ -13223,30 +14300,25 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~exists.
rv_exists = boolc( get_item( iv_path ) IS NOT INITIAL ).
ENDMETHOD.
-
METHOD zif_abapgit_ajson~filter.
ri_json = create_from(
ii_source_json = me
ii_filter = ii_filter ).
ENDMETHOD.
-
METHOD zif_abapgit_ajson~format_datetime.
ms_opts-format_datetime = iv_use_iso.
ri_json = me.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~freeze.
ms_opts-read_only = abap_true.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13257,7 +14329,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_boolean.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13272,7 +14343,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_date.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13291,7 +14361,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_integer.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13302,7 +14371,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_node_type.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13313,7 +14381,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_number.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13324,7 +14391,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_string.
DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13335,7 +14401,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~get_timestamp.
DATA lo_to_abap TYPE REF TO lcl_json_to_abap.
@@ -13357,25 +14422,21 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~is_empty.
rv_yes = boolc( lines( mt_json_tree ) = 0 ).
ENDMETHOD.
-
METHOD zif_abapgit_ajson~keep_item_order.
ms_opts-keep_item_order = abap_true.
ri_json = me.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~map.
ri_json = create_from(
ii_source_json = me
ii_mapper = ii_mapper ).
ENDMETHOD.
-
METHOD zif_abapgit_ajson~members.
DATA lv_normalized_path TYPE string.
@@ -13389,12 +14450,10 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~opts.
rs_opts = ms_opts.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~push.
DATA lr_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13436,7 +14495,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set.
DATA ls_split_path TYPE zif_abapgit_ajson_types=>ty_path_name.
@@ -13528,7 +14586,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~setx.
DATA lv_path TYPE string.
@@ -13600,7 +14657,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_boolean.
ri_json = me.
@@ -13614,7 +14670,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_date.
ri_json = me.
@@ -13629,7 +14684,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_integer.
ri_json = me.
@@ -13641,7 +14695,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_null.
ri_json = me.
@@ -13654,7 +14707,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_string.
ri_json = me.
@@ -13668,7 +14720,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~set_timestamp.
ri_json = me.
@@ -13683,7 +14734,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~slice.
DATA lo_section TYPE REF TO zcl_abapgit_ajson.
@@ -13721,7 +14771,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~stringify.
rv_json = lcl_json_serializer=>stringify(
@@ -13731,7 +14780,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~touch_array.
DATA lr_node TYPE REF TO zif_abapgit_ajson_types=>ty_node.
@@ -13770,8 +14818,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ls_new_node-name = ls_split_path-name.
ls_new_node-type = zif_abapgit_ajson_types=>node_type-array.
- IF ms_opts-keep_item_order = abap_true AND ls_deleted_node IS NOT INITIAL.
- ls_new_node-order = ls_deleted_node-order.
+ IF ms_opts-keep_item_order = abap_true.
+ IF ls_deleted_node IS NOT INITIAL.
+ ls_new_node-order = ls_deleted_node-order.
+ ELSE.
+ ls_new_node-order = lr_parent->children.
+ ENDIF.
ENDIF.
INSERT ls_new_node INTO TABLE mt_json_tree.
@@ -13784,7 +14836,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~to_abap.
DATA lo_to_abap TYPE REF TO lcl_json_to_abap.
@@ -13803,12 +14854,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_ajson~to_abap_corresponding_only.
ms_opts-to_abap_corresponding_only = iv_enable.
ri_json = me.
ENDMETHOD.
ENDCLASS.
+
**********************************************************************
* FILTER EMPTY VALUES
**********************************************************************
@@ -13838,8 +14889,8 @@ CLASS lcl_paths_filter DEFINITION FINAL.
INTERFACES zif_abapgit_ajson_filter.
METHODS constructor
IMPORTING
- it_skip_paths TYPE string_table OPTIONAL
- iv_skip_paths TYPE string OPTIONAL
+ it_skip_paths TYPE string_table OPTIONAL
+ iv_skip_paths TYPE string OPTIONAL
iv_pattern_search TYPE abap_bool
RAISING
zcx_abapgit_ajson_error.
@@ -13954,23 +15005,18 @@ CLASS lcl_and_filter IMPLEMENTATION.
ENDCLASS.
-
-
CLASS zcl_abapgit_ajson_filter_lib IMPLEMENTATION.
-
METHOD create_and_filter.
CREATE OBJECT ri_filter TYPE lcl_and_filter
EXPORTING
it_filters = it_filters.
ENDMETHOD.
-
METHOD create_empty_filter.
CREATE OBJECT ri_filter TYPE lcl_empty_filter.
ENDMETHOD.
-
METHOD create_path_filter.
CREATE OBJECT ri_filter TYPE lcl_paths_filter
EXPORTING
@@ -13979,6 +15025,689 @@ CLASS zcl_abapgit_ajson_filter_lib IMPLEMENTATION.
iv_skip_paths = iv_skip_paths.
ENDMETHOD.
ENDCLASS.
+
+CLASS lcl_mapping_fields IMPLEMENTATION. "DEPRECATED
+
+ METHOD constructor.
+
+ DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
+
+ LOOP AT it_mapping_fields INTO ls_mapping_field.
+ ls_mapping_field-abap = to_upper( ls_mapping_field-abap ).
+ INSERT ls_mapping_field INTO TABLE mt_mapping_fields.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
+
+ READ TABLE mt_mapping_fields INTO ls_mapping_field
+ WITH KEY json COMPONENTS json = iv_name.
+ IF sy-subrc = 0.
+ rv_result = ls_mapping_field-abap.
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ DATA lv_field TYPE string.
+ DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
+
+ lv_field = to_upper( iv_name ).
+
+ READ TABLE mt_mapping_fields INTO ls_mapping_field
+ WITH KEY abap COMPONENTS abap = lv_field.
+ IF sy-subrc = 0.
+ rv_result = ls_mapping_field-json.
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_rename IMPLEMENTATION.
+
+ METHOD constructor.
+ mt_rename_map = it_rename_map.
+ mv_rename_by = iv_rename_by.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ DATA lv_full_path TYPE string.
+ DATA lv_pair_found TYPE abap_bool.
+ FIELD-SYMBOLS LIKE LINE OF mt_rename_map.
+
+ CASE mv_rename_by.
+ WHEN zcl_abapgit_ajson_mapping=>rename_by-attr_name.
+ READ TABLE mt_rename_map ASSIGNING WITH TABLE KEY by_name COMPONENTS from = cv_name.
+ lv_pair_found = boolc( sy-subrc = 0 ).
+ WHEN zcl_abapgit_ajson_mapping=>rename_by-full_path.
+ lv_full_path = is_node-path && cv_name.
+ READ TABLE mt_rename_map ASSIGNING WITH TABLE KEY by_name COMPONENTS from = lv_full_path.
+ lv_pair_found = boolc( sy-subrc = 0 ).
+ WHEN zcl_abapgit_ajson_mapping=>rename_by-pattern.
+ lv_full_path = is_node-path && cv_name.
+ LOOP AT mt_rename_map ASSIGNING .
+ IF lv_full_path CP -from.
+ lv_pair_found = abap_true.
+ EXIT.
+ ENDIF.
+ ENDLOOP.
+ WHEN OTHERS.
+ lv_pair_found = abap_false. " No rename
+ ENDCASE.
+
+ IF lv_pair_found = abap_true.
+ cv_name = -to.
+ ENDIF.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_mapping_to_upper IMPLEMENTATION.
+
+ METHOD constructor.
+
+ mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
+ iv_name = iv_name ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ rv_result = mi_mapping_fields->to_json( iv_path = iv_path
+ iv_name = iv_name ).
+
+ IF rv_result IS NOT INITIAL. " Mapping found
+ RETURN.
+ ENDIF.
+
+ rv_result = to_upper( iv_name ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ cv_name = to_upper( cv_name ).
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_mapping_to_lower IMPLEMENTATION.
+
+ METHOD constructor.
+
+ mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
+ iv_name = iv_name ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ rv_result = mi_mapping_fields->to_json( iv_path = iv_path
+ iv_name = iv_name ).
+
+ IF rv_result IS NOT INITIAL. " Mapping found
+ RETURN.
+ ENDIF.
+
+ rv_result = to_lower( iv_name ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ cv_name = to_lower( cv_name ).
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_mapping_camel IMPLEMENTATION. "DEPRECATED
+
+ METHOD constructor.
+
+ mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
+ mv_first_json_upper = iv_first_json_upper.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
+ iv_name = iv_name ).
+
+ IF rv_result IS NOT INITIAL. " Mapping found
+ RETURN.
+ ENDIF.
+
+ rv_result = iv_name.
+
+ REPLACE ALL OCCURRENCES OF REGEX `([a-z])([A-Z])` IN rv_result WITH `$1_$2`.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ TYPES ty_token TYPE c LENGTH 255.
+ DATA lt_tokens TYPE STANDARD TABLE OF ty_token.
+ DATA lv_from TYPE i.
+ FIELD-SYMBOLS LIKE LINE OF lt_tokens.
+
+ rv_result = mi_mapping_fields->to_json( iv_path = iv_path
+ iv_name = iv_name ).
+
+ IF rv_result IS NOT INITIAL. " Mapping found
+ RETURN.
+ ENDIF.
+
+ rv_result = iv_name.
+
+ REPLACE ALL OCCURRENCES OF `__` IN rv_result WITH `*`.
+
+ TRANSLATE rv_result TO LOWER CASE.
+ TRANSLATE rv_result USING `/_:_~_`.
+
+ IF mv_first_json_upper = abap_true.
+ lv_from = 1.
+ ELSE.
+ lv_from = 2.
+ ENDIF.
+
+ SPLIT rv_result AT `_` INTO TABLE lt_tokens.
+ LOOP AT lt_tokens ASSIGNING FROM lv_from.
+ TRANSLATE (1) TO UPPER CASE.
+ ENDLOOP.
+
+ CONCATENATE LINES OF lt_tokens INTO rv_result.
+ REPLACE ALL OCCURRENCES OF `*` IN rv_result WITH `_`.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_compound_mapper IMPLEMENTATION.
+
+ METHOD constructor.
+ mt_queue = it_queue.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ DATA ls_node LIKE is_node.
+ DATA li_mapper LIKE LINE OF mt_queue.
+
+ ls_node = is_node.
+
+ LOOP AT mt_queue INTO li_mapper.
+ li_mapper->rename_node(
+ EXPORTING
+ is_node = ls_node
+ CHANGING
+ cv_name = cv_name ).
+ ls_node-name = cv_name.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_to_snake IMPLEMENTATION.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ REPLACE ALL OCCURRENCES OF REGEX `([a-z])([A-Z])` IN cv_name WITH `$1_$2`.
+ cv_name = to_lower( cv_name ).
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_to_camel IMPLEMENTATION.
+
+ METHOD constructor.
+ mv_first_json_upper = iv_first_json_upper.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~rename_node.
+
+ TYPES lty_token TYPE c LENGTH 255.
+ CONSTANTS lc_forced_underscore_marker TYPE c LENGTH 1 VALUE cl_abap_char_utilities=>horizontal_tab.
+
+ DATA lt_tokens TYPE STANDARD TABLE OF lty_token.
+ DATA lv_from TYPE i.
+ FIELD-SYMBOLS LIKE LINE OF lt_tokens.
+
+ IF mv_first_json_upper = abap_true.
+ lv_from = 1.
+ ELSE.
+ lv_from = 2.
+ ENDIF.
+ REPLACE ALL OCCURRENCES OF `__` IN cv_name WITH lc_forced_underscore_marker. " Force underscore
+
+ SPLIT cv_name AT `_` INTO TABLE lt_tokens.
+ DELETE lt_tokens WHERE table_line IS INITIAL.
+ LOOP AT lt_tokens ASSIGNING FROM lv_from.
+ TRANSLATE +0(1) TO UPPER CASE.
+ ENDLOOP.
+
+ CONCATENATE LINES OF lt_tokens INTO cv_name.
+ REPLACE ALL OCCURRENCES OF lc_forced_underscore_marker IN cv_name WITH `_`.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_abap.
+
+ ENDMETHOD.
+
+ METHOD zif_abapgit_ajson_mapping~to_json.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION.
+
+ METHOD create_camel_case.
+
+ CREATE OBJECT ri_mapping TYPE lcl_mapping_camel
+ EXPORTING
+ it_mapping_fields = it_mapping_fields
+ iv_first_json_upper = iv_first_json_upper.
+
+ ENDMETHOD.
+
+ METHOD create_compound_mapper.
+
+ DATA lt_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of.
+
+ APPEND ii_mapper1 TO lt_queue.
+ APPEND ii_mapper2 TO lt_queue.
+ APPEND ii_mapper3 TO lt_queue.
+ APPEND LINES OF it_more TO lt_queue.
+ DELETE lt_queue WHERE table_line IS INITIAL.
+
+ CREATE OBJECT ri_mapping TYPE lcl_compound_mapper
+ EXPORTING
+ it_queue = lt_queue.
+
+ ENDMETHOD.
+
+ METHOD create_field_mapping.
+
+ CREATE OBJECT ri_mapping TYPE lcl_mapping_fields
+ EXPORTING
+ it_mapping_fields = it_mapping_fields.
+
+ ENDMETHOD.
+
+ METHOD create_lower_case.
+
+ CREATE OBJECT ri_mapping TYPE lcl_mapping_to_lower
+ EXPORTING
+ it_mapping_fields = it_mapping_fields.
+
+ ENDMETHOD.
+
+ METHOD create_rename.
+
+ CREATE OBJECT ri_mapping TYPE lcl_rename
+ EXPORTING
+ it_rename_map = it_rename_map
+ iv_rename_by = iv_rename_by.
+
+ ENDMETHOD.
+
+ METHOD create_to_camel_case.
+
+ CREATE OBJECT ri_mapping TYPE lcl_to_camel
+ EXPORTING
+ iv_first_json_upper = iv_first_json_upper.
+
+ ENDMETHOD.
+
+ METHOD create_to_snake_case.
+
+ CREATE OBJECT ri_mapping TYPE lcl_to_snake.
+
+ ENDMETHOD.
+
+ METHOD create_upper_case.
+
+ CREATE OBJECT ri_mapping TYPE lcl_mapping_to_upper
+ EXPORTING
+ it_mapping_fields = it_mapping_fields.
+
+ ENDMETHOD.
+ENDCLASS.
+
+CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION.
+
+ METHOD delete_empty_nodes.
+
+ DATA ls_json_tree LIKE LINE OF io_json->mt_json_tree.
+ DATA lv_done TYPE abap_bool.
+
+ DO.
+ lv_done = abap_true.
+
+ IF iv_keep_empty_arrays = abap_false.
+ LOOP AT io_json->mt_json_tree INTO ls_json_tree
+ WHERE type = zif_abapgit_ajson_types=>node_type-array AND children = 0.
+
+ io_json->delete( ls_json_tree-path && ls_json_tree-name ).
+
+ ENDLOOP.
+ IF sy-subrc = 0.
+ lv_done = abap_false.
+ ENDIF.
+ ENDIF.
+
+ LOOP AT io_json->mt_json_tree INTO ls_json_tree
+ WHERE type = zif_abapgit_ajson_types=>node_type-object AND children = 0.
+
+ io_json->delete( ls_json_tree-path && ls_json_tree-name ).
+
+ ENDLOOP.
+ IF sy-subrc = 0.
+ lv_done = abap_false.
+ ENDIF.
+
+ IF lv_done = abap_true.
+ EXIT. " nothing else to delete
+ ENDIF.
+ ENDDO.
+
+ ENDMETHOD.
+
+ METHOD diff.
+
+ mo_json_a = normalize_input(
+ iv_json = iv_json_a
+ io_json = io_json_a ).
+
+ mo_json_b = normalize_input(
+ iv_json = iv_json_b
+ io_json = io_json_b ).
+
+ mo_insert = zcl_abapgit_ajson=>create_empty( ).
+ mo_delete = zcl_abapgit_ajson=>create_empty( ).
+ mo_change = zcl_abapgit_ajson=>create_empty( ).
+
+ diff_a_b( '/' ).
+ diff_b_a( '/' ).
+
+ eo_insert ?= mo_insert.
+ eo_delete ?= mo_delete.
+ eo_change ?= mo_change.
+
+ delete_empty_nodes(
+ io_json = eo_insert
+ iv_keep_empty_arrays = iv_keep_empty_arrays ).
+ delete_empty_nodes(
+ io_json = eo_delete
+ iv_keep_empty_arrays = iv_keep_empty_arrays ).
+ delete_empty_nodes(
+ io_json = eo_change
+ iv_keep_empty_arrays = iv_keep_empty_arrays ).
+
+ ENDMETHOD.
+
+ METHOD diff_a_b.
+
+ DATA:
+ lv_path_a TYPE string,
+ lv_path_b TYPE string.
+
+ FIELD-SYMBOLS:
+ LIKE LINE OF mo_json_a->mt_json_tree,
+ LIKE LINE OF mo_json_a->mt_json_tree.
+
+ LOOP AT mo_json_a->mt_json_tree ASSIGNING WHERE path = iv_path.
+ lv_path_a = -path && -name && '/'.
+
+ READ TABLE mo_json_b->mt_json_tree ASSIGNING
+ WITH TABLE KEY path = -path name = -name.
+ IF sy-subrc = 0.
+ lv_path_b = -path && -name && '/'.
+
+ IF -type = -type.
+ CASE -type.
+ WHEN zif_abapgit_ajson_types=>node_type-array.
+ mo_insert->touch_array( lv_path_a ).
+ mo_change->touch_array( lv_path_a ).
+ mo_delete->touch_array( lv_path_a ).
+ diff_a_b( lv_path_a ).
+ WHEN zif_abapgit_ajson_types=>node_type-object.
+ diff_a_b( lv_path_a ).
+ WHEN OTHERS.
+ IF -value <> -value.
+ " save as changed value
+ mo_change->set(
+ iv_path = lv_path_b
+ iv_val = -value
+ iv_node_type = -type ).
+ ENDIF.
+ ENDCASE.
+ ELSE.
+ " save changed type as delete + insert
+ CASE -type.
+ WHEN zif_abapgit_ajson_types=>node_type-array.
+ mo_delete->touch_array( lv_path_a ).
+ diff_a_b( lv_path_a ).
+ WHEN zif_abapgit_ajson_types=>node_type-object.
+ diff_a_b( lv_path_a ).
+ WHEN OTHERS.
+ mo_delete->set(
+ iv_path = lv_path_a
+ iv_val = -value
+ iv_node_type = -type ).
+ ENDCASE.
+ CASE -type.
+ WHEN zif_abapgit_ajson_types=>node_type-array.
+ mo_insert->touch_array( lv_path_b ).
+ diff_b_a( lv_path_b ).
+ WHEN zif_abapgit_ajson_types=>node_type-object.
+ diff_b_a( lv_path_b ).
+ WHEN OTHERS.
+ mo_insert->set(
+ iv_path = lv_path_b
+ iv_val = -value
+ iv_node_type = -type ).
+ ENDCASE.
+ ENDIF.
+ ELSE.
+ " save as delete
+ CASE -type.
+ WHEN zif_abapgit_ajson_types=>node_type-array.
+ mo_delete->touch_array( lv_path_a ).
+ diff_a_b( lv_path_a ).
+ WHEN zif_abapgit_ajson_types=>node_type-object.
+ diff_a_b( lv_path_a ).
+ WHEN OTHERS.
+ mo_delete->set(
+ iv_path = lv_path_a
+ iv_val = -value
+ iv_node_type = -type ).
+ ENDCASE.
+ ENDIF.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD diff_b_a.
+
+ DATA lv_path TYPE string.
+
+ FIELD-SYMBOLS LIKE LINE OF mo_json_b->mt_json_tree.
+
+ LOOP AT mo_json_b->mt_json_tree ASSIGNING WHERE path = iv_path.
+ lv_path = -path && -name && '/'.
+
+ CASE -type.
+ WHEN zif_abapgit_ajson_types=>node_type-array.
+ mo_insert->touch_array( lv_path ).
+ diff_b_a(
+ iv_path = lv_path
+ iv_array = abap_true ).
+ WHEN zif_abapgit_ajson_types=>node_type-object.
+ diff_b_a( lv_path ).
+ WHEN OTHERS.
+ IF iv_array = abap_false.
+ READ TABLE mo_json_a->mt_json_tree TRANSPORTING NO FIELDS
+ WITH TABLE KEY path = -path name = -name.
+ IF sy-subrc <> 0.
+ " save as insert
+ mo_insert->set(
+ iv_path = lv_path
+ iv_val = -value
+ iv_node_type = -type ).
+ ENDIF.
+ ELSE.
+ READ TABLE mo_insert->mt_json_tree TRANSPORTING NO FIELDS
+ WITH KEY path = -path value = -value.
+ IF sy-subrc <> 0.
+ " save as new array value
+ mo_insert->push(
+ iv_path = iv_path
+ iv_val = -value ).
+ ENDIF.
+ ENDIF.
+ ENDCASE.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD is_equal.
+
+ DATA li_ins TYPE REF TO zif_abapgit_ajson.
+ DATA li_del TYPE REF TO zif_abapgit_ajson.
+ DATA li_mod TYPE REF TO zif_abapgit_ajson.
+
+ diff(
+ EXPORTING
+ iv_json_a = iv_json_a
+ iv_json_b = iv_json_b
+ io_json_a = ii_json_a
+ io_json_b = ii_json_b
+ IMPORTING
+ eo_insert = li_ins
+ eo_delete = li_del
+ eo_change = li_mod ).
+
+ rv_yes = boolc(
+ li_ins->is_empty( ) = abap_true AND
+ li_del->is_empty( ) = abap_true AND
+ li_mod->is_empty( ) = abap_true ).
+
+ ENDMETHOD.
+
+ METHOD merge.
+
+ mo_json_a = normalize_input(
+ iv_json = iv_json_a
+ io_json = io_json_a ).
+
+ mo_json_b = normalize_input(
+ iv_json = iv_json_b
+ io_json = io_json_b ).
+
+ " Start with first JSON...
+ mo_insert = mo_json_a.
+
+ " ...and add all nodes from second JSON
+ diff_b_a( '/' ).
+
+ ro_json ?= mo_insert.
+
+ delete_empty_nodes(
+ io_json = ro_json
+ iv_keep_empty_arrays = iv_keep_empty_arrays ).
+
+ ENDMETHOD.
+
+ METHOD new.
+ CREATE OBJECT ro_instance.
+ ENDMETHOD.
+
+ METHOD normalize_input.
+
+ IF boolc( iv_json IS INITIAL ) = boolc( io_json IS INITIAL ).
+ zcx_abapgit_ajson_error=>raise( 'Either supply JSON string or instance, but not both' ).
+ ENDIF.
+
+ IF iv_json IS NOT INITIAL.
+ ro_json = zcl_abapgit_ajson=>parse( iv_json ).
+ ELSEIF io_json IS NOT INITIAL.
+ ro_json = io_json.
+ ELSE.
+ zcx_abapgit_ajson_error=>raise( 'Supply either JSON string or instance' ).
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD sort.
+
+ DATA lo_json TYPE REF TO zif_abapgit_ajson.
+
+ lo_json = normalize_input(
+ iv_json = iv_json
+ io_json = io_json ).
+
+ " Nodes are parsed into a sorted table, so no explicit sorting required
+ rv_sorted = lo_json->stringify( 2 ).
+
+ ENDMETHOD.
+ENDCLASS.
+
CLASS lcl_in DEFINITION.
PUBLIC SECTION.
CLASS-METHODS convert
@@ -14097,10 +15826,649 @@ CLASS lcl_out IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
+CLASS lcl_bcp47_language_table DEFINITION CREATE PRIVATE.
+ PUBLIC SECTION.
+ TYPES: BEGIN OF ty_language_mapping,
+ sap1_code TYPE sy-langu,
+ sap2_code TYPE laiso,
+ bcp47_code TYPE string,
+ END OF ty_language_mapping,
+ ty_language_mappings TYPE STANDARD TABLE OF ty_language_mapping WITH DEFAULT KEY.
+ CLASS-DATA gt_language_mappings TYPE ty_language_mappings.
+ CLASS-METHODS:
+ sap1_to_sap2
+ IMPORTING
+ im_sap1 TYPE sy-langu
+ RETURNING
+ VALUE(re_sap2) TYPE laiso
+ RAISING
+ zcx_abapgit_exception,
+ sap2_to_sap1
+ IMPORTING
+ im_sap2 TYPE laiso
+ RETURNING
+ VALUE(re_sap1) TYPE sy-langu
+ RAISING
+ zcx_abapgit_exception,
+ sap1_to_bcp47
+ IMPORTING
+ im_sap1 TYPE sy-langu
+ RETURNING
+ VALUE(re_bcp47) TYPE string
+ RAISING
+ zcx_abapgit_exception,
+ bcp47_to_sap1
+ IMPORTING
+ im_bcp47 TYPE string
+ RETURNING
+ VALUE(re_sap1) TYPE sy-langu
+ RAISING
+ zcx_abapgit_exception.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ CLASS-METHODS fill_language_mappings.
+ CLASS-METHODS fill_language_mappings_1.
+ CLASS-METHODS fill_language_mappings_2.
+ CLASS-METHODS
+ fill_language_mapping
+ IMPORTING
+ im_sap1 TYPE string
+ im_sap2 TYPE string
+ im_bcp47 TYPE string.
-CLASS zcl_abapgit_convert IMPLEMENTATION.
+ENDCLASS.
+
+CLASS lcl_bcp47_language_table IMPLEMENTATION.
+
+ METHOD sap1_to_bcp47.
+ DATA lv_language_mapping TYPE ty_language_mapping.
+
+ IF gt_language_mappings IS INITIAL OR lines( gt_language_mappings ) = 0.
+ fill_language_mappings( ).
+ ENDIF.
+
+ LOOP AT gt_language_mappings INTO lv_language_mapping WHERE sap1_code = im_sap1.
+ IF re_bcp47 IS INITIAL OR strlen( re_bcp47 ) > strlen( lv_language_mapping-bcp47_code ).
+ re_bcp47 = lv_language_mapping-bcp47_code.
+ ENDIF.
+ ENDLOOP.
+
+ IF re_bcp47 IS INITIAL.
+ zcx_abapgit_exception=>raise( |Could not map SAP1 language code { im_sap1 } to BCP47 language code.| ).
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD bcp47_to_sap1.
+ DATA lv_language_mapping TYPE ty_language_mapping.
+
+ IF gt_language_mappings IS INITIAL OR lines( gt_language_mappings ) = 0.
+ fill_language_mappings( ).
+ ENDIF.
+
+ LOOP AT gt_language_mappings INTO lv_language_mapping.
+ IF to_lower( lv_language_mapping-bcp47_code ) = to_lower( im_bcp47 ) AND re_sap1 IS INITIAL.
+ re_sap1 = lv_language_mapping-sap1_code.
+ ENDIF.
+ ENDLOOP.
+
+ IF re_sap1 IS INITIAL.
+ zcx_abapgit_exception=>raise( |Could not map BCP47 language code { im_bcp47 } to SAP1 language code.| ).
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD sap1_to_sap2.
+ DATA lv_language_mapping TYPE ty_language_mapping.
+
+ IF gt_language_mappings IS INITIAL.
+ fill_language_mappings( ).
+ ENDIF.
+
+ READ TABLE gt_language_mappings WITH KEY sap1_code = im_sap1 INTO lv_language_mapping.
+ re_sap2 = lv_language_mapping-sap2_code.
+
+ IF re_sap2 IS INITIAL.
+ zcx_abapgit_exception=>raise( |Could not map SAP1 language code { im_sap1 } to SAP2 language code.| ).
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD sap2_to_sap1.
+ DATA lv_language_mapping TYPE ty_language_mapping.
+
+ IF gt_language_mappings IS INITIAL.
+ fill_language_mappings( ).
+ ENDIF.
+
+ READ TABLE gt_language_mappings WITH KEY sap2_code = im_sap2 INTO lv_language_mapping.
+ re_sap1 = lv_language_mapping-sap1_code.
+
+ IF re_sap1 IS INITIAL.
+ zcx_abapgit_exception=>raise( |Could not map SAP2 language code { im_sap2 } to SAP1 language code.| ).
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD fill_language_mapping.
+ DATA lv_line TYPE ty_language_mapping.
+ DATA lv_sap1 TYPE sy-langu.
+
+ IF strlen( im_sap1 ) = 4.
+ TRY.
+ lv_sap1 = zcl_abapgit_convert=>uccp( im_sap1 ).
+ CATCH cx_root.
+ " Language is not supported in this system -> ignore it
+ " Should someone try to use the language in a repo, it will result in an error (see above)
+ RETURN.
+ ENDTRY.
+ ELSEIF strlen( im_sap1 ) = 1.
+ lv_sap1 = im_sap1.
+ ENDIF.
+
+ lv_line-bcp47_code = im_bcp47.
+ lv_line-sap2_code = im_sap2.
+ lv_line-sap1_code = lv_sap1.
+
+ APPEND lv_line TO gt_language_mappings.
+ CLEAR lv_line.
+ ENDMETHOD.
+
+ METHOD fill_language_mappings.
+ " table is filled with two separate methods to comply
+ " with https://rules.abaplint.org/method_length/
+ fill_language_mappings_1( ).
+ fill_language_mappings_2( ).
+ ENDMETHOD.
+
+ METHOD fill_language_mappings_1.
+ fill_language_mapping( im_sap1 = 'a'
+ im_sap2 = 'AF'
+ im_bcp47 = 'af' ).
+
+ fill_language_mapping( im_sap1 = 'BF51'
+ im_sap2 = 'SQ'
+ im_bcp47 = 'sq' ).
+
+ fill_language_mapping( im_sap1 = 'BA15'
+ im_sap2 = 'EU'
+ im_bcp47 = 'eu' ).
+
+ fill_language_mapping( im_sap1 = 'B8F3'
+ im_sap2 = 'BS'
+ im_bcp47 = 'bs' ).
+
+ fill_language_mapping( im_sap1 = 'W'
+ im_sap2 = 'BG'
+ im_bcp47 = 'bg' ).
+
+ fill_language_mapping( im_sap1 = 'c'
+ im_sap2 = 'CA'
+ im_bcp47 = 'ca' ).
+
+ fill_language_mapping( im_sap1 = '1'
+ im_sap2 = 'ZH'
+ im_bcp47 = 'zh' ).
+
+ fill_language_mapping( im_sap1 = '1'
+ im_sap2 = 'ZH'
+ im_bcp47 = 'zh-Hans' ).
+
+ fill_language_mapping( im_sap1 = 'B343'
+ im_sap2 = '3C'
+ im_bcp47 = 'zh-SG' ).
+
+ fill_language_mapping( im_sap1 = 'M'
+ im_sap2 = 'ZF'
+ im_bcp47 = 'zh-Hant' ).
+
+ fill_language_mapping( im_sap1 = '6'
+ im_sap2 = 'HR'
+ im_bcp47 = 'hr' ).
+
+ fill_language_mapping( im_sap1 = 'C'
+ im_sap2 = 'CS'
+ im_bcp47 = 'cs' ).
+
+ fill_language_mapping( im_sap1 = 'K'
+ im_sap2 = 'DA'
+ im_bcp47 = 'da' ).
+
+ fill_language_mapping( im_sap1 = 'N'
+ im_sap2 = 'NL'
+ im_bcp47 = 'nl' ).
+
+ fill_language_mapping( im_sap1 = 'N'
+ im_sap2 = 'NL'
+ im_bcp47 = 'nl-NL' ).
+
+ fill_language_mapping( im_sap1 = 'B284'
+ im_sap2 = '1D'
+ im_bcp47 = 'nl-BE' ).
+
+ fill_language_mapping( im_sap1 = 'E'
+ im_sap2 = 'EN'
+ im_bcp47 = 'en' ).
+
+ fill_language_mapping( im_sap1 = 'E'
+ im_sap2 = 'EN'
+ im_bcp47 = 'en-US' ).
+
+ fill_language_mapping( im_sap1 = 'B46E'
+ im_sap2 = '6N'
+ im_bcp47 = 'en-GB' ).
+
+ fill_language_mapping( im_sap1 = 'B285'
+ im_sap2 = '1E'
+ im_bcp47 = 'en-AU' ).
+
+ fill_language_mapping( im_sap1 = 'B2E5'
+ im_sap2 = '2E'
+ im_bcp47 = 'en-BZ' ).
+
+ fill_language_mapping( im_sap1 = 'B345'
+ im_sap2 = '3E'
+ im_bcp47 = 'en-CA' ).
+
+ fill_language_mapping( im_sap1 = 'B405'
+ im_sap2 = '5E'
+ im_bcp47 = 'en-HK' ).
+
+ fill_language_mapping( im_sap1 = 'B465'
+ im_sap2 = '6E'
+ im_bcp47 = 'en-IN' ).
+
+ fill_language_mapping( im_sap1 = 'B4C5'
+ im_sap2 = '7E'
+ im_bcp47 = 'en-ID' ).
+
+ fill_language_mapping( im_sap1 = 'B525'
+ im_sap2 = '8E'
+ im_bcp47 = 'en-IE' ).
+
+ fill_language_mapping( im_sap1 = 'B585'
+ im_sap2 = '9E'
+ im_bcp47 = 'en-JM' ).
+
+ fill_language_mapping( im_sap1 = 'B225'
+ im_sap2 = '0E'
+ im_bcp47 = 'en-MY' ).
+
+ fill_language_mapping( im_sap1 = 'B28E'
+ im_sap2 = '1N'
+ im_bcp47 = 'en-NZ' ).
+
+ fill_language_mapping( im_sap1 = 'B2EE'
+ im_sap2 = '2N'
+ im_bcp47 = 'en-PH' ).
+
+ fill_language_mapping( im_sap1 = 'B34E'
+ im_sap2 = '3N'
+ im_bcp47 = 'en-SG' ).
+
+ fill_language_mapping( im_sap1 = 'B3AE'
+ im_sap2 = '4N'
+ im_bcp47 = 'en-ZA' ).
+
+ fill_language_mapping( im_sap1 = 'B40E'
+ im_sap2 = '5N'
+ im_bcp47 = 'en-TT' ).
+
+ fill_language_mapping( im_sap1 = 'B4CE'
+ im_sap2 = '7N'
+ im_bcp47 = 'en-ZW' ).
+
+ fill_language_mapping( im_sap1 = '9'
+ im_sap2 = 'ET'
+ im_bcp47 = 'et' ).
+
+ fill_language_mapping( im_sap1 = 'U'
+ im_sap2 = 'FI'
+ im_bcp47 = 'fi' ).
+
+ fill_language_mapping( im_sap1 = 'F'
+ im_sap2 = 'FR'
+ im_bcp47 = 'fr' ).
+
+ fill_language_mapping( im_sap1 = 'F'
+ im_sap2 = 'FR'
+ im_bcp47 = 'fr-FR' ).
+
+ fill_language_mapping( im_sap1 = 'B286'
+ im_sap2 = '1F'
+ im_bcp47 = 'fr-BE' ).
+
+ fill_language_mapping( im_sap1 = 'B2E6'
+ im_sap2 = '2F'
+ im_bcp47 = 'fr-CM' ).
+ ENDMETHOD.
+
+ METHOD fill_language_mappings_2.
+ fill_language_mapping( im_sap1 = 'B346'
+ im_sap2 = '3F'
+ im_bcp47 = 'fr-CA' ).
+
+ fill_language_mapping( im_sap1 = 'B3A6'
+ im_sap2 = '4F'
+ im_bcp47 = 'fr-CG' ).
+
+ fill_language_mapping( im_sap1 = 'B406'
+ im_sap2 = '5F'
+ im_bcp47 = 'fr-CI' ).
+
+ fill_language_mapping( im_sap1 = 'B466'
+ im_sap2 = '6F'
+ im_bcp47 = 'fr-HT' ).
+
+ fill_language_mapping( im_sap1 = 'B4C6'
+ im_sap2 = '7F'
+ im_bcp47 = 'fr-LU' ).
+
+ fill_language_mapping( im_sap1 = 'B526'
+ im_sap2 = '8F'
+ im_bcp47 = 'fr-ML' ).
+
+ fill_language_mapping( im_sap1 = 'B586'
+ im_sap2 = '9F'
+ im_bcp47 = 'fr-MC' ).
+
+ fill_language_mapping( im_sap1 = 'B288'
+ im_sap2 = '1H'
+ im_bcp47 = 'fr-MA' ).
+
+ fill_language_mapping( im_sap1 = 'B2E8'
+ im_sap2 = '2H'
+ im_bcp47 = 'fr-RE' ).
+
+ fill_language_mapping( im_sap1 = 'B348'
+ im_sap2 = '3H'
+ im_bcp47 = 'fr-SN' ).
+
+ fill_language_mapping( im_sap1 = 'B3A8'
+ im_sap2 = '4H'
+ im_bcp47 = 'fr-CH' ).
+
+ fill_language_mapping( im_sap1 = 'BAC4'
+ im_sap2 = 'GD'
+ im_bcp47 = 'gd' ).
+
+ fill_language_mapping( im_sap1 = 'BACC'
+ im_sap2 = 'GL'
+ im_bcp47 = 'gl' ).
+
+ fill_language_mapping( im_sap1 = 'D'
+ im_sap2 = 'DE'
+ im_bcp47 = 'de' ).
+
+ fill_language_mapping( im_sap1 = 'D'
+ im_sap2 = 'DE'
+ im_bcp47 = 'de-DE' ).
+
+ fill_language_mapping( im_sap1 = 'B287'
+ im_sap2 = '1G'
+ im_bcp47 = 'de-AT' ).
+
+ fill_language_mapping( im_sap1 = 'B2E7'
+ im_sap2 = '2G'
+ im_bcp47 = 'de-LI' ).
+
+ fill_language_mapping( im_sap1 = 'B347'
+ im_sap2 = '3G'
+ im_bcp47 = 'de-LU' ).
+
+ fill_language_mapping( im_sap1 = 'B3A7'
+ im_sap2 = '4G'
+ im_bcp47 = 'de-CH' ).
+
+ fill_language_mapping( im_sap1 = 'G'
+ im_sap2 = 'EL'
+ im_bcp47 = 'el' ).
+
+ fill_language_mapping( im_sap1 = 'B'
+ im_sap2 = 'HE'
+ im_bcp47 = 'he' ).
+
+ fill_language_mapping( im_sap1 = 'H'
+ im_sap2 = 'HU'
+ im_bcp47 = 'hu' ).
+
+ fill_language_mapping( im_sap1 = 'b'
+ im_sap2 = 'IS'
+ im_bcp47 = 'is' ).
+
+ fill_language_mapping( im_sap1 = 'i'
+ im_sap2 = 'ID'
+ im_bcp47 = 'id' ).
+
+ fill_language_mapping( im_sap1 = 'BAC1'
+ im_sap2 = 'GA'
+ im_bcp47 = 'ga' ).
+
+ fill_language_mapping( im_sap1 = 'I'
+ im_sap2 = 'IT'
+ im_bcp47 = 'it' ).
+
+ fill_language_mapping( im_sap1 = 'I'
+ im_sap2 = 'IT'
+ im_bcp47 = 'it-IT' ).
+
+ fill_language_mapping( im_sap1 = 'B289'
+ im_sap2 = '1I'
+ im_bcp47 = 'it-CH' ).
+
+ fill_language_mapping( im_sap1 = 'J'
+ im_sap2 = 'JA'
+ im_bcp47 = 'ja' ).
+
+ fill_language_mapping( im_sap1 = '3'
+ im_sap2 = 'KO'
+ im_bcp47 = 'ko' ).
+
+ fill_language_mapping( im_sap1 = '3'
+ im_sap2 = 'KO'
+ im_bcp47 = 'ko-KR' ).
+
+ fill_language_mapping( im_sap1 = 'Y'
+ im_sap2 = 'LV'
+ im_bcp47 = 'lv' ).
+
+ fill_language_mapping( im_sap1 = 'X'
+ im_sap2 = 'LT'
+ im_bcp47 = 'lt' ).
+
+ fill_language_mapping( im_sap1 = '7'
+ im_sap2 = 'MS'
+ im_bcp47 = 'ms' ).
+
+ fill_language_mapping( im_sap1 = '7'
+ im_sap2 = 'MS'
+ im_bcp47 = 'ms-MY' ).
+
+ fill_language_mapping( im_sap1 = 'B28D'
+ im_sap2 = '1M'
+ im_bcp47 = 'ms-BN' ).
+
+ fill_language_mapping( im_sap1 = 'O'
+ im_sap2 = 'NO'
+ im_bcp47 = 'no' ).
+
+ fill_language_mapping( im_sap1 = 'L'
+ im_sap2 = 'PL'
+ im_bcp47 = 'pl' ).
+
+ fill_language_mapping( im_sap1 = 'P'
+ im_sap2 = 'PT'
+ im_bcp47 = 'pt' ).
+
+ fill_language_mapping( im_sap1 = 'P'
+ im_sap2 = 'PT'
+ im_bcp47 = 'pt-BR' ).
+
+ fill_language_mapping( im_sap1 = 'BEED'
+ im_sap2 = 'RM'
+ im_bcp47 = 'rm' ).
+
+ fill_language_mapping( im_sap1 = '4'
+ im_sap2 = 'RO'
+ im_bcp47 = 'ro' ).
+
+ fill_language_mapping( im_sap1 = '4'
+ im_sap2 = 'RO'
+ im_bcp47 = 'ro-RO' ).
+
+ fill_language_mapping( im_sap1 = 'R'
+ im_sap2 = 'RU'
+ im_bcp47 = 'ru-RU' ).
+
+ fill_language_mapping( im_sap1 = '0'
+ im_sap2 = 'SR'
+ im_bcp47 = 'sr' ).
+
+ fill_language_mapping( im_sap1 = '0'
+ im_sap2 = 'SR'
+ im_bcp47 = 'sr-Cyrl' ).
+
+ fill_language_mapping( im_sap1 = 'd'
+ im_sap2 = 'SH'
+ im_bcp47 = 'sr-Latn' ).
+
+ fill_language_mapping( im_sap1 = 'Q'
+ im_sap2 = 'SK'
+ im_bcp47 = 'sk' ).
+
+ fill_language_mapping( im_sap1 = '5'
+ im_sap2 = 'SL'
+ im_bcp47 = 'sl' ).
+
+ fill_language_mapping( im_sap1 = 'BF42'
+ im_sap2 = 'SB'
+ im_bcp47 = 'wen' ).
+
+ fill_language_mapping( im_sap1 = 'B9B3'
+ im_sap2 = 'DS'
+ im_bcp47 = 'dsb' ).
+
+ fill_language_mapping( im_sap1 = 'BB33'
+ im_sap2 = 'HS'
+ im_bcp47 = 'hsb' ).
+
+ fill_language_mapping( im_sap1 = 'S'
+ im_sap2 = 'ES'
+ im_bcp47 = 'es' ).
+
+ fill_language_mapping( im_sap1 = 'S'
+ im_sap2 = 'ES'
+ im_bcp47 = 'es-ES' ).
+
+ fill_language_mapping( im_sap1 = 'B293'
+ im_sap2 = '1S'
+ im_bcp47 = 'es-AR' ).
+
+ fill_language_mapping( im_sap1 = 'B2F3'
+ im_sap2 = '2S'
+ im_bcp47 = 'es-BO' ).
+
+ fill_language_mapping( im_sap1 = 'B353'
+ im_sap2 = '3S'
+ im_bcp47 = 'es-CL' ).
+
+ fill_language_mapping( im_sap1 = 'B233'
+ im_sap2 = '0S'
+ im_bcp47 = 'es-CO' ).
+
+ fill_language_mapping( im_sap1 = 'B3B3'
+ im_sap2 = '4S'
+ im_bcp47 = 'es-CR' ).
+
+ fill_language_mapping( im_sap1 = 'B413'
+ im_sap2 = '5S'
+ im_bcp47 = 'es-DO' ).
+
+ fill_language_mapping( im_sap1 = 'B473'
+ im_sap2 = '6S'
+ im_bcp47 = 'es-EC' ).
+
+ fill_language_mapping( im_sap1 = 'B4D3'
+ im_sap2 = '7S'
+ im_bcp47 = 'es-SV' ).
+
+ fill_language_mapping( im_sap1 = 'B533'
+ im_sap2 = '8S'
+ im_bcp47 = 'es-GT' ).
+
+ fill_language_mapping( im_sap1 = 'B593'
+ im_sap2 = '9S'
+ im_bcp47 = 'es-HN' ).
+
+ fill_language_mapping( im_sap1 = 'B298'
+ im_sap2 = '1X'
+ im_bcp47 = 'es-MX' ).
+ fill_language_mapping( im_sap1 = 'B2F8'
+ im_sap2 = '2X'
+ im_bcp47 = 'es-NI' ).
+
+ fill_language_mapping( im_sap1 = 'B358'
+ im_sap2 = '3X'
+ im_bcp47 = 'es-PA' ).
+
+ fill_language_mapping( im_sap1 = 'B3B8'
+ im_sap2 = '4X'
+ im_bcp47 = 'es-PY' ).
+
+ fill_language_mapping( im_sap1 = 'B418'
+ im_sap2 = '5X'
+ im_bcp47 = 'es-PE' ).
+
+ fill_language_mapping( im_sap1 = 'B478'
+ im_sap2 = '6X'
+ im_bcp47 = 'es-PR' ).
+
+ fill_language_mapping( im_sap1 = 'B4D8'
+ im_sap2 = '7X'
+ im_bcp47 = 'es-UY' ).
+
+ fill_language_mapping( im_sap1 = 'B538'
+ im_sap2 = '8X'
+ im_bcp47 = 'es-VE' ).
+
+ fill_language_mapping( im_sap1 = 'BF57'
+ im_sap2 = 'SW'
+ im_bcp47 = 'sw' ).
+
+ fill_language_mapping( im_sap1 = 'V'
+ im_sap2 = 'SV'
+ im_bcp47 = 'sv' ).
+
+ fill_language_mapping( im_sap1 = 'BFAC'
+ im_sap2 = 'TL'
+ im_bcp47 = 'tl' ).
+
+ fill_language_mapping( im_sap1 = '2'
+ im_sap2 = 'TH'
+ im_bcp47 = 'th' ).
+
+ fill_language_mapping( im_sap1 = 'T'
+ im_sap2 = 'TR'
+ im_bcp47 = 'tr' ).
+
+ fill_language_mapping( im_sap1 = '8'
+ im_sap2 = 'UK'
+ im_bcp47 = 'uk' ).
+
+ fill_language_mapping( im_sap1 = 'C069'
+ im_sap2 = 'VI'
+ im_bcp47 = 'vi' ).
+
+ fill_language_mapping( im_sap1 = 'C0C1'
+ im_sap2 = 'WA'
+ im_bcp47 = 'wa' ).
+
+ fill_language_mapping( im_sap1 = 'A'
+ im_sap2 = 'AR'
+ im_bcp47 = 'ar-SA' ).
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS zcl_abapgit_convert IMPLEMENTATION.
METHOD base64_to_xstring.
@@ -14108,7 +16476,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD bitbyte_to_int.
DATA: lv_bitbyte TYPE string,
@@ -14138,7 +16505,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD conversion_exit_isola_output.
language_sap1_to_sap2(
@@ -14154,7 +16520,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD int_to_xstring4.
* returns xstring of length 4 containing the integer value iv_i
@@ -14165,62 +16530,107 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
+ METHOD language_bcp47_to_sap1.
+ DATA lv_converter_instance TYPE REF TO object.
+ DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`.
+ DATA lv_regex TYPE REF TO cl_abap_regex.
+ DATA lv_abap_matcher TYPE REF TO cl_abap_matcher.
- METHOD language_sap1_to_sap2.
-
- DATA lv_class TYPE string.
+ DATA lv_sap2_lang_code TYPE laiso.
TRY.
- SELECT SINGLE languageisocode FROM ('I_LANGUAGE')
- INTO re_lang_sap2
- WHERE language = im_lang_sap1.
- IF sy-subrc <> 0.
- RAISE no_assignment.
- ENDIF.
- CATCH cx_sy_dynamic_osql_error.
- lv_class = 'CL_I18N_LANGUAGES'.
- CALL METHOD (lv_class)=>sap1_to_sap2
- EXPORTING
- im_lang_sap1 = im_lang_sap1
+ CALL METHOD (lv_converter_class_name)=>create_instance
RECEIVING
- re_lang_sap2 = re_lang_sap2
- EXCEPTIONS
- no_assignment = 1
- OTHERS = 2.
- IF sy-subrc = 1.
- RAISE no_assignment.
- ENDIF.
+ result = lv_converter_instance.
+
+ TRY.
+ CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~BCP47_TO_SAP1`)
+ EXPORTING
+ language = im_lang_bcp47
+ RECEIVING
+ result = re_lang_sap1.
+
+ CATCH cx_static_check.
+ RAISE no_assignment.
+ ENDTRY.
+
+ CATCH cx_sy_dyn_call_error.
+ TRY.
+ re_lang_sap1 = lcl_bcp47_language_table=>bcp47_to_sap1( im_lang_bcp47 ).
+ CATCH zcx_abapgit_exception.
+
+ CREATE OBJECT lv_regex EXPORTING pattern = `[A-Z0-9]{2}`.
+ lv_abap_matcher = lv_regex->create_matcher( text = im_lang_bcp47 ).
+
+ IF abap_true = lv_abap_matcher->match( ).
+ "Fallback try to convert from SAP language
+ lv_sap2_lang_code = im_lang_bcp47.
+
+ language_sap2_to_sap1(
+ EXPORTING
+ im_lang_sap2 = lv_sap2_lang_code
+ RECEIVING
+ re_lang_sap1 = re_lang_sap1
+ EXCEPTIONS
+ no_assignment = 1
+ OTHERS = 2 ).
+ IF sy-subrc <> 0.
+ RAISE no_assignment.
+ ENDIF.
+
+ ELSE.
+ RAISE no_assignment.
+ ENDIF.
+ ENDTRY.
ENDTRY.
ENDMETHOD.
+ METHOD language_sap1_to_bcp47.
+ DATA lv_converter_instance TYPE REF TO object.
+ DATA lv_converter_class_name TYPE string VALUE `CL_AFF_LANGUAGE_CONVERTER`.
- METHOD language_sap2_to_sap1.
+ TRY.
+ CALL METHOD (lv_converter_class_name)=>create_instance
+ RECEIVING
+ result = lv_converter_instance.
- DATA lv_class TYPE string.
+ TRY.
+ CALL METHOD lv_converter_instance->(`IF_AFF_LANGUAGE_CONVERTER~SAP1_TO_BCP47`)
+ EXPORTING
+ language = im_lang_sap1
+ RECEIVING
+ result = re_lang_bcp47.
+ CATCH cx_static_check.
+ RAISE no_assignment.
+ ENDTRY.
+ CATCH cx_sy_dyn_call_error.
+ TRY.
+ re_lang_bcp47 = lcl_bcp47_language_table=>sap1_to_bcp47( im_lang_sap1 ).
+ CATCH zcx_abapgit_exception.
+ RAISE no_assignment.
+ ENDTRY.
+ ENDTRY.
+ ENDMETHOD.
+
+ METHOD language_sap1_to_sap2.
TRY.
- SELECT SINGLE language FROM ('I_LANGUAGE')
- INTO re_lang_sap1
- WHERE languageisocode = im_lang_sap2.
- IF sy-subrc <> 0.
- RAISE no_assignment.
- ENDIF.
- CATCH cx_sy_dynamic_osql_error.
- lv_class = 'CL_I18N_LANGUAGES'.
- CALL METHOD (lv_class)=>sap2_to_sap1
- EXPORTING
- im_lang_sap2 = im_lang_sap2
- RECEIVING
- re_lang_sap1 = re_lang_sap1
- EXCEPTIONS
- no_assignment = 1
- OTHERS = 2.
- IF sy-subrc = 1.
- RAISE no_assignment.
- ENDIF.
+ re_lang_sap2 = lcl_bcp47_language_table=>sap1_to_sap2( im_lang_sap1 ).
+ CATCH zcx_abapgit_exception.
+ RAISE no_assignment.
ENDTRY.
+
ENDMETHOD.
+ METHOD language_sap2_to_sap1.
+
+ TRY.
+ re_lang_sap1 = lcl_bcp47_language_table=>sap2_to_sap1( im_lang_sap2 ).
+ CATCH zcx_abapgit_exception.
+ RAISE no_assignment.
+ ENDTRY.
+
+ ENDMETHOD.
METHOD split_string.
@@ -14235,7 +16645,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD string_to_tab.
DATA lv_length TYPE i.
@@ -14244,7 +16653,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
FIELD-SYMBOLS TYPE any.
-
CLEAR et_tab.
ev_size = strlen( iv_str ).
@@ -14261,21 +16669,18 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD string_to_xstring.
rv_xstr = string_to_xstring_utf8( iv_str ).
ENDMETHOD.
-
METHOD string_to_xstring_utf8.
rv_xstring = lcl_out=>convert( iv_string ).
ENDMETHOD.
-
METHOD string_to_xstring_utf8_bom.
IF iv_string IS INITIAL.
@@ -14291,6 +16696,40 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
+ METHOD uccp.
+
+ DATA lv_class TYPE string.
+ DATA lv_xstr TYPE xstring.
+ DATA lo_instance TYPE REF TO object.
+
+ lv_class = 'CL_ABAP_CONV_IN_CE'.
+
+ TRY.
+ CALL METHOD (lv_class)=>uccp
+ EXPORTING
+ uccp = iv_uccp
+ RECEIVING
+ char = rv_char.
+ CATCH cx_sy_dyn_call_illegal_class.
+ lv_xstr = iv_uccp.
+
+ CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
+ EXPORTING
+ codepage = 'UTF-16'
+ RECEIVING
+ instance = lo_instance.
+
+* convert endianness
+ CONCATENATE lv_xstr+1(1) lv_xstr(1) INTO lv_xstr IN BYTE MODE.
+
+ CALL METHOD lo_instance->('IF_ABAP_CONV_IN~CONVERT')
+ EXPORTING
+ source = lv_xstr
+ RECEIVING
+ result = rv_char.
+ ENDTRY.
+
+ ENDMETHOD.
METHOD xstring_remove_bom.
@@ -14306,7 +16745,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD xstring_to_bintab.
DATA lv_length TYPE i.
@@ -14316,10 +16754,13 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
FIELD-SYMBOLS TYPE any.
-
CLEAR et_bintab.
ev_size = xstrlen( iv_xstr ).
+ IF iv_xstr IS INITIAL.
+ RETURN.
+ ENDIF.
+
APPEND INITIAL LINE TO et_bintab ASSIGNING .
lv_struct = boolc(
cl_abap_typedescr=>describe_by_data( )->type_kind = cl_abap_typedescr=>typekind_struct1 ).
@@ -14329,7 +16770,9 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
= iv_xstr.
lv_length = cl_abap_typedescr=>describe_by_data( )->length.
- lv_iterations = ev_size DIV lv_length.
+ ASSERT lv_length > 0.
+
+ lv_iterations = ( ev_size - 1 ) DIV lv_length.
DO lv_iterations TIMES.
lv_offset = sy-index * lv_length.
@@ -14342,7 +16785,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD xstring_to_int.
* use the built-in type conversion
@@ -14350,7 +16792,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD xstring_to_string_utf8.
DATA lv_data TYPE xstring.
@@ -14370,7 +16811,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD xstring_to_string_utf8_bom.
DATA lv_xstring TYPE xstring.
@@ -14389,7 +16829,6 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
-
METHOD x_to_bitbyte.
CLEAR rv_bitbyte.
@@ -14406,11 +16845,8 @@ CLASS zcl_abapgit_convert IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_cts_api IMPLEMENTATION.
-
METHOD get_current_transport_for_obj.
DATA: lv_object_lockable TYPE abap_bool,
lv_locked TYPE abap_bool,
@@ -14452,7 +16888,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_current_transport_from_db.
" This method is used for objects that are included in transports but not locked
@@ -14465,7 +16900,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_object_locked_in_transport.
DATA: ls_object_key TYPE e071,
lv_type_check_result TYPE c LENGTH 1,
@@ -14502,7 +16936,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
rv_locked = boolc( lv_lock_flag <> space ).
ENDMETHOD.
-
METHOD is_object_type_lockable.
DATA: ls_object_key TYPE e071,
lv_type_check_result TYPE c LENGTH 1.
@@ -14520,7 +16953,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
rv_lockable = boolc( lv_type_check_result = 'L' ).
ENDMETHOD.
-
METHOD is_object_type_transportable.
DATA: ls_object_key TYPE e071,
lv_type_check_result TYPE c LENGTH 1.
@@ -14535,13 +16967,14 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
IMPORTING
pe_result = lv_type_check_result.
- rv_transportable = boolc( lv_type_check_result CA 'RTL' ).
+ rv_transportable = boolc( lv_type_check_result CA 'RTL' OR iv_object_type = 'TABU' ).
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~change_transport_type.
- DATA ls_request_header TYPE trwbo_request_header.
+ DATA:
+ ls_request_header TYPE trwbo_request_header,
+ lt_request_headers TYPE trwbo_request_headers.
CALL FUNCTION 'ENQUEUE_E_TRKORR'
EXPORTING
@@ -14554,33 +16987,49 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
- CALL FUNCTION 'TRINT_READ_REQUEST_HEADER'
+ CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS'
EXPORTING
- iv_read_e070 = abap_true
- iv_read_e070c = abap_true
- CHANGING
- cs_request = ls_request_header
+ iv_trkorr = iv_transport_request
+ IMPORTING
+ et_request_headers = lt_request_headers
EXCEPTIONS
- empty_trkorr = 1
- not_exist_e070 = 2
- OTHERS = 3.
+ invalid_input = 1
+ OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
- CALL FUNCTION 'TRINT_CHANGE_TRFUNCTION'
- EXPORTING
- iv_new_trfunction = iv_transport_type
- CHANGING
- cs_request_header = ls_request_header
- EXCEPTIONS
- action_aborted_by_user = 1
- change_not_allowed = 2
- db_access_error = 3
- OTHERS = 4.
- IF sy-subrc <> 0.
- zcx_abapgit_exception=>raise_t100( ).
- ENDIF.
+ LOOP AT lt_request_headers INTO ls_request_header WHERE trfunction = iv_transport_type_from.
+
+ CALL FUNCTION 'TRINT_READ_REQUEST_HEADER'
+ EXPORTING
+ iv_read_e070 = abap_true
+ iv_read_e070c = abap_true
+ CHANGING
+ cs_request = ls_request_header
+ EXCEPTIONS
+ empty_trkorr = 1
+ not_exist_e070 = 2
+ OTHERS = 3.
+ IF sy-subrc <> 0.
+ zcx_abapgit_exception=>raise_t100( ).
+ ENDIF.
+
+ CALL FUNCTION 'TRINT_CHANGE_TRFUNCTION'
+ EXPORTING
+ iv_new_trfunction = iv_transport_type_to
+ CHANGING
+ cs_request_header = ls_request_header
+ EXCEPTIONS
+ action_aborted_by_user = 1
+ change_not_allowed = 2
+ db_access_error = 3
+ OTHERS = 4.
+ IF sy-subrc <> 0.
+ zcx_abapgit_exception=>raise_t100( ).
+ ENDIF.
+
+ ENDLOOP.
CALL FUNCTION 'DEQUEUE_E_TRKORR'
EXPORTING
@@ -14588,7 +17037,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~confirm_transport_messages.
TYPES: BEGIN OF ty_s_message,
@@ -14612,7 +17060,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
" remember the call to avoid duplicates in GT_CONFIRMED_MESSAGES
mv_confirm_transp_msgs_called = abap_true.
-
" Auto-confirm certain messages (requires SAP Note 1609940)
PERFORM dummy IN PROGRAM saplstrd IF FOUND. "load function group STRD once into memory
@@ -14646,13 +17093,15 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~create_transport_entries.
DATA lt_tables TYPE tredt_objects.
DATA lt_table_keys TYPE STANDARD TABLE OF e071k.
DATA lv_with_dialog TYPE abap_bool.
+ FIELD-SYMBOLS LIKE LINE OF lt_tables.
+ FIELD-SYMBOLS LIKE LINE OF lt_table_keys.
+
cl_table_utilities_brf=>create_transport_entries(
EXPORTING
it_table_ins = it_table_ins
@@ -14668,6 +17117,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
CALL FUNCTION 'TR_OBJECTS_CHECK'
TABLES
wt_ko200 = lt_tables
+ wt_e071k = lt_table_keys
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
@@ -14680,22 +17130,30 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
lv_with_dialog = abap_true.
ENDIF.
- CALL FUNCTION 'TRINT_OBJECTS_CHECK_AND_INSERT'
+ READ TABLE lt_tables ASSIGNING INDEX 1.
+ ASSERT sy-subrc = 0.
+
+ LOOP AT lt_table_keys ASSIGNING .
+ -objfunc = -objfunc.
+ ENDLOOP.
+
+ CALL FUNCTION 'TR_OBJECT_INSERT'
EXPORTING
- iv_order = iv_transport
- iv_with_dialog = lv_with_dialog
- CHANGING
- ct_ko200 = lt_tables
- ct_e071k = lt_table_keys
+ wi_order = iv_transport
+ wi_ko200 =
+ iv_no_show_option = abap_true
+ TABLES
+ wt_e071k = lt_table_keys
EXCEPTIONS
- OTHERS = 1.
+ cancel_edit_other_error = 1
+ show_only_other_error = 2
+ OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~get_r3tr_obj_for_limu_obj.
CLEAR ev_object.
@@ -14723,7 +17181,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~get_transports_for_list.
DATA lv_request TYPE trkorr.
@@ -14785,7 +17242,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~get_transport_for_object.
IF is_item-obj_type IS NOT INITIAL AND is_item-obj_name IS NOT INITIAL.
@@ -14811,7 +17267,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~insert_transport_object.
CALL FUNCTION 'RS_CORR_INSERT'
@@ -14834,14 +17289,12 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~is_chrec_possible_for_package.
IF iv_package IS NOT INITIAL.
rv_possible = zcl_abapinst_factory=>get_sap_package( iv_package )->are_changes_recorded_in_tr_req( ).
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~list_open_requests_by_user.
TYPES: BEGIN OF ty_e070,
@@ -14869,7 +17322,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~list_r3tr_by_request.
TYPES: BEGIN OF ty_contents,
@@ -14885,7 +17337,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA ls_contents LIKE LINE OF lt_contents.
DATA ls_list LIKE LINE OF rt_list.
-
SELECT trkorr FROM e070 INTO TABLE lt_tasks
WHERE strkorr = iv_request
ORDER BY PRIMARY KEY.
@@ -14918,7 +17369,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ev_object = ls_list-object
ev_obj_name = ls_list-obj_name ).
INSERT ls_list INTO TABLE rt_list.
- CATCH zcx_abapgit_exception.
+ CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDCASE.
ENDLOOP.
@@ -14928,7 +17379,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~read.
DATA ls_request TYPE trwbo_request.
@@ -14936,7 +17386,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
FIELD-SYMBOLS LIKE LINE OF rs_request-keys.
-
ls_request-h-trkorr = iv_trkorr.
CALL FUNCTION 'TRINT_READ_REQUEST'
@@ -14966,7 +17415,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~read_description.
SELECT SINGLE as4text FROM e07t
@@ -14976,7 +17424,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~read_user.
SELECT SINGLE as4user FROM e070 INTO rv_uname
@@ -14984,7 +17431,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_cts_api~validate_transport_request.
CONSTANTS:
@@ -15007,11 +17453,8 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_config IMPLEMENTATION.
-
METHOD dump.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
@@ -15029,7 +17472,6 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~add_config.
DATA lv_where TYPE string.
@@ -15055,7 +17497,6 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~from_json.
DATA ls_file LIKE LINE OF it_files.
@@ -15080,12 +17521,10 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~get_configs.
rt_configs = mt_config.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~remove_config.
ASSERT is_config-type IS NOT INITIAL.
@@ -15099,7 +17538,6 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~to_json.
DATA ls_config LIKE LINE OF mt_config.
@@ -15117,7 +17555,6 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_config~update_config.
zif_abapgit_data_config~remove_config( is_config ).
@@ -15126,11 +17563,8 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
-
METHOD convert_json_to_itab.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
@@ -15149,7 +17583,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD determine_transport_request.
DATA li_exit TYPE REF TO zif_abapgit_exit.
@@ -15169,7 +17602,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_table_allowed_to_edit.
" Is the object supported (by default or based on exit)?
@@ -15179,7 +17611,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD preview_database_changes.
* method currently distinguishes between records be deleted and inserted (comparison of complete record)
@@ -15222,7 +17653,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_database_table.
DATA lv_where LIKE LINE OF it_where.
@@ -15241,7 +17671,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD write_database_table.
FIELD-SYMBOLS TYPE ANY TABLE.
@@ -15279,7 +17708,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_deserializer~actualize.
* this method updates the database
@@ -15340,7 +17768,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_deserializer~deserialize.
* this method does not persist any changes to the database
@@ -15395,7 +17822,6 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_deserializer~deserialize_check.
DATA lt_configs TYPE zif_abapgit_data_config=>ty_config_tt.
@@ -15414,11 +17840,8 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_serializer IMPLEMENTATION.
-
METHOD convert_itab_to_json.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
@@ -15451,7 +17874,6 @@ CLASS zcl_abapgit_data_serializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_database_table.
DATA lv_records TYPE i.
@@ -15484,7 +17906,6 @@ CLASS zcl_abapgit_data_serializer IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_serializer~serialize.
DATA lt_configs TYPE zif_abapgit_data_config=>ty_config_tt.
@@ -15519,11 +17940,8 @@ CLASS zcl_abapgit_data_serializer IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_supporter IMPLEMENTATION.
-
METHOD get_supported_objects.
DATA:
@@ -15559,7 +17977,6 @@ CLASS zcl_abapgit_data_supporter IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_data_supporter~is_object_supported.
FIELD-SYMBOLS LIKE LINE OF mt_supported_objects.
@@ -15585,16 +18002,12 @@ CLASS zcl_abapgit_data_supporter IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_factory IMPLEMENTATION.
-
METHOD get_config.
CREATE OBJECT ri_config TYPE zcl_abapgit_data_config.
ENDMETHOD.
-
METHOD get_deserializer.
IF gi_deserializer IS INITIAL.
@@ -15605,7 +18018,6 @@ CLASS zcl_abapgit_data_factory IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_serializer.
IF gi_serializer IS INITIAL.
@@ -15616,7 +18028,6 @@ CLASS zcl_abapgit_data_factory IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_supporter.
IF gi_supporter IS INITIAL.
@@ -15628,30 +18039,22 @@ CLASS zcl_abapgit_data_factory IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_data_injector IMPLEMENTATION.
-
METHOD set_deserializer.
zcl_abapgit_data_factory=>gi_deserializer = ii_deserializer.
ENDMETHOD.
-
METHOD set_serializer.
zcl_abapgit_data_factory=>gi_serializer = ii_serializer.
ENDMETHOD.
-
METHOD set_supporter.
zcl_abapgit_data_factory=>gi_supporter = ii_supporter.
ENDMETHOD.
ENDCLASS.
-
-
-CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
-
+CLASS zcl_abapgit_data_utils IMPLEMENTATION.
METHOD build_config_filename.
@@ -15662,7 +18065,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD build_data_filename.
rv_filename = to_lower( |{ is_config-name }.{ is_config-type }|
@@ -15672,7 +18074,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD build_table_itab.
DATA lo_type TYPE REF TO cl_abap_typedescr.
@@ -15731,7 +18132,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD does_table_exist.
" This is slow but ensures that the table actually exists and is not just buffered by RTTI
@@ -15744,7 +18144,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_customizing_table.
DATA lv_contflag TYPE c LENGTH 1.
@@ -15784,7 +18183,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD jump.
" Run SE16 with authorization check
@@ -15797,7 +18195,7 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
db_not_exists = 3
no_permission = 4
no_change_allowed = 5
- table_is_gtt = 6
+* table_is_gtt = 6 " not in lower releases
OTHERS = 7.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Table { is_item-obj_name } cannot be displayed| ).
@@ -15805,7 +18203,6 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
-
METHOD list_key_fields.
DATA lo_obj TYPE REF TO object.
DATA lv_tabname TYPE c LENGTH 16.
@@ -15863,10 +18260,7 @@ CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
-CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
-
+CLASS zcl_abapgit_default_transport IMPLEMENTATION.
METHOD clear.
@@ -15887,14 +18281,12 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
-
METHOD constructor.
store( ).
ENDMETHOD.
-
METHOD restore.
IF ms_save IS INITIAL.
@@ -15921,7 +18313,6 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_internal.
CALL FUNCTION 'TR_TASK_SET'
@@ -15943,14 +18334,16 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
-
METHOD store.
- ms_save = zif_abapgit_default_transport~get( ).
+ TRY.
+ ms_save = zif_abapgit_default_transport~get( ).
+ CATCH zcx_abapgit_exception.
+ CLEAR ms_save.
+ ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_default_transport~get.
DATA lt_e070use TYPE STANDARD TABLE OF e070use WITH DEFAULT KEY.
@@ -15975,7 +18368,6 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_default_transport~reset.
DATA: ls_default_task TYPE e070use.
@@ -16000,7 +18392,6 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_default_transport~set.
" checks whether object changes of the package are reordered in transport
@@ -16024,11 +18415,8 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_dependencies IMPLEMENTATION.
-
METHOD get_ddls_dependencies.
DATA: lt_ddls_name TYPE TABLE OF ddsymtab,
@@ -16038,11 +18426,10 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
INSERT ls_ddls_name INTO TABLE lt_ddls_name.
PERFORM ('DDLS_GET_DEP') IN PROGRAM ('RADMASDL')
- TABLES lt_ddls_name rt_dependency.
+ TABLES lt_ddls_name rt_dependency ##PERF_NO_FORM.
ENDMETHOD.
-
METHOD resolve.
DATA: lv_tabclass TYPE dd02l-tabclass.
@@ -16096,7 +18483,7 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
" AUTH after DCLS
-korrnum = '715000'.
WHEN 'SUSH'.
- " SUSH after SUSC
+ " SUSH after SUSC and SRVB
-korrnum = '712000'.
WHEN 'SUSC'.
" SUSC after SUSO
@@ -16107,6 +18494,14 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
WHEN 'DCLS'.
" AUTH and SUSO after DCLS
-korrnum = '705000'.
+ WHEN 'G4BA' OR 'G4BS' OR 'IWMO' OR 'IWSV' OR 'IWVB'.
+ " after SRVB
+ -korrnum = '610000'.
+ WHEN 'SRVB'.
+ " after SRVD
+ -korrnum = '600500'.
+ WHEN 'SRVD'.
+ -korrnum = '600000'.
WHEN 'IASP'.
-korrnum = '552000'.
WHEN 'IARP'.
@@ -16167,7 +18562,6 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
ENDMETHOD.
-
METHOD resolve_ddic.
* this will make sure the deletion sequence of structures/tables work
* in case they have dependencies with .INCLUDE
@@ -16322,7 +18716,6 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
ENDMETHOD.
-
METHOD resolve_packages.
DATA: lt_subpackages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
@@ -16354,18 +18747,14 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
-
METHOD add_ignore.
DATA: lv_name TYPE string.
FIELD-SYMBOLS: LIKE LINE OF ms_data-ignore.
-
lv_name = iv_path && iv_filename.
READ TABLE ms_data-ignore FROM lv_name TRANSPORTING NO FIELDS.
@@ -16378,12 +18767,10 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD build_default.
DATA: ls_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
-
ls_data-master_language = sy-langu.
ls_data-starting_folder = '/src/'.
ls_data-folder_logic = zif_abapgit_dot_abapgit=>c_folder_logic-prefix.
@@ -16394,18 +18781,15 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD constructor.
ms_data = is_data.
ENDMETHOD.
-
METHOD deserialize.
DATA: lv_xml TYPE string,
ls_data TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit.
-
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstr ).
ls_data = from_xml( lv_xml ).
@@ -16416,6 +18800,16 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
+ METHOD determine_i18n_parameters.
+
+ rs_i18n_params-main_language = get_main_language( ).
+ rs_i18n_params-use_lxe = use_lxe( ).
+ rs_i18n_params-main_language_only = iv_main_language_only.
+ rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages(
+ iv_main_language = get_main_language( )
+ it_i18n_languages = get_i18n_languages( ) ).
+
+ ENDMETHOD.
METHOD from_xml.
@@ -16435,62 +18829,41 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_abap_language_version.
rv_abap_language_version = ms_data-abap_language_version.
ENDMETHOD.
-
METHOD get_data.
rs_data = ms_data.
ENDMETHOD.
-
METHOD get_folder_logic.
rv_logic = ms_data-folder_logic.
ENDMETHOD.
-
METHOD get_i18n_languages.
rt_languages = ms_data-i18n_languages.
ENDMETHOD.
-
METHOD get_main_language.
rv_language = ms_data-master_language.
+ IF rv_language IS INITIAL.
+ rv_language = sy-langu.
+ ENDIF.
ENDMETHOD.
-
METHOD get_name.
rv_name = ms_data-name.
ENDMETHOD.
-
METHOD get_original_system.
rv_original_system = ms_data-original_system.
ENDMETHOD.
-
- METHOD get_packaging.
-
- FIELD-SYMBOLS LIKE LINE OF rs_packaging-dependencies.
-
- rs_packaging = ms_data-packaging.
-
- rs_packaging-sem_version = zcl_abapgit_version=>conv_str_to_version( rs_packaging-version ).
-
- LOOP AT rs_packaging-dependencies ASSIGNING .
- -sem_version = zcl_abapgit_version=>conv_str_to_version( -version ).
- ENDLOOP.
-
- ENDMETHOD.
-
-
METHOD get_requirements.
rt_requirements = ms_data-requirements.
ENDMETHOD.
-
METHOD get_signature.
rs_signature-path = zif_abapgit_definitions=>c_root_dir.
@@ -16499,17 +18872,14 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_starting_folder.
rv_path = ms_data-starting_folder.
ENDMETHOD.
-
METHOD get_version_constant.
rv_version_constant = ms_data-version_constant.
ENDMETHOD.
-
METHOD is_ignored.
DATA: lv_name TYPE string,
@@ -16517,7 +18887,6 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
lv_dot TYPE string,
lv_ignore TYPE string.
-
lv_name = iv_path && iv_filename.
CONCATENATE ms_data-starting_folder '*' INTO lv_starting.
@@ -16551,19 +18920,16 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD remove_ignore.
DATA: lv_name TYPE string.
-
lv_name = iv_path && iv_filename.
DELETE TABLE ms_data-ignore FROM lv_name.
ENDMETHOD.
-
METHOD serialize.
DATA lv_xml TYPE string.
@@ -16574,62 +18940,38 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_abap_language_version.
ms_data-abap_language_version = iv_abap_language_version.
ENDMETHOD.
-
METHOD set_folder_logic.
ms_data-folder_logic = iv_logic.
ENDMETHOD.
-
METHOD set_i18n_languages.
ms_data-i18n_languages = it_languages.
ENDMETHOD.
-
METHOD set_name.
ms_data-name = iv_name.
ENDMETHOD.
-
METHOD set_original_system.
ms_data-original_system = iv_original_system.
ENDMETHOD.
-
- METHOD set_packaging.
-
- FIELD-SYMBOLS LIKE LINE OF ms_data-packaging-dependencies.
-
- ms_data-packaging = is_packaging.
-
- CLEAR ms_data-packaging-sem_version.
-
- LOOP AT ms_data-packaging-dependencies ASSIGNING .
- CLEAR -sem_version.
- ENDLOOP.
-
- ENDMETHOD.
-
-
METHOD set_requirements.
ms_data-requirements = it_requirements.
ENDMETHOD.
-
METHOD set_starting_folder.
ms_data-starting_folder = iv_path.
ENDMETHOD.
-
METHOD set_version_constant.
ms_data-version_constant = iv_version_constant.
ENDMETHOD.
-
METHOD to_file.
rs_file-path = zif_abapgit_definitions=>c_root_dir.
rs_file-filename = zif_abapgit_definitions=>c_dot_abapgit.
@@ -16637,7 +18979,6 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
rs_file-sha1 = zcl_abapgit_hash=>sha1_blob( rs_file-data ).
ENDMETHOD.
-
METHOD to_xml.
CALL TRANSFORMATION id
@@ -16655,7 +18996,6 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
-
METHOD use_lxe.
IF iv_yes <> abap_undefined.
@@ -16667,11 +19007,8 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_environment IMPLEMENTATION.
-
METHOD is_system_changes_allowed.
DATA:
@@ -16723,83 +19060,75 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
ENDMETHOD.
+ METHOD zif_abapgit_environment~check_parallel_processing.
- METHOD zif_abapgit_environment~compare_with_inactive.
- rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
- ENDMETHOD.
-
-
- METHOD zif_abapgit_environment~get_basis_release.
-
- SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
- WHERE component = 'SAP_BASIS' ##SUBRC_OK.
+ " If check fails, see transactions RZ12
+ DATA:
+ lt_setup TYPE STANDARD TABLE OF rzllitab,
+ ls_setup LIKE LINE OF lt_setup,
+ lt_erfc_setup TYPE STANDARD TABLE OF rzlliclass,
+ lt_instances TYPE STANDARD TABLE OF msxxlist WITH DEFAULT KEY.
- ENDMETHOD.
+ " Check if server group for parallel processing exists
+ CALL FUNCTION 'SMLG_GET_SETUP'
+ EXPORTING
+ grouptype = 'S'
+ TABLES
+ setup = lt_setup
+ erfc_setup = lt_erfc_setup
+ EXCEPTIONS
+ foreign_lock = 1
+ system_failure = 2
+ invalid_group_type = 3
+ OTHERS = 4.
+ IF sy-subrc <> 0.
+ RETURN.
+ ENDIF.
+ READ TABLE lt_setup INTO ls_setup WITH KEY classname = iv_group.
+ IF sy-subrc = 0 AND ls_setup-applserver IS NOT INITIAL.
- METHOD zif_abapgit_environment~is_merged.
- DATA lr_marker TYPE REF TO data ##NEEDED.
+ " Check if assigned server instance exists
+ CALL FUNCTION 'TH_SERVER_LIST'
+ TABLES
+ list = lt_instances.
- IF mv_is_merged = abap_undefined.
- TRY.
- CREATE DATA lr_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER').
- "No exception --> marker found
- mv_is_merged = abap_true.
+ READ TABLE lt_instances TRANSPORTING NO FIELDS WITH KEY name = ls_setup-applserver.
+ IF sy-subrc = 0.
+ rv_checked = abap_true.
+ ENDIF.
- CATCH cx_sy_create_data_error.
- mv_is_merged = abap_false.
- ENDTRY.
ENDIF.
- rv_result = mv_is_merged.
- ENDMETHOD.
+ ENDMETHOD.
- METHOD zif_abapgit_environment~is_repo_object_changes_allowed.
- IF mv_modifiable = abap_undefined.
- mv_modifiable = is_system_changes_allowed( ).
- ENDIF.
- rv_result = mv_modifiable.
+ METHOD zif_abapgit_environment~compare_with_inactive.
+ rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
ENDMETHOD.
+ METHOD zif_abapgit_environment~get_available_user_sessions.
- METHOD zif_abapgit_environment~is_restart_required.
- " This method will be used in the context of SAP Cloud Platform:
- " Pull/Push operations are executed in background jobs.
- " In case of the respective application server needs to be restarted,
- " it is required to terminate the background job and reschedule again.
- rv_result = abap_false.
- TRY.
- CALL METHOD ('CL_APJ_SCP_TOOLS')=>('IS_RESTART_REQUIRED')
- RECEIVING
- restart_required = rv_result.
- CATCH cx_sy_dyn_call_illegal_method cx_sy_dyn_call_illegal_class.
- rv_result = abap_false.
- ENDTRY.
- ENDMETHOD.
+ DATA:
+ lv_act_sessions TYPE i,
+ lv_max_sessions TYPE i,
+ lv_subrc TYPE sy-subrc.
+ CALL FUNCTION 'TH_USER_INFO'
+ IMPORTING
+ act_sessions = lv_act_sessions
+ max_sessions = lv_max_sessions
+ rc = lv_subrc.
- METHOD zif_abapgit_environment~is_sap_cloud_platform.
- IF mv_cloud = abap_undefined.
- TRY.
- CALL METHOD ('CL_COS_UTILITIES')=>('IS_SAP_CLOUD_PLATFORM')
- RECEIVING
- rv_is_sap_cloud_platform = mv_cloud.
- CATCH cx_sy_dyn_call_error.
- mv_cloud = abap_false.
- ENDTRY.
+ IF lv_subrc = 0.
+ rv_sessions = lv_max_sessions - lv_act_sessions.
ENDIF.
- rv_result = mv_cloud.
- ENDMETHOD.
+ ENDMETHOD.
- METHOD zif_abapgit_environment~is_sap_object_allowed.
-
- rv_allowed = cl_enh_badi_def_utility=>is_sap_system( ).
- IF rv_allowed = abap_true.
- RETURN.
- ENDIF.
+ METHOD zif_abapgit_environment~get_basis_release.
- rv_allowed = zcl_abapgit_exit=>get_instance( )->allow_sap_objects( ).
+ SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
+ WHERE component = 'SAP_BASIS' ##SUBRC_OK.
ENDMETHOD.
@@ -16848,19 +19177,6 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
ENDIF.
ENDMETHOD.
- METHOD zif_abapgit_environment~is_variant_maintenance.
-
- DATA:
- lt_variscreens TYPE STANDARD TABLE OF rsdynnr
- WITH NON-UNIQUE DEFAULT KEY.
-
- " Memory is set in LSVARF08 / EXPORT_SCREEN_TABLES.
- IMPORT variscreens = lt_variscreens FROM MEMORY ID '%_SCRNR_%'.
-
- rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
-
- ENDMETHOD.
-
METHOD zif_abapgit_environment~init_parallel_processing.
DATA: lv_group TYPE rzlli_apcl.
@@ -16881,17 +19197,88 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
- OTHERS = 7.
+ OTHERS = 7 ##FM_SUBRC_OK.
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
ENDMETHOD.
-ENDCLASS.
+ METHOD zif_abapgit_environment~is_merged.
+ DATA lr_marker TYPE REF TO data ##NEEDED.
+ IF mv_is_merged = abap_undefined.
+ TRY.
+ CREATE DATA lr_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER').
+ "No exception --> marker found
+ mv_is_merged = abap_true.
+ CATCH cx_sy_create_data_error.
+ mv_is_merged = abap_false.
+ ENDTRY.
+ ENDIF.
+ rv_result = mv_is_merged.
+ ENDMETHOD.
-CLASS zcl_abapgit_exit IMPLEMENTATION.
+ METHOD zif_abapgit_environment~is_repo_object_changes_allowed.
+ IF mv_modifiable = abap_undefined.
+ mv_modifiable = is_system_changes_allowed( ).
+ ENDIF.
+ rv_result = mv_modifiable.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_environment~is_restart_required.
+ " This method will be used in the context of SAP Cloud Platform:
+ " Pull/Push operations are executed in background jobs.
+ " In case of the respective application server needs to be restarted,
+ " it is required to terminate the background job and reschedule again.
+ rv_result = abap_false.
+ TRY.
+ CALL METHOD ('CL_APJ_SCP_TOOLS')=>('IS_RESTART_REQUIRED')
+ RECEIVING
+ restart_required = rv_result.
+ CATCH cx_sy_dyn_call_illegal_method cx_sy_dyn_call_illegal_class.
+ rv_result = abap_false.
+ ENDTRY.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_environment~is_sap_cloud_platform.
+ IF mv_cloud = abap_undefined.
+ TRY.
+ CALL METHOD ('CL_COS_UTILITIES')=>('IS_SAP_CLOUD_PLATFORM')
+ RECEIVING
+ rv_is_sap_cloud_platform = mv_cloud.
+ CATCH cx_sy_dyn_call_error.
+ mv_cloud = abap_false.
+ ENDTRY.
+ ENDIF.
+ rv_result = mv_cloud.
+ ENDMETHOD.
+
+ METHOD zif_abapgit_environment~is_sap_object_allowed.
+
+ rv_allowed = cl_enh_badi_def_utility=>is_sap_system( ).
+ IF rv_allowed = abap_true.
+ RETURN.
+ ENDIF.
+
+ rv_allowed = zcl_abapgit_exit=>get_instance( )->allow_sap_objects( ).
+ ENDMETHOD.
+
+ METHOD zif_abapgit_environment~is_variant_maintenance.
+
+ DATA:
+ lt_variscreens TYPE STANDARD TABLE OF rsdynnr
+ WITH NON-UNIQUE DEFAULT KEY.
+
+ " Memory is set in LSVARF08 / EXPORT_SCREEN_TABLES.
+ IMPORT variscreens = lt_variscreens FROM MEMORY ID '%_SCRNR_%'.
+
+ rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
+
+ ENDMETHOD.
+ENDCLASS.
+
+CLASS zcl_abapgit_exit IMPLEMENTATION.
METHOD get_instance.
@@ -16902,7 +19289,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
RETURN.
ENDIF.
-
IF zcl_abapinst_factory=>get_environment( )->is_merged( ) = abap_true.
" Prevent accidental usage of exit handlers in the developer version
lv_class_name = |\\PROGRAM={ sy-repid }\\CLASS={ lv_class_name }|.
@@ -16922,7 +19308,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_running_in_test_context.
IF sy-sysid = 'ABC'.
@@ -16944,7 +19329,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~adjust_display_commit_url.
IF gi_exit IS NOT INITIAL.
@@ -16963,7 +19347,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~adjust_display_filename.
IF gi_exit IS NOT INITIAL.
@@ -16981,7 +19364,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~allow_sap_objects.
IF gi_exit IS NOT INITIAL.
@@ -16993,7 +19375,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_local_host.
IF gi_exit IS NOT INITIAL.
@@ -17005,7 +19386,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_max_parallel_processes.
IF gi_exit IS NOT INITIAL.
@@ -17021,7 +19401,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_proxy_authentication.
IF gi_exit IS NOT INITIAL.
@@ -17037,7 +19416,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_proxy_port.
IF gi_exit IS NOT INITIAL.
@@ -17053,7 +19431,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_proxy_url.
IF gi_exit IS NOT INITIAL.
@@ -17069,7 +19446,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_rfc_server_group.
IF gi_exit IS NOT INITIAL.
@@ -17081,7 +19457,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_supported_data_objects.
IF gi_exit IS NOT INITIAL.
@@ -17093,7 +19468,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_supported_object_types.
IF gi_exit IS NOT INITIAL.
@@ -17105,7 +19479,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~change_tadir.
IF gi_exit IS NOT INITIAL.
@@ -17125,7 +19498,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~create_http_client.
IF gi_exit IS NOT INITIAL.
@@ -17137,7 +19509,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~custom_serialize_abap_clif.
" This exit might be called twice per object
@@ -17161,7 +19532,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~deserialize_postprocess.
IF gi_exit IS NOT INITIAL.
@@ -17174,7 +19544,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~determine_transport_request.
IF gi_exit IS NOT INITIAL.
@@ -17191,6 +19560,16 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
+ METHOD zif_abapgit_exit~enhance_any_toolbar.
+
+ IF gi_exit IS NOT INITIAL.
+ TRY.
+ gi_exit->enhance_any_toolbar( io_menu ).
+ CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
+ ENDTRY.
+ ENDIF.
+
+ ENDMETHOD.
METHOD zif_abapgit_exit~enhance_repo_toolbar.
@@ -17206,7 +19585,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~get_ci_tests.
IF gi_exit IS NOT INITIAL.
@@ -17222,7 +19600,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~get_ssl_id.
IF gi_exit IS NOT INITIAL.
@@ -17238,7 +19615,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~http_client.
IF gi_exit IS NOT INITIAL.
@@ -17252,9 +19628,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
-
-
METHOD zif_abapgit_exit~pre_calculate_repo_status.
IF gi_exit IS NOT INITIAL.
@@ -17271,7 +19644,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~serialize_postprocess.
IF gi_exit IS NOT INITIAL.
@@ -17288,7 +19660,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_exit~validate_before_push.
IF gi_exit IS NOT INITIAL.
@@ -17303,16 +19674,10 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
-
-
-
ENDCLASS.
-
-
CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
-
METHOD detect_obj_definition.
ev_is_xml = boolc( iv_ext = to_upper( c_package_file-extension ) AND strlen( iv_type ) = 4 ).
@@ -17320,7 +19685,6 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
ENDMETHOD.
-
METHOD file_to_object.
DATA:
@@ -17337,7 +19701,9 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '#' IN lv_ext WITH '/'.
" Assume AFF namespace convention
- CREATE OBJECT go_aff_registry TYPE zcl_abapgit_aff_registry.
+ IF go_aff_registry IS INITIAL.
+ CREATE OBJECT go_aff_registry TYPE zcl_abapgit_aff_registry.
+ ENDIF.
IF go_aff_registry->is_supported_object_type( |{ lv_type }| ) = abap_true.
REPLACE ALL OCCURRENCES OF '(' IN lv_name WITH '/'.
@@ -17371,6 +19737,29 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
ENDMETHOD.
+ METHOD i18n_file_to_object.
+
+ DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
+
+ CLEAR: es_item, ev_lang, ev_ext.
+ lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
+
+ file_to_object(
+ EXPORTING
+ iv_filename = iv_filename
+ iv_path = iv_path
+ io_dot = lo_dot
+ IMPORTING
+ es_item = es_item ).
+
+ get_lang_and_ext(
+ EXPORTING
+ iv_filename = iv_filename
+ IMPORTING
+ ev_lang = ev_lang
+ ev_ext = ev_ext ).
+
+ ENDMETHOD.
METHOD is_obj_definition_file.
@@ -17395,7 +19784,6 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
ENDMETHOD.
-
METHOD map_filename_to_object.
DATA lv_class TYPE seoclsname.
@@ -17425,7 +19813,6 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
ENDMETHOD.
-
METHOD map_object_to_filename.
DATA lv_class TYPE seoclsname.
@@ -17441,6 +19828,8 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
CALL METHOD (lv_class)=>('ZIF_ABAPGIT_OBJECT~MAP_OBJECT_TO_FILENAME')
EXPORTING
is_item = is_item
+ iv_ext = iv_ext
+ iv_extra = iv_extra
CHANGING
cv_filename = cv_filename.
CATCH cx_sy_dyn_call_illegal_class ##NO_HANDLER.
@@ -17448,7 +19837,6 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
ENDMETHOD.
-
METHOD name_escape.
" Some characters in object names cause problems when identifying the object later
" -> we escape these characters here
@@ -17464,25 +19852,25 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF `?` IN rv_name WITH '%3f'.
ENDMETHOD.
-
METHOD name_unescape.
" Replace all %xy with encoded character
rv_name = cl_http_utility=>unescape_url( iv_name ).
ENDMETHOD.
-
METHOD object_to_file.
DATA lv_obj_name TYPE string.
+ DATA lv_obj_type TYPE string.
DATA lv_nb_of_slash TYPE string.
" Get escaped object name
lv_obj_name = to_lower( name_escape( is_item-obj_name ) ).
+ lv_obj_type = to_lower( is_item-obj_type ).
IF iv_extra IS INITIAL.
- CONCATENATE lv_obj_name '.' is_item-obj_type INTO rv_filename.
+ CONCATENATE lv_obj_name '.' lv_obj_type INTO rv_filename.
ELSE.
- CONCATENATE lv_obj_name '.' is_item-obj_type '.' iv_extra INTO rv_filename.
+ CONCATENATE lv_obj_name '.' lv_obj_type '.' iv_extra INTO rv_filename.
ENDIF.
IF iv_ext IS NOT INITIAL.
@@ -17494,6 +19882,8 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
map_object_to_filename(
EXPORTING
is_item = is_item
+ iv_ext = iv_ext
+ iv_extra = iv_extra
CHANGING
cv_filename = rv_filename ).
CATCH zcx_abapgit_exception ##NO_HANDLER.
@@ -17512,21 +19902,208 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'.
ENDIF.
+ IF iv_ext = 'properties'.
+ RETURN.
+ ENDIF.
+
TRANSLATE rv_filename TO LOWER CASE.
ENDMETHOD.
+
+ METHOD object_to_i18n_file.
+ DATA: lv_langu_sap1 TYPE sy-langu,
+ lv_langu_bcp47 TYPE string.
+
+ lv_langu_sap1 = zcl_abapgit_convert=>language_sap2_to_sap1( to_upper( iv_lang ) ).
+ lv_langu_bcp47 = zcl_abapgit_convert=>language_sap1_to_bcp47( lv_langu_sap1 ).
+
+ rv_filename = object_to_file(
+ is_item = is_item
+ iv_extra = |i18n.{ lv_langu_bcp47 }|
+ iv_ext = iv_ext ).
+
+ ENDMETHOD.
+
+ METHOD get_lang_and_ext.
+
+ DATA lt_filename_elements TYPE string_table.
+ DATA lv_langu_bcp47 TYPE string.
+ DATA lv_sap1 TYPE sy-langu.
+
+ SPLIT iv_filename AT '.' INTO TABLE lt_filename_elements.
+
+ READ TABLE lt_filename_elements INDEX lines( lt_filename_elements ) INTO ev_ext.
+ IF sy-subrc <> 0.
+ zcx_abapgit_exception=>raise( |Could not derive file extension of file { iv_filename }| ).
+ ENDIF.
+
+ READ TABLE lt_filename_elements WITH KEY table_line = `i18n` TRANSPORTING NO FIELDS.
+ IF sy-subrc = 0.
+ READ TABLE lt_filename_elements INDEX ( sy-tabix + 1 ) INTO lv_langu_bcp47.
+ IF sy-subrc = 0.
+ lv_sap1 = zcl_abapgit_convert=>language_bcp47_to_sap1( lv_langu_bcp47 ).
+ ev_lang = zcl_abapgit_convert=>language_sap1_to_sap2( lv_sap1 ). " actually it is to_upper( ISO-639 )
+
+ " to not break existing PO file implementations
+ IF ev_ext = `po`.
+ ev_lang = to_lower( ev_lang ).
+ ENDIF.
+ ENDIF.
+ ENDIF.
+
+ IF ev_lang IS INITIAL.
+ CLEAR ev_ext.
+ ENDIF.
+
+ ENDMETHOD.
+
ENDCLASS.
+CLASS lcl_package_to_path DEFINITION.
+ PUBLIC SECTION.
-CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
+ CLASS-METHODS get
+ IMPORTING
+ !iv_top TYPE devclass
+ !io_dot TYPE REF TO zcl_abapgit_dot_abapgit
+ !iv_package TYPE devclass
+ RETURNING
+ VALUE(rv_path) TYPE string.
+
+ CLASS-METHODS add
+ IMPORTING
+ !iv_top TYPE devclass
+ !io_dot TYPE REF TO zcl_abapgit_dot_abapgit
+ !iv_package TYPE devclass
+ !iv_path TYPE string.
+
+ PRIVATE SECTION.
+
+ TYPES:
+ BEGIN OF ty_buffer,
+ top TYPE devclass,
+ starting_folder TYPE string,
+ folder_logic TYPE string,
+ package TYPE devclass,
+ path TYPE string,
+ END OF ty_buffer.
+
+ CLASS-DATA gt_buffer
+ TYPE HASHED TABLE OF ty_buffer
+ WITH UNIQUE KEY top starting_folder folder_logic package.
+
+ENDCLASS.
+
+CLASS lcl_package_to_path IMPLEMENTATION.
+
+ METHOD get.
+
+ FIELD-SYMBOLS LIKE LINE OF gt_buffer.
+
+ READ TABLE gt_buffer ASSIGNING WITH TABLE KEY
+ top = iv_top
+ starting_folder = io_dot->get_starting_folder( )
+ folder_logic = io_dot->get_folder_logic( )
+ package = iv_package.
+ IF sy-subrc = 0.
+ rv_path = -path.
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD add.
+
+ DATA ls_buffer LIKE LINE OF gt_buffer.
+
+ CLEAR ls_buffer.
+ ls_buffer-top = iv_top.
+ ls_buffer-starting_folder = io_dot->get_starting_folder( ).
+ ls_buffer-folder_logic = io_dot->get_folder_logic( ).
+ ls_buffer-package = iv_package.
+ ls_buffer-path = iv_path.
+ INSERT ls_buffer INTO TABLE gt_buffer.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lcl_path_to_package DEFINITION.
+
+ PUBLIC SECTION.
+
+ CLASS-METHODS get
+ IMPORTING
+ !iv_top TYPE devclass
+ !io_dot TYPE REF TO zcl_abapgit_dot_abapgit
+ !iv_path TYPE string
+ RETURNING
+ VALUE(rv_package) TYPE devclass.
+ CLASS-METHODS add
+ IMPORTING
+ !iv_top TYPE devclass
+ !io_dot TYPE REF TO zcl_abapgit_dot_abapgit
+ !iv_path TYPE string
+ !iv_package TYPE devclass.
+
+ PRIVATE SECTION.
+
+ TYPES:
+ BEGIN OF ty_buffer,
+ top TYPE devclass,
+ starting_folder TYPE string,
+ folder_logic TYPE string,
+ path TYPE string,
+ package TYPE devclass,
+ END OF ty_buffer.
+
+ CLASS-DATA gt_buffer
+ TYPE HASHED TABLE OF ty_buffer
+ WITH UNIQUE KEY top starting_folder folder_logic path.
+
+ENDCLASS.
+
+CLASS lcl_path_to_package IMPLEMENTATION.
+
+ METHOD get.
+
+ FIELD-SYMBOLS LIKE LINE OF gt_buffer.
+
+ READ TABLE gt_buffer ASSIGNING WITH TABLE KEY
+ top = iv_top
+ starting_folder = io_dot->get_starting_folder( )
+ folder_logic = io_dot->get_folder_logic( )
+ path = iv_path.
+ IF sy-subrc = 0.
+ rv_package = -package.
+ RETURN.
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD add.
+
+ DATA ls_buffer LIKE LINE OF gt_buffer.
+
+ CLEAR ls_buffer.
+ ls_buffer-top = iv_top.
+ ls_buffer-starting_folder = io_dot->get_starting_folder( ).
+ ls_buffer-folder_logic = io_dot->get_folder_logic( ).
+ ls_buffer-path = iv_path.
+ ls_buffer-package = iv_package.
+ INSERT ls_buffer INTO TABLE gt_buffer.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
METHOD get_instance.
CREATE OBJECT ro_instance.
ENDMETHOD.
-
METHOD get_parent.
DATA: ls_parent LIKE LINE OF mt_parent.
@@ -17553,7 +20130,6 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD package_to_path.
DATA: lv_len TYPE i,
@@ -17562,6 +20138,14 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
lv_parentcl TYPE tdevc-parentcl,
lv_folder_logic TYPE string.
+ rv_path = lcl_package_to_path=>get(
+ iv_top = iv_top
+ io_dot = io_dot
+ iv_package = iv_package ).
+ IF rv_path IS NOT INITIAL.
+ RETURN.
+ ENDIF.
+
IF iv_top = iv_package.
rv_path = io_dot->get_starting_folder( ).
ELSE.
@@ -17630,8 +20214,13 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
ENDIF.
ENDIF.
- ENDMETHOD.
+ lcl_package_to_path=>add(
+ iv_top = iv_top
+ io_dot = io_dot
+ iv_package = iv_package
+ iv_path = rv_path ).
+ ENDMETHOD.
METHOD path_to_package.
@@ -17650,6 +20239,14 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
RETURN.
ENDIF.
+ rv_package = lcl_path_to_package=>get(
+ iv_top = iv_top
+ io_dot = io_dot
+ iv_path = iv_path ).
+ IF rv_package IS NOT INITIAL AND iv_create_if_not_exists = abap_false.
+ RETURN.
+ ENDIF.
+
lv_path = iv_path+lv_length.
lv_parent = iv_top.
rv_package = iv_top.
@@ -17712,14 +20309,17 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
lv_parent = rv_package.
ENDWHILE.
+ lcl_path_to_package=>add(
+ iv_top = iv_top
+ io_dot = io_dot
+ iv_path = iv_path
+ iv_package = rv_package ).
+
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
-
METHOD get_path_from_fullname.
DATA lv_len TYPE i.
@@ -17736,7 +20336,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~clipboard_export.
DATA lv_rc TYPE i.
@@ -17782,7 +20381,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~directory_browse.
IF iv_initial_folder IS NOT INITIAL.
@@ -17808,7 +20406,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~directory_create.
cl_gui_frontend_services=>directory_create(
@@ -17833,7 +20430,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~directory_exist.
cl_gui_frontend_services=>directory_exist(
@@ -17853,7 +20449,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~execute.
cl_gui_frontend_services=>execute(
@@ -17883,7 +20478,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~file_download.
TYPES ty_hex TYPE x LENGTH 200.
@@ -17931,7 +20525,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~file_upload.
TYPES: ty_hex TYPE x LENGTH 255.
@@ -17976,7 +20569,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~get_file_separator.
cl_gui_frontend_services=>get_file_separator(
@@ -17993,7 +20585,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~get_gui_version.
DATA:
@@ -18028,7 +20619,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~get_system_directory.
cl_gui_frontend_services=>get_system_directory(
@@ -18045,43 +20635,58 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~gui_is_available.
- CALL FUNCTION 'GUI_IS_AVAILABLE'
- IMPORTING
- return = rv_gui_is_available.
+ TRY.
+ CALL FUNCTION 'GUI_IS_AVAILABLE'
+ IMPORTING
+ return = rv_gui_is_available.
+ CATCH cx_sy_dyn_call_illegal_func.
+* when running on open-abap
+ RETURN.
+ ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~is_sapgui_for_java.
- CALL FUNCTION 'GUI_HAS_JAVABEANS'
- IMPORTING
- return = rv_result.
+ TRY.
+ CALL FUNCTION 'GUI_HAS_JAVABEANS'
+ IMPORTING
+ return = rv_result.
+ CATCH cx_sy_dyn_call_illegal_func.
+* when running on open-abap
+ RETURN.
+ ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~is_sapgui_for_windows.
- CALL FUNCTION 'GUI_HAS_ACTIVEX'
- IMPORTING
- return = rv_result.
+ TRY.
+ CALL FUNCTION 'GUI_HAS_ACTIVEX'
+ IMPORTING
+ return = rv_result.
+ CATCH cx_sy_dyn_call_illegal_func.
+* when running on open-abap
+ RETURN.
+ ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~is_webgui.
- CALL FUNCTION 'GUI_IS_ITS'
- IMPORTING
- return = rv_is_webgui.
+ TRY.
+ CALL FUNCTION 'GUI_IS_ITS'
+ IMPORTING
+ return = rv_is_webgui.
+ CATCH cx_sy_dyn_call_illegal_func.
+* when running on open-abap
+ RETURN.
+ ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~open_ie_devtools.
DATA: lv_system_directory TYPE string,
@@ -18101,7 +20706,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~show_file_open_dialog.
DATA:
@@ -18146,7 +20750,6 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_frontend_services~show_file_save_dialog.
DATA:
@@ -18188,33 +20791,35 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_function_module IMPLEMENTATION.
-
METHOD zif_abapgit_function_module~function_exists.
- DATA: lv_function_module_name TYPE c LENGTH 30.
+ DATA lv_function_module_name TYPE c LENGTH 30.
+ DATA lv_exists TYPE string.
lv_function_module_name = iv_function_module_name.
+ lv_exists = 'FUNCTION_EXISTS'.
- CALL FUNCTION 'FUNCTION_EXISTS'
- EXPORTING
- funcname = lv_function_module_name
- EXCEPTIONS
- function_not_exist = 1
- OTHERS = 2.
- rv_exists = boolc( sy-subrc = 0 ).
+ TRY.
+ CALL FUNCTION lv_exists
+ EXPORTING
+ funcname = lv_function_module_name
+ EXCEPTIONS
+ function_not_exist = 1
+ OTHERS = 2.
+ rv_exists = boolc( sy-subrc = 0 ).
+ CATCH cx_sy_dyn_call_illegal_func.
+* then its running in ABAP Cloud Programming Model, assume nothing is released
+* I could not find any way to check for this -Hvam
+ rv_exists = abap_false.
+ ENDTRY.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
-
METHOD jump_bw.
DATA:
@@ -18264,7 +20869,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD jump_tr.
DATA:
@@ -18288,7 +20892,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD jump_wb.
CALL FUNCTION 'RS_TOOL_ACCESS'
@@ -18307,7 +20910,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD jump_wb_line.
IF iv_line_number IS NOT INITIAL AND iv_sub_obj_type IS NOT INITIAL AND iv_sub_obj_name IS NOT INITIAL.
@@ -18334,7 +20936,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_gui_jumper~jump.
" WebGUI cannot open windows or ADT
@@ -18389,7 +20990,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_gui_jumper~jump_abapgit.
DATA lt_spagpa TYPE STANDARD TABLE OF rfc_spagpa.
@@ -18421,7 +21021,8 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
EXCEPTIONS
communication_failure = 1 MESSAGE lv_msg
system_failure = 2 MESSAGE lv_msg
- OTHERS = 3.
+ resource_failure = 3
+ OTHERS = 4.
lv_subrc = sy-subrc.
@@ -18449,7 +21050,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_gui_jumper~jump_adt.
" Open object in ADT (if enabled)
@@ -18474,7 +21074,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_gui_jumper~jump_batch_input.
DATA lv_msg TYPE c LENGTH 80.
@@ -18513,11 +21112,8 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_hash IMPLEMENTATION.
-
METHOD adler32.
CONSTANTS: lc_adler TYPE i VALUE 65521,
@@ -18531,7 +21127,6 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
lv_cb TYPE c LENGTH 4,
lv_char8 TYPE c LENGTH 8.
-
DO xstrlen( iv_xstring ) TIMES.
lv_index = sy-index - 1.
@@ -18563,7 +21158,6 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
ENDMETHOD.
-
METHOD sha1.
DATA: lv_len TYPE i,
@@ -18571,7 +21165,6 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
lv_string TYPE string,
lv_xstring TYPE xstring.
-
lv_len = xstrlen( iv_data ).
lv_char10 = lv_len.
CONDENSE lv_char10.
@@ -18588,19 +21181,16 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
ENDMETHOD.
-
METHOD sha1_blob.
rv_sha1 = sha1( iv_type = zif_abapgit_git_definitions=>c_type-blob
iv_data = iv_data ).
ENDMETHOD.
-
METHOD sha1_commit.
rv_sha1 = sha1( iv_type = zif_abapgit_git_definitions=>c_type-commit
iv_data = iv_data ).
ENDMETHOD.
-
METHOD sha1_raw.
DATA: lv_hash TYPE string,
@@ -18622,7 +21212,6 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
ENDMETHOD.
-
METHOD sha1_string.
DATA: lv_hash TYPE string,
@@ -18644,24 +21233,19 @@ CLASS zcl_abapgit_hash IMPLEMENTATION.
ENDMETHOD.
-
METHOD sha1_tag.
rv_sha1 = sha1( iv_type = zif_abapgit_git_definitions=>c_type-tag
iv_data = iv_data ).
ENDMETHOD.
-
METHOD sha1_tree.
rv_sha1 = sha1( iv_type = zif_abapgit_git_definitions=>c_type-tree
iv_data = iv_data ).
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
-
METHOD build_language_filter.
IF mt_language_filter IS INITIAL.
" translation_languages are includes, system langs are excludes, so the do not interfere
@@ -18674,7 +21258,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
rt_language_filter = mt_language_filter.
ENDMETHOD.
-
METHOD constructor.
IF is_params IS NOT INITIAL.
ms_params = is_params.
@@ -18687,7 +21270,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
ASSERT ms_params-main_language IS NOT INITIAL.
ENDMETHOD.
-
METHOD iso_langs_to_lang_filter.
DATA lv_laiso LIKE LINE OF it_iso_filter.
@@ -18718,7 +21300,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_lxe_applicable.
rv_yes = boolc( ms_params-main_language_only = abap_false AND
@@ -18727,7 +21308,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
ENDMETHOD.
-
METHOD new.
CREATE OBJECT ro_instance
EXPORTING
@@ -18738,7 +21318,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
is_params = is_params.
ENDMETHOD.
-
METHOD trim_saplang_keyed_table.
DATA lv_laiso TYPE laiso.
@@ -18782,7 +21361,6 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
ENDMETHOD.
-
METHOD trim_saplang_list.
DATA lv_langu TYPE sy-langu.
@@ -18819,11 +21397,8 @@ CLASS zcl_abapgit_i18n_params IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS ZCL_ABAPGIT_ITEM_GRAPH IMPLEMENTATION.
-
METHOD add_edge.
DATA ls_edge LIKE LINE OF mt_edges.
ASSERT is_from IS NOT INITIAL.
@@ -18833,12 +21408,10 @@ CLASS ZCL_ABAPGIT_ITEM_GRAPH IMPLEMENTATION.
APPEND ls_edge TO mt_edges.
ENDMETHOD.
-
METHOD constructor.
INSERT LINES OF it_items INTO TABLE mt_vertices.
ENDMETHOD.
-
METHOD get_next.
* find a vertex with no inbound edges, if it does not exist pick anything
@@ -18847,7 +21420,7 @@ CLASS ZCL_ABAPGIT_ITEM_GRAPH IMPLEMENTATION.
LOOP AT mt_vertices INTO ls_vertex.
lv_index = sy-tabix.
- READ TABLE mt_edges WITH KEY sec_key COMPONENTS
+ READ TABLE mt_edges WITH KEY sec_to COMPONENTS
to-obj_type = ls_vertex-obj_type
to-obj_name = ls_vertex-obj_name
TRANSPORTING NO FIELDS.
@@ -18870,12 +21443,10 @@ CLASS ZCL_ABAPGIT_ITEM_GRAPH IMPLEMENTATION.
ENDMETHOD.
-
METHOD has_vertices.
rv_bool = boolc( lines( mt_vertices ) > 0 ).
ENDMETHOD.
-
METHOD remove_vertex.
DATA ls_vertex LIKE LINE OF mt_vertices.
@@ -18883,16 +21454,447 @@ CLASS ZCL_ABAPGIT_ITEM_GRAPH IMPLEMENTATION.
ASSERT sy-subrc = 0.
DELETE mt_vertices INDEX iv_index.
- DELETE mt_edges WHERE
- from-obj_type = ls_vertex-obj_type AND
- from-obj_name = ls_vertex-obj_name.
+ DELETE mt_edges USING KEY sec_from
+ WHERE from-obj_type = ls_vertex-obj_type
+ AND from-obj_name = ls_vertex-obj_name.
+
ENDMETHOD.
ENDCLASS.
+*"* use this source file for the definition and implementation of
+*"* local helper classes, interface definitions and type
+*"* declarations
+CLASS lcl_json_path DEFINITION CREATE PUBLIC.
-CLASS zcl_abapgit_language IMPLEMENTATION.
+ PUBLIC SECTION.
+ METHODS:
+ serialize_rec
+ IMPORTING io_reader TYPE REF TO if_sxml_reader
+ it_path TYPE string_table
+ CHANGING ct_json_paths TYPE string_table.
+
+ CLASS-METHODS: deserialize
+ IMPORTING it_json_path TYPE string_table
+ RETURNING VALUE(rv_result) TYPE string
+ RAISING zcx_abapgit_exception.
+
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+
+ METHODS:
+ is_array
+ IMPORTING io_reader TYPE REF TO if_sxml_reader
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+ METHODS:
+ is_string_open
+ IMPORTING io_reader TYPE REF TO if_sxml_reader
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+ METHODS:
+ is_object
+ IMPORTING io_reader TYPE REF TO if_sxml_reader
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+ METHODS:
+ serialize_rec_array
+ IMPORTING io_reader TYPE REF TO if_sxml_reader
+ it_path TYPE string_table
+ CHANGING ct_json_paths TYPE string_table.
+ METHODS:
+ get_json_path
+ IMPORTING it_path TYPE string_table
+ RETURNING VALUE(rv_result) TYPE string.
+ CLASS-METHODS get_path_elements
+ IMPORTING iv_path TYPE string
+ RETURNING VALUE(rt_result) TYPE string_table
+ RAISING zcx_abapgit_exception.
+ CLASS-METHODS build_json
+ IMPORTING it_path_elements TYPE string_table
+ iv_value TYPE string
+ CHANGING cv_json_string TYPE string.
+ CLASS-METHODS path_contains_array
+ IMPORTING iv_path TYPE string
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+ CLASS-METHODS: to_json
+ IMPORTING iv_json_path TYPE string
+ RETURNING VALUE(ro_result) TYPE REF TO zcl_abapgit_ajson
+ RAISING zcx_abapgit_ajson_error
+ zcx_abapgit_exception.
+ CLASS-METHODS: is_primitiv
+ IMPORTING iv_string TYPE string
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+ CLASS-METHODS: is_comment_or_empty_line
+ IMPORTING iv_line TYPE string
+ RETURNING VALUE(rv_result) TYPE abap_bool.
+
+ENDCLASS.
+
+CLASS lcl_json_path IMPLEMENTATION.
+
+ METHOD to_json.
+ DATA: lv_path TYPE string,
+ lv_value TYPE string,
+ lt_path_elements TYPE string_table,
+ lv_json TYPE string.
+
+ FIND REGEX `(.*)=(.*$)` IN iv_json_path SUBMATCHES lv_path lv_value.
+
+ IF path_contains_array( lv_path ) = abap_true.
+
+ lt_path_elements = get_path_elements( lv_path ).
+
+ build_json( EXPORTING it_path_elements = lt_path_elements
+ iv_value = lv_value
+ CHANGING cv_json_string = lv_json ).
+
+ ro_result = zcl_abapgit_ajson=>parse( lv_json ).
+ ELSE.
+
+ REPLACE FIRST OCCURRENCE OF '$.' IN lv_path WITH ''.
+ REPLACE '.' IN lv_path WITH '/'.
+ ro_result = zcl_abapgit_ajson=>create_empty( iv_keep_item_order = abap_true ).
+ ro_result->set( iv_path = lv_path
+ iv_val = lv_value ).
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD path_contains_array.
+ DATA lv_array_pattern TYPE string VALUE `.*\[.*\].*`.
+ rv_result = boolc( matches( val = iv_path
+ regex = lv_array_pattern ) ).
+ ENDMETHOD.
+
+ METHOD build_json.
+ DATA: lt_new_path_element TYPE string_table,
+ lv_sub_match TYPE string,
+ lv_key_name TYPE string,
+ lv_key_value TYPE string,
+ lv_name TYPE string,
+ lv_first_elem TYPE string.
+
+ lt_new_path_element = it_path_elements.
+
+ IF lines( lt_new_path_element ) = 0.
+ RETURN.
+ ENDIF.
+
+ READ TABLE lt_new_path_element INTO lv_first_elem INDEX 1.
+
+ IF lv_first_elem = `$`. " is root level
+
+ DELETE lt_new_path_element INDEX 1.
+ build_json( EXPORTING it_path_elements = lt_new_path_element
+ iv_value = iv_value
+ CHANGING cv_json_string = cv_json_string ).
+
+ ELSEIF is_primitiv( lv_first_elem ) = abap_true.
+
+ cv_json_string = cv_json_string && | \{"{ lv_first_elem+1 }": |.
+
+ DELETE lt_new_path_element INDEX 1.
+
+ build_json( EXPORTING it_path_elements = lt_new_path_element
+ iv_value = iv_value
+ CHANGING cv_json_string = cv_json_string ).
+
+ cv_json_string = cv_json_string && ` }`.
+
+ ELSE. " is array
+
+ FIND REGEX `\[(.*)\]` IN lv_first_elem SUBMATCHES lv_sub_match.
+ FIND REGEX `(\w+)(?==='([^']*)')` IN lv_sub_match SUBMATCHES lv_key_name lv_key_value.
+ READ TABLE lt_new_path_element INTO lv_name INDEX 2.
+
+ DELETE lt_new_path_element INDEX 1.
+ DELETE lt_new_path_element INDEX 1.
+
+ IF lines( lt_new_path_element ) = 0.
+
+ cv_json_string = cv_json_string &&
+ |[ \{ "{ lv_key_name }": "{ lv_key_value }", "{ lv_name+1 }": "{ iv_value }"\} ]|.
+
+ ELSE.
+
+ cv_json_string = cv_json_string && |[ \{ "{ lv_key_name }": "{ lv_key_value }", "{ lv_name+1 }":|.
+
+ build_json( EXPORTING it_path_elements = lt_new_path_element
+ iv_value = iv_value
+ CHANGING cv_json_string = cv_json_string ).
+
+ cv_json_string = cv_json_string && `} ] `.
+
+ ENDIF.
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD is_primitiv.
+
+ FIND REGEX `^.\w+` IN iv_string. " string start with .
+ rv_result = boolc( sy-subrc = 0 ).
+
+ ENDMETHOD.
+
+ METHOD get_path_elements.
+ DATA: lv_pcre_pattern TYPE string,
+ lt_match_result TYPE match_result_tab,
+ lv_match TYPE match_result,
+ lv_hit TYPE string,
+ lx_find TYPE REF TO cx_root.
+
+ lv_pcre_pattern = `(^\$)|(\.\w+)|(\[[^\]]*\])`.
+
+ TRY.
+ FIND ALL OCCURRENCES OF REGEX lv_pcre_pattern IN iv_path RESULTS lt_match_result.
+ CATCH cx_sy_find_infinite_loop cx_sy_range_out_of_bounds cx_sy_invalid_regex cx_sy_regex_too_complex INTO lx_find.
+ zcx_abapgit_exception=>raise_with_text( lx_find ).
+ ENDTRY.
+ LOOP AT lt_match_result INTO lv_match.
+ lv_hit = substring( val = iv_path
+ off = lv_match-offset
+ len = lv_match-length ).
+ APPEND lv_hit TO rt_result.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD is_array.
+ rv_result = boolc( io_reader->name = 'array' ).
+ ENDMETHOD.
+
+ METHOD is_string_open.
+ rv_result = boolc( io_reader->name = 'str' AND io_reader->node_type = if_sxml_node=>co_nt_element_open ).
+ ENDMETHOD.
+
+ METHOD is_object.
+ rv_result = boolc( io_reader->name = 'object' ).
+ ENDMETHOD.
+
+ METHOD serialize_rec.
+ DATA: lt_new_path TYPE string_table,
+ lv_key TYPE string.
+
+ lt_new_path = it_path.
+
+ IF io_reader->read_next_node( ) IS INITIAL.
+ RETURN.
+ ENDIF.
+
+ IF is_string_open( io_reader ) = abap_true.
+
+ APPEND io_reader->value TO lt_new_path.
+ lv_key = get_json_path( lt_new_path ).
+
+ io_reader->read_next_node( ).
+ lv_key = |{ lv_key }={ io_reader->value }|.
+ APPEND lv_key TO ct_json_paths.
+
+ io_reader->read_next_node( ).
+ DELETE lt_new_path INDEX lines( lt_new_path ).
+
+ serialize_rec( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
+
+ APPEND io_reader->value TO lt_new_path.
+ serialize_rec( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
+
+ APPEND io_reader->value TO lt_new_path.
+ serialize_rec_array( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
+ AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
+
+ DELETE lt_new_path INDEX lines( lt_new_path ).
+ serialize_rec( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD serialize_rec_array.
+ DATA: lt_new_path TYPE string_table,
+ lv_json_path TYPE string,
+ lv_array_key TYPE string.
+
+ lt_new_path = it_path.
+
+ IF io_reader->read_next_node( ) IS INITIAL.
+ RETURN.
+ ENDIF.
+
+ IF is_string_open( io_reader ) = abap_true.
+
+ APPEND io_reader->value TO lt_new_path.
+ lv_json_path = get_json_path( lt_new_path ).
+
+ io_reader->read_next_node( ).
+ lv_json_path = |{ lv_json_path }={ io_reader->value }|.
+ APPEND lv_json_path TO ct_json_paths.
+ io_reader->read_next_node( ).
+
+ serialize_rec( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
+
+ io_reader->read_next_node( ).
+ lv_array_key = io_reader->value.
+ io_reader->read_next_node( ).
+ lv_array_key = |[?(@.{ lv_array_key }=='{ io_reader->value }')]|.
+ APPEND lv_array_key TO lt_new_path.
+ io_reader->read_next_node( ).
+
+ io_reader->read_next_node( ).
+ APPEND io_reader->value TO lt_new_path.
+ lv_json_path = get_json_path( lt_new_path ).
+
+ io_reader->read_next_node( ).
+ lv_json_path = |{ lv_json_path }={ io_reader->value }|.
+ APPEND lv_json_path TO ct_json_paths.
+ io_reader->read_next_node( ).
+
+ DELETE lt_new_path INDEX lines( lt_new_path ).
+ serialize_rec_array( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
+
+ APPEND io_reader->value TO lt_new_path.
+ serialize_rec_array( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
+ AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
+
+ DELETE lt_new_path INDEX lines( lt_new_path ).
+ serialize_rec_array( EXPORTING io_reader = io_reader
+ it_path = lt_new_path
+ CHANGING ct_json_paths = ct_json_paths ).
+
+ ENDIF.
+
+ ENDMETHOD.
+
+ METHOD get_json_path.
+ rv_result = concat_lines_of( table = it_path
+ sep = `.` ).
+ REPLACE ALL OCCURRENCES OF `.[` IN rv_result WITH `[`.
+ ENDMETHOD.
+
+ METHOD deserialize.
+
+ DATA: lo_merged TYPE REF TO zif_abapgit_ajson,
+ lv_json_path TYPE string,
+ lo_deserialization_result TYPE REF TO zif_abapgit_ajson,
+ lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
+
+ TRY.
+ lo_merged = zcl_abapgit_ajson=>parse( `` ).
+ CATCH zcx_abapgit_ajson_error INTO lx_ajson.
+ zcx_abapgit_exception=>raise_with_text( lx_ajson ).
+ ENDTRY.
+
+ LOOP AT it_json_path INTO lv_json_path.
+ IF is_comment_or_empty_line( lv_json_path ) = abap_true.
+ CONTINUE.
+ ENDIF.
+
+ TRY.
+ lo_deserialization_result = to_json( lv_json_path ).
+ CATCH zcx_abapgit_ajson_error INTO lx_ajson.
+ zcx_abapgit_exception=>raise_with_text( lx_ajson ).
+ ENDTRY.
+
+ TRY.
+ lo_merged = zcl_abapgit_ajson_utilities=>new( )->merge( io_json_a = lo_merged
+ io_json_b = lo_deserialization_result ).
+ CATCH zcx_abapgit_ajson_error INTO lx_ajson.
+ zcx_abapgit_exception=>raise_with_text( lx_ajson ).
+ ENDTRY.
+
+ ENDLOOP.
+
+ TRY.
+ rv_result = lo_merged->stringify( 2 ).
+ CATCH zcx_abapgit_ajson_error INTO lx_ajson.
+ zcx_abapgit_exception=>raise_with_text( lx_ajson ).
+ ENDTRY.
+ ENDMETHOD.
+
+ METHOD is_comment_or_empty_line.
+
+ IF iv_line IS INITIAL.
+ rv_result = abap_true.
+ RETURN.
+ ENDIF.
+
+ FIND REGEX `^!` IN iv_line.
+ IF sy-subrc = 0.
+ rv_result = abap_true.
+ RETURN.
+ ENDIF.
+
+ FIND REGEX `^#` IN iv_line.
+ IF sy-subrc = 0.
+ rv_result = abap_true.
+ RETURN.
+ ENDIF.
+
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS zcl_abapgit_json_path IMPLEMENTATION.
+
+ METHOD deserialize.
+
+ rv_result = lcl_json_path=>deserialize( it_json_path ).
+
+ ENDMETHOD.
+
+ METHOD serialize.
+ DATA: lo_json_path TYPE REF TO lcl_json_path,
+ lv_json_xstring TYPE xstring,
+ lt_root_path TYPE string_table,
+ lo_reader TYPE REF TO if_sxml_reader,
+ lx_parse_error TYPE REF TO cx_sxml_parse_error.
+
+ lv_json_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( iv_json ).
+ lo_reader = cl_sxml_string_reader=>create( input = lv_json_xstring ).
+
+ TRY.
+ IF lo_reader->read_next_node( ) IS INITIAL.
+ RETURN.
+ ENDIF.
+ CATCH cx_sxml_parse_error INTO lx_parse_error.
+ zcx_abapgit_exception=>raise_with_text( lx_parse_error ).
+ ENDTRY.
+
+ APPEND `$` TO lt_root_path.
+
+ CREATE OBJECT lo_json_path.
+ lo_json_path->serialize_rec( EXPORTING io_reader = lo_reader
+ it_path = lt_root_path
+ CHANGING ct_json_paths = rt_result ).
+ ENDMETHOD.
+ENDCLASS.
+
+CLASS zcl_abapgit_language IMPLEMENTATION.
METHOD class_constructor.
@@ -18902,14 +21904,12 @@ CLASS zcl_abapgit_language IMPLEMENTATION.
ENDMETHOD.
-
METHOD restore_login_language.
SET LOCALE LANGUAGE gv_login_language.
ENDMETHOD.
-
METHOD set_current_language.
SET LOCALE LANGUAGE iv_language.
@@ -18917,18 +21917,14 @@ CLASS zcl_abapgit_language IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_log IMPLEMENTATION.
-
METHOD constructor.
zif_abapgit_log~set_title( iv_title ).
ENDMETHOD.
-
METHOD from_exception.
CREATE OBJECT ro_log.
@@ -18939,7 +21935,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_messages_status.
DATA lr_msg TYPE REF TO zif_abapgit_log=>ty_msg.
@@ -18964,16 +21959,17 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add.
FIELD-SYMBOLS: LIKE LINE OF mt_log.
APPEND INITIAL LINE TO mt_log ASSIGNING .
- -msg-text = iv_msg.
- -msg-type = iv_type.
- -item = is_item.
- -exception = ix_exc.
+ -msg-text = iv_msg.
+ -msg-type = iv_type.
+ -msg-id = iv_class.
+ -msg-number = iv_number.
+ -item = is_item.
+ -exception = ix_exc.
CASE iv_type.
WHEN 'E' OR 'A' OR 'X'.
@@ -18988,7 +21984,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add_error.
zif_abapgit_log~add(
@@ -18998,7 +21993,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add_exception.
DATA lx_exc TYPE REF TO cx_root.
@@ -19019,7 +22013,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add_info.
zif_abapgit_log~add(
@@ -19029,7 +22022,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add_success.
zif_abapgit_log~add(
@@ -19039,7 +22031,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~add_warning.
zif_abapgit_log~add(
@@ -19049,12 +22040,10 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~clear.
CLEAR mt_log.
ENDMETHOD.
-
METHOD zif_abapgit_log~clone.
DATA lo_log TYPE REF TO zcl_abapgit_log.
@@ -19065,12 +22054,10 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~count.
rv_count = lines( mt_log ).
ENDMETHOD.
-
METHOD zif_abapgit_log~get_item_status.
DATA lr_log TYPE REF TO ty_log.
@@ -19108,7 +22095,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~get_log_level.
FIELD-SYMBOLS LIKE LINE OF mt_log.
@@ -19126,12 +22112,13 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~get_messages.
DATA ls_msg TYPE zif_abapgit_log~ty_log_out.
FIELD-SYMBOLS TYPE ty_log.
LOOP AT mt_log ASSIGNING .
ls_msg-type = -msg-type.
+ ls_msg-id = -msg-id.
+ ls_msg-number = -msg-number.
ls_msg-text = -msg-text.
ls_msg-obj_type = -item-obj_type.
ls_msg-obj_name = -item-obj_name.
@@ -19141,7 +22128,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
DELETE ADJACENT DUPLICATES FROM rt_msg.
ENDMETHOD.
-
METHOD zif_abapgit_log~get_status.
DATA lr_log TYPE REF TO ty_log.
@@ -19166,7 +22152,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~get_title.
rv_title = mv_title.
IF rv_title IS INITIAL.
@@ -19174,7 +22159,6 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_log~merge_with.
DATA lo_log TYPE REF TO zcl_abapgit_log.
@@ -19195,18 +22179,14 @@ CLASS zcl_abapgit_log IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_log~set_title.
mv_title = iv_title.
ri_log = me.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_longtexts IMPLEMENTATION.
-
METHOD escape_name.
" Prepare name for SQL LIKE condition
rv_object = iv_object_name.
@@ -19225,7 +22205,6 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
occ = 0 ).
ENDMETHOD.
-
METHOD read.
DATA: ls_longtext TYPE zif_abapgit_longtexts=>ty_longtext,
@@ -19234,6 +22213,10 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_dokil.
+ IF iv_object_name CA '#'.
+ zcx_abapgit_exception=>raise( |Invalid name for longtext: { iv_longtext_id } { iv_object_name }| ).
+ ENDIF.
+
lv_object = escape_name(
iv_longtext_id = iv_longtext_id
iv_object_name = iv_object_name ).
@@ -19303,7 +22286,6 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_longtexts~changed_by.
DATA: lt_longtexts TYPE zif_abapgit_longtexts=>ty_longtexts.
@@ -19324,7 +22306,6 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_longtexts~delete.
DATA: lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt,
@@ -19361,7 +22342,6 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_longtexts~deserialize.
DATA: lt_longtexts TYPE zif_abapgit_longtexts=>ty_longtexts,
@@ -19432,7 +22412,6 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_longtexts~serialize.
rt_longtexts = read( iv_object_name = iv_object_name
@@ -19450,11 +22429,8 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
-
METHOD check_langs_versus_installed.
DATA lt_installed_hash TYPE HASHED TABLE OF laiso WITH UNIQUE KEY table_line.
@@ -19474,7 +22450,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD class_constructor.
APPEND 'CLAS' TO gt_supported_obj_types.
@@ -19491,7 +22466,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD convert_lang_string_to_table.
DATA:
@@ -19526,7 +22500,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD convert_table_to_lang_string.
DATA:
@@ -19553,7 +22526,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_from_po.
DATA lv_lang LIKE LINE OF mo_i18n_params->ms_params-translation_languages.
@@ -19617,7 +22589,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_xml.
DATA:
@@ -19653,7 +22624,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD detect_unsupported_languages.
check_langs_versus_installed(
@@ -19665,7 +22635,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_installed_languages.
DATA:
@@ -19705,7 +22674,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_lang_iso4.
DATA lv_lang_iso639 TYPE laiso.
@@ -19732,7 +22700,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_lxe_object_list.
DATA lv_object_name TYPE trobj_name.
@@ -19756,7 +22723,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_translation_languages.
" Returns a list of translation languages for serialization
@@ -19786,18 +22752,15 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD iso4_to_iso2.
rv_laiso = iv_lxe_lang+0(2).
ENDMETHOD.
-
METHOD is_object_supported.
READ TABLE gt_supported_obj_types TRANSPORTING NO FIELDS WITH KEY table_line = iv_object_type.
rv_yes = boolc( sy-subrc = 0 ).
ENDMETHOD.
-
METHOD langu_to_laiso_safe.
zcl_abapgit_convert=>language_sap1_to_sap2(
@@ -19814,7 +22777,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_lxe_object_text_pair.
DATA:
@@ -19854,7 +22816,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_text_items.
DATA:
@@ -19905,7 +22866,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_as_po.
DATA lt_lxe_texts TYPE ty_lxe_translations.
@@ -19935,7 +22895,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_xml.
DATA lt_lxe_texts TYPE ty_lxe_translations.
@@ -19952,7 +22911,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD write_lxe_object_text_pair.
DATA:
@@ -19990,7 +22948,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_lxe_texts~deserialize.
IF is_object_supported( iv_object_type ) = abap_false.
@@ -20015,7 +22972,6 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_lxe_texts~serialize.
IF is_object_supported( iv_object_type ) = abap_false.
@@ -20051,11 +23007,8 @@ CLASS zcl_abapgit_lxe_texts IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
-
METHOD activate.
" Make sure that all changes are committed since any activation error will lead to a rollback
@@ -20075,7 +23028,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD activate_ddic.
DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb,
@@ -20087,7 +23039,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF gt_objects.
-
LOOP AT gt_objects ASSIGNING .
" Filter types supported by mass activation
IF is_ddic_type( -object ) = abap_false.
@@ -20167,7 +23118,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD activate_new.
IF gt_objects IS INITIAL.
@@ -20186,7 +23136,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD activate_old.
DATA:
@@ -20198,7 +23147,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
IF gt_objects IS NOT INITIAL.
-
lv_no_ui = boolc( lv_popup = abap_false ).
IF iv_ddic = abap_true.
@@ -20224,7 +23172,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
excecution_error = 1
cancelled = 2
insert_into_corr_error = 3
- OTHERS = 4 ##SUBRC_OK.
+ OTHERS = 4 ##FM_SUBRC_OK.
CATCH cx_sy_dyn_call_param_not_found.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING
@@ -20238,7 +23186,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
excecution_error = 1
cancelled = 2
insert_into_corr_error = 3
- OTHERS = 4 ##SUBRC_OK.
+ OTHERS = 4 ##FM_SUBRC_OK.
ENDTRY.
CASE sy-subrc.
WHEN 1 OR 3 OR 4.
@@ -20260,7 +23208,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD add.
* function group SEWORKINGAREA
@@ -20283,7 +23230,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD add_activation_errors_to_log.
DATA:
@@ -20306,21 +23252,29 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
IF strlen( -object_text ) > 5.
ls_item-obj_type = -object_text(4).
ls_item-obj_name = -object_text+5(*).
- ELSE.
+ ELSEIF -show_req IS NOT INITIAL.
ls_item-obj_name = -show_req->object_name.
SELECT SINGLE tadir FROM euobjedit INTO ls_item-obj_type
WHERE type = -show_req->object_type.
ENDIF.
LOOP AT -mtext ASSIGNING .
- ii_log->add_error(
- iv_msg =
- is_item = ls_item ).
+ IF sy-tabix = 1.
+ ii_log->add(
+ iv_type = 'E'
+ iv_msg =
+ iv_class = -message-msgid
+ iv_number = -message-msgno
+ is_item = ls_item ).
+ ELSE.
+ ii_log->add_error(
+ iv_msg =
+ is_item = ls_item ).
+ ENDIF.
ENDLOOP.
ENDLOOP.
ENDMETHOD.
-
METHOD add_errors_and_warnings_to_log.
DATA: lt_lines TYPE STANDARD TABLE OF trlog,
@@ -20328,7 +23282,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_lines.
-
lv_logname_db = iv_logname.
CALL FUNCTION 'TR_READ_LOG'
@@ -20353,27 +23306,26 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
DELETE lt_lines WHERE class = 'D0' AND number = '319'.
LOOP AT lt_lines ASSIGNING .
- ii_log->add( iv_msg = -line
- iv_type = -severity ).
+ ii_log->add( iv_msg = -line
+ iv_type = -severity
+ iv_class = -class
+ iv_number = |{ -number }| ).
ENDLOOP.
ii_log->add_info( |View complete activation log in program RSPUTPRT (type D, log name { iv_logname })| ).
ENDMETHOD.
-
METHOD add_item.
add( iv_type = is_item-obj_type
iv_name = is_item-obj_name ).
ENDMETHOD.
-
METHOD clear.
CLEAR gt_objects.
CLEAR gt_classes.
ENDMETHOD.
-
METHOD get_ddic_type.
DATA lv_obj_name TYPE e071-obj_name.
@@ -20402,7 +23354,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_active.
" Checks if object is active or not
@@ -20420,7 +23371,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_ddic_active.
DATA:
@@ -20458,7 +23408,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_ddic_type.
" Determine if object can be handled by mass activation (see RADMASUTC form ma_tab_check)
@@ -20470,13 +23419,13 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
c_enqueue NS iv_obj_type AND c_sqsc NS iv_obj_type AND
c_stob NS iv_obj_type AND c_ntab NS iv_obj_type AND
c_ddls NS iv_obj_type AND c_para NS iv_obj_type AND
- c_switches NS iv_obj_type AND iv_obj_type <> c_enhd.
+ c_switches NS iv_obj_type AND iv_obj_type <> c_enhd AND
+ c_aspect NS iv_obj_type AND c_scalarfunc NS iv_obj_type.
rv_result = abap_false.
ENDIF.
ENDMETHOD.
-
METHOD is_non_ddic_active.
DATA:
@@ -20501,7 +23450,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD update_where_used.
DATA: ls_class LIKE LINE OF gt_classes,
@@ -20539,7 +23487,6 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
-
METHOD use_new_activation_logic.
IF zcl_abapinst_factory=>get_function_module( )->function_exists( 'DD_MASS_ACT_C3' ) = abap_true.
@@ -20549,19 +23496,18 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_super IMPLEMENTATION.
-
METHOD clear_abap_language_version.
" Used during serializing of objects
+ " ms_item-abap_language_version is the repository setting for ABAP Language Version
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
" Ignore ABAP language version
CLEAR cv_abap_language_version.
ELSEIF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version.
- " Check if ABAP language version matches repository setting
+ " Check if ABAP language version of the object matches repository setting (Standard, Key User, or Cloud)
+ " because all objects must have the save ABAP language version as the repository
zcl_abapgit_abap_language_vers=>check_abap_language_version(
iv_abap_language_version = cv_abap_language_version
is_item = ms_item ).
@@ -20569,7 +23515,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD constructor.
ms_item = is_item.
ASSERT NOT ms_item IS INITIAL.
@@ -20590,7 +23535,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD corr_insert.
DATA: lv_object TYPE trobj_name,
@@ -20616,7 +23560,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD delete_ddic.
DATA: lv_objname TYPE rsedd0-ddobjname,
@@ -20638,7 +23581,7 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
object_not_specified = 3
permission_failure = 4
dialog_needed = 5
- OTHERS = 6.
+ OTHERS = 6 ##FM_SUBRC_OK.
CATCH cx_sy_dyn_call_param_not_found.
TRY.
" try to force deletion for APPENDs
@@ -20654,7 +23597,7 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
object_not_specified = 3
permission_failure = 4
dialog_needed = 5
- OTHERS = 6.
+ OTHERS = 6 ##FM_SUBRC_OK.
CATCH cx_sy_dyn_call_param_not_found.
" no_ask_delete_append and aie_force_deletion not available in lower releases
CALL FUNCTION 'RS_DD_DELETE_OBJ'
@@ -20668,7 +23611,7 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
object_not_specified = 3
permission_failure = 4
dialog_needed = 5
- OTHERS = 6.
+ OTHERS = 6 ##FM_SUBRC_OK.
ENDTRY.
ENDTRY.
@@ -20681,7 +23624,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD delete_longtexts.
zcl_abapinst_factory=>get_longtexts( )->delete(
@@ -20690,7 +23632,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_longtexts.
zcl_abapinst_factory=>get_longtexts( )->deserialize(
@@ -20702,7 +23643,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD exists_a_lock_entry_for.
DATA: lt_lock_entries TYPE STANDARD TABLE OF seqg3.
@@ -20739,12 +23679,10 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_accessed_files.
rt_files = mo_files->get_accessed_files( ).
ENDMETHOD.
-
METHOD get_metadata.
DATA: lv_class TYPE string.
@@ -20758,14 +23696,12 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_active.
rv_active = zcl_abapgit_objects_activation=>is_active( ms_item ).
ENDMETHOD.
-
METHOD serialize_longtexts.
zcl_abapinst_factory=>get_longtexts( )->serialize(
@@ -20778,15 +23714,15 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_abap_language_version.
" Used during deserializing of objects
+ " ms_item-abap_language_version is the expected setting for ABAP Language Version
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
- " ABAP language version is derived from object type and target package (see zcl_abapgit_objects->deserialize)
- cv_abap_language_version = ms_item-abap_language_version.
+ CLEAR cv_abap_language_version.
ELSEIF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version.
- " Check if ABAP language version matches repository setting
+ " Check if ABAP language version of the object matches repository setting (Standard, Key User, or Cloud)
+ " because all objects must have the save ABAP language version as the repository
zcl_abapgit_abap_language_vers=>check_abap_language_version(
iv_abap_language_version = cv_abap_language_version
is_item = ms_item ).
@@ -20794,7 +23730,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_default_package.
" In certain cases we need to set the package via ABAP memory
@@ -20811,7 +23746,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_default_transport.
" In certain cases we need to set the transport via ABAP memory
@@ -20823,7 +23757,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD tadir_delete.
CALL FUNCTION 'TR_TADIR_INTERFACE'
@@ -20865,7 +23798,6 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
-
METHOD tadir_insert.
CALL FUNCTION 'TR_TADIR_INTERFACE'
@@ -20911,11 +23843,8 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
-
METHOD constructor.
DATA ls_objtype_map LIKE LINE OF gt_objtype_map.
@@ -20945,7 +23874,6 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD initialize.
DATA lt_plugin_class TYPE STANDARD TABLE OF seoclsname WITH DEFAULT KEY.
@@ -21011,12 +23939,10 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown. " todo
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA lx_plugin TYPE REF TO cx_static_check.
@@ -21028,7 +23954,6 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: lx_plugin TYPE REF TO cx_static_check.
@@ -21043,7 +23968,6 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
CALL METHOD mo_plugin->('ZIF_ABAPGITP_PLUGIN~EXISTS')
@@ -21052,17 +23976,14 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
DATA ls_meta TYPE ty_metadata.
@@ -21081,7 +24002,6 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
DATA ls_meta TYPE ty_metadata.
@@ -21094,19 +24014,16 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = abap_true.
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
CALL METHOD mo_plugin->('ZIF_ABAPGITP_PLUGIN~JUMP').
@@ -21114,17 +24031,14 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
CALL METHOD mo_plugin->('WRAP_SERIALIZE')
@@ -21134,11 +24048,8 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS ZCL_ABAPGIT_OBJECTS_FACTORY IMPLEMENTATION.
-
METHOD get_gui_jumper.
IF gi_gui_jumper IS INITIAL.
@@ -21150,18 +24061,14 @@ CLASS ZCL_ABAPGIT_OBJECTS_FACTORY IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_xml IMPLEMENTATION.
-
METHOD constructor.
mi_ixml = cl_ixml=>create( ).
mi_xml_doc = mi_ixml->create_document( ).
mv_filename = iv_filename.
ENDMETHOD.
-
METHOD error.
IF ii_parser->num_errors( ) <> 0.
@@ -21176,7 +24083,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
-
METHOD parse.
DATA: li_stream_factory TYPE REF TO if_ixml_stream_factory,
@@ -21185,7 +24091,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
li_version TYPE REF TO if_ixml_node,
li_parser TYPE REF TO if_ixml_parser.
-
ASSERT NOT iv_xml IS INITIAL.
li_stream_factory = mi_ixml->create_stream_factory( ).
@@ -21200,7 +24105,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
li_istream->close( ).
-
li_element = mi_xml_doc->find_from_name_ns( depth = 0
name = c_abapgit_tag ).
li_version = li_element->if_ixml_node~get_attributes(
@@ -21215,7 +24119,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise_exception_for.
DATA lv_message TYPE string.
@@ -21231,7 +24134,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
-
METHOD raise_version_mismatch.
DATA lv_text TYPE string.
@@ -21248,7 +24150,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
-
METHOD to_xml.
* will render to codepage UTF-16
@@ -21271,11 +24172,8 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS ZCL_ABAPGIT_XML_INPUT IMPLEMENTATION.
-
METHOD constructor.
super->constructor( iv_filename ).
@@ -21284,13 +24182,11 @@ CLASS ZCL_ABAPGIT_XML_INPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD fix_xml.
DATA: li_git TYPE REF TO if_ixml_element,
li_abap TYPE REF TO if_ixml_node.
-
li_git ?= mi_xml_doc->find_from_name_ns( depth = 0
name = c_abapgit_tag ).
li_abap = li_git->get_first_child( ).
@@ -21300,17 +24196,14 @@ CLASS ZCL_ABAPGIT_XML_INPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_xml_input~get_metadata.
rs_metadata = ms_metadata.
ENDMETHOD.
-
METHOD zif_abapgit_xml_input~get_raw.
ri_raw = mi_xml_doc.
ENDMETHOD.
-
METHOD zif_abapgit_xml_input~read.
DATA: lx_error TYPE REF TO cx_transformation_error,
@@ -21342,22 +24235,17 @@ CLASS ZCL_ABAPGIT_XML_INPUT IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_files IMPLEMENTATION.
-
METHOD add.
APPEND is_file TO mt_files.
ENDMETHOD.
-
METHOD add_abap.
DATA: lv_source TYPE string,
ls_file TYPE zif_abapgit_git_definitions=>ty_file.
-
CONCATENATE LINES OF it_abap INTO lv_source SEPARATED BY cl_abap_char_utilities=>newline.
* when editing files via eg. GitHub web interface it adds a newline at end of file
lv_source = lv_source && cl_abap_char_utilities=>newline.
@@ -21373,7 +24261,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD add_i18n_file.
DATA ls_file TYPE zif_abapgit_git_definitions=>ty_file.
@@ -21384,16 +24271,15 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDIF.
ls_file-path = '/'.
- ls_file-filename = zcl_abapgit_filename_logic=>object_to_file(
+ ls_file-filename = zcl_abapgit_filename_logic=>object_to_i18n_file(
is_item = ms_item
- iv_extra = |i18n.{ ii_i18n_file->lang( ) }|
+ iv_lang = ii_i18n_file->lang( )
iv_ext = ii_i18n_file->ext( ) ).
APPEND ls_file TO mt_files.
ENDMETHOD.
-
METHOD add_raw.
DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file.
@@ -21409,12 +24295,10 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD add_string.
DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file.
-
ls_file-path = '/'.
ls_file-filename = zcl_abapgit_filename_logic=>object_to_file(
is_item = ms_item
@@ -21426,7 +24310,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD add_xml.
DATA: lv_xml TYPE string,
@@ -21452,13 +24335,11 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
APPEND ls_file TO mt_files.
ENDMETHOD.
-
METHOD constructor.
ms_item = is_item.
mv_path = iv_path.
ENDMETHOD.
-
METHOD contains_file.
DATA: lv_filename TYPE string.
@@ -21483,17 +24364,14 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD get_accessed_files.
rt_files = mt_accessed_files.
ENDMETHOD.
-
METHOD get_files.
rt_files = mt_files.
ENDMETHOD.
-
METHOD get_file_pattern.
rv_pattern = zcl_abapgit_filename_logic=>object_to_file(
is_item = ms_item
@@ -21503,7 +24381,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '+' IN rv_pattern WITH '#+'.
ENDMETHOD.
-
METHOD is_json_metadata.
DATA lv_pattern TYPE string.
@@ -21519,7 +24396,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD mark_accessed.
FIELD-SYMBOLS LIKE LINE OF mt_accessed_files.
@@ -21535,7 +24411,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD new.
CREATE OBJECT ro_files
EXPORTING
@@ -21543,14 +24418,12 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
iv_path = iv_path.
ENDMETHOD.
-
METHOD read_abap.
DATA: lv_filename TYPE string,
lv_data TYPE xstring,
lv_abap TYPE string.
-
lv_filename = zcl_abapgit_filename_logic=>object_to_file(
is_item = ms_item
iv_extra = iv_extra
@@ -21569,7 +24442,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_file.
FIELD-SYMBOLS LIKE LINE OF mt_files.
@@ -21603,25 +24475,35 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_i18n_files.
- DATA lv_lang TYPE laiso.
- DATA lv_ext TYPE string.
- DATA lo_po TYPE REF TO zcl_abapgit_po_file.
+ DATA:
+ lv_lang TYPE laiso,
+ lv_ext TYPE string,
+ lo_po TYPE REF TO zcl_abapgit_po_file,
+ lo_properties TYPE REF TO zcl_abapgit_properties_file.
+
FIELD-SYMBOLS LIKE LINE OF mt_files.
LOOP AT mt_files ASSIGNING .
- " TODO: Maybe this should be in zcl_abapgit_filename_logic
- FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN -filename SUBMATCHES lv_lang lv_ext.
- CHECK sy-subrc = 0.
+ zcl_abapgit_filename_logic=>i18n_file_to_object(
+ EXPORTING
+ iv_path = -path
+ iv_filename = -filename
+ IMPORTING
+ ev_lang = lv_lang
+ ev_ext = lv_ext ).
CASE lv_ext.
WHEN 'po'.
CREATE OBJECT lo_po EXPORTING iv_lang = lv_lang.
lo_po->parse( -data ).
APPEND lo_po TO rt_i18n_files.
+ WHEN 'properties'.
+ CREATE OBJECT lo_properties EXPORTING iv_lang = lv_lang.
+ lo_properties->parse( -data ).
+ APPEND lo_properties TO rt_i18n_files.
WHEN OTHERS.
CONTINUE. " Unsupported i18n file type
ENDCASE.
@@ -21635,7 +24517,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_raw.
DATA: lv_filename TYPE string.
@@ -21649,7 +24530,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_string.
DATA: lv_filename TYPE string,
@@ -21666,7 +24546,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_xml.
DATA: lv_filename TYPE string,
@@ -21690,7 +24569,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_files.
FIELD-SYMBOLS: LIKE LINE OF it_files.
@@ -21710,11 +24588,8 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_injector IMPLEMENTATION.
-
METHOD set_gui_jumper.
zcl_abapgit_objects_factory=>gi_gui_jumper = ii_gui_jumper.
@@ -21722,16 +24597,12 @@ CLASS zcl_abapgit_objects_injector IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
-
METHOD build_asx_node.
DATA: li_attr TYPE REF TO if_ixml_attribute.
-
ri_element = mi_xml_doc->create_element_ns(
name = 'abap'
prefix = 'asx' ).
@@ -21748,7 +24619,6 @@ CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_xml_output~add.
DATA: li_node TYPE REF TO if_ixml_node,
@@ -21757,7 +24627,6 @@ CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_stab.
-
ASSERT NOT iv_name IS INITIAL.
IF ig_data IS INITIAL.
@@ -21785,7 +24654,6 @@ CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_xml_output~add_xml.
DATA: li_element TYPE REF TO if_ixml_element.
@@ -21797,13 +24665,11 @@ CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_xml_output~render.
DATA: li_git TYPE REF TO if_ixml_element,
li_abap TYPE REF TO if_ixml_element.
-
IF mi_raw IS INITIAL.
li_abap ?= mi_xml_doc->get_root( )->get_first_child( ).
mi_xml_doc->get_root( )->remove_child( li_abap ).
@@ -21830,23 +24696,18 @@ CLASS ZCL_ABAPGIT_XML_OUTPUT IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_xml_output~set_raw.
mi_raw = ii_raw.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_objects_program IMPLEMENTATION.
-
METHOD add_tpool.
FIELD-SYMBOLS: LIKE LINE OF it_tpool,
LIKE LINE OF rt_tpool.
-
LOOP AT it_tpool ASSIGNING .
APPEND INITIAL LINE TO rt_tpool ASSIGNING .
MOVE-CORRESPONDING TO .
@@ -21858,7 +24719,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD auto_correct_cua_adm.
" issue #1807 automatic correction of CUA interfaces saved incorrectly in the past (ADM was not saved in the XML)
@@ -21898,13 +24758,11 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_cua.
DATA: ls_tr_key TYPE trkey,
ls_adm TYPE rsmpe_adm.
-
IF lines( is_cua-sta ) = 0
AND lines( is_cua-fun ) = 0
AND lines( is_cua-men ) = 0
@@ -21970,7 +24828,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_dynpros.
CONSTANTS lc_rpyty_force_off TYPE c LENGTH 1 VALUE '/'.
@@ -21978,6 +24835,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
DATA: lv_name TYPE dwinactiv-obj_name,
lt_d020s_to_delete TYPE TABLE OF d020s,
ls_d020s LIKE LINE OF lt_d020s_to_delete,
+ lt_params TYPE TABLE OF d023s,
ls_dynpro LIKE LINE OF it_dynpros.
FIELD-SYMBOLS: TYPE rpy_dyfatc.
@@ -22014,6 +24872,9 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
it_flow = ls_dynpro-flow_logic
it_spaces = ls_dynpro-spaces ).
+ IF ls_dynpro-flow_logic IS INITIAL.
+ ls_dynpro-flow_logic = mo_files->read_abap( iv_extra = 'screen_' && ls_dynpro-header-screen ).
+ ENDIF.
LOOP AT ls_dynpro-fields ASSIGNING .
* if the DDIC element has a PARAMETER_ID and the flag "from_dict" is active
@@ -22045,30 +24906,52 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDLOOP.
- CALL FUNCTION 'RPY_DYNPRO_INSERT'
- EXPORTING
- header = ls_dynpro-header
- suppress_exist_checks = abap_true
- suppress_generate = ls_dynpro-header-no_execute
- TABLES
- containers = ls_dynpro-containers
- fields_to_containers = ls_dynpro-fields
- flow_logic = ls_dynpro-flow_logic
- EXCEPTIONS
- cancelled = 1
- already_exists = 2
- program_not_exists = 3
- not_executed = 4
- missing_required_field = 5
- illegal_field_value = 6
- field_not_allowed = 7
- not_generated = 8
- illegal_field_position = 9
- OTHERS = 10.
+ IF ls_dynpro-header-type CA c_native_dynpro AND ls_dynpro-nat_header IS NOT INITIAL.
+ DELETE FROM d021t WHERE prog = ls_dynpro-header-program AND dynr = ls_dynpro-header-screen ##SUBRC_OK.
+ INSERT d021t FROM TABLE ls_dynpro-nat_texts ##SUBRC_OK.
+
+ ls_dynpro-nat_header-dgen = sy-datum.
+ ls_dynpro-nat_header-tgen = sy-uzeit.
+
+ CALL FUNCTION 'RPY_DYNPRO_INSERT_NATIVE'
+ EXPORTING
+ header = ls_dynpro-nat_header
+ dynprotext = ls_dynpro-header-descript
+ TABLES
+ fieldlist = ls_dynpro-nat_fields
+ flowlogic = ls_dynpro-flow_logic
+ params = lt_params
+ EXCEPTIONS
+ cancelled = 1
+ already_exists = 2
+ program_not_exists = 3
+ not_executed = 4
+ OTHERS = 5.
+ ELSE.
+ CALL FUNCTION 'RPY_DYNPRO_INSERT'
+ EXPORTING
+ header = ls_dynpro-header
+ suppress_exist_checks = abap_true
+ suppress_generate = ls_dynpro-header-no_execute
+ TABLES
+ containers = ls_dynpro-containers
+ fields_to_containers = ls_dynpro-fields
+ flow_logic = ls_dynpro-flow_logic
+ EXCEPTIONS
+ cancelled = 1
+ already_exists = 2
+ program_not_exists = 3
+ not_executed = 4
+ missing_required_field = 5
+ illegal_field_value = 6
+ field_not_allowed = 7
+ not_generated = 8
+ illegal_field_position = 9
+ OTHERS = 10.
+ ENDIF.
IF sy-subrc <> 2 AND sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
-* todo, RPY_DYNPRO_UPDATE?
CONCATENATE ls_dynpro-header-program ls_dynpro-header-screen
INTO lv_name RESPECTING BLANKS.
@@ -22103,6 +24986,36 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
+ METHOD deserialize_exit_include.
+
+ DATA:
+ lv_progname TYPE reposrc-progname,
+ lv_title TYPE rglif-title.
+
+ " Includes in SAP exit function groups must be processed in active state only
+ " (check in RS_INSERT_INTO_WORKING_AREA)
+ lv_title = get_program_title( it_tpool ).
+
+ SELECT SINGLE progname FROM reposrc INTO lv_progname
+ WHERE progname = is_progdir-name
+ AND r3state = c_state-active.
+
+ IF sy-subrc = 0.
+ update_program(
+ is_progdir = is_progdir
+ it_source = it_source
+ iv_title = lv_title
+ iv_state = '' ).
+ ELSE.
+ insert_program(
+ is_progdir = is_progdir
+ it_source = it_source
+ iv_title = lv_title
+ iv_package = iv_package
+ iv_state = '' ).
+ ENDIF.
+
+ ENDMETHOD.
METHOD deserialize_program.
@@ -22110,6 +25023,15 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
lv_progname TYPE reposrc-progname,
lv_title TYPE rglif-title.
+ IF is_exit_include( is_progdir-name ) = abap_true.
+ deserialize_exit_include(
+ is_progdir = is_progdir
+ it_source = it_source
+ it_tpool = it_tpool
+ iv_package = iv_package ).
+ RETURN.
+ ENDIF.
+
zcl_abapinst_factory=>get_cts_api( )->insert_transport_object(
iv_object = 'ABAP'
iv_obj_name = is_progdir-name
@@ -22146,7 +25068,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_textpool.
DATA lv_language TYPE sy-langu.
@@ -22188,7 +25109,8 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDIF.
ENDIF.
- IF lv_state = c_state-inactive. "Textpool in main language needs to be activated
+ "Textpool in main language needs to be activated (not for FUGS/FUGX)
+ IF lv_state = c_state-inactive AND iv_program NP 'SAPLX*'.
zcl_abapgit_objects_activation=>add(
iv_type = 'REPT'
iv_name = iv_program
@@ -22196,7 +25118,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD get_program_title.
DATA ls_tpool LIKE LINE OF it_tpool.
@@ -22217,7 +25138,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD insert_program.
TRY.
@@ -22227,7 +25147,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
program_name = is_progdir-name
program_type = is_progdir-subc
title_string = iv_title
- save_inactive = c_state-inactive
+ save_inactive = iv_state
suppress_dialog = abap_true
uccheck = is_progdir-uccheck " does not exist on lower releases
TABLES
@@ -22237,7 +25157,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
cancelled = 2
name_not_allowed = 3
permission_error = 4
- OTHERS = 5.
+ OTHERS = 5 ##FM_SUBRC_OK.
CATCH cx_sy_dyn_call_param_not_found.
CALL FUNCTION 'RPY_PROGRAM_INSERT'
EXPORTING
@@ -22245,7 +25165,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
program_name = is_progdir-name
program_type = is_progdir-subc
title_string = iv_title
- save_inactive = c_state-inactive
+ save_inactive = iv_state
suppress_dialog = abap_true
TABLES
source_extended = it_source
@@ -22254,7 +25174,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
cancelled = 2
name_not_allowed = 3
permission_error = 4
- OTHERS = 5.
+ OTHERS = 5 ##FM_SUBRC_OK.
ENDTRY.
IF sy-subrc = 3.
@@ -22283,7 +25203,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_any_dynpro_locked.
DATA: lt_dynpros TYPE ty_dynpro_tt,
@@ -22307,7 +25226,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_cua_locked.
DATA: lv_object TYPE eqegraarg.
@@ -22321,6 +25239,11 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
+ METHOD is_exit_include.
+ rv_is_exit_include = boolc(
+ iv_program CP 'LX*' OR iv_program CP 'SAPLX*' OR
+ iv_program+1 CP '/LX*' OR iv_program+1 CP '/SAPLX*' ).
+ ENDMETHOD.
METHOD is_text_locked.
@@ -22333,13 +25256,11 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_tpool.
FIELD-SYMBOLS: LIKE LINE OF it_tpool,
LIKE LINE OF rt_tpool.
-
LOOP AT it_tpool ASSIGNING .
APPEND INITIAL LINE TO rt_tpool ASSIGNING .
MOVE-CORRESPONDING TO .
@@ -22352,7 +25273,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_cua.
CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'
@@ -22384,13 +25304,13 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_dynpros.
DATA: ls_header TYPE rpy_dyhead,
lt_containers TYPE dycatt_tab,
lt_fields_to_containers TYPE dyfatc_tab,
lt_flow_logic TYPE swydyflow,
lt_d020s TYPE TABLE OF d020s,
+ lt_texts TYPE TABLE OF d021t,
lt_fieldlist_int TYPE TABLE OF d021s. "internal format
FIELD-SYMBOLS: LIKE LINE OF lt_d020s,
@@ -22406,7 +25326,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
lc_flg3for TYPE x VALUE '04',
lc_flg3fdu TYPE x VALUE '02'.
-
CALL FUNCTION 'RS_SCREEN_LIST'
EXPORTING
dynnr = ''
@@ -22451,11 +25370,11 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
CALL FUNCTION 'RPY_DYNPRO_READ_NATIVE'
EXPORTING
- progname = iv_program_name
- dynnr = -dnum
+ progname = iv_program_name
+ dynnr = -dnum
TABLES
- fieldlist = lt_fieldlist_int.
-
+ fieldlist = lt_fieldlist_int
+ fieldtexts = lt_texts.
LOOP AT lt_fields_to_containers ASSIGNING .
* output style is a NUMC field, the XML conversion will fail if it contains invalid value
@@ -22497,17 +25416,29 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDLOOP.
APPEND INITIAL LINE TO rt_dynpro ASSIGNING .
- -header = ls_header.
- -containers = lt_containers.
- -fields = lt_fields_to_containers.
+ -header = ls_header.
- -flow_logic = lt_flow_logic.
+ " Store flow logic as separate ABAP files instead of XML
+ mo_files->add_abap(
+ iv_extra = 'screen_' && ls_header-screen
+ it_abap = lt_flow_logic ).
+
+ READ TABLE lt_fieldlist_int TRANSPORTING NO FIELDS WITH KEY fill = 'X'.
+ IF ls_header-type CA c_native_dynpro AND sy-subrc = 0.
+ " In particular for dynpros with splitter
+ -nat_header = .
+ CLEAR: -nat_header-dgen, -nat_header-tgen.
+ -nat_fields = lt_fieldlist_int.
+ -nat_texts = lt_texts.
+ ELSE.
+ -containers = lt_containers.
+ -fields = lt_fields_to_containers.
+ ENDIF.
ENDLOOP.
ENDMETHOD.
-
METHOD serialize_program.
DATA: ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
@@ -22614,7 +25545,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD strip_generation_comments.
FIELD-SYMBOLS TYPE any. " Assuming CHAR (e.g. abaptxt255_tab) or string (FUGR)
@@ -22670,7 +25600,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD uncondense_flow.
DATA: lv_spaces LIKE LINE OF it_spaces.
@@ -22678,7 +25607,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF it_flow,
LIKE LINE OF rt_flow.
-
LOOP AT it_flow ASSIGNING .
APPEND INITIAL LINE TO rt_flow ASSIGNING .
-line = -line.
@@ -22691,7 +25619,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
-
METHOD update_program.
zcl_abapgit_language=>set_current_language( mv_language ).
@@ -22700,7 +25627,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
EXPORTING
program_name = is_progdir-name
title_string = iv_title
- save_inactive = c_state-inactive
+ save_inactive = iv_state
TABLES
source_extended = it_source
EXCEPTIONS
@@ -22718,7 +25645,9 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
" for generated table maintenance function groups, the author is set to SAP* instead of the user which
" generates the function group. This hits some standard checks, pulling new code again sets the author
" to the current user which avoids the check
- zcx_abapgit_exception=>raise( |Delete function group and pull again, { is_progdir-name } (EU522)| ).
+ IF is_exit_include( is_progdir-name ) = abap_false.
+ zcx_abapgit_exception=>raise( |Delete function group and pull again, { is_progdir-name } (EU522)| ).
+ ENDIF.
ELSE.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
@@ -22729,16 +25658,12 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_acid IMPLEMENTATION.
-
METHOD create_object.
DATA: lv_name TYPE aab_id_name.
-
lv_name = ms_item-obj_name.
CREATE OBJECT ro_aab
@@ -22753,18 +25678,15 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
* looks like "changed by user" is not stored in the database
rv_user = c_user_unknown.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: lo_aab TYPE REF TO cl_aab_id.
-
lo_aab = create_object( ).
lo_aab->enqueue(
EXCEPTIONS
@@ -22794,13 +25716,11 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: lv_description TYPE aab_id_descript,
lo_aab TYPE REF TO cl_aab_id.
-
io_xml->read( EXPORTING iv_name = 'DESCRIPTION'
CHANGING cg_data = lv_description ).
@@ -22847,13 +25767,11 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE abap_bool,
lo_aab TYPE REF TO cl_aab_id.
-
lo_aab = create_object( ).
lo_aab->get_state( IMPORTING ex_state = lv_state ).
@@ -22861,60 +25779,49 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by zcl_abapinst_objects=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lo_aab TYPE REF TO cl_aab_id,
lv_description TYPE aab_id_descript.
-
IF zif_abapgit_object~exists( ) = abap_false.
RETURN.
ENDIF.
@@ -22931,11 +25838,8 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_avar IMPLEMENTATION.
-
METHOD create_object.
DATA: lv_name TYPE aab_var_name.
@@ -22957,7 +25861,6 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
DATA: lo_aab TYPE REF TO cl_aab_variant.
@@ -22967,7 +25870,6 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: lo_aab TYPE REF TO cl_aab_variant.
@@ -22991,7 +25893,6 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: lv_possible TYPE abap_bool,
@@ -23060,7 +25961,6 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE abap_bool,
@@ -23073,53 +25973,43 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lo_aab TYPE REF TO cl_aab_variant,
@@ -23150,11 +26040,8 @@ CLASS zcl_abapgit_object_avar IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_clas IMPLEMENTATION.
-
METHOD constructor.
super->constructor(
@@ -23169,7 +26056,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_abap.
DATA: ls_vseoclass TYPE vseoclass,
@@ -23178,12 +26064,9 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
lt_local_implementations TYPE seop_source_string,
lt_local_macros TYPE seop_source_string,
lt_test_classes TYPE seop_source_string,
- lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt,
- lt_descriptions_sub TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt,
ls_class_key TYPE seoclskey,
lt_attributes TYPE zif_abapgit_oo_object_fnc=>ty_obj_attribute_tt.
-
lt_source = mo_files->read_abap( ).
lt_local_definitions = mo_files->read_abap(
@@ -23242,25 +26125,42 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
iv_version = ls_vseoclass-unicode
it_source = lt_source ).
+ ENDMETHOD.
+
+ METHOD deserialize_descr.
+
+ DATA:
+ ls_class_key TYPE seoclskey,
+ lt_descriptions_class TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt,
+ lt_descriptions_compo TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt,
+ lt_descriptions_subco TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt.
+
+ ls_class_key-clsname = ms_item-obj_name.
+
+ ii_xml->read( EXPORTING iv_name = 'DESCRIPTIONS_CLASS'
+ CHANGING cg_data = lt_descriptions_class ).
+
+ mi_object_oriented_object_fct->update_descriptions_class(
+ is_key = ls_class_key
+ iv_language = mv_language
+ it_descriptions = lt_descriptions_class ).
+
ii_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
- CHANGING cg_data = lt_descriptions ).
+ CHANGING cg_data = lt_descriptions_compo ).
- mi_object_oriented_object_fct->update_descriptions(
+ mi_object_oriented_object_fct->update_descriptions_compo(
is_key = ls_class_key
- it_descriptions = lt_descriptions ).
+ it_descriptions = lt_descriptions_compo ).
ii_xml->read( EXPORTING iv_name = 'DESCRIPTIONS_SUB'
- CHANGING cg_data = lt_descriptions_sub ).
+ CHANGING cg_data = lt_descriptions_subco ).
- mi_object_oriented_object_fct->update_descriptions_sub(
+ mi_object_oriented_object_fct->update_descriptions_subco(
is_key = ls_class_key
- it_descriptions = lt_descriptions_sub ).
-
- mi_object_oriented_object_fct->add_to_activation_list( ms_item ).
+ it_descriptions = lt_descriptions_subco ).
ENDMETHOD.
-
METHOD deserialize_docu.
DATA: lt_lines TYPE tlinetab,
@@ -23321,7 +26221,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_exceptions.
DATA: ls_vseoclass TYPE vseoclass.
@@ -23336,7 +26235,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_pre_ddic.
DATA: ls_vseoclass TYPE vseoclass.
@@ -23361,7 +26259,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_sotr.
"OTR stands for Online Text Repository
mi_object_oriented_object_fct->create_sotr(
@@ -23370,7 +26267,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ii_xml = ii_xml ).
ENDMETHOD.
-
METHOD deserialize_tpool.
DATA: lv_clsname TYPE seoclsname,
@@ -23394,7 +26290,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_tpool_i18n.
DATA: lv_clsname TYPE seoclsname,
@@ -23424,7 +26319,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD interface_replacement.
DATA lv_tabix TYPE sy-tabix.
@@ -23449,7 +26343,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_class_locked.
DATA: lv_argument TYPE seqg3-garg.
@@ -23463,7 +26356,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD repo_apack_replacement.
DATA lv_apack TYPE seoclsname.
@@ -23486,7 +26378,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_attr.
DATA: lt_attributes TYPE zif_abapgit_oo_object_fnc=>ty_obj_attribute_tt.
@@ -23501,8 +26392,33 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
+ METHOD serialize_descr_class.
- METHOD serialize_descr.
+ DATA: lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seoclasstx_tt,
+ lt_language_filter TYPE zif_abapgit_environment=>ty_system_language_filter.
+
+ " Main language is already in VSEOCLASS so we serialize only translations
+ IF mo_i18n_params->ms_params-main_language_only = abap_true.
+ RETURN.
+ ENDIF.
+
+ lt_descriptions = mi_object_oriented_object_fct->read_descriptions_class(
+ iv_object_name = iv_clsname
+ iv_language = mv_language ).
+
+ IF lines( lt_descriptions ) = 0.
+ RETURN.
+ ENDIF.
+ " Remove technical languages
+ lt_language_filter = mo_i18n_params->build_language_filter( ).
+ DELETE lt_descriptions WHERE NOT langu IN lt_language_filter AND langu <> mv_language.
+
+ ii_xml->add( iv_name = 'DESCRIPTIONS_CLASS'
+ ig_data = lt_descriptions ).
+
+ ENDMETHOD.
+
+ METHOD serialize_descr_compo.
DATA: lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt,
lv_language TYPE spras,
@@ -23512,7 +26428,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
lv_language = mv_language.
ENDIF.
- lt_descriptions = mi_object_oriented_object_fct->read_descriptions(
+ lt_descriptions = mi_object_oriented_object_fct->read_descriptions_compo(
iv_object_name = iv_clsname
iv_language = lv_language ).
@@ -23528,8 +26444,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
- METHOD serialize_descr_sub.
+ METHOD serialize_descr_subco.
DATA: lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt,
lv_language TYPE spras,
@@ -23539,7 +26454,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
lv_language = mv_language.
ENDIF.
- lt_descriptions = mi_object_oriented_object_fct->read_descriptions_sub(
+ lt_descriptions = mi_object_oriented_object_fct->read_descriptions_subco(
iv_object_name = iv_clsname
iv_language = lv_language ).
@@ -23555,7 +26470,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_docu.
DATA: lt_lines TYPE tlinetab,
@@ -23622,7 +26536,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_sotr.
mi_object_oriented_object_fct->read_sotr(
iv_object_name = ms_item-obj_name
@@ -23630,7 +26543,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ii_xml = ii_xml ).
ENDMETHOD.
-
METHOD serialize_tpool.
DATA lt_tpool TYPE textpool_table.
@@ -23645,7 +26557,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_tpool_i18n.
DATA: lt_tpool TYPE textpool_table,
@@ -23701,7 +26612,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_xml.
DATA: ls_vseoclass TYPE vseoclass,
@@ -23712,7 +26622,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ls_clskey-clsname = ms_item-obj_name.
- "If class was deserialized with a previous versions of abapGit and current language was different
+ "If class was deserialized with a previous version of abapGit and current language was different
"from main language at this time, this call would return SY-LANGU as main language. To fix
"these objects, set SY-LANGU to main language temporarily.
zcl_abapgit_language=>set_current_language( mv_language ).
@@ -23779,18 +26689,20 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
iv_clsname = ls_clskey-clsname
it_langu_additional = lt_langu_additional ).
- serialize_descr( ii_xml = ii_xml
- iv_clsname = ls_clskey-clsname ).
+ serialize_descr_class( ii_xml = ii_xml
+ iv_clsname = ls_clskey-clsname ).
- serialize_descr_sub( ii_xml = ii_xml
- iv_clsname = ls_clskey-clsname ).
+ serialize_descr_compo( ii_xml = ii_xml
+ iv_clsname = ls_clskey-clsname ).
+
+ serialize_descr_subco( ii_xml = ii_xml
+ iv_clsname = ls_clskey-clsname ).
serialize_attr( ii_xml = ii_xml
iv_clsname = ls_clskey-clsname ).
ENDMETHOD.
-
METHOD source_apack_replacement.
DATA lv_clsname TYPE seoclsname.
@@ -23815,7 +26727,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
TYPES: BEGIN OF ty_reposrc,
@@ -23864,7 +26775,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: ls_clskey TYPE seoclskey.
ls_clskey-clsname = ms_item-obj_name.
@@ -23874,7 +26784,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
mi_object_oriented_object_fct->delete( ls_clskey ).
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
IF iv_step = zif_abapgit_object=>gc_step_id-abap.
@@ -23882,6 +26791,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
deserialize_abap( ii_xml = io_xml
iv_package = iv_package ).
+ deserialize_descr( io_xml ).
+
deserialize_tpool( io_xml ).
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
@@ -23893,6 +26804,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
deserialize_docu( io_xml ).
+ mi_object_oriented_object_fct->add_to_activation_list( ms_item ).
+
ELSEIF iv_step = zif_abapgit_object=>gc_step_id-early.
" If class does not exist, create it
@@ -23913,7 +26826,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA ls_class_key TYPE seoclskey.
@@ -23930,34 +26842,28 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-early TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
IF is_class_locked( ) = abap_true OR is_text_locked( mv_classpool_name ) = abap_true.
@@ -23966,7 +26872,6 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
@@ -23992,17 +26897,14 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lt_source TYPE seop_source_string,
@@ -24072,11 +26974,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
-
METHOD from_xml.
DATA lo_input TYPE REF TO zif_abapgit_xml_input.
@@ -24091,7 +26990,6 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_instance.
IF go_persist IS NOT BOUND.
@@ -24101,7 +26999,6 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
-
METHOD init.
TRY.
@@ -24114,7 +27011,6 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
-
METHOD modify.
DATA ls_package LIKE LINE OF mt_packages.
@@ -24147,7 +27043,6 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
-
METHOD read.
init( ).
@@ -24159,7 +27054,6 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
-
METHOD to_xml.
DATA li_output TYPE REF TO zif_abapgit_xml_output.
@@ -24175,10 +27069,28 @@ CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
+CLASS zcl_abapgit_object_devc IMPLEMENTATION.
+ METHOD adjust_sw_component.
-CLASS zcl_abapgit_object_devc IMPLEMENTATION.
+ DATA:
+ lv_namespace TYPE namespace,
+ lv_comp_type TYPE c LENGTH 1.
+
+ " Keep software component of a package for ABAP add-ons (customer and partner developments)...
+ SELECT SINGLE comp_type FROM cvers INTO lv_comp_type WHERE component = cv_dlvunit.
+ IF sy-subrc = 0 AND lv_comp_type = 'A'.
+ " ... with a matching namespace (typical Add-on Assembly Kit scenario)
+ lv_namespace = |/{ cv_dlvunit }/|.
+ SELECT SINGLE namespace FROM trnspace INTO lv_namespace WHERE namespace = lv_namespace.
+ IF sy-subrc <> 0.
+ CLEAR cv_dlvunit.
+ ENDIF.
+ ELSE.
+ CLEAR cv_dlvunit.
+ ENDIF.
+ ENDMETHOD.
METHOD constructor.
@@ -24196,14 +27108,12 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_package.
IF zif_abapgit_object~exists( ) = abap_true.
ri_package = load_package( mv_local_devclass ).
ENDIF.
ENDMETHOD.
-
METHOD is_empty.
DATA: lv_object_name TYPE tadir-obj_name,
@@ -24227,7 +27137,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD is_local.
DATA lv_dlvunit TYPE tdevc-dlvunit.
@@ -24240,7 +27149,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD load_package.
cl_package_factory=>load_package(
@@ -24264,7 +27172,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD remove_obsolete_tadir.
DATA:
@@ -24312,7 +27219,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD set_lock.
DATA: lv_changeable TYPE abap_bool.
@@ -24398,7 +27304,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD unlock_and_raise_error.
DATA ls_msg TYPE bal_s_msg.
@@ -24419,7 +27324,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD update_pinf_usages.
DATA: lt_current_permissions TYPE tpak_permission_to_use_list,
li_usage TYPE REF TO if_package_permission_to_use,
@@ -24507,7 +27411,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDLOOP.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
DATA li_package TYPE REF TO if_package.
@@ -24517,7 +27420,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: li_package TYPE REF TO if_package,
@@ -24617,7 +27519,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: li_package TYPE REF TO if_package,
@@ -24676,10 +27577,12 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
* Fields not set:
* korrflag
-* dlvunit
* parentcl
* cli_check
* intprefx
+ IF ls_package_data-dlvunit IS NOT INITIAL.
+ ls_data_sign-dlvunit = abap_true.
+ ENDIF.
ls_data_sign-ctext = abap_true.
ls_data_sign-as4user = abap_true.
ls_data_sign-pdevclass = abap_true.
@@ -24815,7 +27718,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
" Check remote package if deserialize has not been called before this
IF mv_local_devclass IS INITIAL.
@@ -24835,44 +27737,36 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB'
iv_argument = ms_item-obj_name
iv_prefix = 'DV' ).
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by zcl_abapinst_objects=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
IF iv_filename <> zcl_abapgit_filename_logic=>c_package_file.
@@ -24888,7 +27782,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
" Packages have a fixed filename so that the repository can be installed to a different
@@ -24897,7 +27790,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: ls_package_data TYPE scompkdtln,
ls_package_comp TYPE zcl_abapgit_persist_packages=>ty_package,
@@ -24909,7 +27801,6 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
FIELD-SYMBOLS: TYPE any.
-
li_package = get_package( ).
IF li_package IS NOT BOUND.
zcx_abapgit_exception=>raise( |Could not find package to serialize.| ).
@@ -24953,6 +27844,9 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
CLEAR: ls_package_data-intfprefx,
ls_package_data-cli_check.
+ " If software component is related to add-on and a valid namespace, then keep it
+ adjust_sw_component( CHANGING cv_dlvunit = ls_package_data-dlvunit ).
+
ASSIGN COMPONENT 'TRANSLATION_DEPTH_TEXT'
OF STRUCTURE ls_package_data
TO .
@@ -25034,11 +27928,8 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_doma IMPLEMENTATION.
-
METHOD adjust_exit.
DATA lv_function TYPE funcname.
@@ -25054,7 +27945,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD check_exit.
DATA lv_exit TYPE dd01v-convexit.
@@ -25071,7 +27961,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_texts.
DATA: lv_name TYPE ddobjname,
@@ -25151,7 +28040,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD handle_dependencies.
" For domains with dependency on conversion exit function, we use two phases:
@@ -25172,7 +28060,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_texts.
DATA: lv_name TYPE ddobjname,
@@ -25276,7 +28163,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE as4user FROM dd01l INTO rv_user
@@ -25289,7 +28175,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
IF zif_abapgit_object~exists( ) = abap_false.
@@ -25303,7 +28188,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
* package SEDD
@@ -25373,7 +28257,6 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA lv_domname TYPE dd01l-domname.
@@ -25384,54 +28267,44 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by ZCL_ABAPGIT_OBJECT=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lv_name TYPE ddobjname,
@@ -25507,11 +28380,8 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
-
METHOD constructor.
DATA: lv_prefix TYPE namespace,
@@ -25540,7 +28410,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD deserialize_dsys.
DATA: ls_data TYPE ty_data,
@@ -25574,7 +28443,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD get_main_lang.
SELECT SINGLE langu FROM dokil INTO rv_language
@@ -25588,7 +28456,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
rv_user = zcl_abapinst_factory=>get_longtexts( )->changed_by(
@@ -25597,7 +28464,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
zcl_abapinst_factory=>get_longtexts( )->delete(
@@ -25608,7 +28474,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: ls_metadata TYPE zif_abapgit_definitions=>ty_metadata.
@@ -25638,7 +28503,6 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA: lv_count TYPE i.
@@ -25651,38 +28515,31 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-version = 'v2.0.0'.
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
DATA lv_lang TYPE sy-langu.
@@ -25703,17 +28560,14 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
zcl_abapinst_factory=>get_longtexts( )->serialize(
@@ -25725,11 +28579,8 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
-
METHOD deserialize_texts.
DATA: lv_name TYPE ddobjname,
@@ -25740,7 +28591,6 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_i18n_langs,
LIKE LINE OF lt_dd04_texts.
-
lv_name = ms_item-obj_name.
ii_xml->read( EXPORTING iv_name = 'I18N_LANGS'
@@ -25781,7 +28631,6 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_texts.
DATA: lv_name TYPE ddobjname,
@@ -25844,7 +28693,6 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE as4user FROM dd04l INTO rv_user
@@ -25857,7 +28705,6 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
IF zif_abapgit_object~exists( ) = abap_false.
@@ -25870,13 +28717,11 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: ls_dd04v TYPE dd04v,
lv_name TYPE ddobjname.
-
io_xml->read( EXPORTING iv_name = 'DD04V'
CHANGING cg_data = ls_dd04v ).
@@ -25917,7 +28762,6 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA: lv_rollname TYPE dd04l-rollname.
@@ -25940,53 +28784,43 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by ZCL_ABAPGIT_OBJECT=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
* fm DDIF_DTEL_GET bypasses buffer, so SELECTs are
* done directly from here
@@ -26054,11 +28888,8 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
-
METHOD constructor.
super->constructor(
@@ -26071,7 +28902,6 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE changedby INTO rv_user FROM enhcompheader
@@ -26082,7 +28912,6 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: lx_enh_root TYPE REF TO cx_enh_root,
@@ -26103,7 +28932,6 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: lx_enh_root TYPE REF TO cx_enh_root,
@@ -26120,7 +28948,6 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
lv_package = iv_package.
-
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
CHANGING cg_data = lv_shorttext ).
io_xml->read( EXPORTING iv_name = 'COMPOSITE_CHILDS'
@@ -26169,7 +28996,6 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
TRY.
@@ -26183,32 +29009,26 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
DATA: lv_argument TYPE seqg3-garg.
@@ -26222,22 +29042,18 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by zcl_abapinst_objects=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lx_enh_root TYPE REF TO cx_enh_root,
@@ -26274,16 +29090,12 @@ CLASS zcl_abapgit_object_enhc IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_badi IMPLEMENTATION.
-
METHOD constructor.
ms_item = is_item.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lv_spot_name TYPE enhspotname,
@@ -26335,7 +29147,6 @@ CLASS zcl_abapgit_object_enho_badi IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_badi_impl TYPE REF TO cl_enh_tool_badi_impl,
@@ -26347,7 +29158,6 @@ CLASS zcl_abapgit_object_enho_badi IMPLEMENTATION.
LIKE LINE OF -filter_values,
LIKE LINE OF -filters.
-
lo_badi_impl ?= ii_enh_tool.
lv_shorttext = lo_badi_impl->if_enh_object_docu~get_shorttext( ).
@@ -26380,10 +29190,7 @@ CLASS zcl_abapgit_object_enho_badi IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
-CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
-
+CLASS ZCL_ABAPGIT_OBJECT_ENHO_HOOK IMPLEMENTATION.
METHOD add_sources.
@@ -26419,13 +29226,11 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ENDMETHOD.
-
METHOD constructor.
ms_item = is_item.
mo_files = io_files.
ENDMETHOD.
-
METHOD hook_impl_deserialize.
FIELD-SYMBOLS: LIKE LINE OF ct_impl,
@@ -26433,7 +29238,6 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
TYPE i,
LIKE LINE OF it_spaces.
-
LOOP AT ct_impl ASSIGNING .
READ TABLE it_spaces ASSIGNING WITH KEY full_name = -full_name.
IF sy-subrc = 0.
@@ -26450,7 +29254,6 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ENDMETHOD.
-
METHOD read_sources.
DATA lv_source TYPE string.
@@ -26480,7 +29283,6 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lv_shorttext TYPE string,
@@ -26496,7 +29298,6 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_enhancements.
-
ii_xml->read( EXPORTING iv_name = 'SHORTTEXT'
CHANGING cg_data = lv_shorttext ).
ii_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT'
@@ -26561,7 +29362,6 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lv_shorttext TYPE string,
@@ -26569,6 +29369,7 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ls_original_object TYPE enh_hook_admin,
lt_spaces TYPE ty_spaces_tt,
lt_files TYPE ty_files,
+ ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lt_enhancements TYPE enh_hook_impl_it.
FIELD-SYMBOLS: LIKE LINE OF lt_enhancements.
@@ -26584,7 +29385,18 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
main_type = ls_original_object-org_main_type
main_name = ls_original_object-org_main_name
program = ls_original_object-programname ).
- ls_original_object-include_bound = lo_hook_impl->get_include_bound( ).
+
+* dont call method lo_hook_impl->get_include_bound( ), it might dump
+* if the PROG does not exists
+ IF ls_original_object-org_main_type = 'PROG' OR ls_original_object-org_main_type = 'REPS'.
+ TRY.
+ ls_progdir = zcl_abapinst_factory=>get_sap_report( )->read_progdir( ls_original_object-org_main_name ).
+ ls_original_object-include_bound = boolc( ls_progdir-subc = 'I' ).
+ CATCH zcx_abapgit_exception.
+ ls_original_object-include_bound = abap_false.
+ ENDTRY.
+ ENDIF.
+
lt_enhancements = lo_hook_impl->get_hook_impls( ).
LOOP AT lt_enhancements ASSIGNING .
@@ -26611,17 +29423,30 @@ CLASS zcl_abapgit_object_enho_hook IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
+CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
+ METHOD adjust_generated_comments.
-CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
+ FIELD-SYMBOLS LIKE LINE OF ct_source.
+ " Enhancements contain comments that end in '.' or ' .' depending on release
+ " This routine replaces the space-dot with just dot
+ LOOP AT ct_source ASSIGNING .
+ IF strlen( ) > 2.
+ = replace(
+ val =
+ regex = '^(\*".*) \.$'
+ with = '$1.' ).
+ ENDIF.
+ ENDLOOP.
+
+ ENDMETHOD.
METHOD constructor.
ms_item = is_item.
mo_files = io_files.
ENDMETHOD.
-
METHOD deserialize_includes.
DATA: lt_tab_methods TYPE enhnewmeth_tab,
@@ -26671,7 +29496,6 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
ENDMETHOD.
-
METHOD serialize_includes.
DATA: lt_includes TYPE enhnewmeth_tabincl_plus_enha,
@@ -26680,7 +29504,6 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_includes.
-
lt_includes = io_class->get_enh_method_includes( ).
LOOP AT lt_includes ASSIGNING .
lv_include = io_class->if_enh_tool~get_name( ).
@@ -26708,7 +29531,6 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lo_enh_class TYPE REF TO cl_enh_tool_class,
@@ -26780,7 +29602,6 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_enh_class TYPE REF TO cl_enh_tool_class,
@@ -26791,7 +29612,6 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
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( ).
@@ -26814,6 +29634,8 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
ii_xml->add( iv_name = 'POST_METHODS'
ig_data = lt_post ).
+ adjust_generated_comments( CHANGING ct_source = lt_source ).
+
mo_files->add_abap( lt_source ).
zcl_abapgit_object_enho_clif=>serialize(
@@ -26825,17 +29647,13 @@ CLASS zcl_abapgit_object_enho_class IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_intf IMPLEMENTATION.
-
METHOD constructor.
ms_item = is_item.
mo_files = io_files.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lo_enh_intf TYPE REF TO cl_enh_tool_intf,
@@ -26884,14 +29702,12 @@ CLASS zcl_abapgit_object_enho_intf IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_enh_intf TYPE REF TO cl_enh_tool_intf,
lv_class TYPE seoclsname,
lv_shorttext TYPE string.
-
lo_enh_intf ?= ii_enh_tool.
lv_shorttext = lo_enh_intf->if_enh_object_docu~get_shorttext( ).
@@ -26911,16 +29727,12 @@ CLASS zcl_abapgit_object_enho_intf IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_wdyc IMPLEMENTATION.
-
METHOD constructor.
ms_item = is_item.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lv_enhname TYPE enhname,
@@ -26974,7 +29786,6 @@ CLASS zcl_abapgit_object_enho_wdyc IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement,
@@ -26984,7 +29795,6 @@ CLASS zcl_abapgit_object_enho_wdyc IMPLEMENTATION.
li_document TYPE REF TO if_ixml_document,
li_element TYPE REF TO if_ixml_element.
-
lo_wdyconf ?= ii_enh_tool.
ls_obj = lo_wdyconf->get_original_object( ).
@@ -27015,17 +29825,13 @@ CLASS zcl_abapgit_object_enho_wdyc IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
-
METHOD constructor.
ms_item = is_item.
mo_files = io_files.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr,
@@ -27085,7 +29891,6 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr,
@@ -27094,7 +29899,6 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
FIELD-SYMBOLS: TYPE enhfugrparamdocu.
-
lo_fugrdata ?= ii_enh_tool.
lo_fugrdata->get_fugr( IMPORTING fugr_name = lv_fugr_name ).
@@ -27124,16 +29928,12 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
-
METHOD constructor.
ms_item = is_item.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~deserialize.
DATA: ls_enh_data TYPE enhwdyn,
@@ -27145,7 +29945,6 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
FIELD-SYMBOLS: TYPE enhwdyc,
TYPE enhwdyv.
-
ii_xml->read(
EXPORTING
iv_name = 'TOOL'
@@ -27204,14 +30003,12 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object_enho~serialize.
DATA: lo_wdyn TYPE REF TO cl_enh_tool_wdy,
lv_component_name TYPE wdy_component_name,
ls_enh_data TYPE enhwdyn.
-
lo_wdyn ?= ii_enh_tool.
lv_component_name = lo_wdyn->get_component_name( ).
@@ -27235,11 +30032,8 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho IMPLEMENTATION.
-
METHOD factory.
CASE iv_tool.
@@ -27281,7 +30075,6 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~changed_by.
DATA: lv_enh_id TYPE enhname,
@@ -27292,7 +30085,6 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
lt_enhlog TYPE STANDARD TABLE OF enhlog WITH DEFAULT KEY,
li_enh_tool TYPE REF TO if_enh_tool.
-
lv_enh_id = ms_item-obj_name.
TRY.
li_enh_tool = cl_enh_factory=>get_enhancement(
@@ -27321,7 +30113,6 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~delete.
DATA: lv_enh_id TYPE enhname,
@@ -27333,6 +30124,16 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
RETURN.
ENDIF.
+ zcl_abapgit_sotr_handler=>delete_sotr(
+ iv_pgmid = 'R3TR'
+ iv_object = ms_item-obj_type
+ iv_obj_name = ms_item-obj_name ).
+
+ zcl_abapgit_sots_handler=>delete_sots(
+ iv_pgmid = 'R3TR'
+ iv_object = ms_item-obj_type
+ iv_obj_name = ms_item-obj_name ).
+
lv_corrnum = iv_transport.
lv_enh_id = ms_item-obj_name.
@@ -27354,7 +30155,6 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~deserialize.
DATA: lv_tool TYPE enhtooltype,
@@ -27377,16 +30177,18 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
iv_package = iv_package
io_xml = io_xml ).
+ zcl_abapgit_sots_handler=>create_sots(
+ iv_package = iv_package
+ io_xml = io_xml ).
+
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
-
METHOD zif_abapgit_object~exists.
DATA: lv_enh_id TYPE enhname.
-
lv_enh_id = ms_item-obj_name.
TRY.
cl_enh_factory=>get_enhancement(
@@ -27400,32 +30202,26 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
ENDMETHOD.
-
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
-
METHOD zif_abapgit_object~is_locked.
DATA: lv_object TYPE seqg3-garg.
@@ -27439,22 +30235,18 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ENDMETHOD.
-
METHOD zif_abapgit_object~jump.
" Covered by zcl_abapinst_objects=>JUMP
ENDMETHOD.
-
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
-
METHOD zif_abapgit_object~serialize.
DATA: lv_enh_id TYPE enhname,
@@ -27482,20 +30274,24 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
ii_enh_tool = li_enh_tool ).
zcl_abapgit_sotr_handler=>read_sotr(
- iv_pgmid = 'R3TR'
- iv_object = ms_item-obj_type
- iv_obj_name = ms_item-obj_name
+ iv_pgmid = 'R3TR'
+ iv_object = ms_item-obj_type
+ iv_obj_name = ms_item-obj_name
+ io_i18n_params = mo_i18n_params
+ io_xml = io_xml ).
+
+ zcl_abapgit_sots_handler=>read_sots(
+ iv_pgmid = 'R3TR'
+ iv_object = ms_item-obj_type
+ iv_obj_name = ms_item-obj_name
io_i18n_params = mo_i18n_params
- io_xml = io_xml ).
+ io_xml = io_xml ).
ENDMETHOD.
ENDCLASS.
-
-
CLASS zcl_abapgit_object_enho_clif IMPLEMENTATION.
-
METHOD deserialize.
DATA: lt_tab_attributes TYPE enhclasstabattrib,
@@ -27516,7 +30312,6 @@ CLASS zcl_abapgit_object_enho_clif IMPLEMENTATION.
LIKE LINE OF -meth_exc,