Compare commits

...

223 Commits

Author SHA1 Message Date
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
Marc Bernard
a8cb44d548
1.131.0 (#7122) 2025-01-01 10:57:34 -05:00
ThomasPloski
9f00aac592
Object Handler of type HTTP (#7100)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
2025-01-01 10:52:48 -05:00
Marc Bernard
97f5435b81
Remove need to parallel_generators server group (#7119)
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>
2024-12-30 11:00:14 +01:00
Marc Bernard
4b6ac3c2a6
Fix dump when converting xstring to bintab (#7120)
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
2024-12-20 07:27:16 +01:00
Marc Bernard
1fac2a71e2
Fix indent of <pre> tags in HTML (#7118)
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
2024-12-18 16:21:26 +01:00
Marc Bernard
b7bb00d7ee
Limit number of GUI sessions (#7080)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-18 09:26:08 -05:00
Lars Hvam
31e860bde7
update npm dependencies (#7078)
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
2024-12-18 08:15:54 +01:00
Marc Bernard
e16e3d3ac6
FUGS: Fix activation error (#7115)
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
2024-12-17 08:59:39 -05:00
Marc Bernard
cf9da3c06d
Enhance logging with message id and number (#7111)
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>
2024-12-10 15:17:28 -05:00
Marc Bernard
7dd14b7ccf
USCA: Fix missing transport entry (#7110)
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>
2024-12-10 13:31:04 +01:00
Marc Bernard
3d3cae3990
IDOC/IEXT: Fix deserialize in background (#7113) 2024-12-10 07:50:34 +01:00
Marc Bernard
bc36dcc44b
Fix RFC error handling (#7102)
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>
2024-12-09 08:56:39 -05:00
Marc Bernard
621f0192ef
Fix missing longtexts (#7108)
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
ajson mirror / pr_ajson_changes (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-08 11:47:37 +01:00
Marc Bernard
f24f0c9589
MSAG: Fix deletion of message longtexts (#7109)
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>
2024-12-06 17:09:18 +01:00
Marc Bernard
fef6bf49ca
Fix generic table types (#7105)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-06 10:25:58 -05:00
Marc Bernard
53bad5bd20
Adjust object descriptions (#7101)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-06 10:51:12 +01:00
Marc Bernard
d21c8a3cfe
Fix dark theme CSS whitespace (#7104)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-06 10:47:39 +01:00
Marc Bernard
0e6c6fc120
Fix extended check issues - Part 9 (#7106)
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
2024-12-06 10:18:50 +01:00
Marc Bernard
cb58678c79
Refactor: Types related to object interface (#7096)
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>
2024-12-05 18:01:09 +01:00
Marc Bernard
da3f5e2a08
Fix extended check issues - Part 8 (#7094)
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>
2024-12-05 17:56:41 +01:00
Marc Bernard
697bc7f51d
Fix extended check issues - Part 7 (#7092)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:53:17 +01:00
Marc Bernard
b835900776
Fix extended check issues - Part 6 (#7091)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:50:17 +01:00
Marc Bernard
c266a4826c
Fix extended check issues - Part 5 (#7090)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:45:22 +01:00
Marc Bernard
03dfdb072c
Fix extended check issues - Part 4 (#7089)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:41:31 +01:00
Marc Bernard
a23c1d6d58
Fix extended check issues - Part 3 (#7088)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:35:53 +01:00
Marc Bernard
6f0dfc5a81
Fix extended check issues - Part 2 (#7087)
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>
2024-12-03 07:21:05 +01:00
Marc Bernard
900952495e
Fix extended check issues - Part 1 (#7086)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-03 07:18:52 +01:00
Marc Bernard
994cbf8f92
Fix error handling in exception viewer (#7095)
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
2024-12-02 09:27:48 -05:00
Marc Bernard
d31627d6a6
MSAG: Fix error handling during deletion (#7093) 2024-12-02 09:00:46 -05:00
Marc Bernard
65d08de249
SRVB: Clear fields and fix deserialize order (#7085)
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>
2024-11-29 13:13:19 +01:00
Marc Bernard
d9a2fc8fdf
Fix unit test in 702 - Part 3 (#7084)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-29 13:01:06 +01:00
Marc Bernard
e77abaea8c
Fix unit test in 702 - Part 2 (#7083)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-29 12:59:30 +01:00
Marc Bernard
a1535908ec
Fix unit test in 702 - Part 1 (#7082) 2024-11-29 08:23:59 +01:00
Marc Bernard
93935b3dfb
VIEW: save tddat entries to transport (#7042)
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>
2024-11-21 14:42:16 +01:00
Lars Hvam
aa2e082dcb
longtexts: workaround strange object names dump (#7077)
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
2024-11-15 12:56:02 +01:00
ConjuringCoffee
8f793b7b9e
Fix language conversion for language A (#7076)
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
2024-11-12 18:17:51 -05:00
Lars Hvam
a58de530d7
Update changelog.txt (#7073)
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
2024-11-04 10:31:54 +01:00
Marc Bernard
8bf5f0c4f8
1.130.0 (#7068)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-04 10:26:52 +01:00
Marc Bernard
c83ebbe82c
SSFO: Store smartform code as separate ABAP files (#7071)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-04 10:23:51 +01:00
Marc Bernard
996d26ac3a
WDYN: Store controller code as separate ABAP files (#7069)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-04 10:19:56 +01:00
Marc Bernard
5ee49e33e8
PROG: Store flow logic as separate ABAP files (#7066)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <marc@abappm.com>
2024-11-04 10:11:38 +01:00
Marc Bernard
b2d795d8b6
SHI8: Avoid package popup (#7072)
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
2024-11-02 11:45:54 -04:00
ThomasPloski
454607953d
SAJT: Support for Application Job Templates (#7027)
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>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-10-31 08:11:41 +01:00
ThomasPloski
713c258ff8
SAJC: Support for Application Job Catalog Entry (#7026)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-10-31 08:03:17 +01:00
ThomasPloski
f97818df21
APLO: Support for Application Log Objects (#7025)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-10-31 07:57:02 +01:00
Marc Bernard
3b77c130ee
Fix failing AFF unit tests in dev edition 2022 (#7070) 2024-10-31 07:51:29 +01:00
Marc Bernard
57d785ac98
Show diffs in case of trailing spaces (#7062)
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>
2024-10-29 05:40:08 +01:00
Lars Hvam
e4bb6ec3ef
update npm dependencies (#7067) 2024-10-29 05:35:01 +01:00
github-actions[bot]
e83a31ebaf
ajson, Automatic Update (#7065)
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>
2024-10-28 08:17:59 +01:00
Marc Bernard
436f23c899
TABU: Display transport requests (#7063)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-10-28 08:16:12 +01:00
Marc Bernard
af8f1e23df
Remove generic comments (#7064)
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
2024-10-22 20:26:25 -04:00
gardian12
21c8865209
Added enhanced method resolution for background exit (#7059)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-10-22 10:04:40 -04:00
Lars Hvam
b1abcd8764
update npm dependencies (#7043) 2024-10-16 15:45:26 +02:00
Mike Pokraka
aee4d0aedd
Don't discard includes of nonexistent FUGR (#7053)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-09-24 00:25:28 +02:00
fvalves
8997e51b32
Comparing GET TIME STAMP and sy-datum and sy-uzeit only works if the user is in UTC (#7031)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-09-16 13:06:50 -04:00
Lars Hvam
a6c073409e
align TYPE expressions (#7050) 2024-09-13 10:47:32 +02:00
fvalves
ca1d349ca5
Enable CDS types (#7048) 2024-09-12 11:44:02 -04:00
Lars Hvam
cc9b9ef08e
bugfix: git chmod = symbolic link (#7047) 2024-09-12 05:47:41 +02:00
Lars Hvam
bd060315d0
abaplint.json move important stuff to start (#7046) 2024-09-11 18:46:12 +02:00
Lars Hvam
b751ff519e
basic FUGS serialization (#7045)
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
2024-09-11 13:52:41 +02:00
Lars Hvam
41619e6e4d
update npm dependencies (#7032)
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
2024-09-05 16:04:13 +02:00
Marc Bernard
a02632edcb
Add package check when creating repository (#7037)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-09-05 09:03:11 -04:00
Marc Bernard
65f8fa87ac
SFPF: Fix check if object exists (#7041)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-09-05 08:46:28 -04:00
Marc Bernard
0525d01394
SFPF: Add syntax highlighting for xdp files (#7040)
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>
2024-09-05 10:31:43 +02:00
Marc Bernard
4c40ca0232
JOBD: Clear changedby field (#7039) 2024-09-05 07:51:42 +02:00
Marc Bernard
fd673dac68
PROG: Support dynpros with splitter control (2) (#7038)
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
2024-09-04 15:36:35 -04:00
Marc Bernard
019cfe8152
Fix CX_SY_ZERODIVIDE dump in progress bar (#7036)
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
2024-09-04 10:45:56 -04:00
Marc Bernard
84656774fd
PROG: Support dynpros with splitter control (#7035) 2024-09-04 10:23:50 -04:00
fvalves
be5ec9ed29
Added test attributes to test class in ZCL_ABAPGIT_PROPERTIES_FILE (#7030)
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>
2024-08-29 16:28:46 +02:00
fvalves
ff60057e62
Enable deserialization of DSFD, DSFI and DRAS (#7029)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-08-29 09:46:23 +02:00
Albert Mink
72a1a13033
[AFF] experimental: Serialize all languages (#7022)
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: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-08-27 09:44:32 +02:00
Albert Mink
1339a71969
Filenames for translation are case sensitive (#6995)
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>
2024-08-20 10:21:03 -04:00
Albert Mink
d28dcaef29
Language conversion sap2/sap1 (#7017)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-08-20 15:13:28 +02:00
Lars Hvam
0f74ad944f
dont hide experimental settings, just disable it (#7014)
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
2024-08-13 09:22:55 +02:00
fvalves
2c9898e649
DSFI: Updated object handler to match the latest AFF definition (#7013) 2024-08-07 16:10:06 -04:00
Lukas
e93934d1cf
Add support for Software Component Relations (#7012)
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>
2024-08-06 11:02:22 +02:00
Christian Günter
1e0ff12c60
fix sticky header with browser control warning (#6997)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-08-06 10:54:49 +02:00
Lars Hvam
0d6d999e62
remove 200% icon scaling (#7003)
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
2024-08-05 18:08:54 +02:00
fvalves
82bed9224c
DSFI: CDS Scalar Function Implementation (#6952)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-08-05 14:55:00 +02:00
Lars Hvam
a1a65d2e48
update to docker compose v2 (#7010) 2024-08-05 13:40:22 +02:00
Lars Hvam
5dd4d83f3f
testing: transpiled abapGit running on web via express js (#7008)
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
2024-08-02 08:06:32 +02:00
Lars Hvam
d4c7365725
router: extract to method (#7009)
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
2024-08-01 15:51:22 +02:00
Lars Hvam
d9a00a5f55
README.md: update credits, add AFF (#7007) 2024-08-01 15:43:50 +02:00
Lars Hvam
5d59d6f8d2
html: refactor setting debug mode (#7005)
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
2024-07-31 18:22:04 +02:00
Lars Hvam
1c2b65814f
zcl_abapgit_timer: delete unit tests (#7004) 2024-07-31 18:17:06 +02:00
Lars Hvam
27e767e935
zcl_abapgit_function_module: cloud compatiblity (#7002) 2024-07-31 18:07:58 +02:00
Lars Hvam
36d91e973e
where-used: remove public use of RSFINDLST (#6992)
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
2024-07-30 09:30:53 +02:00
Abo
c5a6aed115
fix: syst_langu does not exist on older releases (#6999)
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>
2024-07-25 21:52:35 +02:00
Albert Mink
a120ce66b0
Fix sap2/sap1 for AFF experimental (#6993)
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: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-07-23 12:36:06 +02:00
fvalves
a7e984151b
DRAS: CDS Aspect (#6953)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-07-23 10:23:18 +02:00
fvalves
b9ac1265f4
DSFD: CDS Scalar Function Definition (#6951)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-07-23 10:21:09 +02:00
Lars Hvam
8d91119371
uccp(), cloud compatibility (#6991) 2024-07-23 10:15:41 +02:00
Lars Hvam
8b7c4862f3
update npm dependencies (#6973)
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
2024-07-23 08:20:46 +02:00
Albert Mink
f9bd01021d
Extend logic to detect BCP47 languages (#6986)
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>
2024-07-22 14:28:16 +02:00
Albert Mink
d8afb7bf42
Pass variable to METH (#6987) 2024-07-18 14:10:48 +02:00
Marc Bernard
872ed2758f
Allow staging for empty repositories (#6981)
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
2024-07-14 09:04:10 -04:00
Albert Mink
faac8542e4
Clear variables when getting i18n files (#6978)
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
2024-07-11 14:01:56 +02:00
Albert Mink
a7fbf2205f
Fix deserialize SEOCLASSTX for INTF [AFF] (#6983)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-07-11 13:37:52 +02:00
Christian Günter
7854587a5f
downport (#6984) 2024-07-11 07:23:43 -04:00
Albert Mink
c1c36a5780
Simplify the JSON2ABAP (#6979)
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
2024-07-11 08:45:32 +02:00
ellima
dd77c9930f
BGQC: Add support for Background Processing Context (#6974)
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: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-07-10 15:38:42 -04:00
ViktoriaFreidel
68e507604c
UIAD: Add support for Launchpad App Descriptor Item (#6969)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-07-10 15:32:27 -04:00
github-actions[bot]
1269360946
ajson, Automatic Update (#6977)
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>
2024-07-09 21:22:13 +02:00
Albert Mink
263a58e84f
Fix typo in BCP47 to SAP1 conversion (#6971)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-07-09 21:17:14 +02:00
Lars Hvam
840ec2d8f0
update npm dependencies (#6972)
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
2024-07-06 10:52:40 +02:00
Marc Bernard
8b2ab1e5d9
CLIF: Add missing translations for classes and interfaces (#6963)
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>
2024-07-04 13:16:40 +02:00
Marc Bernard
9261028dcb
Fix dump in activation error handling (#6967) 2024-07-03 12:04:03 +02:00
Mike Pokraka
e4540da772
CDBO: Fix missing parameters in constructor (#6966)
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
2024-07-03 09:06:20 +02:00
Marc Bernard
618f5ec279
SXSD: Fix check if BADI exists (#6961)
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
2024-07-01 17:05:25 +02:00
Marc Bernard
7d67620b03
ENHO: Fix diff in generated comments of class enhancements (#6962) 2024-07-01 17:01:29 +02:00
Marc Bernard
121f580abb
1.129.0 (#6954)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-07-01 10:01:40 +02:00
Alexander Tsybulsky
b4f14ab6e8
TABL: Clear DBINCLEXCL and DBSYSSELx fields (#6960)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-07-01 09:55:55 +02:00
Mike Pokraka
b87f5c4ee8
Read-only support for SXSD - Classic BAdI definition (#6958)
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>
2024-06-28 14:11:16 +02:00
thorsten-wolf-neptune
2e63907565
data serializer: fix carriage return problem (#6957)
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>
2024-06-27 16:56:14 +02:00
Marc Bernard
55f9b49577
Add parameters to map_object_to_filename (#6955)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-06-27 16:44:22 +02:00
Lars Hvam
a96e581fa4
update npm dependencies (#6931) 2024-06-17 07:44:17 +02:00
Alexander Tsybulsky
f0a6532deb
Exclude files from remote (#6942)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-06-16 07:34:23 +02:00
Christian Günter
f486167cc4
Fix yank mode - copy to clipboad (#6946) 2024-06-12 13:16:47 +02:00
Marc Bernard
3929cfab17
Fix folder logic buffer (#6945) 2024-06-11 16:28:50 +02:00
Marc Bernard
22e6df1d4d
Remove duplicate clipboad action (#6944) 2024-06-11 16:15:53 +02:00
Marc Bernard
4bf6e07235
Small performance improvement in folder logic (#6941) 2024-06-08 21:01:38 +02:00
Francisco Milán
376a7d8be8
Set Default Git User Details (#6920)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-06-06 07:03:17 +02:00
Marc Bernard
38e785ddb0
Sync UI theme in dark mode (#6940)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-05-29 09:13:45 +02:00
Lars Hvam
e2c625f2d9
HOOK: catch exception (#6937) 2024-05-24 13:00:21 +02:00
Lars Hvam
11a7e58237
ENHO: workaround dump during serialization (#6935) 2024-05-23 15:30:41 +02:00
Francisco Milán
13fd9a3897
Set Character Limit for "Table" Field in Data Config page (#6934)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-05-23 14:24:08 +02:00
Lars Hvam
667ac8966a
bugfix, new pull page: decide package warnings (#6932) 2024-05-21 17:46:36 +02:00
Francisco Milán
01544d86c6
Fix Issue Encountered on "Data Config" Page. (#6913)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-05-21 07:00:33 +02:00
Dennis Schaaf
32f002893c
VIEW: Add authorization group to serialize and deserialize (#6918)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-05-18 10:33:43 +02:00
ThomasPloski
2973cb4cba
CDBO Object Handler (#6930) 2024-05-15 08:04:47 +02:00
Mike Pokraka
40c5cd7212
Suppress popup when using background API (#6926)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-05-10 17:22:46 +02:00
Katharina Wurz
29baa5a152
Use bcp47 language code for AFF (#6915)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
2024-04-24 16:40:58 +02:00
Lars Hvam
a18b9c7f81
update eslint to 9 + update actions (#6910) 2024-04-21 11:32:42 +02:00
Kai Busse
6645fcecd5
Improve error message for SUSH objects not being supported. (#6916) 2024-04-19 14:28:10 +02:00
Alexander Tsybulsky
3bfb2be6ab
Where used page (#6897) 2024-04-19 07:51:59 +02:00
Marc Bernard
9b10bba142
DEVC: Fix "Package must be assigned to the software component LOCAL" (#6912) 2024-04-15 17:14:04 +02:00
Francisco Milán
0c4e5f5495
Fix bug in "Object to Files" Page. (#6908)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-04-14 09:41:22 +02:00
Marc Bernard
a648f1ef51
DEVC,NSPC: Serialize software component for add-ons (#6891) 2024-04-14 09:37:02 +02:00
Alexander Tsybulsky
f60e92d9b9
Template page (#6899) 2024-04-10 17:21:03 +02:00
Marc Bernard
ecdd17162a
SOTS: Remove from TADIR selection (#6906) 2024-04-10 16:30:33 +02:00
Marc Bernard
a972831441
Change message if local packages got lost (#6905) 2024-04-10 13:57:18 +02:00
ConjuringCoffee
6459b0c067
Integrate repo interface into online repo interface (#6894)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2024-04-08 15:40:52 +02:00
Marc Bernard
993466a1c9
Refactor: Translations for AFF (#6904) 2024-04-08 15:12:16 +02:00
425 changed files with 15058 additions and 5032 deletions

View File

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

View File

@ -1,14 +0,0 @@
---
parserOptions:
ecmaVersion: 5
env:
browser: true
extends:
- eslint:recommended
rules:
quotes: ['error', 'double', { 'avoidEscape': true }]
semi: ['error', 'always', { 'omitLastInOneLineBlock': true}]
no-console: off
indent: ['error', 2]
no-trailing-spaces: ['error']
no-unused-vars: ['warn']

View File

@ -19,11 +19,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: run
run: |
git clone https://github.com/abapGit/ajson_mirror.git

View File

@ -9,11 +9,8 @@ jobs:
build-merged:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: Run npm steps
run: |
npm install
@ -44,12 +41,10 @@ jobs:
outputs:
pushedTag: ${{ steps.deploy-release-tag.outputs.pushedTag }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: actions/setup-node@v3
with:
node-version: '16'
- uses: actions/setup-node@v4
- name: deploy-release-tag
id: deploy-release-tag
if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit'
@ -64,12 +59,12 @@ jobs:
needs: [build-merged, auto-tag]
if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit' && !!needs.auto-tag.outputs.pushedTag
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
repository: abapGit/build
path: build
ssh-key: ${{ secrets.DEPLOY_ABAPGIT_BUILD }}
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
path: abapGit
- name: mirror tag to the artifact
@ -84,10 +79,8 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: npm run unit
run: |
npm install

View File

@ -6,6 +6,6 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v1
uses: fsfe/reuse-action@v5

View File

@ -11,12 +11,9 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- name: npm install
run: |
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: |
npm install
npm run eslint
npm run merge
@ -32,30 +29,21 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- name: npm install
run: npm install
- name: npm run unit
run: npm run unit
- name: npm run coverage
run: npm run coverage
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm install
- run: npm run unit
- run: npm run coverage
integration:
runs-on: ubuntu-latest
needs: unit-tests
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- name: npm install
run: npm install
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm install
- name: start gitea
working-directory: test/gitea/
run: npm install && npm run gitea
- name: npm run integration
run: npm run integration
- run: npm run integration

View File

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

View File

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

View File

@ -8,6 +8,94 @@ Legend
+ : added
- : removed
2025-01-01 v1.131.0
-------------------
! Remove need to `parallel_generators` server group (#7119)
+ VIEW: save `tddat` entries to transport (#7042)
+ Support for HTTP Destination (#7100)
+ Enhance logging with message id and number (#7111)
* Fix language conversion for language A (#7076)
* longtexts: workaround strange object names dump (#7077)
* SRVB: Clear fields and fix deserialize order (#7085)
* MSAG: Fix error handling during deletion (#7093)
* Fix error handling in exception viewer (#7095)
* Fix dark theme CSS whitespace (#7104)
* MSAG: Fix deletion of message longtexts (#7109)
* Fix RFC error handling (#7102)
* IDOC/IEXT: Fix deserialize in background (#7113)
* USCA: Fix missing transport entry (#7110)
* FUGS: Fix activation error (#7115)
* Limit number of GUI sessions (#7080)
* Fix dump when converting `xstring` to `bintab` (#7120)
2024-11-04 v1.130.0
-------------------
! PROG: Store flow logic as separate ABAP files (#7066)
! WDYN: Store controller code as separate ABAP files (#7069)
! SSFO: Store smartform code as separate ABAP files (#7071)
+ CLIF: Add missing translations for classes and interfaces (#6963)
+ UIAD: Add support for Launchpad App Descriptor Item (#6969)
+ BGQC: Add support for Background Processing Context (#6974)
+ DSFD: CDS Scalar Function Definition (#6951)
+ DRAS: CDS Aspect (#6953)
+ DSFI: CDS Scalar Function Implementation (#6952)
+ Add support for Software Component Relations (#7012)
* ENHO: Fix diff in generated comments of class enhancements (#6962)
* SXSD: Fix check if BADI exists (#6961)
* CDBO: Fix missing parameters in `constructor` (#6966)
* Fix dump in activation error handling (#6967)
* Fix deserialize SEOCLASSTX for INTF [AFF] (#6983)
* Allow staging for empty repositories (#6981)
* fix: syst_langu does not exist on older releases (#6999)
* fix sticky header with browser control warning (#6997)
* DSFI: Updated object handler to match the latest AFF definition (#7013)
* Filenames for translation are case sensitive (#6995)
* Enable deserialization of DSFD, DSFI and DRAS (#7029)
* PROG: Support dynpros with splitter control (#7035, #7038)
* Fix `CX_SY_ZERODIVIDE` dump in progress bar (#7036)
* JOBD: Clear `changedby` field (#7039)
* SFPF: Add syntax highlighting for `xdp` files (#7040)
* SFPF: Fix check if object exists (#7041)
* Add package check when creating repository (#7037)
* FUGS: serialization (#7045)
* Enable CDS types (#7048)
* Don't discard includes of nonexistent FUGR (#7053)
* Added enhanced method resolution for background exit (#7059)
* TABU: Display transport requests (#7063)
* Show diffs in case of trailing spaces (#7062)
- remove 200% icon scaling (#7003)
2024-07-01 v1.129.0
-------------------
+ DEVC,NSPC: Serialize software component for add-ons (#6891)
+ Where-used page (#6897)
+ CDBO: Customer Data Browser Object (#6930)
+ VIEW: Add authorization group to serialize and deserialize (#6918)
+ Exclude files from remote (#6942)
+ Read-only support for SXSD - Classic BAdI definition (#6958)
* Change message if local packages got lost (#6905)
* SOTS: Remove from TADIR selection (#6906)
* Fix bug in "Object to Files" Page. (#6908)
* DEVC: Fix "Package must be assigned to the software component LOCAL" (#6912)
* Improve error message for SUSH objects not being supported. (#6916)
* Use bcp47 language code for AFF (#6915)
* Suppress popup when using background API (#6926)
* Fix Issue Encountered on "Data Config" Page. (#6913)
* Bugfix, new pull page: decide package warnings (#6932)
* Set Character Limit for "Table" Field in Data Config page (#6934)
* ENHO: workaround dump during serialization (#6935)
* HOOK: catch exception (#6937)
* Sync UI theme in dark mode (#6940)
* Set Default Git User Details (#6920)
* Small performance improvement in folder logic (#6941)
* Fix folder logic buffer (#6945)
* Fix yank mode - copy to clipboad (#6946)
* Data serializer: fix carriage return problem (#6957)
* TABL: Clear DBINCLEXCL and DBSYSSELx fields (#6960)
2024-04-05 v1.128.0
-------------------

View File

@ -2,10 +2,10 @@ CLASS cl_package_factory DEFINITION PUBLIC.
PUBLIC SECTION.
CLASS-METHODS load_package
IMPORTING
i_package_name TYPE devclass
i_package_name TYPE devclass
VALUE(i_force_reload) TYPE abap_bool OPTIONAL
EXPORTING
VALUE(e_package) TYPE REF TO if_package
VALUE(e_package) TYPE REF TO if_package
EXCEPTIONS
object_not_existing
unexpected_error
@ -19,9 +19,9 @@ CLASS cl_package_factory DEFINITION PUBLIC.
!i_suppress_dialog TYPE abap_bool DEFAULT abap_false
!i_suppress_access_permission TYPE abap_bool DEFAULT abap_false
EXPORTING
VALUE(e_package) TYPE REF TO if_package
VALUE(e_package) TYPE REF TO if_package
CHANGING
c_package_data TYPE any.
c_package_data TYPE any.
ENDCLASS.
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.
DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY.
DATA package_name TYPE string READ-ONLY.
DATA short_text TYPE string READ-ONLY.
DATA super_package_name TYPE string READ-ONLY.
DATA software_component TYPE string READ-ONLY.
DATA application_component TYPE string READ-ONLY.
DATA transport_layer TYPE string READ-ONLY.

48
deps/seoclasstx.tabl.xml vendored Normal file
View File

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

4
deps/tcdrs.tabl.xml vendored
View File

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

42
eslint.config.mjs Normal file
View File

@ -0,0 +1,42 @@
import js from "@eslint/js";
import globals from "globals";
export default [
js.configs.recommended,
{
"languageOptions": {
"parserOptions": {
"ecmaVersion": 2015
},
"sourceType": "script",
"globals": globals.browser,
},
"rules": {
"quotes": [
"error",
"double",
{
"avoidEscape": true
}
],
"semi": [
"error",
"always",
{
"omitLastInOneLineBlock": true
}
],
"no-console": "off",
"indent": [
"error",
2
],
"no-trailing-spaces": [
"error"
],
"no-unused-vars": [
"warn"
]
}
}
];

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -28,19 +28,37 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
METHOD zif_abapgit_background~run.
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,
li_repo TYPE REF TO zif_abapgit_repo,
lv_activation_setting TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite.
li_repo = ii_repo_online.
ls_checks = io_repo->deserialize_checks( ).
ls_checks = li_repo->deserialize_checks( ).
LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>.
<ls_overwrite>-decision = zif_abapgit_definitions=>c_yes.
ENDLOOP.
io_repo->deserialize( is_checks = ls_checks
lo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
lv_activation_setting = lo_settings->get_activate_wo_popup( ).
lo_settings->set_activate_wo_popup( abap_true ).
" pass decisions to delete
zcl_abapgit_services_repo=>delete_unnecessary_objects(
ii_repo = li_repo
is_checks = ls_checks
ii_log = ii_log ).
li_repo->deserialize( is_checks = ls_checks
ii_log = ii_log ).
lo_settings->set_activate_wo_popup( lv_activation_setting ).
ENDMETHOD.
ENDCLASS.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

@ -156,6 +156,18 @@ CLASS zcl_abapgit_settings DEFINITION
METHODS set_activate_wo_popup
IMPORTING
!iv_act_wo_popup TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup .
METHODS set_default_git_uname
IMPORTING
!iv_default_git_uname TYPE string.
METHODS get_default_git_uname
RETURNING
VALUE(rv_default_git_uname) TYPE string.
METHODS set_default_git_email
IMPORTING
!iv_default_git_email TYPE string.
METHODS get_default_git_email
RETURNING
VALUE(rv_default_git_email) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: BEGIN OF ty_s_settings,
@ -322,7 +334,11 @@ CLASS zcl_abapgit_settings IMPLEMENTATION.
WHEN 'Belize'.
rv_ui_theme = c_ui_theme-belize.
WHEN OTHERS.
rv_ui_theme = c_ui_theme-default.
IF lv_frontend_theme CS 'dark'.
rv_ui_theme = c_ui_theme-dark.
ELSE.
rv_ui_theme = c_ui_theme-default.
ENDIF.
ENDCASE.
ENDIF.
ENDMETHOD.
@ -487,4 +503,24 @@ CLASS zcl_abapgit_settings IMPLEMENTATION.
cg_data = ms_settings ).
ENDMETHOD.
METHOD get_default_git_uname.
rv_default_git_uname = ms_user_settings-default_git_uname.
ENDMETHOD.
METHOD set_default_git_uname.
ms_user_settings-default_git_uname = iv_default_git_uname.
ENDMETHOD.
METHOD get_default_git_email.
rv_default_git_email = ms_user_settings-default_git_email.
ENDMETHOD.
METHOD set_default_git_email.
ms_user_settings-default_git_email = iv_default_git_email.
ENDMETHOD.
ENDCLASS.

View File

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

View File

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

View File

@ -39,5 +39,13 @@ INTERFACE zif_abapgit_environment
iv_group TYPE clike
RETURNING
VALUE(rv_free_work_processes) TYPE i.
METHODS check_parallel_processing
IMPORTING
iv_group TYPE clike
RETURNING
VALUE(rv_checked) TYPE abap_bool.
METHODS get_available_user_sessions
RETURNING
VALUE(rv_sessions) TYPE i.
ENDINTERFACE.

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,442 @@
CLASS zcl_abapgit_where_used_tools DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES ty_devc_range TYPE RANGE OF tadir-devclass.
TYPES:
BEGIN OF ty_dependency,
package TYPE devclass,
obj_type TYPE tadir-object,
obj_prog_type TYPE trdir-subc,
obj_name TYPE tadir-obj_name,
obj_cls TYPE string,
dep_package TYPE devclass,
dep_obj_type TYPE tadir-object,
dep_obj_name TYPE tadir-obj_name,
dep_used_cls TYPE string,
dep_used_obj TYPE string,
END OF ty_dependency.
TYPES:
ty_dependency_tt TYPE STANDARD TABLE OF ty_dependency WITH DEFAULT KEY.
CLASS-METHODS new
RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_where_used_tools.
" the initial version of this utility is also available as a standalone tool
" here: https://github.com/sbcgua/crossdeps
METHODS select_external_usages
IMPORTING
iv_package TYPE tadir-devclass
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
ir_package_scope TYPE ty_devc_range OPTIONAL
RETURNING
VALUE(rt_objs) TYPE ty_dependency_tt
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_obj_signature,
package TYPE devclass,
obj_type TYPE tadir-object,
obj_name TYPE tadir-obj_name,
END OF ty_obj_signature.
TYPES ty_where_used_tt TYPE STANDARD TABLE OF rsfindlst WITH DEFAULT KEY.
TYPES ty_seu_obj TYPE STANDARD TABLE OF seu_obj WITH DEFAULT KEY.
TYPES:
BEGIN OF ty_dev_object,
type TYPE seu_stype,
tadir TYPE trobjtype,
END OF ty_dev_object.
DATA mt_object_packages TYPE HASHED TABLE OF ty_obj_signature WITH UNIQUE KEY obj_type obj_name.
DATA mt_dev_obj_cache TYPE HASHED TABLE OF ty_dev_object WITH UNIQUE KEY type.
METHODS get_where_used
IMPORTING
iv_obj_type TYPE euobj-id
iv_obj_name TYPE tadir-obj_name
it_scope TYPE ty_seu_obj OPTIONAL
ir_package_scope TYPE ty_devc_range OPTIONAL
RETURNING
VALUE(rt_findings) TYPE ty_where_used_tt
RAISING
zcx_abapgit_exception.
METHODS get_obj_package
IMPORTING
iv_obj_type TYPE tadir-object
iv_obj_name TYPE tadir-obj_name
RETURNING
VALUE(rv_package) TYPE tadir-devclass.
METHODS get_func_package
IMPORTING
iv_func_name TYPE tadir-obj_name
RETURNING
VALUE(rv_package) TYPE tadir-devclass.
METHODS get_incl_package
IMPORTING
iv_prog_name TYPE tadir-obj_name
RETURNING
VALUE(rv_package) TYPE tadir-devclass.
METHODS build_package_scope
IMPORTING
it_tadir TYPE STANDARD TABLE
ir_package_scope TYPE ty_devc_range
RETURNING
VALUE(rt_package_scope) TYPE ty_devc_range.
METHODS collect_where_used
IMPORTING
it_tadir TYPE STANDARD TABLE
ir_package_scope TYPE ty_devc_range
RETURNING
VALUE(rt_objs) TYPE ty_dependency_tt
RAISING
zcx_abapgit_exception.
METHODS convert_list
IMPORTING
iv_package TYPE ty_dependency-dep_package
iv_obj_type TYPE ty_dependency-dep_obj_type
iv_obj_name TYPE ty_dependency-dep_obj_name
it_where_used TYPE ty_where_used_tt
RETURNING
VALUE(rt_objs) TYPE ty_dependency_tt.
METHODS decode_obj_type
IMPORTING
iv_type TYPE rsfindlst-object_cls
RETURNING
VALUE(rv_type) TYPE ty_dev_object-tadir.
ENDCLASS.
CLASS zcl_abapgit_where_used_tools IMPLEMENTATION.
METHOD build_package_scope.
FIELD-SYMBOLS <ls_tadir> TYPE zif_abapgit_definitions=>ty_tadir.
FIELD-SYMBOLS <ls_pkg> LIKE LINE OF rt_package_scope.
rt_package_scope = ir_package_scope.
LOOP AT it_tadir ASSIGNING <ls_tadir>.
CHECK <ls_tadir>-object = 'DEVC'.
APPEND INITIAL LINE TO rt_package_scope ASSIGNING <ls_pkg>.
<ls_pkg>-sign = 'E'.
<ls_pkg>-option = 'EQ'.
<ls_pkg>-low = <ls_tadir>-obj_name.
ENDLOOP.
ENDMETHOD.
METHOD collect_where_used.
DATA li_progress TYPE REF TO zif_abapgit_progress.
DATA lt_where_used TYPE ty_where_used_tt.
DATA lt_objs_portion LIKE rt_objs.
FIELD-SYMBOLS <ls_tadir> TYPE zif_abapgit_definitions=>ty_tadir.
li_progress = zcl_abapgit_progress=>get_instance( lines( it_tadir ) ).
LOOP AT it_tadir ASSIGNING <ls_tadir>.
CHECK <ls_tadir>-object <> 'DEVC'.
li_progress->show(
iv_current = sy-tabix
iv_text = |{ <ls_tadir>-object } { <ls_tadir>-obj_name }| ).
lt_where_used = get_where_used(
iv_obj_type = |{ <ls_tadir>-object }|
iv_obj_name = <ls_tadir>-obj_name
ir_package_scope = ir_package_scope ).
lt_objs_portion = convert_list(
iv_package = <ls_tadir>-devclass
iv_obj_type = <ls_tadir>-object
iv_obj_name = <ls_tadir>-obj_name
it_where_used = lt_where_used ).
APPEND LINES OF lt_objs_portion TO rt_objs.
ENDLOOP.
li_progress->off( ).
ENDMETHOD.
METHOD convert_list.
" See also CL_FINB_GN_BBI=>GET_CROSSREF
FIELD-SYMBOLS <ls_dep> LIKE LINE OF rt_objs.
FIELD-SYMBOLS <ls_use> LIKE LINE OF it_where_used.
LOOP AT it_where_used ASSIGNING <ls_use>.
APPEND INITIAL LINE TO rt_objs ASSIGNING <ls_dep>.
<ls_dep>-dep_package = iv_package.
<ls_dep>-dep_obj_type = iv_obj_type.
<ls_dep>-dep_obj_name = iv_obj_name.
<ls_dep>-dep_used_obj = <ls_use>-used_obj.
<ls_dep>-dep_used_cls = <ls_use>-used_cls.
<ls_dep>-obj_cls = <ls_use>-object_cls.
<ls_dep>-obj_name = <ls_use>-encl_objec.
IF <ls_dep>-obj_name IS INITIAL.
<ls_dep>-obj_name = <ls_use>-object.
ENDIF.
IF <ls_use>-object_cls = 'FF'. " Function module
<ls_dep>-obj_type = 'FUNC'.
<ls_dep>-package = get_func_package( <ls_dep>-obj_name ).
ELSE.
<ls_dep>-obj_type = decode_obj_type( <ls_use>-object_cls ).
<ls_dep>-package = get_obj_package(
iv_obj_type = <ls_dep>-obj_type
iv_obj_name = <ls_dep>-obj_name ).
IF <ls_dep>-package IS INITIAL AND <ls_dep>-obj_type = 'CLAS'.
<ls_dep>-package = get_obj_package(
iv_obj_type = 'INTF'
iv_obj_name = <ls_dep>-obj_name ).
IF <ls_dep>-package IS NOT INITIAL.
<ls_dep>-obj_type = 'INTF'.
ENDIF.
ENDIF.
ENDIF.
IF <ls_dep>-package IS INITIAL.
IF <ls_dep>-obj_type = 'PROG'. " Maybe it is an include
<ls_dep>-package = get_incl_package( <ls_dep>-obj_name ).
IF <ls_dep>-package IS INITIAL.
SELECT SINGLE subc INTO <ls_dep>-obj_prog_type FROM trdir WHERE name = <ls_dep>-obj_name.
IF <ls_dep>-obj_prog_type IS NOT INITIAL AND <ls_dep>-obj_prog_type <> '1'. " Exec. prog
<ls_dep>-obj_type = 'INCL'.
ENDIF.
ENDIF.
ENDIF.
IF <ls_dep>-package IS INITIAL.
<ls_dep>-package = '????'.
ENDIF.
ENDIF.
ENDLOOP.
" some includes are ENHO ...
" include detection TRDIR, D010INC ???
" how to find connection with ENHO ?
" Useful: https://github.com/abaplint/abaplint-sci-client/blob/main/src/deps/zcl_abaplint_deps_find.clas.abap
" And cl_wb_manager->if_wb_manager~request_tool_access
" And discussions in https://github.com/abapGit/abapGit/pull/6897
ENDMETHOD.
METHOD decode_obj_type.
FIELD-SYMBOLS <ls_devobj> LIKE LINE OF mt_dev_obj_cache.
IF mt_dev_obj_cache IS INITIAL.
SELECT type tadir INTO TABLE mt_dev_obj_cache
FROM euobjedit.
ENDIF.
READ TABLE mt_dev_obj_cache ASSIGNING <ls_devobj> WITH KEY type = iv_type.
IF sy-subrc = 0.
rv_type = <ls_devobj>-tadir.
ENDIF.
ENDMETHOD.
METHOD get_func_package.
" See also: FUNCTION_INCLUDE_INFO, TFDIR, find main program -> get its pkg
DATA ls_obj_sig LIKE LINE OF mt_object_packages.
READ TABLE mt_object_packages INTO ls_obj_sig WITH KEY obj_type = 'FUNC' obj_name = iv_func_name.
IF sy-subrc <> 0.
SELECT SINGLE devclass INTO ls_obj_sig-package
FROM info_func
WHERE funcname = iv_func_name.
IF ls_obj_sig-package IS NOT INITIAL.
ls_obj_sig-obj_type = 'FUNC'.
ls_obj_sig-obj_name = iv_func_name.
INSERT ls_obj_sig INTO TABLE mt_object_packages.
ENDIF.
ENDIF.
rv_package = ls_obj_sig-package.
ENDMETHOD.
METHOD get_incl_package.
DATA lv_program TYPE progname.
DATA lv_area TYPE rs38l_area.
lv_program = iv_prog_name.
CALL FUNCTION 'FUNCTION_INCLUDE_CONCATENATE'
CHANGING
program = lv_program
complete_area = lv_area
EXCEPTIONS
not_enough_input = 1
no_function_pool = 2
delimiter_wrong_position = 3
OTHERS = 4 ##FM_SUBRC_OK.
IF lv_area IS INITIAL.
SELECT SINGLE master FROM d010inc INTO lv_program
WHERE include = iv_prog_name.
CALL FUNCTION 'FUNCTION_INCLUDE_CONCATENATE'
CHANGING
program = lv_program
complete_area = lv_area
EXCEPTIONS
not_enough_input = 1
no_function_pool = 2
delimiter_wrong_position = 3
OTHERS = 4 ##FM_SUBRC_OK.
ENDIF.
IF lv_area IS NOT INITIAL.
rv_package = get_obj_package(
iv_obj_type = 'FUGR'
iv_obj_name = |{ lv_area }| ).
RETURN.
ENDIF.
" TODO more ...
ENDMETHOD.
METHOD get_obj_package.
" see also zcl_abapgit_tadir->get_object_package for checks
DATA ls_obj_sig LIKE LINE OF mt_object_packages.
READ TABLE mt_object_packages INTO ls_obj_sig WITH KEY obj_type = iv_obj_type obj_name = iv_obj_name.
IF sy-subrc <> 0.
ls_obj_sig-package = zcl_abapgit_factory=>get_tadir( )->read_single(
iv_object = iv_obj_type
iv_obj_name = iv_obj_name )-devclass.
IF ls_obj_sig-package IS NOT INITIAL.
ls_obj_sig-obj_type = iv_obj_type.
ls_obj_sig-obj_name = iv_obj_name.
INSERT ls_obj_sig INTO TABLE mt_object_packages.
ENDIF.
ENDIF.
rv_package = ls_obj_sig-package.
ENDMETHOD.
METHOD get_where_used.
DATA lt_findstrings TYPE string_table.
DATA lt_scope LIKE it_scope.
DATA lv_findstring LIKE LINE OF lt_findstrings.
IF iv_obj_name IS INITIAL.
RETURN.
ENDIF.
lt_scope = it_scope.
lv_findstring = iv_obj_name.
INSERT lv_findstring INTO TABLE lt_findstrings.
CALL FUNCTION 'RS_EU_CROSSREF'
EXPORTING
i_find_obj_cls = iv_obj_type
no_dialog = abap_true
without_text = abap_true
TABLES
i_findstrings = lt_findstrings
o_founds = rt_findings
i_scope_object_cls = lt_scope
i_scope_devclass = ir_package_scope
EXCEPTIONS
not_executed = 1
not_found = 2
illegal_object = 3
no_cross_for_this_object = 4
batch = 5
batchjob_error = 6
wrong_type = 7
object_not_exist = 8
OTHERS = 9.
IF sy-subrc = 1 OR sy-subrc = 2 OR lines( rt_findings ) = 0.
RETURN.
ELSEIF sy-subrc > 2.
zcx_abapgit_exception=>raise( |RS_EU_CROSSREF({ sy-subrc }) for { iv_obj_type } { iv_obj_name }| ).
ENDIF.
ENDMETHOD.
METHOD new.
CREATE OBJECT ro_instance.
ENDMETHOD.
METHOD select_external_usages.
DATA lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
DATA lt_package_scope LIKE ir_package_scope.
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read(
iv_package = iv_package
iv_ignore_subpackages = iv_ignore_subpackages ).
lt_package_scope = build_package_scope(
ir_package_scope = ir_package_scope
it_tadir = lt_tadir ).
rt_objs = collect_where_used(
ir_package_scope = lt_package_scope
it_tadir = lt_tadir ).
SORT rt_objs.
DELETE ADJACENT DUPLICATES FROM rt_objs.
" Duplicates happen e.g. because where-used is found by method.
" However here this functionality aggregates them to the object
" These are not true duplicates, so if ever the method name (or any other duplicate cause)
" will be extracted, this sort can be removed
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_WHERE_USED_TOOLS</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Where-used Utilities</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,7 +18,7 @@ CLASS zcl_abapgit_json_handler DEFINITION
mappings TYPE ty_json_abap_mappings,
END OF ty_enum_mapping .
TYPES:
ty_enum_mappings TYPE TABLE OF ty_enum_mapping WITH DEFAULT KEY .
ty_enum_mappings TYPE STANDARD TABLE OF ty_enum_mapping WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_path_value_pair,
path TYPE string,
@ -51,7 +51,7 @@ CLASS zcl_abapgit_json_handler DEFINITION
"! @parameter ev_data | data of the xstring
METHODS deserialize
IMPORTING
!iv_content TYPE xstring
!iv_content TYPE string
!iv_defaults TYPE ty_skip_paths OPTIONAL
!iv_enum_mappings TYPE ty_enum_mappings OPTIONAL
EXPORTING
@ -99,14 +99,11 @@ CLASS zcl_abapgit_json_handler IMPLEMENTATION.
METHOD deserialize.
DATA lv_json TYPE string.
DATA lo_ajson TYPE REF TO zif_abapgit_ajson.
DATA lo_ajson TYPE REF TO zif_abapgit_ajson.
CLEAR ev_data.
lv_json = zcl_abapgit_convert=>xstring_to_string_utf8( iv_content ).
lo_ajson = zcl_abapgit_ajson=>parse( lv_json
lo_ajson = zcl_abapgit_ajson=>parse( iv_content
)->map( zcl_abapgit_ajson_mapping=>create_to_snake_case( ) ).
map2abap_original_language( CHANGING co_ajson = lo_ajson ).
@ -161,17 +158,13 @@ CLASS zcl_abapgit_json_handler IMPLEMENTATION.
METHOD map2abap_original_language.
DATA:
lv_iso_language TYPE laiso,
lv_bcp47_language TYPE string,
lv_original_language TYPE sy-langu.
lv_iso_language = co_ajson->get_string( '/header/original_language' ).
lv_bcp47_language = co_ajson->get_string( '/header/original_language' ).
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = lv_iso_language
IMPORTING
output = lv_original_language.
lv_original_language = zcl_abapgit_convert=>language_bcp47_to_sap1( lv_bcp47_language ).
co_ajson->set_string( iv_path = '/header/original_language'
iv_val = lv_original_language ).
@ -219,17 +212,16 @@ CLASS zcl_abapgit_json_handler IMPLEMENTATION.
METHOD map2json_original_language.
DATA:
lv_iso_language TYPE laiso,
lv_bcp47_language TYPE string,
lv_original_language TYPE sy-langu.
lv_original_language = co_ajson->get_string( '/header/originalLanguage' ).
lv_iso_language = zcl_abapgit_convert=>conversion_exit_isola_output( lv_original_language ).
lv_bcp47_language = zcl_abapgit_convert=>language_sap1_to_bcp47( lv_original_language ).
TRANSLATE lv_iso_language TO LOWER CASE.
co_ajson->set_string( iv_path = '/header/originalLanguage'
iv_val = lv_iso_language ).
iv_val = lv_bcp47_language ).
ENDMETHOD.

View File

@ -6,14 +6,24 @@ CLASS zcl_abapgit_json_path DEFINITION PUBLIC CREATE PUBLIC.
RAISING zcx_abapgit_exception.
METHODS: deserialize
IMPORTING it_json_path TYPE string_table
RETURNING VALUE(rv_result) TYPE xstring
RETURNING VALUE(rv_result) TYPE string
RAISING zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_json_path IMPLEMENTATION.
METHOD deserialize.
rv_result = lcl_json_path=>deserialize( it_json_path ).
ENDMETHOD.
METHOD serialize.
DATA: lo_json_path TYPE REF TO lcl_json_path,
lv_json_xstring TYPE xstring,
@ -39,11 +49,4 @@ CLASS zcl_abapgit_json_path IMPLEMENTATION.
it_path = lt_root_path
CHANGING ct_json_paths = rt_result ).
ENDMETHOD.
METHOD deserialize.
rv_result = lcl_json_path=>deserialize( it_json_path ).
ENDMETHOD.
ENDCLASS.

View File

@ -13,7 +13,7 @@ CLASS lcl_json_path DEFINITION CREATE PUBLIC.
CLASS-METHODS: deserialize
IMPORTING it_json_path TYPE string_table
RETURNING VALUE(rv_result) TYPE xstring
RETURNING VALUE(rv_result) TYPE string
RAISING zcx_abapgit_exception.
PROTECTED SECTION.
@ -343,8 +343,7 @@ CLASS lcl_json_path IMPLEMENTATION.
DATA: lo_merged TYPE REF TO zif_abapgit_ajson,
lv_json_path TYPE string,
lo_deserialization_result TYPE REF TO zif_abapgit_ajson,
lx_ajson TYPE REF TO zcx_abapgit_ajson_error,
lv_result_as_string TYPE string.
lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
TRY.
lo_merged = zcl_abapgit_ajson=>parse( `` ).
@ -374,8 +373,7 @@ CLASS lcl_json_path IMPLEMENTATION.
ENDLOOP.
TRY.
lv_result_as_string = lo_merged->stringify( 2 ).
rv_result = zcl_abapgit_convert=>string_to_xstring( lv_result_as_string ).
rv_result = lo_merged->stringify( 2 ).
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
zcx_abapgit_exception=>raise_with_text( lx_ajson ).
ENDTRY.

View File

@ -145,7 +145,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
METHOD deserialize_nested_arrays.
DATA: lt_file TYPE string_table,
lo_cut TYPE REF TO zcl_abapgit_json_path,
lv_xact TYPE xstring,
lv_act TYPE string,
lv_exp TYPE string,
lt_exp TYPE string_table,
@ -156,7 +155,7 @@ CLASS ltcl_json_path IMPLEMENTATION.
APPEND `$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param2')].description=ABC` TO lt_file.
CREATE OBJECT lo_cut.
lv_xact = lo_cut->deserialize( lt_file ).
lv_act = lo_cut->deserialize( lt_file ).
APPEND `{ "header": { "description": "Text" } ,` TO lt_exp.
APPEND `"descriptions": {` TO lt_exp.
@ -170,8 +169,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
lv_exp = concat_lines_of( table = lt_exp
sep = cl_abap_char_utilities=>newline ).
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal( iv_json_a = lv_act
iv_json_b = lv_exp ).
@ -183,16 +180,13 @@ CLASS ltcl_json_path IMPLEMENTATION.
METHOD deserialize_simple.
DATA: lt_file TYPE string_table,
lo_cut TYPE REF TO zcl_abapgit_json_path,
lv_xact TYPE xstring,
lv_act TYPE string,
lv_is_equal TYPE abap_bool.
APPEND `$.header.description=Text` TO lt_file.
CREATE OBJECT lo_cut.
lv_xact = lo_cut->deserialize( lt_file ).
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
lv_act = lo_cut->deserialize( lt_file ).
lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal(
iv_json_a = lv_act
@ -206,7 +200,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
METHOD deserialize_with_comments.
DATA: lt_file TYPE string_table,
lo_cut TYPE REF TO zcl_abapgit_json_path,
lv_xact TYPE xstring,
lv_act TYPE string.
APPEND `# comment = abc` TO lt_file.
@ -214,9 +207,7 @@ CLASS ltcl_json_path IMPLEMENTATION.
APPEND `` TO lt_file.
CREATE OBJECT lo_cut.
lv_xact = lo_cut->deserialize( lt_file ).
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
lv_act = lo_cut->deserialize( lt_file ).
cl_abap_unit_assert=>assert_initial( lv_act ).

View File

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

View File

@ -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_APLO</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - APLO - Application Log Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

@ -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_BGQC</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - BGQC - Background Processing Context</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,57 @@
CLASS zcl_abapgit_object_cdbo DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
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_exception.
METHODS zif_abapgit_object~changed_by REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS c_table_name TYPE tabname VALUE 'CDB_OBJH' ##NO_TEXT.
ENDCLASS.
CLASS zcl_abapgit_object_cdbo IMPLEMENTATION.
METHOD constructor.
super->constructor( is_item = is_item
iv_language = iv_language
io_files = io_files
io_i18n_params = io_i18n_params ).
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
DATA: lv_user TYPE string,
lx_error TYPE REF TO cx_root.
TRY.
SELECT SINGLE changed_by FROM (c_table_name) INTO lv_user WHERE obj_name = ms_item-obj_name.
IF lv_user IS INITIAL.
SELECT SINGLE created_by FROM (c_table_name) INTO lv_user WHERE obj_name = ms_item-obj_name.
ENDIF.
rv_user = lv_user.
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_CDBO</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - CDBO - Customer Data Browser Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

@ -226,34 +226,41 @@ CLASS ltcl_aff_settings_deserialize IMPLEMENTATION.
is_item = ls_item
iv_language = 'E'.
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 ).
TRY.
lo_settings_deserialize = lo_cut->create_aff_setting_deserialize( ).
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_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_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_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_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 ).
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.
" System doesn't support AFF with ABAP language version
RETURN.
ENDTRY.
ENDMETHOD.

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

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

View File

@ -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_DRAS</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DRAS - CDS Aspect</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

@ -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_DSFD</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DSFD - CDS Scalar Function Definition</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

@ -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_DSFI</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - DSFI - CDS Scalar Function Implementation</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

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

View File

@ -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_SAJC</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - SAJC - Application Job Catalog Entry</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

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