Compare commits

..

81 Commits

Author SHA1 Message Date
Marc Bernard
34ec448b39
Refactor: Persistence factory (#7229)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-30 11:27:13 +02:00
Marc Bernard
efbc0245ce
Fix trigger location for zcx_abapgit_exception (#7221)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Thanks!

Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-29 14:29:46 +02:00
Marc Bernard
220417e73f
FDT0: Remove comparator (#7227)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
2025-04-28 11:51:38 +02:00
Christian Günter
781313ad7c
SAXX: implement is_locked + refactorings (#7226) 2025-04-28 11:07:14 +02:00
Christian Günter
402ec37b3b
refactor DDLS + DDLX + DCLS (#7224)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-04-25 13:29:18 +02:00
Marc Bernard
5e087d33c7
Fix some class descriptions (#7223)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-25 13:25:56 +02:00
Lennart Emmerich
267c210c5a
STVI: Fix unstable diff when shdtvsvciu or shdfvguicu are not initial (#7225) 2025-04-25 13:04:37 +02:00
Lennart Emmerich
2b0f4e74d9
SCVI: Fix unstable diff when shdsvfvci or shdguixt are not initial (#7222)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-24 12:07:17 +02:00
Lars Hvam
3f673ebe8c
update npm deps + E0* deps + back button on flow page (#7217)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
2025-04-22 13:12:33 +02:00
Marc Bernard
b9389bde33
Add support for ABAP Language Version for generic (#7218)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-22 08:20:12 +02:00
Christian Günter
cc414d26e0
New error handling for not supported object types (#7215)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-22 06:43:52 +02:00
Lars Hvam
becfe9bb08
bugfix: offline repo pull /data/ (#7216)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-21 16:27:32 +02:00
Lars Hvam
c21dc53e00
user record: interface and factory (#7212)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-04-18 09:46:58 +02:00
Lars Hvam
96a010614b
refactor zcl_abapgit_user_record (#7211)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
2025-04-16 07:59:21 +02:00
Lars Hvam
1fa75ebb47
zcl_abapgit_gui_page_sett_repo: remove use of T002T (#7209)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-04-14 14:41:59 +02:00
Lars Hvam
b6e375b3d6
update npm dependencies (#7202) 2025-04-14 09:34:05 +02:00
Lars Hvam
b2d0d98ec0
user record: refactor get_title() for open-abap compatibility (#7210) 2025-04-14 09:29:39 +02:00
Marc Bernard
c0ce2cb2e2
Add clarifying comment to exists check (#7207)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-04-10 20:32:57 +02:00
Marc Bernard
b55791765f
Fix zcl_abapgit_serializer test (#7205) 2025-04-10 20:10:41 +02:00
Christian Günter
a4019f38fb
HTTP: Detect if it's supported in constructor (#7204) 2025-04-10 20:02:07 +02:00
Christian Günter
d79887c0a2
Repo Refactoring: Use interfaces instead of classes (#7189)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-10 08:52:51 +02:00
Marc Bernard
aaec314b14
Repo Overview: Add sort by online/offline repo (#7200)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-09 20:00:26 +02:00
Lars Hvam
edfbfab6ce
web test: move files and fixes (#7195)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-08 15:57:59 +02:00
Lars Hvam
301f860821
move zcl_abapgit_gui_hotkey_ctl (#7192)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-08 11:13:50 +02:00
Lars Hvam
d73e00bc8a
remove use of PGMID (#7199) 2025-04-08 11:10:59 +02:00
Lars Hvam
12d6b480b1
bugfix zif_abapgit_sap_package~read_description (#7198) 2025-04-08 07:40:57 +02:00
Lars Hvam
6302fa6b1c
refactor select TDEVCT (#7196) 2025-04-08 07:18:37 +02:00
Lars Hvam
15584a3da7
flow: extract logic to new class (#7197) 2025-04-08 07:15:21 +02:00
Lars Hvam
fc76035b7b
decouple utils from zif_abapgit_git_definitions (#7193) 2025-04-08 07:13:08 +02:00
Lars Hvam
bb9462f979
new class zcl_abapgit_ui_core_factory (#7194) 2025-04-08 07:10:40 +02:00
Lars Hvam
8b9dd0fdfa
zcl_abapgit_code_inspector, remove friend (#7191) 2025-04-08 07:01:02 +02:00
Marc Bernard
220cb9aad1
Fix checking support of object types (exit) (#7187)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-07 16:31:44 +02:00
Marc Bernard
51d115a1c1
Add style option for HTML rendering (#7190)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-04-06 10:19:21 +02:00
Marc Bernard
12b93deb1e
Debug info: Fix exit list in standalone (#7188) 2025-04-06 10:06:16 +02:00
Marc Bernard
db0526a3b8
Add some icons (#7186)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-04 12:17:27 +02:00
Lars Hvam
8a72e762f5
update devcontainer.json (#7184)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-03 21:21:18 +02:00
Marc Bernard
663b2b5583
Feature: Objects locked in multiple requests (#7178)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-01 18:31:57 +02:00
Marc Bernard
e7af0fb6a0
Fix "Maximum number of GUI sessions reached" (#7176)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-04-01 18:07:14 +02:00
Lars Hvam
0ea8aa0f43
update npm dependencies (#7167) 2025-04-01 18:03:01 +02:00
Marc Bernard
5145a6691f
Refactor repo type in overview (#7177) 2025-04-01 16:07:22 +02:00
Marc Bernard
74c0979a8c
Remove http-agent from factory (#7182)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-04-01 06:57:55 +02:00
Christian Günter
d9c4483cc2
Fix AFF unit tests for lower releases (#7181)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-03-31 13:55:41 +02:00
Marc Bernard
a0e7a47f7a
Refactor: Decouple code inspection from factory (#7180)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-03-31 10:43:06 +02:00
Marc Bernard
bc104e396e
Add "Refresh" to repository list (#7179) 2025-03-31 10:14:41 +02:00
Marc Bernard
8e02089f8f
Add "Back" button to diff and where-used pages (#7174)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-03-29 14:05:18 +01:00
Jon Friesen
8984655d86
delete obsolete objects when pulling in the bgd (#7170)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-03-29 12:48:56 +01:00
Christian Günter
0af09e13bd
add pragma for secondary key warnings (#7173)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-03-29 12:43:01 +01:00
Christian Günter
464afa8193
Page Stage: fix case logic (#7168)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-03-29 12:37:24 +01:00
Marc Bernard
b45a4969ba
Fix syntax errors in lower releases (table keys) (#7172)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-03-29 10:10:48 +01:00
Christian Günter
ec12f18b62
using existing secondary keys (#7169) 2025-03-29 08:34:20 +01:00
Marc Bernard
aa6e97ac99
Replace sotr_head* update with API (#7165)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-03-25 15:24:17 +01:00
Lars Hvam
1557d8c295
add back button to stage page (#7166) 2025-03-25 15:06:59 +01:00
Christian Günter
90219ae271
add actionbars to command palette (F1) (#7164)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-03-24 19:26:10 +01:00
Lars Hvam
1ef41d3f77
OO factory, fix type (#7163) 2025-03-24 17:37:35 +01:00
Mike Pokraka
18cf90740d
Fix type mismatch dump (#7162) 2025-03-24 15:53:32 +01:00
Marc Bernard
bfc2518658
Feature: Change Repo Package (#7131)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-03-24 14:31:43 +01:00
Lars Hvam
079e7ce797
refactor zcl_abapgit_abap_language_vers testclass (#7160) 2025-03-24 14:21:08 +01:00
Lars Hvam
dd9790d9bd
update npm + actions dependencies (#7157)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-03-14 10:02:43 +01:00
github-actions[bot]
4469771f01
ajson, Automatic Update (#7158)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: larshp <larshp@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-03-13 16:29:54 +01:00
Marc Bernard
d374436ae3
Refactor: Decouple staging logic from factory (#7155)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-03-13 16:19:29 +01:00
Marc Bernard
2f0281b6ed
Fix unit tests for non-Unicode systems (#7151) 2025-03-13 16:14:41 +01:00
Łukasz Pęgiel
39fe716022
Staging issue when folder name is in uppercase (#7150)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
2025-03-10 20:01:22 +01:00
Ben9ka
adc1dad930
Fix http service githandler in older releases (#7149)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-02-27 09:26:31 +01:00
Marc Bernard
91dd6873ab
Fix highlight of CR, LF, CRLF (#7153)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-02-23 13:28:19 +01:00
Marc Bernard
ae9ec4c141
Fix version badge (#7152) 2025-02-23 13:12:02 +01:00
Marc Bernard
90cb2201fa
Fix dump in non-Unicode systems (#7146)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-02-22 15:50:21 +01:00
Mike Pokraka
188bf8d69a
Filter nonexistent FMs from inconsistent FUGR (#7147)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-02-17 11:52:23 +01:00
Marc Bernard
626f23d72a
Exit: Enhance any toolbar (#7132)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-02-15 09:24:33 +01:00
Marc Bernard
2814ade981
Fix saving inconsistent default transport (#7144)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-02-14 19:08:07 +01:00
Marc Bernard
d99cc7a9cf
Fix color of selector (#7141)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
2025-02-13 15:31:33 +01:00
Ben9ka
f45425f665
Added support for COTA - Communication Target (#7143) 2025-02-06 14:27:50 +01:00
Florian Dupret
160f10c38b
Execute WDCC after import method (#7140)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-02-06 10:44:14 +01:00
Marc Bernard
f6683582d1
Remove unused exceptions (#7145) 2025-02-05 23:40:51 +01:00
Fabian Lupa
527d512409
Enable ABAP Language Version support for DDLX (#7136)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-01-23 21:31:02 +01:00
Fabian Lupa
99fe0f5240
Enable ABAP Language Version support for DCLS (#7135)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-01-23 21:29:14 +01:00
Fabian Lupa
c08d33bb4a
Enable ABAP Language Version support for DDLS (#7134)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-01-23 21:23:25 +01:00
Christian Günter
5182ed6213
Patch: fix 'invalid filename' error if filename is empty (#7126)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2025-01-23 12:10:56 +01:00
Christian Günter
fd38cd873c
add edge case for diff calculation - tab vs space (#7130)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-01-16 09:38:29 +01:00
Marc Bernard
bdbfd57248
CHDO: Refactor logic for generated objects (#7129)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2025-01-15 17:41:04 +01:00
Marc Bernard
ee9e32d442
Refactor zcx_abapgit_exception (#7123)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
2025-01-10 13:01:11 +01:00
Marc Bernard
3daf4d3f5c
Fix dump in language mapping (#7124)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
2025-01-08 19:25:52 +01:00
254 changed files with 7172 additions and 3792 deletions

View File

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

View File

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

View File

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

View File

@ -3,8 +3,7 @@
[![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)
[![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.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)
[![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)
<!--
<picture>

View File

@ -225,8 +225,8 @@
"^if_adt_lock_handle$",
"^if_aff_",
"^if_satc_ci_variant_access$",
"^if_saunit_internal_result$",
"^if_saunit_internal_result_type$",
"^if_saunit_internal_result$",
"^if_srvd_types$",
"^if_wb_adt_plugin_resource_co$",
"^if_wb_object_data_selection_co$",
@ -234,6 +234,7 @@
"^if_xco_",
"^int4$",
"^numc2$",
"^pgmid$",
"^sabp_t_tadir_keys$",
"^sap_bool$",
"^srcsystem$",
@ -318,6 +319,9 @@
"message_exists": true,
"method_implemented_twice": true,
"method_length": {
"exclude": [
"zcl_abapgit_convert.clas.locals_imp.abap"
],
"checkForms": true,
"errorWhenEmpty": false,
"ignoreTestClasses": false,

105
deps/e070.tabl.xml vendored Normal file
View File

@ -0,0 +1,105 @@
<?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 Normal file
View File

@ -0,0 +1,116 @@
<?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 Normal file
View File

@ -0,0 +1,158 @@
<?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 Normal file
View File

@ -0,0 +1,54 @@
<?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,5 +1,8 @@
INTERFACE if_package PUBLIC.
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 application_component TYPE string READ-ONLY.
DATA transport_layer TYPE string READ-ONLY.

4
deps/tcdrs.tabl.xml vendored
View File

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

View File

@ -5,10 +5,10 @@
"test": "npm run eslint && npm run abaplint",
"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 ..",
"build": "rm -rf output && abap_transpile test/abap_transpile.json",
"unit": "npm run build && echo RUNNING && node output/index.mjs",
"coverage": "npm run unit && c8 node output/index.mjs && c8 report --reporter=html",
"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 && cp -f src/ui/zabapgit_icon_font.w3mi.data.woff output/ && echo RUNNING && node output/index.mjs",
"build": "rm -rf output && abap_transpile test/abap_transpile.json && cp -f src/ui/zabapgit_icon_font.w3mi.data.woff output/",
"unit": "npm run build && echo RUNNING && node output/index.mjs --skip-critical",
"coverage": "npm run unit && c8 node output/index.mjs --skip-critical && c8 report --reporter=html",
"integration": "npm run build && echo RUNNING && node output/index.mjs --only-critical",
"abaplint": "abaplint --format codeframe",
"eslint": "eslint src"
},
@ -23,14 +23,14 @@
]
},
"devDependencies": {
"@abaplint/cli": "^2.113.82",
"@abaplint/database-sqlite": "^2.10.20",
"@abaplint/runtime": "^2.10.23",
"@abaplint/cli": "^2.113.110",
"@abaplint/database-sqlite": "^2.10.24",
"@abaplint/runtime": "^2.10.44",
"express": "^4.21.2",
"@abaplint/transpiler-cli": "^2.10.23",
"globals": "^15.13.0",
"@abaplint/transpiler-cli": "^2.10.44",
"globals": "^16.0.0",
"abapmerge": "^0.16.6",
"c8": "^10.1.3",
"eslint": "^9.17.0"
"eslint": "^9.25.1"
}
}

View File

@ -31,7 +31,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CLASS zcl_abapgit_background IMPLEMENTATION.
METHOD dequeue.
@ -135,9 +135,10 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
METHOD run.
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
lo_repo TYPE REF TO zcl_abapgit_repo_online,
lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys,
DATA:
li_repo TYPE REF TO zif_abapgit_repo,
li_repo_online TYPE REF TO zif_abapgit_repo_online,
lt_list TYPE zif_abapgit_persist_background=>ty_background_keys,
li_background TYPE REF TO zif_abapgit_background,
li_log TYPE REF TO zif_abapgit_log,
lx_error TYPE REF TO zcx_abapgit_exception,
@ -152,8 +153,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
RETURN.
ENDTRY.
CREATE OBJECT lo_per.
lt_list = lo_per->list( ).
lt_list = zcl_abapgit_persist_factory=>get_background( )->list( ).
WRITE: / 'Background mode'.
@ -161,12 +161,13 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CREATE OBJECT li_log TYPE zcl_abapgit_log.
TRY.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ).
lv_repo_name = lo_repo->get_name( ).
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ).
li_repo_online ?= li_repo.
lv_repo_name = li_repo->get_name( ).
WRITE: / <ls_list>-method, lv_repo_name.
zcl_abapgit_login_manager=>set(
iv_uri = lo_repo->get_url( )
iv_uri = li_repo_online->get_url( )
iv_username = <ls_list>-username
iv_password = <ls_list>-password ).
@ -174,7 +175,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CREATE OBJECT li_background TYPE (<ls_list>-method).
li_background->run(
io_repo = lo_repo
ii_repo_online = li_repo_online
ii_log = li_log
it_settings = <ls_list>-settings ).
CATCH cx_sy_create_object_error.
@ -183,7 +184,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
ENDTRY.
" Decrease memory usage for repository already processed (but keep log)
lo_repo->refresh(
li_repo->refresh(
iv_drop_cache = abap_true
iv_drop_log = abap_false ).
CATCH zcx_abapgit_exception INTO lx_error.

View File

@ -30,12 +30,14 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
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.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite.
li_repo = ii_repo_online.
ls_checks = io_repo->deserialize_checks( ).
ls_checks = li_repo->deserialize_checks( ).
LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>.
<ls_overwrite>-decision = zif_abapgit_definitions=>c_yes.
@ -46,7 +48,14 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
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 ).
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 .
METHODS push_auto
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo_online
!ii_repo_online TYPE REF TO zif_abapgit_repo_online
RAISING
zcx_abapgit_exception .
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 .
METHODS push_deletions
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo_online
!ii_repo_online TYPE REF TO zif_abapgit_repo_online
!is_files TYPE zif_abapgit_definitions=>ty_stage_files
RAISING
zcx_abapgit_exception .
@ -69,12 +69,12 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
METHOD determine_user_details.
DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record.
DATA li_user_record TYPE REF TO zif_abapgit_user_record.
lo_user_record = zcl_abapgit_user_record=>get_instance( iv_changed_by ).
rs_user-name = lo_user_record->get_name( ).
rs_user-email = lo_user_record->get_email( ).
li_user_record = zcl_abapgit_env_factory=>get_user_record( ).
rs_user-name = li_user_record->get_name( iv_changed_by ).
rs_user-email = li_user_record->get_email( iv_changed_by ).
* If no email, fall back to localhost/default email
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_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ).
LOOP AT ls_files-local ASSIGNING <ls_local>.
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 ).
io_repo->push( is_comment = ls_comment
ii_repo_online->push( is_comment = ls_comment
io_stage = lo_stage ).
ENDLOOP.
IF lines( ls_files-remote ) > 0.
push_deletions( io_repo = io_repo
push_deletions( ii_repo_online = ii_repo_online
is_files = ls_files ).
ENDIF.
@ -212,7 +212,7 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
ls_comment-committer-name = 'Deletion'.
ls_comment-committer-email = 'deletion@localhost'.
io_repo->push( is_comment = ls_comment
ii_repo_online->push( is_comment = ls_comment
io_stage = lo_stage ).
ENDMETHOD.
@ -237,14 +237,14 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files.
mi_log = ii_log.
ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
ii_log->add_info( 'Nothing to stage' ).
RETURN.
ENDIF.
push_auto( io_repo ).
push_auto( ii_repo_online ).
ENDMETHOD.
ENDCLASS.

View File

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

View File

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

View File

@ -21,7 +21,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_for_obj
IMPORTING
!iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name
RETURNING
@ -36,7 +36,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_from_db
IMPORTING
!iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name
RETURNING
@ -51,7 +51,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object type is not lockable
METHODS is_object_locked_in_transport
IMPORTING
!iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name
RETURNING
@ -64,7 +64,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_lockable | Lockable
METHODS is_object_type_lockable
IMPORTING
!iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype
RETURNING
VALUE(rv_lockable) TYPE abap_bool .
@ -74,7 +74,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_transportable | Transportable
METHODS is_object_type_transportable
IMPORTING
!iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype
RETURNING
VALUE(rv_transportable) TYPE abap_bool .
@ -89,6 +89,9 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA: lv_object_lockable TYPE abap_bool,
lv_locked TYPE abap_bool,
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_tr_object_name TYPE trobj_name.
@ -104,6 +107,8 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
we_locked = lv_locked
we_lock_order = lv_transport_request
we_lock_task = lv_task
TABLES
wt_tlock = lt_tlock
EXCEPTIONS
empty_key = 1
no_systemname = 2
@ -122,7 +127,15 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ).
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.
ELSE.
rv_transport = zif_abapgit_definitions=>c_multiple_transports.
ENDIF.
ENDMETHOD.
@ -470,8 +483,12 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
WHERE object = ls_lock_key-obj
AND hikey >= ls_lock_key-low
AND lokey <= ls_lock_key-hi. "#EC PORTABLE
IF lv_request IS INITIAL.
lv_request = <ls_tlock>-trkorr.
ELSE.
lv_request = zif_abapgit_definitions=>c_multiple_transports.
EXIT.
ENDIF.
ENDLOOP.
ELSEIF is_object_type_transportable( <ls_item>-obj_type ) = abap_true.
lv_request = get_current_transport_from_db(

View File

@ -5,19 +5,14 @@ CLASS zcl_abapgit_default_transport DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_default_transport.
METHODS
constructor
RAISING
zcx_abapgit_exception.
METHODS constructor.
PROTECTED SECTION.
PRIVATE SECTION.
DATA mv_is_set_by_abapgit TYPE abap_bool .
DATA ms_save TYPE e070use .
METHODS store
RAISING
zcx_abapgit_exception .
METHODS store.
METHODS restore
RAISING
zcx_abapgit_exception .
@ -35,7 +30,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
CLASS zcl_abapgit_default_transport IMPLEMENTATION.
METHOD clear.
@ -116,7 +111,11 @@ CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION.
METHOD store.
TRY.
ms_save = zif_abapgit_default_transport~get( ).
CATCH zcx_abapgit_exception.
CLEAR ms_save.
ENDTRY.
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.
@ -146,7 +146,7 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
lt_objects TYPE scts_tadir,
lt_objects_all LIKE lt_objects,
ls_e071 LIKE LINE OF rt_objects,
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
lv_package TYPE zif_abapgit_persistence=>ty_repo-package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
@ -154,8 +154,8 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
<lv_package> TYPE devclass,
<ls_object> TYPE tadir.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = lo_repo->get_package( ).
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = li_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages.

View File

@ -7,7 +7,7 @@ CLASS zcl_abapgit_transport_2_branch DEFINITION
METHODS create
IMPORTING
!io_repository TYPE REF TO zcl_abapgit_repo_online
!ii_repo_online TYPE REF TO zif_abapgit_repo_online
!is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch
!it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING
@ -46,13 +46,13 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
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 ) ).
io_repository->create_branch( lv_branch_name ).
ii_repo_online->create_branch( lv_branch_name ).
CREATE OBJECT lo_stage.
ls_stage_objects = zcl_abapgit_factory=>get_stage_logic( )->get( io_repository ).
ls_stage_objects = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ).
lt_object_statuses = zcl_abapgit_repo_status=>calculate( io_repository ).
lt_object_statuses = zcl_abapgit_repo_status=>calculate( ii_repo_online ).
stage_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 ).
io_repository->push( is_comment = ls_comment
ii_repo_online->push( is_comment = ls_comment
io_stage = lo_stage ).
ENDMETHOD.

View File

@ -38,9 +38,10 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
LOOP AT mt_transport_objects INTO ls_transport_object.
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
AND obj_type = ls_transport_object-object
AND NOT lstate IS INITIAL.
AND NOT lstate IS INITIAL ##PRIMKEY[SEC_KEY].
CASE ls_object_status-lstate.
WHEN zif_abapgit_definitions=>c_state-added OR zif_abapgit_definitions=>c_state-modified.

View File

@ -44,7 +44,7 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
zcx_abapgit_exception .
METHODS determine_transport_request
IMPORTING
io_repo TYPE REF TO zcl_abapgit_repo
ii_repo TYPE REF TO zif_abapgit_repo
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING
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.
" If transport keeps empty here, it'll requested later via popup.
rv_transport_request = io_repo->get_local_settings( )-customizing_request.
rv_transport_request = ii_repo->get_local_settings( )-customizing_request.
li_exit->determine_transport_request(
EXPORTING
io_repo = io_repo
ii_repo = ii_repo
iv_transport_type = iv_transport_type
CHANGING
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-task = zif_abapgit_cts_api=>c_transport_type-cust_task.
rs_checks-transport = determine_transport_request(
io_repo = io_repo
ii_repo = ii_repo
iv_transport_type = rs_checks-type ).
ENDIF.

View File

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

View File

@ -411,19 +411,11 @@ CLASS ltcl_abap_language_version IMPLEMENTATION.
METHOD is_import_allowed.
DATA lv_version TYPE string.
DATA ls_clskey TYPE seoclskey.
ls_clskey-clsname = c_language_cfg.
" 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
CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK'
EXPORTING
clskey = ls_clskey
EXCEPTIONS
OTHERS = 1.
mv_has_language_cfg = boolc( sy-subrc = 0 ).
mv_has_language_cfg = zcl_abapgit_oo_factory=>get_by_type( 'CLAS' )->exists( c_language_cfg ).
LOOP AT mt_versions INTO lv_version.

View File

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

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

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

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

@ -1,45 +1,26 @@
CLASS zcl_abapgit_user_record DEFINITION
PUBLIC
FINAL
CREATE PRIVATE.
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_env_factory.
PUBLIC SECTION.
CLASS-METHODS reset.
CLASS-METHODS get_instance
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.
INTERFACES zif_abapgit_user_record.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_user,
user TYPE sy-uname,
o_user TYPE REF TO zcl_abapgit_user_record,
name TYPE string,
email TYPE string,
END OF ty_user.
CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user.
DATA: BEGIN OF ms_user,
name TYPE string,
email TYPE string,
END OF ms_user .
METHODS check_user_exists
CLASS-METHODS check_user_exists
IMPORTING
iv_user TYPE sy-uname
EXPORTING
@ -48,35 +29,51 @@ CLASS zcl_abapgit_user_record DEFINITION
RAISING
zcx_abapgit_exception.
METHODS get_user_dtls_from_other_clnt
CLASS-METHODS get_user_dtls_from_other_clnt
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.
CLASS zcl_abapgit_user_record IMPLEMENTATION.
CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION.
METHOD get_title.
* the queried username might not exist, so this method is static
METHOD build_cache.
DATA ls_user_address TYPE addr3_val.
CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
" Get user details
TRY.
check_user_exists(
EXPORTING
user_name = iv_username
iv_user = iv_user
IMPORTING
user_address = ls_user_address
EXCEPTIONS
user_address_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
rv_title = ls_user_address-name_text.
ENDIF.
ev_fullname = rs_user-name
ev_email = rs_user-email ).
CATCH zcx_abapgit_exception.
" Could not find user, try to get from other clients
rs_user = get_user_dtls_from_other_clnt( iv_user ).
ENDTRY.
rs_user-user = iv_user.
INSERT rs_user INTO TABLE gt_user.
ENDMETHOD.
METHOD check_user_exists.
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
@ -109,63 +106,6 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
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.
CONSTANTS lc_cc_category TYPE string VALUE 'C'.
@ -179,7 +119,7 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
ORDER BY PRIMARY KEY.
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name, ms_user-email)
SELECT SINGLE u~bname p~name_text a~smtp_addr INTO (rs_user-user, rs_user-name, rs_user-email)
FROM usr21 AS u
INNER JOIN adrp AS p ON p~persnumber = u~persnumber
AND p~client = u~mandt
@ -200,7 +140,61 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
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.
CLEAR gt_user.
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.

View File

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

View File

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

@ -0,0 +1,15 @@
<?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.
gi_exit->determine_transport_request(
EXPORTING
io_repo = io_repo
ii_repo = ii_repo
iv_transport_type = iv_transport_type
CHANGING
cv_transport_request = cv_transport_request ).
@ -328,6 +328,18 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_exit~enhance_any_toolbar.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->enhance_any_toolbar( io_menu ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_exit~enhance_repo_toolbar.
IF gi_exit IS NOT INITIAL.
@ -442,7 +454,7 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
gi_exit->validate_before_push(
is_comment = is_comment
io_stage = io_stage
io_repo = io_repo ).
ii_repo_online = ii_repo_online ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.

View File

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

View File

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

View File

@ -62,7 +62,7 @@ CLASS zcl_abapgit_pr_enumerator IMPLEMENTATION.
DATA lv_user TYPE string.
DATA lv_repo TYPE string.
li_agent = zcl_abapgit_factory=>get_http_agent( ).
li_agent = zcl_abapgit_http_agent=>create( ).
FIND ALL OCCURRENCES OF REGEX 'github\.com\/([^\/]+)\/([^\/]+)'
IN iv_repo_url

View File

@ -1,7 +1,6 @@
CLASS zcl_abapgit_code_inspector DEFINITION
PUBLIC
CREATE PROTECTED
GLOBAL FRIENDS zcl_abapgit_factory .
CREATE PROTECTED.
PUBLIC SECTION.
@ -13,6 +12,19 @@ CLASS zcl_abapgit_code_inspector DEFINITION
RAISING
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.
DATA mv_package TYPE devclass .
@ -35,6 +47,15 @@ CLASS zcl_abapgit_code_inspector DEFINITION
VALUE(rv_skip) TYPE abap_bool.
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_summary TYPE string.
@ -266,6 +287,28 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
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.
io_inspection->run(
@ -290,6 +333,24 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
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.
DATA ls_program_type TYPE subc.

View File

@ -848,6 +848,8 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
DATA lv_path_pattern TYPE string.
CREATE OBJECT lo_section.
lo_section->mi_custom_mapping = mi_custom_mapping.
lv_normalized_path = lcl_utils=>normalize_path( iv_path ).
lv_path_len = strlen( lv_normalized_path ).
ls_path_parts = lcl_utils=>split_path( lv_normalized_path ).

View File

@ -72,7 +72,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
ENDIF.
LOOP AT it_skip_paths INTO lv_s.
lv_s = to_lower( lv_s ).
lv_s = condense( lv_s ).
APPEND lv_s TO lt_tab.
ENDLOOP.
@ -83,7 +83,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
DELETE lt_tab INDEX sy-tabix.
CONTINUE.
ENDIF.
<s> = condense( to_lower( <s> ) ).
<s> = condense( <s> ).
ENDLOOP.
ENDIF.

View File

@ -10,6 +10,7 @@ CLASS ltcl_filters_test DEFINITION FINAL
METHODS path_filter_w_patterns 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 mixed_case_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
@ -227,4 +228,36 @@ CLASS ltcl_filters_test IMPLEMENTATION.
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.

View File

@ -358,6 +358,7 @@ CLASS ltcl_fields DEFINITION FINAL FOR TESTING
to_json_without_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_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.
@ -403,6 +404,33 @@ CLASS ltcl_fields IMPLEMENTATION.
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.

View File

@ -1,7 +1,7 @@
INTERFACE zif_abapgit_ajson
PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT
CONSTANTS version TYPE string VALUE 'v1.1.11'. "#EC NOTEXT
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT

View File

@ -52,6 +52,7 @@ CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION.
register( 'CHKC' ).
register( 'CHKO' ).
register( 'CHKV' ).
register( 'COTA' ).
register( 'DRTY' ).
register( 'DTEB' ).
register( 'DSFI' ).

View File

@ -30,7 +30,7 @@ CLASS zcl_abapgit_object_common_aff DEFINITION
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
TYPES: BEGIN OF ty_extension_mapper_pair,
@ -106,7 +106,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
ENDTRY.
IF lv_is_supported IS INITIAL.
zcx_abapgit_exception=>raise( |Object type { is_item-obj_type } is not supported by this system| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDIF.
ENDMETHOD.

View File

@ -228,10 +228,6 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
TRY.
lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ).
CATCH cx_root.
" System doesn't support AFF with ABAP language version
RETURN.
ENDTRY.
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION')
RECEIVING
@ -261,6 +257,11 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
act = lv_act_setting_user
exp = sy-uname ).
CATCH cx_root.
" System doesn't support AFF with ABAP language version
RETURN.
ENDTRY.
ENDMETHOD.
METHOD abap_language_version_standard.

View File

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

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

@ -6,13 +6,44 @@ CLASS zcl_abapgit_object_smbc DEFINITION
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_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.
@ -24,15 +55,12 @@ CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION.
FIELD-SYMBOLS: <ls_smbc_config> TYPE any,
<lv_smbc_changed_by> TYPE any.
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').
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.
CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ')
EXPORTING

View File

@ -8,13 +8,44 @@ CLASS zcl_abapgit_object_uiad DEFINITION
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.
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.
@ -27,16 +58,11 @@ CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION.
FIELD-SYMBOLS: <ls_metadata> TYPE any,
<lv_changed_by> TYPE any.
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').
ASSIGN lr_data->* TO <ls_metadata>.
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
zcx_abapgit_exception=>raise( 'Object UIAD not supported' ).
ENDTRY.
TRY.
lv_object_key = ms_item-obj_name.

View File

@ -8,13 +8,44 @@ CLASS zcl_abapgit_object_uipg DEFINITION
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_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.

View File

@ -8,13 +8,42 @@ CLASS zcl_abapgit_object_uist DEFINITION
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_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.

View File

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

View File

@ -6,7 +6,7 @@ CLASS zcl_abapgit_file_deserialize DEFINITION
CLASS-METHODS get_results
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
RETURNING
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.
lt_results = filter_files_to_deserialize(
it_results = zcl_abapgit_repo_status=>calculate( io_repo )
it_results = zcl_abapgit_repo_status=>calculate( ii_repo )
ii_log = ii_log ).
rt_results = prioritize_deser(

View File

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

View File

@ -6,7 +6,7 @@ CLASS zcl_abapgit_objects_check DEFINITION
CLASS-METHODS deserialize_checks
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING
@ -14,7 +14,7 @@ CLASS zcl_abapgit_objects_check DEFINITION
CLASS-METHODS class_constructor.
CLASS-METHODS checks_adjust
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
@ -39,7 +39,7 @@ CLASS zcl_abapgit_objects_check DEFINITION
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt.
CLASS-METHODS warning_package_adjust
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!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
@ -48,14 +48,14 @@ CLASS zcl_abapgit_objects_check DEFINITION
CLASS-METHODS warning_package_find
IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
RETURNING
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS determine_transport_request
IMPORTING
io_repo TYPE REF TO zcl_abapgit_repo
ii_repo TYPE REF TO zif_abapgit_repo
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING
VALUE(rv_transport_request) TYPE trkorr.
@ -81,7 +81,7 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
warning_package_adjust(
EXPORTING
io_repo = io_repo
ii_repo = ii_repo
it_overwrite = is_checks-warning_package
CHANGING
ct_results = ct_results ).
@ -134,23 +134,23 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
li_package TYPE REF TO zif_abapgit_sap_package.
" get unfiltered status to evaluate properly which warnings are required
lt_results = zcl_abapgit_repo_status=>calculate( io_repo ).
lt_results = zcl_abapgit_repo_status=>calculate( ii_repo ).
check_multiple_files( lt_results ).
rs_checks-overwrite = warning_overwrite_find( lt_results ).
rs_checks-warning_package = warning_package_find(
io_repo = io_repo
ii_repo = ii_repo
it_results = lt_results ).
IF lines( lt_results ) > 0.
li_package = zcl_abapgit_factory=>get_sap_package( io_repo->get_package( ) ).
li_package = zcl_abapgit_factory=>get_sap_package( ii_repo->get_package( ) ).
rs_checks-transport-required = li_package->are_changes_recorded_in_tr_req( ).
IF NOT rs_checks-transport-required IS INITIAL.
rs_checks-transport-type = li_package->get_transport_type( ).
rs_checks-transport-transport = determine_transport_request(
io_repo = io_repo
ii_repo = ii_repo
iv_transport_type = rs_checks-transport-type ).
ENDIF.
ENDIF.
@ -162,11 +162,11 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
" Use transport from repo settings if maintained, or determine via user exit.
" If transport keeps empty here, it'll requested later via popup.
rv_transport_request = io_repo->get_local_settings( )-transport_request.
rv_transport_request = ii_repo->get_local_settings( )-transport_request.
gi_exit->determine_transport_request(
EXPORTING
io_repo = io_repo
ii_repo = ii_repo
iv_transport_type = iv_transport_type
CHANGING
cv_transport_request = rv_transport_request ).
@ -310,7 +310,7 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
* make sure to get the current status, as something might have changed in the meanwhile
lt_overwrite = warning_package_find(
it_results = ct_results
io_repo = io_repo ).
ii_repo = ii_repo ).
LOOP AT lt_overwrite ASSIGNING <ls_overwrite>.
@ -351,8 +351,8 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
LOOP AT it_results ASSIGNING <ls_result> WHERE match IS INITIAL AND packmove IS INITIAL.
lv_package = lo_folder_logic->path_to_package(
iv_top = io_repo->get_package( )
io_dot = io_repo->get_dot_abapgit( )
iv_top = ii_repo->get_package( )
io_dot = ii_repo->get_dot_abapgit( )
iv_path = <ls_result>-path
iv_create_if_not_exists = abap_false ).

View File

@ -128,6 +128,12 @@ CLASS zcl_abapgit_serialize DEFINITION
RETURNING
VALUE(rv_result) TYPE abap_bool.
METHODS is_no_parallel
IMPORTING
!iv_object_type TYPE tadir-object
RETURNING
VALUE(rv_result) TYPE abap_bool.
ENDCLASS.
@ -272,9 +278,11 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ms_i18n_params-main_language_only = is_local_settings-main_language_only.
ENDIF.
IF mo_dot_abapgit IS NOT INITIAL.
CREATE OBJECT mo_abap_language_version
EXPORTING
io_dot_abapgit = mo_dot_abapgit.
ENDIF.
ENDMETHOD.
@ -312,6 +320,21 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ASSERT rv_processes >= 1.
" Avoid going over the maximum available user sessions
IF sy-batch IS INITIAL.
lv_available_sessions = zcl_abapgit_factory=>get_environment( )->get_available_user_sessions( ).
IF lv_available_sessions = 0.
" No available session -> disable parallel processing
rv_processes = 1.
ELSEIF rv_processes > lv_available_sessions.
rv_processes = lv_available_sessions.
ENDIF.
ENDIF.
ASSERT rv_processes >= 1.
" Exit setting has highest priority to change maximum sessions
li_exit = zcl_abapgit_exit=>get_instance( ).
li_exit->change_max_parallel_processes(
EXPORTING
@ -319,17 +342,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
CHANGING
cv_max_processes = rv_processes ).
ASSERT rv_processes >= 1. " check exit above
" Avoid going over the maximum available user sessions
IF sy-batch IS INITIAL.
lv_available_sessions = zcl_abapgit_factory=>get_environment( )->get_available_user_sessions( ).
IF rv_processes > lv_available_sessions AND lv_available_sessions <> 0.
rv_processes = lv_available_sessions.
ENDIF.
ENDIF.
ASSERT rv_processes >= 1.
ENDMETHOD.
@ -515,6 +527,18 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ENDMETHOD.
METHOD is_no_parallel.
" Currently know object types that do not support parallel processing:
" ECTC/ECTD - ECATT Test Config/Data (see #7148)
" Should this list become longer, it should become a flag of the object type serializer
IF iv_object_type = 'ECTC' OR iv_object_type = 'ECTD'.
rv_result = abap_true.
ENDIF.
ENDMETHOD.
METHOD is_parallelization_possible.
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
@ -684,7 +708,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
iv_count = lv_count )->start( ).
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
IF lv_max = 1.
IF lv_max = 1 OR is_no_parallel( <ls_tadir>-object ) = abap_true.
li_progress->show(
iv_current = sy-tabix
iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } thread| ).

View File

@ -84,7 +84,7 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
DATA:
mv_group TYPE rzlli_apcl,
mv_is_merged TYPE abap_bool,
mv_available_sessions TYPE i,
mv_available_sessions TYPE i VALUE 6, " system default
mv_free_work_processes TYPE i.
ENDCLASS.
@ -231,6 +231,9 @@ CLASS ltd_exit IMPLEMENTATION.
METHOD zif_abapgit_exit~determine_transport_request.
ENDMETHOD.
METHOD zif_abapgit_exit~enhance_any_toolbar.
ENDMETHOD.
METHOD zif_abapgit_exit~enhance_repo_toolbar.
ENDMETHOD.
@ -392,10 +395,12 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
determine_max_processes_free FOR TESTING RAISING zcx_abapgit_exception,
det_max_processes_not_free FOR TESTING RAISING zcx_abapgit_exception,
det_max_proc_none_available FOR TESTING RAISING zcx_abapgit_exception,
det_max_proc_amdahls_law FOR TESTING RAISING zcx_abapgit_exception,
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
determine_max_processes_exit FOR TESTING RAISING zcx_abapgit_exception,
determine_max_proc_exit_lower FOR TESTING RAISING zcx_abapgit_exception,
determine_max_proc_exit_higher FOR TESTING RAISING zcx_abapgit_exception,
determine_max_processes_capped FOR TESTING RAISING zcx_abapgit_exception,
force FOR TESTING RAISING zcx_abapgit_exception,
@ -457,19 +462,18 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD teardown.
CLEAR: mo_cut->gv_max_processes.
ENDMETHOD.
METHOD determine_max_processes_free.
given_parallel_proc_disabled( abap_false ).
given_is_merged( abap_false ).
given_free_work_processes( 10 ).
given_available_sessions( 10 ).
when_determine_max_processes( ).
@ -477,7 +481,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD det_max_processes_not_free.
given_parallel_proc_disabled( abap_false ).
@ -490,12 +493,25 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD det_max_proc_none_available.
given_parallel_proc_disabled( abap_false ).
given_is_merged( abap_false ).
given_free_work_processes( 10 ).
given_available_sessions( 0 ).
when_determine_max_processes( ).
then_we_shd_have_n_processes( 1 ).
ENDMETHOD.
METHOD det_max_proc_amdahls_law.
given_parallel_proc_disabled( abap_false ).
given_is_merged( abap_false ).
given_free_work_processes( 50 ).
given_available_sessions( 50 ).
when_determine_max_processes( ).
@ -503,7 +519,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD determine_max_processes_no_pp.
given_parallel_proc_disabled( abap_true ).
@ -515,7 +530,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD determine_max_processes_merged.
given_parallel_proc_disabled( abap_false ).
@ -527,8 +541,10 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD determine_max_proc_exit_lower.
METHOD determine_max_processes_exit.
given_free_work_processes( 26 ).
given_available_sessions( 11 ).
given_exit_chg_max_processes( 7 ).
when_determine_max_processes( ).
@ -536,6 +552,17 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD determine_max_proc_exit_higher.
given_free_work_processes( 20 ).
given_available_sessions( 15 ).
given_exit_chg_max_processes( 30 ).
when_determine_max_processes( ).
then_we_shd_have_n_processes( 30 ).
ENDMETHOD.
METHOD determine_max_processes_capped.
given_parallel_proc_disabled( abap_false ).
@ -549,7 +576,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD force.
when_determine_max_processes( abap_true ).
@ -558,14 +584,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD given_parallel_proc_disabled.
mo_settings_double->set_parallel_proc_disabled( iv_parallel_proc_disabled ).
ENDMETHOD.
METHOD given_is_merged.
mo_environment_double->set_is_merged( iv_is_merged ).
@ -578,14 +602,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD given_free_work_processes.
mo_environment_double->set_free_work_processes( iv_free_work_processes ).
ENDMETHOD.
METHOD when_determine_max_processes.
mv_act_processes = mo_cut->determine_max_processes(
@ -594,7 +616,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD then_we_shd_have_n_processes.
cl_abap_unit_assert=>assert_equals(
@ -603,7 +624,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDMETHOD.
METHOD given_exit_chg_max_processes.
mo_exit->set_max_parallel_processes( iv_max_processes ).
@ -683,7 +703,6 @@ CLASS ltcl_serialize IMPLEMENTATION.
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF lt_tadir.
APPEND INITIAL LINE TO lt_tadir ASSIGNING <ls_tadir>.
<ls_tadir>-object = 'ABCD'.
<ls_tadir>-obj_name = 'OBJECT'.
@ -791,7 +810,6 @@ CLASS ltcl_i18n DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
setup,
test FOR TESTING RAISING zcx_abapgit_exception.
ENDCLASS.
@ -868,4 +886,5 @@ CLASS ltcl_i18n IMPLEMENTATION.
cl_abap_unit_assert=>assert_subrc( ).
ENDMETHOD.
ENDCLASS.

View File

@ -6,7 +6,7 @@ CLASS zcl_abapgit_object_enhs_hook_d DEFINITION PUBLIC.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: BEGIN OF ty_hook_defifnition,
pgmid TYPE pgmid,
pgmid TYPE tadir-pgmid,
obj_name TYPE trobj_name,
obj_type TYPE trobjtype,
main_type TYPE trobjtype,

View File

@ -229,7 +229,6 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
DATA lv_save_sy_langu TYPE sy-langu.
DATA lv_subrc TYPE syst-subrc.
DATA lv_tcode TYPE tcode.
DATA lv_langu_text TYPE string.
DATA lv_msg TYPE c LENGTH 200.
" https://blogs.sap.com/2017/01/13/logon-language-sy-langu-and-rfc/
@ -264,11 +263,7 @@ CLASS zcl_abapgit_gui_jumper IMPLEMENTATION.
WHEN 1.
lv_msg = |Communication error { lv_msg }|.
WHEN 2.
SELECT SINGLE sptxt FROM t002t INTO lv_langu_text WHERE spras = sy-langu AND sprsl = iv_language.
IF sy-subrc <> 0.
lv_langu_text = iv_language.
ENDIF.
lv_msg = |Language { lv_langu_text } ({ zcl_abapgit_convert=>language_sap1_to_sap2( iv_language ) })|
lv_msg = |Language { iv_language } ({ zcl_abapgit_convert=>language_sap1_to_text( iv_language ) })|
&& | is not installed|.
WHEN 3.
lv_msg = |{ lv_subrc }|.

View File

@ -796,9 +796,11 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
METHOD zif_abapgit_oo_object_fnc~exists.
DATA ls_object_name TYPE seoclskey.
ls_object_name = iv_object_name.
CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK'
EXPORTING
clskey = is_object_name
clskey = ls_object_name
EXCEPTIONS
not_specified = 1
not_existing = 2

View File

@ -16,11 +16,14 @@ CLASS zcl_abapgit_oo_factory DEFINITION PUBLIC.
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_oo_factory IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OO_FACTORY IMPLEMENTATION.
METHOD get_by_type.
IF iv_object_type = 'CLAS'.
@ -41,13 +44,13 @@ CLASS zcl_abapgit_oo_factory IMPLEMENTATION.
ls_object_name-clsname = to_upper( iv_object_name ).
CREATE OBJECT li_class TYPE zcl_abapgit_oo_class.
IF li_class->exists( ls_object_name ) = abap_true.
IF li_class->exists( ls_object_name-clsname ) = abap_true.
ri_object_oriented_object = li_class.
RETURN.
ENDIF.
CREATE OBJECT li_interface TYPE zcl_abapgit_oo_interface.
IF li_interface->exists( ls_object_name ) = abap_true.
IF li_interface->exists( ls_object_name-clsname ) = abap_true.
ri_object_oriented_object = li_interface.
RETURN.
ENDIF.
@ -55,5 +58,4 @@ CLASS zcl_abapgit_oo_factory IMPLEMENTATION.
zcx_abapgit_exception=>raise( |{ iv_object_name } is neither a class nor an interface| ).
ENDMETHOD.
ENDCLASS.

View File

@ -291,9 +291,11 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
METHOD zif_abapgit_oo_object_fnc~exists.
DATA ls_object_name TYPE seoclskey.
ls_object_name = iv_object_name.
CALL FUNCTION 'SEO_INTERFACE_EXISTENCE_CHECK'
EXPORTING
intkey = is_object_name
intkey = ls_object_name
EXCEPTIONS
not_specified = 1
not_existing = 2

View File

@ -119,7 +119,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC.
zcx_abapgit_exception,
exists
IMPORTING
is_object_name TYPE seoclskey
iv_object_name TYPE seoclsname
RETURNING
VALUE(rv_exists) TYPE abap_bool,
serialize_abap

View File

@ -10,8 +10,10 @@ CLASS zcl_abapgit_field_rules DEFINITION
CLASS-METHODS create
RETURNING
VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_item,
tabname TYPE tabname,
@ -26,8 +28,10 @@ CLASS zcl_abapgit_field_rules DEFINITION
IMPORTING
iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule
iv_package TYPE devclass
iv_abap_language_version TYPE uccheck OPTIONAL
CHANGING
cv_value TYPE any.
ENDCLASS.
@ -56,6 +60,8 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION.
cv_value = sy-mandt.
WHEN zif_abapgit_field_rules=>c_fill_rule-package.
cv_value = iv_package.
WHEN zif_abapgit_field_rules=>c_fill_rule-abap_language_version.
cv_value = iv_abap_language_version.
ENDCASE.
ENDMETHOD.
@ -111,6 +117,7 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION.
EXPORTING
iv_rule = ls_item-fill_rule
iv_package = iv_package
iv_abap_language_version = iv_abap_language_version
CHANGING
cv_value = <lv_value> ).
ENDIF.

View File

@ -4,6 +4,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
PRIVATE SECTION.
CONSTANTS:
c_abap_cloud TYPE uccheck VALUE '5',
c_package TYPE devclass VALUE '$TMP',
c_table TYPE tabname VALUE 'ZTEST'.
@ -15,6 +16,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
time TYPE t,
ts TYPE timestamp,
tl TYPE timestampl,
alav TYPE uccheck,
END OF ty_test.
DATA mo_cut TYPE REF TO zcl_abapgit_field_rules.
@ -33,6 +35,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
fill5 FOR TESTING,
fill6 FOR TESTING,
fill7 FOR TESTING,
fill8 FOR TESTING,
get_rules
RETURNING
VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules,
@ -57,6 +60,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
EXPORTING
iv_rule = iv_rule
iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING
cv_value = lv_act ).
@ -116,6 +120,12 @@ CLASS ltcl_field_rules IMPLEMENTATION.
iv_exp = '' ).
ENDMETHOD.
METHOD fill8.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version
iv_exp = |{ c_abap_cloud }| ).
ENDMETHOD.
METHOD get_rules.
ri_rules = zcl_abapgit_field_rules=>create( )->add(
@ -137,7 +147,11 @@ CLASS ltcl_field_rules IMPLEMENTATION.
)->add(
iv_table = c_table
iv_field = 'TL'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp
)->add(
iv_table = c_table
iv_field = 'ALAV'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDMETHOD.
@ -159,6 +173,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
ls_act-user = 'FRANK'.
ls_act-date = '20230101'.
ls_act-time = '000001'.
ls_act-alav = '5'. " ABAP Cloud
INSERT ls_act INTO TABLE lt_act.
li_rules = get_rules( ).
@ -218,6 +233,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
EXPORTING
iv_table = c_table
iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING
ct_data = lt_act ).
@ -265,6 +281,9 @@ CLASS ltcl_field_rules IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals(
act = ls_act-time(4)
exp = sy-uzeit(4) ). " avoid comparing seconds
cl_abap_unit_assert=>assert_equals(
act = ls_act-alav
exp = c_abap_cloud ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,6 +1,7 @@
INTERFACE zif_abapgit_field_rules
PUBLIC .
INTERFACE zif_abapgit_field_rules PUBLIC.
TYPES ty_fill_rule TYPE c LENGTH 2.
CONSTANTS:
BEGIN OF c_fill_rule,
date TYPE ty_fill_rule VALUE 'DT',
@ -9,6 +10,7 @@ INTERFACE zif_abapgit_field_rules
user TYPE ty_fill_rule VALUE 'UR',
client TYPE ty_fill_rule VALUE 'CT',
package TYPE ty_fill_rule VALUE 'PK',
abap_language_version TYPE ty_fill_rule VALUE 'AL',
END OF c_fill_rule.
METHODS add
@ -18,15 +20,19 @@ INTERFACE zif_abapgit_field_rules
iv_fill_rule TYPE ty_fill_rule
RETURNING
VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules.
METHODS apply_clear_logic
IMPORTING
iv_table TYPE tabname
CHANGING
ct_data TYPE STANDARD TABLE.
METHODS apply_fill_logic
IMPORTING
iv_table TYPE tabname
iv_package TYPE devclass
iv_abap_language_version TYPE uccheck OPTIONAL
CHANGING
ct_data TYPE STANDARD TABLE.
ENDINTERFACE.

View File

@ -32,6 +32,28 @@ CLASS zcl_abapgit_sap_package IMPLEMENTATION.
ENDMETHOD.
METHOD get_transport_layer.
" Get default transport layer
CALL FUNCTION 'TR_GET_TRANSPORT_TARGET'
EXPORTING
iv_use_default = abap_true
iv_get_layer_only = abap_true
IMPORTING
ev_layer = rv_transport_layer
EXCEPTIONS
wrong_call = 1
invalid_input = 2
cts_initialization_failure = 3
OTHERS = 4.
IF sy-subrc <> 0.
" Return empty layer (i.e. "local workbench request" for the package)
CLEAR rv_transport_layer.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_sap_package~are_changes_recorded_in_tr_req.
DATA: li_package TYPE REF TO if_package.
@ -236,25 +258,35 @@ CLASS zcl_abapgit_sap_package IMPLEMENTATION.
ENDMETHOD.
METHOD get_transport_layer.
METHOD zif_abapgit_sap_package~get.
" Get default transport layer
CALL FUNCTION 'TR_GET_TRANSPORT_TARGET'
DATA li_package TYPE REF TO if_package.
cl_package_factory=>load_package(
EXPORTING
iv_use_default = abap_true
iv_get_layer_only = abap_true
i_package_name = mv_package
IMPORTING
ev_layer = rv_transport_layer
e_package = li_package
EXCEPTIONS
wrong_call = 1
invalid_input = 2
cts_initialization_failure = 3
OTHERS = 4.
object_not_existing = 1
unexpected_error = 2
intern_err = 3
no_access = 4
object_locked_and_modified = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
" Return empty layer (i.e. "local workbench request" for the package)
CLEAR rv_transport_layer.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
rs_package-devclass = li_package->package_name.
rs_package-dlvunit = li_package->software_component.
rs_package-component = li_package->application_component.
rs_package-ctext = li_package->short_text.
rs_package-parentcl = li_package->super_package_name.
rs_package-pdevclass = li_package->transport_layer.
rs_package-as4user = li_package->changed_by.
ENDMETHOD.
@ -358,10 +390,26 @@ CLASS zcl_abapgit_sap_package IMPLEMENTATION.
METHOD zif_abapgit_sap_package~read_description.
DATA li_package TYPE REF TO if_package.
SELECT SINGLE ctext FROM tdevct INTO rv_description
WHERE devclass = mv_package AND spras = sy-langu ##SUBRC_OK.
cl_package_factory=>load_package(
EXPORTING
i_package_name = mv_package
i_force_reload = abap_true
IMPORTING
e_package = li_package
EXCEPTIONS
object_not_existing = 1
unexpected_error = 2
intern_err = 3
no_access = 4
object_locked_and_modified = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
RETURN.
ENDIF.
rv_description = li_package->short_text.
ENDMETHOD.

View File

@ -15,6 +15,11 @@ INTERFACE zif_abapgit_sap_package
as4user TYPE usnam,
END OF ty_create.
METHODS get
RETURNING
VALUE(rs_package) TYPE ty_create
RAISING
zcx_abapgit_exception .
METHODS validate_name
RAISING
zcx_abapgit_exception .
@ -41,14 +46,10 @@ INTERFACE zif_abapgit_sap_package
zcx_abapgit_exception .
METHODS read_description
RETURNING
VALUE(rv_description) TYPE string
RAISING
zcx_abapgit_exception .
VALUE(rv_description) TYPE string.
METHODS read_responsible
RETURNING
VALUE(rv_responsible) TYPE usnam
RAISING
zcx_abapgit_exception .
VALUE(rv_responsible) TYPE usnam.
METHODS create_child
IMPORTING
!iv_child TYPE devclass

View File

@ -84,7 +84,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
METHOD clear_dd03p_fields.
@ -838,6 +838,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
ENDIF.
rv_bool = boolc( sy-subrc = 0 ).
" Skip TABL generated by CHDO
IF rv_bool = abap_true.
SELECT SINGLE tabname FROM tcdrs INTO lv_tabname WHERE tabname = lv_tabname.
IF sy-subrc = 0.
rv_bool = abap_false.
ENDIF.
ENDIF.
ENDMETHOD.

View File

@ -17,7 +17,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
CLASS-METHODS read_sotr
IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR'
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
!io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
@ -27,12 +27,14 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
!et_sotr_use TYPE ty_sotr_use_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS create_sotr
IMPORTING
!iv_package TYPE devclass
!io_xml TYPE REF TO zif_abapgit_xml_input
RAISING
zcx_abapgit_exception.
CLASS-METHODS create_sotr_from_data
IMPORTING
!iv_package TYPE devclass
@ -40,22 +42,33 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
!it_sotr_use TYPE ty_sotr_use_tt
RAISING
zcx_abapgit_exception.
CLASS-METHODS delete_sotr
IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR'
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
RAISING
zcx_abapgit_exception.
CLASS-METHODS delete_sotr_package
IMPORTING
!iv_package TYPE devclass
RAISING
zcx_abapgit_exception.
CLASS-METHODS change_sotr_package
IMPORTING
!iv_old_package TYPE devclass
!iv_new_package TYPE devclass
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
CLASS-METHODS get_sotr_usage
IMPORTING
!iv_pgmid TYPE pgmid
!iv_pgmid TYPE tadir-pgmid
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
RETURNING
@ -66,6 +79,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
!iv_concept TYPE sotr_conc
RETURNING
VALUE(rs_sotr) TYPE ty_sotr.
PRIVATE SECTION.
ENDCLASS.
@ -74,6 +88,59 @@ ENDCLASS.
CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
METHOD change_sotr_package.
DATA lt_concepts TYPE btfr_conc_tt.
" Short texts
SELECT concept FROM sotr_head INTO TABLE lt_concepts
WHERE paket = iv_old_package
ORDER BY PRIMARY KEY.
IF lt_concepts IS NOT INITIAL.
CALL FUNCTION 'BTFR_CHANGE_PACKAGE'
EXPORTING
concept_tab = lt_concepts
new_package = iv_new_package
flag_string = abap_false
flag_ignore_system = abap_true
EXCEPTIONS
invalid_package = 1
invalid_tadir_entry = 2
update_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
CLEAR lt_concepts.
" Long texts
SELECT concept FROM sotr_headu INTO TABLE lt_concepts
WHERE paket = iv_old_package
ORDER BY PRIMARY KEY.
IF lt_concepts IS NOT INITIAL.
CALL FUNCTION 'BTFR_CHANGE_PACKAGE'
EXPORTING
concept_tab = lt_concepts
new_package = iv_new_package
flag_string = abap_true
flag_ignore_system = abap_true
EXCEPTIONS
invalid_package = 1
invalid_tadir_entry = 2
update_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD create_sotr.
DATA:

View File

@ -17,7 +17,7 @@ CLASS zcl_abapgit_sots_handler DEFINITION
CLASS-METHODS read_sots
IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR'
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
!io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
@ -45,7 +45,7 @@ CLASS zcl_abapgit_sots_handler DEFINITION
CLASS-METHODS delete_sots
IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR'
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
RAISING
@ -55,7 +55,7 @@ CLASS zcl_abapgit_sots_handler DEFINITION
CLASS-METHODS get_sots_usage
IMPORTING
!iv_pgmid TYPE pgmid
!iv_pgmid TYPE tadir-pgmid
!iv_object TYPE trobjtype
!iv_obj_name TYPE csequence
RETURNING

View File

@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_aifc DEFINITION
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
TYPES:
@ -112,7 +112,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD authorization_check.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
rv_success = abap_false.
@ -121,9 +120,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
RECEIVING
rv_success = rv_success.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -147,7 +143,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD compress_interface.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
TRY.
@ -157,9 +152,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
RECEIVING
rv_success = rv_success.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -183,7 +175,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
rr_abapgit_aifc_util = mo_abapgit_util.
CATCH cx_sy_dyn_call_error INTO lx_exc_ref.
zcx_abapgit_exception=>raise( 'AIFC not supported' ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
@ -198,7 +190,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
FIELD-SYMBOLS <ls_table> TYPE any.
FIELD-SYMBOLS: <lv_value> TYPE any.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
lr_structdescr ?= cl_abap_typedescr=>describe_by_name( p_name = '/AIF/T_FINF' ).
@ -241,9 +232,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
rv_success = rv_success.
ENDIF.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -251,7 +239,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD get_content_compress.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
DATA: lo_log TYPE REF TO object.
@ -267,9 +254,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
iv_package = iv_package
iv_depl_id = ms_icd_data_key-depl_scenario.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -277,7 +261,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD handle_table_data.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
TRY.
@ -286,9 +269,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
iv_tabname = iv_tabname
it_data = it_data.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -296,7 +276,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD validate_interface.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA: lx_root TYPE REF TO cx_root.
rv_success = abap_false.
@ -307,9 +286,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
RECEIVING
rv_success = rv_success.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -317,25 +293,18 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA ls_icd_data_key TYPE ty_icd_data_key.
ls_icd_data_key-depl_scenario = ms_icd_data_key-depl_scenario.
ls_icd_data_key-ns = ms_icd_data_key-ns.
ls_icd_data_key-ifname = ms_icd_data_key-ifname.
ls_icd_data_key-ifver2 = ms_icd_data_key-ifver2.
TRY.
CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~CHANGED_BY')
EXPORTING
is_key = ls_icd_data_key
RECEIVING
rv_user = rv_user.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
ENDTRY.
ENDMETHOD.
@ -458,8 +427,6 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA ls_icd_data_key TYPE ty_icd_data_key.
ls_icd_data_key-depl_scenario = ms_icd_data_key-depl_scenario.
@ -469,17 +436,12 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
rv_bool = abap_false.
TRY.
CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~EXISTS')
EXPORTING
is_key = ls_icd_data_key
RECEIVING
rv_bool = rv_bool.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
ENDTRY.
ENDMETHOD.
@ -549,9 +511,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lx_root TYPE REF TO cx_root.
DATA: lx_dyn_call_error TYPE REF TO cx_sy_dyn_call_error.
DATA lx_root TYPE REF TO cx_root.
DATA ls_icd_data_key TYPE ty_icd_data_key.
DATA lt_ifdata TYPE ty_table_data_t.
@ -575,18 +535,12 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
ls_icd_data_key-ifname = ms_icd_data_key-ifname.
ls_icd_data_key-ifver2 = ms_icd_data_key-ifver2.
TRY.
CALL METHOD mo_abapgit_util->('/AIF/IF_ABAPGIT_AIFC_UTIL~GET_IF_DATA')
EXPORTING
is_key = ls_icd_data_key
RECEIVING
rt_ifdata = lt_ifdata.
CATCH cx_sy_dyn_call_error INTO lx_dyn_call_error.
zcx_abapgit_exception=>raise( iv_text = 'AIFC not supported'
ix_previous = lx_dyn_call_error ).
ENDTRY.
LOOP AT lt_ifdata REFERENCE INTO lr_ifdata.
UNASSIGN <lt_table>.
@ -610,7 +564,7 @@ CLASS zcl_abapgit_object_aifc IMPLEMENTATION.
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise( iv_text = 'Serialize not possible'
ix_previous = lx_dyn_call_error ).
ix_previous = lx_root ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_amsd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -106,7 +106,7 @@ CLASS zcl_abapgit_object_amsd IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_AMDP_SCHEMA_OBJECT_PERSIST').
CATCH cx_sy_create_error.
zcx_abapgit_exception=>raise( |AMSD not supported by your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_apis DEFINITION
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -42,7 +42,7 @@ CLASS zcl_abapgit_object_apis IMPLEMENTATION.
TRY.
CREATE DATA lr_data TYPE (c_model).
CATCH cx_sy_create_error.
zcx_abapgit_exception=>raise( |APIS not supported by your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_bdef DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -208,7 +208,7 @@ CLASS zcl_abapgit_object_bdef IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_BDEF_OBJECT_PERSIST').
CATCH cx_sy_create_error.
zcx_abapgit_exception=>raise( |BDEF not supported by your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -971,7 +971,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ls_class_key-clsname = ms_item-obj_name.
rv_bool = mi_object_oriented_object_fct->exists( ls_class_key ).
rv_bool = mi_object_oriented_object_fct->exists( ls_class_key-clsname ).
" Skip classes generated by DDLS (SADL)
IF rv_bool = abap_true AND

View File

@ -9,7 +9,7 @@ CLASS zcl_abapgit_object_cmpt DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
INTERFACES zif_abapgit_object.
PROTECTED SECTION.
@ -38,7 +38,7 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
r_ref_db_access = mo_cmp_db.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
mv_name = ms_item-obj_name.
@ -50,7 +50,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
DATA: lo_cmp_template TYPE REF TO object.
TRY.
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB')
EXPORTING
i_name = mv_name
@ -62,10 +61,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
RECEIVING
r_user = rv_user.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD.
@ -73,7 +68,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
DATA: lv_deleted TYPE abap_bool.
TRY.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE')
EXPORTING
i_name = mv_name
@ -83,10 +77,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
RECEIVING
r_flg_deleted = lv_deleted.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
IF lv_deleted = abap_false.
zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ).
ENDIF.
@ -103,7 +93,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
<lg_header> TYPE any,
<lg_field> TYPE any.
TRY.
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
ASSIGN lr_template->* TO <lg_template>.
@ -131,10 +120,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
i_flg_header = abap_true
i_flg_lines = abap_true.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
corr_insert( iv_package ).
ENDMETHOD.
@ -142,7 +127,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
TRY.
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS')
EXPORTING
i_name = mv_name
@ -157,9 +141,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
RECEIVING
r_flg_exists = rv_bool.
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD.
@ -218,7 +199,6 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
<lg_header> TYPE any,
<lg_field> TYPE any.
TRY.
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
ASSIGN lr_template->* TO <lg_template>.
@ -256,9 +236,5 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
io_xml->add( iv_name = 'CMPT'
ig_data = <lg_template> ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -2,18 +2,50 @@ CLASS zcl_abapgit_object_dcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
DATA: mo_dcl_handler TYPE REF TO object. " CL_ACM_DCL_HANDLER
METHODS clear_fields
CHANGING
!cg_data TYPE any
RAISING
zcx_abapgit_exception .
ENDCLASS.
CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD constructor.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = mo_dcl_handler.
CATCH cx_root.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any,
@ -23,15 +55,14 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSIGN lr_data->* TO <lg_data>.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('READ')
CALL METHOD mo_dcl_handler->('READ')
EXPORTING
iv_dclname = ms_item-obj_name
IMPORTING
es_dclsrc = <lg_data>.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
@ -39,23 +70,16 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ELSE.
rv_user = c_user_unknown.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
DATA: lx_error TYPE REF TO cx_root.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('DELETE')
CALL METHOD mo_dcl_handler->('DELETE')
EXPORTING
iv_dclname = ms_item-obj_name.
@ -71,8 +95,8 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
lx_error TYPE REF TO cx_root,
lv_abap_language_version TYPE uccheck.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
@ -91,20 +115,33 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_field> = mo_files->read_string( 'asdcls' ).
TRY.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
lv_abap_language_version = <lg_field>.
set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ).
ENDIF.
tadir_insert( iv_package ).
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('SAVE')
TRY.
TRY.
CALL METHOD mo_dcl_handler->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'I'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'
iv_abap_language_version = lv_abap_language_version.
CATCH cx_sy_dyn_call_param_not_found.
CALL METHOD mo_dcl_handler->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'I'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'.
ENDTRY.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
@ -117,24 +154,12 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
DATA: lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('CHECK_EXISTENCE')
CALL METHOD mo_dcl_handler->('CHECK_EXISTENCE')
EXPORTING
iv_objectname = ms_item-obj_name
RECEIVING
rv_exists = rv_bool.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
@ -189,7 +214,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any,
@ -200,44 +224,17 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSIGN lr_data->* TO <lg_data>.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('READ')
CALL METHOD mo_dcl_handler->('READ')
EXPORTING
iv_dclname = ms_item-obj_name
IMPORTING
es_dclsrc = <lg_data>.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4LOCAL' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
CLEAR <lg_field>.
ENDIF.
clear_fields( CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
@ -251,9 +248,31 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
io_xml->add( iv_name = 'DCLS'
ig_data = <lg_data> ).
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD clear_fields.
DATA:
BEGIN OF ls_fields_to_clear,
as4user TYPE c,
as4date TYPE d,
as4time TYPE t,
created_by TYPE c,
created_date TYPE d,
as4local TYPE c,
END OF ls_fields_to_clear.
FIELD-SYMBOLS:
<lg_abap_language_version> TYPE any.
MOVE-CORRESPONDING ls_fields_to_clear TO cg_data.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO <lg_abap_language_version>.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
METHODS open_adt_stob
@ -20,6 +20,7 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
zcx_abapgit_exception.
PRIVATE SECTION.
DATA mo_ddl_handler TYPE REF TO object. " CL_DD_DDL_HANDLER
METHODS is_baseinfo_supported
RETURNING
VALUE(rv_supported) TYPE abap_bool .
@ -29,6 +30,12 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
METHODS format_source_before_serialize
CHANGING
cv_string TYPE string.
METHODS clear_fields
CHANGING
!cg_data TYPE any
RAISING
zcx_abapgit_exception .
ENDCLASS.
@ -38,8 +45,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD constructor.
DATA lo_ddl TYPE REF TO object.
super->constructor(
is_item = is_item
iv_language = iv_language
@ -49,9 +54,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
TRY.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
handler = mo_ddl_handler.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'Object type DDLS is not supported by this system' ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
@ -93,13 +99,12 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD is_baseinfo_supported.
DATA:
lr_data_baseinfo TYPE REF TO data,
lx_error TYPE REF TO cx_root.
lr_data_baseinfo TYPE REF TO data.
TRY.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE').
rv_supported = abap_true.
CATCH cx_root INTO lx_error.
CATCH cx_root.
rv_supported = abap_false.
ENDTRY.
@ -108,9 +113,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD open_adt_stob.
DATA: lr_data TYPE REF TO data,
lo_ddl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
@ -120,7 +123,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
FIELD-SYMBOLS: <lg_ddlname> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ').
ASSIGN lr_data->* TO <lt_ddnames>.
@ -138,11 +140,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
<lg_ddname> = iv_ddls_name.
INSERT <lg_ddnames> INTO TABLE <lt_ddnames>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
EXPORTING
ddnames = <lt_ddnames>
IMPORTING
@ -157,10 +155,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
@ -180,23 +174,17 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data,
DATA: lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
TRY.
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
EXPORTING
name = ms_item-obj_name
get_state = 'A'
@ -270,7 +258,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA:
lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data,
lr_data_baseinfo TYPE REF TO data,
lx_error TYPE REF TO cx_root.
@ -280,12 +267,13 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
<lg_data_baseinfo> TYPE any,
<lg_source> TYPE any,
<lg_baseinfo_string> TYPE any,
<lg_baseinfo_ddlname> TYPE any.
<lg_baseinfo_ddlname> TYPE any,
<lg_abap_language_version> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
TRY.
io_xml->read( EXPORTING iv_name = 'DDLS'
CHANGING cg_data = <lg_data> ).
@ -293,9 +281,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_source> = mo_files->read_string( 'asddls' ).
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_abap_language_version>.
IF sy-subrc = 0.
set_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
IF is_baseinfo_supported( ) = abap_true.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE').
@ -310,21 +299,31 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_baseinfo_ddlname> = ms_item-obj_name.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
TRY.
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>
baseinfo_string = <lg_data_baseinfo>
save_language_version = abap_true.
CATCH cx_sy_dyn_call_param_not_found.
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>
baseinfo_string = <lg_data_baseinfo>.
ENDTRY.
ELSE.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>.
ENDIF.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~WRITE_TADIR')
EXPORTING
objectname = ms_item-obj_name
devclass = iv_package
@ -333,16 +332,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
corr_insert( iv_package ).
CATCH cx_root INTO lx_error.
IF lo_ddl IS NOT INITIAL.
" Attempt clean-up but catch error if it doesn't work
TRY.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~DELETE')
EXPORTING
name = ms_item-obj_name
prid = 0.
CATCH cx_root ##NO_HANDLER.
ENDTRY.
ENDIF.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
@ -354,15 +351,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE objstate,
lo_ddl TYPE REF TO object.
DATA: lv_state TYPE objstate.
TRY.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
EXPORTING
name = ms_item-obj_name
IMPORTING
@ -441,35 +433,28 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data,
DATA: lr_data TYPE REF TO data,
lr_data_baseinfo TYPE REF TO data,
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any,
<lv_comp> LIKE LINE OF lt_clr_comps,
<lt_data_baseinfo> TYPE ANY TABLE,
<lg_data_baseinfo> TYPE any,
<lg_ddlname> TYPE any,
<lg_as4local> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
TRY.
IF is_baseinfo_supported( ) = abap_true.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_T_BASEINFO_STRING').
ASSIGN lr_data_baseinfo->* TO <lt_data_baseinfo>.
ASSIGN lr_data_baseinfo->* TO <lg_data_baseinfo>.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
EXPORTING
name = ms_item-obj_name
get_state = 'A'
@ -494,7 +479,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDIF.
ENDLOOP.
ELSE.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
EXPORTING
name = ms_item-obj_name
get_state = 'A'
@ -506,20 +491,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
APPEND 'AS4USER' TO lt_clr_comps.
APPEND 'AS4DATE' TO lt_clr_comps.
APPEND 'AS4TIME' TO lt_clr_comps.
APPEND 'ACTFLAG' TO lt_clr_comps.
APPEND 'CHGFLAG' TO lt_clr_comps.
APPEND 'ABAP_LANGUAGE_VERSION' TO lt_clr_comps.
APPEND 'ABAP_LANGU_VERSION' TO lt_clr_comps.
LOOP AT lt_clr_comps ASSIGNING <lv_comp>.
ASSIGN COMPONENT <lv_comp> OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
CLEAR <lg_field>.
ENDIF.
ENDLOOP.
clear_fields( CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
@ -536,4 +508,30 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ig_data = <lg_data> ).
ENDMETHOD.
METHOD clear_fields.
DATA:
BEGIN OF ls_fields_to_clear,
as4user TYPE c,
as4date TYPE d,
as4time TYPE t,
actflag TYPE c,
chgflag TYPE c,
abap_langu_version TYPE c,
END OF ls_fields_to_clear.
FIELD-SYMBOLS:
<lg_abap_language_version> TYPE any.
MOVE-CORRESPONDING ls_fields_to_clear TO cg_data.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO <lg_abap_language_version>.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -2,147 +2,80 @@ CLASS zcl_abapgit_object_ddlx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
DATA mi_persistence TYPE REF TO if_wb_object_persist.
METHODS get_persistence
RETURNING
VALUE(ri_persistence) TYPE REF TO if_wb_object_persist
RAISING
zcx_abapgit_exception .
DATA mi_data_model TYPE REF TO if_wb_object_data_model.
DATA mv_object_key TYPE seu_objkey.
METHODS clear_fields
CHANGING
!cg_data TYPE any .
METHODS clear_field
IMPORTING
!iv_fieldname TYPE csequence
CHANGING
!cg_metadata TYPE any .
!cg_data TYPE any
RAISING
zcx_abapgit_exception .
ENDCLASS.
CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD constructor.
METHOD clear_field.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
FIELD-SYMBOLS: <lg_field> TYPE data.
ASSIGN COMPONENT iv_fieldname
OF STRUCTURE cg_metadata
TO <lg_field>.
IF sy-subrc = 0.
CLEAR: <lg_field>.
ENDIF.
ENDMETHOD.
METHOD clear_fields.
FIELD-SYMBOLS: <lg_metadata> TYPE any.
ASSIGN COMPONENT 'METADATA'
OF STRUCTURE cg_data
TO <lg_metadata>.
ASSERT sy-subrc = 0.
clear_field( EXPORTING iv_fieldname = 'CHANGED_AT'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'CHANGED_BY'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'CREATED_AT'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'CREATED_BY'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'PACKAGE_REF-NAME'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'CONTAINER_REF-PACKAGE_NAME'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'VERSION'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'MASTER_SYSTEM'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'ABAP_LANGUAGE_VERSION'
CHANGING cg_metadata = <lg_metadata> ).
clear_field( EXPORTING iv_fieldname = 'ABAP_LANGU_VERSION'
CHANGING cg_metadata = <lg_metadata> ).
ENDMETHOD.
METHOD get_persistence.
DATA: lx_error TYPE REF TO cx_root.
mv_object_key = ms_item-obj_name.
TRY.
IF mi_persistence IS NOT BOUND.
CREATE OBJECT mi_persistence
TYPE ('CL_DDLX_ADT_OBJECT_PERSIST').
ENDIF.
CREATE OBJECT mi_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
CATCH cx_sy_create_object_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ri_persistence = mi_persistence.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
DATA:
lv_object_key TYPE seu_objkey,
li_data_model TYPE REF TO if_wb_object_data_model,
li_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data.
DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS:
<lg_data> TYPE any,
<lg_changed_by> TYPE data.
lv_object_key = ms_item-obj_name.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
CREATE OBJECT li_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
li_persistence = get_persistence( ).
li_persistence->get(
TRY.
mi_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_object_key = mv_object_key
p_version = swbm_version_active
CHANGING
p_object_data = li_data_model ).
CATCH cx_root.
p_object_data = mi_data_model ).
CATCH cx_swb_exception.
rv_user = c_user_unknown.
RETURN.
ENDTRY.
li_data_model->get_data( IMPORTING p_data = <lg_data> ).
mi_data_model->get_data( IMPORTING p_data = <lg_data> ).
ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE <lg_data> TO <lg_changed_by>.
ASSERT sy-subrc = 0.
@ -153,18 +86,13 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~delete.
DATA: lv_object_key TYPE seu_objkey,
lx_error TYPE REF TO cx_root.
lv_object_key = ms_item-obj_name.
DATA: lx_error TYPE REF TO cx_swb_exception.
TRY.
get_persistence( )->delete( p_object_key = lv_object_key
mi_persistence->delete( p_object_key = mv_object_key
p_version = swbm_version_active ).
CATCH cx_root INTO lx_error.
CATCH cx_swb_exception INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
@ -175,18 +103,17 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA: li_data_model TYPE REF TO if_wb_object_data_model,
lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
DATA: lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_swb_exception.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_source> TYPE data,
<lg_version> TYPE data,
<lg_package> TYPE data,
<lg_changed_by> TYPE syuname,
<lg_changed_at> TYPE xsddatetime_z.
<lg_changed_at> TYPE xsddatetime_z,
<lg_abap_language_version> TYPE data.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
@ -197,6 +124,11 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
CHANGING
cg_data = <lg_data> ).
ASSIGN COMPONENT 'METADATA-ABAP_LANGU_VERSION' OF STRUCTURE <lg_data> TO <lg_abap_language_version>.
IF sy-subrc = 0.
set_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <lg_data> TO <lg_source>.
ASSERT sy-subrc = 0.
@ -207,9 +139,6 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
CREATE OBJECT li_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
ASSIGN COMPONENT 'METADATA-VERSION' OF STRUCTURE <lg_data> TO <lg_version>.
ASSERT sy-subrc = 0.
@ -232,16 +161,16 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
GET TIME STAMP FIELD <lg_changed_at>.
ENDIF.
li_data_model->set_data( <lg_data> ).
mi_data_model->set_data( <lg_data> ).
get_persistence( )->save( li_data_model ).
tadir_insert( iv_package ).
CATCH cx_root INTO lx_error.
TRY.
mi_persistence->save( mi_data_model ).
CATCH cx_swb_exception INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
tadir_insert( iv_package ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
@ -249,14 +178,10 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
DATA: lv_object_key TYPE seu_objkey.
lv_object_key = ms_item-obj_name.
rv_bool = abap_true.
TRY.
get_persistence( )->get( p_object_key = lv_object_key
mi_persistence->get( p_object_key = mv_object_key
p_version = swbm_version_active
p_existence_check_only = abap_true ).
@ -317,55 +242,50 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lv_object_key TYPE seu_objkey,
li_data_model TYPE REF TO if_wb_object_data_model,
li_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
DATA: lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_swb_exception.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE data.
lv_object_key = ms_item-obj_name.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
CREATE OBJECT li_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
li_persistence = get_persistence( ).
TRY.
IF zcl_abapgit_factory=>get_environment( )->compare_with_inactive( ) = abap_true.
"Retrieve inactive version
li_persistence->get(
mi_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_object_key = mv_object_key
p_version = swbm_version_inactive
CHANGING
p_object_data = li_data_model ).
IF li_data_model->get_object_name( ) IS INITIAL.
p_object_data = mi_data_model ).
IF mi_data_model->get_object_name( ) IS INITIAL.
"Fallback: retrieve active version
li_persistence->get(
mi_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_object_key = mv_object_key
p_version = swbm_version_active
CHANGING
p_object_data = li_data_model ).
p_object_data = mi_data_model ).
ENDIF.
ELSE.
"Retrieve active version
li_persistence->get(
mi_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_object_key = mv_object_key
p_version = swbm_version_active
CHANGING
p_object_data = li_data_model ).
p_object_data = mi_data_model ).
ENDIF.
li_data_model->get_data( IMPORTING p_data = <lg_data> ).
CATCH cx_swb_exception INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
mi_data_model->get_data( IMPORTING p_data = <lg_data> ).
clear_fields( CHANGING cg_data = <lg_data> ).
@ -381,9 +301,40 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
io_xml->add( iv_name = 'DDLX'
ig_data = <lg_data> ).
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD.
METHOD clear_fields.
DATA:
BEGIN OF ls_fields_to_clear,
BEGIN OF metadata,
changed_at TYPE d,
changed_by TYPE c,
created_at TYPE d,
created_by TYPE c,
responsible TYPE c,
BEGIN OF package_ref,
name TYPE c,
END OF package_ref,
BEGIN OF container_ref,
name TYPE c,
END OF container_ref,
version TYPE c,
master_system TYPE c,
END OF metadata,
END OF ls_fields_to_clear.
FIELD-SYMBOLS:
<lg_abap_language_version> TYPE any.
MOVE-CORRESPONDING ls_fields_to_clear TO cg_data.
ASSIGN COMPONENT 'METADATA-ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO <lg_abap_language_version>.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -465,7 +465,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF.
IF lv_package(1) = '$'.
zcl_abapgit_persist_packages=>get_instance( )->modify( lv_package ).
zcl_abapgit_persist_factory=>get_packages( )->modify( lv_package ).
ENDIF.
set_lock( ii_package = li_package
@ -571,7 +571,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
" For local packages store application component
IF ls_package_data-devclass(1) = '$'.
zcl_abapgit_persist_packages=>get_instance( )->modify(
zcl_abapgit_persist_factory=>get_packages( )->modify(
iv_package = ls_package_data-devclass
iv_component = ls_package_data-component
iv_comp_posid = ls_package_data-comp_posid ).
@ -818,7 +818,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: ls_package_data TYPE scompkdtln,
ls_package_comp TYPE zcl_abapgit_persist_packages=>ty_package,
ls_package_comp TYPE zif_abapgit_persist_packages=>ty_package,
li_package TYPE REF TO if_package,
lt_intf_usages TYPE tpak_permission_to_use_list,
lt_usage_data TYPE scomppdata,
@ -847,7 +847,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
" For local packages get application component
IF is_local( ls_package_data-devclass ) = abap_true.
ls_package_comp = zcl_abapgit_persist_packages=>get_instance( )->read( ls_package_data-devclass ).
ls_package_comp = zcl_abapgit_persist_factory=>get_packages( )->read( ls_package_data-devclass ).
ls_package_data-component = ls_package_comp-component.
ls_package_data-comp_posid = ls_package_comp-comp_posid.
ENDIF.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_drul DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -130,7 +130,7 @@ CLASS zcl_abapgit_object_drul IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_DRUL_WB_OBJECT_PERSIST').
CATCH cx_sy_create_error.
zcx_abapgit_exception=>raise( |DRUL not supported by your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_dtdc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -151,7 +151,7 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_DTDC_OBJECT_PERSIST').
CATCH cx_sy_create_error.
zcx_abapgit_exception=>raise( |DTDC not supported by your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -594,21 +594,7 @@ CLASS zcl_abapgit_object_fdt0 IMPLEMENTATION.
METHOD zif_abapgit_object~get_comparator.
DATA lo_local_version_output TYPE REF TO zcl_abapgit_xml_output.
DATA lo_local_version_input TYPE REF TO zcl_abapgit_xml_input.
CREATE OBJECT lo_local_version_output.
zif_abapgit_object~serialize( lo_local_version_output ).
CREATE OBJECT lo_local_version_input
EXPORTING
iv_xml = lo_local_version_output->zif_abapgit_xml_output~render( ).
CREATE OBJECT ri_comparator TYPE zcl_abapgit_object_tabl_compar
EXPORTING
ii_local = lo_local_version_input.
RETURN.
ENDMETHOD.

View File

@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_ftgl DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_exception.
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -60,7 +60,7 @@ CLASS zcl_abapgit_object_ftgl IMPLEMENTATION.
TRY.
CREATE DATA mr_toggle TYPE ('FTGL_S_WB_FEATURE_TOGGLE').
CATCH cx_root.
zcx_abapgit_exception=>raise( |FTGL not supported in your NW release| ).
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.

View File

@ -516,12 +516,15 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
METHOD functions.
DATA: lv_area TYPE rs38l-area.
FIELD-SYMBOLS: <ls_functab> TYPE LINE OF ty_rs38l_incl_tt.
DATA: lv_area TYPE rs38l-area,
lt_enlfdir TYPE STANDARD TABLE OF enlfdir.
DATA lv_index TYPE i.
FIELD-SYMBOLS: <ls_functab> TYPE LINE OF ty_rs38l_incl_tt,
<ls_enlfdir> TYPE enlfdir.
lv_area = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS'
EXPORTING
function_pool = lv_area
@ -534,9 +537,27 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
* The result can also contain function which are lowercase.
"FM is not reliable if Function Group is inconsistent, so cross-check results (#7147)
SELECT * FROM enlfdir
INTO TABLE lt_enlfdir
WHERE area = ms_item-obj_name
AND active = abap_true
ORDER BY funcname. "#EC CI_SUBRC
LOOP AT lt_enlfdir ASSIGNING <ls_enlfdir>.
TRANSLATE <ls_enlfdir>-funcname TO UPPER CASE.
ENDLOOP.
SORT lt_enlfdir BY funcname ASCENDING.
"Remove anything not in FM attributes table
LOOP AT rt_functab ASSIGNING <ls_functab>.
TRANSLATE <ls_functab> TO UPPER CASE.
lv_index = sy-tabix.
READ TABLE lt_enlfdir WITH KEY funcname = <ls_functab>-funcname TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
DELETE rt_functab INDEX lv_index.
ENDIF.
ENDLOOP.
SORT rt_functab BY funcname ASCENDING.
@ -1277,6 +1298,14 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
pool_not_exists = 1.
rv_bool = boolc( sy-subrc <> 1 ).
" Skip FUGR generated by CHDO
IF rv_bool = abap_true.
SELECT SINGLE fgrp FROM tcdrp INTO lv_pool WHERE fgrp = lv_pool.
IF sy-subrc = 0.
rv_bool = abap_false.
ENDIF.
ENDIF.
ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4ba IMPLEMENTATION.
iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_V4_MSGR'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4bs IMPLEMENTATION.
iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_V4_MSRV'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_http DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -34,23 +42,42 @@ CLASS zcl_abapgit_object_http DEFINITION
object_state TYPE c LENGTH 1,
END OF ty_gs_object_version.
TYPES: BEGIN OF ty_icf_node,
icfname TYPE c LENGTH 15,
icfparguid TYPE c LENGTH 25,
END OF ty_icf_node.
ENDCLASS.
CLASS zcl_abapgit_object_http IMPLEMENTATION.
METHOD constructor.
DATA: lr_dummy 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 DATA lr_dummy TYPE ('UCONHTTPSERVHEAD').
CATCH cx_root.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
TRY.
SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name.
IF sy-subrc <> 0.
rv_user = c_user_unknown.
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD.
@ -60,14 +87,11 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
DATA lv_name TYPE c LENGTH 30.
lv_name = ms_item-obj_name.
TRY.
CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE')
EXPORTING
name = lv_name
devclass = iv_package.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD.
@ -84,8 +108,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lo_http TYPE REF TO object,
ls_abap_lang TYPE ty_gs_object_version,
lo_instance TYPE REF TO object,
lv_tadir_name TYPE tadir-obj_name,
lt_ret TYPE STANDARD TABLE OF bapiret2.
lv_icfnode TYPE ty_icf_node.
TRY.
io_xml->read(
@ -98,6 +121,14 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
EXPORTING iv_name = 'HTTPHDL'
CHANGING cg_data = lt_handler ).
TRY.
"link to icf node (in releases older than 757, a http service requires a icf node to function)
io_xml->read(
EXPORTING iv_name = 'HTTPICFNODE'
CHANGING cg_data = lv_icfnode ).
CATCH cx_root.
ENDTRY.
SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = lv_http_servid AND version = 'A'.
IF sy-subrc = 0.
"update
@ -152,6 +183,9 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION')
EXPORTING
texts = ls_description.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_ICF_SERVICE')
EXPORTING
iv_icfservice = lv_icfnode.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SAVE')
EXPORTING
run_dark = abap_true
@ -159,16 +193,6 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
korrnum = iv_transport.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~FREE').
lv_tadir_name = lv_http_servid.
CALL METHOD ('CL_AUTH_START_TOOLS')=>('SUSH_CREATE')
EXPORTING
iv_type = 'HTTP'
iv_name = lv_tadir_name
iv_silent = abap_true
iv_task = iv_transport
IMPORTING
et_log = lt_ret.
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.
@ -180,12 +204,8 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
DATA lv_id TYPE c LENGTH 30.
TRY.
SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = ms_item-obj_name AND version = 'A'.
rv_bool = boolc( sy-subrc = 0 ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD.
@ -241,6 +261,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lt_handler TYPE TABLE OF ty_uconservhttphandler,
ls_description TYPE ty_uconhttpservtext,
lx_root TYPE REF TO cx_root,
lv_icfnode TYPE ty_icf_node,
lv_name TYPE c LENGTH 30.
TRY.
@ -275,6 +296,15 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
iv_name = 'HTTPHDL'
ig_data = lt_handler ).
TRY.
"link to icf node (in releases older than 757, a http service requires a icf node to function)
CALL METHOD lo_serv->('IF_UCON_API_HTTP_SERVICE~GET_ICF_SERVICE') IMPORTING ev_icfservice = lv_icfnode.
io_xml->add(
iv_name = 'HTTPICFNODE'
ig_data = lv_icfnode ).
CATCH cx_root.
ENDTRY.
CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY.

View File

@ -673,7 +673,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
ls_class_key-clsname = ms_item-obj_name.
rv_bool = mi_object_oriented_object_fct->exists( ls_class_key ).
rv_bool = mi_object_oriented_object_fct->exists( ls_class_key-clsname ).
IF rv_bool = abap_true.
SELECT SINGLE category FROM seoclassdf INTO lv_category
@ -778,6 +778,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
ENDMETHOD.
METHOD extract_languages_for_transl.
DATA: lv_desc TYPE seocompotx,
lv_desc_int TYPE seoclasstx,
@ -811,5 +812,4 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
ENDLOOP.
ENDMETHOD.
ENDCLASS.

View File

@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_iobj DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
METHODS:
@ -17,6 +25,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
METHOD constructor.
DATA lr_viobj 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 DATA lr_viobj TYPE ('RSD_S_VIOBJ').
CATCH cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD clear_field.
@ -43,12 +69,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
lv_objna = ms_item-obj_name.
TRY.
CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
ENDTRY.
ASSIGN lr_viobj->* TO <lg_viobj>.
CALL FUNCTION 'RSD_IOBJ_GET'
@ -134,7 +155,6 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
<lg_infoobject> TYPE data,
<lt_infoobjects> TYPE STANDARD TABLE.
TRY.
CREATE DATA lr_details TYPE ('BAPI6108').
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
@ -145,9 +165,6 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
CREATE DATA lr_infoobj TYPE STANDARD TABLE OF ('BAPI6108').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
ENDTRY.
ASSIGN lr_details->* TO <lg_details>.
ASSIGN lr_compounds->* TO <lt_compounds>.
@ -335,11 +352,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
lv_objna = ms_item-obj_name.
TRY.
CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
ENDTRY.
ASSIGN lr_viobj->* TO <lg_viobj>.
@ -414,7 +427,6 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
<lt_hanafieldsmapping> TYPE STANDARD TABLE,
<lt_xxlattributes> TYPE STANDARD TABLE.
TRY.
CREATE DATA lr_details TYPE ('BAPI6108').
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
@ -424,9 +436,6 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE').
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
ENDTRY.
ASSIGN lr_details->* TO <lg_details>.
ASSIGN lr_compounds->* TO <lt_compounds>.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwmo IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_OHD'
iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_OHD'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwom IMPLEMENTATION.
iv_table = '/IWFND/I_MED_OHD'
iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWFND/I_MED_OHD'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -44,6 +44,13 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION.
iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWFND/I_MED_SRH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwsv IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_SRH'
iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_SRH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwvb IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_VAH'
iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_VAH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD.

View File

@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_jobd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -13,6 +21,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
METHOD constructor.
DATA: lr_job_definition 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 DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION').
CATCH cx_sy_ref_creation.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
@ -121,17 +147,12 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
lv_name = ms_item-obj_name.
TRY.
CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE')
EXPORTING
im_jd_name = lv_name
IMPORTING
ex_is_existing = rv_bool.
CATCH cx_root.
zcx_abapgit_exception=>raise( |JOBD not supported| ).
ENDTRY.
ENDMETHOD.

View File

@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_odso DEFINITION
PUBLIC SECTION.
INTERFACES zif_abapgit_object .
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION.
PRIVATE SECTION.
@ -22,6 +30,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_odso IMPLEMENTATION.
METHOD constructor.
DATA: lr_details 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 DATA lr_details TYPE ('BAPI6116').
CATCH cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD clear_field.
@ -46,11 +72,7 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
FIELD-SYMBOLS: <lg_details> TYPE any,
<lg_tstpnm> TYPE any.
TRY.
CREATE DATA lr_details TYPE ('BAPI6116').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ).
ENDTRY.
ASSIGN lr_details->* TO <lg_details>.
@ -82,11 +104,7 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
lt_msg TYPE STANDARD TABLE OF bal_s_msg,
ls_msg TYPE bal_s_msg.
TRY.
CREATE OBJECT lo_collection TYPE ('CL_RSD_ODSO_COLLECTION').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ).
ENDTRY.
lv_odsonam = ms_item-obj_name.
lv_objname = ms_item-obj_name.
@ -136,15 +154,11 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
<lt_indexes> TYPE STANDARD TABLE,
<lt_index_iobj> TYPE STANDARD TABLE.
TRY.
CREATE DATA lr_details TYPE ('BAPI6116').
CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO').
CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA').
CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN').
CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ).
ENDTRY.
ASSIGN lr_details->* TO <lg_details>.
ASSIGN lr_infoobjects->* TO <lt_infoobjects>.
@ -326,15 +340,11 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
<lt_indexes> TYPE STANDARD TABLE,
<lt_index_iobj> TYPE STANDARD TABLE.
TRY.
CREATE DATA lr_details TYPE ('BAPI6116').
CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO').
CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA').
CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN').
CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II').
CATCH cx_sy_create_data_error.
zcx_abapgit_exception=>raise( |ODSO is not supported on this system| ).
ENDTRY.
ASSIGN lr_details->* TO <lg_details>.
ASSIGN lr_infoobjects->* TO <lt_infoobjects>.

View File

@ -279,6 +279,15 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
WHERE progname = ms_item-obj_name.
rv_bool = boolc( sy-subrc = 0 ).
" Skip PROG generated by CHDO
IF rv_bool = abap_true.
FIND REGEX '^F.*CD[C|F|T|V]' IN ms_item-obj_name.
IF sy-subrc <> 0.
FIND REGEX '^/.*/F.*CD[C|F|T|V]' IN ms_item-obj_name.
ENDIF.
rv_bool = boolc( sy-subrc <> 0 ).
ENDIF.
ENDMETHOD.

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