Compare commits

..

No commits in common. "main" and "v1.129.0" have entirely different histories.

418 changed files with 5532 additions and 12979 deletions

View File

@ -1,10 +1,6 @@
{ {
"name": "abapGit", "name": "abapGit",
"image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-20", "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-12",
"customizations": { "extensions": ["larshp.vscode-abaplint"],
"vscode": {
"extensions": ["larshp.vscode-abaplint"]
}
},
"postCreateCommand": "npm install" "postCreateCommand": "npm install"
} }

View File

@ -8,4 +8,4 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: REUSE Compliance Check - name: REUSE Compliance Check
uses: fsfe/reuse-action@v5 uses: fsfe/reuse-action@v1

View File

@ -31,9 +31,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
- run: npm install - name: npm install
- run: npm run unit run: npm install
- run: npm run coverage - name: npm run unit
run: npm run unit
- name: npm run coverage
run: npm run coverage
integration: integration:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -42,8 +45,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
- run: npm install - name: npm install
run: npm install
- name: start gitea - name: start gitea
working-directory: test/gitea/ working-directory: test/gitea/
run: npm install && npm run gitea run: npm install && npm run gitea
- run: npm run integration - name: npm run integration
run: npm run integration

View File

@ -3,7 +3,8 @@
[![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE) [![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE)
[![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit) [![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit)
[![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap) [![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap)
[![abap package version](https://img.shields.io/endpoint?url=https://shield.abappm.com/github/abapGit/abapGit/-main/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap) [![abap package version](https://img.shields.io/endpoint?url=https://shield.abap.space/version-shield-json/github/abapGit/abapGit/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap)
<!-- <!--
<picture> <picture>
@ -68,5 +69,4 @@ For questions/comments/bugs/feature requests/wishes please create an [issue](htt
- Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC-BY-4.0](LICENSES/CC-BY-4.0.txt)) - Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC-BY-4.0](LICENSES/CC-BY-4.0.txt))
- [AJSON](https://github.com/sbcgua/ajson) and [String-Map](https://github.com/sbcgua/abap-string-map) are developed by Alexander Tsybulsky ([MIT](LICENSES/MIT.txt)) - [AJSON](https://github.com/sbcgua/ajson) and [String-Map](https://github.com/sbcgua/abap-string-map) are developed by Alexander Tsybulsky ([MIT](LICENSES/MIT.txt))
- [AFF](https://github.com/SAP/abap-file-formats) formats are by SAP ([MIT](LICENSES/MIT.txt))

View File

@ -11,43 +11,11 @@
"folder": "/deps" "folder": "/deps"
}, },
{ {
"url": "https://github.com/abaplint/deps",
"files": "/src/**/*.*", "files": "/src/**/*.*",
"folder": "/lint_deps" "folder": "/lint_deps",
"url": "https://github.com/abaplint/deps"
} }
], ],
"syntax": {
"errorNamespace": "^(Z|Y|LT?CL_|TY_|LIF_|C_|.*ABAPGIT)",
"globalConstants": [
"abap_func_exporting",
"abap_func_tables",
"cssf_formtype_text",
"seok_access_free",
"seok_access_modify",
"sews_c_vif_version",
"skwfc_obtype_folder",
"skwfc_obtype_loio",
"so2_controller",
"srext_ext_class_pool",
"srext_ext_interface_pool",
"ststc_c_type_dialog",
"ststc_c_type_object",
"ststc_c_type_parameters",
"ststc_c_type_report",
"swbm_c_op_delete_no_dialog",
"swbm_c_type_ddic_db_tabxinx",
"swbm_c_type_wdy_application",
"swbm_version_active",
"swbm_version_inactive",
"swfco_org_standard_task",
"swfco_org_workflow_template",
"wbmr_c_skwf_folder_class",
"wdyn_limu_component_controller",
"wdyn_limu_component_definition",
"wdyn_limu_component_view"
],
"version": "v702"
},
"rules": { "rules": {
"7bit_ascii": { "7bit_ascii": {
"exclude": [ "exclude": [
@ -57,11 +25,6 @@
] ]
}, },
"abapdoc": false, "abapdoc": false,
"align_type_expressions": true,
"align_pseudo_comments": false,
"invalid_table_index": true,
"tables_declared_locally": true,
"unused_macros": true,
"align_parameters": false, "align_parameters": false,
"allowed_object_naming": true, "allowed_object_naming": true,
"allowed_object_types": { "allowed_object_types": {
@ -158,11 +121,8 @@
}, },
"double_space": true, "double_space": true,
"downport": false, "downport": false,
"add_test_attributes": true,
"implicit_start_of_selection": true,
"empty_event": true,
"dynpro_checks": false, "dynpro_checks": false,
"easy_to_find_messages": false, "easy_to_find_messages": true,
"empty_line_in_statement": { "empty_line_in_statement": {
"allowChained": true "allowChained": true
}, },
@ -171,7 +131,6 @@
"at": true, "at": true,
"case": true, "case": true,
"do": true, "do": true,
"loopAllowIfSubrc": false,
"if": false, "if": false,
"loop": true, "loop": true,
"select": true, "select": true,
@ -225,8 +184,8 @@
"^if_adt_lock_handle$", "^if_adt_lock_handle$",
"^if_aff_", "^if_aff_",
"^if_satc_ci_variant_access$", "^if_satc_ci_variant_access$",
"^if_saunit_internal_result_type$",
"^if_saunit_internal_result$", "^if_saunit_internal_result$",
"^if_saunit_internal_result_type$",
"^if_srvd_types$", "^if_srvd_types$",
"^if_wb_adt_plugin_resource_co$", "^if_wb_adt_plugin_resource_co$",
"^if_wb_object_data_selection_co$", "^if_wb_object_data_selection_co$",
@ -234,7 +193,6 @@
"^if_xco_", "^if_xco_",
"^int4$", "^int4$",
"^numc2$", "^numc2$",
"^pgmid$",
"^sabp_t_tadir_keys$", "^sabp_t_tadir_keys$",
"^sap_bool$", "^sap_bool$",
"^srcsystem$", "^srcsystem$",
@ -244,7 +202,6 @@
"^sychar70$", "^sychar70$",
"^sydatum$", "^sydatum$",
"^sylangu$", "^sylangu$",
"^syst_langu$",
"^syst_title$", "^syst_title$",
"^syuzeit$", "^syuzeit$",
"^xubname$" "^xubname$"
@ -293,7 +250,7 @@
"/json/", "/json/",
"zcl_abapgit_object_pdts.clas.testclasses.abap" "zcl_abapgit_object_pdts.clas.testclasses.abap"
], ],
"length": 125 "length": 120
}, },
"line_only_punc": { "line_only_punc": {
"ignoreExceptions": true "ignoreExceptions": true
@ -319,9 +276,6 @@
"message_exists": true, "message_exists": true,
"method_implemented_twice": true, "method_implemented_twice": true,
"method_length": { "method_length": {
"exclude": [
"zcl_abapgit_convert.clas.locals_imp.abap"
],
"checkForms": true, "checkForms": true,
"errorWhenEmpty": false, "errorWhenEmpty": false,
"ignoreTestClasses": false, "ignoreTestClasses": false,
@ -505,5 +459,37 @@
"when_others_last": true, "when_others_last": true,
"whitespace_end": true, "whitespace_end": true,
"xml_consistency": true "xml_consistency": true
},
"syntax": {
"errorNamespace": "^(Z|Y|LT?CL_|TY_|LIF_|C_|.*ABAPGIT)",
"globalConstants": [
"abap_func_exporting",
"abap_func_tables",
"cssf_formtype_text",
"seok_access_free",
"seok_access_modify",
"sews_c_vif_version",
"skwfc_obtype_folder",
"skwfc_obtype_loio",
"so2_controller",
"srext_ext_class_pool",
"srext_ext_interface_pool",
"ststc_c_type_dialog",
"ststc_c_type_object",
"ststc_c_type_parameters",
"ststc_c_type_report",
"swbm_c_op_delete_no_dialog",
"swbm_c_type_ddic_db_tabxinx",
"swbm_c_type_wdy_application",
"swbm_version_active",
"swbm_version_inactive",
"swfco_org_standard_task",
"swfco_org_workflow_template",
"wbmr_c_skwf_folder_class",
"wdyn_limu_component_controller",
"wdyn_limu_component_definition",
"wdyn_limu_component_view"
],
"version": "v702"
} }
} }

View File

@ -8,65 +8,6 @@ Legend
+ : added + : added
- : removed - : removed
2025-01-01 v1.131.0
-------------------
! Remove need to `parallel_generators` server group (#7119)
+ VIEW: save `tddat` entries to transport (#7042)
+ Support for HTTP Destination (#7100)
+ Enhance logging with message id and number (#7111)
* Fix language conversion for language A (#7076)
* longtexts: workaround strange object names dump (#7077)
* SRVB: Clear fields and fix deserialize order (#7085)
* MSAG: Fix error handling during deletion (#7093)
* Fix error handling in exception viewer (#7095)
* Fix dark theme CSS whitespace (#7104)
* MSAG: Fix deletion of message longtexts (#7109)
* Fix RFC error handling (#7102)
* IDOC/IEXT: Fix deserialize in background (#7113)
* USCA: Fix missing transport entry (#7110)
* FUGS: Fix activation error (#7115)
* Limit number of GUI sessions (#7080)
* Fix dump when converting `xstring` to `bintab` (#7120)
2024-11-04 v1.130.0
-------------------
! PROG: Store flow logic as separate ABAP files (#7066)
! WDYN: Store controller code as separate ABAP files (#7069)
! SSFO: Store smartform code as separate ABAP files (#7071)
+ CLIF: Add missing translations for classes and interfaces (#6963)
+ UIAD: Add support for Launchpad App Descriptor Item (#6969)
+ BGQC: Add support for Background Processing Context (#6974)
+ DSFD: CDS Scalar Function Definition (#6951)
+ DRAS: CDS Aspect (#6953)
+ DSFI: CDS Scalar Function Implementation (#6952)
+ Add support for Software Component Relations (#7012)
* ENHO: Fix diff in generated comments of class enhancements (#6962)
* SXSD: Fix check if BADI exists (#6961)
* CDBO: Fix missing parameters in `constructor` (#6966)
* Fix dump in activation error handling (#6967)
* Fix deserialize SEOCLASSTX for INTF [AFF] (#6983)
* Allow staging for empty repositories (#6981)
* fix: syst_langu does not exist on older releases (#6999)
* fix sticky header with browser control warning (#6997)
* DSFI: Updated object handler to match the latest AFF definition (#7013)
* Filenames for translation are case sensitive (#6995)
* Enable deserialization of DSFD, DSFI and DRAS (#7029)
* PROG: Support dynpros with splitter control (#7035, #7038)
* Fix `CX_SY_ZERODIVIDE` dump in progress bar (#7036)
* JOBD: Clear `changedby` field (#7039)
* SFPF: Add syntax highlighting for `xdp` files (#7040)
* SFPF: Fix check if object exists (#7041)
* Add package check when creating repository (#7037)
* FUGS: serialization (#7045)
* Enable CDS types (#7048)
* Don't discard includes of nonexistent FUGR (#7053)
* Added enhanced method resolution for background exit (#7059)
* TABU: Display transport requests (#7063)
* Show diffs in case of trailing spaces (#7062)
- remove 200% icon scaling (#7003)
2024-07-01 v1.129.0 2024-07-01 v1.129.0
------------------- -------------------

View File

@ -2,10 +2,10 @@ CLASS cl_package_factory DEFINITION PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS load_package CLASS-METHODS load_package
IMPORTING IMPORTING
i_package_name TYPE devclass i_package_name TYPE devclass
VALUE(i_force_reload) TYPE abap_bool OPTIONAL VALUE(i_force_reload) TYPE abap_bool OPTIONAL
EXPORTING EXPORTING
VALUE(e_package) TYPE REF TO if_package VALUE(e_package) TYPE REF TO if_package
EXCEPTIONS EXCEPTIONS
object_not_existing object_not_existing
unexpected_error unexpected_error
@ -19,9 +19,9 @@ CLASS cl_package_factory DEFINITION PUBLIC.
!i_suppress_dialog TYPE abap_bool DEFAULT abap_false !i_suppress_dialog TYPE abap_bool DEFAULT abap_false
!i_suppress_access_permission TYPE abap_bool DEFAULT abap_false !i_suppress_access_permission TYPE abap_bool DEFAULT abap_false
EXPORTING EXPORTING
VALUE(e_package) TYPE REF TO if_package VALUE(e_package) TYPE REF TO if_package
CHANGING CHANGING
c_package_data TYPE any. c_package_data TYPE any.
ENDCLASS. ENDCLASS.
CLASS cl_package_factory IMPLEMENTATION. CLASS cl_package_factory IMPLEMENTATION.

105
deps/e070.tabl.xml vendored
View File

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E070</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E070</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE070</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>TRFUNCTION</FIELDNAME>
<ROLLNAME>TRFUNCTION</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<VALEXI>X</VALEXI>
<SHLPORIGIN>F</SHLPORIGIN>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>TRSTATUS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TARSYSTEM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>KORRDEV</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4USER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4DATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>AS4TIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>STRKORR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

116
deps/e071.tabl.xml vendored
View File

@ -1,116 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E071</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E071</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE071</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>AS4POS</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PGMID</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJECT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJ_NAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000240</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000120</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJFUNC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LOCKFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>GENNUM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>ACTIVITY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

158
deps/e071k.tabl.xml vendored
View File

@ -1,158 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E071K</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E071K</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE071K</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>PGMID</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJECT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4POS</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASTERTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASTERNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000080</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000040</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJFUNC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TABKEY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000240</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000120</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SORTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>ACTIVITY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

54
deps/e07t.tabl.xml vendored
View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E07T</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E07T</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE07T</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<UEBERSETZ>N</UEBERSETZ>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>LANGU</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>AS4TEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,8 +1,5 @@
INTERFACE if_package PUBLIC. INTERFACE if_package PUBLIC.
DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY. DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY.
DATA package_name TYPE string READ-ONLY.
DATA short_text TYPE string READ-ONLY.
DATA super_package_name TYPE string READ-ONLY.
DATA software_component TYPE string READ-ONLY. DATA software_component TYPE string READ-ONLY.
DATA application_component TYPE string READ-ONLY. DATA application_component TYPE string READ-ONLY.
DATA transport_layer TYPE string READ-ONLY. DATA transport_layer TYPE string READ-ONLY.

View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>SEOCLASSTX</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>SEOCLASSTX</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>SEOCLASSTX</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<UEBERSETZ>N</UEBERSETZ>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>CLSNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>SEOCLSNAME</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>LANGU</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>LANGU</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>DESCRIPT</FIELDNAME>
<ROLLNAME>SEODESCR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

4
deps/tcdrs.tabl.xml vendored
View File

@ -14,9 +14,9 @@
<FIELDNAME>TABNAME</FIELDNAME> <FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD> <ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE> <INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN> <INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE> <DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG> <LENG>000001</LENG>
<MASK> CHAR</MASK> <MASK> CHAR</MASK>
</DD03P> </DD03P>
</DD03P_TABLE> </DD03P_TABLE>

View File

@ -5,10 +5,10 @@
"test": "npm run eslint && npm run abaplint", "test": "npm run eslint && npm run abaplint",
"merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap", "merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap",
"merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..", "merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..",
"build": "rm -rf output && abap_transpile test/abap_transpile.json && cp -f src/ui/zabapgit_icon_font.w3mi.data.woff output/", "build": "rm -rf output && abap_transpile test/abap_transpile.json",
"unit": "npm run build && echo RUNNING && node output/index.mjs --skip-critical", "unit": "npm run build && echo RUNNING && node output/index.mjs",
"coverage": "npm run unit && c8 node output/index.mjs --skip-critical && c8 report --reporter=html", "coverage": "npm run unit && c8 node output/index.mjs && c8 report --reporter=html",
"integration": "npm run build && echo RUNNING && node output/index.mjs --only-critical", "integration": "rm -rf output && cp test/abap_transpile.json test/abap_transpile_int.json && sed -i 's/src,deps/test\\/src,src,deps/g' test/abap_transpile_int.json && abap_transpile test/abap_transpile_int.json && echo RUNNING && node output/index.mjs",
"abaplint": "abaplint --format codeframe", "abaplint": "abaplint --format codeframe",
"eslint": "eslint src" "eslint": "eslint src"
}, },
@ -23,14 +23,13 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@abaplint/cli": "^2.113.110", "@abaplint/cli": "^2.110.1",
"@abaplint/database-sqlite": "^2.10.24", "@abaplint/database-sqlite": "^2.8.25",
"@abaplint/runtime": "^2.10.44", "@abaplint/runtime": "^2.8.27",
"express": "^4.21.2", "@abaplint/transpiler-cli": "^2.8.27",
"@abaplint/transpiler-cli": "^2.10.44", "globals": "^15.5.0",
"globals": "^16.0.0", "abapmerge": "^0.16.0",
"abapmerge": "^0.16.6", "c8": "^10.1.2",
"c8": "^10.1.3", "eslint": "^9.5.0"
"eslint": "^9.25.1"
} }
} }

View File

@ -178,7 +178,7 @@ CLASS zcl_abapgit_apack_migration IMPLEMENTATION.
component_error = 4 component_error = 4
no_access = 5 no_access = 5
other = 6 other = 6
OTHERS = 7 ##FM_SUBRC_OK. OTHERS = 7.
CATCH cx_sy_dyn_call_param_not_found. CATCH cx_sy_dyn_call_param_not_found.
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE' CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
EXPORTING EXPORTING

View File

@ -1,3 +1,4 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_apack_manifest_reader DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. CLASS ltcl_apack_manifest_reader DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION. PRIVATE SECTION.
METHODS: METHODS:

View File

@ -1,3 +1,4 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_apack_manifest_writer DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. CLASS ltcl_apack_manifest_writer DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION. PRIVATE SECTION.
METHODS: the_serializator FOR TESTING RAISING cx_static_check. METHODS: the_serializator FOR TESTING RAISING cx_static_check.

View File

@ -26,7 +26,6 @@ CLASS zcl_abapgit_background DEFINITION
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'. CONSTANTS c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
CONSTANTS c_interface TYPE seoclskey VALUE 'ZIF_ABAPGIT_BACKGROUND'.
ENDCLASS. ENDCLASS.
@ -60,69 +59,36 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
METHOD list_methods. METHOD list_methods.
DATA: ls_method LIKE LINE OF rt_methods, DATA: ls_method LIKE LINE OF rt_methods,
lt_implementing TYPE seor_implementing_keys, ls_key TYPE seoclskey,
ls_implementing LIKE LINE OF lt_implementing, lt_implementing TYPE seor_implementing_keys,
lt_interf TYPE abap_intfdescr_tab, ls_implementing LIKE LINE OF lt_implementing.
lt_local_classes TYPE STANDARD TABLE OF scompo,
lv_classname TYPE string,
lr_typedescr TYPE REF TO cl_abap_typedescr,
lr_typedescr_class TYPE REF TO cl_abap_classdescr.
FIELD-SYMBOLS: <ls_local_class> LIKE LINE OF lt_local_classes, FIELD-SYMBOLS: <ls_method> LIKE LINE OF rt_methods.
<ls_method> LIKE LINE OF rt_methods.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
" Assume the standalone version runs.
CALL FUNCTION 'WB_TREE_GET_OBJECTS'
EXPORTING
include = ' '
otype = 'L'
program = sy-repid
TABLES
olist = lt_local_classes.
LOOP AT lt_local_classes ASSIGNING <ls_local_class>. * in order to handle local classes in the compiled report
lv_classname = |\\PROGRAM={ sy-repid }\\CLASS={ <ls_local_class>-name }|. ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PULL'.
cl_abap_typedescr=>describe_by_name( INSERT ls_method INTO TABLE rt_methods.
EXPORTING ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PUSH_AU'.
p_name = lv_classname INSERT ls_method INTO TABLE rt_methods.
RECEIVING ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PUSH_FI'.
p_descr_ref = lr_typedescr INSERT ls_method INTO TABLE rt_methods.
EXCEPTIONS
type_not_found = 1
OTHERS = 2 ).
IF sy-subrc = 0 AND lr_typedescr IS BOUND. ls_key-clsname = 'ZIF_ABAPGIT_BACKGROUND'.
lr_typedescr_class ?= lr_typedescr.
IF lr_typedescr_class IS BOUND.
lt_interf = lr_typedescr_class->interfaces.
READ TABLE lt_interf WITH TABLE KEY name = c_interface TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
ls_method-class = <ls_local_class>-name.
INSERT ls_method INTO TABLE rt_methods.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSE. CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL'
" Assume the developer version runs. EXPORTING
CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL' intkey = ls_key
EXPORTING IMPORTING
intkey = c_interface impkeys = lt_implementing
IMPORTING EXCEPTIONS
impkeys = lt_implementing not_existing = 1
EXCEPTIONS OTHERS = 2 ##FM_SUBRC_OK.
not_existing = 1 LOOP AT lt_implementing INTO ls_implementing.
OTHERS = 2. ls_method-class = ls_implementing-clsname.
IF sy-subrc = 0. INSERT ls_method INTO TABLE rt_methods.
LOOP AT lt_implementing INTO ls_implementing. ENDLOOP.
ls_method-class = ls_implementing-clsname.
INSERT ls_method INTO TABLE rt_methods.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT rt_methods ASSIGNING <ls_method>. LOOP AT rt_methods ASSIGNING <ls_method>.
CALL METHOD (<ls_method>-class)=>zif_abapgit_background~get_description CALL METHOD (<ls_method>-class)=>zif_abapgit_background~get_description
@ -135,14 +101,13 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
METHOD run. METHOD run.
DATA: DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
li_repo TYPE REF TO zif_abapgit_repo, lo_repo TYPE REF TO zcl_abapgit_repo_online,
li_repo_online TYPE REF TO zif_abapgit_repo_online, lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys,
lt_list TYPE zif_abapgit_persist_background=>ty_background_keys, li_background TYPE REF TO zif_abapgit_background,
li_background TYPE REF TO zif_abapgit_background, li_log TYPE REF TO zif_abapgit_log,
li_log TYPE REF TO zif_abapgit_log, lx_error TYPE REF TO zcx_abapgit_exception,
lx_error TYPE REF TO zcx_abapgit_exception, lv_repo_name TYPE string.
lv_repo_name TYPE string.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list. FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
@ -153,7 +118,8 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
RETURN. RETURN.
ENDTRY. ENDTRY.
lt_list = zcl_abapgit_persist_factory=>get_background( )->list( ). CREATE OBJECT lo_per.
lt_list = lo_per->list( ).
WRITE: / 'Background mode'. WRITE: / 'Background mode'.
@ -161,30 +127,24 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
CREATE OBJECT li_log TYPE zcl_abapgit_log. CREATE OBJECT li_log TYPE zcl_abapgit_log.
TRY. TRY.
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ). lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ).
li_repo_online ?= li_repo. lv_repo_name = lo_repo->get_name( ).
lv_repo_name = li_repo->get_name( ).
WRITE: / <ls_list>-method, lv_repo_name. WRITE: / <ls_list>-method, lv_repo_name.
zcl_abapgit_login_manager=>set( zcl_abapgit_login_manager=>set(
iv_uri = li_repo_online->get_url( ) iv_uri = lo_repo->get_url( )
iv_username = <ls_list>-username iv_username = <ls_list>-username
iv_password = <ls_list>-password ). iv_password = <ls_list>-password ).
TRY. CREATE OBJECT li_background TYPE (<ls_list>-method).
CREATE OBJECT li_background TYPE (<ls_list>-method).
li_background->run( li_background->run(
ii_repo_online = li_repo_online io_repo = lo_repo
ii_log = li_log ii_log = li_log
it_settings = <ls_list>-settings ). it_settings = <ls_list>-settings ).
CATCH cx_sy_create_object_error.
li_log->add_warning( |{ <ls_list>-method } could not be executed,|
& | as it is not accessible (local/global class).| ).
ENDTRY.
" Decrease memory usage for repository already processed (but keep log) " Decrease memory usage for repository already processed (but keep log)
li_repo->refresh( lo_repo->refresh(
iv_drop_cache = abap_true iv_drop_cache = abap_true
iv_drop_log = abap_false ). iv_drop_log = abap_false ).
CATCH zcx_abapgit_exception INTO lx_error. CATCH zcx_abapgit_exception INTO lx_error.

View File

@ -30,14 +30,12 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks, DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
lo_settings TYPE REF TO zcl_abapgit_settings, lo_settings TYPE REF TO zcl_abapgit_settings,
li_repo TYPE REF TO zif_abapgit_repo,
lv_activation_setting TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup. lv_activation_setting TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite. FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite.
li_repo = ii_repo_online.
ls_checks = li_repo->deserialize_checks( ). ls_checks = io_repo->deserialize_checks( ).
LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>. LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>.
<ls_overwrite>-decision = zif_abapgit_definitions=>c_yes. <ls_overwrite>-decision = zif_abapgit_definitions=>c_yes.
@ -48,14 +46,7 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
lo_settings->set_activate_wo_popup( abap_true ). lo_settings->set_activate_wo_popup( abap_true ).
io_repo->deserialize( is_checks = ls_checks
" pass decisions to delete
zcl_abapgit_services_repo=>delete_unnecessary_objects(
ii_repo = li_repo
is_checks = ls_checks
ii_log = ii_log ).
li_repo->deserialize( is_checks = ls_checks
ii_log = ii_log ). ii_log = ii_log ).
lo_settings->set_activate_wo_popup( lv_activation_setting ). lo_settings->set_activate_wo_popup( lv_activation_setting ).

View File

@ -17,7 +17,7 @@ CLASS zcl_abapgit_background_push_au DEFINITION
VALUE(rv_comment) TYPE string . VALUE(rv_comment) TYPE string .
METHODS push_auto METHODS push_auto
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS determine_user_details METHODS determine_user_details
@ -27,8 +27,8 @@ CLASS zcl_abapgit_background_push_au DEFINITION
VALUE(rs_user) TYPE zif_abapgit_git_definitions=>ty_git_user . VALUE(rs_user) TYPE zif_abapgit_git_definitions=>ty_git_user .
METHODS push_deletions METHODS push_deletions
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!is_files TYPE zif_abapgit_definitions=>ty_stage_files !is_files TYPE zif_abapgit_definitions=>ty_stage_files
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PRIVATE SECTION. PRIVATE SECTION.
@ -69,12 +69,12 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
METHOD determine_user_details. METHOD determine_user_details.
DATA li_user_record TYPE REF TO zif_abapgit_user_record. DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record.
li_user_record = zcl_abapgit_env_factory=>get_user_record( ). lo_user_record = zcl_abapgit_user_record=>get_instance( iv_changed_by ).
rs_user-name = li_user_record->get_name( iv_changed_by ). rs_user-name = lo_user_record->get_name( ).
rs_user-email = li_user_record->get_email( iv_changed_by ). rs_user-email = lo_user_record->get_email( ).
* If no email, fall back to localhost/default email * If no email, fall back to localhost/default email
IF rs_user-email IS INITIAL. IF rs_user-email IS INITIAL.
@ -110,7 +110,7 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
<ls_local> LIKE LINE OF ls_files-local. <ls_local> LIKE LINE OF ls_files-local.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
LOOP AT ls_files-local ASSIGNING <ls_local>. LOOP AT ls_files-local ASSIGNING <ls_local>.
lv_changed_by = zcl_abapgit_objects=>changed_by( lv_changed_by = zcl_abapgit_objects=>changed_by(
@ -172,13 +172,13 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
ls_comment-comment = build_comment( ls_user_files ). ls_comment-comment = build_comment( ls_user_files ).
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDLOOP. ENDLOOP.
IF lines( ls_files-remote ) > 0. IF lines( ls_files-remote ) > 0.
push_deletions( ii_repo_online = ii_repo_online push_deletions( io_repo = io_repo
is_files = ls_files ). is_files = ls_files ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
@ -212,8 +212,8 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
ls_comment-committer-name = 'Deletion'. ls_comment-committer-name = 'Deletion'.
ls_comment-committer-email = 'deletion@localhost'. ls_comment-committer-email = 'deletion@localhost'.
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.
@ -237,14 +237,14 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files. DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files.
mi_log = ii_log. mi_log = ii_log.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
ii_log->add_info( 'Nothing to stage' ). ii_log->add_info( 'Nothing to stage' ).
RETURN. RETURN.
ENDIF. ENDIF.
push_auto( ii_repo_online ). push_auto( io_repo ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -22,9 +22,9 @@ CLASS zcl_abapgit_background_push_fi DEFINITION
VALUE(rv_comment) TYPE string . VALUE(rv_comment) TYPE string .
METHODS push_fixed METHODS push_fixed
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!iv_name TYPE string !iv_name TYPE string
!iv_email TYPE string !iv_email TYPE string
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PRIVATE SECTION. PRIVATE SECTION.
@ -73,7 +73,7 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
<ls_remote> LIKE LINE OF ls_files-remote. <ls_remote> LIKE LINE OF ls_files-remote.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
ASSERT lines( ls_files-local ) > 0 ASSERT lines( ls_files-local ) > 0
OR lines( ls_files-remote ) > 0. OR lines( ls_files-remote ) > 0.
@ -99,8 +99,8 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
ls_comment-committer-email = iv_email. ls_comment-committer-email = iv_email.
ls_comment-comment = build_comment( ls_files ). ls_comment-comment = build_comment( ls_files ).
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.
@ -142,7 +142,7 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
lv_email TYPE string. lv_email TYPE string.
mi_log = ii_log. mi_log = ii_log.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
ii_log->add_info( 'Nothing to stage' ). ii_log->add_info( 'Nothing to stage' ).
@ -156,9 +156,9 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
lv_email = ls_setting-value. lv_email = ls_setting-value.
push_fixed( push_fixed(
ii_repo_online = ii_repo_online io_repo = io_repo
iv_name = lv_name iv_name = lv_name
iv_email = lv_email ). iv_email = lv_email ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -18,9 +18,9 @@ INTERFACE zif_abapgit_background
ct_settings TYPE ty_settings_tt . ct_settings TYPE ty_settings_tt .
METHODS run METHODS run
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
!it_settings TYPE ty_settings_tt OPTIONAL !it_settings TYPE ty_settings_tt OPTIONAL
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
ENDINTERFACE. ENDINTERFACE.

View File

@ -21,7 +21,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport "! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_for_obj METHODS get_current_transport_for_obj
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -36,7 +36,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport "! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_from_db METHODS get_current_transport_from_db
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -51,7 +51,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object type is not lockable "! @raising zcx_abapgit_exception | Object type is not lockable
METHODS is_object_locked_in_transport METHODS is_object_locked_in_transport
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -64,7 +64,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_lockable | Lockable "! @parameter rv_lockable | Lockable
METHODS is_object_type_lockable METHODS is_object_type_lockable
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
RETURNING RETURNING
VALUE(rv_lockable) TYPE abap_bool . VALUE(rv_lockable) TYPE abap_bool .
@ -74,7 +74,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_transportable | Transportable "! @parameter rv_transportable | Transportable
METHODS is_object_type_transportable METHODS is_object_type_transportable
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
RETURNING RETURNING
VALUE(rv_transportable) TYPE abap_bool . VALUE(rv_transportable) TYPE abap_bool .
@ -89,9 +89,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA: lv_object_lockable TYPE abap_bool, DATA: lv_object_lockable TYPE abap_bool,
lv_locked TYPE abap_bool, lv_locked TYPE abap_bool,
lv_transport_request TYPE trkorr, lv_transport_request TYPE trkorr,
ls_tlock TYPE tlock,
lt_tlock TYPE STANDARD TABLE OF tlock WITH DEFAULT KEY,
lt_transports TYPE STANDARD TABLE OF trkorr WITH DEFAULT KEY,
lv_task TYPE trkorr, lv_task TYPE trkorr,
lv_tr_object_name TYPE trobj_name. lv_tr_object_name TYPE trobj_name.
@ -107,8 +104,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
we_locked = lv_locked we_locked = lv_locked
we_lock_order = lv_transport_request we_lock_order = lv_transport_request
we_lock_task = lv_task we_lock_task = lv_task
TABLES
wt_tlock = lt_tlock
EXCEPTIONS EXCEPTIONS
empty_key = 1 empty_key = 1
no_systemname = 2 no_systemname = 2
@ -127,15 +122,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ). zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ).
ENDIF. ENDIF.
LOOP AT lt_tlock INTO ls_tlock. rv_transport = lv_transport_request.
COLLECT ls_tlock-trkorr INTO lt_transports.
ENDLOOP.
IF lines( lt_transports ) = 1.
rv_transport = lv_transport_request.
ELSE.
rv_transport = zif_abapgit_definitions=>c_multiple_transports.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -222,7 +209,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
IMPORTING IMPORTING
pe_result = lv_type_check_result. pe_result = lv_type_check_result.
rv_transportable = boolc( lv_type_check_result CA 'RTL' OR iv_object_type = 'TABU' ). rv_transportable = boolc( lv_type_check_result CA 'RTL' ).
ENDMETHOD. ENDMETHOD.
@ -358,9 +345,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA lt_table_keys TYPE STANDARD TABLE OF e071k. DATA lt_table_keys TYPE STANDARD TABLE OF e071k.
DATA lv_with_dialog TYPE abap_bool. DATA lv_with_dialog TYPE abap_bool.
FIELD-SYMBOLS <ls_table> LIKE LINE OF lt_tables.
FIELD-SYMBOLS <ls_table_key> LIKE LINE OF lt_table_keys.
cl_table_utilities_brf=>create_transport_entries( cl_table_utilities_brf=>create_transport_entries(
EXPORTING EXPORTING
it_table_ins = it_table_ins it_table_ins = it_table_ins
@ -376,7 +360,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
CALL FUNCTION 'TR_OBJECTS_CHECK' CALL FUNCTION 'TR_OBJECTS_CHECK'
TABLES TABLES
wt_ko200 = lt_tables wt_ko200 = lt_tables
wt_e071k = lt_table_keys
EXCEPTIONS EXCEPTIONS
cancel_edit_other_error = 1 cancel_edit_other_error = 1
show_only_other_error = 2 show_only_other_error = 2
@ -389,24 +372,15 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
lv_with_dialog = abap_true. lv_with_dialog = abap_true.
ENDIF. ENDIF.
READ TABLE lt_tables ASSIGNING <ls_table> INDEX 1. CALL FUNCTION 'TRINT_OBJECTS_CHECK_AND_INSERT'
ASSERT sy-subrc = 0.
LOOP AT lt_table_keys ASSIGNING <ls_table_key>.
<ls_table_key>-objfunc = <ls_table>-objfunc.
ENDLOOP.
CALL FUNCTION 'TR_OBJECT_INSERT'
EXPORTING EXPORTING
wi_order = iv_transport iv_order = iv_transport
wi_ko200 = <ls_table> iv_with_dialog = lv_with_dialog
iv_no_show_option = abap_true CHANGING
TABLES ct_ko200 = lt_tables
wt_e071k = lt_table_keys ct_e071k = lt_table_keys
EXCEPTIONS EXCEPTIONS
cancel_edit_other_error = 1 OTHERS = 1.
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ). zcx_abapgit_exception=>raise_t100( ).
ENDIF. ENDIF.
@ -483,12 +457,8 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
WHERE object = ls_lock_key-obj WHERE object = ls_lock_key-obj
AND hikey >= ls_lock_key-low AND hikey >= ls_lock_key-low
AND lokey <= ls_lock_key-hi. "#EC PORTABLE AND lokey <= ls_lock_key-hi. "#EC PORTABLE
IF lv_request IS INITIAL. lv_request = <ls_tlock>-trkorr.
lv_request = <ls_tlock>-trkorr. EXIT.
ELSE.
lv_request = zif_abapgit_definitions=>c_multiple_transports.
EXIT.
ENDIF.
ENDLOOP. ENDLOOP.
ELSEIF is_object_type_transportable( <ls_item>-obj_type ) = abap_true. ELSEIF is_object_type_transportable( <ls_item>-obj_type ) = abap_true.
lv_request = get_current_transport_from_db( lv_request = get_current_transport_from_db(
@ -640,7 +610,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ev_object = ls_list-object ev_object = ls_list-object
ev_obj_name = ls_list-obj_name ). ev_obj_name = ls_list-obj_name ).
INSERT ls_list INTO TABLE rt_list. INSERT ls_list INTO TABLE rt_list.
CATCH zcx_abapgit_exception ##NO_HANDLER. CATCH zcx_abapgit_exception.
ENDTRY. ENDTRY.
ENDCASE. ENDCASE.
ENDLOOP. ENDLOOP.

View File

@ -5,14 +5,19 @@ CLASS zcl_abapgit_default_transport DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_default_transport. INTERFACES zif_abapgit_default_transport.
METHODS constructor. METHODS
constructor
RAISING
zcx_abapgit_exception.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA mv_is_set_by_abapgit TYPE abap_bool . DATA mv_is_set_by_abapgit TYPE abap_bool .
DATA ms_save TYPE e070use . DATA ms_save TYPE e070use .
METHODS store. METHODS store
RAISING
zcx_abapgit_exception .
METHODS restore METHODS restore
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -30,7 +35,7 @@ ENDCLASS.
CLASS zcl_abapgit_default_transport IMPLEMENTATION. CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
METHOD clear. METHOD clear.
@ -111,11 +116,7 @@ CLASS zcl_abapgit_default_transport IMPLEMENTATION.
METHOD store. METHOD store.
TRY. ms_save = zif_abapgit_default_transport~get( ).
ms_save = zif_abapgit_default_transport~get( ).
CATCH zcx_abapgit_exception.
CLEAR ms_save.
ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -71,7 +71,7 @@ ENDCLASS.
CLASS zcl_abapgit_transport IMPLEMENTATION. CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
METHOD add_all_objects_to_trans_req. METHOD add_all_objects_to_trans_req.
@ -146,7 +146,7 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
lt_objects TYPE scts_tadir, lt_objects TYPE scts_tadir,
lt_objects_all LIKE lt_objects, lt_objects_all LIKE lt_objects,
ls_e071 LIKE LINE OF rt_objects, ls_e071 LIKE LINE OF rt_objects,
li_repo TYPE REF TO zif_abapgit_repo, lo_repo TYPE REF TO zcl_abapgit_repo,
lv_package TYPE zif_abapgit_persistence=>ty_repo-package, lv_package TYPE zif_abapgit_persistence=>ty_repo-package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt. lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
@ -154,8 +154,8 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
<lv_package> TYPE devclass, <lv_package> TYPE devclass,
<ls_object> TYPE tadir. <ls_object> TYPE tadir.
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = li_repo->get_package( ). lv_package = lo_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ). lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages. INSERT lv_package INTO TABLE lt_packages.

View File

@ -7,7 +7,7 @@ CLASS zcl_abapgit_transport_2_branch DEFINITION
METHODS create METHODS create
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repository TYPE REF TO zcl_abapgit_repo_online
!is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch !is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch
!it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING RAISING
@ -46,13 +46,13 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name( lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name(
zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ). zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ).
ii_repo_online->create_branch( lv_branch_name ). io_repository->create_branch( lv_branch_name ).
CREATE OBJECT lo_stage. CREATE OBJECT lo_stage.
ls_stage_objects = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_stage_objects = zcl_abapgit_factory=>get_stage_logic( )->get( io_repository ).
lt_object_statuses = zcl_abapgit_repo_status=>calculate( ii_repo_online ). lt_object_statuses = zcl_abapgit_repo_status=>calculate( io_repository ).
stage_transport_objects( stage_transport_objects(
it_transport_objects = it_transport_objects it_transport_objects = it_transport_objects
@ -62,8 +62,8 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
ls_comment = generate_commit_message( is_transport_to_branch ). ls_comment = generate_commit_message( is_transport_to_branch ).
ii_repo_online->push( is_comment = ls_comment io_repository->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.

View File

@ -38,10 +38,9 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
LOOP AT mt_transport_objects INTO ls_transport_object. LOOP AT mt_transport_objects INTO ls_transport_object.
LOOP AT it_object_statuses INTO ls_object_status LOOP AT it_object_statuses INTO ls_object_status
" USING KEY sec_key " syntax error in 754
WHERE obj_name = ls_transport_object-obj_name WHERE obj_name = ls_transport_object-obj_name
AND obj_type = ls_transport_object-object AND obj_type = ls_transport_object-object
AND NOT lstate IS INITIAL ##PRIMKEY[SEC_KEY]. AND NOT lstate IS INITIAL.
CASE ls_object_status-lstate. CASE ls_object_status-lstate.
WHEN zif_abapgit_definitions=>c_state-added OR zif_abapgit_definitions=>c_state-modified. WHEN zif_abapgit_definitions=>c_state-added OR zif_abapgit_definitions=>c_state-modified.

View File

@ -60,9 +60,9 @@ INTERFACE zif_abapgit_cts_api
METHODS create_transport_entries METHODS create_transport_entries
IMPORTING IMPORTING
!iv_transport TYPE trkorr !iv_transport TYPE trkorr
!it_table_ins TYPE ANY TABLE OPTIONAL !it_table_ins TYPE ANY TABLE
!it_table_upd TYPE ANY TABLE OPTIONAL !it_table_upd TYPE ANY TABLE
!it_table_del TYPE ANY TABLE OPTIONAL !it_table_del TYPE ANY TABLE
!iv_tabname TYPE tabname !iv_tabname TYPE tabname
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .

View File

@ -5,7 +5,7 @@
<VSEOINTERF> <VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_DEFAULT_TRANSPORT</CLSNAME> <CLSNAME>ZIF_ABAPGIT_DEFAULT_TRANSPORT</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>abapGit - Default Transport</DESCRIPT> <DESCRIPT>ZIF_ABAPGIT_DEFAULT_TRANSPORT</DESCRIPT>
<EXPOSURE>2</EXPOSURE> <EXPOSURE>2</EXPOSURE>
<STATE>1</STATE> <STATE>1</STATE>
<UNICODE>X</UNICODE> <UNICODE>X</UNICODE>

View File

@ -44,7 +44,7 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS determine_transport_request METHODS determine_transport_request
IMPORTING IMPORTING
ii_repo TYPE REF TO zif_abapgit_repo io_repo TYPE REF TO zcl_abapgit_repo
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING RETURNING
VALUE(rv_transport_request) TYPE trkorr. VALUE(rv_transport_request) TYPE trkorr.
@ -88,11 +88,11 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
" Use transport from repo settings if maintained, or determine via user exit. " Use transport from repo settings if maintained, or determine via user exit.
" If transport keeps empty here, it'll requested later via popup. " If transport keeps empty here, it'll requested later via popup.
rv_transport_request = ii_repo->get_local_settings( )-customizing_request. rv_transport_request = io_repo->get_local_settings( )-customizing_request.
li_exit->determine_transport_request( li_exit->determine_transport_request(
EXPORTING EXPORTING
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = iv_transport_type iv_transport_type = iv_transport_type
CHANGING CHANGING
cv_transport_request = rv_transport_request ). cv_transport_request = rv_transport_request ).
@ -337,7 +337,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
rs_checks-type-request = zif_abapgit_cts_api=>c_transport_type-cust_request. rs_checks-type-request = zif_abapgit_cts_api=>c_transport_type-cust_request.
rs_checks-type-task = zif_abapgit_cts_api=>c_transport_type-cust_task. rs_checks-type-task = zif_abapgit_cts_api=>c_transport_type-cust_task.
rs_checks-transport = determine_transport_request( rs_checks-transport = determine_transport_request(
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = rs_checks-type ). iv_transport_type = rs_checks-type ).
ENDIF. ENDIF.

View File

@ -23,7 +23,7 @@ CLASS zcl_abapgit_data_utils DEFINITION
VALUE(rv_filename) TYPE string. VALUE(rv_filename) TYPE string.
CLASS-METHODS jump CLASS-METHODS jump
IMPORTING IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item !is_item TYPE zif_abapgit_definitions=>ty_item
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS does_table_exist CLASS-METHODS does_table_exist
@ -49,7 +49,7 @@ ENDCLASS.
CLASS zcl_abapgit_data_utils IMPLEMENTATION. CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
METHOD build_config_filename. METHOD build_config_filename.
@ -196,7 +196,7 @@ CLASS zcl_abapgit_data_utils IMPLEMENTATION.
db_not_exists = 3 db_not_exists = 3
no_permission = 4 no_permission = 4
no_change_allowed = 5 no_change_allowed = 5
* table_is_gtt = 6 " not in lower releases table_is_gtt = 6
OTHERS = 7. OTHERS = 7.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Table { is_item-obj_name } cannot be displayed| ). zcx_abapgit_exception=>raise( |Table { is_item-obj_name } cannot be displayed| ).

View File

@ -15,7 +15,7 @@ INTERFACE zif_abapgit_data_deserializer
METHODS deserialize_check METHODS deserialize_check
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!ii_config TYPE REF TO zif_abapgit_data_config !ii_config TYPE REF TO zif_abapgit_data_config
RETURNING RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing

View File

@ -26,8 +26,6 @@ CLASS lcl_environment IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~get_basis_release. METHOD zif_abapgit_environment~get_basis_release.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~get_available_user_sessions.
ENDMETHOD.
METHOD zif_abapgit_environment~get_system_language_filter. METHOD zif_abapgit_environment~get_system_language_filter.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~is_merged. METHOD zif_abapgit_environment~is_merged.
@ -42,8 +40,6 @@ CLASS lcl_environment IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~init_parallel_processing. METHOD zif_abapgit_environment~init_parallel_processing.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~check_parallel_processing.
ENDMETHOD.
ENDCLASS. ENDCLASS.
@ -81,12 +77,10 @@ CLASS ltcl_abap_language_version DEFINITION FOR TESTING RISK LEVEL HARMLESS
PRIVATE SECTION. PRIVATE SECTION.
" Cloud package hardcoded in cl_abap_language_version " Cloud package hardcoded in cl_abap_language_version
CONSTANTS c_cloud_package TYPE devclass VALUE 'TEST_LANGUAGE_VERSION_SCP'. CONSTANTS c_cloud_package TYPE devclass VALUE 'TEST_LANGUAGE_VERSION_SCP'.
CONSTANTS c_language_cfg TYPE seoclsname VALUE 'CL_ABAP_LANGUAGE_VERSION_CFG'.
DATA: DATA:
mt_versions TYPE string_table, mt_versions TYPE string_table,
mv_has_cloud_package TYPE abap_bool, mv_has_cloud_package TYPE abap_bool,
mv_has_language_cfg TYPE abap_bool,
mo_environment TYPE REF TO lcl_environment, mo_environment TYPE REF TO lcl_environment,
mi_persistency TYPE REF TO zif_abapgit_persist_settings, mi_persistency TYPE REF TO zif_abapgit_persist_settings,
mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit,
@ -370,11 +364,9 @@ CLASS ltcl_abap_language_version IMPLEMENTATION.
" Assume on-prem (no cloud) " Assume on-prem (no cloud)
set_environment( abap_false ). set_environment( abap_false ).
IF mv_has_language_cfg = abap_true. cl_abap_unit_assert=>assert_equals(
cl_abap_unit_assert=>assert_equals( act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package
act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package exp = iv_standard ).
exp = iv_standard ).
ENDIF.
IF mv_has_cloud_package = abap_true. IF mv_has_cloud_package = abap_true.
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
@ -389,11 +381,9 @@ CLASS ltcl_abap_language_version IMPLEMENTATION.
" Assume cloud platform " Assume cloud platform
set_environment( abap_true ). set_environment( abap_true ).
IF mv_has_language_cfg = abap_true. cl_abap_unit_assert=>assert_equals(
cl_abap_unit_assert=>assert_equals( act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package
act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package exp = iv_standard ).
exp = iv_standard ).
ENDIF.
IF mv_has_cloud_package = abap_true. IF mv_has_cloud_package = abap_true.
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
@ -412,11 +402,6 @@ CLASS ltcl_abap_language_version IMPLEMENTATION.
DATA lv_version TYPE string. DATA lv_version TYPE string.
" Tests using ABAP language version "standard" only work if the required
" SAP class is available. In older releases, all packages will have
" ABAP language version "undefined" and are handled like a new package
mv_has_language_cfg = zcl_abapgit_oo_factory=>get_by_type( 'CLAS' )->exists( c_language_cfg ).
LOOP AT mt_versions INTO lv_version. LOOP AT mt_versions INTO lv_version.
CASE lv_version. CASE lv_version.

View File

@ -1,21 +0,0 @@
CLASS zcl_abapgit_env_factory DEFINITION PUBLIC GLOBAL FRIENDS zcl_abapgit_env_injector.
PUBLIC SECTION.
CLASS-METHODS get_user_record
RETURNING
VALUE(ri_user_record) TYPE REF TO zif_abapgit_user_record.
PRIVATE SECTION.
CLASS-DATA gi_user_record TYPE REF TO zif_abapgit_user_record.
ENDCLASS.
CLASS zcl_abapgit_env_factory IMPLEMENTATION.
METHOD get_user_record.
IF gi_user_record IS NOT BOUND.
CREATE OBJECT gi_user_record TYPE zcl_abapgit_user_record.
ENDIF.
ri_user_record = gi_user_record.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ENV_FACTORY</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Environment Factory</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,14 +0,0 @@
CLASS zcl_abapgit_env_injector DEFINITION PUBLIC.
PUBLIC SECTION.
CLASS-METHODS set_user_record
IMPORTING
!ii_user_record TYPE REF TO zif_abapgit_user_record.
ENDCLASS.
CLASS zcl_abapgit_env_injector IMPLEMENTATION.
METHOD set_user_record.
zcl_abapgit_env_factory=>gi_user_record = ii_user_record.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ENV_INJECTOR</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Environment Injector</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -2,11 +2,11 @@ CLASS zcl_abapgit_environment DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PRIVATE CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_factory. GLOBAL FRIENDS zcl_abapgit_factory .
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_environment. INTERFACES zif_abapgit_environment .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -16,7 +16,7 @@ CLASS zcl_abapgit_environment DEFINITION
METHODS is_system_changes_allowed METHODS is_system_changes_allowed
RETURNING RETURNING
VALUE(rv_result) TYPE abap_bool. VALUE(rv_result) TYPE abap_bool .
ENDCLASS. ENDCLASS.
@ -76,74 +76,11 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~check_parallel_processing.
" 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.
" 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.
" Check if assigned server instance exists
CALL FUNCTION 'TH_SERVER_LIST'
TABLES
list = lt_instances.
READ TABLE lt_instances TRANSPORTING NO FIELDS WITH KEY name = ls_setup-applserver.
IF sy-subrc = 0.
rv_checked = abap_true.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_environment~compare_with_inactive. METHOD zif_abapgit_environment~compare_with_inactive.
rv_result = zif_abapgit_environment~is_sap_cloud_platform( ). rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~get_available_user_sessions.
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.
IF lv_subrc = 0.
rv_sessions = lv_max_sessions - lv_act_sessions.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_environment~get_basis_release. METHOD zif_abapgit_environment~get_basis_release.
SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp) SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
@ -152,78 +89,6 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~get_system_language_filter.
DATA lv_translation_detective_lang TYPE spras.
DATA lv_pseudo_translation_language TYPE spras.
FIELD-SYMBOLS <ls_system_language_filter> LIKE LINE OF rt_system_language_filter.
" Translation Object Detective
" https://help.sap.com/docs/ABAP_PLATFORM_NEW/ceb25152cb0d4adba664cebea2bf4670/88a3d3cbccf64601975acabaccdfde45.html
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = '1Q'
IMPORTING
output = lv_translation_detective_lang
EXCEPTIONS
unknown_language = 1
OTHERS = 2.
IF sy-subrc = 1.
" The language for Translation Object Detective was not setup
ENDIF.
IF NOT lv_translation_detective_lang IS INITIAL.
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
<ls_system_language_filter>-sign = 'E'.
<ls_system_language_filter>-option = 'EQ'.
<ls_system_language_filter>-low = lv_translation_detective_lang.
ENDIF.
" 1943470 - Using technical language key 2Q to create pseudo-translations of ABAP developments
" https://launchpad.support.sap.com/#/notes/1943470
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = '2Q'
IMPORTING
output = lv_pseudo_translation_language
EXCEPTIONS
unknown_language = 1
OTHERS = 2.
IF sy-subrc = 1.
" The language for Pseudo Translation was not setup
ENDIF.
IF NOT lv_pseudo_translation_language IS INITIAL.
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
<ls_system_language_filter>-sign = 'E'.
<ls_system_language_filter>-option = 'EQ'.
<ls_system_language_filter>-low = lv_pseudo_translation_language.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_environment~init_parallel_processing.
DATA: lv_group TYPE rzlli_apcl.
lv_group = iv_group.
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
" multiple times in same session
CALL FUNCTION 'SPBT_INITIALIZE'
EXPORTING
group_name = lv_group
IMPORTING
free_pbt_wps = rv_free_work_processes
EXCEPTIONS
invalid_group_name = 1
internal_error = 2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7 ##FM_SUBRC_OK.
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
ENDMETHOD.
METHOD zif_abapgit_environment~is_merged. METHOD zif_abapgit_environment~is_merged.
DATA lr_marker TYPE REF TO data ##NEEDED. DATA lr_marker TYPE REF TO data ##NEEDED.
@ -290,6 +155,50 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~get_system_language_filter.
DATA lv_translation_detective_lang TYPE spras.
DATA lv_pseudo_translation_language TYPE spras.
FIELD-SYMBOLS <ls_system_language_filter> LIKE LINE OF rt_system_language_filter.
" Translation Object Detective
" https://help.sap.com/docs/ABAP_PLATFORM_NEW/ceb25152cb0d4adba664cebea2bf4670/88a3d3cbccf64601975acabaccdfde45.html
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = '1Q'
IMPORTING
output = lv_translation_detective_lang
EXCEPTIONS
unknown_language = 1
OTHERS = 2.
IF sy-subrc = 1.
" The language for Translation Object Detective was not setup
ENDIF.
IF NOT lv_translation_detective_lang IS INITIAL.
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
<ls_system_language_filter>-sign = 'E'.
<ls_system_language_filter>-option = 'EQ'.
<ls_system_language_filter>-low = lv_translation_detective_lang.
ENDIF.
" 1943470 - Using technical language key 2Q to create pseudo-translations of ABAP developments
" https://launchpad.support.sap.com/#/notes/1943470
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = '2Q'
IMPORTING
output = lv_pseudo_translation_language
EXCEPTIONS
unknown_language = 1
OTHERS = 2.
IF sy-subrc = 1.
" The language for Pseudo Translation was not setup
ENDIF.
IF NOT lv_pseudo_translation_language IS INITIAL.
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
<ls_system_language_filter>-sign = 'E'.
<ls_system_language_filter>-option = 'EQ'.
<ls_system_language_filter>-low = lv_pseudo_translation_language.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_environment~is_variant_maintenance. METHOD zif_abapgit_environment~is_variant_maintenance.
@ -303,4 +212,30 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ). rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_environment~init_parallel_processing.
DATA: lv_group TYPE rzlli_apcl.
lv_group = iv_group.
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
" multiple times in same session
CALL FUNCTION 'SPBT_INITIALIZE'
EXPORTING
group_name = lv_group
IMPORTING
free_pbt_wps = rv_free_work_processes
EXCEPTIONS
invalid_group_name = 1
internal_error = 2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7.
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,26 +1,45 @@
CLASS zcl_abapgit_user_record DEFINITION CLASS zcl_abapgit_user_record DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PRIVATE CREATE PRIVATE.
GLOBAL FRIENDS zcl_abapgit_env_factory.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS reset. CLASS-METHODS reset.
CLASS-METHODS get_instance
INTERFACES zif_abapgit_user_record. IMPORTING
!iv_user TYPE sy-uname
RETURNING
VALUE(ro_user) TYPE REF TO zcl_abapgit_user_record.
METHODS constructor
IMPORTING
!iv_user TYPE sy-uname.
METHODS get_name
RETURNING
VALUE(rv_name) TYPE string.
METHODS get_email
RETURNING
VALUE(rv_email) TYPE string.
CLASS-METHODS get_title
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_title) TYPE string.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: TYPES:
BEGIN OF ty_user, BEGIN OF ty_user,
user TYPE sy-uname, user TYPE sy-uname,
name TYPE string, o_user TYPE REF TO zcl_abapgit_user_record,
email TYPE string,
END OF ty_user. END OF ty_user.
CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user. CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user.
CLASS-METHODS check_user_exists DATA: BEGIN OF ms_user,
name TYPE string,
email TYPE string,
END OF ms_user .
METHODS check_user_exists
IMPORTING IMPORTING
iv_user TYPE sy-uname iv_user TYPE sy-uname
EXPORTING EXPORTING
@ -29,51 +48,35 @@ CLASS zcl_abapgit_user_record DEFINITION
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS get_user_dtls_from_other_clnt METHODS get_user_dtls_from_other_clnt
IMPORTING IMPORTING
iv_user TYPE sy-uname iv_user TYPE sy-uname.
RETURNING
VALUE(rs_user) TYPE ty_user.
CLASS-METHODS build_cache
IMPORTING
iv_user TYPE sy-uname
RETURNING
VALUE(rs_user) TYPE ty_user.
CLASS-METHODS read_cache
IMPORTING
iv_user TYPE sy-uname
RETURNING
VALUE(rs_user) TYPE ty_user.
ENDCLASS. ENDCLASS.
CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION. CLASS zcl_abapgit_user_record IMPLEMENTATION.
METHOD build_cache. METHOD get_title.
* the queried username might not exist, so this method is static
" Get user details DATA ls_user_address TYPE addr3_val.
TRY.
check_user_exists(
EXPORTING
iv_user = iv_user
IMPORTING
ev_fullname = rs_user-name
ev_email = rs_user-email ).
CATCH zcx_abapgit_exception.
" Could not find user, try to get from other clients
rs_user = get_user_dtls_from_other_clnt( iv_user ).
ENDTRY.
rs_user-user = iv_user. CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
INSERT rs_user INTO TABLE gt_user. EXPORTING
user_name = iv_username
IMPORTING
user_address = ls_user_address
EXCEPTIONS
user_address_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
rv_title = ls_user_address-name_text.
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD check_user_exists. METHOD check_user_exists.
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY. DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
@ -106,6 +109,63 @@ CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD constructor.
DATA ls_user TYPE ty_user.
" Get user details
TRY.
check_user_exists(
EXPORTING
iv_user = iv_user
IMPORTING
ev_fullname = ms_user-name
ev_email = ms_user-email ).
CATCH zcx_abapgit_exception.
" Could not find user, try to get from other clients
get_user_dtls_from_other_clnt( iv_user ).
ENDTRY.
" If the user has been found add it to the list
IF ms_user-name IS NOT INITIAL AND ms_user-email IS NOT INITIAL.
ls_user-user = iv_user.
ls_user-o_user = me.
INSERT ls_user INTO TABLE gt_user.
ENDIF.
ENDMETHOD.
METHOD get_email.
rv_email = ms_user-email.
ENDMETHOD.
METHOD get_instance.
FIELD-SYMBOLS <ls_user> TYPE ty_user.
READ TABLE gt_user ASSIGNING <ls_user> WITH TABLE KEY user = iv_user.
IF sy-subrc = 0.
ro_user = <ls_user>-o_user.
ELSE.
CREATE OBJECT ro_user
EXPORTING
iv_user = iv_user.
ENDIF.
ENDMETHOD.
METHOD get_name.
rv_name = ms_user-name.
ENDMETHOD.
METHOD get_user_dtls_from_other_clnt. METHOD get_user_dtls_from_other_clnt.
CONSTANTS lc_cc_category TYPE string VALUE 'C'. CONSTANTS lc_cc_category TYPE string VALUE 'C'.
@ -119,7 +179,7 @@ CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION.
ORDER BY PRIMARY KEY. ORDER BY PRIMARY KEY.
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>. LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
SELECT SINGLE u~bname p~name_text a~smtp_addr INTO (rs_user-user, rs_user-name, rs_user-email) SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name, ms_user-email)
FROM usr21 AS u FROM usr21 AS u
INNER JOIN adrp AS p ON p~persnumber = u~persnumber INNER JOIN adrp AS p ON p~persnumber = u~persnumber
AND p~client = u~mandt AND p~client = u~mandt
@ -140,61 +200,7 @@ CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD read_cache.
READ TABLE gt_user INTO rs_user WITH TABLE KEY user = iv_user.
IF sy-subrc <> 0.
rs_user = build_cache( iv_user ).
ENDIF.
ENDMETHOD.
METHOD reset. METHOD reset.
CLEAR gt_user. CLEAR gt_user.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_user_record~get_email.
rv_email = read_cache( iv_username )-email.
ENDMETHOD.
METHOD zif_abapgit_user_record~get_name.
rv_name = read_cache( iv_username )-name.
ENDMETHOD.
METHOD zif_abapgit_user_record~get_title.
* the queried username might not exist, refactored for open-abap compatibility
DATA lr_addr3 TYPE REF TO data.
FIELD-SYMBOLS <ls_addr3> TYPE any.
FIELD-SYMBOLS <lv_simple> TYPE simple.
TRY.
CREATE DATA lr_addr3 TYPE ('ADDR3_VAL').
CATCH cx_sy_create_data_error.
RETURN.
ENDTRY.
ASSIGN lr_addr3->* TO <ls_addr3>.
CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
EXPORTING
user_name = iv_username
IMPORTING
user_address = <ls_addr3>
EXCEPTIONS
user_address_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE <ls_addr3> TO <lv_simple>.
rv_title = <lv_simple>.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -16,10 +16,10 @@ ENDCLASS.
CLASS ltcl_user_record IMPLEMENTATION. CLASS ltcl_user_record IMPLEMENTATION.
METHOD test_invalid_user. METHOD test_invalid_user.
DATA li_user_record TYPE REF TO zif_abapgit_user_record. DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record.
zcl_abapgit_user_record=>reset( ). zcl_abapgit_user_record=>reset( ).
li_user_record = zcl_abapgit_env_factory=>get_user_record( ). lo_user_record = zcl_abapgit_user_record=>get_instance( c_wrong_user ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
exp = 0 exp = 0

View File

@ -39,13 +39,5 @@ INTERFACE zif_abapgit_environment
iv_group TYPE clike iv_group TYPE clike
RETURNING RETURNING
VALUE(rv_free_work_processes) TYPE i. 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. ENDINTERFACE.

View File

@ -1,21 +0,0 @@
INTERFACE zif_abapgit_user_record PUBLIC.
METHODS get_name
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_name) TYPE string.
METHODS get_email
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_email) TYPE string.
METHODS get_title
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_title) TYPE string.
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_USER_RECORD</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - User Record</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -317,8 +317,8 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
TRY. TRY.
gi_exit->determine_transport_request( gi_exit->determine_transport_request(
EXPORTING EXPORTING
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = iv_transport_type iv_transport_type = iv_transport_type
CHANGING CHANGING
cv_transport_request = cv_transport_request ). cv_transport_request = cv_transport_request ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
@ -328,18 +328,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD. 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. METHOD zif_abapgit_exit~enhance_repo_toolbar.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
@ -452,9 +440,9 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
TRY. TRY.
gi_exit->validate_before_push( gi_exit->validate_before_push(
is_comment = is_comment is_comment = is_comment
io_stage = io_stage io_stage = io_stage
ii_repo_online = ii_repo_online ). io_repo = io_repo ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY. ENDTRY.
ENDIF. ENDIF.

View File

@ -1,3 +1,5 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_test DEFINITION DEFERRED. CLASS ltcl_test DEFINITION DEFERRED.
CLASS zcl_abapgit_exit DEFINITION LOCAL FRIENDS ltcl_test. CLASS zcl_abapgit_exit DEFINITION LOCAL FRIENDS ltcl_test.

View File

@ -1,15 +1,15 @@
INTERFACE zif_abapgit_exit PUBLIC. INTERFACE zif_abapgit_exit PUBLIC.
TYPES: TYPES:
BEGIN OF ty_ci_repo, BEGIN OF ty_ci_repo,
name TYPE string, name TYPE string,
clone_url TYPE string, clone_url TYPE string,
END OF ty_ci_repo. END OF ty_ci_repo.
TYPES:
TYPES ty_ci_repos TYPE STANDARD TABLE OF ty_ci_repo WITH DEFAULT KEY. ty_ci_repos TYPE TABLE OF ty_ci_repo.
TYPES:
TYPES ty_object_types TYPE HASHED TABLE OF tadir-object WITH UNIQUE KEY table_line. ty_object_types TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY.
TYPES: TYPES:
BEGIN OF ty_class_key, BEGIN OF ty_class_key,
clsname TYPE abap_classname, clsname TYPE abap_classname,
@ -25,58 +25,47 @@ INTERFACE zif_abapgit_exit PUBLIC.
!cv_display_url TYPE csequence !cv_display_url TYPE csequence
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS adjust_display_filename METHODS adjust_display_filename
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
!iv_filename TYPE string !iv_filename TYPE string
RETURNING RETURNING
VALUE(rv_filename) TYPE string. VALUE(rv_filename) TYPE string.
METHODS allow_sap_objects METHODS allow_sap_objects
RETURNING RETURNING
VALUE(rv_allowed) TYPE abap_bool. VALUE(rv_allowed) TYPE abap_bool.
METHODS change_local_host METHODS change_local_host
CHANGING CHANGING
!ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt. !ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt.
METHODS change_max_parallel_processes METHODS change_max_parallel_processes
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
CHANGING CHANGING
!cv_max_processes TYPE i. !cv_max_processes TYPE i.
METHODS change_proxy_authentication METHODS change_proxy_authentication
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_authentication TYPE abap_bool. !cv_proxy_authentication TYPE abap_bool.
METHODS change_proxy_port METHODS change_proxy_port
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_port TYPE string. !cv_proxy_port TYPE string.
METHODS change_proxy_url METHODS change_proxy_url
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_url TYPE string. !cv_proxy_url TYPE string.
METHODS change_rfc_server_group METHODS change_rfc_server_group
CHANGING CHANGING
!cv_group TYPE rzlli_apcl. !cv_group TYPE rzlli_apcl.
METHODS change_supported_data_objects METHODS change_supported_data_objects
CHANGING CHANGING
!ct_objects TYPE zif_abapgit_data_supporter=>ty_objects. !ct_objects TYPE zif_abapgit_data_supporter=>ty_objects.
METHODS change_supported_object_types METHODS change_supported_object_types
CHANGING CHANGING
!ct_types TYPE ty_object_types. !ct_types TYPE ty_object_types.
METHODS change_tadir METHODS change_tadir
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
@ -86,7 +75,6 @@ INTERFACE zif_abapgit_exit PUBLIC.
!iv_only_local_objects TYPE abap_bool DEFAULT abap_false !iv_only_local_objects TYPE abap_bool DEFAULT abap_false
CHANGING CHANGING
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
METHODS create_http_client METHODS create_http_client
IMPORTING IMPORTING
!iv_url TYPE string !iv_url TYPE string
@ -94,7 +82,6 @@ INTERFACE zif_abapgit_exit PUBLIC.
VALUE(ri_client) TYPE REF TO if_http_client VALUE(ri_client) TYPE REF TO if_http_client
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS custom_serialize_abap_clif METHODS custom_serialize_abap_clif
IMPORTING IMPORTING
!is_class_key TYPE ty_class_key !is_class_key TYPE ty_class_key
@ -103,44 +90,33 @@ INTERFACE zif_abapgit_exit PUBLIC.
VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS deserialize_postprocess METHODS deserialize_postprocess
IMPORTING IMPORTING
!is_step TYPE zif_abapgit_objects=>ty_step_data !is_step TYPE zif_abapgit_objects=>ty_step_data
!ii_log TYPE REF TO zif_abapgit_log. !ii_log TYPE REF TO zif_abapgit_log.
METHODS determine_transport_request METHODS determine_transport_request
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type !iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
CHANGING CHANGING
!cv_transport_request TYPE trkorr. !cv_transport_request TYPE trkorr.
METHODS enhance_any_toolbar
IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar.
METHODS enhance_repo_toolbar METHODS enhance_repo_toolbar
IMPORTING IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar !io_menu TYPE REF TO zcl_abapgit_html_toolbar
!iv_key TYPE zif_abapgit_persistence=>ty_value !iv_key TYPE zif_abapgit_persistence=>ty_value
!iv_act TYPE string. !iv_act TYPE string.
METHODS get_ci_tests METHODS get_ci_tests
IMPORTING IMPORTING
!iv_object TYPE tadir-object !iv_object TYPE tadir-object
CHANGING CHANGING
!ct_ci_repos TYPE ty_ci_repos. !ct_ci_repos TYPE ty_ci_repos.
METHODS get_ssl_id METHODS get_ssl_id
RETURNING RETURNING
VALUE(rv_ssl_id) TYPE ssfapplssl. VALUE(rv_ssl_id) TYPE ssfapplssl.
METHODS http_client METHODS http_client
IMPORTING IMPORTING
!iv_url TYPE string !iv_url TYPE string
!ii_client TYPE REF TO if_http_client. !ii_client TYPE REF TO if_http_client.
METHODS on_event METHODS on_event
IMPORTING IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event !ii_event TYPE REF TO zif_abapgit_gui_event
@ -148,7 +124,6 @@ INTERFACE zif_abapgit_exit PUBLIC.
VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS pre_calculate_repo_status METHODS pre_calculate_repo_status
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
@ -157,26 +132,22 @@ INTERFACE zif_abapgit_exit PUBLIC.
!ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS serialize_postprocess METHODS serialize_postprocess
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
CHANGING CHANGING
!ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt. !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt.
METHODS validate_before_push METHODS validate_before_push
IMPORTING IMPORTING
!is_comment TYPE zif_abapgit_git_definitions=>ty_comment !is_comment TYPE zif_abapgit_git_definitions=>ty_comment
!io_stage TYPE REF TO zcl_abapgit_stage !io_stage TYPE REF TO zcl_abapgit_stage
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS wall_message_list METHODS wall_message_list
IMPORTING IMPORTING
!ii_html TYPE REF TO zif_abapgit_html. !ii_html TYPE REF TO zif_abapgit_html.
METHODS wall_message_repo METHODS wall_message_repo
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo

View File

@ -1,3 +1,5 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_calculate_patch DEFINITION FINAL FOR TESTING CLASS ltcl_calculate_patch DEFINITION FINAL FOR TESTING
DURATION SHORT DURATION SHORT
RISK LEVEL HARMLESS. RISK LEVEL HARMLESS.

View File

@ -178,18 +178,14 @@ CLASS zcl_abapgit_git_pack IMPLEMENTATION.
lv_data = iv_data. lv_data = iv_data.
* header * header
IF xstrlen( lv_data ) < 4. IF NOT xstrlen( lv_data ) > 4 OR lv_data(4) <> c_pack_start.
zcx_abapgit_exception=>raise( |Unexpected pack header, short reply| ). zcx_abapgit_exception=>raise( |Unexpected pack header| ).
ENDIF.
IF lv_data(4) <> c_pack_start.
zcx_abapgit_exception=>raise( |Unexpected pack header, { lv_data(4) }| ).
ENDIF. ENDIF.
lv_data = lv_data+4. lv_data = lv_data+4.
* version * version
IF lv_data(4) <> c_version. IF lv_data(4) <> c_version.
zcx_abapgit_exception=>raise( |Version not supported, { lv_data(4) }| ). zcx_abapgit_exception=>raise( |Version not supported| ).
ENDIF. ENDIF.
lv_data = lv_data+4. lv_data = lv_data+4.
@ -485,10 +481,9 @@ CLASS zcl_abapgit_git_pack IMPLEMENTATION.
ls_node-chmod = lv_chmod. ls_node-chmod = lv_chmod.
IF ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-dir IF ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-dir
AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-file AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-file
AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-symbolic_link
AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-executable AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-executable
AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-submodule. AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-submodule.
zcx_abapgit_exception=>raise( |Unknown chmod { ls_node-chmod }| ). zcx_abapgit_exception=>raise( |Unknown chmod| ).
ENDIF. ENDIF.
lv_offset = lv_match + 1. lv_offset = lv_match + 1.

View File

@ -1,3 +1,7 @@
*"* use this source file for any type of declarations (class
*"* definitions, interfaces or type declarations) you need for
*"* components in the private section
CLASS lcl_stream DEFINITION FINAL. CLASS lcl_stream DEFINITION FINAL.
PUBLIC SECTION. PUBLIC SECTION.
TYPES: ty_hex TYPE x LENGTH 1. TYPES: ty_hex TYPE x LENGTH 1.

View File

@ -1,3 +1,7 @@
*"* use this source file for the definition and implementation of
*"* local helper classes, interface definitions and type
*"* declarations
CLASS lcl_stream IMPLEMENTATION. CLASS lcl_stream IMPLEMENTATION.
METHOD constructor. METHOD constructor.

View File

@ -809,7 +809,6 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
CASE <ls_node>-chmod. CASE <ls_node>-chmod.
WHEN zif_abapgit_git_definitions=>c_chmod-file WHEN zif_abapgit_git_definitions=>c_chmod-file
OR zif_abapgit_git_definitions=>c_chmod-executable OR zif_abapgit_git_definitions=>c_chmod-executable
OR zif_abapgit_git_definitions=>c_chmod-symbolic_link
OR zif_abapgit_git_definitions=>c_chmod-submodule. OR zif_abapgit_git_definitions=>c_chmod-submodule.
APPEND INITIAL LINE TO rt_expanded ASSIGNING <ls_exp>. APPEND INITIAL LINE TO rt_expanded ASSIGNING <ls_exp>.
<ls_exp>-path = iv_base. <ls_exp>-path = iv_base.
@ -823,7 +822,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
iv_base = iv_base && <ls_node>-name && '/' ). iv_base = iv_base && <ls_node>-name && '/' ).
APPEND LINES OF lt_expanded TO rt_expanded. APPEND LINES OF lt_expanded TO rt_expanded.
WHEN OTHERS. WHEN OTHERS.
zcx_abapgit_exception=>raise( |walk_tree: unknown chmod { <ls_node>-chmod }| ). zcx_abapgit_exception=>raise( 'walk_tree: unknown chmod' ).
ENDCASE. ENDCASE.
ENDLOOP. ENDLOOP.

View File

@ -78,11 +78,10 @@ INTERFACE zif_abapgit_git_definitions
CONSTANTS: CONSTANTS:
BEGIN OF c_chmod, BEGIN OF c_chmod,
file TYPE ty_chmod VALUE '100644', file TYPE ty_chmod VALUE '100644',
executable TYPE ty_chmod VALUE '100755', executable TYPE ty_chmod VALUE '100755',
dir TYPE ty_chmod VALUE '40000 ', dir TYPE ty_chmod VALUE '40000 ',
submodule TYPE ty_chmod VALUE '160000', submodule TYPE ty_chmod VALUE '160000',
symbolic_link TYPE ty_chmod VALUE '120000',
END OF c_chmod . END OF c_chmod .
TYPES: TYPES:

View File

@ -7,9 +7,9 @@ CLASS zcl_abapgit_git_url DEFINITION
METHODS get_commit_display_url METHODS get_commit_display_url
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
RETURNING RETURNING
VALUE(rv_url) TYPE string VALUE(rv_url) TYPE string
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -40,21 +40,18 @@ CLASS zcl_abapgit_git_url IMPLEMENTATION.
METHOD get_commit_display_url. METHOD get_commit_display_url.
DATA li_exit TYPE REF TO zif_abapgit_exit. DATA li_exit TYPE REF TO zif_abapgit_exit.
DATA li_repo TYPE REF TO zif_abapgit_repo.
li_repo = ii_repo_online.
rv_url = get_default_commit_display_url( rv_url = get_default_commit_display_url(
iv_repo_url = ii_repo_online->get_url( ) iv_repo_url = io_repo->get_url( )
iv_hash = ii_repo_online->get_current_remote( ) ). iv_hash = io_repo->get_current_remote( ) ).
li_exit = zcl_abapgit_exit=>get_instance( ). li_exit = zcl_abapgit_exit=>get_instance( ).
li_exit->adjust_display_commit_url( li_exit->adjust_display_commit_url(
EXPORTING EXPORTING
iv_repo_url = ii_repo_online->get_url( ) iv_repo_url = io_repo->get_url( )
iv_repo_name = li_repo->get_name( ) iv_repo_name = io_repo->get_name( )
iv_repo_key = li_repo->get_key( ) iv_repo_key = io_repo->get_key( )
iv_commit_hash = ii_repo_online->get_current_remote( ) iv_commit_hash = io_repo->get_current_remote( )
CHANGING CHANGING
cv_display_url = rv_url ). cv_display_url = rv_url ).

View File

@ -50,7 +50,7 @@ CLASS zcl_abapgit_pr_enumerator IMPLEMENTATION.
mv_repo_url = to_lower( iv_url ). mv_repo_url = to_lower( iv_url ).
TRY. TRY.
mi_enum_provider = create_provider( mv_repo_url ). mi_enum_provider = create_provider( mv_repo_url ).
CATCH zcx_abapgit_exception ##NO_HANDLER. CATCH zcx_abapgit_exception.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -62,7 +62,7 @@ CLASS zcl_abapgit_pr_enumerator IMPLEMENTATION.
DATA lv_user TYPE string. DATA lv_user TYPE string.
DATA lv_repo TYPE string. DATA lv_repo TYPE string.
li_agent = zcl_abapgit_http_agent=>create( ). li_agent = zcl_abapgit_factory=>get_http_agent( ).
FIND ALL OCCURRENCES OF REGEX 'github\.com\/([^\/]+)\/([^\/]+)' FIND ALL OCCURRENCES OF REGEX 'github\.com\/([^\/]+)\/([^\/]+)'
IN iv_repo_url IN iv_repo_url

View File

@ -1,6 +1,7 @@
CLASS zcl_abapgit_code_inspector DEFINITION CLASS zcl_abapgit_code_inspector DEFINITION
PUBLIC PUBLIC
CREATE PROTECTED. CREATE PROTECTED
GLOBAL FRIENDS zcl_abapgit_factory .
PUBLIC SECTION. PUBLIC SECTION.
@ -12,19 +13,6 @@ CLASS zcl_abapgit_code_inspector DEFINITION
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS get_code_inspector
IMPORTING
!iv_package TYPE devclass
RETURNING
VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector
RAISING
zcx_abapgit_exception.
CLASS-METHODS set_code_inspector
IMPORTING
!iv_package TYPE devclass
!ii_code_inspector TYPE REF TO zif_abapgit_code_inspector.
PROTECTED SECTION. PROTECTED SECTION.
DATA mv_package TYPE devclass . DATA mv_package TYPE devclass .
@ -47,15 +35,6 @@ CLASS zcl_abapgit_code_inspector DEFINITION
VALUE(rv_skip) TYPE abap_bool. VALUE(rv_skip) TYPE abap_bool.
PRIVATE SECTION. PRIVATE SECTION.
TYPES:
BEGIN OF ty_code_inspector_pack,
package TYPE devclass,
instance TYPE REF TO zif_abapgit_code_inspector,
END OF ty_code_inspector_pack,
ty_code_inspector_packs TYPE HASHED TABLE OF ty_code_inspector_pack WITH UNIQUE KEY package.
CLASS-DATA gt_code_inspector TYPE ty_code_inspector_packs.
DATA mv_success TYPE abap_bool . DATA mv_success TYPE abap_bool .
DATA mv_summary TYPE string. DATA mv_summary TYPE string.
@ -287,28 +266,6 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_code_inspector.
DATA ls_code_inspector LIKE LINE OF gt_code_inspector.
FIELD-SYMBOLS <ls_code_inspector> TYPE ty_code_inspector_pack.
READ TABLE gt_code_inspector ASSIGNING <ls_code_inspector> WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
CREATE OBJECT ls_code_inspector-instance TYPE zcl_abapgit_code_inspector
EXPORTING
iv_package = iv_package.
INSERT ls_code_inspector INTO TABLE gt_code_inspector ASSIGNING <ls_code_inspector>.
ENDIF.
ri_code_inspector = <ls_code_inspector>-instance.
ENDMETHOD.
METHOD run_inspection. METHOD run_inspection.
io_inspection->run( io_inspection->run(
@ -333,24 +290,6 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_code_inspector.
DATA ls_code_inspector LIKE LINE OF gt_code_inspector.
FIELD-SYMBOLS <ls_code_inspector> LIKE LINE OF gt_code_inspector.
READ TABLE gt_code_inspector ASSIGNING <ls_code_inspector> WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
INSERT ls_code_inspector INTO TABLE gt_code_inspector ASSIGNING <ls_code_inspector>.
ENDIF.
<ls_code_inspector>-instance = ii_code_inspector.
ENDMETHOD.
METHOD skip_object. METHOD skip_object.
DATA ls_program_type TYPE subc. DATA ls_program_type TYPE subc.

View File

@ -12,12 +12,12 @@ CLASS zcl_abapgit_where_used_tools DEFINITION
obj_type TYPE tadir-object, obj_type TYPE tadir-object,
obj_prog_type TYPE trdir-subc, obj_prog_type TYPE trdir-subc,
obj_name TYPE tadir-obj_name, obj_name TYPE tadir-obj_name,
obj_cls TYPE string, obj_cls TYPE rsfindlst-object_cls,
dep_package TYPE devclass, dep_package TYPE devclass,
dep_obj_type TYPE tadir-object, dep_obj_type TYPE tadir-object,
dep_obj_name TYPE tadir-obj_name, dep_obj_name TYPE tadir-obj_name,
dep_used_cls TYPE string, dep_used_cls TYPE rsfindlst-used_cls,
dep_used_obj TYPE string, dep_used_obj TYPE rsfindlst-used_obj,
END OF ty_dependency. END OF ty_dependency.
TYPES: TYPES:
ty_dependency_tt TYPE STANDARD TABLE OF ty_dependency WITH DEFAULT KEY. ty_dependency_tt TYPE STANDARD TABLE OF ty_dependency WITH DEFAULT KEY.
@ -30,11 +30,11 @@ CLASS zcl_abapgit_where_used_tools DEFINITION
" here: https://github.com/sbcgua/crossdeps " here: https://github.com/sbcgua/crossdeps
METHODS select_external_usages METHODS select_external_usages
IMPORTING IMPORTING
iv_package TYPE tadir-devclass iv_package TYPE tadir-devclass
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
ir_package_scope TYPE ty_devc_range OPTIONAL ir_package_scope TYPE ty_devc_range OPTIONAL
RETURNING RETURNING
VALUE(rt_objs) TYPE ty_dependency_tt VALUE(rt_objs) TYPE ty_dependency_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
@ -124,7 +124,7 @@ ENDCLASS.
CLASS zcl_abapgit_where_used_tools IMPLEMENTATION. CLASS ZCL_ABAPGIT_WHERE_USED_TOOLS IMPLEMENTATION.
METHOD build_package_scope. METHOD build_package_scope.
@ -311,7 +311,7 @@ CLASS zcl_abapgit_where_used_tools IMPLEMENTATION.
not_enough_input = 1 not_enough_input = 1
no_function_pool = 2 no_function_pool = 2
delimiter_wrong_position = 3 delimiter_wrong_position = 3
OTHERS = 4 ##FM_SUBRC_OK. OTHERS = 4.
IF lv_area IS INITIAL. IF lv_area IS INITIAL.
SELECT SINGLE master FROM d010inc INTO lv_program SELECT SINGLE master FROM d010inc INTO lv_program
@ -325,7 +325,7 @@ CLASS zcl_abapgit_where_used_tools IMPLEMENTATION.
not_enough_input = 1 not_enough_input = 1
no_function_pool = 2 no_function_pool = 2
delimiter_wrong_position = 3 delimiter_wrong_position = 3
OTHERS = 4 ##FM_SUBRC_OK. OTHERS = 4.
ENDIF. ENDIF.
IF lv_area IS NOT INITIAL. IF lv_area IS NOT INITIAL.

View File

@ -5,7 +5,7 @@
<VSEOCLASS> <VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_WHERE_USED_TOOLS</CLSNAME> <CLSNAME>ZCL_ABAPGIT_WHERE_USED_TOOLS</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>abapGit - Where-used Utilities</DESCRIPT> <DESCRIPT>abapGit where used utilities</DESCRIPT>
<STATE>1</STATE> <STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>

View File

@ -50,30 +50,30 @@ CLASS zcl_abapgit_ajson DEFINITION
CLASS-METHODS parse CLASS-METHODS parse
IMPORTING IMPORTING
!iv_json TYPE any !iv_json TYPE string
!iv_freeze TYPE abap_bool DEFAULT abap_false !iv_freeze TYPE abap_bool DEFAULT abap_false
!ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
!iv_keep_item_order TYPE abap_bool DEFAULT abap_false !iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson
RAISING RAISING
zcx_abapgit_ajson_error . zcx_abapgit_ajson_error .
CLASS-METHODS create_empty " Might be deprecated, prefer using new( ) or create object CLASS-METHODS create_empty " Might be deprecated, prefer using new( ) or create object
IMPORTING IMPORTING
!ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL !ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_keep_item_order TYPE abap_bool DEFAULT abap_false
iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson. VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
" Experimental ! May change " Experimental ! May change
CLASS-METHODS create_from " TODO, rename to 'from' ? CLASS-METHODS create_from " TODO, rename to 'from' ?
IMPORTING IMPORTING
!ii_source_json TYPE REF TO zif_abapgit_ajson !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_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_mapper TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL " Might be deprecated, use map() instead
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson
RAISING RAISING
@ -81,16 +81,16 @@ CLASS zcl_abapgit_ajson DEFINITION
METHODS constructor METHODS constructor
IMPORTING IMPORTING
iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_keep_item_order TYPE abap_bool DEFAULT abap_false
iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false. iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false.
CLASS-METHODS new CLASS-METHODS new
IMPORTING IMPORTING
iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_keep_item_order TYPE abap_bool DEFAULT abap_false
iv_format_datetime TYPE abap_bool DEFAULT abap_true iv_format_datetime TYPE abap_bool DEFAULT abap_true
iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false iv_to_abap_corresponding_only TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson. VALUE(ro_instance) TYPE REF TO zcl_abapgit_ajson.
PROTECTED SECTION. PROTECTED SECTION.
@ -108,16 +108,16 @@ CLASS zcl_abapgit_ajson DEFINITION
VALUE(rv_item) TYPE REF TO zif_abapgit_ajson_types=>ty_node. VALUE(rv_item) TYPE REF TO zif_abapgit_ajson_types=>ty_node.
METHODS prove_path_exists METHODS prove_path_exists
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson_types=>ty_node VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson_types=>ty_node
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS delete_subtree METHODS delete_subtree
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_name TYPE string iv_name TYPE string
ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL
RETURNING RETURNING
VALUE(rs_top_node) TYPE zif_abapgit_ajson_types=>ty_node. VALUE(rs_top_node) TYPE zif_abapgit_ajson_types=>ty_node.
METHODS read_only_watchdog METHODS read_only_watchdog
@ -848,8 +848,6 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
DATA lv_path_pattern TYPE string. DATA lv_path_pattern TYPE string.
CREATE OBJECT lo_section. CREATE OBJECT lo_section.
lo_section->mi_custom_mapping = mi_custom_mapping.
lv_normalized_path = lcl_utils=>normalize_path( iv_path ). lv_normalized_path = lcl_utils=>normalize_path( iv_path ).
lv_path_len = strlen( lv_normalized_path ). lv_path_len = strlen( lv_normalized_path ).
ls_path_parts = lcl_utils=>split_path( lv_normalized_path ). ls_path_parts = lcl_utils=>split_path( lv_normalized_path ).

View File

@ -20,27 +20,27 @@ INTERFACE lif_kind.
CONSTANTS: CONSTANTS:
BEGIN OF numeric, BEGIN OF numeric,
int1 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int1, int1 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int1,
int2 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int2, int2 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int2,
int4 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_int, int4 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_int,
int8 TYPE ty_kind VALUE '8', " cl_abap_typedescr=>typekind_int8 not in lower releases int8 TYPE ty_kind VALUE '8', " cl_abap_tabledescr=>typekind_int8 not in lower releases
float TYPE ty_kind VALUE cl_abap_typedescr=>typekind_float, float TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_float,
packed TYPE ty_kind VALUE cl_abap_typedescr=>typekind_packed, packed TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_packed,
decfloat16 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_decfloat16, decfloat16 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_decfloat16,
decfloat34 TYPE ty_kind VALUE cl_abap_typedescr=>typekind_decfloat34, decfloat34 TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_decfloat34,
END OF numeric. END OF numeric.
CONSTANTS: CONSTANTS:
BEGIN OF texts, BEGIN OF texts,
char TYPE ty_kind VALUE cl_abap_typedescr=>typekind_char, char TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_char,
numc TYPE ty_kind VALUE cl_abap_typedescr=>typekind_num, numc TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_num,
string TYPE ty_kind VALUE cl_abap_typedescr=>typekind_string, string TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_string,
END OF texts. END OF texts.
CONSTANTS: CONSTANTS:
BEGIN OF binary, BEGIN OF binary,
hex TYPE ty_kind VALUE cl_abap_typedescr=>typekind_hex, hex TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_hex,
xstring TYPE ty_kind VALUE cl_abap_typedescr=>typekind_xstring, xstring TYPE ty_kind VALUE cl_abap_tabledescr=>typekind_xstring,
END OF binary. END OF binary.
CONSTANTS: CONSTANTS:
@ -59,46 +59,27 @@ CLASS lcl_utils DEFINITION FINAL.
CLASS-METHODS normalize_path CLASS-METHODS normalize_path
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_path) TYPE string. VALUE(rv_path) TYPE string.
CLASS-METHODS split_path CLASS-METHODS split_path
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_path_name) TYPE zif_abapgit_ajson_types=>ty_path_name. VALUE(rv_path_name) TYPE zif_abapgit_ajson_types=>ty_path_name.
CLASS-METHODS validate_array_index CLASS-METHODS validate_array_index
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_index TYPE string iv_index TYPE string
RETURNING RETURNING
VALUE(rv_index) TYPE i VALUE(rv_index) TYPE i
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
CLASS-METHODS string_to_xstring_utf8 CLASS-METHODS string_to_xstring_utf8
IMPORTING IMPORTING
iv_str TYPE string iv_str TYPE string
RETURNING RETURNING
VALUE(rv_xstr) TYPE xstring. 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. ENDCLASS.
@ -135,37 +116,6 @@ CLASS lcl_utils IMPLEMENTATION.
ENDMETHOD. 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.
METHOD validate_array_index. METHOD validate_array_index.
IF NOT iv_index CO '0123456789'. IF NOT iv_index CO '0123456789'.
@ -226,74 +176,6 @@ CLASS lcl_utils IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
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: <data> 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 <data>.
lv_str = concat_lines_of( table = <data>
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: <data> 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 <data>.
rv_str = concat_lines_of( table = <data>
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. ENDCLASS.
@ -306,8 +188,8 @@ CLASS lcl_json_parser DEFINITION FINAL.
METHODS parse METHODS parse
IMPORTING IMPORTING
iv_json TYPE any iv_json TYPE string
iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
@ -330,7 +212,7 @@ CLASS lcl_json_parser DEFINITION FINAL.
METHODS _parse METHODS _parse
IMPORTING IMPORTING
iv_json TYPE xstring iv_json TYPE string
RETURNING RETURNING
VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
@ -351,20 +233,17 @@ CLASS lcl_json_parser IMPLEMENTATION.
DATA lx_sxml_parse TYPE REF TO cx_sxml_parse_error. DATA lx_sxml_parse TYPE REF TO cx_sxml_parse_error.
DATA lx_sxml TYPE REF TO cx_dynamic_check. DATA lx_sxml TYPE REF TO cx_dynamic_check.
DATA lv_location TYPE string. DATA lv_location TYPE string.
DATA lv_json TYPE xstring.
mv_keep_item_order = iv_keep_item_order. mv_keep_item_order = iv_keep_item_order.
lv_json = lcl_utils=>any_to_xstring( iv_json ).
TRY. TRY.
" TODO sane JSON check: " TODO sane JSON check:
" JSON can be true,false,null,(-)digits " JSON can be true,false,null,(-)digits
" or start from " or from { " or start from " or from {
rt_json_tree = _parse( lv_json ). rt_json_tree = _parse( iv_json ).
CATCH cx_sxml_parse_error INTO lx_sxml_parse. CATCH cx_sxml_parse_error INTO lx_sxml_parse.
lv_location = _get_location( lv_location = _get_location(
iv_json = lcl_utils=>any_to_string( iv_json ) iv_json = iv_json
iv_offset = lx_sxml_parse->xml_offset ). iv_offset = lx_sxml_parse->xml_offset ).
zcx_abapgit_ajson_error=>raise( zcx_abapgit_ajson_error=>raise(
iv_msg = |Json parsing error (SXML): { lx_sxml_parse->get_text( ) }| iv_msg = |Json parsing error (SXML): { lx_sxml_parse->get_text( ) }|
@ -426,7 +305,7 @@ CLASS lcl_json_parser IMPLEMENTATION.
IF iv_json IS INITIAL. IF iv_json IS INITIAL.
RETURN. RETURN.
ENDIF. ENDIF.
lo_reader = cl_sxml_string_reader=>create( iv_json ). lo_reader = cl_sxml_string_reader=>create( lcl_utils=>string_to_xstring_utf8( iv_json ) ).
" TODO: self protection, check non-empty, check starting from object ... " TODO: self protection, check non-empty, check starting from object ...
@ -527,9 +406,9 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
CLASS-METHODS stringify CLASS-METHODS stringify
IMPORTING IMPORTING
it_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts it_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
iv_indent TYPE i DEFAULT 0 iv_indent TYPE i DEFAULT 0
iv_keep_item_order TYPE abap_bool DEFAULT abap_false iv_keep_item_order TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(rv_json_string) TYPE string VALUE(rv_json_string) TYPE string
RAISING RAISING
@ -549,7 +428,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
CLASS-METHODS escape_string CLASS-METHODS escape_string
IMPORTING IMPORTING
iv_unescaped TYPE string iv_unescaped TYPE string
RETURNING RETURNING
VALUE(rv_escaped) TYPE string. VALUE(rv_escaped) TYPE string.
@ -568,7 +447,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE.
METHODS stringify_set METHODS stringify_set
IMPORTING IMPORTING
iv_parent_path TYPE string iv_parent_path TYPE string
iv_array TYPE abap_bool iv_array TYPE abap_bool
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
@ -771,7 +650,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS to_abap METHODS to_abap
IMPORTING IMPORTING
it_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_ts it_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_ts
CHANGING CHANGING
c_container TYPE any c_container TYPE any
RAISING RAISING
@ -819,16 +698,16 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS any_to_abap METHODS any_to_abap
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
is_parent_type TYPE ty_type_cache OPTIONAL is_parent_type TYPE ty_type_cache OPTIONAL
i_container_ref TYPE REF TO data i_container_ref TYPE REF TO data
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS value_to_abap METHODS value_to_abap
IMPORTING IMPORTING
is_node TYPE zif_abapgit_ajson_types=>ty_node is_node TYPE zif_abapgit_ajson_types=>ty_node
is_node_type TYPE ty_type_cache is_node_type TYPE ty_type_cache
i_container_ref TYPE REF TO data i_container_ref TYPE REF TO data
RAISING RAISING
zcx_abapgit_ajson_error zcx_abapgit_ajson_error
@ -836,9 +715,9 @@ CLASS lcl_json_to_abap DEFINITION FINAL.
METHODS get_node_type METHODS get_node_type
IMPORTING IMPORTING
is_node TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL " Empty for root is_node TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL " Empty for root
is_parent_type TYPE ty_type_cache OPTIONAL is_parent_type TYPE ty_type_cache OPTIONAL
i_container_ref TYPE REF TO data OPTIONAL i_container_ref TYPE REF TO data OPTIONAL
RETURNING RETURNING
VALUE(rs_node_type) TYPE ty_type_cache VALUE(rs_node_type) TYPE ty_type_cache
RAISING RAISING
@ -1017,8 +896,6 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
IF is_parent_type-tab_item_buf IS NOT BOUND. " Indirect hint that table was srt/hsh, see get_node_type 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 <parent_stdtab> REFERENCE INTO lr_target_field. APPEND INITIAL LINE TO <parent_stdtab> REFERENCE INTO lr_target_field.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
ELSE.
CLEAR <tab_item>.
ENDIF. ENDIF.
WHEN lif_kind=>struct_flat OR lif_kind=>struct_deep. WHEN lif_kind=>struct_flat OR lif_kind=>struct_deep.
@ -1262,12 +1139,12 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS convert CLASS-METHODS convert
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
iv_array_index TYPE i DEFAULT 0 iv_array_index TYPE i DEFAULT 0
ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
RETURNING RETURNING
VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
@ -1275,13 +1152,13 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS insert_with_type CLASS-METHODS insert_with_type
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
iv_type TYPE zif_abapgit_ajson_types=>ty_node_type iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL
iv_array_index TYPE i DEFAULT 0 iv_array_index TYPE i DEFAULT 0
ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
RETURNING RETURNING
VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
@ -1289,17 +1166,17 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
CLASS-METHODS format_date CLASS-METHODS format_date
IMPORTING IMPORTING
iv_date TYPE d iv_date TYPE d
RETURNING RETURNING
VALUE(rv_str) TYPE string. VALUE(rv_str) TYPE string.
CLASS-METHODS format_time CLASS-METHODS format_time
IMPORTING IMPORTING
iv_time TYPE t iv_time TYPE t
RETURNING RETURNING
VALUE(rv_str) TYPE string. VALUE(rv_str) TYPE string.
CLASS-METHODS format_timestamp CLASS-METHODS format_timestamp
IMPORTING IMPORTING
iv_ts TYPE timestamp iv_ts TYPE timestamp
RETURNING RETURNING
VALUE(rv_str) TYPE string. VALUE(rv_str) TYPE string.
@ -1314,84 +1191,84 @@ CLASS lcl_abap_to_json DEFINITION FINAL.
METHODS convert_any METHODS convert_any
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
io_type TYPE REF TO cl_abap_typedescr io_type TYPE REF TO cl_abap_typedescr
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS convert_ajson METHODS convert_ajson
IMPORTING IMPORTING
io_json TYPE REF TO zif_abapgit_ajson io_json TYPE REF TO zif_abapgit_ajson
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS convert_value METHODS convert_value
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
io_type TYPE REF TO cl_abap_typedescr io_type TYPE REF TO cl_abap_typedescr
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS convert_ref METHODS convert_ref
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS convert_struc METHODS convert_struc
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
io_type TYPE REF TO cl_abap_typedescr io_type TYPE REF TO cl_abap_typedescr
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS convert_table METHODS convert_table
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
io_type TYPE REF TO cl_abap_typedescr io_type TYPE REF TO cl_abap_typedescr
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS insert_value_with_type METHODS insert_value_with_type
IMPORTING IMPORTING
iv_data TYPE any iv_data TYPE any
iv_type TYPE zif_abapgit_ajson_types=>ty_node_type iv_type TYPE zif_abapgit_ajson_types=>ty_node_type
io_type TYPE REF TO cl_abap_typedescr io_type TYPE REF TO cl_abap_typedescr
is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name
iv_index TYPE i DEFAULT 0 iv_index TYPE i DEFAULT 0
iv_item_order TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0
CHANGING CHANGING
ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
@ -1872,7 +1749,7 @@ INTERFACE lif_mutator_runner.
IMPORTING IMPORTING
it_source_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts it_source_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
EXPORTING EXPORTING
et_dest_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts et_dest_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
ENDINTERFACE. ENDINTERFACE.
@ -1886,7 +1763,7 @@ CLASS lcl_filter_runner DEFINITION FINAL.
INTERFACES lif_mutator_runner. INTERFACES lif_mutator_runner.
CLASS-METHODS new CLASS-METHODS new
IMPORTING IMPORTING
ii_filter TYPE REF TO zif_abapgit_ajson_filter ii_filter TYPE REF TO zif_abapgit_ajson_filter
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO lcl_filter_runner. VALUE(ro_instance) TYPE REF TO lcl_filter_runner.
METHODS constructor METHODS constructor
@ -1900,7 +1777,7 @@ CLASS lcl_filter_runner DEFINITION FINAL.
METHODS walk METHODS walk
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
CHANGING CHANGING
cs_parent TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL cs_parent TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL
RAISING RAISING
@ -1932,13 +1809,8 @@ CLASS lcl_filter_runner IMPLEMENTATION.
METHOD walk. METHOD walk.
DATA ls_node TYPE zif_abapgit_ajson_types=>ty_node. DATA ls_node TYPE zif_abapgit_ajson_types=>ty_node.
DATA lv_tab_key TYPE string.
IF cs_parent-type = zif_abapgit_ajson_types=>node_type-array. LOOP AT mr_source_tree->* INTO ls_node WHERE path = iv_path.
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. CASE ls_node-type.
WHEN zif_abapgit_ajson_types=>node_type-boolean OR zif_abapgit_ajson_types=>node_type-null 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. OR zif_abapgit_ajson_types=>node_type-number OR zif_abapgit_ajson_types=>node_type-string.
@ -1998,7 +1870,7 @@ CLASS lcl_mapper_runner DEFINITION FINAL.
INTERFACES lif_mutator_runner. INTERFACES lif_mutator_runner.
CLASS-METHODS new CLASS-METHODS new
IMPORTING IMPORTING
ii_mapper TYPE REF TO zif_abapgit_ajson_mapping ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
RETURNING RETURNING
VALUE(ro_instance) TYPE REF TO lcl_mapper_runner. VALUE(ro_instance) TYPE REF TO lcl_mapper_runner.
METHODS constructor METHODS constructor
@ -2112,7 +1984,7 @@ CLASS lcl_mutator_queue DEFINITION FINAL.
VALUE(ro_instance) TYPE REF TO lcl_mutator_queue. VALUE(ro_instance) TYPE REF TO lcl_mutator_queue.
METHODS add METHODS add
IMPORTING IMPORTING
ii_mutator TYPE REF TO lif_mutator_runner ii_mutator TYPE REF TO lif_mutator_runner
RETURNING RETURNING
VALUE(ro_self) TYPE REF TO lcl_mutator_queue. VALUE(ro_self) TYPE REF TO lcl_mutator_queue.

View File

@ -65,7 +65,7 @@ CLASS ltcl_parser_test DEFINITION FINAL
CLASS-METHODS sample_json CLASS-METHODS sample_json
IMPORTING IMPORTING
iv_separator TYPE string OPTIONAL iv_separator TYPE string OPTIONAL
RETURNING RETURNING
VALUE(rv_json) TYPE string. VALUE(rv_json) TYPE string.
@ -85,10 +85,6 @@ CLASS ltcl_parser_test DEFINITION FINAL
METHODS parse_date FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS parse_date FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_bare_values FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS parse_bare_values FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_error FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS parse_error FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_input_xstring FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_input_string FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_input_string_table FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS parse_input_error FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS duplicate_key FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS duplicate_key FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS non_json FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS non_json FOR TESTING RAISING zcx_abapgit_ajson_error.
@ -252,78 +248,6 @@ CLASS ltcl_parser_test IMPLEMENTATION.
exp = mo_nodes->mt_nodes ). exp = mo_nodes->mt_nodes ).
ENDMETHOD. ENDMETHOD.
METHOD parse_input_xstring.
mo_nodes->add( ' | |object | | |1' ).
mo_nodes->add( '/ |string |str |abc | |0' ).
DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt.
DATA lv_xstr TYPE xstring.
lv_xstr = '7B22737472696E67223A2022616263227D0A'.
lt_act = mo_cut->parse( lv_xstr ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = mo_nodes->mt_nodes ).
ENDMETHOD.
METHOD parse_input_string.
mo_nodes->add( ' | |object | | |1' ).
mo_nodes->add( '/ |string |str |abc | |0' ).
DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt.
DATA lv_str TYPE string.
lv_str = `{"string": "abc"}`.
lt_act = mo_cut->parse( lv_str ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = mo_nodes->mt_nodes ).
ENDMETHOD.
METHOD parse_input_string_table.
mo_nodes->add( ' | |object | | |2' ).
mo_nodes->add( '/ |string |str |abc | |0' ).
mo_nodes->add( '/ |number |num |123 | |0' ).
DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt.
DATA lt_json TYPE string_table.
INSERT `{` INTO TABLE lt_json.
INSERT `"string": "abc",` INTO TABLE lt_json.
INSERT `"number": 123` INTO TABLE lt_json.
INSERT `}` INTO TABLE lt_json.
lt_act = mo_cut->parse( lt_json ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = mo_nodes->mt_nodes ).
ENDMETHOD.
METHOD parse_input_error.
DATA lo_cut TYPE REF TO lcl_json_parser.
DATA lx TYPE REF TO zcx_abapgit_ajson_error.
DATA lv_numc TYPE n LENGTH 10.
DATA lt_hashed TYPE HASHED TABLE OF string WITH UNIQUE DEFAULT KEY.
CREATE OBJECT lo_cut.
TRY.
lo_cut->parse( lv_numc ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_not_initial( lx ).
ENDTRY.
TRY.
lo_cut->parse( lt_hashed ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_not_initial( lx ).
ENDTRY.
ENDMETHOD.
METHOD sample_json. METHOD sample_json.
rv_json = rv_json =
@ -1471,17 +1395,17 @@ CLASS ltcl_json_to_abap DEFINITION
tty_struc_sorted TYPE SORTED TABLE OF ty_struc WITH UNIQUE KEY a, tty_struc_sorted TYPE SORTED TABLE OF ty_struc WITH UNIQUE KEY a,
tty_struc_hashed TYPE HASHED TABLE OF ty_struc WITH UNIQUE KEY a, tty_struc_hashed TYPE HASHED TABLE OF ty_struc WITH UNIQUE KEY a,
BEGIN OF ty_complex, BEGIN OF ty_complex,
str TYPE string, str TYPE string,
int TYPE i, int TYPE i,
float TYPE f, float TYPE f,
bool TYPE abap_bool, bool TYPE abap_bool,
obj TYPE ty_struc, obj TYPE ty_struc,
tab TYPE tty_struc, tab TYPE tty_struc,
tab_plain TYPE string_table, tab_plain TYPE string_table,
tab_hashed TYPE tty_struc_hashed, tab_hashed TYPE tty_struc_hashed,
oref TYPE REF TO object, oref TYPE REF TO object,
date1 TYPE d, date1 TYPE d,
date2 TYPE d, date2 TYPE d,
timestamp1 TYPE timestamp, timestamp1 TYPE timestamp,
timestamp2 TYPE timestamp, timestamp2 TYPE timestamp,
timestamp3 TYPE timestamp, timestamp3 TYPE timestamp,
@ -1542,21 +1466,6 @@ CLASS ltcl_json_to_abap DEFINITION
METHODS to_abap_str_to_packed METHODS to_abap_str_to_packed
FOR TESTING FOR TESTING
RAISING cx_static_check. RAISING cx_static_check.
METHODS to_abap_compressed_stdrd
FOR TESTING
RAISING cx_static_check.
METHODS to_abap_compressed_stdrd_key
FOR TESTING
RAISING cx_static_check.
METHODS to_abap_compressed_sort
FOR TESTING
RAISING cx_static_check.
METHODS to_abap_compressed_sort_unique
FOR TESTING
RAISING cx_static_check.
METHODS to_abap_compressed_hash
FOR TESTING
RAISING cx_static_check.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_ajson DEFINITION LOCAL FRIENDS ltcl_json_to_abap. CLASS zcl_abapgit_ajson DEFINITION LOCAL FRIENDS ltcl_json_to_abap.
@ -2280,171 +2189,6 @@ CLASS ltcl_json_to_abap IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD to_abap_compressed_stdrd.
TYPES: BEGIN OF ty_foo_bar,
foo TYPE string,
bar TYPE string,
END OF ty_foo_bar.
DATA lt_foo_bar TYPE STANDARD TABLE OF ty_foo_bar.
DATA ls_foo_bar LIKE LINE OF lt_foo_bar.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
DATA lv_json TYPE string.
lv_json =
'[' &&
' {' &&
' "foo": "abc",' &&
' "bar": "123"' &&
' },' &&
' {' &&
' "foo": "cde"' &&
' }' &&
']'.
lo_ajson = zcl_abapgit_ajson=>parse( lv_json ).
lo_ajson->to_abap( IMPORTING ev_container = lt_foo_bar ).
READ TABLE lt_foo_bar WITH KEY foo = 'cde' INTO ls_foo_bar.
cl_abap_unit_assert=>assert_initial( act = ls_foo_bar-bar ).
ENDMETHOD.
METHOD to_abap_compressed_stdrd_key.
TYPES: BEGIN OF ty_foo_bar,
foo TYPE string,
bar TYPE string,
END OF ty_foo_bar.
DATA lt_foo_bar TYPE STANDARD TABLE OF ty_foo_bar WITH NON-UNIQUE KEY foo.
DATA ls_foo_bar LIKE LINE OF lt_foo_bar.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
DATA lv_json TYPE string.
lv_json =
'[' &&
' {' &&
' "foo": "abc",' &&
' "bar": "123"' &&
' },' &&
' {' &&
' "foo": "cde"' &&
' }' &&
']'.
lo_ajson = zcl_abapgit_ajson=>parse( lv_json ).
lo_ajson->to_abap( IMPORTING ev_container = lt_foo_bar ).
READ TABLE lt_foo_bar WITH KEY foo = 'cde' INTO ls_foo_bar.
cl_abap_unit_assert=>assert_initial( act = ls_foo_bar-bar ).
ENDMETHOD.
METHOD to_abap_compressed_sort.
TYPES: BEGIN OF ty_foo_bar,
foo TYPE string,
bar TYPE string,
END OF ty_foo_bar.
DATA lt_foo_bar TYPE SORTED TABLE OF ty_foo_bar WITH NON-UNIQUE KEY foo.
DATA ls_foo_bar LIKE LINE OF lt_foo_bar.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
DATA lv_json TYPE string.
lv_json =
'[' &&
' {' &&
' "foo": "abc",' &&
' "bar": "123"' &&
' },' &&
' {' &&
' "foo": "cde"' &&
' }' &&
']'.
lo_ajson = zcl_abapgit_ajson=>parse( lv_json ).
lo_ajson->to_abap( IMPORTING ev_container = lt_foo_bar ).
READ TABLE lt_foo_bar WITH KEY foo = 'cde' INTO ls_foo_bar.
cl_abap_unit_assert=>assert_initial( act = ls_foo_bar-bar ).
ENDMETHOD.
METHOD to_abap_compressed_sort_unique.
TYPES: BEGIN OF ty_foo_bar,
foo TYPE string,
bar TYPE string,
END OF ty_foo_bar.
DATA lt_foo_bar TYPE SORTED TABLE OF ty_foo_bar WITH UNIQUE KEY foo.
DATA ls_foo_bar LIKE LINE OF lt_foo_bar.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
DATA lv_json TYPE string.
lv_json =
'[' &&
' {' &&
' "foo": "abc",' &&
' "bar": "123"' &&
' },' &&
' {' &&
' "foo": "cde"' &&
' }' &&
']'.
lo_ajson = zcl_abapgit_ajson=>parse( lv_json ).
lo_ajson->to_abap( IMPORTING ev_container = lt_foo_bar ).
READ TABLE lt_foo_bar WITH KEY foo = 'cde' INTO ls_foo_bar.
cl_abap_unit_assert=>assert_initial( act = ls_foo_bar-bar ).
ENDMETHOD.
METHOD to_abap_compressed_hash.
TYPES: BEGIN OF ty_foo_bar,
foo TYPE string,
bar TYPE string,
END OF ty_foo_bar.
DATA lt_foo_bar TYPE HASHED TABLE OF ty_foo_bar WITH UNIQUE KEY foo.
DATA ls_foo_bar LIKE LINE OF lt_foo_bar.
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
DATA lv_json TYPE string.
lv_json =
'[' &&
' {' &&
' "foo": "abc",' &&
' "bar": "123"' &&
' },' &&
' {' &&
' "foo": "cde"' &&
' }' &&
']'.
lo_ajson = zcl_abapgit_ajson=>parse( lv_json ).
lo_ajson->to_abap( IMPORTING ev_container = lt_foo_bar ).
READ TABLE lt_foo_bar WITH KEY foo = 'cde' INTO ls_foo_bar.
cl_abap_unit_assert=>assert_initial( act = ls_foo_bar-bar ).
ENDMETHOD.
ENDCLASS. ENDCLASS.
********************************************************************** **********************************************************************
@ -2477,7 +2221,6 @@ CLASS ltcl_writer_test DEFINITION FINAL
METHODS set_bool_tab FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS set_bool_tab FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_str FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS set_str FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_int FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS set_int FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_number FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_date FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS set_date FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS set_timestamp FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS set_timestamp FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS read_only FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS read_only FOR TESTING RAISING zcx_abapgit_ajson_error.
@ -2493,9 +2236,9 @@ CLASS ltcl_writer_test DEFINITION FINAL
METHODS set_with_type_slice METHODS set_with_type_slice
IMPORTING IMPORTING
io_json_in TYPE REF TO zcl_abapgit_ajson io_json_in TYPE REF TO zcl_abapgit_ajson
io_json_out TYPE REF TO zif_abapgit_ajson io_json_out TYPE REF TO zif_abapgit_ajson
iv_path TYPE string iv_path TYPE string
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
@ -3318,27 +3061,6 @@ CLASS ltcl_writer_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_number.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_json TYPE REF TO zif_abapgit_ajson.
DATA lv_p TYPE p LENGTH 5 DECIMALS 2 VALUE '123.45'.
li_json = zcl_abapgit_ajson=>create_empty( ).
CREATE OBJECT lo_nodes_exp.
lo_nodes_exp->add( ' | |object | ||1' ).
lo_nodes_exp->add( '/ |a |num |123.45 ||0' ).
li_json->set(
iv_path = '/a'
iv_val = lv_p ).
cl_abap_unit_assert=>assert_equals(
act = li_json->mt_json_tree
exp = lo_nodes_exp->sorted( ) ).
ENDMETHOD.
METHOD set_date. METHOD set_date.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson. DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
@ -3822,22 +3544,22 @@ CLASS ltcl_integrated DEFINITION
col TYPE i, col TYPE i,
END OF ty_loc, END OF ty_loc,
BEGIN OF ty_issue, BEGIN OF ty_issue,
message TYPE string, message TYPE string,
key TYPE string, key TYPE string,
filename TYPE string, filename TYPE string,
start TYPE ty_loc, start TYPE ty_loc,
end TYPE ty_loc, end TYPE ty_loc,
END OF ty_issue, END OF ty_issue,
tt_issues TYPE STANDARD TABLE OF ty_issue WITH KEY message key, tt_issues TYPE STANDARD TABLE OF ty_issue WITH KEY message key,
BEGIN OF ty_target, BEGIN OF ty_target,
string TYPE string, string TYPE string,
number TYPE i, number TYPE i,
float TYPE f, float TYPE f,
boolean TYPE abap_bool, boolean TYPE abap_bool,
false TYPE abap_bool, false TYPE abap_bool,
null TYPE string, null TYPE string,
date TYPE string, " ??? TODO date TYPE string, " ??? TODO
issues TYPE tt_issues, issues TYPE tt_issues,
END OF ty_target. END OF ty_target.
METHODS reader FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS reader FOR TESTING RAISING zcx_abapgit_ajson_error.
@ -4686,47 +4408,15 @@ CLASS ltcl_filter_test IMPLEMENTATION.
lo_json->push( lo_json->push(
iv_path = '/' iv_path = '/'
iv_val = 'b' ). iv_val = 'b' ).
lo_json->push(
iv_path = '/'
iv_val = 'c' ).
lo_json->push(
iv_path = '/'
iv_val = 'd' ).
lo_json->push(
iv_path = '/'
iv_val = 'e' ).
lo_json->push(
iv_path = '/'
iv_val = 'f' ).
lo_json->push(
iv_path = '/'
iv_val = 'g' ).
lo_json->push(
iv_path = '/'
iv_val = 'h' ).
lo_json->push(
iv_path = '/'
iv_val = 'i' ).
lo_json->push(
iv_path = '/'
iv_val = 'j' ).
lo_json_filtered = zcl_abapgit_ajson=>create_from( lo_json_filtered = zcl_abapgit_ajson=>create_from(
ii_source_json = lo_json ii_source_json = lo_json
ii_filter = me ). ii_filter = me ).
CREATE OBJECT lo_nodes_exp. CREATE OBJECT lo_nodes_exp.
lo_nodes_exp->add( ' | |array | | |10' ). lo_nodes_exp->add( ' | |array | | |2' ).
lo_nodes_exp->add( '/ |1 |str |a |1|0' ). lo_nodes_exp->add( '/ |1 |str |a |1|0' ).
lo_nodes_exp->add( '/ |2 |str |b |2|0' ). lo_nodes_exp->add( '/ |2 |str |b |2|0' ).
lo_nodes_exp->add( '/ |3 |str |c |3|0' ).
lo_nodes_exp->add( '/ |4 |str |d |4|0' ).
lo_nodes_exp->add( '/ |5 |str |e |5|0' ).
lo_nodes_exp->add( '/ |6 |str |f |6|0' ).
lo_nodes_exp->add( '/ |7 |str |g |7|0' ).
lo_nodes_exp->add( '/ |8 |str |h |8|0' ).
lo_nodes_exp->add( '/ |9 |str |i |9|0' ).
lo_nodes_exp->add( '/ |10 |str |j |10|0' ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
act = lo_json_filtered->mt_json_tree act = lo_json_filtered->mt_json_tree

View File

@ -12,16 +12,16 @@ CLASS zcl_abapgit_ajson_filter_lib DEFINITION
zcx_abapgit_ajson_error . zcx_abapgit_ajson_error .
CLASS-METHODS create_path_filter CLASS-METHODS create_path_filter
IMPORTING IMPORTING
!it_skip_paths TYPE string_table OPTIONAL !it_skip_paths TYPE string_table OPTIONAL
!iv_skip_paths TYPE string OPTIONAL !iv_skip_paths TYPE string OPTIONAL
!iv_pattern_search TYPE abap_bool DEFAULT abap_false !iv_pattern_search TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter
RAISING RAISING
zcx_abapgit_ajson_error . zcx_abapgit_ajson_error .
CLASS-METHODS create_and_filter CLASS-METHODS create_and_filter
IMPORTING IMPORTING
!it_filters TYPE zif_abapgit_ajson_filter=>ty_filter_tab !it_filters TYPE zif_abapgit_ajson_filter=>ty_filter_tab
RETURNING RETURNING
VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter VALUE(ri_filter) TYPE REF TO zif_abapgit_ajson_filter
RAISING RAISING

View File

@ -27,8 +27,8 @@ CLASS lcl_paths_filter DEFINITION FINAL.
INTERFACES zif_abapgit_ajson_filter. INTERFACES zif_abapgit_ajson_filter.
METHODS constructor METHODS constructor
IMPORTING IMPORTING
it_skip_paths TYPE string_table OPTIONAL it_skip_paths TYPE string_table OPTIONAL
iv_skip_paths TYPE string OPTIONAL iv_skip_paths TYPE string OPTIONAL
iv_pattern_search TYPE abap_bool iv_pattern_search TYPE abap_bool
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
@ -72,7 +72,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
ENDIF. ENDIF.
LOOP AT it_skip_paths INTO lv_s. LOOP AT it_skip_paths INTO lv_s.
lv_s = condense( lv_s ). lv_s = to_lower( lv_s ).
APPEND lv_s TO lt_tab. APPEND lv_s TO lt_tab.
ENDLOOP. ENDLOOP.
@ -83,7 +83,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
DELETE lt_tab INDEX sy-tabix. DELETE lt_tab INDEX sy-tabix.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
<s> = condense( <s> ). <s> = condense( to_lower( <s> ) ).
ENDLOOP. ENDLOOP.
ENDIF. ENDIF.

View File

@ -10,7 +10,6 @@ CLASS ltcl_filters_test DEFINITION FINAL
METHODS path_filter_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS mixed_case_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS. ENDCLASS.
@ -228,36 +227,4 @@ CLASS ltcl_filters_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD mixed_case_filter.
DATA li_json TYPE REF TO zif_abapgit_ajson.
DATA li_json_filtered TYPE REF TO zif_abapgit_ajson.
li_json = zcl_abapgit_ajson=>create_empty( ).
li_json->set(
iv_path = '/a'
iv_val = '1' ).
li_json->set(
iv_path = '/bB'
iv_val = '2' ).
li_json->set(
iv_path = '/CC'
iv_val = '3' ).
li_json->set(
iv_path = '/cc'
iv_val = '4' ).
li_json->set(
iv_path = '/d'
iv_val = 5 ).
li_json_filtered = zcl_abapgit_ajson=>create_from(
ii_source_json = li_json
ii_filter = zcl_abapgit_ajson_filter_lib=>create_path_filter( iv_skip_paths = '/bB,/CC' ) ).
cl_abap_unit_assert=>assert_equals(
act = li_json_filtered->stringify( )
exp = '{"a":"1","cc":"4","d":5}' ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -40,17 +40,17 @@ CLASS zcl_abapgit_ajson_mapping DEFINITION
CLASS-METHODS create_rename CLASS-METHODS create_rename
IMPORTING IMPORTING
it_rename_map TYPE zif_abapgit_ajson_mapping=>tty_rename_map it_rename_map TYPE zif_abapgit_ajson_mapping=>tty_rename_map
iv_rename_by TYPE i DEFAULT rename_by-attr_name iv_rename_by TYPE i DEFAULT rename_by-attr_name
RETURNING RETURNING
VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
CLASS-METHODS create_compound_mapper CLASS-METHODS create_compound_mapper
IMPORTING IMPORTING
ii_mapper1 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL ii_mapper1 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
ii_mapper2 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 ii_mapper3 TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL
it_more TYPE zif_abapgit_ajson_mapping=>ty_table_of OPTIONAL it_more TYPE zif_abapgit_ajson_mapping=>ty_table_of OPTIONAL
RETURNING RETURNING
VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
@ -62,7 +62,7 @@ CLASS zcl_abapgit_ajson_mapping DEFINITION
IMPORTING IMPORTING
iv_first_json_upper TYPE abap_bool DEFAULT abap_false iv_first_json_upper TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping. VALUE(ri_mapping) TYPE REF TO zif_abapgit_ajson_mapping.
PROTECTED SECTION. PROTECTED SECTION.

View File

@ -22,7 +22,7 @@ CLASS lcl_rename DEFINITION.
METHODS constructor METHODS constructor
IMPORTING IMPORTING
it_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map it_rename_map TYPE zif_abapgit_ajson_mapping~tty_rename_map
iv_rename_by TYPE i. iv_rename_by TYPE i.
PROTECTED SECTION. PROTECTED SECTION.

View File

@ -358,7 +358,6 @@ CLASS ltcl_fields DEFINITION FINAL FOR TESTING
to_json_without_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_json_without_path FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json_with_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_json_with_path FOR TESTING RAISING zcx_abapgit_ajson_error,
to_abap FOR TESTING RAISING zcx_abapgit_ajson_error, to_abap FOR TESTING RAISING zcx_abapgit_ajson_error,
to_abap_with_slice FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json IMPORTING iv_path TYPE string RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_ajson_error. to_json IMPORTING iv_path TYPE string RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_ajson_error.
@ -404,33 +403,6 @@ CLASS ltcl_fields IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD to_abap_with_slice.
DATA: BEGIN OF ls_act,
y TYPE i,
END OF ls_act.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
DATA lt_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields.
DATA ls_mapping_field LIKE LINE OF lt_mapping_fields.
CLEAR ls_mapping_field.
ls_mapping_field-abap = 'Y'.
ls_mapping_field-json = 'c'.
INSERT ls_mapping_field INTO TABLE lt_mapping_fields.
lo_cut = zcl_abapgit_ajson=>parse( iv_json = '{"a":1,"b":{"c":2},"d":{"e":3}}'
ii_custom_mapping = zcl_abapgit_ajson_mapping=>create_field_mapping( lt_mapping_fields )
)->slice( `/b` ).
lo_cut->to_abap( IMPORTING ev_container = ls_act ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-y
exp = 2 ).
ENDMETHOD.
METHOD to_json_without_path. METHOD to_json_without_path.

View File

@ -41,10 +41,10 @@ CLASS zcl_abapgit_ajson_utilities DEFINITION
zcx_abapgit_ajson_error . zcx_abapgit_ajson_error .
METHODS is_equal METHODS is_equal
IMPORTING IMPORTING
!iv_json_a TYPE string OPTIONAL !iv_json_a TYPE string OPTIONAL
!iv_json_b TYPE string OPTIONAL !iv_json_b TYPE string OPTIONAL
!ii_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL !ii_json_a TYPE REF TO zif_abapgit_ajson OPTIONAL
!ii_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL !ii_json_b TYPE REF TO zif_abapgit_ajson OPTIONAL
RETURNING RETURNING
VALUE(rv_yes) TYPE abap_bool VALUE(rv_yes) TYPE abap_bool
RAISING RAISING

View File

@ -1,15 +1,15 @@
INTERFACE zif_abapgit_ajson INTERFACE zif_abapgit_ajson
PUBLIC. PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.1.11'. "#EC NOTEXT CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT
TYPES: TYPES:
BEGIN OF ty_opts, BEGIN OF ty_opts,
read_only TYPE abap_bool, read_only TYPE abap_bool,
keep_item_order TYPE abap_bool, keep_item_order TYPE abap_bool,
format_datetime TYPE abap_bool, format_datetime TYPE abap_bool,
to_abap_corresponding_only TYPE abap_bool, to_abap_corresponding_only TYPE abap_bool,
END OF ty_opts. END OF ty_opts.
@ -26,14 +26,14 @@ INTERFACE zif_abapgit_ajson
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS filter METHODS filter
IMPORTING IMPORTING
ii_filter TYPE REF TO zif_abapgit_ajson_filter ii_filter TYPE REF TO zif_abapgit_ajson_filter
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS map METHODS map
IMPORTING IMPORTING
ii_mapper TYPE REF TO zif_abapgit_ajson_mapping ii_mapper TYPE REF TO zif_abapgit_ajson_mapping
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -47,12 +47,12 @@ INTERFACE zif_abapgit_ajson
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS format_datetime METHODS format_datetime
IMPORTING IMPORTING
iv_use_iso TYPE abap_bool DEFAULT abap_true iv_use_iso TYPE abap_bool DEFAULT abap_true
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS to_abap_corresponding_only METHODS to_abap_corresponding_only
IMPORTING IMPORTING
iv_enable TYPE abap_bool DEFAULT abap_true iv_enable TYPE abap_bool DEFAULT abap_true
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS opts METHODS opts
@ -67,67 +67,67 @@ INTERFACE zif_abapgit_ajson
METHODS exists METHODS exists
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_exists) TYPE abap_bool. VALUE(rv_exists) TYPE abap_bool.
METHODS members METHODS members
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rt_members) TYPE string_table. VALUE(rt_members) TYPE string_table.
METHODS get METHODS get
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE string. VALUE(rv_value) TYPE string.
METHODS get_node_type METHODS get_node_type
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_node_type) TYPE zif_abapgit_ajson_types=>ty_node_type. VALUE(rv_node_type) TYPE zif_abapgit_ajson_types=>ty_node_type.
METHODS get_boolean METHODS get_boolean
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE abap_bool. VALUE(rv_value) TYPE abap_bool.
METHODS get_integer METHODS get_integer
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE i. VALUE(rv_value) TYPE i.
METHODS get_number METHODS get_number
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE f. VALUE(rv_value) TYPE f.
METHODS get_date METHODS get_date
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE d. VALUE(rv_value) TYPE d.
METHODS get_timestamp METHODS get_timestamp
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE timestamp. VALUE(rv_value) TYPE timestamp.
METHODS get_string METHODS get_string
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rv_value) TYPE string. VALUE(rv_value) TYPE string.
METHODS slice METHODS slice
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson. VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
@ -135,13 +135,13 @@ INTERFACE zif_abapgit_ajson
IMPORTING IMPORTING
iv_corresponding TYPE abap_bool DEFAULT abap_false iv_corresponding TYPE abap_bool DEFAULT abap_false
EXPORTING EXPORTING
ev_container TYPE any ev_container TYPE any
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS array_to_string_table METHODS array_to_string_table
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(rt_string_table) TYPE string_table VALUE(rt_string_table) TYPE string_table
RAISING RAISING
@ -155,18 +155,18 @@ INTERFACE zif_abapgit_ajson
METHODS set METHODS set
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE any iv_val TYPE any
iv_ignore_empty TYPE abap_bool DEFAULT abap_true 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 RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
zcx_abapgit_ajson_error. zcx_abapgit_ajson_error.
METHODS setx METHODS setx
IMPORTING IMPORTING
iv_param TYPE string iv_param TYPE string
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -174,8 +174,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_boolean METHODS set_boolean
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE any iv_val TYPE any
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -183,8 +183,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_string METHODS set_string
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE clike iv_val TYPE clike
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -192,8 +192,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_integer METHODS set_integer
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE i iv_val TYPE i
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -201,8 +201,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_date METHODS set_date
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE d iv_val TYPE d
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -210,8 +210,8 @@ INTERFACE zif_abapgit_ajson
METHODS set_timestamp METHODS set_timestamp
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE timestamp iv_val TYPE timestamp
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -219,7 +219,7 @@ INTERFACE zif_abapgit_ajson
METHODS set_null METHODS set_null
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -227,7 +227,7 @@ INTERFACE zif_abapgit_ajson
METHODS delete METHODS delete
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -235,8 +235,8 @@ INTERFACE zif_abapgit_ajson
METHODS touch_array METHODS touch_array
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_clear TYPE abap_bool DEFAULT abap_false iv_clear TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -244,8 +244,8 @@ INTERFACE zif_abapgit_ajson
METHODS push METHODS push
IMPORTING IMPORTING
iv_path TYPE string iv_path TYPE string
iv_val TYPE any iv_val TYPE any
RETURNING RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING RAISING
@ -253,7 +253,7 @@ INTERFACE zif_abapgit_ajson
METHODS stringify METHODS stringify
IMPORTING IMPORTING
iv_indent TYPE i DEFAULT 0 iv_indent TYPE i DEFAULT 0
RETURNING RETURNING
VALUE(rv_json) TYPE string VALUE(rv_json) TYPE string
RAISING RAISING

View File

@ -13,8 +13,8 @@ INTERFACE zif_abapgit_ajson_filter
METHODS keep_node METHODS keep_node
IMPORTING IMPORTING
is_node TYPE zif_abapgit_ajson_types=>ty_node is_node TYPE zif_abapgit_ajson_types=>ty_node
iv_visit TYPE ty_visit_type DEFAULT visit_type-value iv_visit TYPE ty_visit_type DEFAULT visit_type-value
RETURNING RETURNING
VALUE(rv_keep) TYPE abap_bool VALUE(rv_keep) TYPE abap_bool
RAISING RAISING

View File

@ -13,7 +13,7 @@ INTERFACE zif_abapgit_ajson_mapping
TYPES: TYPES:
BEGIN OF ty_rename, BEGIN OF ty_rename,
from TYPE string, from TYPE string,
to TYPE string, to TYPE string,
END OF ty_rename, END OF ty_rename,
tty_rename_map TYPE STANDARD TABLE OF ty_rename tty_rename_map TYPE STANDARD TABLE OF ty_rename
WITH UNIQUE SORTED KEY by_name COMPONENTS from. WITH UNIQUE SORTED KEY by_name COMPONENTS from.

View File

@ -16,12 +16,12 @@ INTERFACE zif_abapgit_ajson_types
TYPES: TYPES:
BEGIN OF ty_node, BEGIN OF ty_node,
path TYPE string, path TYPE string,
name TYPE string, name TYPE string,
type TYPE ty_node_type, type TYPE ty_node_type,
value TYPE string, value TYPE string,
index TYPE i, index TYPE i,
order TYPE i, order TYPE i,
children TYPE i, children TYPE i,
END OF ty_node. END OF ty_node.
TYPES: TYPES:

View File

@ -46,30 +46,20 @@ CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION.
METHOD initialize_registry_table. METHOD initialize_registry_table.
register( 'APLO' ).
register( 'BGQC' ).
register( 'CDBO' ). register( 'CDBO' ).
register( 'CHKC' ). register( 'CHKC' ).
register( 'CHKO' ). register( 'CHKO' ).
register( 'CHKV' ). register( 'CHKV' ).
register( 'COTA' ).
register( 'DRTY' ). register( 'DRTY' ).
register( 'DTEB' ). register( 'DTEB' ).
register( 'DSFI' ).
register( 'DRAS' ).
register( 'DSFD' ).
register( 'EVTB' ). register( 'EVTB' ).
register( 'EEEC' ). register( 'EEEC' ).
register( 'GSMP' ). register( 'GSMP' ).
register( iv_obj_type = 'INTF' register( iv_obj_type = 'INTF'
iv_experimental = abap_true ). iv_experimental = abap_true ).
register( 'SAJT' ).
register( 'SAJC' ).
register( 'SMBC' ). register( 'SMBC' ).
register( 'SWCR' ).
register( 'NONT' ). register( 'NONT' ).
register( 'RONT' ). register( 'RONT' ).
register( 'UIAD' ).
register( 'UIPG' ). register( 'UIPG' ).
register( 'UIST' ). register( 'UIST' ).
ENDMETHOD. ENDMETHOD.

View File

@ -18,7 +18,7 @@ CLASS zcl_abapgit_json_handler DEFINITION
mappings TYPE ty_json_abap_mappings, mappings TYPE ty_json_abap_mappings,
END OF ty_enum_mapping . END OF ty_enum_mapping .
TYPES: TYPES:
ty_enum_mappings TYPE STANDARD TABLE OF ty_enum_mapping WITH DEFAULT KEY . ty_enum_mappings TYPE TABLE OF ty_enum_mapping WITH DEFAULT KEY .
TYPES: TYPES:
BEGIN OF ty_path_value_pair, BEGIN OF ty_path_value_pair,
path TYPE string, path TYPE string,

View File

@ -1,24 +0,0 @@
CLASS zcl_abapgit_object_aplo DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by
REDEFINITION .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_APLO IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
CLEAR rv_user.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_APLO</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - APLO - Application Log Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,56 +0,0 @@
CLASS zcl_abapgit_object_bgqc DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff FINAL
CREATE PUBLIC.
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION.
PRIVATE SECTION.
CONSTANTS c_bgqc_name TYPE string VALUE 'BGQCNAME'.
CONSTANTS c_bgqc_wbi_p TYPE string VALUE 'CL_BGQC_WBI_P'.
CONSTANTS c_select_changed_by TYPE string VALUE 'IF_BGQC_WBI_P~SELECT_CHANGED_BY'.
ENDCLASS.
CLASS zcl_abapgit_object_bgqc IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA lo_bgqc_wbi_p TYPE REF TO object.
DATA lv_ref_bgqc_name TYPE REF TO data.
DATA lv_changed_by TYPE syuname.
DATA lv_subrc TYPE sy-subrc.
DATA lx_root TYPE REF TO cx_root.
FIELD-SYMBOLS: <lv_ref_bgqc_name> TYPE any.
TRY.
CREATE DATA lv_ref_bgqc_name TYPE (c_bgqc_name).
ASSIGN lv_ref_bgqc_name->* TO <lv_ref_bgqc_name>.
ASSERT sy-subrc = 0.
me->ms_item-obj_name = <lv_ref_bgqc_name>.
CREATE OBJECT lo_bgqc_wbi_p TYPE (c_bgqc_wbi_p).
CALL METHOD lo_bgqc_wbi_p->(c_select_changed_by)
EXPORTING
iv_bgqc_name = <lv_ref_bgqc_name>
IMPORTING
ev_changed_by = lv_changed_by
ev_subrc = lv_subrc.
IF lv_subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
rv_user = lv_changed_by.
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_BGQC</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - BGQC - Background Processing Context</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -7,34 +7,29 @@ CLASS zcl_abapgit_object_cdbo DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
METHODS constructor METHODS constructor
IMPORTING IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item !is_item TYPE zif_abapgit_definitions=>ty_item
!iv_language TYPE spras !iv_language TYPE spras
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL RAISING
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL zcx_abapgit_exception .
RAISING
zcx_abapgit_exception.
METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS zif_abapgit_object~changed_by
REDEFINITION .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS c_table_name TYPE tabname VALUE 'CDB_OBJH' ##NO_TEXT. CONSTANTS c_table_name TYPE tabname VALUE 'CDB_OBJH' ##NO_TEXT.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_cdbo IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_CDBO IMPLEMENTATION.
METHOD constructor. METHOD constructor.
super->constructor( is_item = is_item super->constructor( is_item = is_item
iv_language = iv_language iv_language = iv_language ).
io_files = io_files
io_i18n_params = io_i18n_params ).
ENDMETHOD. ENDMETHOD.

View File

@ -30,7 +30,7 @@ CLASS zcl_abapgit_object_common_aff DEFINITION
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_type_not_supported. zcx_abapgit_exception.
PROTECTED SECTION. PROTECTED SECTION.
TYPES: BEGIN OF ty_extension_mapper_pair, TYPES: BEGIN OF ty_extension_mapper_pair,
@ -55,9 +55,7 @@ CLASS zcl_abapgit_object_common_aff DEFINITION
METHODS create_aff_setting_deserialize FINAL METHODS create_aff_setting_deserialize FINAL
RETURNING RETURNING
VALUE(ro_settings_deserialize) TYPE REF TO object VALUE(ro_settings_deserialize) TYPE REF TO object.
RAISING
zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
METHODS is_file_empty METHODS is_file_empty
@ -106,35 +104,12 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
ENDTRY. ENDTRY.
IF lv_is_supported IS INITIAL. IF lv_is_supported IS INITIAL.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD create_aff_setting_deserialize.
IF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version AND
ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
TRY.
CREATE OBJECT ro_settings_deserialize TYPE ('CL_AFF_SETTINGS_DESERIALIZE')
EXPORTING
version = 'A'
language = mv_language
user = sy-uname
abap_language_version = ms_item-abap_language_version.
CATCH cx_root.
zcx_abapgit_exception=>raise( |System does not supported ABAP language version for AFF| ).
ENDTRY.
ELSE.
CREATE OBJECT ro_settings_deserialize TYPE ('CL_AFF_SETTINGS_DESERIALIZE')
EXPORTING
version = 'A'
language = mv_language
user = sy-uname.
ENDIF.
ENDMETHOD.
METHOD get_additional_extensions. METHOD get_additional_extensions.
RETURN. RETURN.
ENDMETHOD. ENDMETHOD.
@ -437,6 +412,25 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD create_aff_setting_deserialize.
IF ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_any_abap_language_version AND
ms_item-abap_language_version <> zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
CREATE OBJECT ro_settings_deserialize TYPE ('CL_AFF_SETTINGS_DESERIALIZE')
EXPORTING
version = 'A'
language = mv_language
user = sy-uname
abap_language_version = ms_item-abap_language_version.
ELSE.
CREATE OBJECT ro_settings_deserialize TYPE ('CL_AFF_SETTINGS_DESERIALIZE')
EXPORTING
version = 'A'
language = mv_language
user = sy-uname.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lr_intf_aff_obj TYPE REF TO data, DATA: lr_intf_aff_obj TYPE REF TO data,
lo_object_handler TYPE REF TO object, lo_object_handler TYPE REF TO object,

View File

@ -226,41 +226,34 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
is_item = ls_item is_item = ls_item
iv_language = 'E'. iv_language = 'E'.
TRY. lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ).
lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ). CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION')
RECEIVING
result = lv_act_setting_abap_lv.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected ABAP language version in settings'
act = lv_act_setting_abap_lv
exp = iv_exp_setting_abap_lv ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION') CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_VERSION')
RECEIVING RECEIVING
result = lv_act_setting_abap_lv. result = lv_act_setting_version.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected ABAP language version in settings' cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Version in settings'
act = lv_act_setting_abap_lv act = lv_act_setting_version
exp = iv_exp_setting_abap_lv ). exp = 'A' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_VERSION') CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_LANGUAGE')
RECEIVING RECEIVING
result = lv_act_setting_version. result = lv_act_setting_language.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Version in settings' cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Language in settings'
act = lv_act_setting_version act = lv_act_setting_language
exp = 'A' ). exp = 'E' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_LANGUAGE') CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_USER')
RECEIVING RECEIVING
result = lv_act_setting_language. result = lv_act_setting_user.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Language in settings' cl_abap_unit_assert=>assert_equals( msg = 'Unexpected User in settings'
act = lv_act_setting_language act = lv_act_setting_user
exp = 'E' ). exp = sy-uname ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_USER')
RECEIVING
result = lv_act_setting_user.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected User in settings'
act = lv_act_setting_user
exp = sy-uname ).
CATCH cx_root.
" System doesn't support AFF with ABAP language version
RETURN.
ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -1,46 +0,0 @@
CLASS zcl_abapgit_object_cota DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS zif_abapgit_object~delete REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_cota IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA lx_error TYPE REF TO cx_root.
TRY.
SELECT SINGLE changedby FROM ('sapcontargethead') INTO rv_user
WHERE id = ms_item-obj_name AND version = 'I'.
IF rv_user IS INITIAL.
SELECT SINGLE changedby FROM ('sapcontargethead') INTO rv_user
WHERE id = ms_item-obj_name AND version = 'A'.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA lx_error TYPE REF TO cx_root.
DATA lv_cota_name TYPE c LENGTH 30.
TRY.
lv_cota_name = ms_item-obj_name.
CALL METHOD ('CL_COTA_FACTORY')=>('DELETE_COTA')
EXPORTING
cota_name = lv_cota_name
korrnum = iv_transport.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_COTA</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - COTA - Communication Target</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,68 +0,0 @@
CLASS zcl_abapgit_object_dras DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION.
PROTECTED SECTION.
METHODS get_additional_extensions REDEFINITION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_dras IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lo_dras_handler TYPE REF TO object,
lo_dras_source_container TYPE REF TO object,
lv_object_key TYPE seu_objkey,
lv_exists TYPE abap_bool,
lx_error TYPE REF TO cx_root.
TRY.
lv_object_key = ms_item-obj_name.
CALL METHOD ('CL_DRAS_AFF_OBJECT_HANDLER')=>('GET_DDIC_HANDLER')
EXPORTING
object_key = lv_object_key
RECEIVING
handler = lo_dras_handler.
CALL METHOD lo_dras_handler->('IF_DD_DRAS_WB_HANDLER~CHECK_EXISTENCE')
EXPORTING
iv_as4local = 'A'
RECEIVING
rv_exists = lv_exists.
IF lv_exists = abap_true.
CALL METHOD lo_dras_handler->('IF_DD_DRAS_WB_HANDLER~GET_SOURCE_CONTAINER')
EXPORTING
iv_as4local = 'A'
RECEIVING
ro_result = lo_dras_source_container.
CALL METHOD lo_dras_source_container->('IF_DD_DRAS_SOURCE_CONTAINER~GET_AS4USER')
RECEIVING
rv_as4user = rv_user.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
ENDMETHOD.
METHOD get_additional_extensions.
DATA ls_additional_extension LIKE LINE OF rv_additional_extensions.
ls_additional_extension-extension = 'acds'.
CALL METHOD ('CL_CDS_AFF_FILE_NAME_MAPPER')=>for_cds
RECEIVING
result = ls_additional_extension-file_name_mapper.
APPEND ls_additional_extension TO rv_additional_extensions.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_DRAS</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DRAS - CDS Aspect</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,69 +0,0 @@
CLASS zcl_abapgit_object_dsfd DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION.
PROTECTED SECTION.
METHODS get_additional_extensions REDEFINITION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_dsfd IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lo_dsfd_handler TYPE REF TO object,
lo_dsfd_source_container TYPE REF TO object,
lv_object_key TYPE seu_objkey,
lv_exists TYPE abap_bool,
lx_error TYPE REF TO cx_root.
TRY.
lv_object_key = ms_item-obj_name.
CALL METHOD ('CL_DSFD_AFF_OBJECT_HANDLER')=>('GET_DDIC_HANDLER')
EXPORTING
object_key = lv_object_key
RECEIVING
handler = lo_dsfd_handler.
CALL METHOD lo_dsfd_handler->('IF_DD_DSFD_WB_HANDLER~CHECK_EXISTENCE')
EXPORTING
iv_as4local = 'A'
RECEIVING
rv_exists = lv_exists.
IF lv_exists = abap_true.
CALL METHOD lo_dsfd_handler->('IF_DD_DSFD_WB_HANDLER~GET_SOURCE_CONTAINER')
EXPORTING
iv_as4local = 'A'
RECEIVING
ro_result = lo_dsfd_source_container.
CALL METHOD lo_dsfd_source_container->('IF_DD_DSFD_CONTAINER_SRC~GET_AS4USER')
RECEIVING
rv_as4user = rv_user.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
ENDMETHOD.
METHOD get_additional_extensions.
DATA ls_additional_extension LIKE LINE OF rv_additional_extensions.
ls_additional_extension-extension = 'acds'.
CALL METHOD ('CL_CDS_AFF_FILE_NAME_MAPPER')=>for_cds
RECEIVING
result = ls_additional_extension-file_name_mapper.
APPEND ls_additional_extension TO rv_additional_extensions.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_DSFD</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DSFD - CDS Scalar Function Definition</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,64 +0,0 @@
CLASS zcl_abapgit_object_dsfi DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_dsfi IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lo_dsfi_handler TYPE REF TO object,
lo_dsfi_source_container TYPE REF TO object,
lv_object_key TYPE seu_objkey,
lv_exists TYPE abap_bool,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lv_active> TYPE any.
TRY.
lv_object_key = ms_item-obj_name.
CALL METHOD ('CL_DSFI_AFF_OBJECT_HANDLER')=>('GET_DDIC_HANDLER')
EXPORTING
object_key = lv_object_key
RECEIVING
handler = lo_dsfi_handler.
ASSIGN ('CE_DD_DSFI_AS4LOCAL=>EN_STATE-ACTIVE')
TO <lv_active>.
IF sy-subrc = 0.
CALL METHOD lo_dsfi_handler->('IF_DD_DSFI_WB_HANDLER~CHECK_EXISTENCE')
EXPORTING
iv_as4local = <lv_active>
RECEIVING
rv_exists = lv_exists.
IF lv_exists = abap_true.
CALL METHOD lo_dsfi_handler->('IF_DD_DSFI_WB_HANDLER~GET_SOURCE_CONTAINER')
EXPORTING
iv_as4local = <lv_active>
RECEIVING
ro_result = lo_dsfi_source_container.
CALL METHOD lo_dsfi_source_container->('IF_DD_DSFI_SRC_CONTAINER~GET_AS4USER')
RECEIVING
rv_result = rv_user.
ENDIF.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_DSFI</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DSFI - CDS Scalar Function Implementation</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,38 +0,0 @@
CLASS zcl_abapgit_object_sajc DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by
REDEFINITION .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_SAJC IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
CONSTANTS lc_table_name TYPE tabname VALUE 'APJ_W_JCE_ROOT'.
SELECT SINGLE lst_ch_user_acct
FROM (lc_table_name)
INTO rv_user
WHERE job_catalog_entry_name = ms_item-obj_name
AND job_catalog_entry_version = 'I'.
IF rv_user IS INITIAL.
SELECT SINGLE lst_ch_user_acct
FROM (lc_table_name)
INTO rv_user
WHERE job_catalog_entry_name = ms_item-obj_name
AND job_catalog_entry_version = 'A'.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_SAJC</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - SAJC - Application Job Catalog Entry</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,39 +0,0 @@
CLASS zcl_abapgit_object_sajt DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by
REDEFINITION .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_SAJT IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
CONSTANTS lc_table_name TYPE tabname VALUE 'APJ_W_JT_ROOT'.
SELECT SINGLE lst_ch_user_acct
FROM (lc_table_name)
INTO rv_user
WHERE job_template_name = ms_item-obj_name
AND job_template_version = 'I'.
IF rv_user IS INITIAL.
SELECT SINGLE lst_ch_user_acct
FROM (lc_table_name)
INTO rv_user
WHERE job_template_name = ms_item-obj_name
AND job_template_version = 'A'.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_SAJT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - SAJT - Application Job Template</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -6,44 +6,13 @@ CLASS zcl_abapgit_object_smbc DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~changed_by REDEFINITION.
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
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_smbc IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION.
METHOD constructor.
DATA: lo_handler TYPE REF TO object,
lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER').
CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB').
CREATE DATA lr_data TYPE ('SMBC_CONFIG').
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -55,12 +24,15 @@ CLASS zcl_abapgit_object_smbc IMPLEMENTATION.
FIELD-SYMBOLS: <ls_smbc_config> TYPE any, FIELD-SYMBOLS: <ls_smbc_config> TYPE any,
<lv_smbc_changed_by> TYPE any. <lv_smbc_changed_by> TYPE any.
TRY.
CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER'). CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER').
CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB'). CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB').
CREATE DATA lr_data TYPE ('SMBC_CONFIG'). CREATE DATA lr_data TYPE ('SMBC_CONFIG').
ASSIGN lr_data->* TO <ls_smbc_config>. ASSIGN lr_data->* TO <ls_smbc_config>.
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
zcx_abapgit_exception=>raise( 'SMBC not supported' ).
ENDTRY.
lv_technical_id = ms_item-obj_name. lv_technical_id = ms_item-obj_name.
CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ') CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ')
EXPORTING EXPORTING

View File

@ -1,61 +0,0 @@
CLASS zcl_abapgit_object_swcr DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS: zif_abapgit_object~changed_by REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_swcr IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lr_data TYPE REF TO data,
lo_swcr_db_api TYPE REF TO object,
lv_name TYPE c LENGTH 30,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_swcr_header> TYPE any,
<ls_swcr_user> TYPE any.
TRY.
CALL METHOD ('CL_SCR_DB_ACCESS')=>('CREATE_INSTANCE')
RECEIVING
result = lo_swcr_db_api.
CREATE DATA lr_data TYPE ('IF_SCR_TYPES=>TY_S_HEADER').
ASSIGN lr_data->* TO <ls_swcr_header>.
lv_name = ms_item-obj_name.
TRY.
CALL METHOD lo_swcr_db_api->('IF_SCR_DB_ACCESS~READ_HEADER')
EXPORTING
software_component = lv_name
version = 'A'
RECEIVING
result = <ls_swcr_header>.
CATCH cx_root. " no active version found, try to find an inactive version
CALL METHOD lo_swcr_db_api->('IF_SCR_DB_ACCESS~READ_HEADER')
EXPORTING
software_component = lv_name
version = 'I'
RECEIVING
result = <ls_swcr_header>.
ENDTRY.
ASSIGN COMPONENT 'LAST_CHANGED_BY' OF STRUCTURE <ls_swcr_header> TO <ls_swcr_user>.
rv_user = <ls_swcr_user>.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_SWCR</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - SWCR - Software Component Relations</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,85 +0,0 @@
CLASS zcl_abapgit_object_uiad DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by
REDEFINITION .
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
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_object_uiad IMPLEMENTATION.
METHOD constructor.
DATA: lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE')
RECEIVING
ro_instance = lo_db_api.
CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA').
CATCH cx_sy_dyn_call_error
cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
DATA: lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data,
lv_object_key TYPE c LENGTH 32,
lx_root TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_metadata> TYPE any,
<lv_changed_by> TYPE any.
CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE')
RECEIVING
ro_instance = lo_db_api.
CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA').
ASSIGN lr_data->* TO <ls_metadata>.
TRY.
lv_object_key = ms_item-obj_name.
CALL METHOD lo_db_api->('IF_SUI_UIAD_DB_ACCESS~READ_WB_METADATA')
EXPORTING
iv_id = lv_object_key
iv_version = 'A'
iv_language = mv_language
RECEIVING
rs_metadata = <ls_metadata>.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <ls_metadata> TO <lv_changed_by>.
rv_user = <lv_changed_by>.
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UIAD</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - UIAD - Launchpad App Descriptor Item</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -8,44 +8,13 @@ CLASS zcl_abapgit_object_uipg DEFINITION
METHODS zif_abapgit_object~changed_by METHODS zif_abapgit_object~changed_by
REDEFINITION . REDEFINITION .
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
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_uipg IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_UIPG IMPLEMENTATION.
METHOD constructor.
DATA: lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CALL METHOD ('/UI2/CL_UIPG_DB_ACCESS')=>('GET_INSTANCE')
RECEIVING
ro_instance = lo_db_api.
CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA').
CATCH cx_sy_dyn_call_error
cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.

View File

@ -8,42 +8,13 @@ CLASS zcl_abapgit_object_uist DEFINITION
METHODS zif_abapgit_object~changed_by METHODS zif_abapgit_object~changed_by
REDEFINITION . REDEFINITION .
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
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_uist IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_UIST IMPLEMENTATION.
METHOD constructor.
DATA: lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CREATE OBJECT lo_db_api TYPE ('/UI2/CL_UIST_SVAL_SQL').
CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA').
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.

Some files were not shown because too many files have changed in this diff Show More