Skip to content

Commit ceeb1e3

Browse files
authored
Merge branch 'main' into Markus1812/language-tag
2 parents a87360c + c15a8b1 commit ceeb1e3

File tree

5 files changed

+100
-17
lines changed

5 files changed

+100
-17
lines changed

.github/workflows/upload-standalone.yml

+19-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- main
77

88
jobs:
9-
build-merged:
9+
create-generateRepo:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- uses: actions/checkout@v3
@@ -17,10 +17,27 @@ jobs:
1717
- name: Run npm steps
1818
run: |
1919
npm install
20-
npm run merge
20+
npm run createGenerateRepo
2121
npm run cutUnitTests
2222
- name: Upload build artifact
2323
uses: actions/upload-artifact@v3
2424
with:
2525
name: saff_generate_repo.prog.abap
2626
path: saff_generate_repo.prog.abap
27+
create-generatorInclude:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- uses: actions/checkout@v3
31+
- name: Use Node.js
32+
uses: actions/setup-node@v3
33+
with:
34+
node-version: '16'
35+
- name: Run npm steps
36+
run: |
37+
npm install
38+
npm run createGeneratorInclude
39+
- name: Upload build artifact
40+
uses: actions/upload-artifact@v3
41+
with:
42+
name: saff_generator.prog.abap
43+
path: saff_generator.prog.abap

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"unit": "npm run build && echo RUNNING && node output/index.mjs",
1010
"test": "npm run lint && npm run downport && npm run unit",
1111
"downport": "rm -rf downport && cp -r src downport && cp deps/* downport && rm downport/*.prog.* && rm downport/zcl_aff_writer_xslt.clas.testclasses.abap && abaplint --fix abaplint-downport.jsonc",
12-
"merge": "rm -f src/z_generate_json_schema.prog.abap && abapmerge -f src/z_generate_repo.prog.abap -c saff_generate_repo > saff_generate_repo.prog.abap",
12+
"createGenerateRepo": "rm -f src/z_generate_json_schema.prog.abap src/z_aff_generator.prog.abap && abapmerge -f src/z_generate_repo.prog.abap -c saff_generate_repo > saff_generate_repo.prog.abap",
13+
"createGeneratorInclude": "rm -f src/z_generate_json_schema.prog.abap src/z_generate_repo.prog.abap && echo 'REPORT z_aff_generator.' | cat - src/z_aff_generator.prog.abap > temp && mv temp src/z_aff_generator.prog.abap && abapmerge -f src/z_aff_generator.prog.abap -c saff_generator > saff_generator.prog.abap && tail -n +2 saff_generator.prog.abap > tmp && mv tmp saff_generator.prog.abap",
1314
"aff": "npm run downport && rm -rf abap-file-formats && git clone https://github.com/SAP/abap-file-formats && cp abap-file-formats/file-formats/*.abap downport && cp abap-file-formats/file-formats/*/type/*.abap downport && cp test/cl_run.clas.abap downport && abap_transpile test/abap_transpile.json && node test/aff.mjs",
1415
"cutUnitTests": "sed -i '/CLASS\\ ltcl_generator\\ I/,/ENDCLASS./d' saff_generate_repo.prog.abap && sed -i '/CLASS\\ ltcl_generator\\ D/,/ENDCLASS./d' saff_generate_repo.prog.abap"
1516
},

src/z_aff_generator.prog.abap

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
CLASS lcl_aff_generator DEFINITION CREATE PRIVATE.
2+
3+
PUBLIC SECTION.
4+
CLASS-METHODS:
5+
"! Generates the AFF JSON schema.
6+
"!
7+
"! @parameter schema_id | The id that should be written in the $id field of the schema
8+
"! @parameter data | The type where the schema should be generated from
9+
"! @parameter format_version | The version of the ABAP file format as integer
10+
"! @parameter result | The generated schema as string
11+
generate_schema
12+
IMPORTING schema_id TYPE string
13+
data TYPE data
14+
format_version TYPE i
15+
RETURNING VALUE(result) TYPE string
16+
RAISING zcx_aff_tools,
17+
18+
"! Generates the AFF XSLT transformation.
19+
"!
20+
"! @parameter data | The type where the schema should be generated from
21+
"! @parameter result | The generated XSLT as string
22+
generate_xslt
23+
IMPORTING data TYPE data
24+
RETURNING VALUE(result) TYPE string
25+
RAISING zcx_aff_tools.
26+
27+
ENDCLASS.
28+
29+
CLASS lcl_aff_generator IMPLEMENTATION.
30+
31+
METHOD generate_schema.
32+
DATA(schema_writer) = NEW zcl_aff_writer_json_schema( schema_id = schema_id
33+
format_version = format_version ).
34+
DATA(generator) = NEW zcl_aff_generator( schema_writer ).
35+
DATA(result_table) = generator->zif_aff_generator~generate_type( data ).
36+
CONCATENATE LINES OF result_table INTO result SEPARATED BY cl_abap_char_utilities=>newline.
37+
ENDMETHOD.
38+
39+
METHOD generate_xslt.
40+
DATA(xslt_writer) = NEW zcl_aff_writer_xslt( ).
41+
DATA(generator) = NEW zcl_aff_generator( xslt_writer ).
42+
DATA(result_table) = generator->zif_aff_generator~generate_type( data ).
43+
CONCATENATE LINES OF result_table INTO result SEPARATED BY cl_abap_char_utilities=>newline.
44+
ENDMETHOD.
45+
46+
ENDCLASS.

src/z_aff_generator.prog.xml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<PROGDIR>
6+
<NAME>Z_AFF_GENERATOR</NAME>
7+
<DBAPL>S</DBAPL>
8+
<DBNA>D$</DBNA>
9+
<SUBC>I</SUBC>
10+
<FIXPT>X</FIXPT>
11+
<LDBNAME>D$S</LDBNAME>
12+
<UCCHECK>X</UCCHECK>
13+
</PROGDIR>
14+
<TPOOL>
15+
<item>
16+
<ID>R</ID>
17+
<ENTRY>Reuse include for AFF generator</ENTRY>
18+
<LENGTH>31</LENGTH>
19+
</item>
20+
</TPOOL>
21+
</asx:values>
22+
</asx:abap>
23+
</abapGit>

src/z_generate_json_schema.prog.abap

+10-14
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
*&
55
*&---------------------------------------------------------------------*
66
REPORT z_generate_json_schema.
7+
8+
INCLUDE z_aff_generator.
9+
710
CLASS lcl_generator_helper DEFINITION
811
FINAL
912
CREATE PUBLIC.
@@ -45,23 +48,16 @@ CLASS lcl_generator_helper IMPLEMENTATION.
4548

4649
ASSIGN my_type->* TO <field>.
4750

48-
DATA(format_version) = get_format_version( interface_name ).
49-
DATA(object_type_path) = get_object_type_path( interface_name ).
50-
DATA(schema_id) = |https://github.com/SAP/abap-file-formats/blob/main/file-formats/{ object_type_path }-v{ format_version }.json| ##NO_TEXT.
51-
52-
53-
DATA writer TYPE REF TO zcl_aff_writer.
54-
" set up the writer
5551
IF generate_schema = abap_true.
56-
writer = NEW zcl_aff_writer_json_schema( schema_id = schema_id format_version = format_version ).
52+
DATA(format_version) = get_format_version( interface_name ).
53+
DATA(object_type_path) = get_object_type_path( interface_name ).
54+
DATA(schema_id) = |https://github.com/SAP/abap-file-formats/blob/main/file-formats/{ object_type_path }-v{ format_version }.json| ##NO_TEXT.
55+
result = lcl_aff_generator=>generate_schema( schema_id = schema_id
56+
data = <field>
57+
format_version = format_version ).
5758
ELSE.
58-
writer = NEW zcl_aff_writer_xslt( ).
59+
result = lcl_aff_generator=>generate_xslt( <field> ).
5960
ENDIF.
60-
61-
DATA(generator) = NEW zcl_aff_generator( writer ).
62-
DATA(result_table) = generator->zif_aff_generator~generate_type( <field> ).
63-
CONCATENATE LINES OF result_table INTO result SEPARATED BY cl_abap_char_utilities=>newline.
64-
6561
ENDMETHOD.
6662

6763
METHOD get_format_version.

0 commit comments

Comments
 (0)