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", "name": "abapGit",
"image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-12", "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-20",
"extensions": ["larshp.vscode-abaplint"], "customizations": {
"vscode": {
"extensions": ["larshp.vscode-abaplint"]
}
},
"postCreateCommand": "npm install" "postCreateCommand": "npm install"
} }

View File

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

View File

@ -31,12 +31,9 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
- name: npm install - run: npm install
run: npm install - run: npm run unit
- name: npm run unit - run: npm run coverage
run: npm run unit
- name: npm run coverage
run: npm run coverage
integration: integration:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -45,10 +42,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
- name: npm install - run: npm install
run: npm install
- name: start gitea - name: start gitea
working-directory: test/gitea/ working-directory: test/gitea/
run: npm install && npm run gitea run: npm install && npm run gitea
- 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) [![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE)
[![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit) [![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit)
[![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap) [![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap)
[![abap package version](https://img.shields.io/endpoint?url=https://shield.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> <picture>

View File

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

View File

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

105
deps/e070.tabl.xml vendored 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. INTERFACE if_package PUBLIC.
DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY. DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY.
DATA package_name TYPE string READ-ONLY.
DATA short_text TYPE string READ-ONLY.
DATA super_package_name TYPE string READ-ONLY.
DATA software_component TYPE string READ-ONLY. DATA software_component TYPE string READ-ONLY.
DATA application_component TYPE string READ-ONLY. DATA application_component TYPE string READ-ONLY.
DATA transport_layer TYPE string READ-ONLY. DATA transport_layer TYPE string READ-ONLY.

4
deps/tcdrs.tabl.xml vendored
View File

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

View File

@ -5,10 +5,10 @@
"test": "npm run eslint && npm run abaplint", "test": "npm run eslint && npm run abaplint",
"merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap", "merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap",
"merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..", "merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..",
"build": "rm -rf output && abap_transpile test/abap_transpile.json", "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", "unit": "npm run build && echo RUNNING && node output/index.mjs --skip-critical",
"coverage": "npm run unit && c8 node output/index.mjs && c8 report --reporter=html", "coverage": "npm run unit && c8 node output/index.mjs --skip-critical && 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", "integration": "npm run build && echo RUNNING && node output/index.mjs --only-critical",
"abaplint": "abaplint --format codeframe", "abaplint": "abaplint --format codeframe",
"eslint": "eslint src" "eslint": "eslint src"
}, },
@ -23,14 +23,14 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@abaplint/cli": "^2.113.82", "@abaplint/cli": "^2.113.110",
"@abaplint/database-sqlite": "^2.10.20", "@abaplint/database-sqlite": "^2.10.24",
"@abaplint/runtime": "^2.10.23", "@abaplint/runtime": "^2.10.44",
"express": "^4.21.2", "express": "^4.21.2",
"@abaplint/transpiler-cli": "^2.10.23", "@abaplint/transpiler-cli": "^2.10.44",
"globals": "^15.13.0", "globals": "^16.0.0",
"abapmerge": "^0.16.6", "abapmerge": "^0.16.6",
"c8": "^10.1.3", "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. METHOD dequeue.
@ -135,13 +135,14 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
METHOD run. METHOD run.
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background, DATA:
lo_repo TYPE REF TO zcl_abapgit_repo_online, li_repo TYPE REF TO zif_abapgit_repo,
lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys, li_repo_online TYPE REF TO zif_abapgit_repo_online,
li_background TYPE REF TO zif_abapgit_background, lt_list TYPE zif_abapgit_persist_background=>ty_background_keys,
li_log TYPE REF TO zif_abapgit_log, li_background TYPE REF TO zif_abapgit_background,
lx_error TYPE REF TO zcx_abapgit_exception, li_log TYPE REF TO zif_abapgit_log,
lv_repo_name TYPE string. lx_error TYPE REF TO zcx_abapgit_exception,
lv_repo_name TYPE string.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list. FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
@ -152,8 +153,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
RETURN. RETURN.
ENDTRY. ENDTRY.
CREATE OBJECT lo_per. lt_list = zcl_abapgit_persist_factory=>get_background( )->list( ).
lt_list = lo_per->list( ).
WRITE: / 'Background mode'. WRITE: / 'Background mode'.
@ -161,12 +161,13 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CREATE OBJECT li_log TYPE zcl_abapgit_log. CREATE OBJECT li_log TYPE zcl_abapgit_log.
TRY. TRY.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ). li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ).
lv_repo_name = lo_repo->get_name( ). li_repo_online ?= li_repo.
lv_repo_name = li_repo->get_name( ).
WRITE: / <ls_list>-method, lv_repo_name. WRITE: / <ls_list>-method, lv_repo_name.
zcl_abapgit_login_manager=>set( zcl_abapgit_login_manager=>set(
iv_uri = lo_repo->get_url( ) iv_uri = li_repo_online->get_url( )
iv_username = <ls_list>-username iv_username = <ls_list>-username
iv_password = <ls_list>-password ). iv_password = <ls_list>-password ).
@ -174,16 +175,16 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CREATE OBJECT li_background TYPE (<ls_list>-method). CREATE OBJECT li_background TYPE (<ls_list>-method).
li_background->run( li_background->run(
io_repo = lo_repo ii_repo_online = li_repo_online
ii_log = li_log ii_log = li_log
it_settings = <ls_list>-settings ). it_settings = <ls_list>-settings ).
CATCH cx_sy_create_object_error. CATCH cx_sy_create_object_error.
li_log->add_warning( |{ <ls_list>-method } could not be executed,| li_log->add_warning( |{ <ls_list>-method } could not be executed,|
& | as it is not accessible (local/global class).| ). & | as it is not accessible (local/global class).| ).
ENDTRY. ENDTRY.
" Decrease memory usage for repository already processed (but keep log) " Decrease memory usage for repository already processed (but keep log)
lo_repo->refresh( li_repo->refresh(
iv_drop_cache = abap_true iv_drop_cache = abap_true
iv_drop_log = abap_false ). iv_drop_log = abap_false ).
CATCH zcx_abapgit_exception INTO lx_error. CATCH zcx_abapgit_exception INTO lx_error.

View File

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

View File

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

View File

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

View File

@ -18,9 +18,9 @@ INTERFACE zif_abapgit_background
ct_settings TYPE ty_settings_tt . ct_settings TYPE ty_settings_tt .
METHODS run METHODS run
IMPORTING IMPORTING
!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 !ii_log TYPE REF TO zif_abapgit_log
!it_settings TYPE ty_settings_tt OPTIONAL !it_settings TYPE ty_settings_tt OPTIONAL
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
ENDINTERFACE. ENDINTERFACE.

View File

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

View File

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

View File

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

View File

@ -7,7 +7,7 @@ CLASS zcl_abapgit_transport_2_branch DEFINITION
METHODS create METHODS create
IMPORTING IMPORTING
!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 !is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch
!it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING RAISING
@ -46,13 +46,13 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name( lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name(
zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ). zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ).
io_repository->create_branch( lv_branch_name ). ii_repo_online->create_branch( lv_branch_name ).
CREATE OBJECT lo_stage. 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( stage_transport_objects(
it_transport_objects = it_transport_objects it_transport_objects = it_transport_objects
@ -62,8 +62,8 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
ls_comment = generate_commit_message( is_transport_to_branch ). ls_comment = generate_commit_message( is_transport_to_branch ).
io_repository->push( is_comment = ls_comment ii_repo_online->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.

View File

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

View File

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

View File

@ -15,7 +15,7 @@ INTERFACE zif_abapgit_data_deserializer
METHODS deserialize_check METHODS deserialize_check
IMPORTING 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 !ii_config TYPE REF TO zif_abapgit_data_config
RETURNING RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -72,7 +72,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
ENDIF. ENDIF.
LOOP AT it_skip_paths INTO lv_s. LOOP AT it_skip_paths INTO lv_s.
lv_s = to_lower( lv_s ). lv_s = condense( lv_s ).
APPEND lv_s TO lt_tab. APPEND lv_s TO lt_tab.
ENDLOOP. ENDLOOP.
@ -83,7 +83,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
DELETE lt_tab INDEX sy-tabix. DELETE lt_tab INDEX sy-tabix.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
<s> = condense( to_lower( <s> ) ). <s> = condense( <s> ).
ENDLOOP. ENDLOOP.
ENDIF. 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_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS mixed_case_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS. ENDCLASS.
@ -227,4 +228,36 @@ CLASS ltcl_filters_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD mixed_case_filter.
DATA li_json TYPE REF TO zif_abapgit_ajson.
DATA li_json_filtered TYPE REF TO zif_abapgit_ajson.
li_json = zcl_abapgit_ajson=>create_empty( ).
li_json->set(
iv_path = '/a'
iv_val = '1' ).
li_json->set(
iv_path = '/bB'
iv_val = '2' ).
li_json->set(
iv_path = '/CC'
iv_val = '3' ).
li_json->set(
iv_path = '/cc'
iv_val = '4' ).
li_json->set(
iv_path = '/d'
iv_val = 5 ).
li_json_filtered = zcl_abapgit_ajson=>create_from(
ii_source_json = li_json
ii_filter = zcl_abapgit_ajson_filter_lib=>create_path_filter( iv_skip_paths = '/bB,/CC' ) ).
cl_abap_unit_assert=>assert_equals(
act = li_json_filtered->stringify( )
exp = '{"a":"1","cc":"4","d":5}' ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

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

View File

@ -1,7 +1,7 @@
INTERFACE zif_abapgit_ajson INTERFACE zif_abapgit_ajson
PUBLIC. PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.1.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 origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT

View File

@ -52,6 +52,7 @@ CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION.
register( 'CHKC' ). register( 'CHKC' ).
register( 'CHKO' ). register( 'CHKO' ).
register( 'CHKV' ). register( 'CHKV' ).
register( 'COTA' ).
register( 'DRTY' ). register( 'DRTY' ).
register( 'DTEB' ). register( 'DTEB' ).
register( 'DSFI' ). register( '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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
TYPES: BEGIN OF ty_extension_mapper_pair, TYPES: BEGIN OF ty_extension_mapper_pair,
@ -106,7 +106,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
ENDTRY. ENDTRY.
IF lv_is_supported IS INITIAL. 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. ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -228,39 +228,40 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
TRY. TRY.
lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ). lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION')
RECEIVING
result = lv_act_setting_abap_lv.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected ABAP language version in settings'
act = lv_act_setting_abap_lv
exp = iv_exp_setting_abap_lv ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_VERSION')
RECEIVING
result = lv_act_setting_version.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Version in settings'
act = lv_act_setting_version
exp = 'A' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_LANGUAGE')
RECEIVING
result = lv_act_setting_language.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Language in settings'
act = lv_act_setting_language
exp = 'E' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_USER')
RECEIVING
result = lv_act_setting_user.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected User in settings'
act = lv_act_setting_user
exp = sy-uname ).
CATCH cx_root. CATCH cx_root.
" System doesn't support AFF with ABAP language version " System doesn't support AFF with ABAP language version
RETURN. RETURN.
ENDTRY. ENDTRY.
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_ABAP_LANGUAGE_VERSION')
RECEIVING
result = lv_act_setting_abap_lv.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected ABAP language version in settings'
act = lv_act_setting_abap_lv
exp = iv_exp_setting_abap_lv ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_VERSION')
RECEIVING
result = lv_act_setting_version.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Version in settings'
act = lv_act_setting_version
exp = 'A' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_LANGUAGE')
RECEIVING
result = lv_act_setting_language.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected Language in settings'
act = lv_act_setting_language
exp = 'E' ).
CALL METHOD lo_settings_deserialize->('IF_AFF_SETTINGS_DESERIALIZE~GET_USER')
RECEIVING
result = lv_act_setting_user.
cl_abap_unit_assert=>assert_equals( msg = 'Unexpected User in settings'
act = lv_act_setting_user
exp = sy-uname ).
ENDMETHOD. ENDMETHOD.
METHOD abap_language_version_standard. 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. PUBLIC SECTION.
METHODS zif_abapgit_object~changed_by REDEFINITION. METHODS zif_abapgit_object~changed_by REDEFINITION.
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION. CLASS zcl_abapgit_object_smbc IMPLEMENTATION.
METHOD constructor.
DATA: lo_handler TYPE REF TO object,
lo_db_api TYPE REF TO object,
lr_data TYPE REF TO data.
super->constructor(
is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
TRY.
CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER').
CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB').
CREATE DATA lr_data TYPE ('SMBC_CONFIG').
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -24,15 +55,12 @@ CLASS ZCL_ABAPGIT_OBJECT_SMBC IMPLEMENTATION.
FIELD-SYMBOLS: <ls_smbc_config> TYPE any, FIELD-SYMBOLS: <ls_smbc_config> TYPE any,
<lv_smbc_changed_by> TYPE any. <lv_smbc_changed_by> TYPE any.
TRY.
CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER'). CREATE OBJECT lo_handler TYPE ('CL_SMBC_AFF_OBJECT_HANDLER').
CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB'). CREATE OBJECT lo_db_api TYPE ('CL_MBC_BUSINESS_CONFIG_DB').
CREATE DATA lr_data TYPE ('SMBC_CONFIG'). CREATE DATA lr_data TYPE ('SMBC_CONFIG').
ASSIGN lr_data->* TO <ls_smbc_config>. ASSIGN lr_data->* TO <ls_smbc_config>.
CATCH cx_sy_create_object_error
cx_sy_create_data_error.
zcx_abapgit_exception=>raise( 'SMBC not supported' ).
ENDTRY.
lv_technical_id = ms_item-obj_name. lv_technical_id = ms_item-obj_name.
CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ') CALL METHOD lo_db_api->('IF_MBC_BUSINESS_CONFIG_DB~READ')
EXPORTING EXPORTING

View File

@ -8,13 +8,44 @@ CLASS zcl_abapgit_object_uiad DEFINITION
METHODS zif_abapgit_object~changed_by METHODS zif_abapgit_object~changed_by
REDEFINITION . REDEFINITION .
METHODS constructor
IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING
zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_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. METHOD zif_abapgit_object~changed_by.
@ -27,16 +58,11 @@ CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION.
FIELD-SYMBOLS: <ls_metadata> TYPE any, FIELD-SYMBOLS: <ls_metadata> TYPE any,
<lv_changed_by> TYPE any. <lv_changed_by> TYPE any.
TRY. CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE')
CALL METHOD ('CL_SUI_UIAD_DB_ACCESS')=>('GET_INSTANCE') RECEIVING
RECEIVING ro_instance = lo_db_api.
ro_instance = lo_db_api. CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA').
CREATE DATA lr_data TYPE ('CL_BLUE_AFF_WB_ACCESS=>TY_METADATA'). ASSIGN lr_data->* TO <ls_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. TRY.
lv_object_key = ms_item-obj_name. lv_object_key = ms_item-obj_name.
@ -46,7 +72,7 @@ CLASS ZCL_ABAPGIT_OBJECT_UIAD IMPLEMENTATION.
iv_version = 'A' iv_version = 'A'
iv_language = mv_language iv_language = mv_language
RECEIVING RECEIVING
rs_metadata = <ls_metadata>. rs_metadata = <ls_metadata>.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <ls_metadata> TO <lv_changed_by>. ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <ls_metadata> TO <lv_changed_by>.
rv_user = <lv_changed_by>. rv_user = <lv_changed_by>.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -128,6 +128,12 @@ CLASS zcl_abapgit_serialize DEFINITION
RETURNING RETURNING
VALUE(rv_result) TYPE abap_bool. 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. ENDCLASS.
@ -272,9 +278,11 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ms_i18n_params-main_language_only = is_local_settings-main_language_only. ms_i18n_params-main_language_only = is_local_settings-main_language_only.
ENDIF. ENDIF.
CREATE OBJECT mo_abap_language_version IF mo_dot_abapgit IS NOT INITIAL.
EXPORTING CREATE OBJECT mo_abap_language_version
io_dot_abapgit = mo_dot_abapgit. EXPORTING
io_dot_abapgit = mo_dot_abapgit.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -312,6 +320,21 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ASSERT rv_processes >= 1. 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 = zcl_abapgit_exit=>get_instance( ).
li_exit->change_max_parallel_processes( li_exit->change_max_parallel_processes(
EXPORTING EXPORTING
@ -319,17 +342,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
CHANGING CHANGING
cv_max_processes = rv_processes ). 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. ASSERT rv_processes >= 1.
ENDMETHOD. ENDMETHOD.
@ -515,6 +527,18 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ENDMETHOD. 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. METHOD is_parallelization_possible.
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false 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( ). iv_count = lv_count )->start( ).
LOOP AT lt_tadir ASSIGNING <ls_tadir>. 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( li_progress->show(
iv_current = sy-tabix iv_current = sy-tabix
iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } thread| ). iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } thread| ).

View File

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

View File

@ -6,7 +6,7 @@ CLASS zcl_abapgit_object_enhs_hook_d DEFINITION PUBLIC.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: BEGIN OF ty_hook_defifnition, TYPES: BEGIN OF ty_hook_defifnition,
pgmid TYPE pgmid, pgmid TYPE tadir-pgmid,
obj_name TYPE trobj_name, obj_name TYPE trobj_name,
obj_type TYPE trobjtype, obj_type TYPE trobjtype,
main_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_save_sy_langu TYPE sy-langu.
DATA lv_subrc TYPE syst-subrc. DATA lv_subrc TYPE syst-subrc.
DATA lv_tcode TYPE tcode. DATA lv_tcode TYPE tcode.
DATA lv_langu_text TYPE string.
DATA lv_msg TYPE c LENGTH 200. DATA lv_msg TYPE c LENGTH 200.
" https://blogs.sap.com/2017/01/13/logon-language-sy-langu-and-rfc/ " 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. WHEN 1.
lv_msg = |Communication error { lv_msg }|. lv_msg = |Communication error { lv_msg }|.
WHEN 2. WHEN 2.
SELECT SINGLE sptxt FROM t002t INTO lv_langu_text WHERE spras = sy-langu AND sprsl = iv_language. lv_msg = |Language { iv_language } ({ zcl_abapgit_convert=>language_sap1_to_text( 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 ) })|
&& | is not installed|. && | is not installed|.
WHEN 3. WHEN 3.
lv_msg = |{ lv_subrc }|. lv_msg = |{ lv_subrc }|.

View File

@ -796,9 +796,11 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
METHOD zif_abapgit_oo_object_fnc~exists. 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' CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK'
EXPORTING EXPORTING
clskey = is_object_name clskey = ls_object_name
EXCEPTIONS EXCEPTIONS
not_specified = 1 not_specified = 1
not_existing = 2 not_existing = 2

View File

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

View File

@ -291,9 +291,11 @@ CLASS zcl_abapgit_oo_interface IMPLEMENTATION.
METHOD zif_abapgit_oo_object_fnc~exists. 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' CALL FUNCTION 'SEO_INTERFACE_EXISTENCE_CHECK'
EXPORTING EXPORTING
intkey = is_object_name intkey = ls_object_name
EXCEPTIONS EXCEPTIONS
not_specified = 1 not_specified = 1
not_existing = 2 not_existing = 2

View File

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

View File

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

View File

@ -4,8 +4,9 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS: CONSTANTS:
c_package TYPE devclass VALUE '$TMP', c_abap_cloud TYPE uccheck VALUE '5',
c_table TYPE tabname VALUE 'ZTEST'. c_package TYPE devclass VALUE '$TMP',
c_table TYPE tabname VALUE 'ZTEST'.
TYPES: TYPES:
BEGIN OF ty_test, BEGIN OF ty_test,
@ -15,6 +16,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
time TYPE t, time TYPE t,
ts TYPE timestamp, ts TYPE timestamp,
tl TYPE timestampl, tl TYPE timestampl,
alav TYPE uccheck,
END OF ty_test. END OF ty_test.
DATA mo_cut TYPE REF TO zcl_abapgit_field_rules. 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, fill5 FOR TESTING,
fill6 FOR TESTING, fill6 FOR TESTING,
fill7 FOR TESTING, fill7 FOR TESTING,
fill8 FOR TESTING,
get_rules get_rules
RETURNING RETURNING
VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules, VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules,
@ -55,10 +58,11 @@ CLASS ltcl_field_rules IMPLEMENTATION.
mo_cut->fill_value( mo_cut->fill_value(
EXPORTING EXPORTING
iv_rule = iv_rule iv_rule = iv_rule
iv_package = c_package iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING CHANGING
cv_value = lv_act ). cv_value = lv_act ).
IF iv_len IS NOT INITIAL. IF iv_len IS NOT INITIAL.
lv_act = lv_act(iv_len). lv_act = lv_act(iv_len).
@ -116,6 +120,12 @@ CLASS ltcl_field_rules IMPLEMENTATION.
iv_exp = '' ). iv_exp = '' ).
ENDMETHOD. 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. METHOD get_rules.
ri_rules = zcl_abapgit_field_rules=>create( )->add( ri_rules = zcl_abapgit_field_rules=>create( )->add(
@ -137,7 +147,11 @@ CLASS ltcl_field_rules IMPLEMENTATION.
)->add( )->add(
iv_table = c_table iv_table = c_table
iv_field = 'TL' 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. ENDMETHOD.
@ -159,6 +173,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
ls_act-user = 'FRANK'. ls_act-user = 'FRANK'.
ls_act-date = '20230101'. ls_act-date = '20230101'.
ls_act-time = '000001'. ls_act-time = '000001'.
ls_act-alav = '5'. " ABAP Cloud
INSERT ls_act INTO TABLE lt_act. INSERT ls_act INTO TABLE lt_act.
li_rules = get_rules( ). li_rules = get_rules( ).
@ -216,10 +231,11 @@ CLASS ltcl_field_rules IMPLEMENTATION.
li_rules->apply_fill_logic( li_rules->apply_fill_logic(
EXPORTING EXPORTING
iv_table = c_table iv_table = c_table
iv_package = c_package iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING CHANGING
ct_data = lt_act ). ct_data = lt_act ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
act = lines( lt_act ) act = lines( lt_act )
@ -265,6 +281,9 @@ CLASS ltcl_field_rules IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
act = ls_act-time(4) act = ls_act-time(4)
exp = sy-uzeit(4) ). " avoid comparing seconds exp = sy-uzeit(4) ). " avoid comparing seconds
cl_abap_unit_assert=>assert_equals(
act = ls_act-alav
exp = c_abap_cloud ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

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

View File

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

View File

@ -15,6 +15,11 @@ INTERFACE zif_abapgit_sap_package
as4user TYPE usnam, as4user TYPE usnam,
END OF ty_create. END OF ty_create.
METHODS get
RETURNING
VALUE(rs_package) TYPE ty_create
RAISING
zcx_abapgit_exception .
METHODS validate_name METHODS validate_name
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -41,14 +46,10 @@ INTERFACE zif_abapgit_sap_package
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS read_description METHODS read_description
RETURNING RETURNING
VALUE(rv_description) TYPE string VALUE(rv_description) TYPE string.
RAISING
zcx_abapgit_exception .
METHODS read_responsible METHODS read_responsible
RETURNING RETURNING
VALUE(rv_responsible) TYPE usnam VALUE(rv_responsible) TYPE usnam.
RAISING
zcx_abapgit_exception .
METHODS create_child METHODS create_child
IMPORTING IMPORTING
!iv_child TYPE devclass !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. METHOD clear_dd03p_fields.
@ -838,6 +838,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
ENDIF. ENDIF.
rv_bool = boolc( sy-subrc = 0 ). 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. ENDMETHOD.

View File

@ -1,7 +1,7 @@
CLASS zcl_abapgit_sotr_handler DEFINITION CLASS zcl_abapgit_sotr_handler DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PUBLIC . CREATE PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
@ -9,15 +9,15 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
BEGIN OF ty_sotr, BEGIN OF ty_sotr,
header TYPE sotr_head, header TYPE sotr_head,
entries TYPE sotr_text_tt, entries TYPE sotr_text_tt,
END OF ty_sotr . END OF ty_sotr.
TYPES: TYPES:
ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY . ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY.
TYPES: TYPES:
ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY . ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY.
CLASS-METHODS read_sotr CLASS-METHODS read_sotr
IMPORTING IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype !iv_object TYPE trobjtype
!iv_obj_name TYPE csequence !iv_obj_name TYPE csequence
!io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
@ -26,36 +26,49 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
!et_sotr TYPE ty_sotr_tt !et_sotr TYPE ty_sotr_tt
!et_sotr_use TYPE ty_sotr_use_tt !et_sotr_use TYPE ty_sotr_use_tt
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception.
CLASS-METHODS create_sotr CLASS-METHODS create_sotr
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
!io_xml TYPE REF TO zif_abapgit_xml_input !io_xml TYPE REF TO zif_abapgit_xml_input
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception.
CLASS-METHODS create_sotr_from_data CLASS-METHODS create_sotr_from_data
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
!it_sotr TYPE ty_sotr_tt !it_sotr TYPE ty_sotr_tt
!it_sotr_use TYPE ty_sotr_use_tt !it_sotr_use TYPE ty_sotr_use_tt
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception.
CLASS-METHODS delete_sotr CLASS-METHODS delete_sotr
IMPORTING IMPORTING
!iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype !iv_object TYPE trobjtype
!iv_obj_name TYPE csequence !iv_obj_name TYPE csequence
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception.
CLASS-METHODS delete_sotr_package CLASS-METHODS delete_sotr_package
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
RAISING RAISING
zcx_abapgit_exception . 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. PROTECTED SECTION.
CLASS-METHODS get_sotr_usage CLASS-METHODS get_sotr_usage
IMPORTING IMPORTING
!iv_pgmid TYPE pgmid !iv_pgmid TYPE tadir-pgmid
!iv_object TYPE trobjtype !iv_object TYPE trobjtype
!iv_obj_name TYPE csequence !iv_obj_name TYPE csequence
RETURNING RETURNING
@ -65,7 +78,8 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
IMPORTING IMPORTING
!iv_concept TYPE sotr_conc !iv_concept TYPE sotr_conc
RETURNING RETURNING
VALUE(rs_sotr) TYPE ty_sotr . VALUE(rs_sotr) TYPE ty_sotr.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
@ -74,6 +88,59 @@ ENDCLASS.
CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. 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. METHOD create_sotr.
DATA: DATA:

View File

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

View File

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

View File

@ -15,7 +15,7 @@ CLASS zcl_abapgit_object_apis DEFINITION
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -42,7 +42,7 @@ CLASS zcl_abapgit_object_apis IMPLEMENTATION.
TRY. TRY.
CREATE DATA lr_data TYPE (c_model). CREATE DATA lr_data TYPE (c_model).
CATCH cx_sy_create_error. 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. ENDTRY.
ENDMETHOD. 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -208,7 +208,7 @@ CLASS zcl_abapgit_object_bdef IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_BDEF_OBJECT_PERSIST'). CREATE OBJECT mi_persistence TYPE ('CL_BDEF_OBJECT_PERSIST').
CATCH cx_sy_create_error. 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. ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -971,7 +971,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
ls_class_key-clsname = ms_item-obj_name. 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) " Skip classes generated by DDLS (SADL)
IF rv_bool = abap_true AND 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
INTERFACES zif_abapgit_object. INTERFACES zif_abapgit_object.
PROTECTED SECTION. PROTECTED SECTION.
@ -38,7 +38,7 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
r_ref_db_access = mo_cmp_db. r_ref_db_access = mo_cmp_db.
CATCH cx_root. 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. ENDTRY.
mv_name = ms_item-obj_name. mv_name = ms_item-obj_name.
@ -50,21 +50,16 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
DATA: lo_cmp_template TYPE REF TO object. DATA: lo_cmp_template TYPE REF TO object.
TRY. CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB')
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB') EXPORTING
EXPORTING i_name = mv_name
i_name = mv_name i_version = 'A'
i_version = 'A' RECEIVING
RECEIVING r_ref_template = lo_cmp_template.
r_ref_template = lo_cmp_template.
CALL METHOD lo_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER') CALL METHOD lo_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER')
RECEIVING RECEIVING
r_user = rv_user. r_user = rv_user.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -73,19 +68,14 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
DATA: lv_deleted TYPE abap_bool. DATA: lv_deleted TYPE abap_bool.
TRY. CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE')
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE') EXPORTING
EXPORTING i_name = mv_name
i_name = mv_name i_version = 'A'
i_version = 'A' i_flg_header = abap_true
i_flg_header = abap_true i_flg_lines = abap_true
i_flg_lines = abap_true RECEIVING
RECEIVING r_flg_deleted = lv_deleted.
r_flg_deleted = lv_deleted.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
IF lv_deleted = abap_false. IF lv_deleted = abap_false.
zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ). zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ).
@ -103,37 +93,32 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
<lg_header> TYPE any, <lg_header> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
TRY. CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). ASSIGN lr_template->* TO <lg_template>.
ASSIGN lr_template->* TO <lg_template>.
io_xml->read( io_xml->read(
EXPORTING EXPORTING
iv_name = 'CMPT' iv_name = 'CMPT'
CHANGING CHANGING
cg_data = <lg_template> ). cg_data = <lg_template> ).
ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE <lg_template> TO <lg_header>. ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE <lg_template> TO <lg_header>.
IF sy-subrc = 0. IF sy-subrc = 0.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
<lg_field> = ms_item-obj_name. <lg_field> = ms_item-obj_name.
ENDIF. ENDIF.
ASSIGN COMPONENT 'VERSION' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'VERSION' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
<lg_field> = 'A'. <lg_field> = 'A'.
ENDIF. ENDIF.
ENDIF. ENDIF.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE') CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE')
EXPORTING EXPORTING
i_template_db = <lg_template> i_template_db = <lg_template>
i_flg_header = abap_true i_flg_header = abap_true
i_flg_lines = abap_true. i_flg_lines = abap_true.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
corr_insert( iv_package ). corr_insert( iv_package ).
@ -142,24 +127,20 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
TRY. CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS')
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') EXPORTING
EXPORTING i_name = mv_name
i_name = mv_name i_version = 'A'
i_version = 'A' RECEIVING
RECEIVING r_flg_exists = rv_bool.
r_flg_exists = rv_bool. IF rv_bool = abap_false.
IF rv_bool = abap_false. CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS')
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') EXPORTING
EXPORTING i_name = mv_name
i_name = mv_name i_version = 'I'
i_version = 'I' RECEIVING
RECEIVING r_flg_exists = rv_bool.
r_flg_exists = rv_bool. ENDIF.
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -218,47 +199,42 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
<lg_header> TYPE any, <lg_header> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
TRY. CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). ASSIGN lr_template->* TO <lg_template>.
ASSIGN lr_template->* TO <lg_template>.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE') CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE')
EXPORTING EXPORTING
i_name = |{ ms_item-obj_name }| i_name = |{ ms_item-obj_name }|
i_version = 'A' i_version = 'A'
RECEIVING RECEIVING
r_template = <lg_template>. r_template = <lg_template>.
ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE <lg_template> TO <lg_header>. ASSIGN COMPONENT 'STR_HEADER' OF STRUCTURE <lg_template> TO <lg_header>.
IF sy-subrc = 0. IF sy-subrc = 0.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR <lg_field>. CLEAR <lg_field>.
ENDIF. ENDIF.
ASSIGN COMPONENT 'VERSION' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'VERSION' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR <lg_field>. CLEAR <lg_field>.
ENDIF. ENDIF.
ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR <lg_field>. CLEAR <lg_field>.
ENDIF. ENDIF.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR <lg_field>. CLEAR <lg_field>.
ENDIF. ENDIF.
ASSIGN COMPONENT 'CHANGED_TS' OF STRUCTURE <lg_header> TO <lg_field>. ASSIGN COMPONENT 'CHANGED_TS' OF STRUCTURE <lg_header> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR <lg_field>. CLEAR <lg_field>.
ENDIF. ENDIF.
ENDIF. ENDIF.
io_xml->add( iv_name = 'CMPT' io_xml->add( iv_name = 'CMPT'
ig_data = <lg_template> ). ig_data = <lg_template> ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -2,18 +2,50 @@ CLASS zcl_abapgit_object_dcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. 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. PROTECTED SECTION.
PRIVATE 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. ENDCLASS.
CLASS zcl_abapgit_object_dcls IMPLEMENTATION. 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. METHOD zif_abapgit_object~changed_by.
DATA: lr_data TYPE REF TO data, 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.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
@ -23,39 +55,31 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSIGN lr_data->* TO <lg_data>. ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD mo_dcl_handler->('READ')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('READ')
EXPORTING EXPORTING
iv_dclname = ms_item-obj_name iv_dclname = ms_item-obj_name
IMPORTING IMPORTING
es_dclsrc = <lg_data>. es_dclsrc = <lg_data>.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
rv_user = <lg_field>.
ELSE.
rv_user = c_user_unknown.
ENDIF.
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
rv_user = <lg_field>.
ELSE.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
DATA: lo_dcl TYPE REF TO object, DATA: lx_error TYPE REF TO cx_root.
lx_error TYPE REF TO cx_root.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD mo_dcl_handler->('DELETE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('DELETE')
EXPORTING EXPORTING
iv_dclname = ms_item-obj_name. iv_dclname = ms_item-obj_name.
@ -70,9 +94,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data, 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, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
@ -91,20 +115,33 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
<lg_field> = mo_files->read_string( 'asdcls' ). <lg_field> = mo_files->read_string( 'asdcls' ).
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 ).
TRY. TRY.
tadir_insert( iv_package ). TRY.
CALL METHOD mo_dcl_handler->('SAVE')
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') EXPORTING
RECEIVING iv_dclname = ms_item-obj_name
ro_handler = lo_dcl. iv_put_state = 'I'
is_dclsrc = <lg_data>
CALL METHOD lo_dcl->('SAVE') iv_devclass = iv_package
EXPORTING iv_access_mode = 'INSERT'
iv_dclname = ms_item-obj_name iv_abap_language_version = lv_abap_language_version.
iv_put_state = 'I' CATCH cx_sy_dyn_call_param_not_found.
is_dclsrc = <lg_data> CALL METHOD mo_dcl_handler->('SAVE')
iv_devclass = iv_package EXPORTING
iv_access_mode = 'INSERT'. 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. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
@ -117,23 +154,11 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lo_dcl TYPE REF TO object, CALL METHOD mo_dcl_handler->('CHECK_EXISTENCE')
lx_error TYPE REF TO cx_root. EXPORTING
iv_objectname = ms_item-obj_name
TRY. RECEIVING
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') rv_exists = rv_bool.
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('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. ENDMETHOD.
@ -189,7 +214,6 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lr_data TYPE REF TO data, 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.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
@ -200,60 +224,55 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSIGN lr_data->* TO <lg_data>. ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD mo_dcl_handler->('READ')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('READ')
EXPORTING EXPORTING
iv_dclname = ms_item-obj_name iv_dclname = ms_item-obj_name
IMPORTING IMPORTING
es_dclsrc = <lg_data>. es_dclsrc = <lg_data>.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
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.
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
mo_files->add_string(
iv_ext = 'asdcls'
iv_string = <lg_field> ).
CLEAR <lg_field>.
io_xml->add( iv_name = 'DCLS'
ig_data = <lg_data> ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
clear_fields( CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
mo_files->add_string(
iv_ext = 'asdcls'
iv_string = <lg_field> ).
CLEAR <lg_field>.
io_xml->add( iv_name = 'DCLS'
ig_data = <lg_data> ).
ENDMETHOD. 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. 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
METHODS open_adt_stob METHODS open_adt_stob
@ -20,6 +20,7 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
zcx_abapgit_exception. zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
DATA mo_ddl_handler TYPE REF TO object. " CL_DD_DDL_HANDLER
METHODS is_baseinfo_supported METHODS is_baseinfo_supported
RETURNING RETURNING
VALUE(rv_supported) TYPE abap_bool . 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 METHODS format_source_before_serialize
CHANGING CHANGING
cv_string TYPE string. cv_string TYPE string.
METHODS clear_fields
CHANGING
!cg_data TYPE any
RAISING
zcx_abapgit_exception .
ENDCLASS. ENDCLASS.
@ -38,8 +45,6 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD constructor. METHOD constructor.
DATA lo_ddl TYPE REF TO object.
super->constructor( super->constructor(
is_item = is_item is_item = is_item
iv_language = iv_language iv_language = iv_language
@ -49,9 +54,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
TRY. TRY.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
handler = lo_ddl. handler = mo_ddl_handler.
CATCH cx_root. 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. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -93,13 +99,12 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD is_baseinfo_supported. METHOD is_baseinfo_supported.
DATA: DATA:
lr_data_baseinfo TYPE REF TO data, lr_data_baseinfo TYPE REF TO data.
lx_error TYPE REF TO cx_root.
TRY. TRY.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE'). CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE').
rv_supported = abap_true. rv_supported = abap_true.
CATCH cx_root INTO lx_error. CATCH cx_root.
rv_supported = abap_false. rv_supported = abap_false.
ENDTRY. ENDTRY.
@ -108,9 +113,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD open_adt_stob. METHOD open_adt_stob.
DATA: lr_data TYPE REF TO data, DATA: lr_data TYPE REF TO data.
lo_ddl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE. FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE. FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
@ -120,46 +123,37 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
FIELD-SYMBOLS: <lg_ddlname> TYPE any. FIELD-SYMBOLS: <lg_ddlname> TYPE any.
TRY. CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ').
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ'). ASSIGN lr_data->* TO <lt_ddnames>.
ASSIGN lr_data->* TO <lt_ddnames>.
CREATE DATA lr_data LIKE LINE OF <lt_ddnames>. CREATE DATA lr_data LIKE LINE OF <lt_ddnames>.
ASSIGN lr_data->* TO <lg_ddnames>. ASSIGN lr_data->* TO <lg_ddnames>.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW'). CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW').
ASSIGN lr_data->* TO <lt_entity_view>. ASSIGN lr_data->* TO <lt_entity_view>.
CREATE DATA lr_data LIKE LINE OF <lt_entity_view>. CREATE DATA lr_data LIKE LINE OF <lt_entity_view>.
ASSIGN lr_data->* TO <lg_entity_view>. ASSIGN lr_data->* TO <lg_entity_view>.
CLEAR <lt_ddnames>. CLEAR <lt_ddnames>.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_ddnames> TO <lg_ddname>. ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_ddnames> TO <lg_ddname>.
<lg_ddname> = iv_ddls_name. <lg_ddname> = iv_ddls_name.
INSERT <lg_ddnames> INTO TABLE <lt_ddnames>. INSERT <lg_ddnames> INTO TABLE <lt_ddnames>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
RECEIVING EXPORTING
handler = lo_ddl. ddnames = <lt_ddnames>
IMPORTING
view_of_entity = <lt_entity_view>.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME') READ TABLE <lt_entity_view> ASSIGNING <lg_entity_view> INDEX 1.
EXPORTING IF sy-subrc = 0.
ddnames = <lt_ddnames> ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <lg_entity_view> TO <lg_ddlname>.
IMPORTING
view_of_entity = <lt_entity_view>.
READ TABLE <lt_entity_view> ASSIGNING <lg_entity_view> INDEX 1. zcl_abapgit_adt_link=>jump( iv_obj_name = <lg_ddlname>
IF sy-subrc = 0. iv_obj_type = 'DDLS' ).
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <lg_entity_view> TO <lg_ddlname>.
zcl_abapgit_adt_link=>jump( iv_obj_name = <lg_ddlname> ENDIF.
iv_obj_type = 'DDLS' ).
ENDIF.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -180,23 +174,17 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: lo_ddl TYPE REF TO object, DATA: lr_data TYPE REF TO data,
lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV'). CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
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')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
@ -270,22 +258,22 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: DATA:
lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data, lr_data TYPE REF TO data,
lr_data_baseinfo TYPE REF TO data, lr_data_baseinfo TYPE REF TO data,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: FIELD-SYMBOLS:
<lg_data> TYPE any, <lg_data> TYPE any,
<lg_data_baseinfo> TYPE any, <lg_data_baseinfo> TYPE any,
<lg_source> TYPE any, <lg_source> TYPE any,
<lg_baseinfo_string> TYPE any, <lg_baseinfo_string> TYPE any,
<lg_baseinfo_ddlname> TYPE any. <lg_baseinfo_ddlname> TYPE any,
<lg_abap_language_version> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
io_xml->read( EXPORTING iv_name = 'DDLS' io_xml->read( EXPORTING iv_name = 'DDLS'
CHANGING cg_data = <lg_data> ). CHANGING cg_data = <lg_data> ).
@ -293,9 +281,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
<lg_source> = mo_files->read_string( 'asddls' ). <lg_source> = mo_files->read_string( 'asddls' ).
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_abap_language_version>.
RECEIVING IF sy-subrc = 0.
handler = lo_ddl. set_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
IF is_baseinfo_supported( ) = abap_true. IF is_baseinfo_supported( ) = abap_true.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE'). 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. ASSERT sy-subrc = 0.
<lg_baseinfo_ddlname> = ms_item-obj_name. <lg_baseinfo_ddlname> = ms_item-obj_name.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') TRY.
EXPORTING CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE')
name = ms_item-obj_name EXPORTING
put_state = 'N' name = ms_item-obj_name
ddddlsrcv_wa = <lg_data> put_state = 'N'
baseinfo_string = <lg_data_baseinfo>. 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. ELSE.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE') CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
put_state = 'N' put_state = 'N'
ddddlsrcv_wa = <lg_data>. ddddlsrcv_wa = <lg_data>.
ENDIF. ENDIF.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR') CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~WRITE_TADIR')
EXPORTING EXPORTING
objectname = ms_item-obj_name objectname = ms_item-obj_name
devclass = iv_package devclass = iv_package
@ -333,16 +332,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
corr_insert( iv_package ). corr_insert( iv_package ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
IF lo_ddl IS NOT INITIAL. " Attempt clean-up but catch error if it doesn't work
" Attempt clean-up but catch error if it doesn't work TRY.
TRY. CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~DELETE')
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE') EXPORTING
EXPORTING name = ms_item-obj_name
name = ms_item-obj_name prid = 0.
prid = 0. CATCH cx_root ##NO_HANDLER.
CATCH cx_root ##NO_HANDLER. ENDTRY.
ENDTRY.
ENDIF.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
@ -354,15 +351,10 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE objstate, DATA: lv_state TYPE objstate.
lo_ddl TYPE REF TO object.
TRY. TRY.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
RECEIVING
handler = lo_ddl.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
IMPORTING IMPORTING
@ -441,35 +433,28 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lo_ddl TYPE REF TO object, DATA: lr_data TYPE REF TO data,
lr_data TYPE REF TO data,
lr_data_baseinfo 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. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any, <lg_field> TYPE any,
<lv_comp> LIKE LINE OF lt_clr_comps,
<lt_data_baseinfo> TYPE ANY TABLE, <lt_data_baseinfo> TYPE ANY TABLE,
<lg_data_baseinfo> TYPE any, <lg_data_baseinfo> TYPE any,
<lg_ddlname> TYPE any, <lg_ddlname> TYPE any,
<lg_as4local> TYPE any. <lg_as4local> TYPE any.
TRY. CREATE DATA lr_data TYPE ('DDDDLSRCV').
CREATE DATA lr_data TYPE ('DDDDLSRCV'). ASSIGN lr_data->* TO <lg_data>.
ASSIGN lr_data->* TO <lg_data>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') TRY.
RECEIVING
handler = lo_ddl.
IF is_baseinfo_supported( ) = abap_true. IF is_baseinfo_supported( ) = abap_true.
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_T_BASEINFO_STRING'). 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 <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 EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
@ -494,7 +479,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
ELSE. ELSE.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ') CALL METHOD mo_ddl_handler->('IF_DD_DDL_HANDLER~READ')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
@ -506,20 +491,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
APPEND 'AS4USER' TO lt_clr_comps. clear_fields( CHANGING cg_data = <lg_data> ).
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.
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>. ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
@ -536,4 +508,30 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ig_data = <lg_data> ). ig_data = <lg_data> ).
ENDMETHOD. 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. ENDCLASS.

View File

@ -2,147 +2,80 @@ CLASS zcl_abapgit_object_ddlx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA mi_persistence TYPE REF TO if_wb_object_persist . DATA mi_persistence TYPE REF TO if_wb_object_persist.
METHODS get_persistence DATA mi_data_model TYPE REF TO if_wb_object_data_model.
RETURNING DATA mv_object_key TYPE seu_objkey.
VALUE(ri_persistence) TYPE REF TO if_wb_object_persist
RAISING
zcx_abapgit_exception .
METHODS clear_fields METHODS clear_fields
CHANGING CHANGING
!cg_data TYPE any . !cg_data TYPE any
METHODS clear_field RAISING
IMPORTING zcx_abapgit_exception .
!iv_fieldname TYPE csequence
CHANGING
!cg_metadata TYPE any .
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_ddlx IMPLEMENTATION. 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. mv_object_key = ms_item-obj_name.
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.
TRY. TRY.
IF mi_persistence IS NOT BOUND. CREATE OBJECT mi_persistence
TYPE ('CL_DDLX_ADT_OBJECT_PERSIST').
CREATE OBJECT mi_persistence CREATE OBJECT mi_data_model
TYPE ('CL_DDLX_ADT_OBJECT_PERSIST'). TYPE ('CL_DDLX_WB_OBJECT_DATA').
ENDIF. CATCH cx_sy_create_object_error.
RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
ri_persistence = mi_persistence.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: DATA: lr_data TYPE REF TO 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.
FIELD-SYMBOLS: FIELD-SYMBOLS:
<lg_data> TYPE any, <lg_data> TYPE any,
<lg_changed_by> TYPE data. <lg_changed_by> TYPE data.
lv_object_key = ms_item-obj_name. CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CREATE DATA lr_data mi_persistence->get(
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(
EXPORTING EXPORTING
p_object_key = lv_object_key p_object_key = mv_object_key
p_version = swbm_version_active p_version = swbm_version_active
CHANGING CHANGING
p_object_data = li_data_model ). p_object_data = mi_data_model ).
CATCH cx_root. CATCH cx_swb_exception.
rv_user = c_user_unknown. rv_user = c_user_unknown.
RETURN. RETURN.
ENDTRY. 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>. ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE <lg_data> TO <lg_changed_by>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
@ -153,18 +86,13 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
DATA: lv_object_key TYPE seu_objkey, DATA: lx_error TYPE REF TO cx_swb_exception.
lx_error TYPE REF TO cx_root.
lv_object_key = ms_item-obj_name.
TRY. TRY.
mi_persistence->delete( p_object_key = mv_object_key
p_version = swbm_version_active ).
get_persistence( )->delete( p_object_key = lv_object_key CATCH cx_swb_exception INTO lx_error.
p_version = swbm_version_active ).
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
@ -175,73 +103,74 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: li_data_model TYPE REF TO if_wb_object_data_model, DATA: lr_data TYPE REF TO data,
lr_data TYPE REF TO data, lx_error TYPE REF TO cx_swb_exception.
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_source> TYPE data, <lg_source> TYPE data,
<lg_version> TYPE data, <lg_version> TYPE data,
<lg_package> TYPE data, <lg_package> TYPE data,
<lg_changed_by> TYPE syuname, <lg_changed_by> TYPE syuname,
<lg_changed_at> TYPE xsddatetime_z. <lg_changed_at> TYPE xsddatetime_z,
<lg_abap_language_version> TYPE data.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
io_xml->read(
EXPORTING
iv_name = 'DDLX'
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.
TRY. TRY.
CREATE DATA lr_data " If the file doesn't exist that's ok, because previously
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA'). " the source code was stored in the xml. We are downward compatible.
ASSIGN lr_data->* TO <lg_data>. <lg_source> = mo_files->read_string( 'asddlxs' ).
CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
io_xml->read( ASSIGN COMPONENT 'METADATA-VERSION' OF STRUCTURE <lg_data> TO <lg_version>.
EXPORTING ASSERT sy-subrc = 0.
iv_name = 'DDLX'
CHANGING
cg_data = <lg_data> ).
ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <lg_data> TO <lg_source>. " We have to always save as inactive. Standard activation below activates then
ASSERT sy-subrc = 0. " and also creates transport request entry if necessary
<lg_version> = 'inactive'.
TRY. "package needed to be able to determine ABAP language version
" If the file doesn't exist that's ok, because previously ASSIGN COMPONENT 'METADATA-PACKAGE_REF-NAME' OF STRUCTURE <lg_data> TO <lg_package>.
" the source code was stored in the xml. We are downward compatible. IF <lg_package> IS ASSIGNED.
<lg_source> = mo_files->read_string( 'asddlxs' ). <lg_package> = iv_package.
CATCH zcx_abapgit_exception ##NO_HANDLER. ENDIF.
ENDTRY.
CREATE OBJECT li_data_model ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE <lg_data> TO <lg_changed_by>.
TYPE ('CL_DDLX_WB_OBJECT_DATA'). IF <lg_changed_by> IS ASSIGNED.
<lg_changed_by> = sy-uname.
ENDIF.
ASSIGN COMPONENT 'METADATA-CHANGED_AT' OF STRUCTURE <lg_data> TO <lg_changed_at>.
IF <lg_changed_at> IS ASSIGNED.
GET TIME STAMP FIELD <lg_changed_at>.
ENDIF.
ASSIGN COMPONENT 'METADATA-VERSION' OF STRUCTURE <lg_data> TO <lg_version>. mi_data_model->set_data( <lg_data> ).
ASSERT sy-subrc = 0.
" We have to always save as inactive. Standard activation below activates then TRY.
" and also creates transport request entry if necessary mi_persistence->save( mi_data_model ).
<lg_version> = 'inactive'. CATCH cx_swb_exception INTO lx_error.
"package needed to be able to determine ABAP language version
ASSIGN COMPONENT 'METADATA-PACKAGE_REF-NAME' OF STRUCTURE <lg_data> TO <lg_package>.
IF <lg_package> IS ASSIGNED.
<lg_package> = iv_package.
ENDIF.
ASSIGN COMPONENT 'METADATA-CHANGED_BY' OF STRUCTURE <lg_data> TO <lg_changed_by>.
IF <lg_changed_by> IS ASSIGNED.
<lg_changed_by> = sy-uname.
ENDIF.
ASSIGN COMPONENT 'METADATA-CHANGED_AT' OF STRUCTURE <lg_data> TO <lg_changed_at>.
IF <lg_changed_at> IS ASSIGNED.
GET TIME STAMP FIELD <lg_changed_at>.
ENDIF.
li_data_model->set_data( <lg_data> ).
get_persistence( )->save( li_data_model ).
tadir_insert( iv_package ).
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
tadir_insert( iv_package ).
zcl_abapgit_objects_activation=>add_item( ms_item ). zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. ENDMETHOD.
@ -249,16 +178,12 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lv_object_key TYPE seu_objkey.
lv_object_key = ms_item-obj_name.
rv_bool = abap_true. rv_bool = abap_true.
TRY. 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_version = swbm_version_active
p_existence_check_only = abap_true ). p_existence_check_only = abap_true ).
CATCH cx_swb_exception. CATCH cx_swb_exception.
rv_bool = abap_false. rv_bool = abap_false.
@ -317,73 +242,99 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lv_object_key TYPE seu_objkey, DATA: lr_data TYPE REF TO data,
li_data_model TYPE REF TO if_wb_object_data_model, lx_error TYPE REF TO cx_swb_exception.
li_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE data. <lg_field> TYPE data.
lv_object_key = ms_item-obj_name.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
TRY. 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( ).
IF zcl_abapgit_factory=>get_environment( )->compare_with_inactive( ) = abap_true. IF zcl_abapgit_factory=>get_environment( )->compare_with_inactive( ) = abap_true.
"Retrieve inactive version "Retrieve inactive version
li_persistence->get( mi_persistence->get(
EXPORTING EXPORTING
p_object_key = lv_object_key p_object_key = mv_object_key
p_version = swbm_version_inactive p_version = swbm_version_inactive
CHANGING CHANGING
p_object_data = li_data_model ). p_object_data = mi_data_model ).
IF li_data_model->get_object_name( ) IS INITIAL. IF mi_data_model->get_object_name( ) IS INITIAL.
"Fallback: retrieve active version "Fallback: retrieve active version
li_persistence->get( mi_persistence->get(
EXPORTING EXPORTING
p_object_key = lv_object_key p_object_key = mv_object_key
p_version = swbm_version_active p_version = swbm_version_active
CHANGING CHANGING
p_object_data = li_data_model ). p_object_data = mi_data_model ).
ENDIF. ENDIF.
ELSE. ELSE.
"Retrieve active version "Retrieve active version
li_persistence->get( mi_persistence->get(
EXPORTING EXPORTING
p_object_key = lv_object_key p_object_key = mv_object_key
p_version = swbm_version_active p_version = swbm_version_active
CHANGING CHANGING
p_object_data = li_data_model ). p_object_data = mi_data_model ).
ENDIF. ENDIF.
li_data_model->get_data( IMPORTING p_data = <lg_data> ). CATCH cx_swb_exception INTO lx_error.
clear_fields( CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
mo_files->add_string(
iv_ext = 'asddlxs'
iv_string = <lg_field> ).
CLEAR <lg_field>.
io_xml->add( iv_name = 'DDLX'
ig_data = <lg_data> ).
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
mi_data_model->get_data( IMPORTING p_data = <lg_data> ).
clear_fields( CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'CONTENT-SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
mo_files->add_string(
iv_ext = 'asddlxs'
iv_string = <lg_field> ).
CLEAR <lg_field>.
io_xml->add( iv_name = 'DDLX'
ig_data = <lg_data> ).
ENDMETHOD. 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. ENDCLASS.

View File

@ -465,7 +465,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF. ENDIF.
IF lv_package(1) = '$'. IF lv_package(1) = '$'.
zcl_abapgit_persist_packages=>get_instance( )->modify( lv_package ). zcl_abapgit_persist_factory=>get_packages( )->modify( lv_package ).
ENDIF. ENDIF.
set_lock( ii_package = li_package set_lock( ii_package = li_package
@ -571,7 +571,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
" For local packages store application component " For local packages store application component
IF ls_package_data-devclass(1) = '$'. 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_package = ls_package_data-devclass
iv_component = ls_package_data-component iv_component = ls_package_data-component
iv_comp_posid = ls_package_data-comp_posid ). iv_comp_posid = ls_package_data-comp_posid ).
@ -818,7 +818,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: ls_package_data TYPE scompkdtln, 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, li_package TYPE REF TO if_package,
lt_intf_usages TYPE tpak_permission_to_use_list, lt_intf_usages TYPE tpak_permission_to_use_list,
lt_usage_data TYPE scomppdata, lt_usage_data TYPE scomppdata,
@ -847,7 +847,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
" For local packages get application component " For local packages get application component
IF is_local( ls_package_data-devclass ) = abap_true. 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-component = ls_package_comp-component.
ls_package_data-comp_posid = ls_package_comp-comp_posid. ls_package_data-comp_posid = ls_package_comp-comp_posid.
ENDIF. 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -130,7 +130,7 @@ CLASS zcl_abapgit_object_drul IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_DRUL_WB_OBJECT_PERSIST'). CREATE OBJECT mi_persistence TYPE ('CL_DRUL_WB_OBJECT_PERSIST').
CATCH cx_sy_create_error. 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. ENDTRY.
ENDMETHOD. 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -151,7 +151,7 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
CREATE OBJECT mi_persistence TYPE ('CL_DTDC_OBJECT_PERSIST'). CREATE OBJECT mi_persistence TYPE ('CL_DTDC_OBJECT_PERSIST').
CATCH cx_sy_create_error. 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. ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -594,21 +594,7 @@ CLASS zcl_abapgit_object_fdt0 IMPLEMENTATION.
METHOD zif_abapgit_object~get_comparator. METHOD zif_abapgit_object~get_comparator.
RETURN.
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.
ENDMETHOD. 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_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_type_not_supported.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -60,7 +60,7 @@ CLASS zcl_abapgit_object_ftgl IMPLEMENTATION.
TRY. TRY.
CREATE DATA mr_toggle TYPE ('FTGL_S_WB_FEATURE_TOGGLE'). CREATE DATA mr_toggle TYPE ('FTGL_S_WB_FEATURE_TOGGLE').
CATCH cx_root. 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. ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -516,12 +516,15 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
METHOD functions. METHOD functions.
DATA: lv_area TYPE rs38l-area. DATA: lv_area TYPE rs38l-area,
FIELD-SYMBOLS: <ls_functab> TYPE LINE OF ty_rs38l_incl_tt. 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. lv_area = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS' CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS'
EXPORTING EXPORTING
function_pool = lv_area function_pool = lv_area
@ -534,9 +537,27 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ). zcx_abapgit_exception=>raise_t100( ).
ENDIF. 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>. LOOP AT rt_functab ASSIGNING <ls_functab>.
TRANSLATE <ls_functab> TO UPPER CASE. 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. ENDLOOP.
SORT rt_functab BY funcname ASCENDING. SORT rt_functab BY funcname ASCENDING.
@ -1277,6 +1298,14 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
pool_not_exists = 1. pool_not_exists = 1.
rv_bool = boolc( sy-subrc <> 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. ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4ba IMPLEMENTATION.
iv_field = 'CHANGED_TS' iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4bs IMPLEMENTATION.
iv_field = 'CHANGED_TS' iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_http DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -34,23 +42,42 @@ CLASS zcl_abapgit_object_http DEFINITION
object_state TYPE c LENGTH 1, object_state TYPE c LENGTH 1,
END OF ty_gs_object_version. 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. ENDCLASS.
CLASS zcl_abapgit_object_http IMPLEMENTATION. 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. METHOD zif_abapgit_object~changed_by.
TRY. SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name.
SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name. IF sy-subrc <> 0.
IF sy-subrc <> 0. rv_user = c_user_unknown.
rv_user = c_user_unknown. ENDIF.
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -60,14 +87,11 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
DATA lv_name TYPE c LENGTH 30. DATA lv_name TYPE c LENGTH 30.
lv_name = ms_item-obj_name. lv_name = ms_item-obj_name.
TRY.
CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE') CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE')
EXPORTING EXPORTING
name = lv_name name = lv_name
devclass = iv_package. devclass = iv_package.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -84,8 +108,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lo_http TYPE REF TO object, lo_http TYPE REF TO object,
ls_abap_lang TYPE ty_gs_object_version, ls_abap_lang TYPE ty_gs_object_version,
lo_instance TYPE REF TO object, lo_instance TYPE REF TO object,
lv_tadir_name TYPE tadir-obj_name, lv_icfnode TYPE ty_icf_node.
lt_ret TYPE STANDARD TABLE OF bapiret2.
TRY. TRY.
io_xml->read( io_xml->read(
@ -98,6 +121,14 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
EXPORTING iv_name = 'HTTPHDL' EXPORTING iv_name = 'HTTPHDL'
CHANGING cg_data = lt_handler ). 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'. SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = lv_http_servid AND version = 'A'.
IF sy-subrc = 0. IF sy-subrc = 0.
"update "update
@ -152,6 +183,9 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION') CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION')
EXPORTING EXPORTING
texts = ls_description. 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') CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SAVE')
EXPORTING EXPORTING
run_dark = abap_true run_dark = abap_true
@ -159,16 +193,6 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
korrnum = iv_transport. korrnum = iv_transport.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~FREE'). 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. CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ). zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY. ENDTRY.
@ -180,12 +204,8 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
DATA lv_id TYPE c LENGTH 30. 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'.
SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = ms_item-obj_name AND version = 'A'. rv_bool = boolc( sy-subrc = 0 ).
rv_bool = boolc( sy-subrc = 0 ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'HTTP not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -241,6 +261,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lt_handler TYPE TABLE OF ty_uconservhttphandler, lt_handler TYPE TABLE OF ty_uconservhttphandler,
ls_description TYPE ty_uconhttpservtext, ls_description TYPE ty_uconhttpservtext,
lx_root TYPE REF TO cx_root, lx_root TYPE REF TO cx_root,
lv_icfnode TYPE ty_icf_node,
lv_name TYPE c LENGTH 30. lv_name TYPE c LENGTH 30.
TRY. TRY.
@ -275,6 +296,15 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
iv_name = 'HTTPHDL' iv_name = 'HTTPHDL'
ig_data = lt_handler ). 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. CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ). zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY. ENDTRY.

View File

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

View File

@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_iobj DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
METHODS: METHODS:
@ -17,6 +25,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_iobj IMPLEMENTATION. 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. METHOD clear_field.
@ -43,12 +69,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
lv_objna = ms_item-obj_name. lv_objna = ms_item-obj_name.
TRY. CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ').
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>. ASSIGN lr_viobj->* TO <lg_viobj>.
CALL FUNCTION 'RSD_IOBJ_GET' CALL FUNCTION 'RSD_IOBJ_GET'
@ -61,7 +82,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
iobj_not_found = 1 iobj_not_found = 1
illegal_input = 2 illegal_input = 2
bct_comp_invalid = 3 bct_comp_invalid = 3
* not_authorized = 4 " not in lower releases * not_authorized = 4 " not in lower releases
OTHERS = 5. OTHERS = 5.
IF sy-subrc = 0. IF sy-subrc = 0.
ASSIGN COMPONENT 'TSTPNM' OF STRUCTURE <lg_viobj> TO <lg_tstpnm>. ASSIGN COMPONENT 'TSTPNM' OF STRUCTURE <lg_viobj> TO <lg_tstpnm>.
@ -134,20 +155,16 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
<lg_infoobject> TYPE data, <lg_infoobject> TYPE data,
<lt_infoobjects> TYPE STANDARD TABLE. <lt_infoobjects> TYPE STANDARD TABLE.
TRY. CREATE DATA lr_details TYPE ('BAPI6108').
CREATE DATA lr_details TYPE ('BAPI6108'). CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN').
CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP').
CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC').
CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE').
CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL'). CREATE DATA lr_infoobj TYPE STANDARD TABLE OF ('BAPI6108').
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_details->* TO <lg_details>.
ASSIGN lr_compounds->* TO <lt_compounds>. ASSIGN lr_compounds->* TO <lt_compounds>.
@ -335,11 +352,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
lv_objna = ms_item-obj_name. lv_objna = ms_item-obj_name.
TRY. CREATE DATA lr_viobj TYPE ('RSD_S_VIOBJ').
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>. ASSIGN lr_viobj->* TO <lg_viobj>.
@ -414,19 +427,15 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
<lt_hanafieldsmapping> TYPE STANDARD TABLE, <lt_hanafieldsmapping> TYPE STANDARD TABLE,
<lt_xxlattributes> TYPE STANDARD TABLE. <lt_xxlattributes> TYPE STANDARD TABLE.
TRY. CREATE DATA lr_details TYPE ('BAPI6108').
CREATE DATA lr_details TYPE ('BAPI6108'). CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM'). CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT'). CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN').
CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN'). CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP').
CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP'). CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC').
CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC'). CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE').
CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE'). CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP'). CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
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_details->* TO <lg_details>.
ASSIGN lr_compounds->* TO <lt_compounds>. 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_table = '/IWBEP/I_MGW_OHD'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwom IMPLEMENTATION.
iv_table = '/IWFND/I_MED_OHD' iv_table = '/IWFND/I_MED_OHD'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -44,6 +44,13 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION.
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwsv IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_SRH' iv_table = '/IWBEP/I_MGW_SRH'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwvb IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_VAH' iv_table = '/IWBEP/I_MGW_VAH'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). 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. ENDMETHOD.

View File

@ -2,6 +2,14 @@ CLASS zcl_abapgit_object_jobd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -13,6 +21,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_jobd IMPLEMENTATION. 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. METHOD zif_abapgit_object~changed_by.
@ -121,16 +147,11 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
lv_name = ms_item-obj_name. lv_name = ms_item-obj_name.
TRY. CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE')
CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE') EXPORTING
EXPORTING im_jd_name = lv_name
im_jd_name = lv_name IMPORTING
IMPORTING ex_is_existing = rv_bool.
ex_is_existing = rv_bool.
CATCH cx_root.
zcx_abapgit_exception=>raise( |JOBD not supported| ).
ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -7,6 +7,14 @@ CLASS zcl_abapgit_object_odso DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object . 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. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -22,6 +30,24 @@ ENDCLASS.
CLASS zcl_abapgit_object_odso IMPLEMENTATION. 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. METHOD clear_field.
@ -46,11 +72,7 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
FIELD-SYMBOLS: <lg_details> TYPE any, FIELD-SYMBOLS: <lg_details> TYPE any,
<lg_tstpnm> TYPE any. <lg_tstpnm> TYPE any.
TRY. CREATE DATA lr_details TYPE ('BAPI6116').
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>. 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, lt_msg TYPE STANDARD TABLE OF bal_s_msg,
ls_msg TYPE bal_s_msg. ls_msg TYPE bal_s_msg.
TRY. CREATE OBJECT lo_collection TYPE ('CL_RSD_ODSO_COLLECTION').
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_odsonam = ms_item-obj_name.
lv_objname = 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_indexes> TYPE STANDARD TABLE,
<lt_index_iobj> TYPE STANDARD TABLE. <lt_index_iobj> TYPE STANDARD TABLE.
TRY. CREATE DATA lr_details TYPE ('BAPI6116').
CREATE DATA lr_details TYPE ('BAPI6116'). CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO').
CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA').
CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN').
CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II').
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_details->* TO <lg_details>.
ASSIGN lr_infoobjects->* TO <lt_infoobjects>. ASSIGN lr_infoobjects->* TO <lt_infoobjects>.
@ -326,15 +340,11 @@ CLASS zcl_abapgit_object_odso IMPLEMENTATION.
<lt_indexes> TYPE STANDARD TABLE, <lt_indexes> TYPE STANDARD TABLE,
<lt_index_iobj> TYPE STANDARD TABLE. <lt_index_iobj> TYPE STANDARD TABLE.
TRY. CREATE DATA lr_details TYPE ('BAPI6116').
CREATE DATA lr_details TYPE ('BAPI6116'). CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO').
CREATE DATA lr_infoobjects TYPE STANDARD TABLE OF ('BAPI6116IO'). CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA').
CREATE DATA lr_navigation TYPE STANDARD TABLE OF ('BAPI6116NA'). CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN').
CREATE DATA lr_indexes TYPE STANDARD TABLE OF ('BAPI6116IN'). CREATE DATA lr_index_iobj TYPE STANDARD TABLE OF ('BAPI6116II').
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_details->* TO <lg_details>.
ASSIGN lr_infoobjects->* TO <lt_infoobjects>. ASSIGN lr_infoobjects->* TO <lt_infoobjects>.

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