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
------------------- -------------------

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.
@ -61,68 +60,35 @@ 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,
ls_key TYPE seoclskey,
lt_implementing TYPE seor_implementing_keys, lt_implementing TYPE seor_implementing_keys,
ls_implementing LIKE LINE OF lt_implementing, ls_implementing LIKE LINE OF lt_implementing.
lt_interf TYPE abap_intfdescr_tab,
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
EXCEPTIONS
type_not_found = 1
OTHERS = 2 ).
IF sy-subrc = 0 AND lr_typedescr IS BOUND.
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. INSERT ls_method INTO TABLE rt_methods.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSE. ls_key-clsname = 'ZIF_ABAPGIT_BACKGROUND'.
" Assume the developer version runs.
CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL' CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL'
EXPORTING EXPORTING
intkey = c_interface intkey = ls_key
IMPORTING IMPORTING
impkeys = lt_implementing impkeys = lt_implementing
EXCEPTIONS EXCEPTIONS
not_existing = 1 not_existing = 1
OTHERS = 2. OTHERS = 2 ##FM_SUBRC_OK.
IF sy-subrc = 0.
LOOP AT lt_implementing INTO ls_implementing. LOOP AT lt_implementing INTO ls_implementing.
ls_method-class = ls_implementing-clsname. ls_method-class = ls_implementing-clsname.
INSERT ls_method INTO TABLE rt_methods. INSERT ls_method INTO TABLE rt_methods.
ENDLOOP. 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,10 +101,9 @@ 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,
@ -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,7 +27,7 @@ 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 .
@ -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,12 +172,12 @@ 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.
@ -212,7 +212,7 @@ 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,7 +22,7 @@ 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
@ -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,7 +99,7 @@ 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,7 +156,7 @@ 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 ).

View File

@ -18,7 +18,7 @@ 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

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.
COLLECT ls_tlock-trkorr INTO lt_transports.
ENDLOOP.
IF lines( lt_transports ) = 1.
rv_transport = lv_transport_request. 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.
ELSE.
lv_request = zif_abapgit_definitions=>c_multiple_transports.
EXIT. 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,7 +62,7 @@ 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

@ -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( CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
EXPORTING EXPORTING
iv_user = iv_user user_name = iv_username
IMPORTING IMPORTING
ev_fullname = rs_user-name user_address = ls_user_address
ev_email = rs_user-email ). EXCEPTIONS
CATCH zcx_abapgit_exception. user_address_not_found = 1
" Could not find user, try to get from other clients OTHERS = 2.
rs_user = get_user_dtls_from_other_clnt( iv_user ). IF sy-subrc = 0.
ENDTRY. rv_title = ls_user_address-name_text.
ENDIF.
rs_user-user = iv_user.
INSERT rs_user INTO TABLE gt_user.
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,7 +317,7 @@ 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 ).
@ -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.
@ -454,7 +442,7 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
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

@ -82,7 +82,6 @@ INTERFACE zif_abapgit_git_definitions
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,7 +7,7 @@ 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
@ -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.
@ -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,7 +50,7 @@ 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
@ -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:
@ -80,25 +80,6 @@ CLASS lcl_utils DEFINITION FINAL.
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,7 +188,7 @@ 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
@ -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 ...
@ -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.
@ -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.

View File

@ -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 =
@ -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.
@ -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.
@ -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

@ -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

@ -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

@ -1,7 +1,7 @@
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

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

@ -10,31 +10,26 @@ CLASS zcl_abapgit_object_cdbo DEFINITION
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
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. 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,9 +226,7 @@ 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') CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION')
RECEIVING RECEIVING
result = lv_act_setting_abap_lv. result = lv_act_setting_abap_lv.
@ -257,11 +255,6 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
act = lv_act_setting_user act = lv_act_setting_user
exp = sy-uname ). exp = sy-uname ).
CATCH cx_root.
" System doesn't support AFF with ABAP language version
RETURN.
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD abap_language_version_standard. METHOD abap_language_version_standard.

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.

View File

@ -61,7 +61,7 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
INSERT ls_ddls_name INTO TABLE lt_ddls_name. INSERT ls_ddls_name INTO TABLE lt_ddls_name.
PERFORM ('DDLS_GET_DEP') IN PROGRAM ('RADMASDL') PERFORM ('DDLS_GET_DEP') IN PROGRAM ('RADMASDL')
TABLES lt_ddls_name rt_dependency ##PERF_NO_FORM. TABLES lt_ddls_name rt_dependency.
ENDMETHOD. ENDMETHOD.
@ -119,7 +119,7 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
" AUTH after DCLS " AUTH after DCLS
<ls_tadir>-korrnum = '715000'. <ls_tadir>-korrnum = '715000'.
WHEN 'SUSH'. WHEN 'SUSH'.
" SUSH after SUSC and SRVB " SUSH after SUSC
<ls_tadir>-korrnum = '712000'. <ls_tadir>-korrnum = '712000'.
WHEN 'SUSC'. WHEN 'SUSC'.
" SUSC after SUSO " SUSC after SUSO
@ -130,14 +130,6 @@ CLASS zcl_abapgit_dependencies IMPLEMENTATION.
WHEN 'DCLS'. WHEN 'DCLS'.
" AUTH and SUSO after DCLS " AUTH and SUSO after DCLS
<ls_tadir>-korrnum = '705000'. <ls_tadir>-korrnum = '705000'.
WHEN 'G4BA' OR 'G4BS' OR 'IWMO' OR 'IWSV' OR 'IWVB'.
" after SRVB
<ls_tadir>-korrnum = '610000'.
WHEN 'SRVB'.
" after SRVD
<ls_tadir>-korrnum = '600500'.
WHEN 'SRVD'.
<ls_tadir>-korrnum = '600000'.
WHEN 'IASP'. WHEN 'IASP'.
<ls_tadir>-korrnum = '552000'. <ls_tadir>-korrnum = '552000'.
WHEN 'IARP'. WHEN 'IARP'.

View File

@ -75,10 +75,6 @@ CLASS ltcl_sap_package IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_package~get. "##needed
ENDMETHOD.
METHOD zif_abapgit_sap_package~exists. "##needed METHOD zif_abapgit_sap_package~exists. "##needed
ENDMETHOD. ENDMETHOD.

View File

@ -6,7 +6,7 @@ CLASS zcl_abapgit_file_deserialize DEFINITION
CLASS-METHODS get_results CLASS-METHODS get_results
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL !ii_log TYPE REF TO zif_abapgit_log OPTIONAL
RETURNING RETURNING
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
@ -139,7 +139,7 @@ CLASS zcl_abapgit_file_deserialize IMPLEMENTATION.
DATA lt_results TYPE zif_abapgit_definitions=>ty_results_tt. DATA lt_results TYPE zif_abapgit_definitions=>ty_results_tt.
lt_results = filter_files_to_deserialize( lt_results = filter_files_to_deserialize(
it_results = zcl_abapgit_repo_status=>calculate( ii_repo ) it_results = zcl_abapgit_repo_status=>calculate( io_repo )
ii_log = ii_log ). ii_log = ii_log ).
rt_results = prioritize_deser( rt_results = prioritize_deser(
@ -214,9 +214,6 @@ CLASS zcl_abapgit_file_deserialize IMPLEMENTATION.
DELETE lt_requires WHERE obj_type <> 'IASP' DELETE lt_requires WHERE obj_type <> 'IASP'
AND obj_type <> 'PROG' AND obj_type <> 'PROG'
AND obj_type <> 'IARP'. AND obj_type <> 'IARP'.
WHEN 'IDOC' OR 'IEXT'.
lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'TABL'.
WHEN 'DCLS'. WHEN 'DCLS'.
lt_requires = lt_items. lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'DDLS'. DELETE lt_requires WHERE obj_type <> 'DDLS'.
@ -248,15 +245,6 @@ CLASS zcl_abapgit_file_deserialize IMPLEMENTATION.
WHEN 'ENSC'. WHEN 'ENSC'.
lt_requires = lt_items. lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'ENHS'. DELETE lt_requires WHERE obj_type <> 'ENHS'.
WHEN 'IWMO' OR 'IWSV' OR 'IWVB'.
lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'SRVB'.
WHEN 'SUSH'.
lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'SRVB' AND obj_type <> 'HTTP'.
WHEN 'SRVB'.
lt_requires = lt_items.
DELETE lt_requires WHERE obj_type <> 'SRVD'.
ENDCASE. ENDCASE.
* TODO: END extract to object handler method * TODO: END extract to object handler method

View File

@ -112,15 +112,6 @@ CLASS zcl_abapgit_filename_logic DEFINITION
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS get_lang_and_ext
IMPORTING
iv_filename TYPE string
EXPORTING
ev_lang TYPE laiso
ev_ext TYPE string
RAISING
zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -193,7 +184,6 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
CLEAR: es_item, ev_lang, ev_ext.
lo_dot = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
file_to_object( file_to_object(
@ -204,12 +194,8 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
IMPORTING IMPORTING
es_item = es_item ). es_item = es_item ).
get_lang_and_ext( FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN iv_filename
EXPORTING SUBMATCHES ev_lang ev_ext ##SUBRC_OK.
iv_filename = iv_filename
IMPORTING
ev_lang = ev_lang
ev_ext = ev_ext ).
ENDMETHOD. ENDMETHOD.
@ -318,17 +304,15 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
METHOD object_to_file. METHOD object_to_file.
DATA lv_obj_name TYPE string. DATA lv_obj_name TYPE string.
DATA lv_obj_type TYPE string.
DATA lv_nb_of_slash TYPE string. DATA lv_nb_of_slash TYPE string.
" Get escaped object name " Get escaped object name
lv_obj_name = to_lower( name_escape( is_item-obj_name ) ). lv_obj_name = to_lower( name_escape( is_item-obj_name ) ).
lv_obj_type = to_lower( is_item-obj_type ).
IF iv_extra IS INITIAL. IF iv_extra IS INITIAL.
CONCATENATE lv_obj_name '.' lv_obj_type INTO rv_filename. CONCATENATE lv_obj_name '.' is_item-obj_type INTO rv_filename.
ELSE. ELSE.
CONCATENATE lv_obj_name '.' lv_obj_type '.' iv_extra INTO rv_filename. CONCATENATE lv_obj_name '.' is_item-obj_type '.' iv_extra INTO rv_filename.
ENDIF. ENDIF.
IF iv_ext IS NOT INITIAL. IF iv_ext IS NOT INITIAL.
@ -360,60 +344,17 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'. REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'.
ENDIF. ENDIF.
IF iv_ext = 'properties'.
RETURN.
ENDIF.
TRANSLATE rv_filename TO LOWER CASE. TRANSLATE rv_filename TO LOWER CASE.
ENDMETHOD. ENDMETHOD.
METHOD object_to_i18n_file. METHOD object_to_i18n_file.
DATA: lv_langu_sap1 TYPE sy-langu,
lv_langu_bcp47 TYPE string.
lv_langu_sap1 = zcl_abapgit_convert=>language_sap2_to_sap1( to_upper( iv_lang ) ).
lv_langu_bcp47 = zcl_abapgit_convert=>language_sap1_to_bcp47( lv_langu_sap1 ).
rv_filename = object_to_file( rv_filename = object_to_file(
is_item = is_item is_item = is_item
iv_extra = |i18n.{ lv_langu_bcp47 }| iv_extra = |i18n.{ iv_lang }|
iv_ext = iv_ext ). iv_ext = iv_ext ).
ENDMETHOD. ENDMETHOD.
METHOD get_lang_and_ext.
DATA lt_filename_elements TYPE string_table.
DATA lv_langu_bcp47 TYPE string.
DATA lv_sap1 TYPE sy-langu.
SPLIT iv_filename AT '.' INTO TABLE lt_filename_elements.
READ TABLE lt_filename_elements INDEX lines( lt_filename_elements ) INTO ev_ext.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Could not derive file extension of file { iv_filename }| ).
ENDIF.
READ TABLE lt_filename_elements WITH KEY table_line = `i18n` TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
READ TABLE lt_filename_elements INDEX ( sy-tabix + 1 ) INTO lv_langu_bcp47.
IF sy-subrc = 0.
lv_sap1 = zcl_abapgit_convert=>language_bcp47_to_sap1( lv_langu_bcp47 ).
ev_lang = zcl_abapgit_convert=>language_sap1_to_sap2( lv_sap1 ). " actually it is to_upper( ISO-639 )
" to not break existing PO file implementations
IF ev_ext = `po`.
ev_lang = to_lower( ev_lang ).
ENDIF.
ENDIF.
ENDIF.
IF ev_lang IS INITIAL.
CLEAR ev_ext.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -30,10 +30,8 @@ CLASS ltcl_run_checks DEFINITION FOR TESTING RISK LEVEL HARMLESS
object_to_file FOR TESTING RAISING zcx_abapgit_exception, object_to_file FOR TESTING RAISING zcx_abapgit_exception,
i18n_file_to_object FOR TESTING RAISING zcx_abapgit_exception, i18n_file_to_object FOR TESTING RAISING zcx_abapgit_exception,
object_to_i18n_file FOR TESTING RAISING zcx_abapgit_exception, object_to_i18n_file FOR TESTING RAISING zcx_abapgit_exception,
object_to_i18n_file_bcp47 FOR TESTING RAISING zcx_abapgit_exception,
file_to_object_package FOR TESTING RAISING zcx_abapgit_exception, file_to_object_package FOR TESTING RAISING zcx_abapgit_exception,
object_to_file_package FOR TESTING RAISING zcx_abapgit_exception, object_to_file_package FOR TESTING RAISING zcx_abapgit_exception.
i18n_file_to_object_is_initial FOR TESTING RAISING zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -385,27 +383,6 @@ CLASS ltcl_run_checks IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD i18n_file_to_object_is_initial.
DATA lv_lang TYPE laiso.
DATA lv_ext TYPE string.
lv_ext = `txt`.
lv_lang = `E`.
zcl_abapgit_filename_logic=>i18n_file_to_object(
EXPORTING
iv_filename = 'zif_abapgit.intf.abap'
iv_path = '/src/'
IMPORTING
ev_lang = lv_lang
ev_ext = lv_ext ).
cl_abap_unit_assert=>assert_initial( lv_ext ).
cl_abap_unit_assert=>assert_initial( lv_lang ).
ENDMETHOD.
METHOD i18n_file_to_object. METHOD i18n_file_to_object.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item. DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
@ -452,7 +429,7 @@ CLASS ltcl_run_checks IMPLEMENTATION.
exp = 'ZPROGRAM' exp = 'ZPROGRAM'
act = ls_item-obj_name ). act = ls_item-obj_name ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
exp = 'EN' exp = 'en'
act = lv_lang ). act = lv_lang ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
exp = 'properties' exp = 'properties'
@ -490,26 +467,6 @@ CLASS ltcl_run_checks IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD object_to_i18n_file_bcp47.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lv_filename TYPE string.
ls_item-obj_type = 'INTF'.
ls_item-obj_name = 'ZIF_ABAP'.
" Properties files
lv_filename = zcl_abapgit_filename_logic=>object_to_i18n_file(
is_item = ls_item
iv_lang = '6N'
iv_ext = 'properties' ).
cl_abap_unit_assert=>assert_equals(
exp = 'zif_abap.intf.i18n.en-GB.properties'
act = lv_filename ).
ENDMETHOD.
METHOD file_to_object_package. METHOD file_to_object_package.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item. DATA ls_item TYPE zif_abapgit_definitions=>ty_item.

View File

@ -92,10 +92,6 @@ CLASS ltcl_folder_logic_package IMPLEMENTATION.
RETURN. RETURN.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_package~get.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_sap_package~exists. METHOD zif_abapgit_sap_package~exists.
rv_bool = abap_true. rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.
@ -187,10 +183,6 @@ CLASS ltcl_folder_logic IMPLEMENTATION.
RETURN. RETURN.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_package~get.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_sap_package~exists. METHOD zif_abapgit_sap_package~exists.
rv_bool = abap_true. rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.
@ -409,10 +401,6 @@ CLASS ltcl_folder_logic_namespaces IMPLEMENTATION.
RETURN. RETURN.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_package~get.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_sap_package~exists. METHOD zif_abapgit_sap_package~exists.
rv_bool = abap_true. rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.
@ -548,10 +536,6 @@ CLASS ltcl_folder_logic_no_parent IMPLEMENTATION.
RETURN. RETURN.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_package~get.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_sap_package~exists. METHOD zif_abapgit_sap_package~exists.
rv_bool = abap_true. rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.

View File

@ -46,7 +46,7 @@ CLASS zcl_abapgit_objects_activation DEFINITION
CONSTANTS: CONSTANTS:
c_domain TYPE c LENGTH 9 VALUE 'DOMA DOMD', c_domain TYPE c LENGTH 9 VALUE 'DOMA DOMD',
c_types TYPE c LENGTH 55 VALUE 'DTEL DTED TABL TABD SQLT SQLD TTYP TTYD VIEW VIED DRTY', c_types TYPE c LENGTH 50 VALUE 'DTEL DTED TABL TABD SQLT SQLD TTYP TTYD VIEW VIED',
c_technset TYPE c LENGTH 24 VALUE 'TABT VIET SQTT INDX XINX', c_technset TYPE c LENGTH 24 VALUE 'TABT VIET SQTT INDX XINX',
c_f4_objects TYPE c LENGTH 35 VALUE 'SHLP SHLD MCOB MCOD MACO MACD MCID', c_f4_objects TYPE c LENGTH 35 VALUE 'SHLP SHLD MCOB MCOD MACO MACD MCID',
c_enqueue TYPE c LENGTH 9 VALUE 'ENQU ENQD', c_enqueue TYPE c LENGTH 9 VALUE 'ENQU ENQD',
@ -56,9 +56,7 @@ CLASS zcl_abapgit_objects_activation DEFINITION
c_ddls TYPE c LENGTH 24 VALUE 'DDLS DRUL DTDC DTEB', c_ddls TYPE c LENGTH 24 VALUE 'DDLS DRUL DTDC DTEB',
c_switches TYPE c LENGTH 24 VALUE 'SF01 SF02 SFSW SFBS SFBF', c_switches TYPE c LENGTH 24 VALUE 'SF01 SF02 SFSW SFBS SFBF',
c_para TYPE c LENGTH 4 VALUE 'PARA', " can be referenced by DTEL c_para TYPE c LENGTH 4 VALUE 'PARA', " can be referenced by DTEL
c_enhd TYPE c LENGTH 4 VALUE 'ENHD', c_enhd TYPE c LENGTH 4 VALUE 'ENHD'.
c_scalarfunc TYPE c LENGTH 9 VALUE 'DSFD DSFI',
c_aspect TYPE c LENGTH 4 VALUE 'DRAS'.
CLASS-DATA: CLASS-DATA:
gt_classes TYPE STANDARD TABLE OF ty_classes WITH DEFAULT KEY . gt_classes TYPE STANDARD TABLE OF ty_classes WITH DEFAULT KEY .
@ -310,7 +308,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
excecution_error = 1 excecution_error = 1
cancelled = 2 cancelled = 2
insert_into_corr_error = 3 insert_into_corr_error = 3
OTHERS = 4 ##FM_SUBRC_OK. OTHERS = 4 ##SUBRC_OK.
CATCH cx_sy_dyn_call_param_not_found. CATCH cx_sy_dyn_call_param_not_found.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING EXPORTING
@ -324,7 +322,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
excecution_error = 1 excecution_error = 1
cancelled = 2 cancelled = 2
insert_into_corr_error = 3 insert_into_corr_error = 3
OTHERS = 4 ##FM_SUBRC_OK. OTHERS = 4 ##SUBRC_OK.
ENDTRY. ENDTRY.
CASE sy-subrc. CASE sy-subrc.
WHEN 1 OR 3 OR 4. WHEN 1 OR 3 OR 4.
@ -392,24 +390,15 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
IF strlen( <ls_message>-object_text ) > 5. IF strlen( <ls_message>-object_text ) > 5.
ls_item-obj_type = <ls_message>-object_text(4). ls_item-obj_type = <ls_message>-object_text(4).
ls_item-obj_name = <ls_message>-object_text+5(*). ls_item-obj_name = <ls_message>-object_text+5(*).
ELSEIF <ls_message>-show_req IS NOT INITIAL. ELSE.
ls_item-obj_name = <ls_message>-show_req->object_name. ls_item-obj_name = <ls_message>-show_req->object_name.
SELECT SINGLE tadir FROM euobjedit INTO ls_item-obj_type SELECT SINGLE tadir FROM euobjedit INTO ls_item-obj_type
WHERE type = <ls_message>-show_req->object_type. WHERE type = <ls_message>-show_req->object_type.
ENDIF. ENDIF.
LOOP AT <ls_message>-mtext ASSIGNING <lv_msg>. LOOP AT <ls_message>-mtext ASSIGNING <lv_msg>.
IF sy-tabix = 1.
ii_log->add(
iv_type = 'E'
iv_msg = <lv_msg>
iv_class = <ls_message>-message-msgid
iv_number = <ls_message>-message-msgno
is_item = ls_item ).
ELSE.
ii_log->add_error( ii_log->add_error(
iv_msg = <lv_msg> iv_msg = <lv_msg>
is_item = ls_item ). is_item = ls_item ).
ENDIF.
ENDLOOP. ENDLOOP.
ENDLOOP. ENDLOOP.
@ -449,9 +438,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
LOOP AT lt_lines ASSIGNING <ls_line>. LOOP AT lt_lines ASSIGNING <ls_line>.
ii_log->add( iv_msg = <ls_line>-line ii_log->add( iv_msg = <ls_line>-line
iv_type = <ls_line>-severity iv_type = <ls_line>-severity ).
iv_class = <ls_line>-class
iv_number = |{ <ls_line>-number }| ).
ENDLOOP. ENDLOOP.
ii_log->add_info( |View complete activation log in program RSPUTPRT (type D, log name { iv_logname })| ). ii_log->add_info( |View complete activation log in program RSPUTPRT (type D, log name { iv_logname })| ).
@ -567,8 +554,7 @@ CLASS zcl_abapgit_objects_activation IMPLEMENTATION.
c_enqueue NS iv_obj_type AND c_sqsc NS iv_obj_type AND c_enqueue NS iv_obj_type AND c_sqsc NS iv_obj_type AND
c_stob NS iv_obj_type AND c_ntab NS iv_obj_type AND c_stob NS iv_obj_type AND c_ntab NS iv_obj_type AND
c_ddls NS iv_obj_type AND c_para NS iv_obj_type AND c_ddls NS iv_obj_type AND c_para NS iv_obj_type AND
c_switches NS iv_obj_type AND iv_obj_type <> c_enhd AND c_switches NS iv_obj_type AND iv_obj_type <> c_enhd.
c_aspect NS iv_obj_type AND c_scalarfunc NS iv_obj_type.
rv_result = abap_false. rv_result = abap_false.
ENDIF. ENDIF.

View File

@ -1,42 +1,29 @@
CLASS zcl_abapgit_objects_check DEFINITION CLASS zcl_abapgit_objects_check DEFINITION
PUBLIC PUBLIC
CREATE PUBLIC. CREATE PUBLIC .
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS class_constructor.
CLASS-METHODS deserialize_checks CLASS-METHODS deserialize_checks
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
RETURNING RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
CLASS-METHODS class_constructor.
CLASS-METHODS checks_adjust CLASS-METHODS checks_adjust
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks !is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
CHANGING CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt !ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-DATA: gi_exit TYPE REF TO zif_abapgit_exit.
CLASS-DATA gi_exit TYPE REF TO zif_abapgit_exit.
CLASS-METHODS adjust_result
IMPORTING
!iv_txt TYPE string
!it_overwrite_old TYPE zif_abapgit_definitions=>ty_overwrite_tt
!it_overwrite_new TYPE zif_abapgit_definitions=>ty_overwrite_tt
CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS warning_overwrite_adjust CLASS-METHODS warning_overwrite_adjust
IMPORTING IMPORTING
@ -45,62 +32,38 @@ CLASS zcl_abapgit_objects_check DEFINITION
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt !ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS warning_overwrite_find CLASS-METHODS warning_overwrite_find
IMPORTING IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt !it_results TYPE zif_abapgit_definitions=>ty_results_tt
RETURNING RETURNING
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt. VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt.
CLASS-METHODS warning_package_adjust CLASS-METHODS warning_package_adjust
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt !it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
CHANGING CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt !ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS warning_package_find CLASS-METHODS warning_package_find
IMPORTING IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt !it_results TYPE zif_abapgit_definitions=>ty_results_tt
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
RETURNING RETURNING
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS warning_data_loss_adjust
IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo
!it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS warning_data_loss_find
IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
RETURNING
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS determine_transport_request CLASS-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.
CLASS-METHODS check_multiple_files CLASS-METHODS check_multiple_files
IMPORTING IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt !it_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -108,36 +71,8 @@ ENDCLASS.
CLASS zcl_abapgit_objects_check IMPLEMENTATION. CLASS zcl_abapgit_objects_check IMPLEMENTATION.
METHOD adjust_result.
DATA ls_overwrite TYPE zif_abapgit_definitions=>ty_overwrite.
FIELD-SYMBOLS <ls_overwrite> TYPE zif_abapgit_definitions=>ty_overwrite.
LOOP AT it_overwrite_new ASSIGNING <ls_overwrite>.
READ TABLE it_overwrite_old INTO ls_overwrite WITH TABLE KEY object_type_and_name
COMPONENTS obj_type = <ls_overwrite>-obj_type obj_name = <ls_overwrite>-obj_name.
IF sy-subrc <> 0 OR ls_overwrite-decision IS INITIAL.
zcx_abapgit_exception=>raise( |{ iv_txt } { <ls_overwrite>-obj_type } { <ls_overwrite>-obj_name } undecided| ).
ENDIF.
IF ls_overwrite-decision = zif_abapgit_definitions=>c_no.
DELETE ct_results WHERE obj_type = <ls_overwrite>-obj_type AND obj_name = <ls_overwrite>-obj_name.
ASSERT sy-subrc = 0.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD checks_adjust. METHOD checks_adjust.
" Make sure to get the current status, as something might have changed in the meanwhile
" - Remove objects from results that were deselected in confirmation popup
" - Raise exception if an object has no decision of what to do
warning_overwrite_adjust( warning_overwrite_adjust(
EXPORTING EXPORTING
it_overwrite = is_checks-overwrite it_overwrite = is_checks-overwrite
@ -146,18 +81,11 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
warning_package_adjust( warning_package_adjust(
EXPORTING EXPORTING
ii_repo = ii_repo io_repo = io_repo
it_overwrite = is_checks-warning_package it_overwrite = is_checks-warning_package
CHANGING CHANGING
ct_results = ct_results ). ct_results = ct_results ).
warning_data_loss_adjust(
EXPORTING
ii_repo = ii_repo
it_overwrite = is_checks-data_loss
CHANGING
ct_results = ct_results ).
ENDMETHOD. ENDMETHOD.
@ -206,27 +134,23 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
li_package TYPE REF TO zif_abapgit_sap_package. li_package TYPE REF TO zif_abapgit_sap_package.
" get unfiltered status to evaluate properly which warnings are required " get unfiltered status to evaluate properly which warnings are required
lt_results = zcl_abapgit_repo_status=>calculate( ii_repo ). lt_results = zcl_abapgit_repo_status=>calculate( io_repo ).
check_multiple_files( lt_results ). check_multiple_files( lt_results ).
rs_checks-overwrite = warning_overwrite_find( lt_results ). rs_checks-overwrite = warning_overwrite_find( lt_results ).
rs_checks-warning_package = warning_package_find( rs_checks-warning_package = warning_package_find(
ii_repo = ii_repo io_repo = io_repo
it_results = lt_results ).
rs_checks-data_loss = warning_data_loss_find(
ii_repo = ii_repo
it_results = lt_results ). it_results = lt_results ).
IF lines( lt_results ) > 0. IF lines( lt_results ) > 0.
li_package = zcl_abapgit_factory=>get_sap_package( ii_repo->get_package( ) ). li_package = zcl_abapgit_factory=>get_sap_package( io_repo->get_package( ) ).
rs_checks-transport-required = li_package->are_changes_recorded_in_tr_req( ). rs_checks-transport-required = li_package->are_changes_recorded_in_tr_req( ).
IF NOT rs_checks-transport-required IS INITIAL. IF NOT rs_checks-transport-required IS INITIAL.
rs_checks-transport-type = li_package->get_transport_type( ). rs_checks-transport-type = li_package->get_transport_type( ).
rs_checks-transport-transport = determine_transport_request( rs_checks-transport-transport = determine_transport_request(
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = rs_checks-transport-type ). iv_transport_type = rs_checks-transport-type ).
ENDIF. ENDIF.
ENDIF. ENDIF.
@ -238,11 +162,11 @@ CLASS zcl_abapgit_objects_check 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( )-transport_request. rv_transport_request = io_repo->get_local_settings( )-transport_request.
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 = rv_transport_request ). cv_transport_request = rv_transport_request ).
@ -250,62 +174,33 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD warning_data_loss_adjust. METHOD warning_overwrite_adjust.
DATA lt_overwrite LIKE it_overwrite. DATA: lt_overwrite LIKE it_overwrite,
ls_overwrite LIKE LINE OF lt_overwrite.
lt_overwrite = warning_data_loss_find( FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF lt_overwrite.
it_results = ct_results
ii_repo = ii_repo ).
adjust_result(
EXPORTING
iv_txt = 'Potential data loss for'
it_overwrite_old = it_overwrite
it_overwrite_new = lt_overwrite
CHANGING
ct_results = ct_results ).
ENDMETHOD.
METHOD warning_data_loss_find. * make sure to get the current status, as something might have changed in the meanwhile
lt_overwrite = warning_overwrite_find( ct_results ).
DATA: LOOP AT lt_overwrite ASSIGNING <ls_overwrite>.
ls_item TYPE zif_abapgit_definitions=>ty_item,
li_comparator TYPE REF TO zif_abapgit_comparator,
lv_result TYPE string.
FIELD-SYMBOLS: READ TABLE it_overwrite INTO ls_overwrite
<ls_result> LIKE LINE OF it_results, WITH TABLE KEY object_type_and_name
<ls_overwrite> LIKE LINE OF rt_overwrite. COMPONENTS obj_type = <ls_overwrite>-obj_type
obj_name = <ls_overwrite>-obj_name.
" For optimal performance, we limit here by object type since we know that only TABL has a comparator IF sy-subrc <> 0 OR ls_overwrite-decision IS INITIAL.
" If there are other object types in the future, extend the where clause or remove the check on object type. zcx_abapgit_exception=>raise( |Overwrite { <ls_overwrite>-obj_type } {
LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL AND filename CP '*.xml' <ls_overwrite>-obj_name } undecided| ).
AND obj_type = 'TABL' ##PRIMKEY[SEC_KEY].
CLEAR ls_item.
MOVE-CORRESPONDING <ls_result> TO ls_item.
li_comparator = zcl_abapgit_objects_compare=>get_comparator( ls_item ).
IF NOT li_comparator IS BOUND.
RETURN.
ENDIF. ENDIF.
lv_result = zcl_abapgit_objects_compare=>get_result( IF ls_overwrite-decision = zif_abapgit_definitions=>c_no.
ii_comparator = li_comparator DELETE ct_results WHERE
iv_filename = <ls_result>-filename obj_type = <ls_overwrite>-obj_type AND
it_local = ii_repo->get_files_local( ) obj_name = <ls_overwrite>-obj_name.
it_remote = ii_repo->get_files_remote( iv_ignore_files = abap_true ) ). ASSERT sy-subrc = 0.
IF lv_result IS NOT INITIAL.
APPEND INITIAL LINE TO rt_overwrite ASSIGNING <ls_overwrite>.
MOVE-CORRESPONDING <ls_result> TO <ls_overwrite>.
<ls_overwrite>-devclass = <ls_result>-package.
<ls_overwrite>-action = zif_abapgit_objects=>c_deserialize_action-data_loss.
<ls_overwrite>-icon = icon_warning.
<ls_overwrite>-text = lv_result.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
@ -313,23 +208,6 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD warning_overwrite_adjust.
DATA lt_overwrite LIKE it_overwrite.
lt_overwrite = warning_overwrite_find( ct_results ).
adjust_result(
EXPORTING
iv_txt = 'Overwrite of object'
it_overwrite_old = it_overwrite
it_overwrite_new = lt_overwrite
CHANGING
ct_results = ct_results ).
ENDMETHOD.
METHOD warning_overwrite_find. METHOD warning_overwrite_find.
DATA: DATA:
@ -423,19 +301,36 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
METHOD warning_package_adjust. METHOD warning_package_adjust.
DATA lt_overwrite LIKE it_overwrite. DATA: lt_overwrite LIKE it_overwrite,
ls_overwrite LIKE LINE OF lt_overwrite.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF lt_overwrite.
* make sure to get the current status, as something might have changed in the meanwhile
lt_overwrite = warning_package_find( lt_overwrite = warning_package_find(
it_results = ct_results it_results = ct_results
ii_repo = ii_repo ). io_repo = io_repo ).
adjust_result( LOOP AT lt_overwrite ASSIGNING <ls_overwrite>.
EXPORTING
iv_txt = 'Overwrite of package' READ TABLE it_overwrite INTO ls_overwrite
it_overwrite_old = it_overwrite WITH TABLE KEY object_type_and_name
it_overwrite_new = lt_overwrite COMPONENTS obj_type = <ls_overwrite>-obj_type
CHANGING obj_name = <ls_overwrite>-obj_name.
ct_results = ct_results ). IF sy-subrc <> 0 OR ls_overwrite-decision IS INITIAL.
zcx_abapgit_exception=>raise( |Overwrite of package { <ls_overwrite>-obj_type } {
<ls_overwrite>-obj_name } undecided| ).
ENDIF.
IF ls_overwrite-decision = zif_abapgit_definitions=>c_no.
DELETE ct_results WHERE
obj_type = <ls_overwrite>-obj_type AND
obj_name = <ls_overwrite>-obj_name.
ASSERT sy-subrc = 0.
ENDIF.
ENDLOOP.
ENDMETHOD. ENDMETHOD.
@ -456,8 +351,8 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL AND packmove IS INITIAL. LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL AND packmove IS INITIAL.
lv_package = lo_folder_logic->path_to_package( lv_package = lo_folder_logic->path_to_package(
iv_top = ii_repo->get_package( ) iv_top = io_repo->get_package( )
io_dot = ii_repo->get_dot_abapgit( ) io_dot = io_repo->get_dot_abapgit( )
iv_path = <ls_result>-path iv_path = <ls_result>-path
iv_create_if_not_exists = abap_false ). iv_create_if_not_exists = abap_false ).
@ -466,7 +361,7 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
iv_obj_name = <ls_result>-obj_name ). iv_obj_name = <ls_result>-obj_name ).
IF NOT ls_tadir IS INITIAL AND ls_tadir-devclass <> lv_package. IF NOT ls_tadir IS INITIAL AND ls_tadir-devclass <> lv_package.
" overwriting object from different package than expected * overwriting object from different package than expected
CLEAR ls_overwrite. CLEAR ls_overwrite.
CONCATENATE <ls_result>-lstate <ls_result>-rstate INTO ls_overwrite-state RESPECTING BLANKS. CONCATENATE <ls_result>-lstate <ls_result>-rstate INTO ls_overwrite-state RESPECTING BLANKS.
REPLACE ALL OCCURRENCES OF ` ` IN ls_overwrite-state WITH '_'. REPLACE ALL OCCURRENCES OF ` ` IN ls_overwrite-state WITH '_'.

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