├── .abapgit.xml
├── LICENSE
├── README.md
├── plantuml.txt
├── schema
└── abak.xsd
└── src
├── core
├── package.devc.xml
├── zabak.acid.xml
├── zabak.fugr.lzabaktop.abap
├── zabak.fugr.lzabaktop.xml
├── zabak.fugr.saplzabak.abap
├── zabak.fugr.saplzabak.xml
├── zabak.fugr.xml
├── zabak.fugr.z_abak_zabak_rfc_get.abap
├── zabak.msag.xml
├── zabak.tabl.xml
├── zabak_content.dtel.xml
├── zabak_content_rfc.xslt.source.xml
├── zabak_content_rfc.xslt.xml
├── zabak_context.dtel.xml
├── zabak_copy.xslt.source.xml
├── zabak_copy.xslt.xml
├── zabak_core_api.pinf.xml
├── zabak_cx_abak.enho.xml
├── zabak_data.tabl.xml
├── zabak_db.tabl.xml
├── zabak_db_fields.tabl.xml
├── zabak_db_key.tabl.xml
├── zabak_db_t.ttyp.xml
├── zabak_default.tabl.xml
├── zabak_default_c.tabl.xml
├── zabak_demo_xml.xslt.source.xml
├── zabak_demo_xml.xslt.xml
├── zabak_description.dtel.xml
├── zabak_fieldname.dtel.xml
├── zabak_format_json.xslt.source.xml
├── zabak_format_json.xslt.xml
├── zabak_format_type.doma.xml
├── zabak_format_type.dtel.xml
├── zabak_format_xml.xslt.source.xml
├── zabak_format_xml.xslt.xml
├── zabak_high.dtel.xml
├── zabak_id.doma.xml
├── zabak_id.dtel.xml
├── zabak_index.dtel.xml
├── zabak_k.tabl.xml
├── zabak_k_t.ttyp.xml
├── zabak_kv.tabl.xml
├── zabak_kv_t.ttyp.xml
├── zabak_low.dtel.xml
├── zabak_maint.fugr.lzabak_maintf00.abap
├── zabak_maint.fugr.lzabak_maintf00.xml
├── zabak_maint.fugr.lzabak_mainti00.abap
├── zabak_maint.fugr.lzabak_mainti00.xml
├── zabak_maint.fugr.lzabak_maintt00.abap
├── zabak_maint.fugr.lzabak_maintt00.xml
├── zabak_maint.fugr.lzabak_mainttop.abap
├── zabak_maint.fugr.lzabak_mainttop.xml
├── zabak_maint.fugr.saplzabak_maint.abap
├── zabak_maint.fugr.saplzabak_maint.xml
├── zabak_maint.fugr.tableframe_zabak_maint.abap
├── zabak_maint.fugr.tableproc_zabak_maint.abap
├── zabak_maint.fugr.xml
├── zabak_namevalue.tabl.xml
├── zabak_namevalue_t.ttyp.xml
├── zabak_range.tabl.xml
├── zabak_range_t.ttyp.xml
├── zabak_scope.dtel.xml
├── zabak_source_type.doma.xml
├── zabak_source_type.dtel.xml
├── zabak_use_shm.dtel.xml
├── zabak_value.doma.xml
├── zabak_xml_k.tabl.xml
├── zabak_xml_k_t.ttyp.xml
├── zcl_abak.clas.abap
├── zcl_abak.clas.testclasses.abap
├── zcl_abak.clas.xml
├── zcl_abak_data.clas.abap
├── zcl_abak_data.clas.locals_imp.abap
├── zcl_abak_data.clas.testclasses.abap
├── zcl_abak_data.clas.xml
├── zcl_abak_data_factory.clas.abap
├── zcl_abak_data_factory.clas.locals_imp.abap
├── zcl_abak_data_factory.clas.testclasses.abap
├── zcl_abak_data_factory.clas.xml
├── zcl_abak_data_normal.clas.abap
├── zcl_abak_data_normal.clas.testclasses.abap
├── zcl_abak_data_normal.clas.xml
├── zcl_abak_data_shm.clas.abap
├── zcl_abak_data_shm.clas.testclasses.abap
├── zcl_abak_data_shm.clas.xml
├── zcl_abak_factory.clas.abap
├── zcl_abak_factory.clas.xml
├── zcl_abak_k_table.clas.abap
├── zcl_abak_k_table.clas.xml
├── zcl_abak_params.clas.abap
├── zcl_abak_params.clas.testclasses.abap
├── zcl_abak_params.clas.xml
├── zcl_abak_params_definition.clas.abap
├── zcl_abak_params_definition.clas.testclasses.abap
├── zcl_abak_params_definition.clas.xml
├── zcl_abak_rfc.clas.abap
├── zcl_abak_rfc.clas.xml
├── zcl_abak_shm_area.clas.abap
├── zcl_abak_shm_area.clas.xml
├── zcl_abak_shm_area.shma.xml
├── zcl_abak_shm_root.clas.abap
├── zcl_abak_shm_root.clas.xml
├── zcl_abak_source.clas.abap
├── zcl_abak_source.clas.xml
├── zcl_abak_tools.clas.abap
├── zcl_abak_tools.clas.xml
├── zcx_abak.clas.abap
├── zcx_abak.clas.locals_imp.abap
├── zcx_abak.clas.xml
├── zcx_abak_data.clas.abap
├── zcx_abak_data.clas.xml
├── zcx_abak_engine.clas.abap
├── zcx_abak_engine.clas.xml
├── zcx_abak_factory.clas.abap
├── zcx_abak_factory.clas.xml
├── zcx_abak_params.clas.abap
├── zcx_abak_params.clas.xml
├── zif_abak.intf.abap
├── zif_abak.intf.xml
├── zif_abak_consts.intf.abap
├── zif_abak_consts.intf.xml
├── zif_abak_data.intf.abap
├── zif_abak_data.intf.xml
├── zif_abak_format.intf.abap
├── zif_abak_format.intf.xml
├── zif_abak_params.intf.abap
├── zif_abak_params.intf.xml
├── zif_abak_source.intf.abap
└── zif_abak_source.intf.xml
├── formats
├── package.devc.xml
├── zabak_formats_api.pinf.xml
├── zcl_abak_format_csv.clas.abap
├── zcl_abak_format_csv.clas.testclasses.abap
├── zcl_abak_format_csv.clas.xml
├── zcl_abak_format_factory.clas.abap
├── zcl_abak_format_factory.clas.testclasses.abap
├── zcl_abak_format_factory.clas.xml
├── zcl_abak_format_internal.clas.abap
├── zcl_abak_format_internal.clas.xml
├── zcl_abak_format_json.clas.abap
├── zcl_abak_format_json.clas.testclasses.abap
├── zcl_abak_format_json.clas.xml
├── zcl_abak_format_xml.clas.abap
├── zcl_abak_format_xml.clas.testclasses.abap
└── zcl_abak_format_xml.clas.xml
├── package.devc.xml
├── sources
├── package.devc.xml
├── zabak_sources_api.pinf.xml
├── zcl_abak_source_database.clas.abap
├── zcl_abak_source_database.clas.testclasses.abap
├── zcl_abak_source_database.clas.xml
├── zcl_abak_source_factory.clas.abap
├── zcl_abak_source_factory.clas.testclasses.abap
├── zcl_abak_source_factory.clas.xml
├── zcl_abak_source_file.clas.abap
├── zcl_abak_source_file.clas.testclasses.abap
├── zcl_abak_source_file.clas.xml
├── zcl_abak_source_inline.clas.abap
├── zcl_abak_source_inline.clas.testclasses.abap
├── zcl_abak_source_inline.clas.xml
├── zcl_abak_source_mime.clas.abap
├── zcl_abak_source_mime.clas.testclasses.abap
├── zcl_abak_source_mime.clas.xml
├── zcl_abak_source_rfc.clas.abap
├── zcl_abak_source_rfc.clas.testclasses.abap
├── zcl_abak_source_rfc.clas.xml
├── zcl_abak_source_so10.clas.abap
├── zcl_abak_source_so10.clas.testclasses.abap
├── zcl_abak_source_so10.clas.xml
├── zcl_abak_source_url.clas.abap
├── zcl_abak_source_url.clas.testclasses.abap
├── zcl_abak_source_url.clas.xml
├── zcx_abak_source_database.clas.abap
├── zcx_abak_source_database.clas.xml
├── zcx_abak_source_file.clas.abap
├── zcx_abak_source_file.clas.xml
├── zcx_abak_source_url.clas.abap
└── zcx_abak_source_url.clas.xml
├── utils
├── package.devc.xml
├── zabak_demo.prog.abap
├── zabak_demo.prog.xml
├── zabak_demo.tabl.xml
├── zabak_usage.prog.abap
├── zabak_usage.prog.xml
├── zcl_abak_demo.clas.abap
├── zcl_abak_demo.clas.xml
├── zcl_abak_usage.clas.abap
└── zcl_abak_usage.clas.xml
├── zabak s.tobj.xml
├── zabak_api.pinf.xml
├── zabak_defaults.tobj.xml
└── zabak_table_customizing.scp1.xml
/.abapgit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | E
6 | /src/
7 | PREFIX
8 |
9 | - /.gitignore
10 | - /LICENSE
11 | - /README.md
12 | - /package.json
13 | - /.travis.yml
14 | - /plantuml.txt
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Nuno Godinho
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | (abaK is now in beta stage. It's mostly stable but its API can still change and more tests need to be done so please don't use it in a production environment yet. Wait for a non-beta release.)
2 |
3 | # abaK
4 |
5 | A powerful yet simple ABAP library to manage constants.
6 |
7 | ## Why
8 | Nowadays, whenever a constant is needed in a program, it has to be hard coded, stored in a dedicated custom ZTABLE or, even worse, stored in the standard table TVARVC (or similar).
9 |
10 | ## What
11 | `abaK` aims to become the standard constants library that `ABAP` so desperately needs.
12 |
13 | It's single design goal is to **address most common needs** while still being **extremely easy to use**, by both developers and functional people alike. And if its standard functionality doesn't cover your particular needs, you can easily extend it.
14 |
15 | With `abaK` you can finally stop developing a new `ZCONSTANTS` table every time you need one. Or, even worse, stop storing your constants in obscure standard tables like `TVARVC`.
16 |
17 | ## How
18 | abaK offers a simple yet powerful and flexible way for any program to manage its constants. Advantages of using abaK:
19 | - decentralized: there is no monolithic table holding all the constants. One program can decide to have its own constants source.
20 | - easily customizable: a project can decide to have its constants maintainable directly in PRD while another may required them to be maintained in DEV and then transported;
21 | - multiple scopes: some constants can be used system-wide while others can belong to a single program and no one else will mess with them;
22 | - system-wide management: constant sources are registered in a central table so that it is easy to keep track of the existing data sources;
23 | - different formats: besides using a custom database table, the constants data can be formatted as `CSV`, `XML` or `JSON`;
24 | - different content locations: besides providing content directly inline, it can also be fetched from an `URL`, an `SO10` standard text, a `GS03` set, a server file or even another `abaK` instance in a remote SAP system via `RFC`;
25 | - extensible: if needed, new custom `FORMAT`/`CONTENT` classes can be created (ex.: to read legacy data in a specific data format).
26 |
27 | Providing a well-defined `API`, `abaK` clearly separates the way it is used from the way the constants are stored.
28 |
29 | Documentation in the [wiki](https://github.com/abapinho/abak/wiki).
30 |
31 | ## Requirements
32 | * ABAP Version: 702 or higher.
33 | * [abapGit](https://abapgit.org)
34 |
35 | ## FAQ
36 | For questions/comments/bugs/feature requests/wishes please create an [issue](https://github.com/abapinho/abak/issues).
37 |
--------------------------------------------------------------------------------
/schema/abak.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/core/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | abaK Core
7 | X
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/core/zabak.acid.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | abaK Checkpoint group
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.lzabaktop.abap:
--------------------------------------------------------------------------------
1 | FUNCTION-POOL ZABAK. "MESSAGE-ID ..
2 |
3 | * INCLUDE LZABAKD... " Local class definition
4 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.lzabaktop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LZABAKTOP
7 | S
8 | D$
9 | I
10 | S
11 | X
12 | D$S
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.saplzabak.abap:
--------------------------------------------------------------------------------
1 | *******************************************************************
2 | * System-defined Include-files. *
3 | *******************************************************************
4 | INCLUDE LZABAKTOP. " Global Data
5 | INCLUDE LZABAKUXX. " Function Modules
6 |
7 | *******************************************************************
8 | * User-defined Include-files (if necessary). *
9 | *******************************************************************
10 | * INCLUDE LZABAKF... " Subroutines
11 | * INCLUDE LZABAKO... " PBO-Modules
12 | * INCLUDE LZABAKI... " PAI-Modules
13 | * INCLUDE LZABAKE... " Events
14 | * INCLUDE LZABAKP... " Local class implement.
15 | * INCLUDE LZABAKT99. " ABAP Unit tests
16 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.saplzabak.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | SAPLZABAK
7 | S
8 | D$
9 | F
10 | S
11 | E
12 | X
13 | D$S
14 | X
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | abaK Function modules
6 |
7 | LZABAKTOP
8 | SAPLZABAK
9 |
10 |
11 | -
12 | Z_ABAK_ZABAK_RFC_GET
13 | R
14 | abaK get remote data by ZABAK id
15 |
16 |
17 | I_ID
18 | ZABAK_ID
19 |
20 |
21 |
22 |
23 | E_SERIALIZED_DATA
24 | STRING
25 |
26 |
27 |
28 |
29 | ERROR
30 |
31 |
32 |
33 |
34 | I_ID
35 | P
36 | abaK ID
37 | 001
38 |
39 |
40 | E_SERIALIZED_DATA
41 | P
42 | 002
43 |
44 |
45 | ERROR
46 | X
47 | 003
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/core/zabak.fugr.z_abak_zabak_rfc_get.abap:
--------------------------------------------------------------------------------
1 | FUNCTION z_abak_zabak_rfc_get .
2 | *"----------------------------------------------------------------------
3 | *"*"Local Interface:
4 | *" IMPORTING
5 | *" VALUE(I_ID) TYPE ZABAK_ID
6 | *" EXPORTING
7 | *" VALUE(E_SERIALIZED_DATA) TYPE STRING
8 | *" EXCEPTIONS
9 | *" ERROR
10 | *"----------------------------------------------------------------------
11 |
12 | DATA: o_abak_rfc TYPE REF TO zcl_abak_rfc,
13 | o_exp TYPE REF TO zcx_abak,
14 | text TYPE string.
15 |
16 | TRY.
17 | CREATE OBJECT o_abak_rfc.
18 | e_serialized_data = o_abak_rfc->get_data( i_id ).
19 |
20 | CATCH zcx_abak INTO o_exp.
21 | text = o_exp->get_text( ).
22 | MESSAGE text TYPE 'E' RAISING error.
23 | ENDTRY.
24 |
25 | ENDFUNCTION.
26 |
--------------------------------------------------------------------------------
/src/core/zabak.msag.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK
7 | E
8 | abaK messages
9 |
10 |
11 |
12 | E
13 | ZABAK
14 | 000
15 | Invalid parameters
16 |
17 |
18 | E
19 | ZABAK
20 | 001
21 | Error opening file &
22 |
23 |
24 | E
25 | ZABAK
26 | 002
27 | Invalid sign &
28 |
29 |
30 | E
31 | ZABAK
32 | 003
33 | Invalid option &
34 |
35 |
36 | E
37 | ZABAK
38 | 004
39 | For option & the HIGH value must be empty
40 |
41 |
42 | E
43 | ZABAK
44 | 005
45 | For option & both LOW and HIGH values must be filled
46 |
47 |
48 | E
49 | ZABAK
50 | 006
51 | For option & HIGH & must be > LOW &
52 |
53 |
54 | E
55 | ZABAK
56 | 007
57 | Format of table & is not valid. Please check documentation.
58 |
59 |
60 | E
61 | ZABAK
62 | 008
63 | Unexpected error
64 |
65 |
66 | E
67 | ZABAK
68 | 009
69 | Value not found for scope & field & context &
70 |
71 |
72 | E
73 | ZABAK
74 | 010
75 | HTTP error & & url &
76 |
77 |
78 | E
79 | ZABAK
80 | 011
81 | Not implemented
82 |
83 |
84 | E
85 | ZABAK
86 | 012
87 | ID & not found in table ZABAK
88 |
89 |
90 | E
91 | ZABAK
92 | 013
93 | Duplicate parameter &
94 |
95 |
96 | E
97 | ZABAK
98 | 014
99 | For multiple fields OPTION must be EQ
100 |
101 |
102 | E
103 | ZABAK
104 | 015
105 | For multiple fields SIGN must be I
106 |
107 |
108 | E
109 | ZABAK
110 | 016
111 | For multiple fields only one value line allowed
112 |
113 |
114 | E
115 | ZABAK
116 | 017
117 | For multiple fields HIGH must not be filled. Only LOW.
118 |
119 |
120 | E
121 | ZABAK
122 | 018
123 | For multiple fieldnames we need a value per fieldname
124 |
125 |
126 |
127 |
128 |
129 |
--------------------------------------------------------------------------------
/src/core/zabak.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK
7 | E
8 | TRANSP
9 | X
10 | abaK Registered constants instances
11 | X
12 | C
13 | 1
14 |
15 |
16 | ZABAK
17 | A
18 | 0
19 | APPL2
20 | X
21 | X
22 | X
23 |
24 |
25 |
26 | ZABAK
27 | MANDT
28 | 0001
29 | X
30 | MANDT
31 | 0
32 | X
33 | E
34 |
35 |
36 | ZABAK
37 | ID
38 | 0002
39 | X
40 | ZABAK_ID
41 | 0
42 | X
43 | E
44 |
45 |
46 | ZABAK
47 | DESCRIPTION
48 | 0003
49 | ZABAK_DESCRIPTION
50 | 0
51 | E
52 |
53 |
54 | ZABAK
55 | FORMAT_TYPE
56 | 0004
57 | ZABAK_FORMAT_TYPE
58 | 0
59 | X
60 | F
61 | E
62 |
63 |
64 | ZABAK
65 | SOURCE_TYPE
66 | 0005
67 | ZABAK_SOURCE_TYPE
68 | 0
69 | X
70 | F
71 | E
72 |
73 |
74 | ZABAK
75 | CONTENT
76 | 0006
77 | ZABAK_CONTENT
78 | 0
79 | E
80 |
81 |
82 | ZABAK
83 | USE_SHM
84 | 0007
85 | ZABAK_USE_SHM
86 | 0
87 | X
88 | F
89 | E
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/src/core/zabak_content.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_CONTENT
7 | E
8 | TEXT255
9 | 55
10 | 10
11 | 15
12 | 20
13 | abaK Content
14 | Content
15 | Content
16 | Content
17 | Content
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/core/zabak_content_rfc.xslt.source.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
41 |
--------------------------------------------------------------------------------
/src/core/zabak_content_rfc.xslt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_CONTENT_RFC
7 | E
8 | abaK Content RFC serialization
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_copy.xslt.source.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/core/zabak_copy.xslt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_COPY
7 | E
8 | abaK Copy generic data structures
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_core_api.pinf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | ZABAK_CORE_API
8 | abaK Core API
9 |
10 |
11 |
12 | ZABAK_CORE_API
13 | CLAS
14 | ZCL_ABAK_FACTORY
15 |
16 |
17 | ZABAK_CORE_API
18 | DTEL
19 | ZABAK_CONTEXT
20 |
21 |
22 | ZABAK_CORE_API
23 | DTEL
24 | ZABAK_FORMAT_TYPE
25 |
26 |
27 | ZABAK_CORE_API
28 | DTEL
29 | ZABAK_INDEX
30 |
31 |
32 | ZABAK_CORE_API
33 | DTEL
34 | ZABAK_SCOPE
35 |
36 |
37 | ZABAK_CORE_API
38 | DTEL
39 | ZABAK_SOURCE_TYPE
40 |
41 |
42 | ZABAK_CORE_API
43 | INTF
44 | ZIF_ABAK
45 |
46 |
47 | ZABAK_CORE_API
48 | INTF
49 | ZIF_ABAK_FORMAT
50 |
51 |
52 | ZABAK_CORE_API
53 | INTF
54 | ZIF_ABAK_SOURCE
55 |
56 |
57 | ZABAK_CORE_API
58 | TTYP
59 | ZABAK_RANGE_T
60 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/src/core/zabak_cx_abak.enho.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | HOOK_IMPL
6 | abaK root exception enhancement
7 |
8 | R3TR
9 | CLAS
10 | ZCX_ABAK
11 | CLAS
12 | ZCX_ABAK
13 | ZCX_ABAK======================CP
14 |
15 |
16 |
17 | ZCX_ABAK======================CP
18 | D
19 | \TY:ZCX_ABAK\ME:CONSTRUCTOR\SE:END\EI
20 |
21 | - * Build previous exception from SYST
22 | - build_from_syst( ).
23 |
24 |
25 |
26 |
27 | -
28 | \TY:ZCX_ABAK\ME:CONSTRUCTOR\SE:END\EI
29 |
30 |
- 0
31 | - 2
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/core/zabak_data.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DATA
7 | E
8 | INTTAB
9 | abaK Data used by ZIF_ABAK_DATA
10 | 1
11 |
12 |
13 |
14 | ZABAK_DATA
15 | T_K
16 | 0001
17 | ZABAK_XML_K_T
18 | 0
19 | TTYP
20 | TTYPL
21 | L
22 |
23 |
24 | ZABAK_DATA
25 | NAME
26 | 0002
27 | ZABAK_DESCRIPTION
28 | 0
29 | E
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/core/zabak_db.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DB
7 | E
8 | INTTAB
9 | X
10 | X
11 | abaK Database line
12 | 1
13 |
14 |
15 |
16 | ZABAK_DB
17 | .INCLUDE
18 | E
19 | 0001
20 | X
21 | 0
22 | ZABAK_DB_KEY
23 | S
24 | abaK Database key
25 | S
26 |
27 |
28 | ZABAK_DB
29 | .INCLUDE
30 | E
31 | 0007
32 | 0
33 | ZABAK_DB_FIELDS
34 | S
35 | abaK Database fields
36 | S
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/core/zabak_db_fields.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DB_FIELDS
7 | E
8 | INTTAB
9 | abaK Database fields
10 | 1
11 |
12 |
13 |
14 | ZABAK_DB_FIELDS
15 | UE_SIGN
16 | 0001
17 | BAPISIGN
18 | 0
19 | X
20 | F
21 | E
22 |
23 |
24 | ZABAK_DB_FIELDS
25 | UE_OPTION
26 | 0002
27 | BAPIOPTION
28 | 0
29 | X
30 | F
31 | E
32 |
33 |
34 | ZABAK_DB_FIELDS
35 | UE_LOW
36 | 0003
37 | ZABAK_LOW
38 | 0
39 | E
40 |
41 |
42 | ZABAK_DB_FIELDS
43 | UE_HIGH
44 | 0004
45 | ZABAK_HIGH
46 | 0
47 | E
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/core/zabak_db_key.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DB_KEY
7 | E
8 | INTTAB
9 | X
10 | abaK Database key
11 | 1
12 |
13 |
14 |
15 | ZABAK_DB_KEY
16 | MANDT
17 | 0001
18 | X
19 | MANDT
20 | 0
21 | E
22 |
23 |
24 | ZABAK_DB_KEY
25 | SCOPE
26 | 0002
27 | X
28 | ZABAK_SCOPE
29 | 0
30 | E
31 |
32 |
33 | ZABAK_DB_KEY
34 | FIELDNAME
35 | 0003
36 | X
37 | ZABAK_FIELDNAME
38 | 0
39 | E
40 |
41 |
42 | ZABAK_DB_KEY
43 | CONTEXT
44 | 0004
45 | X
46 | ZABAK_CONTEXT
47 | 0
48 | E
49 |
50 |
51 | ZABAK_DB_KEY
52 | IDX
53 | 0005
54 | X
55 | ZABAK_INDEX
56 | 0
57 | E
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/core/zabak_db_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DB_T
7 | E
8 | ZABAK_DB
9 | S
10 | STRU
11 | T
12 | K
13 | N
14 | 0005
15 | abaK Database table
16 |
17 |
18 |
19 | ZABAK_DB_T
20 | 0001
21 | 0001
22 | MANDT
23 |
24 |
25 | ZABAK_DB_T
26 | 0002
27 | 0002
28 | SCOPE
29 |
30 |
31 | ZABAK_DB_T
32 | 0003
33 | 0003
34 | FIELDNAME
35 |
36 |
37 | ZABAK_DB_T
38 | 0004
39 | 0004
40 | CONTEXT
41 |
42 |
43 | ZABAK_DB_T
44 | 0005
45 | 0005
46 | IDX
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/core/zabak_default.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEFAULT
7 | E
8 | TRANSP
9 | X
10 | X
11 | abaK Default constants table (no transport request)
12 | X
13 | A
14 | 1
15 |
16 |
17 | ZABAK_DEFAULT
18 | A
19 | 0
20 | APPL0
21 | N
22 |
23 |
24 |
25 | ZABAK_DEFAULT
26 | .INCLUDE
27 | E
28 | 0001
29 | X
30 | 0
31 | ZABAK_DB_KEY
32 | X
33 | S
34 | abaK Database key
35 | S
36 |
37 |
38 | ZABAK_DEFAULT
39 | .INCLUDE
40 | E
41 | 0007
42 | 0
43 | ZABAK_DB_FIELDS
44 | S
45 | abaK Database fields
46 | S
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/core/zabak_default_c.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEFAULT_C
7 | E
8 | TRANSP
9 | X
10 | X
11 | abaK Default constants table (with transport request)
12 | X
13 | C
14 | 1
15 |
16 |
17 | ZABAK_DEFAULT_C
18 | A
19 | 0
20 | APPL2
21 | N
22 |
23 |
24 |
25 | ZABAK_DEFAULT_C
26 | .INCLUDE
27 | E
28 | 0001
29 | X
30 | 0
31 | ZABAK_DB_KEY
32 | X
33 | S
34 | abaK Database key
35 | S
36 |
37 |
38 | ZABAK_DEFAULT_C
39 | .INCLUDE
40 | E
41 | 0007
42 | 0
43 | ZABAK_DB_FIELDS
44 | S
45 | abaK Database fields
46 | S
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/core/zabak_demo_xml.xslt.source.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/core/zabak_demo_xml.xslt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEMO_XML
7 | E
8 | abaK Demo XML
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_description.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DESCRIPTION
7 | E
8 | TEXT50
9 | 50
10 | 10
11 | 15
12 | 20
13 | abaK Description
14 | Description
15 | Descrption
16 | Description
17 | Description
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/core/zabak_fieldname.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_FIELDNAME
7 | E
8 | FDNAME
9 | 30
10 | 10
11 | 15
12 | 20
13 | abaK Fieldname
14 | Fieldname
15 | Fieldname
16 | Fieldname
17 | Fieldname
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/core/zabak_format_json.xslt.source.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/src/core/zabak_format_json.xslt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_FORMAT_JSON
7 | E
8 | abaK source XML
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_format_type.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_FORMAT_TYPE
7 | E
8 | CHAR
9 | 000010
10 | 000010
11 | X
12 | abaK Format type
13 |
14 |
15 |
16 | ZABAK_FORMAT_TYPE
17 | 0001
18 | E
19 | CSV
20 | CSV
21 |
22 |
23 | ZABAK_FORMAT_TYPE
24 | 0002
25 | E
26 | JSON
27 | JSON
28 |
29 |
30 | ZABAK_FORMAT_TYPE
31 | 0003
32 | E
33 | XML
34 | XML
35 |
36 |
37 | ZABAK_FORMAT_TYPE
38 | 0004
39 | E
40 | INTERNAL
41 | Internal
42 |
43 |
44 |
45 | 1
46 | 2
47 | 3
48 | A
49 | F
50 | G
51 | I
52 | J
53 | L
54 | M
55 | N
56 | P
57 | R
58 | S
59 | T
60 | U
61 | W
62 |
63 |
64 | -
65 | 1
66 | ABAK Source
67 |
68 | -
69 | 2
70 | ABAK Source
71 |
72 | -
73 | 3
74 | ABAK Source
75 |
76 | -
77 | A
78 | ABAK Source
79 |
80 | -
81 | F
82 | ABAK Source
83 |
84 | -
85 | G
86 | ABAK Source
87 |
88 | -
89 | I
90 | ABAK Source
91 |
92 | -
93 | J
94 | ABAK Source
95 |
96 | -
97 | L
98 | ABAK Source
99 |
100 | -
101 | M
102 | ABAK Source
103 |
104 | -
105 | N
106 | ABAK Source
107 |
108 | -
109 | P
110 | ABAK Source
111 |
112 | -
113 | R
114 | ABAK Source
115 |
116 | -
117 | S
118 | ABAK Source
119 |
120 | -
121 | T
122 | ABAK Source
123 |
124 | -
125 | U
126 | ABAK Source
127 |
128 | -
129 | W
130 | ABAK Source
131 |
132 |
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/src/core/zabak_format_xml.xslt.source.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/core/zabak_format_xml.xslt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_FORMAT_XML
7 | E
8 | abaK source XML
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_id.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_ID
7 | E
8 | CHAR
9 | 000030
10 | 000030
11 | ZABAK
12 | abaK ID
13 |
14 |
15 | 1
16 | 2
17 | 3
18 | A
19 | F
20 | G
21 | I
22 | J
23 | L
24 | M
25 | N
26 | P
27 | R
28 | S
29 | T
30 | U
31 | W
32 |
33 |
34 | -
35 | 1
36 | Global constants table ID
37 |
38 | -
39 | 2
40 | Global constants table ID
41 |
42 | -
43 | 3
44 | Global constants table ID
45 |
46 | -
47 | A
48 | Global constants table ID
49 |
50 | -
51 | F
52 | Global constants table ID
53 |
54 | -
55 | G
56 | Global constants table ID
57 |
58 | -
59 | I
60 | Global constants table ID
61 |
62 | -
63 | J
64 | Global constants table ID
65 |
66 | -
67 | L
68 | Global constants table ID
69 |
70 | -
71 | M
72 | Global constants table ID
73 |
74 | -
75 | N
76 | Global constants table ID
77 |
78 | -
79 | P
80 | Global constants table ID
81 |
82 | -
83 | R
84 | Global constants table ID
85 |
86 | -
87 | S
88 | Global constants table ID
89 |
90 | -
91 | T
92 | Global constants table ID
93 |
94 | -
95 | U
96 | Global constants table ID
97 |
98 | -
99 | W
100 | Global constants table ID
101 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/src/core/zabak_k.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_K
7 | E
8 | INTTAB
9 | abaK Constant line
10 | 1
11 |
12 |
13 |
14 | ZABAK_K
15 | SCOPE
16 | 0001
17 | X
18 | ZABAK_SCOPE
19 | 0
20 | E
21 |
22 |
23 | ZABAK_K
24 | FIELDNAME
25 | 0002
26 | X
27 | ZABAK_FIELDNAME
28 | 0
29 | E
30 |
31 |
32 | ZABAK_K
33 | CONTEXT
34 | 0003
35 | X
36 | ZABAK_CONTEXT
37 | 0
38 | E
39 |
40 |
41 | ZABAK_K
42 | T_KV
43 | 0004
44 | ZABAK_KV_T
45 | 0
46 | TTYP
47 | TTYPL
48 | L
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/core/zabak_k_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_K_T
7 | E
8 | ZABAK_K
9 | S
10 | STRU
11 | T
12 | K
13 | N
14 | 0003
15 | abaK Constant table
16 |
17 |
18 |
19 | ZABAK_K_T
20 | 0001
21 | 0001
22 | SCOPE
23 |
24 |
25 | ZABAK_K_T
26 | 0002
27 | 0002
28 | FIELDNAME
29 |
30 |
31 | ZABAK_K_T
32 | 0003
33 | 0003
34 | CONTEXT
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/core/zabak_kv.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_KV
7 | E
8 | INTTAB
9 | abaK Constant value
10 | 1
11 |
12 |
13 |
14 | ZABAK_KV
15 | SIGN
16 | 0001
17 | BAPISIGN
18 | 0
19 | X
20 | F
21 | E
22 |
23 |
24 | ZABAK_KV
25 | OPTION
26 | 0002
27 | BAPIOPTION
28 | 0
29 | X
30 | F
31 | E
32 |
33 |
34 | ZABAK_KV
35 | LOW
36 | 0003
37 | ZABAK_LOW
38 | 0
39 | E
40 |
41 |
42 | ZABAK_KV
43 | HIGH
44 | 0004
45 | ZABAK_HIGH
46 | 0
47 | E
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/core/zabak_kv_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_KV_T
7 | E
8 | ZABAK_KV
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | abaK Constant value table
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_maintf00.abap:
--------------------------------------------------------------------------------
1 | *---------------------------------------------------------------------*
2 | * view related FORM routines
3 | * generation date: 05.04.2019 at 13:53:16
4 | * view maintenance generator version: #001407#
5 | *---------------------------------------------------------------------*
6 |
7 | * base table related FORM-routines.............
8 | INCLUDE LSVIMFTX .
9 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_maintf00.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LZABAK_MAINTF00
7 | X
8 | I
9 | E
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_mainti00.abap:
--------------------------------------------------------------------------------
1 | *---------------------------------------------------------------------*
2 | * view related PAI modules
3 | * generation date: 05.04.2019 at 13:53:16
4 | * view maintenance generator version: #001407#
5 | *---------------------------------------------------------------------*
6 |
7 | INCLUDE LSVIMITX . "base table related PAI modules
8 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_mainti00.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LZABAK_MAINTI00
7 | X
8 | I
9 | E
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_maintt00.abap:
--------------------------------------------------------------------------------
1 | *---------------------------------------------------------------------*
2 | * view related data declarations
3 | * generation date: 05.04.2019 at 13:53:15
4 | * view maintenance generator version: #001407#
5 | *---------------------------------------------------------------------*
6 | *...processing: ZABAK...........................................*
7 | DATA: BEGIN OF STATUS_ZABAK . "state vector
8 | INCLUDE STRUCTURE VIMSTATUS.
9 | DATA: END OF STATUS_ZABAK .
10 | CONTROLS: TCTRL_ZABAK
11 | TYPE TABLEVIEW USING SCREEN '0001'.
12 | *...processing: ZABAK_DEFAULT...................................*
13 | DATA: BEGIN OF STATUS_ZABAK_DEFAULT . "state vector
14 | INCLUDE STRUCTURE VIMSTATUS.
15 | DATA: END OF STATUS_ZABAK_DEFAULT .
16 | CONTROLS: TCTRL_ZABAK_DEFAULT
17 | TYPE TABLEVIEW USING SCREEN '0002'.
18 | *.........table declarations:.................................*
19 | TABLES: *ZABAK .
20 | TABLES: *ZABAK_DEFAULT .
21 | TABLES: ZABAK .
22 | TABLES: ZABAK_DEFAULT .
23 |
24 | * general table data declarations..............
25 | INCLUDE LSVIMTDT .
26 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_maintt00.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LZABAK_MAINTT00
7 | I
8 | E
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_mainttop.abap:
--------------------------------------------------------------------------------
1 | * regenerated at 30.10.2018 10:57:39
2 | FUNCTION-POOL ZABAK_MAINT MESSAGE-ID SV.
3 |
4 | * INCLUDE LZABAK_MAINTD... " Local class definition
5 | INCLUDE LSVIMDAT . "general data decl.
6 | INCLUDE LZABAK_MAINTT00 . "view rel. data dcl.
7 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.lzabak_mainttop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LZABAK_MAINTTOP
7 | S
8 | D$
9 | I
10 | S
11 | X
12 | D$S
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.saplzabak_maint.abap:
--------------------------------------------------------------------------------
1 | * regenerated at 30.10.2018 10:57:39
2 | *******************************************************************
3 | * System-defined Include-files. *
4 | *******************************************************************
5 | INCLUDE LZABAK_MAINTTOP. " Global Data
6 | INCLUDE LZABAK_MAINTUXX. " Function Modules
7 |
8 | *******************************************************************
9 | * User-defined Include-files (if necessary). *
10 | *******************************************************************
11 | * INCLUDE LZABAK_MAINTF... " Subroutines
12 | * INCLUDE LZABAK_MAINTO... " PBO-Modules
13 | * INCLUDE LZABAK_MAINTI... " PAI-Modules
14 | * INCLUDE LZABAK_MAINTE... " Events
15 | * INCLUDE LZABAK_MAINTP... " Local class implement.
16 | * INCLUDE LZABAK_MAINTT99. " ABAP Unit tests
17 | INCLUDE LZABAK_MAINTF00 . " subprograms
18 | INCLUDE LZABAK_MAINTI00 . " PAI modules
19 | INCLUDE LSVIMFXX . " subprograms
20 | INCLUDE LSVIMOXX . " PBO modules
21 | INCLUDE LSVIMIXX . " PAI modules
22 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.saplzabak_maint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | SAPLZABAK_MAINT
7 | X
8 | S
9 | D$
10 | F
11 | S
12 | E
13 | X
14 | D$S
15 | X
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.tableframe_zabak_maint.abap:
--------------------------------------------------------------------------------
1 | *---------------------------------------------------------------------*
2 | * program for: TABLEFRAME_ZABAK_MAINT
3 | * generation date: 05.04.2019 at 13:53:09
4 | * view maintenance generator version: #001407#
5 | *---------------------------------------------------------------------*
6 | FUNCTION TABLEFRAME_ZABAK_MAINT .
7 |
8 | PERFORM TABLEFRAME TABLES X_HEADER X_NAMTAB DBA_SELLIST DPL_SELLIST
9 | EXCL_CUA_FUNCT
10 | USING CORR_NUMBER VIEW_ACTION VIEW_NAME.
11 |
12 | ENDFUNCTION.
13 |
--------------------------------------------------------------------------------
/src/core/zabak_maint.fugr.tableproc_zabak_maint.abap:
--------------------------------------------------------------------------------
1 | *---------------------------------------------------------------------*
2 | * program for: TABLEPROC_ZABAK_MAINT
3 | * generation date: 05.04.2019 at 13:53:14
4 | * view maintenance generator version: #001407#
5 | *---------------------------------------------------------------------*
6 | FUNCTION TABLEPROC_ZABAK_MAINT .
7 |
8 | PERFORM TABLEPROC.
9 |
10 | ENDFUNCTION.
11 |
--------------------------------------------------------------------------------
/src/core/zabak_namevalue.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_NAMEVALUE
7 | E
8 | INTTAB
9 | abaK Name+value
10 | 1
11 |
12 |
13 |
14 | ZABAK_NAMEVALUE
15 | NAME
16 | E
17 | 0001
18 | 0
19 | g
20 | 000008
21 | STRG
22 | STRG
23 |
24 |
25 | ZABAK_NAMEVALUE
26 | VALUE
27 | E
28 | 0002
29 | 0
30 | g
31 | 000008
32 | STRG
33 | STRG
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/core/zabak_namevalue_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_NAMEVALUE_T
7 | E
8 | ZABAK_NAMEVALUE
9 | S
10 | STRU
11 | S
12 | K
13 | U
14 | 0001
15 | abaK Name+value table
16 |
17 |
18 |
19 | ZABAK_NAMEVALUE_T
20 | 0001
21 | 0001
22 | NAME
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/core/zabak_range.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_RANGE
7 | E
8 | INTTAB
9 | abaK Range line
10 | 1
11 |
12 |
13 |
14 | ZABAK_RANGE
15 | SIGN
16 | 0001
17 | DDSIGN
18 | 0
19 | X
20 | F
21 | E
22 |
23 |
24 | ZABAK_RANGE
25 | OPTION
26 | 0002
27 | DDOPTION
28 | 0
29 | X
30 | F
31 | E
32 |
33 |
34 | ZABAK_RANGE
35 | LOW
36 | 0003
37 | ZABAK_LOW
38 | 0
39 | E
40 |
41 |
42 | ZABAK_RANGE
43 | HIGH
44 | 0004
45 | ZABAK_LOW
46 | 0
47 | E
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/core/zabak_range_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_RANGE_T
7 | E
8 | ZABAK_RANGE
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | abaK Range table
15 | R
16 | ZABAK_LOW
17 | CHAR
18 | 000200
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/core/zabak_source_type.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_SOURCE_TYPE
7 | E
8 | CHAR
9 | 000010
10 | 000010
11 | X
12 | abaK Source type
13 |
14 |
15 |
16 | ZABAK_SOURCE_TYPE
17 | 0001
18 | E
19 | FILE
20 | File
21 |
22 |
23 | ZABAK_SOURCE_TYPE
24 | 0002
25 | E
26 | URL
27 | URL
28 |
29 |
30 | ZABAK_SOURCE_TYPE
31 | 0003
32 | E
33 | INLINE
34 | Inline
35 |
36 |
37 | ZABAK_SOURCE_TYPE
38 | 0004
39 | E
40 | SO10
41 | Standard text (SO10)
42 |
43 |
44 | ZABAK_SOURCE_TYPE
45 | 0005
46 | E
47 | RFC
48 | RFC
49 |
50 |
51 | ZABAK_SOURCE_TYPE
52 | 0006
53 | E
54 | DB
55 | Database
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/src/core/zabak_source_type.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_SOURCE_TYPE
7 | E
8 | ZABAK_SOURCE_TYPE
9 | 20
10 | 10
11 | 15
12 | 20
13 | abaK Source type
14 | Source type
15 | SourceType
16 | Source type
17 | Source type
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/core/zabak_use_shm.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_USE_SHM
7 | E
8 | FLAG
9 | 18
10 | 10
11 | 18
12 | 20
13 | abaK Use Shared Objects
14 | Use Shared Objects
15 | UseShrdObj
16 | Use Shared Objects
17 | Use Shared Objects
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/core/zabak_value.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_VALUE
7 | E
8 | CHAR
9 | 000200
10 | 000200
11 | X
12 | abaK Value
13 |
14 |
15 | 1
16 | 2
17 | 3
18 | A
19 | F
20 | G
21 | I
22 | J
23 | L
24 | M
25 | N
26 | P
27 | R
28 | S
29 | T
30 | U
31 | W
32 |
33 |
34 | -
35 | 1
36 | Global constants value
37 |
38 | -
39 | 2
40 | Global constants value
41 |
42 | -
43 | 3
44 | Global constants value
45 |
46 | -
47 | A
48 | Global constants value
49 |
50 | -
51 | F
52 | Global constants value
53 |
54 | -
55 | G
56 | Global constants value
57 |
58 | -
59 | I
60 | Global constants value
61 |
62 | -
63 | J
64 | Global constants value
65 |
66 | -
67 | L
68 | Global constants value
69 |
70 | -
71 | M
72 | Global constants value
73 |
74 | -
75 | N
76 | Global constants value
77 |
78 | -
79 | P
80 | Global constants value
81 |
82 | -
83 | R
84 | Global constants value
85 |
86 | -
87 | S
88 | Global constants value
89 |
90 | -
91 | T
92 | Global constants value
93 |
94 | -
95 | U
96 | Global constants value
97 |
98 | -
99 | W
100 | Global constants value
101 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/src/core/zabak_xml_k.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_XML_K
7 | E
8 | INTTAB
9 | abaK XML constant line
10 | 1
11 |
12 |
13 |
14 | ZABAK_XML_K
15 | SCOPE
16 | 0001
17 | X
18 | ZABAK_SCOPE
19 | 0
20 | E
21 |
22 |
23 | ZABAK_XML_K
24 | FIELDNAME
25 | 0002
26 | X
27 | ZABAK_FIELDNAME
28 | 0
29 | E
30 |
31 |
32 | ZABAK_XML_K
33 | CONTEXT
34 | 0003
35 | X
36 | ZABAK_CONTEXT
37 | 0
38 | E
39 |
40 |
41 | ZABAK_XML_K
42 | VALUE
43 | 0004
44 | ZABAK_LOW
45 | 0
46 | E
47 |
48 |
49 | ZABAK_XML_K
50 | T_KV
51 | 0005
52 | ZABAK_KV_T
53 | 0
54 | TTYP
55 | TTYPL
56 | L
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/src/core/zabak_xml_k_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_XML_K_T
7 | E
8 | ZABAK_XML_K
9 | S
10 | STRU
11 | T
12 | K
13 | N
14 | 0003
15 | abaK XML constant table
16 |
17 |
18 |
19 | ZABAK_XML_K_T
20 | 0001
21 | 0001
22 | SCOPE
23 |
24 |
25 | ZABAK_XML_K_T
26 | 0002
27 | 0002
28 | FIELDNAME
29 |
30 |
31 | ZABAK_XML_K_T
32 | 0003
33 | 0003
34 | CONTEXT
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data.clas.locals_imp.abap:
--------------------------------------------------------------------------------
1 | * Mock class to be able to instantiate _DATA in unit tests (since it is abstract)
2 | CLASS lcl_data_for_utests DEFINITION
3 | FINAL
4 | INHERITING FROM zcl_abak_data.
5 |
6 | PUBLIC SECTION.
7 | METHODS constructor
8 | IMPORTING it_k TYPE zabak_k_t.
9 |
10 | PROTECTED SECTION.
11 | METHODS load_data_aux REDEFINITION.
12 | METHODS invalidate_aux REDEFINITION.
13 |
14 | PRIVATE SECTION.
15 | DATA: gt_k TYPE zabak_k_t.
16 | ENDCLASS.
17 |
18 | CLASS lcl_data_for_utests IMPLEMENTATION.
19 | METHOD constructor.
20 | super->constructor( ).
21 | gt_k = it_k.
22 | ENDMETHOD.
23 |
24 | METHOD load_data_aux.
25 | rt_k[] = gt_k[].
26 | ENDMETHOD.
27 |
28 | METHOD invalidate_aux.
29 | ENDMETHOD.
30 |
31 | ENDCLASS.
32 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_DATA
7 | E
8 | abaK Data
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_DATA
19 | INVALIDATE_AUX
20 | E
21 | (abstract)
22 |
23 |
24 | ZCL_ABAK_DATA
25 | LOAD_DATA_AUX
26 | E
27 | (abstract)
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_factory.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_abak_data_factory DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 |
8 | METHODS get_standard_instance
9 | IMPORTING
10 | !i_format_type TYPE zabak_format_type
11 | !i_source_type TYPE zabak_source_type
12 | !i_content TYPE string
13 | !i_use_shm TYPE zabak_use_shm OPTIONAL
14 | !i_bypass_cache TYPE flag OPTIONAL
15 | RETURNING
16 | value(ro_instance) TYPE REF TO zif_abak_data
17 | RAISING
18 | zcx_abak .
19 | METHODS get_custom_instance
20 | IMPORTING
21 | !io_format TYPE REF TO zif_abak_format
22 | !io_source TYPE REF TO zif_abak_source
23 | RETURNING
24 | value(ro_instance) TYPE REF TO zif_abak_data
25 | RAISING
26 | zcx_abak .
27 | PROTECTED SECTION.
28 | PRIVATE SECTION.
29 | ENDCLASS.
30 |
31 |
32 |
33 | CLASS ZCL_ABAK_DATA_FACTORY IMPLEMENTATION.
34 |
35 |
36 | METHOD get_custom_instance.
37 | CREATE OBJECT ro_instance TYPE zcl_abak_data_normal
38 | EXPORTING
39 | io_format = io_format
40 | io_source = io_source.
41 | ENDMETHOD.
42 |
43 |
44 | METHOD get_standard_instance.
45 | DATA: o_source_factory TYPE REF TO zcl_abak_source_factory,
46 | o_format_factory TYPE REF TO zcl_abak_format_factory.
47 |
48 | IF i_format_type IS INITIAL OR i_source_type IS INITIAL OR i_content IS INITIAL.
49 | RAISE EXCEPTION TYPE zcx_abak
50 | EXPORTING
51 | textid = zcx_abak=>invalid_parameters.
52 | ENDIF.
53 |
54 | IF i_bypass_cache IS INITIAL.
55 | ro_instance = lcl_cache=>get( i_use_shm = i_use_shm
56 | i_format_type = i_format_type
57 | i_source_type = i_source_type
58 | i_content = i_content ).
59 | IF ro_instance IS BOUND.
60 | RETURN.
61 | ENDIF.
62 | ENDIF.
63 |
64 |
65 | IF i_use_shm = abap_true.
66 | CREATE OBJECT ro_instance TYPE zcl_abak_data_shm
67 | EXPORTING
68 | i_format_type = i_format_type
69 | i_source_type = i_source_type
70 | i_content = i_content.
71 | ELSE.
72 | CREATE OBJECT o_source_factory.
73 | CREATE OBJECT o_format_factory.
74 | CREATE OBJECT ro_instance TYPE zcl_abak_data_normal
75 | EXPORTING
76 | io_format = o_format_factory->get_instance( i_format_type )
77 | io_source = o_source_factory->get_instance( i_source_type = i_source_type
78 | i_content = i_content ).
79 | ENDIF.
80 |
81 | IF i_bypass_cache IS INITIAL.
82 | lcl_cache=>add( i_use_shm = i_use_shm
83 | i_format_type = i_format_type
84 | i_source_type = i_source_type
85 | i_content = i_content
86 | io_instance = ro_instance ).
87 | ENDIF.
88 |
89 | ENDMETHOD.
90 | ENDCLASS.
91 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_factory.clas.locals_imp.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for the definition and implementation of
2 | *"* local helper classes, interface definitions and type
3 | *"* declarations
4 | CLASS lcl_cache DEFINITION FINAL.
5 | PUBLIC SECTION.
6 |
7 | CLASS-METHODS get
8 | IMPORTING
9 | i_use_shm TYPE flag
10 | i_format_type TYPE zabak_format_type
11 | i_source_type TYPE zabak_source_type
12 | i_content TYPE string
13 | RETURNING value(ro_instance) TYPE REF TO zif_abak_data.
14 |
15 | CLASS-METHODS add
16 | IMPORTING
17 | i_use_shm TYPE flag
18 | i_format_type TYPE zabak_format_type
19 | i_source_type TYPE zabak_source_type
20 | i_content TYPE string
21 | io_instance TYPE REF TO zif_abak_data
22 | RAISING
23 | zcx_abak.
24 |
25 | PRIVATE SECTION.
26 | TYPES:
27 | BEGIN OF ty_s_instance,
28 | use_shm TYPE flag,
29 | format_type TYPE zabak_format_type,
30 | source_type TYPE zabak_source_type,
31 | content TYPE string,
32 | o_instance TYPE REF TO zif_abak_data,
33 | END OF ty_s_instance .
34 |
35 | TYPES:
36 | ty_t_instance
37 | TYPE SORTED TABLE OF ty_s_instance
38 | WITH UNIQUE KEY use_shm format_type source_type content.
39 |
40 | CLASS-DATA gt_instance TYPE ty_t_instance .
41 | ENDCLASS.
42 |
43 | CLASS lcl_cache IMPLEMENTATION.
44 | METHOD get.
45 | FIELD-SYMBOLS: LIKE LINE OF gt_instance.
46 |
47 | READ TABLE gt_instance ASSIGNING
48 | WITH KEY use_shm = i_use_shm
49 | format_type = i_format_type
50 | source_type = i_source_type
51 | content = i_content.
52 | IF sy-subrc = 0.
53 | ro_instance = -o_instance.
54 | ENDIF.
55 | ENDMETHOD.
56 |
57 | METHOD add.
58 | DATA: s_instance LIKE LINE OF gt_instance.
59 |
60 | s_instance-use_shm = i_use_shm.
61 | s_instance-format_type = i_format_type.
62 | s_instance-source_type = i_source_type.
63 | s_instance-content = i_content.
64 | s_instance-o_instance = io_instance.
65 | INSERT s_instance INTO TABLE gt_instance.
66 | IF sy-subrc <> 0.
67 | RAISE EXCEPTION TYPE zcx_abak
68 | EXPORTING
69 | textid = zcx_abak=>unexpected_error.
70 | ENDIF.
71 | ENDMETHOD.
72 | ENDCLASS.
73 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_factory.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_data_factory,
11 | o_data TYPE REF TO zif_abak_data.
12 |
13 | METHODS: setup.
14 | METHODS: check_class
15 | IMPORTING
16 | i_classname TYPE string.
17 | METHODS: standard_normal FOR TESTING RAISING zcx_abak.
18 | METHODS: standard_sho FOR TESTING RAISING zcx_abak.
19 | METHODS: custom FOR TESTING RAISING zcx_abak.
20 | METHODS: cache FOR TESTING RAISING zcx_abak.
21 | METHODS: bypass_cache FOR TESTING RAISING zcx_abak.
22 | ENDCLASS. "lcl_Unittest
23 |
24 |
25 | CLASS lcl_unittest IMPLEMENTATION.
26 |
27 | METHOD setup.
28 | CREATE OBJECT f_cut.
29 | ENDMETHOD.
30 |
31 | METHOD check_class.
32 | cl_abap_unit_assert=>assert_equals( exp = i_classname
33 | act = cl_abap_objectdescr=>describe_by_object_ref( o_data )->get_relative_name( ) ).
34 | ENDMETHOD.
35 |
36 | METHOD standard_normal.
37 | o_data = f_cut->get_standard_instance(
38 | i_format_type = zif_abak_consts=>format_type-xml
39 | i_source_type = zif_abak_consts=>source_type-inline
40 | i_content = 'dummy' ).
41 | check_class( 'ZCL_ABAK_DATA_NORMAL' ).
42 | ENDMETHOD.
43 |
44 | METHOD standard_sho.
45 | o_data = f_cut->get_standard_instance(
46 | i_format_type = zif_abak_consts=>format_type-xml
47 | i_source_type = zif_abak_consts=>source_type-inline
48 | i_content = 'dummy'
49 | i_use_shm = abap_true ).
50 | check_class( 'ZCL_ABAK_DATA_SHM' ).
51 | ENDMETHOD.
52 |
53 | METHOD custom.
54 | DATA: o_format_factory TYPE REF TO zcl_abak_format_factory,
55 | o_source_factory TYPE REF TO zcl_abak_source_factory.
56 |
57 | CREATE OBJECT o_format_factory.
58 | CREATE OBJECT o_source_factory.
59 | o_data = f_cut->get_custom_instance(
60 | io_format = o_format_factory->get_instance( zif_abak_consts=>format_type-xml )
61 | io_source = o_source_factory->get_instance( i_source_type = zif_abak_consts=>source_type-inline
62 | i_content = 'dummy' ) ).
63 | check_class( 'ZCL_ABAK_DATA_NORMAL' ).
64 | ENDMETHOD.
65 |
66 | METHOD cache.
67 | DATA: o_data2 TYPE REF TO zif_abak_data.
68 |
69 | o_data = f_cut->get_standard_instance(
70 | i_format_type = zif_abak_consts=>format_type-xml
71 | i_source_type = zif_abak_consts=>source_type-inline
72 | i_content = 'dummy' ).
73 |
74 | o_data2 = f_cut->get_standard_instance(
75 | i_format_type = zif_abak_consts=>format_type-xml
76 | i_source_type = zif_abak_consts=>source_type-inline
77 | i_content = 'dummy'
78 | i_bypass_cache = abap_false ).
79 |
80 | cl_abap_unit_assert=>assert_equals( exp = o_data
81 | act = o_data2 ).
82 | ENDMETHOD.
83 |
84 | METHOD bypass_cache.
85 | DATA: o_data2 TYPE REF TO zif_abak_data.
86 |
87 | o_data = f_cut->get_standard_instance(
88 | i_format_type = zif_abak_consts=>format_type-xml
89 | i_source_type = zif_abak_consts=>source_type-inline
90 | i_content = 'dummy' ).
91 |
92 | o_data2 = f_cut->get_standard_instance(
93 | i_format_type = zif_abak_consts=>format_type-xml
94 | i_source_type = zif_abak_consts=>source_type-inline
95 | i_content = 'dummy'
96 | i_bypass_cache = abap_true ).
97 |
98 | IF o_data = o_data2.
99 | cl_abap_unit_assert=>fail( msg = 'Instances should be different' ).
100 | ENDIF.
101 |
102 | ENDMETHOD.
103 |
104 | ENDCLASS.
105 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_DATA_FACTORY
7 | E
8 | abaK Data factory
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_normal.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_DATA_NORMAL definition
2 | public
3 | inheriting from ZCL_ABAK_DATA
4 | final
5 | create public
6 |
7 | global friends ZCL_ABAK_FACTORY .
8 |
9 | public section.
10 |
11 | methods CONSTRUCTOR
12 | importing
13 | !IO_FORMAT type ref to ZIF_ABAK_FORMAT
14 | !IO_SOURCE type ref to zif_abak_source
15 | raising
16 | ZCX_ABAK .
17 | protected section.
18 |
19 | methods INVALIDATE_AUX
20 | redefinition .
21 | methods LOAD_DATA_AUX
22 | redefinition .
23 | PRIVATE SECTION.
24 |
25 | DATA go_format TYPE REF TO zif_abak_format .
26 | DATA go_source TYPE REF TO zif_abak_source .
27 | ENDCLASS.
28 |
29 |
30 |
31 | CLASS ZCL_ABAK_DATA_NORMAL IMPLEMENTATION.
32 |
33 |
34 | METHOD constructor.
35 |
36 | super->constructor( ).
37 |
38 | IF io_format IS NOT BOUND OR IO_SOURCE IS NOT BOUND.
39 | RAISE EXCEPTION TYPE zcx_abak
40 | EXPORTING
41 | textid = zcx_abak=>invalid_parameters.
42 | ENDIF.
43 |
44 | go_format = io_format.
45 | go_source = IO_SOURCE.
46 |
47 | ENDMETHOD.
48 |
49 |
50 | METHOD invalidate_aux.
51 | go_source->invalidate( ).
52 | ENDMETHOD.
53 |
54 |
55 | METHOD load_data_aux.
56 | rt_k = go_format->convert( go_source->get( ) ).
57 | ENDMETHOD.
58 | ENDCLASS.
59 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_normal.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | * INHERITING FROM zcl_abak_unit_tests
4 | DURATION SHORT
5 | RISK LEVEL HARMLESS
6 | FINAL.
7 |
8 | PRIVATE SECTION.
9 |
10 | DATA:
11 | f_cut TYPE REF TO zcl_abak_data_normal.
12 |
13 | METHODS: setup RAISING zcx_abak.
14 | METHODS: read_valid FOR TESTING RAISING zcx_abak.
15 | ENDCLASS. "lcl_Unittest
16 |
17 |
18 | CLASS lcl_unittest IMPLEMENTATION.
19 |
20 | METHOD setup.
21 | DATA: o_tools TYPE REF TO zcl_abak_tools,
22 | o_format TYPE REF TO zcl_abak_format_xml,
23 | o_source TYPE REF TO zcl_abak_source_inline.
24 |
25 | CREATE OBJECT o_tools.
26 |
27 | CREATE OBJECT o_format.
28 |
29 | CREATE OBJECT o_source
30 | EXPORTING
31 | i_content = o_tools->get_demo_xml( ).
32 |
33 | CREATE OBJECT f_cut
34 | EXPORTING
35 | io_format = o_format
36 | io_source = o_source.
37 | ENDMETHOD.
38 |
39 | METHOD read_valid.
40 |
41 | cl_abap_unit_assert=>assert_differs(
42 | exp = 0
43 | act = lines( f_cut->zif_abak_data~read( i_scope = 'GLOBAL'
44 | i_fieldname = 'BUKRS'
45 | i_context = space ) )
46 | msg = 'Resulting table should not be empty' ).
47 |
48 | ENDMETHOD.
49 |
50 | ENDCLASS. "lcl_Unittest
51 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_normal.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_DATA_NORMAL
7 | E
8 | abaK Data normal
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_DATA_NORMAL
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_shm.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_data_shm. "class under test
11 |
12 | METHODS: setup RAISING zcx_abak.
13 | METHODS: read_valid FOR TESTING RAISING zcx_abak.
14 | ENDCLASS. "lcl_Unittest
15 |
16 |
17 | CLASS lcl_unittest IMPLEMENTATION.
18 |
19 | METHOD setup.
20 | DATA: o_tools TYPE REF TO zcl_abak_tools.
21 |
22 | CREATE OBJECT o_tools.
23 |
24 | CREATE OBJECT f_cut
25 | EXPORTING
26 | i_format_type = zif_abak_consts=>format_type-xml
27 | i_source_type = zif_abak_consts=>source_type-inline
28 | i_content = o_tools->get_demo_xml( ).
29 | ENDMETHOD.
30 |
31 | METHOD read_valid.
32 |
33 | cl_abap_unit_assert=>assert_differs(
34 | exp = 0
35 | act = lines( f_cut->zif_abak_data~read( i_scope = space
36 | i_fieldname = 'BUKRS'
37 | i_context = space ) )
38 | msg = 'Resulting table should not be empty' ).
39 |
40 | ENDMETHOD.
41 |
42 | ENDCLASS. "lcl_Unittest
43 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_data_shm.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_DATA_SHM
7 | E
8 | abaK Data normal
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_DATA_SHM
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 | ZCL_ABAK_DATA_SHM
25 | G_SOURCE_TYPE
26 | E
27 | abaK Source type
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FACTORY
7 | E
8 | abaK Factory
9 | 1
10 | X
11 | X
12 | X
13 | K
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_k_table.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_K_TABLE
7 | E
8 | abaK K Table
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 | ZCL_ABAK_K_TABLE
17 | GT_K
18 | E
19 | abaK Constant table
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_params.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_PARAMS
7 | E
8 | abaK Parameters
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_PARAMS
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_params_definition.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 | DATA:
9 | f_cut TYPE REF TO zcl_abak_params_definition,
10 | t_param TYPE zabak_namevalue_t.
11 |
12 | METHODS add
13 | IMPORTING
14 | i_name TYPE string
15 | i_value TYPE string.
16 | METHODS no_params FOR TESTING RAISING zcx_abak.
17 | METHODS single_param FOR TESTING RAISING zcx_abak.
18 | METHODS two_params FOR TESTING RAISING zcx_abak.
19 | METHODS obligatory_missing FOR TESTING.
20 | METHODS non_obligatory_missing FOR TESTING RAISING zcx_abak.
21 | METHODS invalid_param FOR TESTING.
22 | METHODS length_exceeded FOR TESTING.
23 | METHODS length_not_exceeded FOR TESTING RAISING zcx_abak.
24 |
25 | ENDCLASS. "lcl_Unittest
26 |
27 |
28 | CLASS lcl_unittest IMPLEMENTATION.
29 |
30 | METHOD add.
31 | DATA: s_param LIKE LINE OF t_param.
32 | s_param-name = i_name.
33 | s_param-value = i_value.
34 | INSERT s_param INTO TABLE t_param.
35 | ENDMETHOD.
36 |
37 | METHOD no_params.
38 | CREATE OBJECT f_cut
39 | EXPORTING
40 | i_definition = space.
41 | ENDMETHOD.
42 |
43 | METHOD single_param.
44 |
45 | CREATE OBJECT f_cut
46 | EXPORTING
47 | i_definition = '+PARAM1'.
48 |
49 | add( i_name = 'PARAM1' i_value = '123' ).
50 |
51 | f_cut->check_parameters( t_param ).
52 |
53 | ENDMETHOD.
54 |
55 | METHOD two_params.
56 | CREATE OBJECT f_cut
57 | EXPORTING
58 | i_definition = 'PARAM1 PARAM2'.
59 |
60 | add( i_name = 'PARAM1' i_value = '123' ).
61 | add( i_name = 'PARAM2' i_value = '456' ).
62 |
63 | f_cut->check_parameters( t_param ).
64 |
65 | ENDMETHOD.
66 |
67 | METHOD invalid_param.
68 | TRY.
69 | CREATE OBJECT f_cut
70 | EXPORTING
71 | i_definition = 'VALID'.
72 |
73 | add( i_name = 'INVALID' i_value = '123' ).
74 |
75 | f_cut->check_parameters( t_param ).
76 |
77 | cl_abap_unit_assert=>fail( 'Should have failed with INVALID parameter ').
78 | CATCH zcx_abak.
79 | RETURN.
80 | ENDTRY.
81 |
82 | ENDMETHOD.
83 |
84 | METHOD obligatory_missing.
85 | TRY.
86 | CREATE OBJECT f_cut
87 | EXPORTING
88 | i_definition = '+OBLIGATORY VALID'.
89 |
90 | add( i_name = 'VALID' i_value = '123' ).
91 |
92 | f_cut->check_parameters( t_param ).
93 |
94 | cl_abap_unit_assert=>fail( 'Obligatory parameter should have been detected').
95 | CATCH zcx_abak.
96 | RETURN.
97 | ENDTRY.
98 |
99 | ENDMETHOD.
100 |
101 | METHOD non_obligatory_missing.
102 | CREATE OBJECT f_cut
103 | EXPORTING
104 | i_definition = 'NON_OBLIGATORY VALID'.
105 |
106 | add( i_name = 'VALID' i_value = '123' ).
107 |
108 | f_cut->check_parameters( t_param ).
109 |
110 | ENDMETHOD.
111 |
112 | METHOD length_exceeded.
113 | TRY.
114 | CREATE OBJECT f_cut
115 | EXPORTING
116 | i_definition = 'PARAM1 PARAM2 PARAM3(5)'.
117 |
118 | add( i_name = 'PARAM3' i_value = '123456' ).
119 |
120 | f_cut->check_parameters( t_param ).
121 |
122 | cl_abap_unit_assert=>fail( 'Max length of 5 should have been detected').
123 |
124 | CATCH zcx_abak.
125 | RETURN.
126 | ENDTRY.
127 |
128 | ENDMETHOD.
129 |
130 | METHOD length_not_exceeded.
131 | CREATE OBJECT f_cut
132 | EXPORTING
133 | i_definition = 'PARAM1 PARAM2 PARAM3(5)'.
134 |
135 | add( i_name = 'PARAM3' i_value = '12345' ).
136 |
137 | f_cut->check_parameters( t_param ).
138 |
139 | ENDMETHOD.
140 |
141 | ENDCLASS. "lcl_Unittest
142 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_params_definition.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_PARAMS_DEFINITION
7 | E
8 | abaK Parameters
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_PARAMS_DEFINITION
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_rfc.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_RFC definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 | interface ZIF_ABAK_CONSTS load .
8 |
9 | methods GET_DATA
10 | importing
11 | !I_ID type ZABAK_ID
12 | returning
13 | value(R_SERIALIZED) type STRING
14 | raising
15 | ZCX_ABAK .
16 | PROTECTED SECTION.
17 | private section.
18 |
19 | methods K_TO_XML_K
20 | importing
21 | !IT_K type ZABAK_K_T
22 | returning
23 | value(RT_XML_K_T) type ZABAK_XML_K_T .
24 | ENDCLASS.
25 |
26 |
27 |
28 | CLASS ZCL_ABAK_RFC IMPLEMENTATION.
29 |
30 |
31 | METHOD get_data.
32 |
33 | DATA: s_zabak TYPE zabak,
34 | content TYPE string,
35 | o_data TYPE REF TO zif_abak_data,
36 | o_data_factory TYPE REF TO zcl_abak_data_factory,
37 | t_xml_k TYPE zabak_xml_k_t.
38 |
39 | SELECT SINGLE * FROM zabak INTO s_zabak WHERE id = i_id.
40 | IF sy-subrc <> 0.
41 | RAISE EXCEPTION TYPE zcx_abak. " TODO
42 | ENDIF.
43 |
44 | IF s_zabak-format_type IS INITIAL OR s_zabak-source_type IS INITIAL OR s_zabak-content IS INITIAL.
45 | RAISE EXCEPTION TYPE zcx_abak
46 | EXPORTING
47 | textid = zcx_abak=>invalid_parameters.
48 | ENDIF.
49 |
50 | content = s_zabak-content.
51 |
52 | CREATE OBJECT o_data_factory.
53 | o_data = o_data_factory->get_standard_instance( i_format_type = s_zabak-format_type
54 | i_source_type = s_zabak-source_type
55 | i_content = content ).
56 |
57 | t_xml_k = k_to_xml_k( o_data->get_data( ) ).
58 | CALL TRANSFORMATION zabak_content_rfc
59 | SOURCE constants = t_xml_k
60 | RESULT XML r_serialized.
61 |
62 | ENDMETHOD.
63 |
64 |
65 | METHOD k_to_xml_k.
66 |
67 | DATA: s_xml_k LIKE LINE OF rt_xml_k_t.
68 |
69 | FIELD-SYMBOLS: LIKE LINE OF it_k.
70 |
71 | LOOP AT it_k ASSIGNING .
72 | MOVE-CORRESPONDING TO s_xml_k.
73 | INSERT s_xml_k INTO TABLE rt_xml_k_t.
74 | ENDLOOP.
75 |
76 | ENDMETHOD.
77 | ENDCLASS.
78 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_rfc.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_RFC
7 | E
8 | abaK RFC Tool
9 | 1
10 | X
11 | X
12 | X
13 | K
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_shm_area.shma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SHM_AREA
7 | abaK database shared memory area
8 | ZCL_ABAK_SHM_ROOT
9 | X
10 | 109200001
11 | 159200000
12 | 1208200200
13 | 1107197100
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_shm_root.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_abak_shm_root DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC
5 | SHARED MEMORY ENABLED .
6 |
7 | PUBLIC SECTION.
8 |
9 | METHODS constructor
10 | IMPORTING
11 | !i_format_type TYPE zabak_format_type
12 | !i_source_type TYPE zabak_source_type
13 | !i_content TYPE string
14 | RAISING
15 | zcx_abak .
16 | METHODS get_data
17 | RETURNING
18 | value(rt_k) TYPE zabak_k_t
19 | RAISING
20 | zcx_abak .
21 | PROTECTED SECTION.
22 | PRIVATE SECTION.
23 |
24 | DATA g_format_type TYPE zabak_format_type .
25 | DATA g_source_type TYPE zabak_source_type .
26 | DATA g_content TYPE string .
27 | DATA gt_k TYPE zabak_k_t .
28 | DATA g_loaded TYPE flag .
29 |
30 | METHODS load_data
31 | RAISING
32 | zcx_abak .
33 | ENDCLASS.
34 |
35 |
36 |
37 | CLASS ZCL_ABAK_SHM_ROOT IMPLEMENTATION.
38 |
39 |
40 | METHOD constructor.
41 |
42 | g_format_type = i_format_type.
43 | g_source_type = i_source_type.
44 | g_content = i_content.
45 |
46 | load_data( ).
47 |
48 | ENDMETHOD.
49 |
50 |
51 | METHOD get_data.
52 |
53 | LOG-POINT ID zabak SUBKEY 'shm_root.get_data' FIELDS g_format_type g_source_type g_content.
54 |
55 | load_data( ).
56 |
57 | rt_k = gt_k.
58 |
59 | ENDMETHOD. "#EC CI_VALPAR
60 |
61 |
62 | METHOD load_data.
63 | DATA: o_data TYPE REF TO zif_abak_data,
64 | o_data_factory TYPE REF TO zcl_abak_data_factory.
65 |
66 | IF g_loaded IS INITIAL.
67 | CREATE OBJECT o_data_factory.
68 | o_data = o_data_factory->get_standard_instance( i_format_type = g_format_type
69 | i_source_type = g_source_type
70 | i_content = g_content ).
71 |
72 | gt_k = o_data->get_data( ).
73 | g_loaded = abap_true.
74 | ENDIF.
75 |
76 | ENDMETHOD.
77 | ENDCLASS.
78 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_shm_root.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SHM_ROOT
7 | E
8 | abaK Source database
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_SHM_ROOT
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 | ZCL_ABAK_SHM_ROOT
25 | GT_K
26 | E
27 | ABAK Data table
28 |
29 |
30 | ZCL_ABAK_SHM_ROOT
31 | G_LOADED
32 | E
33 | General Flag
34 |
35 |
36 | ZCL_ABAK_SHM_ROOT
37 | G_SOURCE_TYPE
38 | E
39 | abaK Source type
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_source.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_SOURCE definition
2 | public
3 | abstract
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces zif_abak_source
9 | abstract methods GET_TYPE .
10 | protected section.
11 |
12 | methods LOAD
13 | abstract
14 | returning
15 | value(R_CONTENT) type STRING
16 | raising
17 | ZCX_ABAK .
18 | private section.
19 |
20 | data G_CONTENT type STRING .
21 | data G_LOADED type FLAG .
22 | ENDCLASS.
23 |
24 |
25 |
26 | CLASS ZCL_ABAK_SOURCE IMPLEMENTATION.
27 |
28 |
29 | METHOD zif_abak_source~get.
30 |
31 | IF g_loaded IS INITIAL.
32 | g_content = load( ).
33 | g_loaded = abap_true.
34 | ENDIF.
35 |
36 | r_content = g_content.
37 |
38 | ENDMETHOD.
39 |
40 |
41 | METHOD zif_abak_source~invalidate.
42 | CLEAR g_loaded.
43 | ENDMETHOD.
44 | ENDCLASS.
45 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_source.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE
7 | E
8 | abaK Raw text from URL
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 | ZCL_ABAK_SOURCE
17 | LOAD
18 | E
19 | (abstract)
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_tools.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_TOOLS definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | methods CHECK_AGAINST_REGEX
9 | importing
10 | !I_REGEX type STRING
11 | !I_VALUE type STRING
12 | raising
13 | ZCX_ABAK .
14 | methods GET_DEMO_XML
15 | returning
16 | value(R_XML) type STRING
17 | raising
18 | ZCX_ABAK .
19 | protected section.
20 | private section.
21 | ENDCLASS.
22 |
23 |
24 |
25 | CLASS ZCL_ABAK_TOOLS IMPLEMENTATION.
26 |
27 |
28 | METHOD check_against_regex.
29 | DATA: o_matcher TYPE REF TO cl_abap_matcher,
30 | o_exp TYPE REF TO cx_root.
31 |
32 | TRY.
33 | o_matcher = cl_abap_matcher=>create( pattern = i_regex
34 | text = i_value
35 | ignore_case = abap_true ).
36 |
37 | IF o_matcher->match( ) IS INITIAL.
38 | RAISE EXCEPTION TYPE zcx_abak. " TODO
39 | ENDIF.
40 |
41 | CATCH cx_sy_regex cx_sy_matcher INTO o_exp.
42 | RAISE EXCEPTION TYPE zcx_abak
43 | EXPORTING
44 | previous = o_exp.
45 | ENDTRY.
46 | ENDMETHOD.
47 |
48 |
49 | METHOD get_demo_xml.
50 | * Even though storing constants in a separate file is better than hard coding them
51 | * directly in the code, it would still be difficult for a functional person to maintain it.
52 | * This demo uses a XSLT to store the XML file just for simplicity sake. If you want to store
53 | * your constants in XML format make sure they are in a place which is both safe and yet easy
54 | * to maintain according to the project needs and your company standards.
55 |
56 | * Please bear in mind that with this example we are not advocating that constants should be
57 | * hard coded in the program. On the contrary. That defeats the whole purpose of this tool.
58 | * This is just a simpler way to package the demo data.
59 |
60 | r_xml = ||.
61 |
62 | CALL TRANSFORMATION zabak_demo_xml
63 | SOURCE XML r_xml
64 | RESULT XML r_xml.
65 |
66 | ENDMETHOD.
67 | ENDCLASS.
68 |
--------------------------------------------------------------------------------
/src/core/zcl_abak_tools.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_TOOLS
7 | E
8 | abaK Tools
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/core/zcx_abak.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK definition
2 | public
3 | inheriting from CX_STATIC_CHECK
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces IF_T100_MESSAGE .
9 |
10 | constants:
11 | begin of INVALID_PARAMETERS,
12 | msgid type symsgid value 'ZABAK',
13 | msgno type symsgno value '000',
14 | attr1 type scx_attrname value '',
15 | attr2 type scx_attrname value '',
16 | attr3 type scx_attrname value '',
17 | attr4 type scx_attrname value '',
18 | end of INVALID_PARAMETERS .
19 | constants:
20 | begin of UNEXPECTED_ERROR,
21 | msgid type symsgid value 'ZABAK',
22 | msgno type symsgno value '008',
23 | attr1 type scx_attrname value '',
24 | attr2 type scx_attrname value '',
25 | attr3 type scx_attrname value '',
26 | attr4 type scx_attrname value '',
27 | end of UNEXPECTED_ERROR .
28 | constants:
29 | begin of NOT_IMPLEMENTED,
30 | msgid type symsgid value 'ZABAK',
31 | msgno type symsgno value '011',
32 | attr1 type scx_attrname value '',
33 | attr2 type scx_attrname value '',
34 | attr3 type scx_attrname value '',
35 | attr4 type scx_attrname value '',
36 | end of NOT_IMPLEMENTED .
37 | data PREVIOUS_FROM_SYST type FLAG .
38 |
39 | methods CONSTRUCTOR
40 | importing
41 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
42 | !PREVIOUS like PREVIOUS optional
43 | !PREVIOUS_FROM_SYST type FLAG optional .
44 |
45 | methods IF_MESSAGE~GET_LONGTEXT
46 | redefinition .
47 | methods IF_MESSAGE~GET_TEXT
48 | redefinition .
49 | protected section.
50 | private section.
51 |
52 | methods BUILD_FROM_SYST .
53 | ENDCLASS.
54 |
55 |
56 |
57 | CLASS ZCX_ABAK IMPLEMENTATION.
58 |
59 |
60 | method BUILD_FROM_SYST.
61 |
62 | DATA: o_exp TYPE REF TO lcx_t100_syst.
63 | IF me->previous IS NOT BOUND AND me->previous_from_syst = abap_true.
64 | TRY .
65 | RAISE EXCEPTION TYPE lcx_t100_syst.
66 | CATCH lcx_t100_syst INTO o_exp.
67 | me->previous = o_exp.
68 | ENDTRY.
69 | ENDIF.
70 |
71 | endmethod.
72 |
73 |
74 | method CONSTRUCTOR.
75 | CALL METHOD SUPER->CONSTRUCTOR
76 | EXPORTING
77 | PREVIOUS = PREVIOUS
78 | .
79 | me->PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST .
80 | clear me->textid.
81 | if textid is initial.
82 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
83 | else.
84 | IF_T100_MESSAGE~T100KEY = TEXTID.
85 | endif.
86 | endmethod.
87 |
88 |
89 | method IF_MESSAGE~GET_LONGTEXT.
90 | * The default behaviour returns the long text of this instance.
91 | * We redefine it to recursively find the chained exceptions
92 | * and fetch the long text from the last one
93 |
94 | IF me->previous IS BOUND.
95 | result = me->previous->get_longtext( preserve_newlines ).
96 | ELSE.
97 | result = super->if_message~get_longtext( preserve_newlines ).
98 | ENDIF.
99 |
100 | endmethod.
101 |
102 |
103 | method IF_MESSAGE~GET_TEXT.
104 | * The default behaviour returns the text of this instance.
105 | * We redefine it to recursively find the chained exceptions
106 | * and fetch the text from the last one
107 |
108 | IF me->previous IS BOUND.
109 | result = me->previous->get_text( ).
110 | ELSE.
111 | result = super->if_message~get_text( ).
112 | ENDIF.
113 |
114 | endmethod.
115 | ENDCLASS.
116 |
--------------------------------------------------------------------------------
/src/core/zcx_abak.clas.locals_imp.abap:
--------------------------------------------------------------------------------
1 | * Build exception instance from SYST message fields
2 | * Inspiration: http://help.sap.com/abapdocu_740/en/abenmessage_interface_abexa.htm
3 |
4 | class lcx_t100_syst definition inheriting from cx_dynamic_check final.
5 | public section.
6 | interfaces if_t100_message.
7 | methods constructor.
8 | data msgv1 type symsgv.
9 | data msgv2 type symsgv.
10 | data msgv3 type symsgv.
11 | data msgv4 type symsgv.
12 | endclass. "cx_t100 DEFINITION
13 |
14 | *----------------------------------------------------------------------*
15 | * CLASS cx_t100 IMPLEMENTATION
16 | *----------------------------------------------------------------------*
17 | *
18 | *----------------------------------------------------------------------*
19 | class lcx_t100_syst implementation.
20 | method constructor.
21 | super->constructor( ).
22 | me->msgv1 = sy-msgv1.
23 | me->msgv2 = sy-msgv2.
24 | me->msgv3 = sy-msgv3.
25 | me->msgv4 = sy-msgv4.
26 | if_t100_message~t100key-msgid = sy-msgid.
27 | if_t100_message~t100key-msgno = sy-msgno.
28 | if_t100_message~t100key-attr1 = 'MSGV1'.
29 | if_t100_message~t100key-attr2 = 'MSGV2'.
30 | if_t100_message~t100key-attr3 = 'MSGV3'.
31 | if_t100_message~t100key-attr4 = 'MSGV4'.
32 | endmethod. "constructor
33 | endclass. "cx_t100 IMPLEMENTATION
34 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_data.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_DATA
7 | E
8 | abaK Data exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCX_ABAK_DATA
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 | ZCX_ABAK_DATA
24 | HIGH
25 | E
26 | ABAK High value
27 |
28 |
29 | ZCX_ABAK_DATA
30 | LOW
31 | E
32 | ABAK Low value
33 |
34 |
35 | ZCX_ABAK_DATA
36 | OPTION
37 | E
38 | Selection operator OPTION for range tables
39 |
40 |
41 | ZCX_ABAK_DATA
42 | SIGN
43 | E
44 | Inclusion/exclusion criterion SIGN for range tables
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_engine.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcx_abak_engine DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcx_abak
4 | FINAL
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 |
9 | CONSTANTS:
10 | BEGIN OF value_not_found,
11 | msgid TYPE symsgid VALUE 'ZABAK',
12 | msgno TYPE symsgno VALUE '009',
13 | attr1 TYPE scx_attrname VALUE 'SCOPE',
14 | attr2 TYPE scx_attrname VALUE 'FIELDNAME',
15 | attr3 TYPE scx_attrname VALUE 'CONTEXT',
16 | attr4 TYPE scx_attrname VALUE '',
17 | END OF value_not_found .
18 | DATA scope TYPE zabak_scope .
19 | DATA fieldname TYPE fieldname .
20 | DATA context TYPE zabak_context .
21 |
22 | METHODS constructor
23 | IMPORTING
24 | !textid LIKE if_t100_message=>t100key OPTIONAL
25 | !previous LIKE previous OPTIONAL
26 | !previous_from_syst TYPE flag OPTIONAL
27 | !scope TYPE zabak_scope OPTIONAL
28 | !fieldname TYPE fieldname OPTIONAL
29 | !context TYPE zabak_context OPTIONAL .
30 | PROTECTED SECTION.
31 | PRIVATE SECTION.
32 | ENDCLASS.
33 |
34 |
35 |
36 | CLASS zcx_abak_engine IMPLEMENTATION.
37 |
38 |
39 | METHOD constructor ##ADT_SUPPRESS_GENERATION.
40 | CALL METHOD super->constructor
41 | EXPORTING
42 | previous = previous
43 | previous_from_syst = previous_from_syst
44 | .
45 | me->scope = scope .
46 | me->fieldname = fieldname .
47 | me->context = context .
48 | CLEAR me->textid.
49 | IF textid IS INITIAL.
50 | if_t100_message~t100key = if_t100_message=>default_textid.
51 | ELSE.
52 | if_t100_message~t100key = textid.
53 | ENDIF.
54 | ENDMETHOD.
55 | ENDCLASS.
56 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_engine.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_ENGINE
7 | E
8 | abaK Engine exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCX_ABAK_ENGINE
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 | ZCX_ABAK_ENGINE
24 | CONTEXT
25 | E
26 | abaK context
27 |
28 |
29 | ZCX_ABAK_ENGINE
30 | FIELDNAME
31 | E
32 | Field name (for set)
33 |
34 |
35 | ZCX_ABAK_ENGINE
36 | SCOPE
37 | E
38 | abaK Scope
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_factory.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK_FACTORY definition
2 | public
3 | inheriting from ZCX_ABAK
4 | final
5 | create public .
6 |
7 | public section.
8 |
9 | constants:
10 | begin of ID_NOT_FOUND,
11 | msgid type symsgid value 'ZABAK',
12 | msgno type symsgno value '012',
13 | attr1 type scx_attrname value 'ID',
14 | attr2 type scx_attrname value '',
15 | attr3 type scx_attrname value '',
16 | attr4 type scx_attrname value '',
17 | end of ID_NOT_FOUND .
18 | data ID type ZABAK_ID .
19 |
20 | methods CONSTRUCTOR
21 | importing
22 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
23 | !PREVIOUS like PREVIOUS optional
24 | !PREVIOUS_FROM_SYST type FLAG optional
25 | !ID type ZABAK_ID optional .
26 | protected section.
27 | private section.
28 | ENDCLASS.
29 |
30 |
31 |
32 | CLASS ZCX_ABAK_FACTORY IMPLEMENTATION.
33 |
34 |
35 | method CONSTRUCTOR.
36 | CALL METHOD SUPER->CONSTRUCTOR
37 | EXPORTING
38 | PREVIOUS = PREVIOUS
39 | PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST
40 | .
41 | me->ID = ID .
42 | clear me->textid.
43 | if textid is initial.
44 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
45 | else.
46 | IF_T100_MESSAGE~T100KEY = TEXTID.
47 | endif.
48 | endmethod.
49 | ENDCLASS.
50 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_FACTORY
7 | E
8 | abaK Factory exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCX_ABAK_FACTORY
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 | ZCX_ABAK_FACTORY
24 | ID
25 | E
26 | abaK ID
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_params.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK_PARAMS definition
2 | public
3 | inheriting from ZCX_ABAK
4 | final
5 | create public .
6 |
7 | public section.
8 |
9 | constants:
10 | begin of DUPLICATE,
11 | msgid type symsgid value 'ZABAK',
12 | msgno type symsgno value '013',
13 | attr1 type scx_attrname value 'NAME',
14 | attr2 type scx_attrname value '',
15 | attr3 type scx_attrname value '',
16 | attr4 type scx_attrname value '',
17 | end of DUPLICATE .
18 | data NAME type STRING .
19 |
20 | methods CONSTRUCTOR
21 | importing
22 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
23 | !PREVIOUS like PREVIOUS optional
24 | !PREVIOUS_FROM_SYST type FLAG optional
25 | !NAME type STRING optional .
26 | protected section.
27 | private section.
28 | ENDCLASS.
29 |
30 |
31 |
32 | CLASS ZCX_ABAK_PARAMS IMPLEMENTATION.
33 |
34 |
35 | method CONSTRUCTOR.
36 | CALL METHOD SUPER->CONSTRUCTOR
37 | EXPORTING
38 | PREVIOUS = PREVIOUS
39 | PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST
40 | .
41 | me->NAME = NAME .
42 | clear me->textid.
43 | if textid is initial.
44 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
45 | else.
46 | IF_T100_MESSAGE~T100KEY = TEXTID.
47 | endif.
48 | endmethod.
49 | ENDCLASS.
50 |
--------------------------------------------------------------------------------
/src/core/zcx_abak_params.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_PARAMS
7 | E
8 | abaK Params exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCX_ABAK_PARAMS
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/core/zif_abak.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK
2 | public .
3 |
4 |
5 | methods GET_VALUE
6 | importing
7 | !I_SCOPE type ZABAK_SCOPE optional
8 | !I_FIELDNAME type ZABAK_FIELDNAME
9 | !I_CONTEXT type ANY default ' '
10 | returning
11 | value(R_VALUE) type ZABAK_LOW
12 | raising
13 | ZCX_ABAK .
14 | methods GET_VALUE_IF_EXISTS
15 | importing
16 | !I_SCOPE type ZABAK_SCOPE optional
17 | !I_FIELDNAME type ZABAK_FIELDNAME
18 | !I_CONTEXT type ANY default ' '
19 | returning
20 | value(R_VALUE) type ZABAK_LOW .
21 | methods GET_RANGE
22 | importing
23 | !I_SCOPE type ZABAK_SCOPE optional
24 | !I_FIELDNAME type ZABAK_FIELDNAME
25 | !I_CONTEXT type ANY default ' '
26 | returning
27 | value(RR_RANGE) type ZABAK_RANGE_T
28 | raising
29 | ZCX_ABAK .
30 | methods GET_RANGE_IF_EXISTS
31 | importing
32 | !I_SCOPE type ZABAK_SCOPE optional
33 | !I_FIELDNAME type ZABAK_FIELDNAME
34 | !I_CONTEXT type ANY default ' '
35 | returning
36 | value(RR_RANGE) type ZABAK_RANGE_T .
37 | methods CHECK_VALUE
38 | importing
39 | !I_SCOPE type ZABAK_SCOPE optional
40 | !I_FIELDNAME type ZABAK_FIELDNAME
41 | !I_CONTEXT type ANY optional
42 | !I_VALUE type ANY
43 | returning
44 | value(R_RESULT) type FLAG
45 | raising
46 | ZCX_ABAK .
47 | methods CHECK_VALUE_IF_EXISTS
48 | importing
49 | !I_SCOPE type ZABAK_SCOPE optional
50 | !I_FIELDNAME type ZABAK_FIELDNAME
51 | !I_CONTEXT type ANY default ' '
52 | !I_VALUE type ANY
53 | returning
54 | value(R_RESULT) type FLAG .
55 | methods INVALIDATE
56 | raising
57 | ZCX_ABAK .
58 | endinterface.
59 |
--------------------------------------------------------------------------------
/src/core/zif_abak.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK
7 | E
8 | abaK Engine interface
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_consts.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK_CONSTS
2 | public .
3 |
4 |
5 | constants VERSION type STRING value '0.23b'. "#EC NOTEXT
6 | constants:
7 | BEGIN OF source_type,
8 | database TYPE zabak_source_type VALUE 'DB',
9 | inline TYPE zabak_source_type VALUE 'INLINE',
10 | file TYPE zabak_source_type VALUE 'FILE',
11 | mime type zabak_source_type value 'MIME',
12 | rfc TYPE zabak_source_type VALUE 'RFC',
13 | standard_text TYPE zabak_source_type VALUE 'SO10',
14 | url TYPE zabak_source_type VALUE 'URL',
15 | END OF source_type .
16 | constants:
17 | BEGIN OF format_type,
18 | internal TYPE zabak_format_type VALUE 'INTERNAL',
19 | xml TYPE zabak_format_type VALUE 'XML',
20 | json TYPE zabak_format_type VALUE 'JSON',
21 | csv TYPE zabak_format_type VALUE 'CSV',
22 | END OF format_type .
23 | endinterface.
24 |
--------------------------------------------------------------------------------
/src/core/zif_abak_consts.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK_CONSTS
7 | E
8 | abaK Constants
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_data.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK_DATA
2 | public .
3 |
4 |
5 | methods READ
6 | importing
7 | !I_SCOPE type ZABAK_SCOPE
8 | !I_FIELDNAME type ZABAK_FIELDNAME
9 | !I_CONTEXT type ZABAK_CONTEXT
10 | returning
11 | value(RT_KV) type ZABAK_KV_T
12 | raising
13 | ZCX_ABAK .
14 | methods INVALIDATE
15 | raising
16 | ZCX_ABAK .
17 | methods GET_DATA
18 | returning
19 | value(RT_K) type ZABAK_K_T
20 | raising
21 | ZCX_ABAK .
22 | endinterface.
23 |
--------------------------------------------------------------------------------
/src/core/zif_abak_data.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK_DATA
7 | E
8 | abaK Data interface
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_format.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK_FORMAT
2 | public .
3 |
4 |
5 | methods CONVERT
6 | importing
7 | !I_DATA type STRING
8 | returning
9 | value(RT_K) type ZABAK_K_T
10 | raising
11 | ZCX_ABAK .
12 | methods GET_TYPE
13 | returning
14 | value(R_FORMAT_TYPE) type ZABAK_FORMAT_TYPE .
15 | endinterface.
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_format.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK_FORMAT
7 | E
8 | abaK Source interface
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_params.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK_PARAMS
2 | public .
3 |
4 |
5 | methods GET
6 | importing
7 | !I_NAME type STRING
8 | returning
9 | value(R_VALUE) type STRING
10 | raising
11 | ZCX_ABAK .
12 | endinterface.
13 |
--------------------------------------------------------------------------------
/src/core/zif_abak_params.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK_PARAMS
7 | E
8 | abak Parameters interface
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/core/zif_abak_source.intf.abap:
--------------------------------------------------------------------------------
1 | interface ZIF_ABAK_SOURCE
2 | public .
3 |
4 |
5 | methods GET
6 | returning
7 | value(R_CONTENT) type STRING
8 | raising
9 | ZCX_ABAK .
10 | methods GET_TYPE
11 | returning
12 | value(R_TYPE) type ZABAK_SOURCE_TYPE .
13 | methods INVALIDATE
14 | raising
15 | ZCX_ABAK .
16 | endinterface.
17 |
--------------------------------------------------------------------------------
/src/core/zif_abak_source.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ABAK_SOURCE
7 | E
8 | abaK Source interface
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/formats/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | abaK Formats
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/formats/zabak_formats_api.pinf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | ZABAK_FORMATS_API
8 | abaK Formats API
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_csv.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_FORMAT_CSV definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces ZIF_ABAK_FORMAT .
9 |
10 | methods CONSTRUCTOR
11 | importing
12 | !I_DELIMITER type CHAR1 default '"'
13 | !I_SEPARATOR type CHAR1 default ',' .
14 | protected section.
15 | private section.
16 |
17 | types:
18 | ty_t_csv TYPE STANDARD TABLE OF string WITH KEY table_line .
19 |
20 | data GO_CONVERTER type ref to CL_RSDA_CSV_CONVERTER .
21 |
22 | methods SPLIT_INTO_LINES
23 | importing
24 | !I_CSV type STRING
25 | returning
26 | value(RT_CSV) type TY_T_CSV .
27 | methods CONVERT_CSV_2_DB
28 | importing
29 | !IT_CSV type TY_T_CSV
30 | returning
31 | value(RT_DB) type ZABAK_DB_T
32 | raising
33 | ZCX_ABAK .
34 | ENDCLASS.
35 |
36 |
37 |
38 | CLASS ZCL_ABAK_FORMAT_CSV IMPLEMENTATION.
39 |
40 |
41 | METHOD constructor.
42 | super->constructor( ).
43 | go_converter = cl_rsda_csv_converter=>create( i_delimiter = i_delimiter
44 | i_separator = i_separator ).
45 | ENDMETHOD.
46 |
47 |
48 | METHOD CONVERT_CSV_2_DB.
49 |
50 | DATA: s_db LIKE LINE OF rt_db,
51 | s_csv like line of it_csv.
52 |
53 | * It didn't have to be, but we'll use ZABAK_DB structure since it already exists
54 | LOOP AT it_csv into s_csv.
55 | s_csv = |000,{ s_csv }|. " Add MANDT to comply with the ZABAK_DB structure
56 | go_converter->csv_to_structure( EXPORTING i_data = s_csv
57 | IMPORTING e_s_data = s_db ).
58 | INSERT s_db INTO TABLE rt_db.
59 | ENDLOOP.
60 |
61 | ENDMETHOD. "#EC CI_VALPAR
62 |
63 |
64 | METHOD split_into_lines.
65 | SPLIT i_csv AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_csv IN CHARACTER MODE.
66 | ENDMETHOD.
67 |
68 |
69 | METHOD zif_abak_format~convert.
70 |
71 | DATA: t_db TYPE zabak_db_t,
72 | o_k_table TYPE REF TO zcl_abak_k_table.
73 |
74 | LOG-POINT ID zabak SUBKEY 'format_csv.convert' FIELDS i_data.
75 |
76 | t_db = convert_csv_2_db( split_into_lines( i_data ) ).
77 | CREATE OBJECT o_k_table.
78 | o_k_table->add_db_t( t_db ).
79 | rt_k = o_k_table->get_k_t( ).
80 |
81 | ENDMETHOD.
82 |
83 |
84 | METHOD ZIF_ABAK_FORMAT~GET_TYPE.
85 | r_format_type = zif_abak_consts=>format_type-csv.
86 | ENDMETHOD.
87 | ENDCLASS.
88 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_csv.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_format_csv.
11 |
12 | METHODS: setup.
13 | METHODS: convert FOR TESTING RAISING zcx_abak.
14 | METHODS: get_type FOR TESTING RAISING zcx_abak.
15 | ENDCLASS. "lcl_Unittest
16 |
17 |
18 | CLASS lcl_unittest IMPLEMENTATION.
19 |
20 | METHOD setup.
21 | CREATE OBJECT f_cut.
22 | ENDMETHOD.
23 |
24 | METHOD convert.
25 | DATA: t_k TYPE zabak_k_t.
26 | FIELD-SYMBOLS: LIKE LINE OF t_k.
27 |
28 | t_k = f_cut->zif_abak_format~convert(
29 | i_data = |GLOBAL, BUKRS, , , I, EQ, 1234{ cl_abap_char_utilities=>cr_lf }GLOBAL, WAERS, , 1, I, EQ, EUR{ cl_abap_char_utilities=>cr_lf }GLOBAL, WAERS, , 2, I, EQ, USD| ).
30 |
31 | cl_abap_unit_assert=>assert_equals( exp = 2
32 | act = lines( t_k ) ).
33 |
34 | READ TABLE t_k ASSIGNING INDEX 2.
35 |
36 | cl_abap_unit_assert=>assert_equals( exp = 2
37 | act = lines( -t_kv ) ).
38 | ENDMETHOD.
39 |
40 | METHOD get_type.
41 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>format_type-csv
42 | act = f_cut->zif_abak_format~get_type( ) ).
43 | ENDMETHOD.
44 |
45 | ENDCLASS. "lcl_Unittest
46 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_csv.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FORMAT_CSV
7 | E
8 | abaK Format CSV
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_FORMAT_CSV
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 | ZCL_ABAK_FORMAT_CSV
25 | GO_CONVERTER
26 | E
27 | CSV Converter
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_factory.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_FORMAT_FACTORY definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | methods GET_INSTANCE
9 | importing
10 | !I_FORMAT_TYPE type ZABAK_FORMAT_TYPE
11 | returning
12 | value(RO_INSTANCE) type ref to ZIF_ABAK_FORMAT
13 | raising
14 | ZCX_ABAK .
15 | PROTECTED SECTION.
16 | private section.
17 | ENDCLASS.
18 |
19 |
20 |
21 | CLASS ZCL_ABAK_FORMAT_FACTORY IMPLEMENTATION.
22 |
23 |
24 | METHOD get_instance.
25 |
26 | CASE i_format_type.
27 |
28 | WHEN zif_abak_consts=>format_type-xml.
29 | CREATE OBJECT ro_instance TYPE zcl_abak_format_xml.
30 |
31 | WHEN zif_abak_consts=>format_type-json.
32 | CREATE OBJECT ro_instance TYPE zcl_abak_format_json.
33 |
34 | WHEN zif_abak_consts=>format_type-csv.
35 | CREATE OBJECT ro_instance TYPE zcl_abak_format_csv.
36 |
37 | WHEN zif_abak_consts=>format_type-internal.
38 | CREATE OBJECT ro_instance TYPE zcl_abak_format_internal.
39 |
40 | WHEN OTHERS.
41 | RAISE EXCEPTION TYPE zcx_abak
42 | EXPORTING
43 | textid = zcx_abak=>invalid_parameters.
44 |
45 | ENDCASE.
46 |
47 | ENDMETHOD.
48 | ENDCLASS.
49 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_factory.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_format_factory,
11 | o_format TYPE REF TO zif_abak_format.
12 |
13 | METHODS: setup.
14 | METHODS: check_class
15 | IMPORTING
16 | i_classname TYPE string.
17 | METHODS: csv FOR TESTING RAISING zcx_abak.
18 | METHODS: internal FOR TESTING RAISING zcx_abak.
19 | METHODS: json FOR TESTING RAISING zcx_abak.
20 | METHODS: xml FOR TESTING RAISING zcx_abak.
21 | METHODS: invalid FOR TESTING.
22 | ENDCLASS. "lcl_Unittest
23 |
24 |
25 | CLASS lcl_unittest IMPLEMENTATION.
26 |
27 | METHOD setup.
28 | CREATE OBJECT f_cut.
29 | ENDMETHOD.
30 |
31 | METHOD check_class.
32 | cl_abap_unit_assert=>assert_equals( exp = i_classname
33 | act = cl_abap_objectdescr=>describe_by_object_ref( o_format )->get_relative_name( ) ).
34 | endmethod.
35 |
36 | method csv.
37 | o_format = f_cut->get_instance( zif_abak_consts=>format_type-csv ).
38 | check_class( 'ZCL_ABAK_FORMAT_CSV' ).
39 | endmethod.
40 |
41 | method internal.
42 | o_format = f_cut->get_instance( zif_abak_consts=>format_type-internal ).
43 | check_class( 'ZCL_ABAK_FORMAT_INTERNAL' ).
44 | endmethod.
45 |
46 | method json.
47 | o_format = f_cut->get_instance( zif_abak_consts=>format_type-json ).
48 | check_class( 'ZCL_ABAK_FORMAT_JSON' ).
49 | endmethod.
50 |
51 | method xml.
52 | o_format = f_cut->get_instance( zif_abak_consts=>format_type-xml ).
53 | check_class( 'ZCL_ABAK_FORMAT_XML' ).
54 | endmethod.
55 |
56 | METHOD invalid.
57 | TRY.
58 | o_format = f_cut->get_instance( i_format_type = 'INVALID' ).
59 | cl_abap_unit_assert=>fail( msg = 'Invalid content type' ).
60 | CATCH zcx_abak.
61 | RETURN.
62 | ENDTRY.
63 | ENDMETHOD.
64 | ENDCLASS.
65 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FORMAT_FACTORY
7 | E
8 | abaK Format Factory
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_internal.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_FORMAT_INTERNAL definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces ZIF_ABAK_FORMAT .
9 | protected section.
10 | private section.
11 | ENDCLASS.
12 |
13 |
14 |
15 | CLASS ZCL_ABAK_FORMAT_INTERNAL IMPLEMENTATION.
16 |
17 |
18 | METHOD zif_abak_format~convert.
19 | * I_DATA is expected to contain a serialized internal table of type ZABAK_K_T
20 |
21 | CALL TRANSFORMATION zabak_copy
22 | SOURCE XML i_data
23 | RESULT root = rt_k.
24 |
25 | ENDMETHOD.
26 |
27 |
28 | METHOD zif_abak_format~get_type.
29 | r_format_type = zif_abak_consts=>format_type-internal.
30 | ENDMETHOD.
31 | ENDCLASS.
32 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_internal.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FORMAT_INTERNAL
7 | E
8 | abaK Format Internal
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_json.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_FORMAT_JSON definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces ZIF_ABAK_FORMAT .
9 | protected section.
10 | private section.
11 | ENDCLASS.
12 |
13 |
14 |
15 | CLASS ZCL_ABAK_FORMAT_JSON IMPLEMENTATION.
16 |
17 |
18 | METHOD zif_abak_format~convert.
19 | DATA: o_exp TYPE REF TO cx_st_error,
20 | t_xml_k TYPE zabak_xml_k_t,
21 | o_k_table TYPE REF TO zcl_abak_k_table.
22 |
23 | TRY.
24 | CALL TRANSFORMATION zabak_format_json
25 | SOURCE XML i_data
26 | RESULT constants = t_xml_k.
27 |
28 | CREATE OBJECT o_k_table.
29 | o_k_table->add_xml_k_t( t_xml_k ).
30 | rt_k = o_k_table->get_k_t( ).
31 |
32 | CATCH cx_st_error INTO o_exp.
33 | RAISE EXCEPTION TYPE zcx_abak
34 | EXPORTING
35 | previous = o_exp.
36 | ENDTRY.
37 |
38 | ENDMETHOD.
39 |
40 |
41 | METHOD ZIF_ABAK_FORMAT~GET_TYPE.
42 | r_format_type = zif_abak_consts=>format_type-json.
43 | ENDMETHOD.
44 | ENDCLASS.
45 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_json.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_format_json,
11 | t_k TYPE zabak_k_t.
12 |
13 | METHODS: setup RAISING zcx_abak.
14 | METHODS: get_inline_value FOR TESTING RAISING zcx_abak.
15 | METHODS: get_value FOR TESTING RAISING zcx_abak.
16 | METHODS: get_range_line FOR TESTING RAISING zcx_abak.
17 | METHODS: get_type FOR TESTING RAISING zcx_abak.
18 | ENDCLASS. "lcl_Unittest
19 |
20 |
21 | CLASS lcl_unittest IMPLEMENTATION.
22 |
23 | METHOD setup.
24 | CREATE OBJECT f_cut.
25 | ENDMETHOD.
26 |
27 | METHOD get_inline_value.
28 | FIELD-SYMBOLS: LIKE LINE OF t_k,
29 | LIKE LINE OF -t_kv.
30 |
31 | t_k = f_cut->zif_abak_format~convert( i_data = `{ "abak": {"k": [{ "scope": "a", "fieldname": "bukrs", "value": "4321" }]}}` ).
32 |
33 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
34 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
35 |
36 | cl_abap_unit_assert=>assert_equals( exp = '4321'
37 | act = -low ).
38 |
39 | ENDMETHOD.
40 |
41 | METHOD get_value.
42 |
43 | FIELD-SYMBOLS: LIKE LINE OF t_k,
44 | LIKE LINE OF -t_kv.
45 |
46 | t_k = f_cut->zif_abak_format~convert( i_data = `{ "abak": {"k": [{ "scope": "a", "fieldname": "bukrs", "v": [{"low": "1234"}] }]}}` ).
47 |
48 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
49 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
50 |
51 | cl_abap_unit_assert=>assert_equals( exp = '1234'
52 | act = -low ).
53 |
54 | ENDMETHOD.
55 |
56 | METHOD get_range_line.
57 |
58 | FIELD-SYMBOLS: LIKE LINE OF t_k,
59 | LIKE LINE OF -t_kv.
60 |
61 | t_k = f_cut->zif_abak_format~convert( i_data = `{ "abak": {"k": [{ "scope": "a", "fieldname": "bukrs", "v": [{"sign": "I", "option": "BT", "low": "1234", "high": "9999"}] }]}}` ).
62 |
63 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
64 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
65 |
66 | cl_abap_unit_assert=>assert_equals( exp = '1234'
67 | act = -low ).
68 | cl_abap_unit_assert=>assert_equals( exp = '9999'
69 | act = -high ).
70 | cl_abap_unit_assert=>assert_equals( exp = 'I'
71 | act = -sign ).
72 | cl_abap_unit_assert=>assert_equals( exp = 'BT'
73 | act = -option ).
74 |
75 | ENDMETHOD.
76 |
77 | METHOD get_type.
78 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>format_type-json
79 | act = f_cut->zif_abak_format~get_type( ) ).
80 | ENDMETHOD.
81 |
82 | ENDCLASS. "lcl_Unittest
83 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_json.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FORMAT_JSON
7 | E
8 | abaK Format JSON
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_xml.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_FORMAT_XML definition
2 | public
3 | final
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces ZIF_ABAK_FORMAT .
9 | protected section.
10 | private section.
11 | ENDCLASS.
12 |
13 |
14 |
15 | CLASS ZCL_ABAK_FORMAT_XML IMPLEMENTATION.
16 |
17 |
18 | METHOD zif_abak_format~convert.
19 | DATA: o_exp TYPE REF TO cx_st_error,
20 | t_xml_k TYPE zabak_xml_k_t,
21 | o_k_table TYPE REF TO zcl_abak_k_table.
22 |
23 | TRY.
24 | CALL TRANSFORMATION zabak_format_xml
25 | SOURCE XML i_data
26 | RESULT constants = t_xml_k.
27 |
28 | CREATE OBJECT o_k_table.
29 | o_k_table->add_xml_k_t( t_xml_k ).
30 | rt_k = o_k_table->get_k_t( ).
31 |
32 | CATCH cx_st_error INTO o_exp.
33 | RAISE EXCEPTION TYPE zcx_abak
34 | EXPORTING
35 | previous = o_exp.
36 | ENDTRY.
37 |
38 | ENDMETHOD.
39 |
40 |
41 | METHOD ZIF_ABAK_FORMAT~GET_TYPE.
42 | r_format_type = zif_abak_consts=>format_type-xml.
43 | ENDMETHOD.
44 | ENDCLASS.
45 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_xml.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_format_xml,
11 | t_k TYPE zabak_k_t.
12 |
13 | METHODS: setup RAISING zcx_abak.
14 | METHODS: get_inline_value FOR TESTING RAISING zcx_abak.
15 | METHODS: get_value FOR TESTING RAISING zcx_abak.
16 | METHODS: get_range_line FOR TESTING RAISING zcx_abak.
17 | METHODS: get_type FOR TESTING RAISING zcx_abak.
18 | ENDCLASS. "lcl_Unittest
19 |
20 |
21 | CLASS lcl_unittest IMPLEMENTATION.
22 |
23 | METHOD setup.
24 | CREATE OBJECT f_cut.
25 | ENDMETHOD.
26 |
27 | METHOD get_inline_value.
28 |
29 | FIELD-SYMBOLS: LIKE LINE OF t_k,
30 | LIKE LINE OF -t_kv.
31 |
32 | t_k = f_cut->zif_abak_format~convert( i_data = || ).
33 |
34 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
35 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
36 |
37 | cl_abap_unit_assert=>assert_equals( exp = '4321'
38 | act = -low ).
39 |
40 | ENDMETHOD.
41 |
42 | METHOD get_value.
43 |
44 | FIELD-SYMBOLS: LIKE LINE OF t_k,
45 | LIKE LINE OF -t_kv.
46 |
47 | t_k = f_cut->zif_abak_format~convert( i_data = || ).
48 |
49 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
50 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
51 |
52 | cl_abap_unit_assert=>assert_equals( exp = '1234'
53 | act = -low ).
54 |
55 | ENDMETHOD.
56 |
57 | METHOD get_range_line.
58 |
59 | FIELD-SYMBOLS: LIKE LINE OF t_k,
60 | LIKE LINE OF -t_kv.
61 |
62 | t_k = f_cut->zif_abak_format~convert( i_data = || ).
63 |
64 | READ TABLE t_k ASSIGNING INDEX 1. "#EC CI_SUBRC
65 | READ TABLE -t_kv ASSIGNING INDEX 1. "#EC CI_SUBRC
66 |
67 | cl_abap_unit_assert=>assert_equals( exp = '1234'
68 | act = -low ).
69 | cl_abap_unit_assert=>assert_equals( exp = '9999'
70 | act = -high ).
71 | cl_abap_unit_assert=>assert_equals( exp = 'I'
72 | act = -sign ).
73 | cl_abap_unit_assert=>assert_equals( exp = 'BT'
74 | act = -option ).
75 | ENDMETHOD.
76 |
77 | METHOD get_type.
78 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>format_type-xml
79 | act = f_cut->zif_abak_format~get_type( ) ).
80 | ENDMETHOD.
81 |
82 | ENDCLASS. "lcl_Unittest
83 |
--------------------------------------------------------------------------------
/src/formats/zcl_abak_format_xml.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_FORMAT_XML
7 | E
8 | abaK Format XML
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | abaK Generic constants tool
7 | X
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/sources/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | abaK Sources
7 | X
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/sources/zabak_sources_api.pinf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | ZABAK_SOURCES_API
8 | abaK Sources API
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_database.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_source_database.
11 |
12 | METHODS: check_table_invalid FOR TESTING.
13 | METHODS: get_type FOR TESTING RAISING zcx_abak.
14 | ENDCLASS. "lcl_Unittest
15 |
16 |
17 | CLASS lcl_unittest IMPLEMENTATION.
18 |
19 | METHOD check_table_invalid.
20 | TRY.
21 | CREATE OBJECT f_cut
22 | EXPORTING
23 | i_tablename = 'INVALID'.
24 |
25 | cl_abap_unit_assert=>fail( msg = 'Table is invalid so exception should have happened' ).
26 |
27 | CATCH zcx_abak.
28 | RETURN.
29 | ENDTRY.
30 | ENDMETHOD.
31 |
32 | METHOD get_type.
33 | CREATE OBJECT f_cut
34 | EXPORTING
35 | i_tablename = 'ZABAK_DEFAULT'.
36 |
37 | cl_abap_unit_assert=>assert_equals(
38 | exp = zif_abak_consts=>source_type-database
39 | act = f_cut->zif_abak_source~get_type( ) ).
40 | ENDMETHOD.
41 |
42 | ENDCLASS. "lcl_Unittest
43 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_database.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_DATABASE
7 | E
8 | abaK Content database
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_SOURCE_DATABASE
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 | ZCL_ABAK_SOURCE_DATABASE
25 | G_TABLENAME
26 | E
27 | Table Name
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_factory.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO ZCL_ABAK_SOURCE_FACTORY,
11 | o_content TYPE REF TO zif_abak_source.
12 |
13 | METHODS: setup.
14 | METHODS: check_class
15 | IMPORTING
16 | i_classname TYPE string.
17 | METHODS: inline FOR TESTING RAISING zcx_abak.
18 | METHODS: database FOR TESTING RAISING zcx_abak.
19 | METHODS: file FOR TESTING RAISING zcx_abak.
20 | METHODS: rfc FOR TESTING RAISING zcx_abak.
21 | METHODS: standard_text FOR TESTING RAISING zcx_abak.
22 | METHODS: url FOR TESTING RAISING zcx_abak.
23 | METHODS: invalid FOR TESTING.
24 | ENDCLASS. "lcl_Unittest
25 |
26 |
27 | CLASS lcl_unittest IMPLEMENTATION.
28 |
29 | METHOD setup.
30 | CREATE OBJECT f_cut.
31 | ENDMETHOD.
32 |
33 | METHOD check_class.
34 | cl_abap_unit_assert=>assert_equals( exp = i_classname
35 | act = cl_abap_objectdescr=>describe_by_object_ref( o_content )->get_relative_name( ) ).
36 | endmethod.
37 |
38 | method inline.
39 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-inline
40 | i_content = 'dummy' ).
41 | check_class( 'ZCL_ABAK_SOURCE_INLINE' ).
42 | ENDMETHOD.
43 |
44 | METHOD database.
45 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-database
46 | i_content = 'ZABAK_DEFAULT' ).
47 | check_class( 'ZCL_ABAK_SOURCE_DATABASE' ).
48 | ENDMETHOD.
49 |
50 | METHOD file.
51 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-file
52 | i_content = 'dummy' ).
53 | check_class( 'ZCL_ABAK_SOURCE_FILE' ).
54 | ENDMETHOD.
55 |
56 | METHOD rfc.
57 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-rfc
58 | i_content = 'RFCDEST=dummy ID=dummy' ).
59 | check_class( 'ZCL_ABAK_SOURCE_RFC' ).
60 | ENDMETHOD.
61 |
62 | METHOD standard_text.
63 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-standard_text
64 | i_content = 'NAME=dummy' ).
65 |
66 | check_class( 'ZCL_ABAK_SOURCE_SO10' ).
67 | ENDMETHOD.
68 |
69 | METHOD url.
70 | o_content = f_cut->get_instance( i_source_type = zif_abak_consts=>source_type-url
71 | i_content = 'http://abapinho.com/dummy.txt' ).
72 | check_class( 'ZCL_ABAK_SOURCE_URL' ).
73 | ENDMETHOD.
74 |
75 | METHOD invalid.
76 | TRY.
77 | o_content = f_cut->get_instance( i_source_type = 'INVALID'
78 | i_content = 'dummy' ).
79 |
80 | cl_abap_unit_assert=>fail( msg = 'Invalid content type' ).
81 |
82 | CATCH zcx_abak.
83 | RETURN.
84 | ENDTRY.
85 | ENDMETHOD.
86 |
87 | ENDCLASS.
88 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_FACTORY
7 | E
8 | abaK Location Factory
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_file.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_SOURCE_FILE definition
2 | public
3 | inheriting from zcl_abak_source
4 | final
5 | create public .
6 |
7 | public section.
8 |
9 | methods CONSTRUCTOR
10 | importing
11 | !I_FILEPATH type STRING
12 | raising
13 | ZCX_ABAK .
14 |
15 | methods zif_abak_source~GET_TYPE
16 | redefinition .
17 | protected section.
18 |
19 | methods LOAD
20 | redefinition .
21 | private section.
22 |
23 | data G_FILEPATH type STRING .
24 | ENDCLASS.
25 |
26 |
27 |
28 | CLASS ZCL_ABAK_SOURCE_FILE IMPLEMENTATION.
29 |
30 |
31 | METHOD constructor.
32 |
33 | super->constructor( ).
34 |
35 | g_filepath = i_filepath.
36 |
37 | ENDMETHOD.
38 |
39 |
40 | METHOD load.
41 | DATA: o_exp TYPE REF TO cx_root.
42 |
43 | TRY.
44 | LOG-POINT ID zabak SUBKEY 'content_file.load' FIELDS g_filepath.
45 |
46 | OPEN DATASET g_filepath FOR INPUT IN TEXT MODE ENCODING DEFAULT.
47 | IF sy-subrc <> 0.
48 | RAISE EXCEPTION TYPE zcx_abak_source_file
49 | EXPORTING
50 | textid = zcx_abak_source_file=>error_opening_file
51 | filepath = g_filepath.
52 | ENDIF.
53 |
54 | READ DATASET g_filepath INTO r_content.
55 |
56 | CLOSE DATASET g_filepath.
57 |
58 | CATCH cx_sy_file_open
59 | cx_sy_codepage_converter_init
60 | cx_sy_conversion_codepage
61 | cx_sy_file_authority
62 | cx_sy_pipes_not_supported
63 | cx_sy_too_many_files INTO o_exp.
64 | RAISE EXCEPTION TYPE zcx_abak
65 | EXPORTING
66 | previous = o_exp.
67 | ENDTRY.
68 | ENDMETHOD.
69 |
70 |
71 | METHOD zif_abak_source~get_type.
72 | r_type = zif_abak_consts=>source_type-file.
73 | ENDMETHOD.
74 | ENDCLASS.
75 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_file.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO ZCL_ABAK_SOURCE_FILE.
11 |
12 | methods: get_type for testing raising zcx_abak.
13 |
14 | ENDCLASS. "lcl_Unittest
15 |
16 |
17 | CLASS lcl_unittest IMPLEMENTATION.
18 |
19 | METHOD get_type.
20 | CREATE OBJECT f_cut
21 | EXPORTING
22 | i_filepath = '/tmp/some_constants.txt'.
23 |
24 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>source_type-file
25 | act = f_cut->zif_abak_source~get_type( ) ).
26 | ENDMETHOD.
27 |
28 | ENDCLASS.
29 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_file.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_FILE
7 | E
8 | abaK Content from URL
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_SOURCE_FILE
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_inline.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_abak_source_inline DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_abak_source
4 | FINAL
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 |
9 | METHODS constructor
10 | IMPORTING
11 | !i_content TYPE string
12 | RAISING
13 | zcx_abak .
14 |
15 | METHODS zif_abak_source~get_type
16 | REDEFINITION .
17 | PROTECTED SECTION.
18 |
19 | METHODS load
20 | REDEFINITION .
21 | PRIVATE SECTION.
22 |
23 | DATA g_content TYPE string .
24 | ENDCLASS.
25 |
26 |
27 |
28 | CLASS ZCL_ABAK_SOURCE_INLINE IMPLEMENTATION.
29 |
30 |
31 | METHOD constructor.
32 |
33 | super->constructor( ).
34 |
35 | g_content = i_content.
36 |
37 | ENDMETHOD.
38 |
39 |
40 | METHOD load.
41 |
42 | LOG-POINT ID zabak SUBKEY 'content_inline.load' FIELDS g_content.
43 |
44 | r_content = g_content.
45 |
46 | ENDMETHOD.
47 |
48 |
49 | METHOD zif_abak_source~get_type.
50 | r_type = zif_abak_consts=>source_type-inline.
51 | ENDMETHOD.
52 | ENDCLASS.
53 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_inline.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_source_inline.
11 |
12 | METHODS: setup RAISING zcx_abak.
13 | METHODS: read FOR TESTING RAISING zcx_abak.
14 | METHODS: get_type FOR TESTING RAISING zcx_abak.
15 |
16 | ENDCLASS. "lcl_Unittest
17 |
18 |
19 | CLASS lcl_unittest IMPLEMENTATION.
20 |
21 | METHOD setup.
22 | CREATE OBJECT f_cut
23 | EXPORTING
24 | i_content = 'Something'.
25 | ENDMETHOD.
26 |
27 | METHOD read.
28 | cl_abap_unit_assert=>assert_equals( exp = 'Something'
29 | act = f_cut->zif_abak_source~get( ) ).
30 | ENDMETHOD.
31 |
32 | METHOD get_type.
33 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>source_type-inline
34 | act = f_cut->zif_abak_source~get_type( ) ).
35 | ENDMETHOD.
36 |
37 | ENDCLASS.
38 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_inline.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_INLINE
7 | E
8 | abaK Content inline
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_SOURCE_INLINE
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_mime.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_abak_source_mime DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_abak_source
4 | FINAL
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 |
9 | METHODS constructor
10 | IMPORTING
11 | !i_url TYPE string
12 | RAISING
13 | zcx_abak .
14 |
15 | METHODS zif_abak_source~get_type
16 | REDEFINITION .
17 | PROTECTED SECTION.
18 |
19 | METHODS load
20 | REDEFINITION .
21 | PRIVATE SECTION.
22 |
23 | DATA g_url TYPE string .
24 | ENDCLASS.
25 |
26 |
27 |
28 | CLASS ZCL_ABAK_SOURCE_MIME IMPLEMENTATION.
29 |
30 |
31 | METHOD constructor.
32 |
33 | super->constructor( ).
34 |
35 | g_url = i_url.
36 |
37 | ENDMETHOD.
38 |
39 |
40 | METHOD load.
41 | DATA:
42 | o_mime_repository TYPE REF TO if_mr_api,
43 | xcontent TYPE xstring.
44 |
45 | LOG-POINT ID zabak SUBKEY 'content_mime.load' FIELDS g_url.
46 |
47 | o_mime_repository = cl_mime_repository_api=>get_api( ).
48 |
49 | o_mime_repository->get(
50 | EXPORTING
51 | i_url = g_url
52 | IMPORTING
53 | e_content = xcontent
54 | EXCEPTIONS
55 | parameter_missing = 1
56 | error_occured = 2
57 | not_found = 3
58 | permission_failure = 4
59 | OTHERS = 5 ).
60 | IF sy-subrc <> 0.
61 | RAISE EXCEPTION TYPE zcx_abak
62 | EXPORTING
63 | previous_from_syst = abap_true.
64 | ENDIF.
65 |
66 | r_content = cl_bcs_convert=>xstring_to_string( iv_xstr = xcontent
67 | iv_cp = '4210' ). " TODO fixed UTF-8 for PCL Printers
68 |
69 | ENDMETHOD.
70 |
71 |
72 | METHOD zif_abak_source~get_type.
73 | r_type = zif_abak_consts=>source_type-mime.
74 | ENDMETHOD.
75 | ENDCLASS.
76 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_mime.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | **"* use this source file for your ABAP unit test classes
2 | *CLASS lcl_unittest DEFINITION FOR TESTING
3 | * INHERITING FROM zcl_abak_unit_tests
4 | * DURATION SHORT
5 | * RISK LEVEL HARMLESS
6 | * FINAL.
7 | *
8 | * PRIVATE SECTION.
9 | *
10 | * DATA:
11 | * f_cut TYPE REF TO zcl_abak_source_inline.
12 | *
13 | * METHODS: setup RAISING zcx_abak.
14 | * METHODS: read FOR TESTING RAISING zcx_abak.
15 | * methods: get_type for testing raising zcx_abak.
16 | *
17 | *ENDCLASS. "lcl_Unittest
18 | *
19 | *
20 | *CLASS lcl_unittest IMPLEMENTATION.
21 | *
22 | * METHOD setup.
23 | * CREATE OBJECT f_cut
24 | * EXPORTING
25 | * i_content = 'Something'.
26 | * ENDMETHOD.
27 | *
28 | * METHOD read.
29 | * cl_abap_unit_assert=>assert_equals( exp = 'Something'
30 | * act = f_cut->zif_abak_source~get( ) ).
31 | * ENDMETHOD.
32 | *
33 | * METHOD get_type.
34 | * cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>source_type-inline
35 | * act = f_cut->zif_abak_source~get_type( ) ).
36 | * ENDMETHOD.
37 | *
38 | *ENDCLASS.
39 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_mime.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_MIME
7 | E
8 | abaK Content inline
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_SOURCE_MIME
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_rfc.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ABAK_SOURCE_RFC definition
2 | public
3 | inheriting from zcl_abak_source
4 | final
5 | create public .
6 |
7 | public section.
8 | interface ZIF_ABAK_CONSTS load .
9 |
10 | methods CONSTRUCTOR
11 | importing
12 | !I_ID type ZABAK_ID
13 | !I_RFCDEST type RFCDEST
14 | raising
15 | ZCX_ABAK .
16 |
17 | methods ZIF_ABAK_SOURCE~GET_TYPE
18 | redefinition .
19 | protected section.
20 |
21 | methods LOAD
22 | redefinition .
23 | PRIVATE SECTION.
24 |
25 | DATA g_id TYPE zabak_id .
26 | DATA g_rfcdest TYPE rfcdest .
27 | ENDCLASS.
28 |
29 |
30 |
31 | CLASS ZCL_ABAK_SOURCE_RFC IMPLEMENTATION.
32 |
33 |
34 | METHOD constructor.
35 |
36 | IF i_id IS INITIAL.
37 | RAISE EXCEPTION TYPE zcx_abak
38 | EXPORTING
39 | textid = zcx_abak=>invalid_parameters.
40 | ENDIF.
41 |
42 | super->constructor( ).
43 |
44 | g_id = i_id.
45 | g_rfcdest = i_rfcdest.
46 |
47 | ENDMETHOD.
48 |
49 |
50 | METHOD load.
51 |
52 | CALL FUNCTION 'Z_ABAK_ZABAK_RFC_GET'
53 | DESTINATION g_rfcdest
54 | EXPORTING
55 | i_id = g_id
56 | IMPORTING
57 | e_serialized_data = r_content
58 | EXCEPTIONS
59 | error = 1
60 | OTHERS = 2.
61 | IF sy-subrc <> 0.
62 | RAISE EXCEPTION TYPE zcx_abak. " TODO
63 | ENDIF.
64 |
65 |
66 | ENDMETHOD.
67 |
68 |
69 | METHOD zif_abak_source~get_type.
70 | r_type = zif_abak_consts=>source_type-rfc.
71 | ENDMETHOD.
72 | ENDCLASS.
73 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_rfc.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 | DATA:
9 | f_cut TYPE REF TO zcl_abak_source_rfc.
10 |
11 | METHODS: empty_id FOR TESTING.
12 | ENDCLASS. "lcl_Unittest
13 |
14 |
15 | CLASS lcl_unittest IMPLEMENTATION.
16 |
17 | METHOD empty_id.
18 | TRY.
19 | CREATE OBJECT f_cut
20 | EXPORTING
21 | i_id = space
22 | i_rfcdest = space.
23 |
24 | cl_abap_unit_assert=>fail( msg = 'Empty ID should have raised exception' ).
25 |
26 | CATCH zcx_abak.
27 | RETURN.
28 | ENDTRY.
29 | ENDMETHOD.
30 |
31 | ENDCLASS. "lcl_Unittest
32 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_rfc.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_RFC
7 | E
8 | abaK Content RFC
9 | 1
10 | X
11 | X
12 | X
13 | K
14 | X
15 |
16 |
17 |
18 | ZCL_ABAK_SOURCE_RFC
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 | ZCL_ABAK_SOURCE_RFC
25 | G_ID
26 | E
27 | abaK ID
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_so10.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_abak_source_so10 DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_abak_source
4 | FINAL
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 |
9 | METHODS constructor
10 | IMPORTING
11 | !i_name TYPE tdobname
12 | !i_id TYPE tdid
13 | !i_spras TYPE spras
14 | RAISING
15 | zcx_abak .
16 |
17 | METHODS zif_abak_source~get_type
18 | REDEFINITION .
19 | PROTECTED SECTION.
20 |
21 | METHODS load
22 | REDEFINITION .
23 | PRIVATE SECTION.
24 |
25 | DATA g_name TYPE tdobname .
26 | DATA g_id TYPE tdid .
27 | DATA g_spras TYPE spras .
28 | ENDCLASS.
29 |
30 |
31 |
32 | CLASS ZCL_ABAK_SOURCE_SO10 IMPLEMENTATION.
33 |
34 |
35 | METHOD constructor.
36 |
37 | IF i_name IS INITIAL OR i_id IS INITIAL OR i_spras IS INITIAL.
38 | RAISE EXCEPTION TYPE zcx_abak
39 | EXPORTING
40 | textid = zcx_abak=>invalid_parameters.
41 | ENDIF.
42 |
43 | super->constructor( ).
44 |
45 | g_name = i_name.
46 | g_id = i_id.
47 | g_spras = i_spras.
48 |
49 | ENDMETHOD.
50 |
51 |
52 | METHOD load.
53 |
54 | DATA: t_line TYPE STANDARD TABLE OF tline.
55 |
56 | FIELD-SYMBOLS: LIKE LINE OF t_line.
57 |
58 | LOG-POINT ID zabak SUBKEY 'content_so10.load' FIELDS g_id g_spras g_name.
59 |
60 | CALL FUNCTION 'READ_TEXT'
61 | EXPORTING
62 | id = g_id
63 | language = g_spras
64 | name = g_name
65 | object = 'TEXT'
66 | TABLES
67 | lines = t_line
68 | EXCEPTIONS
69 | id = 1
70 | language = 2
71 | name = 3
72 | not_found = 4
73 | object = 5
74 | reference_check = 6
75 | wrong_access_to_archive = 7
76 | OTHERS = 8.
77 | IF sy-subrc <> 0.
78 | RAISE EXCEPTION TYPE zcx_abak
79 | EXPORTING
80 | previous_from_syst = abap_true.
81 | ENDIF.
82 |
83 | LOOP AT t_line ASSIGNING .
84 | IF sy-tabix = 1.
85 | r_content = .
86 | ELSE.
87 | r_content = |{ r_content }\n{ -tdline }|.
88 | ENDIF.
89 | ENDLOOP.
90 |
91 | SHIFT r_content LEFT DELETING LEADING space.
92 |
93 | ENDMETHOD.
94 |
95 |
96 | METHOD zif_abak_source~get_type.
97 | r_type = zif_abak_consts=>source_type-standard_text.
98 | ENDMETHOD.
99 | ENDCLASS.
100 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_so10.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_SO10
7 | E
8 | abaK Raw text from URL
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_SOURCE_SO10
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_url.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_unittest DEFINITION FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS
5 | FINAL.
6 |
7 | PRIVATE SECTION.
8 |
9 | DATA:
10 | f_cut TYPE REF TO zcl_abak_source_url.
11 |
12 | METHODS: invalid_url FOR TESTING.
13 | METHODS: get_type FOR TESTING RAISING zcx_abak.
14 | ENDCLASS. "lcl_Unittest
15 |
16 |
17 | CLASS lcl_unittest IMPLEMENTATION.
18 |
19 | METHOD get_type.
20 | CREATE OBJECT f_cut
21 | EXPORTING
22 | i_url = 'https://somewhere.com/constants.txt'.
23 | cl_abap_unit_assert=>assert_equals( exp = zif_abak_consts=>source_type-url
24 | act = f_cut->zif_abak_source~get_type( ) ).
25 | ENDMETHOD.
26 |
27 | METHOD invalid_url.
28 | TRY.
29 | CREATE OBJECT f_cut
30 | EXPORTING
31 | i_url = 'xxx://somewhere.com/constants.txt'.
32 | cl_abap_unit_assert=>fail( msg = 'Invalid url not detected' ).
33 | CATCH zcx_abak.
34 | RETURN.
35 | ENDTRY.
36 |
37 | TRY.
38 | CREATE OBJECT f_cut
39 | EXPORTING
40 | i_url = 'http://'.
41 | cl_abap_unit_assert=>fail( msg = 'Invalid url not detected' ).
42 | CATCH zcx_abak.
43 | RETURN.
44 | ENDTRY.
45 |
46 | TRY.
47 | CREATE OBJECT f_cut
48 | EXPORTING
49 | i_url = 'http://.com/test.txt'.
50 | cl_abap_unit_assert=>fail( msg = 'Invalid url not detected' ).
51 | CATCH zcx_abak.
52 | RETURN.
53 | ENDTRY.
54 |
55 | TRY.
56 | CREATE OBJECT f_cut
57 | EXPORTING
58 | i_url = 'http://domain.thisistoolong/test.txt'.
59 | cl_abap_unit_assert=>fail( msg = 'Invalid url not detected' ).
60 | CATCH zcx_abak.
61 | RETURN.
62 | ENDTRY.
63 |
64 | TRY.
65 | CREATE OBJECT f_cut
66 | EXPORTING
67 | i_url = 'http://domain.com/folder\file.txt'.
68 | cl_abap_unit_assert=>fail( msg = 'Invalid url not detected' ).
69 | CATCH zcx_abak.
70 | RETURN.
71 | ENDTRY.
72 |
73 | ENDMETHOD.
74 |
75 | ENDCLASS.
76 |
--------------------------------------------------------------------------------
/src/sources/zcl_abak_source_url.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_SOURCE_URL
7 | E
8 | abaK Content from URL
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCL_ABAK_SOURCE_URL
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_database.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK_SOURCE_DATABASE definition
2 | public
3 | inheriting from ZCX_ABAK
4 | final
5 | create public .
6 |
7 | public section.
8 |
9 | constants:
10 | begin of INVALID_TABLE_FORMAT,
11 | msgid type symsgid value 'ZABAK',
12 | msgno type symsgno value '007',
13 | attr1 type scx_attrname value 'TABLENAME',
14 | attr2 type scx_attrname value '',
15 | attr3 type scx_attrname value '',
16 | attr4 type scx_attrname value '',
17 | end of INVALID_TABLE_FORMAT .
18 | data TABLENAME type TABNAME .
19 |
20 | methods CONSTRUCTOR
21 | importing
22 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
23 | !PREVIOUS like PREVIOUS optional
24 | !PREVIOUS_FROM_SYST type FLAG optional
25 | !TABLENAME type TABNAME optional .
26 | protected section.
27 | private section.
28 | ENDCLASS.
29 |
30 |
31 |
32 | CLASS ZCX_ABAK_SOURCE_DATABASE IMPLEMENTATION.
33 |
34 |
35 | method CONSTRUCTOR ##ADT_SUPPRESS_GENERATION.
36 | CALL METHOD SUPER->CONSTRUCTOR
37 | EXPORTING
38 | PREVIOUS = PREVIOUS
39 | PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST
40 | .
41 | me->TABLENAME = TABLENAME .
42 | clear me->textid.
43 | if textid is initial.
44 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
45 | else.
46 | IF_T100_MESSAGE~T100KEY = TEXTID.
47 | endif.
48 | endmethod.
49 | ENDCLASS.
50 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_database.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_SOURCE_DATABASE
7 | E
8 | abaK Source database exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | ZCX_ABAK_SOURCE_DATABASE
18 | CONSTRUCTOR
19 | E
20 | CONSTRUCTOR
21 |
22 |
23 | ZCX_ABAK_SOURCE_DATABASE
24 | TABLENAME
25 | E
26 | Table Name
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_file.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK_SOURCE_FILE definition
2 | public
3 | inheriting from ZCX_ABAK
4 | create public .
5 |
6 | public section.
7 |
8 | constants:
9 | begin of ERROR_OPENING_FILE,
10 | msgid type symsgid value 'ZABAK',
11 | msgno type symsgno value '001',
12 | attr1 type scx_attrname value 'FILEPATH',
13 | attr2 type scx_attrname value '',
14 | attr3 type scx_attrname value '',
15 | attr4 type scx_attrname value '',
16 | end of ERROR_OPENING_FILE .
17 | data FILEPATH type STRING .
18 |
19 | methods CONSTRUCTOR
20 | importing
21 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
22 | !PREVIOUS like PREVIOUS optional
23 | !PREVIOUS_FROM_SYST type FLAG optional
24 | !FILEPATH type STRING optional .
25 | protected section.
26 | private section.
27 | ENDCLASS.
28 |
29 |
30 |
31 | CLASS ZCX_ABAK_SOURCE_FILE IMPLEMENTATION.
32 |
33 |
34 | method CONSTRUCTOR ##ADT_SUPPRESS_GENERATION.
35 | CALL METHOD SUPER->CONSTRUCTOR
36 | EXPORTING
37 | PREVIOUS = PREVIOUS
38 | PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST
39 | .
40 | me->FILEPATH = FILEPATH .
41 | clear me->textid.
42 | if textid is initial.
43 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
44 | else.
45 | IF_T100_MESSAGE~T100KEY = TEXTID.
46 | endif.
47 | endmethod.
48 | ENDCLASS.
49 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_file.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_SOURCE_FILE
7 | E
8 | abaK Source file exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 | K
15 |
16 |
17 |
18 | ZCX_ABAK_SOURCE_FILE
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_url.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ABAK_SOURCE_URL definition
2 | public
3 | inheriting from ZCX_ABAK
4 | create public .
5 |
6 | public section.
7 |
8 | constants:
9 | begin of HTTP_ERROR,
10 | msgid type symsgid value 'ZABAK',
11 | msgno type symsgno value '010',
12 | attr1 type scx_attrname value 'CODE',
13 | attr2 type scx_attrname value 'REASON',
14 | attr3 type scx_attrname value 'URL',
15 | attr4 type scx_attrname value '',
16 | end of HTTP_ERROR .
17 | data CODE type I .
18 | data REASON type STRING .
19 | data URL type STRING .
20 |
21 | methods CONSTRUCTOR
22 | importing
23 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
24 | !PREVIOUS like PREVIOUS optional
25 | !PREVIOUS_FROM_SYST type FLAG optional
26 | !CODE type I optional
27 | !REASON type STRING optional
28 | !URL type STRING optional .
29 | protected section.
30 | private section.
31 | ENDCLASS.
32 |
33 |
34 |
35 | CLASS ZCX_ABAK_SOURCE_URL IMPLEMENTATION.
36 |
37 |
38 | method CONSTRUCTOR ##ADT_SUPPRESS_GENERATION.
39 | CALL METHOD SUPER->CONSTRUCTOR
40 | EXPORTING
41 | PREVIOUS = PREVIOUS
42 | PREVIOUS_FROM_SYST = PREVIOUS_FROM_SYST
43 | .
44 | me->CODE = CODE .
45 | me->REASON = REASON .
46 | me->URL = URL .
47 | clear me->textid.
48 | if textid is initial.
49 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
50 | else.
51 | IF_T100_MESSAGE~T100KEY = TEXTID.
52 | endif.
53 | endmethod.
54 | ENDCLASS.
55 |
--------------------------------------------------------------------------------
/src/sources/zcx_abak_source_url.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ABAK_SOURCE_URL
7 | E
8 | abaK Source file exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 | K
15 |
16 |
17 |
18 | ZCX_ABAK_SOURCE_URL
19 | CONSTRUCTOR
20 | E
21 | CONSTRUCTOR
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/utils/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | abaK Utils
7 | X
8 |
9 |
10 |
11 | ZABAK_CORE_API
12 | NONE
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/utils/zabak_demo.prog.abap:
--------------------------------------------------------------------------------
1 | REPORT zabak_demo.
2 |
3 | * See https://github.com/abapinho/abaK
4 |
5 | ********************************************************************************
6 | * MIT License
7 | *
8 | * Copyright (c) 2018 Nuno Godinho
9 | *
10 | * Permission is hereby granted, free of charge, to any person obtaining a copy
11 | * of this software and associated documentation files (the "Software"), to deal
12 | * in the Software without restriction, including without limitation the rights
13 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | * copies of the Software, and to permit persons to whom the Software is
15 | * furnished to do so, subject to the following conditions:
16 | *
17 | * The above copyright notice and this permission notice shall be included in all
18 | * copies or substantial portions of the Software.
19 | *
20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | * SOFTWARE.
27 | ********************************************************************************
28 |
29 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-sou.
30 | PARAMETERS p_db RADIOBUTTON GROUP g.
31 | PARAMETERS p_zabak RADIOBUTTON GROUP g.
32 | PARAMETERS p_xml RADIOBUTTON GROUP g.
33 | SELECTION-SCREEN END OF BLOCK b1.
34 |
35 | DATA: go_exp TYPE REF TO zcx_abak,
36 | go_demo TYPE REF TO zcl_abak_demo,
37 | which_demo TYPE string,
38 | txt TYPE string.
39 |
40 | INITIALIZATION.
41 | sy-title = |{ sy-title } (v{ zif_abak_consts=>version })|.
42 |
43 | START-OF-SELECTION.
44 |
45 | CASE abap_true.
46 | WHEN p_db.
47 | which_demo = 'DB'.
48 | WHEN p_zabak.
49 | which_demo = 'ZABAK'.
50 | WHEN p_xml.
51 | which_demo = 'XML'.
52 | ENDCASE.
53 |
54 | TRY.
55 | CREATE OBJECT go_demo
56 | EXPORTING
57 | i_which_demo = which_demo.
58 |
59 | go_demo->get_our_company( ).
60 | SKIP.
61 | go_demo->is_account_type_valid( ).
62 | SKIP.
63 | go_demo->get_customer_for_context( ).
64 | SKIP.
65 | go_demo->is_currency_valid( ).
66 | SKIP.
67 | go_demo->validate_amount( ).
68 |
69 | CATCH zcx_abak INTO go_exp.
70 | txt = go_exp->get_text( ).
71 | WRITE: / 'Error:', txt.
72 | ENDTRY.
73 |
--------------------------------------------------------------------------------
/src/utils/zabak_demo.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEMO
7 | 1
8 | *
9 | K
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | SOU
18 | Select source
19 | 13
20 |
21 | -
22 | R
23 | abaK demo
24 | 9
25 |
26 | -
27 | S
28 | P_DB
29 | Database
30 | 16
31 |
32 | -
33 | S
34 | P_SET
35 | Set (GS03)
36 | 18
37 |
38 | -
39 | S
40 | P_XML
41 | XML
42 | 11
43 |
44 | -
45 | S
46 | P_ZABAK
47 | ZABAK (ID=DEMO: Database)
48 | 33
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/utils/zabak_demo.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEMO
7 | E
8 | TRANSP
9 | X
10 | X
11 | abaK Demo constants table
12 | X
13 | A
14 | 1
15 |
16 |
17 | ZABAK_DEMO
18 | A
19 | 0
20 | APPL0
21 | N
22 |
23 |
24 |
25 | ZABAK_DEMO
26 | .INCLUDE
27 | E
28 | 0001
29 | X
30 | 0
31 | ZABAK_DB_KEY
32 | X
33 | S
34 | abaK Database key
35 | S
36 |
37 |
38 | ZABAK_DEMO
39 | .INCLUDE
40 | E
41 | 0007
42 | 0
43 | ZABAK_DB_FIELDS
44 | S
45 | abaK Database fields
46 | S
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/utils/zabak_usage.prog.abap:
--------------------------------------------------------------------------------
1 | REPORT zabak_usage.
2 |
3 | * See https://github.com/abapinho/abaK
4 |
5 | ********************************************************************************
6 | * MIT License
7 | *
8 | * Copyright (c) 2018 Nuno Godinho
9 | *
10 | * Permission is hereby granted, free of charge, to any person obtaining a copy
11 | * of this software and associated documentation files (the "Software"), to deal
12 | * in the Software without restriction, including without limitation the rights
13 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | * copies of the Software, and to permit persons to whom the Software is
15 | * furnished to do so, subject to the following conditions:
16 | *
17 | * The above copyright notice and this permission notice shall be included in all
18 | * copies or substantial portions of the Software.
19 | *
20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | * SOFTWARE.
27 | ********************************************************************************
28 |
29 | DATA: go_usage TYPE REF TO zcl_abak_usage.
30 |
31 | INITIALIZATION.
32 | PERFORM append_version_to_title.
33 |
34 | START-OF-SELECTION.
35 | CREATE OBJECT go_usage.
36 |
37 | PERFORM list_subclasses.
38 | SKIP.
39 | PERFORM list_zabak.
40 | SKIP.
41 | PERFORM list_where_used.
42 |
43 | FORM append_version_to_title.
44 | sy-title = |{ sy-title } (v{ zif_abak_consts=>version })|.
45 | ENDFORM.
46 |
47 | FORM list_subclasses.
48 | DATA: t_class TYPE seo_class_names,
49 | class LIKE LINE OF t_class.
50 |
51 | WRITE / 'Content classes (implementing ZIF_ABAK_SOURCE):'.
52 | t_class = go_usage->get_subclasses( 'ZIF_ABAK_SOURCE' ).
53 | SORT t_class.
54 | LOOP AT t_class INTO class.
55 | WRITE: /4 class INTENSIFIED OFF.
56 | ENDLOOP.
57 |
58 | SKIP.
59 |
60 | WRITE / 'Format classes (implementing ZIF_ABAK_FORMAT):'.
61 | t_class = go_usage->get_subclasses( 'ZIF_ABAK_FORMAT' ).
62 | SORT t_class.
63 | LOOP AT t_class INTO class.
64 | WRITE: /4 class INTENSIFIED OFF.
65 | ENDLOOP.
66 |
67 | ENDFORM.
68 |
69 | FORM list_where_used.
70 | DATA: t_tadir TYPE tt_tadir,
71 | exp_abak TYPE REF TO zcx_abak,
72 | text TYPE string.
73 |
74 | FIELD-SYMBOLS: LIKE LINE OF t_tadir.
75 |
76 | WRITE : / 'abaK usage (objects using class ZCL_ABAK_FACTORY outside the abaK package):'.
77 | FORMAT INTENSIFIED OFF.
78 | TRY.
79 | t_tadir = go_usage->get_where_used( ).
80 | LOOP AT t_tadir ASSIGNING .
81 | WRITE: /4 -object, -obj_name, -devclass.
82 | ENDLOOP.
83 | IF sy-subrc <> 0.
84 | WRITE: /4 'No objects found'.
85 | ENDIF.
86 | CATCH zcx_abak INTO exp_abak.
87 | text = exp_abak->get_text( ).
88 | WRITE text.
89 | ENDTRY.
90 | FORMAT INTENSIFIED ON.
91 | ENDFORM.
92 |
93 | FORM list_zabak.
94 | DATA: t_zabak TYPE zcl_abak_usage=>ty_zabak_t.
95 | FIELD-SYMBOLS: LIKE LINE OF t_zabak.
96 |
97 | WRITE : / 'ZABAK records:'.
98 | FORMAT INTENSIFIED OFF.
99 | t_zabak = go_usage->get_zabak( ).
100 | LOOP AT t_zabak ASSIGNING .
101 | CLEAR -mandt.
102 | WRITE / .
103 | ENDLOOP.
104 | IF sy-subrc <> 0.
105 | WRITE / 'Empty'.
106 | ENDIF.
107 | FORMAT INTENSIFIED ON.
108 | ENDFORM.
109 |
--------------------------------------------------------------------------------
/src/utils/zabak_usage.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_USAGE
7 | 1
8 | *
9 | K
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | R
17 | abaK Usage
18 | 10
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/utils/zcl_abak_demo.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_DEMO
7 | E
8 | abaK Demo
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 | ZCL_ABAK_DEMO
17 | CONSTRUCTOR
18 | E
19 | CONSTRUCTOR
20 |
21 |
22 | ZCL_ABAK_DEMO
23 | GC_DEMO_TABLENAME
24 | E
25 | Table Name
26 |
27 |
28 | ZCL_ABAK_DEMO
29 | GO_ABAK
30 | E
31 | ABAK Engine interface
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/utils/zcl_abak_usage.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ABAK_USAGE
7 | E
8 | abaK Demo
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/zabak s.tobj.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK
7 | S
8 | X
9 | CUST
10 | 2
11 | 3
12 |
13 |
14 | E
15 | ZABAK
16 | S
17 | abaK Registered constants instances
18 |
19 |
20 |
21 | ZABAK
22 | S
23 | ZABAK
24 | X
25 | X
26 |
27 |
28 |
29 |
30 | ZABAK
31 | &NC&
32 |
33 |
34 | ZABAK
35 | ZABAK_MAINT
36 | $ABAK
37 | 1
38 | 0001
39 | X
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/zabak_api.pinf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | ZABAK_API
8 | abaK API
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/zabak_defaults.tobj.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZABAK_DEFAULT
7 | S
8 | X
9 | APPL
10 | 3
11 |
12 |
13 | E
14 | ZABAK_DEFAULT
15 | S
16 | abaK Default constants table (no transport request)
17 |
18 |
19 |
20 | ZABAK_DEFAULT
21 | S
22 | ZABAK_DEFAULT
23 | X
24 | X
25 |
26 |
27 |
28 |
29 | ZABAK_DEFAULT
30 | &NC&
31 |
32 |
33 | ZABAK_DEFAULT
34 | ZABAK_MAINT
35 | $ABAK
36 | 1
37 | 0002
38 | X
39 | X
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------