├── .abapgit.xml
├── .gitignore
├── LICENSE
├── README.md
├── examples
└── ODIN_simple.xlsx
├── img
├── ODIN_0.PNG
├── ODIN_1.PNG
├── ODIN_2.PNG
├── ODIN_3.PNG
├── ODIN_4.PNG
├── ODIN_5.PNG
├── ODIN_simple.png
├── ODIN_simple0.png
├── ODIN_simple2.png
├── ODIN_simple3.png
├── Screenshot.png
├── Screenshot_Multi.PNG
└── ZODIN_ALIAS.PNG
└── src
├── package.devc.xml
├── zcl_odin_acc.clas.abap
├── zcl_odin_acc.clas.xml
├── zcl_odin_posting.clas.abap
├── zcl_odin_posting.clas.xml
├── zcx_odin.clas.abap
├── zcx_odin.clas.xml
├── zif_odin_mapping.intf.abap
├── zif_odin_mapping.intf.xml
├── zif_odin_posting.intf.abap
├── zif_odin_posting.intf.xml
├── zodin.msag.xml
├── zodin.prog.abap
├── zodin.prog.xml
├── zodin.tran.xml
├── zodin_acc.enho.xml
├── zodin_alias.tabl.xml
├── zodin_alias_name.dtel.xml
├── zodin_extension.enhs.xml
├── zodin_extension.tabl.xml
├── zodin_external.tabl.xml
├── zodin_external_t.ttyp.xml
├── zodin_input_csv.tabl.xml
├── zodin_internal.tabl.xml
├── zodin_internal_t.ttyp.xml
├── zodin_key_value.tabl.xml
├── zodin_key_value_t.ttyp.xml
├── zodin_multifile.prog.abap
├── zodin_multifile.prog.xml
└── zodin_strategy.dtel.xml
/.abapgit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | E
6 | /src/
7 | PREFIX
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | img/
2 | examples/
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 71TECH
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 | :warning: The field name BUTXT for the document header text has recently been changed to the correct identifier BKTXT. If you still want to use BUTXT, use the alias table ZODIN_ALIAS. If you use this field in an extension, you have to adjust your coding (replace BUTXT with BKTXT).
2 |
3 | # Open Document Interface (ODIN)
4 |
5 | ODIN is a flexible, extensible, easy to use, multi-purpose import interface for *SAP FI documents*. See [wiki](https://github.com/71tech/ODIN/wiki) for screenshots and further documentation.
6 |
7 | It is suitable for postings as they can be entered in the dialog transaction fb01, such as incoming and outgoing invoices or G/L account postings.
8 |
9 | It accepts different input formats:
10 |
11 | - Excel
12 | - csv
13 | - REST/JSON (planned)
14 | - SOAP/XML (planned)
15 |
16 | and has a flexible record structure.
17 |
18 | It can be used as a dialog or batch application. In addition, e-mail input processing is planned.
19 |
20 | ## Key features
21 |
22 | - Can be used in frontend or as background job
23 | - Flexible dataset structure
24 | - Suitable for mass processing
25 | - Highly extensible with BAdI enhancements
26 | - Various input interfaces
27 |
28 | ## Prerequisites
29 |
30 | If Excel files are processed, [abap2xlsx](https://github.com/sapmentors/abap2xlsx) must be installed. For processing of csv files, abap2xlsx is not required and doesn't need to be installed.
31 |
32 | ABAP releases older than 7.40 will not work. Release 7.40 might be ok; however it has not been tested. Release 7.50 and later should be fine. S/4 releases should work as well, however test is missing. Feedback at that point is very welcome.
33 |
34 | ## Quick start
35 | Clone the ODIN repo using [abapGit](https://github.com/abapGit/abapGit), create package ZODIN (language = EN) first. In case of troubles with the installation open an issue.
36 |
37 | You can utilize this [simple Excel template](https://github.com/71tech/ODIN/blob/main/examples/ODIN_simple.xlsx) for your first postings. Of course, some IDs such as company code, g/l account or vendor number need to be adjusted to your environment. Go to transaction ZODIN, select the local file, hit "Execute" and an ALV Grid List with your posting data should appear. If the status says "READY" and everything looks fine hit "Post" and a FI document will be created. Double click on a row to jump to transaction fb03.
38 |
39 | The tool is also explained in [this video on youtube](https://www.youtube.com/watch?v=TOGsroiQpGY), mainly from the user’s point of view
40 |
41 | ## Authorization IMPORTANT
42 | ODIN uses BAPI BAPI_ACC_DOCUMENT_POST for posting. *Note that this FM doesn't perform any authority checks and therefore also ODIN comes without checking of authority for postings*. Custom authority checks can be implemented for instance in the extension BADI_ACC_DOCUMENT (see SAP note [1748416](https://launchpad.support.sap.com/#/notes/1748416) on this matter).
43 |
44 | Besides ODIN requires authorization for file handling, varying whether files are loaded from local client or server. We recommend checking with transaction stauthtrace (or st01) if necessary.
45 |
46 | Tolerance groups (transaction oba4) are not checked.
47 |
48 | ## Available fields
49 | Many common fields are available and alias names can be used, see [wiki](https://github.com/71tech/ODIN/wiki/Available-fields) for details. If something is missing you can open an issue or make a [contribution](#contribution).
50 |
51 | :warning: The field name BUTXT for the document header text has been changed to the correct identifier BKTXT. If you still want to use BUTXT, use the alias table ZODIN_ALIAS.
52 |
53 | ## Dataset structure
54 |
55 | At the moment the interface can process Excel and csv files, further input options are planned.
56 |
57 | For Excel and csv the following applies:
58 |
59 | - The first row must contain the column names as under [Available fields](#available-fields) (alias identifiers are not yet available, but planned)
60 | - The order of the columns is arbitrary
61 | - From row two on, the user data follows, which must be arranged in the same way as in the first row
62 | - One FI document line item corresponds to one row in the input data. Several rows are combined into one document via the COUNTER field
63 | - There is no separate line for header fields from table bkpf, such as BKTXT, instead they are to be repeated redundantly in each row
64 |
65 | ### Example (csv)
66 | ```
67 | COUNTER;STRATEGY;BUKRS;BKTXT;XBLNR;BLDAT;BUDAT;BLART;SGTXT;LIFNR;KUNNR;HKONT;WRBTR_S;WRBTR_H;WAERS;MWSKZ;CUSTOM1
68 | 1;MY_OPTIONAL_STRATEGY;1234;Example for incoming invoice;INVOICE-001;26.03.2020;26.03.2020;KR;Text position;;;154200;119,00;;EUR;V2;Some custom value
69 | 1;MY_OPTIONAL_STRATEGY;1234;Example for incoming invoice;INVOICE-001;26.03.2020;26.03.2020;KR;Text position;802236;;;;119,00;EUR;V2;Some custom value
70 | 2;MY_OPTIONAL_STRATEGY;1234;Another example;INVOICE-002;27.03.2020;26.03.2020;KR;Text position;;;154200;;59,50;EUR;V2;Another custom value
71 | 2;MY_OPTIONAL_STRATEGY;1234;Another example;INVOICE-002;27.03.2020;26.03.2020;KR;Text position;;;154200;;59,50;EUR;V2;Another custom value
72 | 2;MY_OPTIONAL_STRATEGY;1234;Another example;INVOICE-002;27.03.2020;26.03.2020;KR;Text position;802236;;;119,00;;EUR;V2;Another custom value
73 | ```
74 | ## Import program
75 |
76 | Use sa38 > ZODIN or Transaction ZODIN, see [wiki](https://github.com/71tech/ODIN/wiki/ZODIN).
77 |
78 | ## Server side processing of multiple files
79 |
80 | Use sa38 > ZODIN\_MULTIFILE, see [wiki](https://github.com/71tech/ODIN/wiki/ZODIN_MULTIFILE).
81 |
82 | ## BAdI reference (extensions)
83 |
84 | See [wiki](https://github.com/71tech/ODIN/wiki/BAdI-Reference-(Extensions)).
85 |
86 | ## Contribution
87 |
88 | Your [contribution](https://docs.abapgit.org/guide-contributing.html) is very welcome!
89 |
90 | Suggestions: REST/JSON Interface, SOAP/XML Interface, add fields, enable CPDs, Interface for DATEV format.
91 |
92 | ## Feedback
93 |
94 | Please open an issue for comments, suggestions, questions etc.
95 |
96 | ## Acknowledgements
97 |
98 | This project is kindly sponsored by
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/examples/ODIN_simple.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/examples/ODIN_simple.xlsx
--------------------------------------------------------------------------------
/img/ODIN_0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_0.PNG
--------------------------------------------------------------------------------
/img/ODIN_1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_1.PNG
--------------------------------------------------------------------------------
/img/ODIN_2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_2.PNG
--------------------------------------------------------------------------------
/img/ODIN_3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_3.PNG
--------------------------------------------------------------------------------
/img/ODIN_4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_4.PNG
--------------------------------------------------------------------------------
/img/ODIN_5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_5.PNG
--------------------------------------------------------------------------------
/img/ODIN_simple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_simple.png
--------------------------------------------------------------------------------
/img/ODIN_simple0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_simple0.png
--------------------------------------------------------------------------------
/img/ODIN_simple2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_simple2.png
--------------------------------------------------------------------------------
/img/ODIN_simple3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ODIN_simple3.png
--------------------------------------------------------------------------------
/img/Screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/Screenshot.png
--------------------------------------------------------------------------------
/img/Screenshot_Multi.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/Screenshot_Multi.PNG
--------------------------------------------------------------------------------
/img/ZODIN_ALIAS.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/71tech/ODIN/c4047da6b5b8523aa96108cb849316d415725cfc/img/ZODIN_ALIAS.PNG
--------------------------------------------------------------------------------
/src/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Open Document Interface
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/zcl_odin_acc.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ODIN_ACC definition
2 | public
3 | final
4 | create public .
5 |
6 | *"* public components of class ZCL_ODIN_ACC
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | interfaces IF_BADI_INTERFACE .
11 | interfaces IF_EX_ACC_DOCUMENT .
12 | protected section.
13 | *"* protected components of class ZCL_ODIN_ACC
14 | *"* do not include other source files here!!!
15 | private section.
16 | *"* private components of class ZCL_ODIN_ACC
17 | *"* do not include other source files here!!!
18 | ENDCLASS.
19 |
20 |
21 |
22 | CLASS ZCL_ODIN_ACC IMPLEMENTATION.
23 |
24 |
25 | METHOD if_ex_acc_document~change .
26 |
27 | DATA: wa_extension TYPE bapiparex,
28 | ext_value(960) TYPE c,
29 | wa_accit TYPE accit,
30 | l_ref TYPE REF TO data,
31 | l_rcl_abap_structdescr TYPE REF TO cl_abap_structdescr.
32 |
33 | FIELD-SYMBOLS: TYPE any,
34 | TYPE any.
35 |
36 | LOOP AT c_extension2 INTO wa_extension
37 | WHERE structure = zcl_odin_posting=>odin_extension_structure.
38 | CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
39 | wa_extension-valuepart3 wa_extension-valuepart4
40 | INTO ext_value.
41 | CLEAR l_ref.
42 | CREATE DATA l_ref TYPE (wa_extension-structure).
43 | ASSIGN l_ref->* TO .
44 | MOVE ext_value TO .
45 | ASSIGN COMPONENT 'POSNR' OF STRUCTURE TO .
46 | READ TABLE c_accit WITH KEY posnr = INTO wa_accit.
47 | IF sy-subrc IS INITIAL.
48 | DATA(tabix) = sy-tabix.
49 | * MOVE-CORRESPONDING TO wa_accit. "No simple MOVE-CORRESPONDING - ignore initials!
50 | l_rcl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data( ).
51 | LOOP AT l_rcl_abap_structdescr->components ASSIGNING FIELD-SYMBOL().
52 | ASSIGN COMPONENT -name OF STRUCTURE wa_accit TO FIELD-SYMBOL().
53 | IF sy-subrc = 0.
54 | ASSIGN COMPONENT -name OF STRUCTURE TO FIELD-SYMBOL().
55 | ASSERT sy-subrc = 0.
56 | IF IS NOT INITIAL.
57 | = .
58 | ENDIF.
59 | ENDIF.
60 | ENDLOOP.
61 | MODIFY c_accit FROM wa_accit INDEX tabix.
62 | ENDIF.
63 | ENDLOOP.
64 |
65 | ENDMETHOD. "IF_EX_ACC_DOCUMENT~CHANGE
66 |
67 |
68 | method IF_EX_ACC_DOCUMENT~FILL_ACCIT.
69 | endmethod.
70 | ENDCLASS.
71 |
--------------------------------------------------------------------------------
/src/zcl_odin_acc.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ODIN_ACC
7 | E
8 | Example Implementation for BAdI Definition ACC_DOCUMENT
9 | 1
10 | X
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/zcl_odin_posting.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCL_ODIN_POSTING definition
2 | public
3 | create public .
4 |
5 | public section.
6 |
7 | types:
8 | type_component_tab TYPE TABLE OF string .
9 |
10 | data POSTED type ABAP_BOOL read-only .
11 | data PATH_LOCAL type LOCALFILE read-only .
12 | data STRATEGY type STRING read-only .
13 | data EXTERNAL type ZODIN_EXTERNAL_T read-only .
14 | data INTERNAL type ZODIN_INTERNAL_T read-only .
15 | data ALV type ref to CL_SALV_TABLE read-only .
16 | data SIMULATION type ABAP_BOOL read-only .
17 | data ACTIVE_COMPONENTS type TYPE_COMPONENT_TAB read-only .
18 | constants:
19 | BEGIN OF state,
20 | "For now let's not use unicode symbols with respect to non-unicode systems
21 | * ok VALUE '✓',
22 | * ready VALUE '❓',
23 | * error VALUE '✗',
24 | ok TYPE string VALUE 'OK',
25 | ready TYPE string VALUE 'READY',
26 | error TYPE string VALUE 'ERROR',
27 | unknown TYPE string VALUE 'UNKNOWN',
28 | END OF state .
29 | data HEX_FILE type XSTRING read-only .
30 | constants ABAP2XLSX type STRING value 'abap2xlsx' ##NO_TEXT.
31 | constants CSV type STRING value 'csv' ##NO_TEXT.
32 | data INPUT_MODE type STRING read-only .
33 | data CSV_SEPARATOR type CHAR1 read-only .
34 | data CSV_DELIMITER type CHAR1 read-only .
35 | data CSV_DECIMAL_SEPARATOR type CHAR1 read-only .
36 | data CSV_THOUSANDS_SEPARATOR type CHAR1 read-only .
37 | data PATH_SERVER type STRING read-only .
38 | data PATH_SERVER_BACKUP type STRING read-only .
39 | constants ODIN_EXTENSION_STRUCTURE type STRING value 'ZODIN_EXTENSION' ##NO_TEXT.
40 |
41 | methods ON_USER_COMMAND
42 | for event ADDED_FUNCTION of CL_SALV_EVENTS_TABLE
43 | importing
44 | !E_SALV_FUNCTION .
45 | class-methods HAS_DATE_TYPE
46 | importing
47 | !EXTERNAL type ANY
48 | returning
49 | value(RESULT) type ABAP_BOOL .
50 | methods ON_DOUBLE_CLICK
51 | for event DOUBLE_CLICK of CL_SALV_EVENTS_TABLE
52 | importing
53 | !ROW
54 | !COLUMN .
55 | class-methods HAS_NUMERIC_TYPE
56 | importing
57 | value(INPUT) type ANY
58 | returning
59 | value(RESULT) type ABAP_BOOL .
60 | class-methods TO_KEY_VALUE
61 | importing
62 | value(T_EXTERNAL) type ZODIN_EXTERNAL_T
63 | exporting
64 | value(T_KEY_VALUE) type ZODIN_KEY_VALUE_T .
65 | methods CONSTRUCTOR
66 | importing
67 | value(PATH_LOCAL) type LOCALFILE optional
68 | value(SIMULATION) type ABAP_BOOL default 'X'
69 | value(DATA_STRING) type STRING optional
70 | value(DATA_TYPE) type STRING optional
71 | value(HEX_FILE) type XSTRING optional
72 | value(CSV_SEPARATOR) type CHAR1 default ';'
73 | value(CSV_DELIMITER) type CHAR1 default '"'
74 | value(CSV_DECIMAL_SEPARATOR) type CHAR1 default ','
75 | value(CSV_THOUSANDS_SEPARATOR) type CHAR1 default '.'
76 | value(PATH_SERVER) type STRING optional
77 | value(PATH_SERVER_BACKUP) type STRING optional
78 | value(SKIP_ROWS) type INT4 optional
79 | raising
80 | ZCX_ODIN .
81 | methods DISPLAY
82 | importing
83 | !REPORT type SYREPID
84 | !PFSTATUS type SYPFKEY .
85 | methods POST
86 | raising
87 | ZCX_ODIN .
88 | methods SET_SIMULATION
89 | importing
90 | !SIMULATION type ABAP_BOOL .
91 | protected section.
92 |
93 | methods POST_DOCUMENT
94 | importing
95 | value(DOCUMENT) type ZODIN_INTERNAL_T
96 | exporting
97 | value(BELNR) type BELNR_D
98 | value(BUKRS) type BUKRS_D
99 | value(GJAHR) type GJAHR
100 | value(OBJ_KEY) type BAPIACHE09-OBJ_KEY
101 | raising
102 | ZCX_ODIN .
103 | methods LOAD
104 | importing
105 | value(SKIP_ROWS) type INT4 optional
106 | raising
107 | ZCX_ODIN .
108 | methods MAP
109 | raising
110 | ZCX_ODIN .
111 | methods DISPLAY_GUI
112 | importing
113 | value(REPORT) type SYREPID
114 | value(PFSTATUS) type SYPFKEY
115 | raising
116 | CX_SALV_MSG
117 | CX_SALV_NOT_FOUND
118 | CX_SALV_WRONG_CALL .
119 | methods DISPLAY_BATCH .
120 | private section.
121 | ENDCLASS.
122 |
123 |
124 |
125 | CLASS ZCL_ODIN_POSTING IMPLEMENTATION.
126 |
127 |
128 | METHOD constructor.
129 | me->path_local = path_local.
130 | me->simulation = simulation.
131 | me->csv_separator = csv_separator.
132 | me->csv_delimiter = csv_delimiter.
133 | me->csv_decimal_separator = csv_decimal_separator.
134 | me->csv_thousands_separator = csv_thousands_separator.
135 | me->path_server = path_server.
136 | me->path_server_backup = path_server_backup.
137 | me->hex_file = hex_file.
138 | me->load( skip_rows = skip_rows ).
139 | me->map( ).
140 | ENDMETHOD.
141 |
142 |
143 | METHOD display.
144 | display_gui( report = report
145 | pfstatus = pfstatus ).
146 | IF sy-batch = abap_true.
147 | COMMIT WORK AND WAIT.
148 | ENDIF.
149 | ENDMETHOD.
150 |
151 |
152 | METHOD display_batch.
153 | DATA internal_s TYPE zodin_internal.
154 | DATA strdesc TYPE REF TO cl_abap_structdescr.
155 | DATA t_active_components TYPE TABLE OF sy-index.
156 | FIELD-SYMBOLS: TYPE any.
157 | LOOP AT me->internal INTO DATA(s_internal).
158 | DO.
159 | ASSIGN COMPONENT sy-index OF STRUCTURE s_internal TO .
160 | IF sy-subrc NE 0.
161 | EXIT.
162 | ENDIF.
163 | IF IS NOT INITIAL.
164 | READ TABLE t_active_components WITH KEY table_line = sy-index TRANSPORTING NO FIELDS.
165 | IF sy-subrc NE 0.
166 | APPEND sy-index TO t_active_components.
167 | ENDIF.
168 | ENDIF.
169 | ENDDO.
170 | ENDLOOP.
171 | SORT t_active_components BY table_line ASCENDING.
172 | strdesc ?= cl_abap_structdescr=>describe_by_data( internal_s ).
173 | DATA(comps) = strdesc->get_components( ).
174 | DATA output TYPE string.
175 | LOOP AT comps INTO DATA(comp).
176 | READ TABLE t_active_components WITH KEY table_line = sy-tabix TRANSPORTING NO FIELDS.
177 | IF sy-subrc IS INITIAL.
178 | output = output && '|' && comp-name.
179 | ENDIF.
180 | ENDLOOP.
181 | SHIFT output LEFT BY 1 PLACES.
182 | WRITE / output.
183 | LOOP AT me->internal INTO s_internal.
184 | CLEAR output.
185 | LOOP AT t_active_components INTO DATA(active_component).
186 | ASSIGN COMPONENT active_component OF STRUCTURE s_internal TO .
187 | output = output && '|' && .
188 | ENDLOOP.
189 | SHIFT output LEFT BY 1 PLACES.
190 | WRITE / output.
191 | ENDLOOP.
192 | ENDMETHOD.
193 |
194 |
195 | METHOD display_gui.
196 | DATA internal_s TYPE zodin_internal.
197 | cl_salv_table=>factory(
198 | * EXPORTING
199 | * list_display = if_salv_c_bool_sap=>false " ALV Displayed in List Mode
200 | * r_container = " Abstract Container for GUI Controls
201 | * container_name =
202 | IMPORTING
203 | r_salv_table = me->alv " Basis Class Simple ALV Tables
204 | CHANGING
205 | t_table = me->internal
206 | ).
207 | * CATCH cx_salv_msg. " ALV: General Error Class with Message
208 | DATA(cols) = alv->get_columns( ).
209 | DATA(col) = cols->get_column( 'COUNTER' ).
210 | col->set_short_text( 'Counter'(000) ).
211 | * CLEAR col.
212 | * col = cols->get_column( 'STRATEGY' ).
213 | * col->set_short_text( 'Strategy'(001) ).
214 | CLEAR col.
215 | col = cols->get_column( 'STATE' ).
216 | col->set_short_text( 'Status'(002) ).
217 | CLEAR col.
218 | col = cols->get_column( 'MSG' ).
219 | col->set_short_text( 'Message'(003) ).
220 | CLEAR col.
221 | col = cols->get_column( 'CUSTOM1' ).
222 | col->set_short_text( 'Custom1'(004) ).
223 | CLEAR col.
224 | col = cols->get_column( 'CUSTOM2' ).
225 | col->set_short_text( 'Custom2'(005) ).
226 | CLEAR col.
227 | col = cols->get_column( 'CUSTOM3' ).
228 | col->set_short_text( 'Custom3'(006) ).
229 | CLEAR col.
230 | col = cols->get_column( 'CUSTOM4' ).
231 | col->set_short_text( 'Custom4'(007) ).
232 | CLEAR col.
233 | col = cols->get_column( 'CUSTOM5' ).
234 | col->set_short_text( 'Custom5'(008) ).
235 | CLEAR col.
236 | col = cols->get_column( 'CUSTOM6' ).
237 | col->set_short_text( 'Custom6'(009) ).
238 | CLEAR col.
239 | col = cols->get_column( 'CUSTOM7' ).
240 | col->set_short_text( 'Custom7'(010) ).
241 | CLEAR col.
242 | col = cols->get_column( 'CUSTOM8' ).
243 | col->set_short_text( 'Custom8'(011) ).
244 | CLEAR col.
245 | col = cols->get_column( 'CUSTOM9' ).
246 | col->set_short_text( 'Custom9'(012) ).
247 | CLEAR col.
248 | col = cols->get_column( 'CUSTOM10' ).
249 | col->set_short_text( 'Custom10'(013) ).
250 | alv->set_screen_status(
251 | EXPORTING
252 | report = report
253 | pfstatus = pfstatus
254 | set_functions = alv->c_functions_all
255 | ).
256 | IF me->simulation = abap_false.
257 | DATA(functions) = alv->get_functions( ).
258 | TRY.
259 | functions->set_function(
260 | EXPORTING
261 | name = 'EXEC'
262 | boolean = abap_false
263 | ).
264 | CATCH cx_salv_not_found.
265 | MESSAGE s005(zodin) DISPLAY LIKE 'W'.
266 | ENDTRY.
267 | ENDIF.
268 | DATA(layout) = me->alv->get_layout( ).
269 | DATA key TYPE salv_s_layout_key.
270 | key-report = report.
271 | layout->set_key( key ).
272 | layout->set_save_restriction(
273 | value = if_salv_c_layout=>restrict_none
274 | ).
275 | APPEND 'STATE' TO active_components.
276 | APPEND 'MSG' TO active_components.
277 | APPEND 'BELNR' TO active_components.
278 | APPEND 'GJAHR' TO active_components.
279 | APPEND 'BUKRS' TO active_components.
280 | DATA columns_s LIKE LINE OF me->internal.
281 | DATA strdesc TYPE REF TO cl_abap_structdescr.
282 | strdesc ?= cl_abap_structdescr=>describe_by_data( columns_s ).
283 | DATA(all_components) = strdesc->get_components( ).
284 | FIELD-SYMBOLS TYPE any.
285 | DATA supplied TYPE abap_bool.
286 | LOOP AT all_components INTO DATA(component).
287 | CLEAR supplied.
288 | READ TABLE active_components WITH KEY table_line = component-name TRANSPORTING NO FIELDS.
289 | IF sy-subrc = 0.
290 | CONTINUE.
291 | ENDIF.
292 | LOOP AT me->internal INTO internal_s .
293 | ASSIGN COMPONENT component-name OF STRUCTURE internal_s TO .
294 | IF IS NOT INITIAL.
295 | supplied = abap_true.
296 | EXIT.
297 | ENDIF.
298 | ENDLOOP.
299 | IF supplied = abap_false.
300 | CLEAR col.
301 | col = cols->get_column( CONV #( component-name ) ).
302 | col->set_visible( abap_false ).
303 | ENDIF.
304 | ENDLOOP.
305 | DATA(event) = alv->get_event( ).
306 | SET HANDLER me->on_user_command FOR event.
307 | SET HANDLER me->on_double_click FOR event.
308 | cols->set_optimize( abap_true ).
309 | alv->display( ).
310 | ENDMETHOD.
311 |
312 |
313 | METHOD has_date_type.
314 | DATA(desc) = cl_abap_typedescr=>describe_by_data( external ).
315 | IF desc->type_kind = desc->typekind_date.
316 | result = abap_true.
317 | ENDIF.
318 | ENDMETHOD.
319 |
320 |
321 | METHOD has_numeric_type.
322 | DATA(desc) = cl_abap_typedescr=>describe_by_data( input ).
323 | CASE desc->type_kind.
324 | WHEN desc->typekind_decfloat
325 | OR desc->typekind_decfloat16
326 | OR desc->typekind_decfloat34
327 | OR desc->typekind_float
328 | OR desc->typekind_int
329 | OR desc->typekind_int1
330 | OR desc->typekind_int2
331 | OR desc->typekind_num
332 | OR desc->typekind_packed
333 | OR desc->typekind_numeric.
334 | result = abap_true.
335 | ENDCASE.
336 | ENDMETHOD.
337 |
338 |
339 | METHOD load.
340 | DATA path TYPE string.
341 | DATA string_t TYPE TABLE OF string.
342 | DATA string LIKE LINE OF string_t.
343 | DATA flag_server TYPE abap_bool.
344 | IF me->path_local IS NOT INITIAL.
345 | path = me->path_local.
346 | ELSEIF me->path_server IS NOT INITIAL.
347 | path = me->path_server.
348 | flag_server = abap_true.
349 | ENDIF.
350 | IF path IS NOT INITIAL.
351 | DATA(pos) = strlen( path ).
352 | pos = pos - 4.
353 | IF path+pos(4) CP '.xls'.
354 | input_mode = abap2xlsx.
355 | ELSEIF path+pos(4) CP '.csv'.
356 | input_mode = csv.
357 | ELSE.
358 | pos = pos - 1.
359 | IF path+pos(5) CP '.xlsx' OR path+pos(5) CP '.xlsm'.
360 | input_mode = abap2xlsx.
361 | ELSE.
362 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'File type not supported. Allowed extensions: .csv, .xls, .xlsx, .xlsm'.
363 | ENDIF.
364 | ENDIF.
365 | DATA xlsx_reader TYPE REF TO object.
366 | DATA ws TYPE REF TO object.
367 | DATA excel TYPE REF TO object.
368 | IF input_mode = abap2xlsx.
369 | TRY.
370 | "dynamic calls of abap2xlsx classes, because if component abap2xlsx is missing the project should nevertheless compile
371 | CREATE OBJECT xlsx_reader TYPE ('ZCL_EXCEL_READER_2007').
372 | CATCH cx_root.
373 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'For an Excel upload abap2xlsx must be installed https://github.com/sapmentors/abap2xlsx'.
374 | ENDTRY.
375 | TRY.
376 | CALL METHOD xlsx_reader->('ZIF_EXCEL_READER~LOAD_FILE') EXPORTING i_filename = path i_from_applserver = flag_server RECEIVING r_excel = excel.
377 | CALL METHOD excel->('GET_ACTIVE_WORKSHEET') RECEIVING eo_worksheet = ws.
378 | CALL METHOD ws->('GET_TABLE') EXPORTING iv_skipped_rows = skip_rows IMPORTING et_table = external.
379 | CATCH zcx_excel INTO DATA(cx_excel).
380 | RAISE EXCEPTION TYPE zcx_odin EXPORTING previous = cx_excel text = cx_excel->if_message~get_text( ) .
381 | ENDTRY.
382 | ELSEIF input_mode = me->csv.
383 | cl_rsda_csv_converter=>create(
384 | EXPORTING
385 | i_delimiter = me->csv_delimiter
386 | i_separator = me->csv_separator
387 | RECEIVING
388 | r_r_conv = DATA(converter)
389 | ).
390 | IF flag_server = abap_false.
391 | cl_gui_frontend_services=>gui_upload(
392 | EXPORTING
393 | filename = path " Name der Datei
394 | * filetype = 'ASC' " Dateityp (Ascii, Binär)
395 | * has_field_separator = space " Spalten durch TAB getrennt bei ASCII Upload
396 | * header_length = 0 " Länge des Headers bei Binärdaten
397 | * read_by_line = 'X' " Die Datei wird zeilenweise in die interne Tabelle geschriebe
398 | * dat_mode = space " Zahl- und Datumsfelder werden im 'DAT' Format des ws_downloa
399 | * codepage = " Zeichenrepräsentation für Ausgabe
400 | * ignore_cerr = abap_true " Gibt an, ob Fehler bei der Zeichensatzkonvertierung ignorier
401 | * replacement = '#' " Ersatzzeichen für nicht-konvertierbare Zeichen.
402 | * virus_scan_profile = " Viren-Scan-Profil
403 | * IMPORTING
404 | * filelength = " Dateilänge
405 | * header = " Header der Datei bei binärem Upload
406 | CHANGING
407 | data_tab = string_t " Übergabetabelle für Datei-Inhalt
408 | * isscanperformed = space " File ist bereits gescannt
409 | EXCEPTIONS
410 | file_open_error = 1 " Datei nicht vorhanden, kann nicht geöffnet werde
411 | file_read_error = 2 " Fehler beim Lesen der Datei
412 | no_batch = 3 " Frontend-Funktion im Batch nicht ausführbar.
413 | gui_refuse_filetransfer = 4 " Falsches Frontend oder Fehler im Frontend
414 | invalid_type = 5 " Falscher Parameter FILETYPE
415 | no_authority = 6 " Keine Berechtigung für Upload
416 | unknown_error = 7 " Unbekannter Fehler
417 | bad_data_format = 8 " Daten in der Datei können nicht interpretiert werden.
418 | header_not_allowed = 9 " Header ist nicht zulässig.
419 | separator_not_allowed = 10 " Separator ist nicht zulässig.
420 | header_too_long = 11 " Die Headerinformation ist zur Zeit auf maximal 1023 Bytes be
421 | unknown_dp_error = 12 " Fehler beim Aufruf des Dataprovider
422 | access_denied = 13 " Zugriff auf Datei nicht erlaubt.
423 | dp_out_of_memory = 14 " Nicht genug Speicher im Dataprovider
424 | disk_full = 15 " Speichermedium ist voll.
425 | dp_timeout = 16 " Timeout des Dataproviders
426 | not_supported_by_gui = 17 " Nicht unterstützt von GUI
427 | error_no_gui = 18 " GUI nicht verfügbar
428 | OTHERS = 19
429 | ).
430 | IF sy-subrc <> 0.
431 | CASE sy-subrc.
432 | WHEN 1.
433 | DATA(text) = `file_open_error`.
434 | WHEN 2.
435 | text = `file_read_error`.
436 | WHEN 3.
437 | text = `no_batch`.
438 | WHEN 4.
439 | text = `gui_refuse_filetransfer`.
440 | WHEN 5.
441 | text = `invalid_type`.
442 | WHEN 6.
443 | text = `no_authority`.
444 | WHEN 7.
445 | text = `unknown_error`.
446 | WHEN 8.
447 | text = `bad_data_format`.
448 | WHEN 9.
449 | text = `header_not_allowed`.
450 | WHEN 10.
451 | text = `separator_not_allowed`.
452 | WHEN 11.
453 | text = `header_too_long`.
454 | WHEN 12.
455 | text = `unknown_dp_error`.
456 | WHEN 13.
457 | text = `access_denied`.
458 | WHEN 14.
459 | text = `dp_out_of_memory`.
460 | WHEN 15.
461 | text = `disk_full`.
462 | WHEN 16.
463 | text = `dp_timeout`.
464 | WHEN 17.
465 | text = `not_supported_by_gui`.
466 | WHEN 18.
467 | text = `error_no_gui`.
468 | WHEN 19.
469 | text = `other error`.
470 | ENDCASE.
471 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = `Upload error: ` && text.
472 | ENDIF.
473 | ELSE.
474 | OPEN DATASET path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
475 | IF sy-subrc NE 0.
476 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = |Could not open file { path }|.
477 | ENDIF.
478 | DATA subrc LIKE sy-subrc.
479 | DATA byom(4) TYPE x.
480 | FIELD-SYMBOLS: TYPE c.
481 | WHILE subrc = 0.
482 | READ DATASET path INTO string.
483 | subrc = sy-subrc.
484 | REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN string WITH ''.
485 | REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN string WITH ''.
486 | REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf(1) IN string WITH ''.
487 | byom = cl_abap_char_utilities=>byte_order_mark_little.
488 | ASSIGN byom TO CASTING.
489 | REPLACE ALL OCCURRENCES OF (1) IN string WITH ''.
490 | byom = cl_abap_char_utilities=>byte_order_mark_big.
491 | ASSIGN byom TO CASTING.
492 | REPLACE ALL OCCURRENCES OF (1) IN string WITH ''.
493 | byom = cl_abap_char_utilities=>byte_order_mark_utf8.
494 | ASSIGN byom TO CASTING.
495 | REPLACE ALL OCCURRENCES OF (1) IN string WITH ''.
496 | APPEND string TO string_t.
497 | ENDWHILE.
498 | CLOSE DATASET path.
499 | ENDIF.
500 | DATA external_s LIKE LINE OF external.
501 | DATA csv_input TYPE zodin_input_csv.
502 | LOOP AT string_t INTO string.
503 | CHECK sy-tabix GT skip_rows.
504 | CLEAR csv_input.
505 | converter->csv_to_structure(
506 | EXPORTING
507 | i_data = string " I_DATA
508 | IMPORTING
509 | e_s_data = csv_input " E_S_DATA
510 | ).
511 | IF csv_input IS NOT INITIAL.
512 | CLEAR external_s.
513 | MOVE-CORRESPONDING csv_input TO external_s.
514 | APPEND external_s TO external.
515 | ENDIF.
516 | ENDLOOP.
517 | ENDIF.
518 | ELSEIF me->hex_file IS NOT INITIAL.
519 | me->input_mode = abap2xlsx. "Only abap2xlsx supported for xstring for now
520 | TRY.
521 | "abap2xlsx calls dynamically, because if component abap2xlsx is missing the project should nevertheless compile
522 | CREATE OBJECT xlsx_reader TYPE ('ZCL_EXCEL_READER_2007').
523 | CATCH cx_root.
524 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'For an Excel upload abap2xlsx must be installed https://github.com/sapmentors/abap2xlsx'.
525 | ENDTRY.
526 | TRY.
527 | CALL METHOD xlsx_reader->('ZIF_EXCEL_READER~LOAD') EXPORTING i_excel2007 = me->hex_file RECEIVING r_excel = excel.
528 | CALL METHOD excel->('GET_ACTIVE_WORKSHEET') RECEIVING eo_worksheet = ws.
529 | CALL METHOD ws->('GET_TABLE') IMPORTING et_table = external.
530 | CATCH zcx_excel INTO cx_excel.
531 | RAISE EXCEPTION TYPE zcx_odin EXPORTING previous = cx_excel text = cx_excel->if_message~get_text( ) .
532 | ENDTRY.
533 | ELSE.
534 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'File path or hex string must be supplied'.
535 | ENDIF.
536 | LOOP AT external INTO external_s.
537 | IF external_s IS INITIAL.
538 | DELETE external.
539 | ENDIF.
540 | ENDLOOP.
541 | ENDMETHOD.
542 |
543 |
544 | METHOD map.
545 | zcl_odin_posting=>to_key_value(
546 | EXPORTING
547 | t_external = me->external
548 | IMPORTING
549 | t_key_value = DATA(t_key_value)
550 | ).
551 | READ TABLE t_key_value INTO DATA(line) WITH KEY key = 'STRATEGY'.
552 | me->strategy = line-value.
553 | IF me->strategy IS NOT INITIAL.
554 | DATA mapping_badi TYPE REF TO zodin_mapping.
555 | GET BADI mapping_badi
556 | FILTERS
557 | strategy = me->strategy.
558 | CALL BADI mapping_badi->before
559 | CHANGING
560 | external = me->external.
561 | CLEAR t_key_value.
562 | zcl_odin_posting=>to_key_value(
563 | EXPORTING
564 | t_external = me->external
565 | IMPORTING
566 | t_key_value = t_key_value
567 | ).
568 | ENDIF.
569 | FIELD-SYMBOLS TYPE any.
570 | DATA s_internal TYPE zodin_internal.
571 | DATA state LIKE s_internal-state VALUE me->state-unknown.
572 | DATA msg LIKE s_internal-msg.
573 | DATA tmp_float TYPE f.
574 | DATA component TYPE string.
575 | LOOP AT t_key_value INTO line.
576 | CLEAR component.
577 | IF line-key IS NOT INITIAL.
578 | SELECT SINGLE field_name
579 | FROM zodin_alias
580 | INTO component
581 | WHERE alias_name = line-key
582 | AND strategy = me->strategy.
583 | IF sy-subrc IS NOT INITIAL.
584 | SELECT SINGLE field_name
585 | FROM zodin_alias
586 | INTO component
587 | WHERE alias_name = line-key
588 | AND strategy = ''.
589 | IF sy-subrc IS NOT INITIAL.
590 | component = line-key.
591 | ENDIF.
592 | ENDIF.
593 | ASSIGN COMPONENT component OF STRUCTURE s_internal TO .
594 | IF sy-subrc = 0.
595 | IF zcl_odin_posting=>has_numeric_type( ) = abap_true.
596 | TRY.
597 | IF me->input_mode = me->abap2xlsx.
598 | = line-value.
599 | ELSEIF me->input_mode = me->csv.
600 | REPLACE ALL OCCURRENCES OF me->csv_thousands_separator IN line-value WITH ''.
601 | IF me->csv_decimal_separator NE '.'.
602 | REPLACE ALL OCCURRENCES OF me->csv_decimal_separator IN line-value WITH '.'.
603 | ENDIF.
604 | = line-value.
605 | ENDIF.
606 | CATCH cx_root INTO DATA(cx_root).
607 | "Hack for exponential notation with conversion to float first
608 | TRY.
609 | CLEAR tmp_float.
610 | tmp_float = line-value.
611 | = tmp_float.
612 | CATCH cx_root INTO cx_root.
613 | state = me->state-error.
614 | msg = |Could not convert { line-value } into number: { cx_root->if_message~get_text( ) }|.
615 | ENDTRY.
616 | ENDTRY.
617 | ELSEIF zcl_odin_posting=>has_date_type( ) = abap_true.
618 | IF input_mode = me->abap2xlsx.
619 | TRY.
620 | IF line-value IS NOT INITIAL.
621 | CALL METHOD zcl_excel_common=>('EXCEL_STRING_TO_DATE') EXPORTING ip_value = line-value RECEIVING ep_value = .
622 | ENDIF.
623 | CATCH zcx_excel INTO DATA(cx_excel).
624 | CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
625 | EXPORTING
626 | date_external = line-value
627 | * ACCEPT_INITIAL_DATE =
628 | IMPORTING
629 | date_internal =
630 | EXCEPTIONS
631 | date_external_is_invalid = 1
632 | OTHERS = 2.
633 | IF sy-subrc <> 0.
634 | state = me->state-error.
635 | msg = |Could not convert { line-value } into date: { cx_excel->if_message~get_text( ) }|.
636 | ENDIF.
637 | ENDTRY.
638 | ELSE.
639 | CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
640 | EXPORTING
641 | date_external = line-value
642 | * ACCEPT_INITIAL_DATE =
643 | IMPORTING
644 | date_internal =
645 | EXCEPTIONS
646 | date_external_is_invalid = 1
647 | OTHERS = 2.
648 | IF sy-subrc <> 0.
649 | state = me->state-error.
650 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO msg.
651 | ENDIF.
652 | ENDIF.
653 | ELSE.
654 | = line-value.
655 | IF component = 'BUKRS' OR component = 'BWART' OR component = 'LIFNR' OR component = 'KUNNR' OR component = 'HKONT' OR component = 'AUFNR'
656 | OR component = 'KOSTL' OR component = 'VBEL2' OR component = 'EBELN' OR component = 'KUNNR_GL' OR component = 'LIFNR_GL'
657 | or component = 'ANLN1' or component = 'ANLN2'.
658 | CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
659 | EXPORTING
660 | input =
661 | IMPORTING
662 | output = .
663 | ENDIF.
664 | ENDIF.
665 | ENDIF.
666 | ENDIF.
667 | AT END OF line.
668 | s_internal-state = state.
669 | s_internal-msg = msg.
670 | APPEND s_internal TO me->internal.
671 | CLEAR: s_internal, msg.
672 | state = me->state-unknown.
673 | ENDAT.
674 | ENDLOOP.
675 | SORT me->internal BY counter ASCENDING.
676 | LOOP AT me->internal INTO s_internal
677 | WHERE counter IS INITIAL.
678 | DELETE me->internal.
679 | ENDLOOP.
680 | IF mapping_badi IS BOUND.
681 | CALL BADI mapping_badi->after
682 | EXPORTING
683 | external = external
684 | key_value = t_key_value
685 | CHANGING
686 | internal = me->internal.
687 | ENDIF.
688 | DATA error_counters LIKE TABLE OF s_internal-counter.
689 | LOOP AT me->internal INTO s_internal
690 | WHERE state = me->state-error.
691 | APPEND s_internal-counter TO error_counters.
692 | ENDLOOP.
693 | IF sy-subrc = 0.
694 | SORT error_counters ASCENDING.
695 | DELETE ADJACENT DUPLICATES FROM error_counters.
696 | CLEAR s_internal.
697 | s_internal-state = me->state-error.
698 | LOOP AT error_counters INTO DATA(error_counter).
699 | MODIFY me->internal FROM s_internal TRANSPORTING state WHERE counter = error_counter.
700 | ENDLOOP.
701 | ENDIF.
702 | ENDMETHOD.
703 |
704 |
705 | METHOD on_double_click.
706 | READ TABLE me->internal INDEX row INTO DATA(s_internal).
707 | IF s_internal-belnr IS NOT INITIAL.
708 | SET PARAMETER ID 'BLN' FIELD s_internal-belnr.
709 | SET PARAMETER ID 'BUK' FIELD s_internal-bukrs.
710 | SET PARAMETER ID 'GJR' FIELD s_internal-budat(4).
711 | CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
712 | ENDIF.
713 | ENDMETHOD.
714 |
715 |
716 | METHOD on_user_command.
717 | IF e_salv_function EQ 'EXEC'.
718 | me->set_simulation( abap_false ).
719 | TRY.
720 | me->post( ).
721 | CATCH zcx_ODIN INTO DATA(cx_odin).
722 | CALL FUNCTION 'POPUP_TO_INFORM'
723 | EXPORTING
724 | titel = 'Error'
725 | txt1 = cx_odin->get_text( )
726 | txt2 = ''.
727 | ENDTRY.
728 | DATA(cols) = me->alv->get_columns( ).
729 | cols->set_optimize( abap_true ).
730 | DATA(functions) = alv->get_functions( ).
731 | TRY.
732 | functions->set_function(
733 | EXPORTING
734 | name = 'EXEC'
735 | boolean = abap_false
736 | ).
737 | CATCH cx_salv_not_found.
738 | MESSAGE s005(zodin) DISPLAY LIKE 'W'.
739 | ENDTRY.
740 | me->alv->refresh( ).
741 | ENDIF.
742 | ENDMETHOD.
743 |
744 |
745 | METHOD post.
746 | IF me->posted = abap_true.
747 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'Posting allowed only once'.
748 | ENDIF.
749 | IF me->simulation = abap_false.
750 | me->posted = abap_true.
751 | ENDIF.
752 | READ TABLE me->internal WITH KEY state = me->state-error TRANSPORTING NO FIELDS.
753 | IF sy-subrc = 0.
754 | IF me->simulation = abap_false.
755 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'No posting/simulation is made. Please check for errors and re-read data'.
756 | ELSE.
757 | RETURN.
758 | ENDIF.
759 | ENDIF.
760 |
761 | DATA document LIKE me->internal.
762 | DATA posting_badi TYPE REF TO zodin_posting.
763 | DATA commited TYPE abap_bool.
764 | DATA commited_all TYPE abap_bool VALUE abap_true.
765 | DATA err_msg TYPE string.
766 | GET BADI posting_badi
767 | FILTERS
768 | strategy = me->strategy.
769 | LOOP AT me->internal INTO DATA(s_internal).
770 | APPEND s_internal TO document.
771 | AT END OF counter.
772 | CLEAR: commited, err_msg.
773 | DATA(counter) = s_internal-counter.
774 |
775 | TRY.
776 | me->post_document( EXPORTING document = document
777 | IMPORTING bukrs = DATA(bukrs) belnr = DATA(belnr) gjahr = DATA(gjahr) obj_key = DATA(obj_key) ).
778 | CATCH zcx_odin INTO DATA(cx_odin).
779 | err_msg = cx_odin->get_text( ).
780 | ENDTRY.
781 |
782 | IF posting_badi IS BOUND AND err_msg IS INITIAL.
783 | TRY.
784 | CALL BADI posting_badi->after_pre_commit
785 | EXPORTING
786 | obj_key = obj_key
787 | simulation = me->simulation
788 | path_local = me->path_local
789 | hex_file = me->hex_file
790 | path_server = me->path_server
791 | CHANGING
792 | document = document.
793 | CATCH zcx_odin INTO cx_odin.
794 | err_msg = cx_odin->get_text( ).
795 | ENDTRY.
796 | ENDIF.
797 |
798 | IF me->simulation IS INITIAL AND err_msg IS INITIAL.
799 | COMMIT WORK AND WAIT.
800 | IF sy-subrc NE 0.
801 | err_msg = 'Update failed'.
802 | ELSE.
803 | commited = abap_true.
804 | ENDIF.
805 | ELSE.
806 | ROLLBACK WORK.
807 | ENDIF.
808 |
809 | IF commited = abap_false.
810 | commited_all = abap_false.
811 | ENDIF.
812 |
813 | IF posting_badi IS BOUND AND me->simulation IS INITIAL AND err_msg IS INITIAL.
814 | TRY.
815 | CALL BADI posting_badi->after_post_commit
816 | EXPORTING
817 | obj_key = obj_key
818 | path_local = me->path_local
819 | hex_file = me->hex_file
820 | path_server = me->path_server
821 | CHANGING
822 | document = document.
823 | CATCH zcx_odin INTO cx_odin.
824 | err_msg = cx_odin->get_text( ).
825 | ENDTRY.
826 | ENDIF.
827 |
828 | LOOP AT me->internal INTO DATA(s_internal2) WHERE counter = counter.
829 | IF me->simulation = abap_false.
830 | s_internal2-belnr = belnr.
831 | s_internal2-bukrs = bukrs.
832 | s_internal2-gjahr = gjahr.
833 | IF err_msg IS INITIAL.
834 | s_internal2-state = me->state-ok.
835 | ELSE.
836 | s_internal2-state = me->state-error.
837 | s_internal2-msg = err_msg.
838 | ENDIF.
839 | ELSE.
840 | IF err_msg IS INITIAL.
841 | s_internal2-state = me->state-ready.
842 | ELSE.
843 | s_internal2-state = me->state-error.
844 | s_internal2-msg = err_msg.
845 | ENDIF.
846 | ENDIF.
847 | MODIFY me->internal FROM s_internal2.
848 | ENDLOOP.
849 |
850 | CLEAR document.
851 | ENDAT.
852 | ENDLOOP.
853 |
854 | IF commited_all = abap_true AND me->path_server_backup IS NOT INITIAL AND me->path_server IS NOT INITIAL. "Move file
855 | DATA file_content TYPE xstring.
856 | TRY.
857 | OPEN DATASET me->path_server FOR INPUT IN BINARY MODE.
858 | IF sy-subrc = 0.
859 | READ DATASET me->path_server INTO file_content.
860 | CLOSE DATASET me->path_server.
861 | DELETE DATASET me->path_server_backup.
862 | OPEN DATASET me->path_server_backup FOR OUTPUT IN BINARY MODE.
863 | IF sy-subrc = 0.
864 | TRANSFER file_content TO me->path_server_backup.
865 | CLOSE DATASET me->path_server_backup.
866 | DELETE DATASET me->path_server.
867 | ENDIF.
868 | ENDIF.
869 | CATCH cx_root.
870 | ENDTRY.
871 | ENDIF.
872 | ENDMETHOD.
873 |
874 |
875 | METHOD post_document.
876 | DATA: header TYPE bapiache09,
877 | customercpd TYPE bapiacpa09,
878 | glaccount TYPE TABLE OF bapiacgl09,
879 | s_glaccount TYPE bapiacgl09,
880 | vendor TYPE TABLE OF bapiacap09,
881 | s_vendor TYPE bapiacap09,
882 | customer TYPE TABLE OF bapiacar09,
883 | s_customer LIKE LINE OF customer,
884 | amount TYPE TABLE OF bapiaccr09,
885 | s_amount TYPE bapiaccr09,
886 | extension2 TYPE TABLE OF bapiparex,
887 | s_extension2 LIKE LINE OF extension2,
888 | odin_extension TYPE zodin_extension,
889 | wht TYPE TABLE OF bapiacwt09,
890 | bapiret TYPE TABLE OF bapiret2,
891 | s_bapiret TYPE bapiret2,
892 | itemno TYPE posnr_acc,
893 | bapitax TYPE TABLE OF bapiactx09,
894 | s_bapitax TYPE bapiactx09,
895 | wrbtr TYPE bseg-wrbtr,
896 | t_mwdat TYPE TABLE OF rtax1u15,
897 | tax TYPE bset-fwste,
898 | itemno_tax LIKE itemno VALUE 9999999999,
899 | segments TYPE i,
900 | msg TYPE string,
901 | ktopl TYPE t001-ktopl.
902 |
903 | FIELD-SYMBOLS TYPE any.
904 |
905 | LOOP AT document INTO DATA(s_document).
906 |
907 | CLEAR: s_glaccount, s_amount, s_vendor, wrbtr, t_mwdat, segments, tax, s_extension2, odin_extension.
908 | ADD 1 TO itemno.
909 |
910 | IF header IS INITIAL.
911 | header-pstng_date = s_document-budat.
912 | header-doc_date = s_document-bldat.
913 | header-doc_type = s_document-blart.
914 | header-comp_code = s_document-bukrs.
915 | header-ref_doc_no = s_document-xblnr.
916 | header-header_txt = s_document-bktxt.
917 | header-username = sy-uname.
918 | header-fisc_year = s_document-gjahr.
919 | header-fis_period = s_document-monat.
920 | IF s_document-doc_status IS NOT INITIAL.
921 | ASSIGN COMPONENT 'DOC_STATUS' OF STRUCTURE header TO . "Using field symbol for downwards compatibility (component doc_status might lack in older releases)
922 | IF sy-subrc = 0.
923 | = s_document-doc_status.
924 | * IF CA '23AB'.
925 | * header-bus_act = 'RFBV'.
926 | * ENDIF.
927 | ENDIF.
928 | ENDIF.
929 | header-bus_act = s_document-glvor.
930 | ENDIF.
931 |
932 | MOVE-CORRESPONDING s_document TO odin_extension.
933 | IF s_document-anln1 IS NOT INITIAL AND s_document-bewar IS NOT INITIAL.
934 | odin_extension-anbwa = s_document-bewar.
935 | ENDIF.
936 | IF odin_extension IS NOT INITIAL.
937 | odin_extension-posnr = itemno.
938 | s_extension2-structure = me->odin_extension_structure.
939 | s_extension2-valuepart1 = odin_extension.
940 | APPEND s_extension2 TO extension2.
941 | ENDIF.
942 |
943 | IF s_document-wrbtr_h IS NOT INITIAL.
944 | wrbtr = s_document-wrbtr_h * -1.
945 | ELSEIF s_document-wrbtr_s IS NOT INITIAL.
946 | wrbtr = s_document-wrbtr_s.
947 | ENDIF.
948 |
949 | IF s_document-hkont IS NOT INITIAL OR s_document-anln1 IS NOT INITIAL.
950 | ADD 1 TO segments.
951 | ENDIF.
952 | IF s_document-lifnr IS NOT INITIAL.
953 | ADD 1 TO segments.
954 | ENDIF.
955 | IF s_document-kunnr IS NOT INITIAL.
956 | ADD 1 TO segments.
957 | ENDIF.
958 | IF segments NE 1.
959 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = 'Please specify exactly one of the following fields: LIFNR, KUNNR, HKONT/ANLN1'.
960 | ENDIF.
961 |
962 | IF s_document-hkont IS NOT INITIAL OR s_document-anln1 IS NOT INITIAL.
963 | s_glaccount-itemno_acc = itemno.
964 | IF s_document-anln1 IS NOT INITIAL.
965 | s_glaccount-asset_no = s_document-anln1. "Note that anbwa has to be set in BADI_ACC_DOCUMENT for asset postings
966 | s_glaccount-acct_type = 'A'. "Asset
967 | IF s_document-anln2 IS INITIAL.
968 | s_document-anln2 = '0000'.
969 | ENDIF.
970 | s_glaccount-sub_number = s_document-anln2.
971 | IF s_document-hkont IS INITIAL.
972 | CALL FUNCTION 'FI_CHART_OF_ACCOUNT_DETERMINE'
973 | EXPORTING
974 | i_bukrs = s_document-bukrs
975 | IMPORTING
976 | e_ktopl = ktopl.
977 | SELECT SINGLE ktogr FROM anla INTO @DATA(ktogr)
978 | WHERE bukrs = @s_document-bukrs
979 | AND anln1 = @s_document-anln1
980 | AND anln2 = @s_document-anln2.
981 | IF sy-subrc = 0.
982 | SELECT SINGLE ktansw FROM t095 INTO s_document-hkont
983 | WHERE ktopl = ktopl
984 | AND ktogr = ktogr
985 | AND afabe = '01'.
986 | ENDIF.
987 | ENDIF.
988 | ENDIF.
989 | s_glaccount-gl_account = s_document-hkont.
990 | s_glaccount-orderid = s_document-aufnr.
991 | s_glaccount-item_text = s_document-sgtxt.
992 | s_glaccount-tax_code = s_document-mwskz.
993 | s_glaccount-alloc_nmbr = s_document-budat.
994 | s_glaccount-ref_key_1 = s_document-xref1.
995 | s_glaccount-ref_key_2 = s_document-xref2.
996 | s_glaccount-ref_key_3 = s_document-xref3.
997 | s_glaccount-cs_trans_t = s_document-bewar.
998 | s_glaccount-costcenter = s_document-kostl.
999 | s_glaccount-wbs_element = s_document-projk.
1000 | s_glaccount-sales_ord = s_document-vbel2.
1001 | s_glaccount-s_ord_item = s_document-posn2.
1002 | s_glaccount-co_busproc = s_document-prznr.
1003 | s_glaccount-trade_id = s_document-vbund.
1004 | s_glaccount-po_number = s_document-ebeln.
1005 | s_glaccount-po_item = s_document-ebelp.
1006 | s_glaccount-quantity = s_document-menge.
1007 | s_glaccount-base_uom = s_document-meins.
1008 | s_glaccount-alloc_nmbr = s_document-zuonr.
1009 | s_glaccount-customer = s_document-kunnr_gl.
1010 | s_glaccount-vendor_no = s_document-lifnr_gl.
1011 | s_glaccount-profit_ctr = s_document-prctr.
1012 | APPEND s_glaccount TO glaccount.
1013 |
1014 | IF s_document-mwskz IS NOT INITIAL.
1015 | CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
1016 | EXPORTING
1017 | i_bukrs = s_document-bukrs
1018 | i_mwskz = s_document-mwskz
1019 | * I_TXJCD = ' '
1020 | i_waers = s_document-waers
1021 | i_wrbtr = wrbtr
1022 | * I_ZBD1P = 0
1023 | * I_PRSDT =
1024 | * I_PROTOKOLL =
1025 | * I_TAXPS =
1026 | * I_ACCNT_EXT =
1027 | * I_ACCDATA =
1028 | * IS_ENHANCEMENT =
1029 | * I_PRICING_REFRESH_TX = ' '
1030 | IMPORTING
1031 | * E_FWNAV =
1032 | * E_FWNVV =
1033 | e_fwste = tax
1034 | * E_FWAST =
1035 | TABLES
1036 | t_mwdat = t_mwdat
1037 | EXCEPTIONS
1038 | bukrs_not_found = 1
1039 | country_not_found = 2
1040 | mwskz_not_defined = 3
1041 | mwskz_not_valid = 4
1042 | account_not_found = 5
1043 | different_discount_base = 6
1044 | different_tax_base = 7
1045 | txjcd_not_valid = 8
1046 | not_found = 9
1047 | ktosl_not_found = 10
1048 | kalsm_not_found = 11
1049 | parameter_error = 12
1050 | knumh_not_found = 13
1051 | kschl_not_found = 14
1052 | unknown_error = 15
1053 | OTHERS = 16.
1054 | IF sy-subrc <> 0.
1055 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
1056 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO msg.
1057 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = msg.
1058 | ENDIF.
1059 | ENDIF.
1060 |
1061 | s_amount-itemno_acc = itemno.
1062 | s_amount-currency = s_document-waers.
1063 | s_amount-amt_doccur = wrbtr - tax.
1064 | s_amount-exch_rate = s_document-kursf.
1065 | s_amount-exch_rate_v = s_document-kursf_m.
1066 | APPEND s_amount TO amount.
1067 |
1068 | DATA modified TYPE abap_bool.
1069 | LOOP AT t_mwdat INTO DATA(s_mwdat).
1070 | CLEAR: modified.
1071 | LOOP AT bapitax INTO s_bapitax WHERE tax_code = s_document-mwskz AND acct_key = s_mwdat-ktosl.
1072 | CLEAR: s_amount.
1073 | READ TABLE amount WITH KEY itemno_acc = s_bapitax-itemno_acc INTO s_amount.
1074 | "To be on the safe side check equality of signs before tax position is added to existing position, this might not be necessary because we have already compared acct_key
1075 | IF sy-subrc = 0 AND ( ( s_amount-amt_doccur GE 0 AND s_mwdat-wmwst GE 0 ) OR ( s_amount-amt_doccur LT 0 AND s_mwdat-wmwst LT 0 ) ).
1076 | s_amount-amt_base = s_amount-amt_base + s_mwdat-kawrt.
1077 | s_amount-amt_doccur = s_amount-amt_doccur + s_mwdat-wmwst.
1078 | MODIFY amount FROM s_amount INDEX sy-tabix.
1079 | modified = abap_true.
1080 | ENDIF.
1081 | ENDLOOP.
1082 | IF modified = abap_false. "New tax position
1083 | CLEAR: s_amount, s_bapitax.
1084 | s_bapitax-itemno_acc = itemno_tax.
1085 | s_bapitax-tax_code = s_document-mwskz.
1086 | s_bapitax-gl_account = s_mwdat-hkont.
1087 | s_bapitax-acct_key = s_mwdat-ktosl.
1088 | APPEND s_bapitax TO bapitax.
1089 | s_amount-itemno_acc = itemno_tax.
1090 | s_amount-amt_base = s_mwdat-kawrt.
1091 | s_amount-amt_doccur = s_mwdat-wmwst.
1092 | s_amount-currency = s_document-waers.
1093 | s_amount-exch_rate = s_document-kursf.
1094 | s_amount-exch_rate_v = s_document-kursf_m.
1095 | APPEND s_amount TO amount.
1096 | SUBTRACT 1 FROM itemno_tax.
1097 | ENDIF.
1098 | ENDLOOP.
1099 |
1100 | ENDIF.
1101 |
1102 | IF s_document-lifnr IS NOT INITIAL.
1103 | s_vendor-itemno_acc = itemno.
1104 | s_vendor-vendor_no = s_document-lifnr.
1105 | s_vendor-item_text = s_document-sgtxt.
1106 | s_vendor-pmnttrms = s_document-zterm.
1107 | s_vendor-pmnt_block = s_document-zlspr.
1108 | s_vendor-ref_key_1 = s_document-xref1.
1109 | s_vendor-ref_key_2 = s_document-xref2.
1110 | s_vendor-ref_key_3 = s_document-xref3.
1111 | s_vendor-alloc_nmbr = s_document-zuonr.
1112 | s_vendor-bline_date = s_document-zfbdt.
1113 | s_vendor-w_tax_code = s_document-qsskz.
1114 | s_vendor-scbank_ind = s_document-lzbkz.
1115 | s_vendor-supcountry = s_document-landl.
1116 | s_vendor-sp_gl_ind = s_document-umskz.
1117 | s_vendor-partner_bk = s_document-bvtyp.
1118 | s_vendor-tax_code = s_document-mwskz.
1119 | s_vendor-profit_ctr = s_document-prctr.
1120 | APPEND s_vendor TO vendor.
1121 | s_amount-itemno_acc = itemno.
1122 | s_amount-currency = s_document-waers.
1123 | s_amount-amt_doccur = wrbtr.
1124 | s_amount-exch_rate = s_document-kursf.
1125 | s_amount-exch_rate_v = s_document-kursf_m.
1126 | APPEND s_amount TO amount.
1127 | ENDIF.
1128 |
1129 | IF s_document-kunnr IS NOT INITIAL.
1130 | s_customer-itemno_acc = itemno.
1131 | s_customer-customer = s_document-kunnr.
1132 | s_customer-item_text = s_document-sgtxt.
1133 | s_customer-pmnttrms = s_document-zterm.
1134 | s_customer-pmnt_block = s_document-zlspr.
1135 | s_customer-ref_key_1 = s_document-xref1.
1136 | s_customer-ref_key_2 = s_document-xref2.
1137 | s_customer-ref_key_3 = s_document-xref3.
1138 | s_customer-alloc_nmbr = s_document-zuonr.
1139 | s_customer-bline_date = s_document-zfbdt.
1140 | s_customer-dunn_block = s_document-mansp.
1141 | s_customer-scbank_ind = s_document-lzbkz.
1142 | s_customer-supcountry = s_document-landl.
1143 | s_customer-sp_gl_ind = s_document-umskz.
1144 | s_customer-partner_bk = s_document-bvtyp.
1145 | s_customer-tax_code = s_document-mwskz.
1146 | s_customer-profit_ctr = s_document-prctr.
1147 | APPEND s_customer TO customer.
1148 | s_amount-itemno_acc = itemno.
1149 | s_amount-currency = s_document-waers.
1150 | s_amount-amt_doccur = wrbtr.
1151 | s_amount-exch_rate = s_document-kursf.
1152 | s_amount-exch_rate_v = s_document-kursf_m.
1153 | APPEND s_amount TO amount.
1154 | ENDIF.
1155 |
1156 | ENDLOOP.
1157 |
1158 | IF me->strategy IS NOT INITIAL.
1159 | DATA posting_badi TYPE REF TO zodin_posting.
1160 | GET BADI posting_badi
1161 | FILTERS
1162 | strategy = me->strategy.
1163 | CALL BADI posting_badi->before
1164 | EXPORTING
1165 | document = document
1166 | CHANGING
1167 | documentheader = header
1168 | customercpd = customercpd
1169 | accountgl = glaccount
1170 | accountreceivable = customer
1171 | accountpayable = vendor
1172 | accounttax = bapitax
1173 | currencyamount = amount
1174 | extension2 = extension2
1175 | accountwt = wht.
1176 | ENDIF.
1177 |
1178 | IF me->simulation EQ abap_true.
1179 | CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
1180 | EXPORTING
1181 | documentheader = header
1182 | customercpd = customercpd
1183 | TABLES
1184 | accountgl = glaccount
1185 | accountreceivable = customer
1186 | accountpayable = vendor
1187 | accounttax = bapitax
1188 | currencyamount = amount
1189 | extension2 = extension2
1190 | accountwt = wht
1191 | return = bapiret.
1192 | ELSE.
1193 | CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
1194 | EXPORTING
1195 | documentheader = header
1196 | customercpd = customercpd
1197 | IMPORTING
1198 | obj_key = obj_key
1199 | TABLES
1200 | accountgl = glaccount
1201 | accountreceivable = customer
1202 | accountpayable = vendor
1203 | accounttax = bapitax
1204 | currencyamount = amount
1205 | extension2 = extension2
1206 | accountwt = wht
1207 | return = bapiret.
1208 | ENDIF.
1209 | LOOP AT bapiret INTO s_bapiret WHERE type = 'E' OR type = 'A'.
1210 | MESSAGE ID s_bapiret-id TYPE s_bapiret-type NUMBER s_bapiret-number WITH s_bapiret-message_v1 s_bapiret-message_v2 s_bapiret-message_v3 s_bapiret-message_v4 INTO msg.
1211 | IF sy-tabix = 2.
1212 | EXIT.
1213 | ENDIF.
1214 | ENDLOOP.
1215 | IF sy-subrc NE 0.
1216 | IF me->simulation NE abap_true.
1217 | belnr = obj_key(10).
1218 | bukrs = obj_key+10(4).
1219 | gjahr = obj_key+14(4).
1220 | ENDIF.
1221 | ELSE.
1222 | RAISE EXCEPTION TYPE zcx_odin EXPORTING text = msg.
1223 | ENDIF.
1224 | ENDMETHOD.
1225 |
1226 |
1227 | METHOD set_simulation.
1228 | me->simulation = simulation.
1229 | ENDMETHOD.
1230 |
1231 |
1232 | METHOD to_key_value.
1233 | DATA: s_external LIKE LINE OF t_external,
1234 | ls_fieldnames LIKE s_external,
1235 | l_index TYPE sy-index,
1236 | ls_key_value LIKE LINE OF t_key_value,
1237 | l_line TYPE i.
1238 | FIELD-SYMBOLS: TYPE any, TYPE any.
1239 |
1240 | "Get data format
1241 | READ TABLE t_external INTO ls_fieldnames INDEX 1.
1242 | DELETE t_external INDEX 1.
1243 |
1244 | LOOP AT t_external INTO s_external.
1245 |
1246 | ADD 1 TO l_line.
1247 |
1248 | DO.
1249 | CLEAR: ls_key_value.
1250 | UNASSIGN: , .
1251 | l_index = sy-index.
1252 | ASSIGN COMPONENT l_index OF STRUCTURE ls_fieldnames TO .
1253 | IF sy-subrc IS NOT INITIAL.
1254 | EXIT.
1255 | ENDIF.
1256 | IF IS NOT INITIAL.
1257 | ASSIGN COMPONENT l_index OF STRUCTURE s_external TO .
1258 | ls_key_value-key = .
1259 | ls_key_value-value = .
1260 | ls_key_value-line = l_line.
1261 | APPEND ls_key_value TO t_key_value.
1262 | ENDIF.
1263 | ENDDO.
1264 |
1265 | ENDLOOP.
1266 | ENDMETHOD.
1267 | ENDCLASS.
1268 |
--------------------------------------------------------------------------------
/src/zcl_odin_posting.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_ODIN_POSTING
7 | E
8 | FI document interface
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 000
18 | Counter
19 | 10
20 |
21 | -
22 | I
23 | 001
24 | Strategy
25 | 10
26 |
27 | -
28 | I
29 | 002
30 | Status
31 | 10
32 |
33 | -
34 | I
35 | 003
36 | Message
37 | 10
38 |
39 | -
40 | I
41 | 004
42 | Custom1
43 | 10
44 |
45 | -
46 | I
47 | 005
48 | Custom2
49 | 10
50 |
51 | -
52 | I
53 | 006
54 | Custom3
55 | 10
56 |
57 | -
58 | I
59 | 007
60 | Custom4
61 | 10
62 |
63 | -
64 | I
65 | 008
66 | Custom5
67 | 10
68 |
69 | -
70 | I
71 | 009
72 | Custom6
73 | 10
74 |
75 | -
76 | I
77 | 010
78 | Custom7
79 | 10
80 |
81 | -
82 | I
83 | 011
84 | Custom8
85 | 10
86 |
87 | -
88 | I
89 | 012
90 | Custom9
91 | 10
92 |
93 | -
94 | I
95 | 013
96 | Custom10
97 | 10
98 |
99 |
100 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/src/zcx_odin.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_ODIN definition
2 | public
3 | inheriting from CX_STATIC_CHECK
4 | create public .
5 |
6 | public section.
7 |
8 | constants ZCX_FDOC type SOTR_CONC value '005056977EF71EEB9AF9D255B6CC868D' ##NO_TEXT.
9 | data TEXT type STRING .
10 |
11 | methods CONSTRUCTOR
12 | importing
13 | !TEXTID like TEXTID optional
14 | !PREVIOUS like PREVIOUS optional
15 | !TEXT type STRING optional .
16 | protected section.
17 | private section.
18 | ENDCLASS.
19 |
20 |
21 |
22 | CLASS ZCX_ODIN IMPLEMENTATION.
23 |
24 |
25 | method CONSTRUCTOR ##ADT_SUPPRESS_GENERATION.
26 | CALL METHOD SUPER->CONSTRUCTOR
27 | EXPORTING
28 | TEXTID = TEXTID
29 | PREVIOUS = PREVIOUS
30 | .
31 | IF textid IS INITIAL.
32 | me->textid = ZCX_FDOC .
33 | ENDIF.
34 | me->TEXT = TEXT .
35 | endmethod.
36 | ENDCLASS.
37 |
--------------------------------------------------------------------------------
/src/zcx_odin.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_ODIN
7 | E
8 | Finc Doc
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 | -
17 |
18 | 005056977EF71EEB9AF9D255B6CC868D
19 | D
20 | 1
21 | CA==
22 |
23 |
24 |
25 | 005056977EF71EEB9AF9D255B6CC868D
26 | D
27 | 0001
28 | X
29 | R
30 | 255
31 | &TEXT&
32 |
33 |
34 |
35 |
36 |
37 |
38 | LIMU
39 |
40 | ZCX_ODIN
41 | 005056977EF71EEB9AF9D255B6CC868D
42 | 0001
43 |
44 |
45 |
46 |
47 | ZCX_ODIN
48 | CONSTRUCTOR
49 | D
50 | CONSTRUCTOR
51 |
52 |
53 | ZCX_ODIN
54 | CONSTRUCTOR
55 | E
56 | CONSTRUCTOR
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/src/zif_odin_mapping.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_odin_mapping
2 | PUBLIC .
3 |
4 |
5 | INTERFACES if_badi_interface .
6 |
7 | METHODS before
8 | CHANGING
9 | !external TYPE zodin_external_t
10 | RAISING
11 | zcx_odin .
12 | METHODS after
13 | IMPORTING
14 | VALUE(external) TYPE zodin_external_t
15 | VALUE(key_value) TYPE zodin_key_value_t
16 | CHANGING
17 | !internal TYPE zodin_internal_t
18 | RAISING
19 | zcx_odin .
20 | ENDINTERFACE.
21 |
--------------------------------------------------------------------------------
/src/zif_odin_mapping.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ODIN_MAPPING
7 | E
8 | Interface for BAdI: ZFDOC_MAPPING
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/zif_odin_posting.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_odin_posting
2 | PUBLIC .
3 |
4 |
5 | INTERFACES if_badi_interface .
6 |
7 | METHODS before
8 | IMPORTING
9 | VALUE(document) TYPE zodin_internal_t
10 | CHANGING
11 | !documentheader TYPE bapiache09
12 | !customercpd TYPE bapiacpa09
13 | !accountgl TYPE bapiacgl09_tab
14 | !accountreceivable TYPE bapiacar09_tab
15 | !accountpayable TYPE bapiacap09_tab
16 | !accounttax TYPE bapiactx09_tab
17 | !currencyamount TYPE bapiaccr09_tab
18 | !extension2 TYPE bapiparex_tab_ac
19 | !accountwt TYPE bapiacwt09_tab
20 | RAISING
21 | zcx_odin .
22 | METHODS after_pre_commit
23 | IMPORTING
24 | VALUE(obj_key) TYPE awkey
25 | VALUE(simulation) TYPE abap_bool
26 | VALUE(path_local) TYPE localfile
27 | VALUE(hex_file) TYPE xstring
28 | VALUE(path_server) TYPE string
29 | CHANGING
30 | !document TYPE zodin_internal_t
31 | RAISING
32 | zcx_odin .
33 | METHODS after_post_commit
34 | IMPORTING
35 | VALUE(obj_key) TYPE awkey
36 | VALUE(path_local) TYPE localfile
37 | VALUE(hex_file) TYPE xstring
38 | VALUE(path_server) TYPE string
39 | CHANGING
40 | !document TYPE zodin_internal_t
41 | RAISING
42 | zcx_odin .
43 | ENDINTERFACE.
44 |
--------------------------------------------------------------------------------
/src/zif_odin_posting.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_ODIN_POSTING
7 | E
8 | Interface for BAdI: ZFDOC_BOOKING
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/zodin.msag.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN
7 | E
8 |
9 |
10 |
11 | E
12 | ZODIN
13 | 001
14 | Currency within a document must be unique
15 |
16 |
17 | E
18 | ZODIN
19 | 005
20 | ALV-Grid Bug occured, please execute report balvbufdel
21 |
22 |
23 | E
24 | ZODIN
25 | 006
26 | Error when reading directory: &
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/zodin.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report Z_ODIN
3 | *&---------------------------------------------------------------------*
4 | *MIT License
5 | *
6 | *Copyright (c) 2021 71TECH
7 | *
8 | *Permission is hereby granted, free of charge, to any person obtaining a copy
9 | *of this software and associated documentation files (the "Software"), to deal
10 | *in the Software without restriction, including without limitation the rights
11 | *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | *copies of the Software, and to permit persons to whom the Software is
13 | *furnished to do so, subject to the following conditions:
14 | *
15 | *The above copyright notice and this permission notice shall be included in all
16 | *copies or substantial portions of the Software.
17 | *
18 | *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 | *SOFTWARE.
25 | *&---------------------------------------------------------------------*
26 |
27 | REPORT zodin.
28 |
29 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-bl1.
30 | PARAMETERS: p_infile TYPE rlgrap-filename.
31 | SELECTION-SCREEN END OF BLOCK b1.
32 | SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-bl3.
33 | PARAMETERS: p_srpath TYPE string LOWER CASE,
34 | p_bkpath TYPE string LOWER CASE.
35 | SELECTION-SCREEN END OF BLOCK b3.
36 | SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE TEXT-bl0.
37 | PARAMETERS: p_batch TYPE abap_bool AS CHECKBOX.
38 | SELECTION-SCREEN COMMENT 50(70) TEXT-c00 FOR FIELD p_batch.
39 | PARAMETERS: p_skprow TYPE i DEFAULT 0.
40 | SELECTION-SCREEN COMMENT 50(70) TEXT-c01 FOR FIELD p_skprow.
41 | SELECTION-SCREEN END OF BLOCK b0.
42 | SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-bl2.
43 | PARAMETERS: p_sep(1) DEFAULT ';',
44 | p_delim(1) DEFAULT '"',
45 | p_1000(1) DEFAULT '.',
46 | p_dec(1) DEFAULT ','.
47 | SELECTION-SCREEN END OF BLOCK b2.
48 |
49 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
50 | DATA: filetab TYPE filetable,
51 | filetab_s LIKE LINE OF filetab.
52 | DATA rc TYPE i.
53 | CALL METHOD cl_gui_frontend_services=>file_open_dialog
54 | EXPORTING
55 | window_title = 'Select a file'
56 | file_filter = 'Excel or csv (*.xlsx;*.xlsm;*.xls;*.csv)|*.xlsx;*.xlsm;*.xls;*.csv'
57 | CHANGING
58 | file_table = filetab
59 | rc = rc
60 | EXCEPTIONS
61 | file_open_dialog_failed = 1
62 | cntl_error = 2
63 | error_no_gui = 3
64 | not_supported_by_gui = 4
65 | OTHERS = 5.
66 | IF sy-subrc = 0.
67 | READ TABLE filetab INTO filetab_s INDEX 1.
68 | p_infile = filetab_s-filename.
69 | ENDIF.
70 |
71 | START-OF-SELECTION.
72 | TRY.
73 | IF sy-batch = abap_true OR p_batch = abap_true.
74 | DATA(simulation) = abap_false.
75 | ELSE.
76 | simulation = abap_true.
77 | ENDIF.
78 | DATA(cl_fin_doc) = NEW zcl_odin_posting(
79 | path_local = p_infile
80 | * hex_file = p_hexfil
81 | csv_separator = p_sep
82 | csv_delimiter = p_delim
83 | csv_decimal_separator = p_dec
84 | csv_thousands_separator = p_1000
85 | path_server = p_srpath
86 | path_server_backup = p_bkpath
87 | simulation = simulation
88 | skip_rows = p_skprow ).
89 | CATCH zcx_ODIN INTO DATA(cx_odin).
90 | DATA(error) = cx_odin->get_text( ).
91 | IF sy-batch = abap_false.
92 | MESSAGE error TYPE 'S' DISPLAY LIKE 'E'.
93 | LEAVE LIST-PROCESSING.
94 | ELSE.
95 | MESSAGE error TYPE 'E'.
96 | ENDIF.
97 | ENDTRY.
98 | TRY.
99 | cl_fin_doc->post( ).
100 | CATCH zcx_ODIN INTO cx_odin.
101 | error = cx_odin->get_text( ).
102 | MESSAGE error TYPE 'S' DISPLAY LIKE 'E'.
103 | ENDTRY.
104 | cl_fin_doc->display( report = sy-repid pfstatus = 'ALV2' ).
105 |
--------------------------------------------------------------------------------
/src/zodin.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN
7 | 1
8 | K
9 | E
10 | X
11 | X
12 |
13 |
14 |
15 | 000001
16 | 000001
17 |
18 |
19 |
20 | ALV2
21 | D
22 | 000001
23 | 000001
24 | 0001
25 | ALV Grid
26 |
27 |
28 |
29 |
30 | %PC
31 | 001
32 | S
33 | ICON_EXPORT
34 | @49@
35 | Local File...
36 |
37 |
38 | &ALL
39 | 001
40 | S
41 | ICON_SELECT_ALL
42 | @4B@
43 | Select all
44 |
45 |
46 | &AVE
47 | 001
48 | S
49 | ICON_ALV_VARIANT_SAVE
50 | @DN@
51 | Save Layout...
52 |
53 |
54 | &BUCH
55 | 001
56 | S
57 | ICON_EXECUTE_OBJECT
58 | @15@
59 | Buchen
60 | Buchen
61 | Buchen
62 |
63 |
64 | &ETA
65 | 001
66 | S
67 | ICON_SELECT_DETAIL
68 | @16@
69 | Choose detail
70 |
71 |
72 | &EXEC
73 | 001
74 | S
75 | ICON_EXECUTE_OBJECT
76 | @15@
77 | Post
78 |
79 |
80 | &F03
81 | 001
82 | S
83 | ICON_SYSTEM_UNDO
84 | @2W@
85 | Back
86 |
87 |
88 | &F12
89 | 001
90 | S
91 | ICON_CANCEL
92 | @0W@
93 | Cancel
94 |
95 |
96 | &F15
97 | 001
98 | S
99 | Exit
100 |
101 |
102 | &OAD
103 | 001
104 | S
105 | ICON_ALV_VARIANT_CHOOSE
106 | @DM@
107 | Select Layout...
108 |
109 |
110 | &ODN
111 | 001
112 | S
113 | ICON_SORT_DOWN
114 | @3F@
115 | Sort in descending order
116 |
117 |
118 | &OL0
119 | 001
120 | S
121 | ICON_ALV_VARIANTS
122 | @LZ@
123 | Change Layout...
124 |
125 |
126 | &OUP
127 | 001
128 | S
129 | ICON_SORT_UP
130 | @3E@
131 | Sort in ascending order
132 |
133 |
134 | &POST
135 | 001
136 | S
137 | ICON_EXECUTE_OBJECT
138 | @15@
139 | Post
140 | Post
141 | Post
142 |
143 |
144 | &RNT
145 | 001
146 | S
147 | ICON_PRINT
148 | @0X@
149 | Print
150 |
151 |
152 | &SAL
153 | 001
154 | S
155 | ICON_DESELECT_ALL
156 | @4D@
157 | Alle Mark. löschen
158 |
159 |
160 | &XXL
161 | 001
162 | S
163 | ICON_XXL
164 | @DJ@
165 | Spreadsheet...
166 |
167 |
168 | EX
169 | 001
170 | S
171 | ICON_EXECUTE_OBJECT
172 | @15@
173 | POST
174 |
175 |
176 | EXEC
177 | 001
178 | S
179 | ICON_EXECUTE_OBJECT
180 | @15@
181 | Post
182 |
183 |
184 | EXEC1
185 | 001
186 | S
187 | ICON_EXECUTE_OBJECT
188 | @15@
189 | POST
190 |
191 |
192 | P+
193 | 001
194 | S
195 | ICON_NEXT_PAGE
196 | @30@
197 | Nächste Seite
198 |
199 |
200 | P++
201 | 001
202 | S
203 | ICON_LAST_PAGE
204 | @31@
205 | Letzte Seite
206 |
207 |
208 | P-
209 | 001
210 | S
211 | ICON_PREVIOUS_PAGE
212 | @2Z@
213 | Vorige Seite
214 |
215 |
216 | P--
217 | 001
218 | S
219 | ICON_FIRST_PAGE
220 | @2Y@
221 | Erste Seite
222 |
223 |
224 |
225 |
226 | 000001
227 | 0001
228 | 01
229 | 13
230 |
231 |
232 | 000001
233 | 0001
234 | 04
235 | 28
236 |
237 |
238 | 000001
239 | 0001
240 | 05
241 | 40
242 |
243 |
244 | 000001
245 | 0001
246 | 06
247 | 43
248 |
249 |
250 | 000001
251 | 0001
252 | 07
253 | 45
254 |
255 |
256 | 000001
257 | 0001
258 | 08
259 | 32
260 |
261 |
262 | 000001
263 | 0001
264 | 09
265 | 33
266 |
267 |
268 | 000001
269 | 0001
270 | 10
271 | 34
272 |
273 |
274 | 000001
275 | 0001
276 | 11
277 | 08
278 |
279 |
280 |
281 |
282 | 000001
283 | 02
284 | &ETA
285 | 001
286 |
287 |
288 | 000001
289 | 03
290 | &F03
291 | 001
292 |
293 |
294 | 000001
295 | 08
296 | EXEC
297 | 001
298 |
299 |
300 | 000001
301 | 12
302 | &F12
303 | 001
304 |
305 |
306 | 000001
307 | 13
308 | &ETA
309 | 001
310 |
311 |
312 | 000001
313 | 15
314 | &F15
315 | 001
316 |
317 |
318 | 000001
319 | 28
320 | &OUP
321 | 001
322 |
323 |
324 | 000001
325 | 32
326 | &OL0
327 | 001
328 |
329 |
330 | 000001
331 | 33
332 | &OAD
333 | 001
334 |
335 |
336 | 000001
337 | 34
338 | &AVE
339 | 001
340 |
341 |
342 | 000001
343 | 40
344 | &ODN
345 | 001
346 |
347 |
348 | 000001
349 | 43
350 | &XXL
351 | 001
352 |
353 |
354 | 000001
355 | 45
356 | %PC
357 | 001
358 |
359 |
360 | 000001
361 | 80
362 | P--
363 | 001
364 |
365 |
366 | 000001
367 | 81
368 | P-
369 | 001
370 |
371 |
372 | 000001
373 | 82
374 | P+
375 | 001
376 |
377 |
378 | 000001
379 | 83
380 | P++
381 | 001
382 |
383 |
384 | 000001
385 | 86
386 | &RNT
387 | 001
388 |
389 |
390 |
391 |
392 | ALV2
393 | %PC
394 |
395 |
396 | ALV2
397 | &AVE
398 |
399 |
400 | ALV2
401 | &ETA
402 |
403 |
404 | ALV2
405 | &EXEC
406 |
407 |
408 | ALV2
409 | &F03
410 |
411 |
412 | ALV2
413 | &F12
414 |
415 |
416 | ALV2
417 | &F15
418 |
419 |
420 | ALV2
421 | &OAD
422 |
423 |
424 | ALV2
425 | &ODN
426 |
427 |
428 | ALV2
429 | &OL0
430 |
431 |
432 | ALV2
433 | &OUP
434 |
435 |
436 | ALV2
437 | &RNT
438 |
439 |
440 | ALV2
441 | &XXL
442 |
443 |
444 | ALV2
445 | EXEC
446 |
447 |
448 | ALV2
449 | P+
450 |
451 |
452 | ALV2
453 | P++
454 |
455 |
456 | ALV2
457 | P-
458 |
459 |
460 | ALV2
461 | P--
462 |
463 |
464 |
465 |
466 | A
467 | 000001
468 | D
469 | ALV Grid
470 |
471 |
472 | P
473 | 000001
474 | D
475 | ALV Grid
476 |
477 |
478 | B
479 | 000001
480 | 0001
481 | D
482 | ALV Grid
483 |
484 |
485 |
486 |
487 | -
488 | I
489 | 000
490 | Select a file
491 | 23
492 |
493 | -
494 | I
495 | BL0
496 | Settings
497 | 18
498 |
499 | -
500 | I
501 | BL1
502 | Local file
503 | 50
504 |
505 | -
506 | I
507 | BL2
508 | Options for csv files
509 | 50
510 |
511 | -
512 | I
513 | BL3
514 | Server file
515 | 50
516 |
517 | -
518 | I
519 | C00
520 | (Post in dialog without displaying list first)
521 | 70
522 |
523 | -
524 | I
525 | C01
526 | (Number of lines before heading line)
527 | 50
528 |
529 | -
530 | R
531 | Open Document Interface (ODIN)
532 | 30
533 |
534 | -
535 | S
536 | P_1000
537 | Thousands separator
538 | 27
539 |
540 | -
541 | S
542 | P_BATCH
543 | Force batch mode
544 | 24
545 |
546 | -
547 | S
548 | P_BKPATH
549 | Path file server backup
550 | 31
551 |
552 | -
553 | S
554 | P_DEC
555 | Decimal separator
556 | 25
557 |
558 | -
559 | S
560 | P_DELIM
561 | Delimiter
562 | 17
563 |
564 | -
565 | S
566 | P_INFILE
567 | Path file local
568 | 23
569 |
570 | -
571 | S
572 | P_SEP
573 | Separator
574 | 17
575 |
576 | -
577 | S
578 | P_SKPROW
579 | Skip rows
580 | 17
581 |
582 | -
583 | S
584 | P_SRPATH
585 | Path file server
586 | 24
587 |
588 |
589 |
590 | -
591 | D
592 |
593 |
-
594 | I
595 | 000
596 | Datei auswählen
597 | 23
598 |
599 | -
600 | I
601 | BL0
602 | Einstellungen
603 | 18
604 |
605 | -
606 | I
607 | BL1
608 | Lokale Datei
609 | 50
610 |
611 | -
612 | I
613 | BL2
614 | Optionen für csv-Dateien
615 | 50
616 |
617 | -
618 | I
619 | BL3
620 | Datei Server
621 | 50
622 |
623 | -
624 | I
625 | C00
626 | (Im Dialog buchen ohne vorherige Anzeige der Liste)
627 | 70
628 |
629 | -
630 | I
631 | C01
632 | (Anzahl Zeilen vor Überschriftszeile)
633 | 50
634 |
635 | -
636 | R
637 | Open Document Interface (ODIN)
638 | 70
639 |
640 | -
641 | S
642 | P_1000
643 | Tausendertrennzeichen
644 | 38
645 |
646 | -
647 | S
648 | P_BATCH
649 | Erzwinge Batch Modus
650 | 38
651 |
652 | -
653 | S
654 | P_BKPATH
655 | Dateipfad Backup
656 | 38
657 |
658 | -
659 | S
660 | P_DEC
661 | Dezimaltrennzeichen
662 | 38
663 |
664 | -
665 | S
666 | P_DELIM
667 | Delimiter
668 | 38
669 |
670 | -
671 | S
672 | P_INFILE
673 | Dateipfad lokal
674 | 38
675 |
676 | -
677 | S
678 | P_SEP
679 | Trennzeichen
680 | 38
681 |
682 | -
683 | S
684 | P_SKPROW
685 | Zeilen überspringen
686 | 38
687 |
688 | -
689 | S
690 | P_SRPATH
691 | Dateipfad Server
692 | 38
693 |
694 |
695 |
696 |
697 |
698 | -
699 |
700 | RE
701 |
702 | E
703 | E
704 | 0001
705 | X
706 | 00004
707 | R
708 |
709 |
710 | DOKU
711 | ZODIN
712 | RE
713 | E
714 | S_DOCU_SHOW
715 | S_DOCUS1
716 | 00001
717 | 072
718 |
719 |
720 |
721 | U1
722 | &PURPOSE&
723 |
724 |
725 | AS
726 | See https://github.com/71tech/ODIN
727 |
728 |
729 | U1
730 | &INTEGRATION&
731 |
732 |
733 | AS
734 |
735 |
736 | U1
737 | &PREREQUISITES&
738 |
739 |
740 | AS
741 |
742 |
743 | U1
744 | &FEATURES&
745 |
746 |
747 | AS
748 |
749 |
750 | U2
751 | &SELECTION&
752 |
753 |
754 | AS
755 |
756 |
757 | U2
758 | &STANDARD_VARIANTS&
759 |
760 |
761 | AS
762 |
763 |
764 | U2
765 | &OUTPUT&
766 |
767 |
768 | AS
769 |
770 |
771 | U1
772 | &ACTIVITIES&
773 |
774 |
775 | AS
776 |
777 |
778 | U1
779 | &EXAMPLE&
780 |
781 |
782 | AS
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
--------------------------------------------------------------------------------
/src/zodin.tran.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN
7 | ZODIN
8 | 1000
9 | gA==
10 |
11 |
12 | ZODIN
13 | 1
14 | X
15 | X
16 |
17 |
18 | E
19 | ZODIN
20 | Open Document Interface
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/zodin_acc.enho.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BADI_IMPL
6 | ODIN
7 | BADI_ACC_DOCUMENT
8 |
9 |
10 | BADI_ACC_DOCUMENT
11 | BADI_ACC_DOCUMENT
12 | ZODIN_ACC
13 | ZCL_ODIN_ACC
14 | X
15 | Implementation: Änderung des externen Beleges vor Aufruf des RW-Interface
16 | 005056977EF71EDBA5F48DED0DB33C4C
17 |
18 |
19 |
20 | -
21 |
22 | 005056977EF71EDBA5F48865196E7C37
23 | E
24 | 1
25 | AAI=
26 |
27 |
28 |
29 | 005056977EF71EDBA5F48865196E7C37
30 | E
31 | 0001
32 | X
33 | R
34 | 014
35 | ODIN
36 |
37 |
38 |
39 | -
40 |
41 | 005056977EF71EDBA5F48DED0DB33C4C
42 | E
43 | 1
44 | AAI=
45 |
46 |
47 |
48 | 005056977EF71EDBA5F48DED0DB33C4C
49 | E
50 | 0001
51 | X
52 | R
53 | 110
54 | Implementation: Änderung des externen Beleges vor Aufruf des RW-Interface
55 |
56 |
57 |
58 |
59 |
60 |
61 | R3TR
62 |
63 | ZODIN_ACC
64 | 005056977EF71EDBA5F48865196E7C37
65 | 0001
66 |
67 |
68 | R3TR
69 |
70 | ZODIN_ACC
71 | 005056977EF71EDBA5F48DED0DB33C4C
72 | 0001
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/src/zodin_alias.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_ALIAS
7 | E
8 | TRANSP
9 | X
10 | Alias field names
11 | X
12 | A
13 | 4
14 |
15 |
16 | ZODIN_ALIAS
17 | A
18 | 0
19 | APPL2
20 | N
21 |
22 |
23 |
24 | ZODIN_ALIAS
25 | CLNT
26 | 0001
27 | X
28 | MANDT
29 | 0
30 | X
31 | E
32 |
33 |
34 | ZODIN_ALIAS
35 | ALIAS_NAME
36 | 0002
37 | X
38 | ZODIN_ALIAS_NAME
39 | 0
40 | X
41 | E
42 |
43 |
44 | ZODIN_ALIAS
45 | STRATEGY
46 | 0003
47 | X
48 | ZODIN_STRATEGY
49 | 0
50 | X
51 | E
52 |
53 |
54 | ZODIN_ALIAS
55 | FIELD_NAME
56 | 0004
57 | NAME_FELD
58 | 0
59 | E
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/zodin_alias_name.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_ALIAS_NAME
7 | E
8 | 10
9 | 20
10 | Alias name
11 | Alias
12 | Alias name
13 | E
14 | CHAR
15 | 000070
16 | 000070
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/zodin_extension.enhs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BADI_DEF
6 | ODIN
7 |
8 |
9 | ZODIN_POSTING
10 | ZIF_ODIN_POSTING
11 | N
12 | Posting
13 | 005056977EF71EDBA2CAFA6329CDCED4
14 |
15 |
16 | STRATEGY
17 | S
18 |
19 |
20 |
21 |
22 | ZODIN_MAPPING
23 | ZIF_ODIN_MAPPING
24 | N
25 | Mapping
26 | 005056977EF71EDBA2CAFA6329CDEED4
27 |
28 |
29 | STRATEGY
30 | S
31 |
32 |
33 |
34 |
35 |
36 | -
37 |
38 | 005056977EF71EDBA2CAD8537D24EE92
39 | E
40 | 1
41 | AAE=
42 |
43 |
44 |
45 | 005056977EF71EDBA2CAD8537D24EE92
46 | E
47 | 0001
48 | X
49 | R
50 | 014
51 | ODIN
52 |
53 |
54 |
55 | -
56 |
57 | 005056977EF71EDBA2CAFA6329CDCED4
58 | E
59 | 1
60 | AAE=
61 |
62 |
63 |
64 | 005056977EF71EDBA2CAFA6329CDCED4
65 | E
66 | 0001
67 | X
68 | R
69 | 017
70 | Posting
71 |
72 |
73 |
74 | -
75 |
76 | 005056977EF71EDBA2CAFA6329CDEED4
77 | E
78 | 1
79 | AAE=
80 |
81 |
82 |
83 | 005056977EF71EDBA2CAFA6329CDEED4
84 | E
85 | 0001
86 | X
87 | R
88 | 017
89 | Mapping
90 |
91 |
92 |
93 |
94 |
95 |
96 | R3TR
97 |
98 | ZODIN_EXTENSION
99 | 005056977EF71EDBA2CAD8537D24EE92
100 | 0001
101 |
102 |
103 | R3TR
104 |
105 | ZODIN_EXTENSION
106 | 005056977EF71EDBA2CAFA6329CDCED4
107 | 0001
108 |
109 |
110 | R3TR
111 |
112 | ZODIN_EXTENSION
113 | 005056977EF71EDBA2CAFA6329CDEED4
114 | 0001
115 |
116 |
117 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/src/zodin_extension.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_EXTENSION
7 | E
8 | INTTAB
9 | Extension for BADI_ACC_DOCUMENT
10 | 4
11 |
12 |
13 |
14 | ZODIN_EXTENSION
15 | POSNR
16 | 0001
17 | POSNR_ACC
18 | 0
19 | E
20 |
21 |
22 | ZODIN_EXTENSION
23 | REBZG
24 | 0002
25 | REBZG
26 | 0
27 | E
28 |
29 |
30 | ZODIN_EXTENSION
31 | REBZJ
32 | 0003
33 | REBZJ
34 | 0
35 | E
36 |
37 |
38 | ZODIN_EXTENSION
39 | REBZZ
40 | 0004
41 | REBZZ
42 | 0
43 | E
44 |
45 |
46 | ZODIN_EXTENSION
47 | BSCHL
48 | 0005
49 | BSCHL
50 | 0
51 | E
52 |
53 |
54 | ZODIN_EXTENSION
55 | ANBWA
56 | 0006
57 | ANBWA
58 | 0
59 | E
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/zodin_external.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_EXTERNAL
7 | E
8 | INTTAB
9 | External
10 | 4
11 |
12 |
13 |
14 | ZODIN_EXTERNAL
15 | FIELD1
16 | E
17 | 0001
18 | 0
19 | g
20 | 000008
21 | STRG
22 | STRG
23 |
24 |
25 | ZODIN_EXTERNAL
26 | FIELD2
27 | E
28 | 0002
29 | 0
30 | g
31 | 000008
32 | STRG
33 | STRG
34 |
35 |
36 | ZODIN_EXTERNAL
37 | FIELD3
38 | E
39 | 0003
40 | 0
41 | g
42 | 000008
43 | STRG
44 | STRG
45 |
46 |
47 | ZODIN_EXTERNAL
48 | FIELD4
49 | E
50 | 0004
51 | 0
52 | g
53 | 000008
54 | STRG
55 | STRG
56 |
57 |
58 | ZODIN_EXTERNAL
59 | FIELD5
60 | E
61 | 0005
62 | 0
63 | g
64 | 000008
65 | STRG
66 | STRG
67 |
68 |
69 | ZODIN_EXTERNAL
70 | FIELD6
71 | E
72 | 0006
73 | 0
74 | g
75 | 000008
76 | STRG
77 | STRG
78 |
79 |
80 | ZODIN_EXTERNAL
81 | FIELD7
82 | E
83 | 0007
84 | 0
85 | g
86 | 000008
87 | STRG
88 | STRG
89 |
90 |
91 | ZODIN_EXTERNAL
92 | FIELD8
93 | E
94 | 0008
95 | 0
96 | g
97 | 000008
98 | STRG
99 | STRG
100 |
101 |
102 | ZODIN_EXTERNAL
103 | FIELD9
104 | E
105 | 0009
106 | 0
107 | g
108 | 000008
109 | STRG
110 | STRG
111 |
112 |
113 | ZODIN_EXTERNAL
114 | FIELD10
115 | E
116 | 0010
117 | 0
118 | g
119 | 000008
120 | STRG
121 | STRG
122 |
123 |
124 | ZODIN_EXTERNAL
125 | FIELD11
126 | E
127 | 0011
128 | 0
129 | g
130 | 000008
131 | STRG
132 | STRG
133 |
134 |
135 | ZODIN_EXTERNAL
136 | FIELD12
137 | E
138 | 0012
139 | 0
140 | g
141 | 000008
142 | STRG
143 | STRG
144 |
145 |
146 | ZODIN_EXTERNAL
147 | FIELD13
148 | E
149 | 0013
150 | 0
151 | g
152 | 000008
153 | STRG
154 | STRG
155 |
156 |
157 | ZODIN_EXTERNAL
158 | FIELD14
159 | E
160 | 0014
161 | 0
162 | g
163 | 000008
164 | STRG
165 | STRG
166 |
167 |
168 | ZODIN_EXTERNAL
169 | FIELD15
170 | E
171 | 0015
172 | 0
173 | g
174 | 000008
175 | STRG
176 | STRG
177 |
178 |
179 | ZODIN_EXTERNAL
180 | FIELD16
181 | E
182 | 0016
183 | 0
184 | g
185 | 000008
186 | STRG
187 | STRG
188 |
189 |
190 | ZODIN_EXTERNAL
191 | FIELD17
192 | E
193 | 0017
194 | 0
195 | g
196 | 000008
197 | STRG
198 | STRG
199 |
200 |
201 | ZODIN_EXTERNAL
202 | FIELD18
203 | E
204 | 0018
205 | 0
206 | g
207 | 000008
208 | STRG
209 | STRG
210 |
211 |
212 | ZODIN_EXTERNAL
213 | FIELD19
214 | E
215 | 0019
216 | 0
217 | g
218 | 000008
219 | STRG
220 | STRG
221 |
222 |
223 | ZODIN_EXTERNAL
224 | FIELD20
225 | E
226 | 0020
227 | 0
228 | g
229 | 000008
230 | STRG
231 | STRG
232 |
233 |
234 | ZODIN_EXTERNAL
235 | FIELD21
236 | E
237 | 0021
238 | 0
239 | g
240 | 000008
241 | STRG
242 | STRG
243 |
244 |
245 | ZODIN_EXTERNAL
246 | FIELD22
247 | E
248 | 0022
249 | 0
250 | g
251 | 000008
252 | STRG
253 | STRG
254 |
255 |
256 | ZODIN_EXTERNAL
257 | FIELD23
258 | E
259 | 0023
260 | 0
261 | g
262 | 000008
263 | STRG
264 | STRG
265 |
266 |
267 | ZODIN_EXTERNAL
268 | FIELD24
269 | E
270 | 0024
271 | 0
272 | g
273 | 000008
274 | STRG
275 | STRG
276 |
277 |
278 | ZODIN_EXTERNAL
279 | FIELD25
280 | E
281 | 0025
282 | 0
283 | g
284 | 000008
285 | STRG
286 | STRG
287 |
288 |
289 | ZODIN_EXTERNAL
290 | FIELD26
291 | E
292 | 0026
293 | 0
294 | g
295 | 000008
296 | STRG
297 | STRG
298 |
299 |
300 | ZODIN_EXTERNAL
301 | FIELD27
302 | E
303 | 0027
304 | 0
305 | g
306 | 000008
307 | STRG
308 | STRG
309 |
310 |
311 | ZODIN_EXTERNAL
312 | FIELD28
313 | E
314 | 0028
315 | 0
316 | g
317 | 000008
318 | STRG
319 | STRG
320 |
321 |
322 | ZODIN_EXTERNAL
323 | FIELD29
324 | E
325 | 0029
326 | 0
327 | g
328 | 000008
329 | STRG
330 | STRG
331 |
332 |
333 | ZODIN_EXTERNAL
334 | FIELD30
335 | E
336 | 0030
337 | 0
338 | g
339 | 000008
340 | STRG
341 | STRG
342 |
343 |
344 | ZODIN_EXTERNAL
345 | FIELD31
346 | E
347 | 0031
348 | 0
349 | g
350 | 000008
351 | STRG
352 | STRG
353 |
354 |
355 | ZODIN_EXTERNAL
356 | FIELD32
357 | E
358 | 0032
359 | 0
360 | g
361 | 000008
362 | STRG
363 | STRG
364 |
365 |
366 | ZODIN_EXTERNAL
367 | FIELD33
368 | E
369 | 0033
370 | 0
371 | g
372 | 000008
373 | STRG
374 | STRG
375 |
376 |
377 | ZODIN_EXTERNAL
378 | FIELD34
379 | E
380 | 0034
381 | 0
382 | g
383 | 000008
384 | STRG
385 | STRG
386 |
387 |
388 | ZODIN_EXTERNAL
389 | FIELD35
390 | E
391 | 0035
392 | 0
393 | g
394 | 000008
395 | STRG
396 | STRG
397 |
398 |
399 | ZODIN_EXTERNAL
400 | FIELD36
401 | E
402 | 0036
403 | 0
404 | g
405 | 000008
406 | STRG
407 | STRG
408 |
409 |
410 | ZODIN_EXTERNAL
411 | FIELD37
412 | E
413 | 0037
414 | 0
415 | g
416 | 000008
417 | STRG
418 | STRG
419 |
420 |
421 | ZODIN_EXTERNAL
422 | FIELD38
423 | E
424 | 0038
425 | 0
426 | g
427 | 000008
428 | STRG
429 | STRG
430 |
431 |
432 | ZODIN_EXTERNAL
433 | FIELD39
434 | E
435 | 0039
436 | 0
437 | g
438 | 000008
439 | STRG
440 | STRG
441 |
442 |
443 | ZODIN_EXTERNAL
444 | FIELD40
445 | E
446 | 0040
447 | 0
448 | g
449 | 000008
450 | STRG
451 | STRG
452 |
453 |
454 | ZODIN_EXTERNAL
455 | FIELD41
456 | E
457 | 0041
458 | 0
459 | g
460 | 000008
461 | STRG
462 | STRG
463 |
464 |
465 | ZODIN_EXTERNAL
466 | FIELD42
467 | E
468 | 0042
469 | 0
470 | g
471 | 000008
472 | STRG
473 | STRG
474 |
475 |
476 | ZODIN_EXTERNAL
477 | FIELD43
478 | E
479 | 0043
480 | 0
481 | g
482 | 000008
483 | STRG
484 | STRG
485 |
486 |
487 | ZODIN_EXTERNAL
488 | FIELD44
489 | E
490 | 0044
491 | 0
492 | g
493 | 000008
494 | STRG
495 | STRG
496 |
497 |
498 | ZODIN_EXTERNAL
499 | FIELD45
500 | E
501 | 0045
502 | 0
503 | g
504 | 000008
505 | STRG
506 | STRG
507 |
508 |
509 | ZODIN_EXTERNAL
510 | FIELD46
511 | E
512 | 0046
513 | 0
514 | g
515 | 000008
516 | STRG
517 | STRG
518 |
519 |
520 | ZODIN_EXTERNAL
521 | FIELD47
522 | E
523 | 0047
524 | 0
525 | g
526 | 000008
527 | STRG
528 | STRG
529 |
530 |
531 | ZODIN_EXTERNAL
532 | FIELD48
533 | E
534 | 0048
535 | 0
536 | g
537 | 000008
538 | STRG
539 | STRG
540 |
541 |
542 | ZODIN_EXTERNAL
543 | FIELD49
544 | E
545 | 0049
546 | 0
547 | g
548 | 000008
549 | STRG
550 | STRG
551 |
552 |
553 | ZODIN_EXTERNAL
554 | FIELD50
555 | E
556 | 0050
557 | 0
558 | g
559 | 000008
560 | STRG
561 | STRG
562 |
563 |
564 | ZODIN_EXTERNAL
565 | FIELD51
566 | E
567 | 0051
568 | 0
569 | g
570 | 000008
571 | STRG
572 | STRG
573 |
574 |
575 | ZODIN_EXTERNAL
576 | FIELD52
577 | E
578 | 0052
579 | 0
580 | g
581 | 000008
582 | STRG
583 | STRG
584 |
585 |
586 | ZODIN_EXTERNAL
587 | FIELD53
588 | E
589 | 0053
590 | 0
591 | g
592 | 000008
593 | STRG
594 | STRG
595 |
596 |
597 | ZODIN_EXTERNAL
598 | FIELD54
599 | E
600 | 0054
601 | 0
602 | g
603 | 000008
604 | STRG
605 | STRG
606 |
607 |
608 | ZODIN_EXTERNAL
609 | FIELD55
610 | E
611 | 0055
612 | 0
613 | g
614 | 000008
615 | STRG
616 | STRG
617 |
618 |
619 | ZODIN_EXTERNAL
620 | FIELD56
621 | E
622 | 0056
623 | 0
624 | g
625 | 000008
626 | STRG
627 | STRG
628 |
629 |
630 | ZODIN_EXTERNAL
631 | FIELD57
632 | E
633 | 0057
634 | 0
635 | g
636 | 000008
637 | STRG
638 | STRG
639 |
640 |
641 | ZODIN_EXTERNAL
642 | FIELD58
643 | E
644 | 0058
645 | 0
646 | g
647 | 000008
648 | STRG
649 | STRG
650 |
651 |
652 | ZODIN_EXTERNAL
653 | FIELD59
654 | E
655 | 0059
656 | 0
657 | g
658 | 000008
659 | STRG
660 | STRG
661 |
662 |
663 | ZODIN_EXTERNAL
664 | FIELD60
665 | E
666 | 0060
667 | 0
668 | g
669 | 000008
670 | STRG
671 | STRG
672 |
673 |
674 | ZODIN_EXTERNAL
675 | FIELD61
676 | E
677 | 0061
678 | 0
679 | g
680 | 000008
681 | STRG
682 | STRG
683 |
684 |
685 | ZODIN_EXTERNAL
686 | FIELD62
687 | E
688 | 0062
689 | 0
690 | g
691 | 000008
692 | STRG
693 | STRG
694 |
695 |
696 | ZODIN_EXTERNAL
697 | FIELD63
698 | E
699 | 0063
700 | 0
701 | g
702 | 000008
703 | STRG
704 | STRG
705 |
706 |
707 | ZODIN_EXTERNAL
708 | FIELD64
709 | E
710 | 0064
711 | 0
712 | g
713 | 000008
714 | STRG
715 | STRG
716 |
717 |
718 | ZODIN_EXTERNAL
719 | FIELD65
720 | E
721 | 0065
722 | 0
723 | g
724 | 000008
725 | STRG
726 | STRG
727 |
728 |
729 | ZODIN_EXTERNAL
730 | FIELD66
731 | E
732 | 0066
733 | 0
734 | g
735 | 000008
736 | STRG
737 | STRG
738 |
739 |
740 | ZODIN_EXTERNAL
741 | FIELD67
742 | E
743 | 0067
744 | 0
745 | g
746 | 000008
747 | STRG
748 | STRG
749 |
750 |
751 | ZODIN_EXTERNAL
752 | FIELD68
753 | E
754 | 0068
755 | 0
756 | g
757 | 000008
758 | STRG
759 | STRG
760 |
761 |
762 | ZODIN_EXTERNAL
763 | FIELD69
764 | E
765 | 0069
766 | 0
767 | g
768 | 000008
769 | STRG
770 | STRG
771 |
772 |
773 | ZODIN_EXTERNAL
774 | FIELD70
775 | E
776 | 0070
777 | 0
778 | g
779 | 000008
780 | STRG
781 | STRG
782 |
783 |
784 | ZODIN_EXTERNAL
785 | FIELD71
786 | E
787 | 0071
788 | 0
789 | g
790 | 000008
791 | STRG
792 | STRG
793 |
794 |
795 | ZODIN_EXTERNAL
796 | FIELD72
797 | E
798 | 0072
799 | 0
800 | g
801 | 000008
802 | STRG
803 | STRG
804 |
805 |
806 | ZODIN_EXTERNAL
807 | FIELD73
808 | E
809 | 0073
810 | 0
811 | g
812 | 000008
813 | STRG
814 | STRG
815 |
816 |
817 | ZODIN_EXTERNAL
818 | FIELD74
819 | E
820 | 0074
821 | 0
822 | g
823 | 000008
824 | STRG
825 | STRG
826 |
827 |
828 | ZODIN_EXTERNAL
829 | FIELD75
830 | E
831 | 0075
832 | 0
833 | g
834 | 000008
835 | STRG
836 | STRG
837 |
838 |
839 | ZODIN_EXTERNAL
840 | FIELD76
841 | E
842 | 0076
843 | 0
844 | g
845 | 000008
846 | STRG
847 | STRG
848 |
849 |
850 | ZODIN_EXTERNAL
851 | FIELD77
852 | E
853 | 0077
854 | 0
855 | g
856 | 000008
857 | STRG
858 | STRG
859 |
860 |
861 | ZODIN_EXTERNAL
862 | FIELD78
863 | E
864 | 0078
865 | 0
866 | g
867 | 000008
868 | STRG
869 | STRG
870 |
871 |
872 | ZODIN_EXTERNAL
873 | FIELD79
874 | E
875 | 0079
876 | 0
877 | g
878 | 000008
879 | STRG
880 | STRG
881 |
882 |
883 | ZODIN_EXTERNAL
884 | FIELD80
885 | E
886 | 0080
887 | 0
888 | g
889 | 000008
890 | STRG
891 | STRG
892 |
893 |
894 |
895 |
896 |
897 |
--------------------------------------------------------------------------------
/src/zodin_external_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_EXTERNAL_T
7 | E
8 | ZODIN_EXTERNAL
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | External
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/zodin_input_csv.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_INPUT_CSV
7 | E
8 | INTTAB
9 | Input
10 | 4
11 |
12 |
13 |
14 | ZODIN_INPUT_CSV
15 | FIELD1
16 | E
17 | 0001
18 | 0
19 | C
20 | 000510
21 | CHAR
22 | 000255
23 | CHAR
24 |
25 |
26 | ZODIN_INPUT_CSV
27 | FIELD2
28 | E
29 | 0002
30 | 0
31 | C
32 | 000510
33 | CHAR
34 | 000255
35 | CHAR
36 |
37 |
38 | ZODIN_INPUT_CSV
39 | FIELD3
40 | E
41 | 0003
42 | 0
43 | C
44 | 000510
45 | CHAR
46 | 000255
47 | CHAR
48 |
49 |
50 | ZODIN_INPUT_CSV
51 | FIELD4
52 | E
53 | 0004
54 | 0
55 | C
56 | 000510
57 | CHAR
58 | 000255
59 | CHAR
60 |
61 |
62 | ZODIN_INPUT_CSV
63 | FIELD5
64 | E
65 | 0005
66 | 0
67 | C
68 | 000510
69 | CHAR
70 | 000255
71 | CHAR
72 |
73 |
74 | ZODIN_INPUT_CSV
75 | FIELD6
76 | E
77 | 0006
78 | 0
79 | C
80 | 000510
81 | CHAR
82 | 000255
83 | CHAR
84 |
85 |
86 | ZODIN_INPUT_CSV
87 | FIELD7
88 | E
89 | 0007
90 | 0
91 | C
92 | 000510
93 | CHAR
94 | 000255
95 | CHAR
96 |
97 |
98 | ZODIN_INPUT_CSV
99 | FIELD8
100 | E
101 | 0008
102 | 0
103 | C
104 | 000510
105 | CHAR
106 | 000255
107 | CHAR
108 |
109 |
110 | ZODIN_INPUT_CSV
111 | FIELD9
112 | E
113 | 0009
114 | 0
115 | C
116 | 000510
117 | CHAR
118 | 000255
119 | CHAR
120 |
121 |
122 | ZODIN_INPUT_CSV
123 | FIELD10
124 | E
125 | 0010
126 | 0
127 | C
128 | 000510
129 | CHAR
130 | 000255
131 | CHAR
132 |
133 |
134 | ZODIN_INPUT_CSV
135 | FIELD11
136 | E
137 | 0011
138 | 0
139 | C
140 | 000510
141 | CHAR
142 | 000255
143 | CHAR
144 |
145 |
146 | ZODIN_INPUT_CSV
147 | FIELD12
148 | E
149 | 0012
150 | 0
151 | C
152 | 000510
153 | CHAR
154 | 000255
155 | CHAR
156 |
157 |
158 | ZODIN_INPUT_CSV
159 | FIELD13
160 | E
161 | 0013
162 | 0
163 | C
164 | 000510
165 | CHAR
166 | 000255
167 | CHAR
168 |
169 |
170 | ZODIN_INPUT_CSV
171 | FIELD14
172 | E
173 | 0014
174 | 0
175 | C
176 | 000510
177 | CHAR
178 | 000255
179 | CHAR
180 |
181 |
182 | ZODIN_INPUT_CSV
183 | FIELD15
184 | E
185 | 0015
186 | 0
187 | C
188 | 000510
189 | CHAR
190 | 000255
191 | CHAR
192 |
193 |
194 | ZODIN_INPUT_CSV
195 | FIELD16
196 | E
197 | 0016
198 | 0
199 | C
200 | 000510
201 | CHAR
202 | 000255
203 | CHAR
204 |
205 |
206 | ZODIN_INPUT_CSV
207 | FIELD17
208 | E
209 | 0017
210 | 0
211 | C
212 | 000510
213 | CHAR
214 | 000255
215 | CHAR
216 |
217 |
218 | ZODIN_INPUT_CSV
219 | FIELD18
220 | E
221 | 0018
222 | 0
223 | C
224 | 000510
225 | CHAR
226 | 000255
227 | CHAR
228 |
229 |
230 | ZODIN_INPUT_CSV
231 | FIELD19
232 | E
233 | 0019
234 | 0
235 | C
236 | 000510
237 | CHAR
238 | 000255
239 | CHAR
240 |
241 |
242 | ZODIN_INPUT_CSV
243 | FIELD20
244 | E
245 | 0020
246 | 0
247 | C
248 | 000510
249 | CHAR
250 | 000255
251 | CHAR
252 |
253 |
254 | ZODIN_INPUT_CSV
255 | FIELD21
256 | E
257 | 0021
258 | 0
259 | C
260 | 000510
261 | CHAR
262 | 000255
263 | CHAR
264 |
265 |
266 | ZODIN_INPUT_CSV
267 | FIELD22
268 | E
269 | 0022
270 | 0
271 | C
272 | 000510
273 | CHAR
274 | 000255
275 | CHAR
276 |
277 |
278 | ZODIN_INPUT_CSV
279 | FIELD23
280 | E
281 | 0023
282 | 0
283 | C
284 | 000510
285 | CHAR
286 | 000255
287 | CHAR
288 |
289 |
290 | ZODIN_INPUT_CSV
291 | FIELD24
292 | E
293 | 0024
294 | 0
295 | C
296 | 000510
297 | CHAR
298 | 000255
299 | CHAR
300 |
301 |
302 | ZODIN_INPUT_CSV
303 | FIELD25
304 | E
305 | 0025
306 | 0
307 | C
308 | 000510
309 | CHAR
310 | 000255
311 | CHAR
312 |
313 |
314 | ZODIN_INPUT_CSV
315 | FIELD26
316 | E
317 | 0026
318 | 0
319 | C
320 | 000510
321 | CHAR
322 | 000255
323 | CHAR
324 |
325 |
326 | ZODIN_INPUT_CSV
327 | FIELD27
328 | E
329 | 0027
330 | 0
331 | C
332 | 000510
333 | CHAR
334 | 000255
335 | CHAR
336 |
337 |
338 | ZODIN_INPUT_CSV
339 | FIELD28
340 | E
341 | 0028
342 | 0
343 | C
344 | 000510
345 | CHAR
346 | 000255
347 | CHAR
348 |
349 |
350 | ZODIN_INPUT_CSV
351 | FIELD29
352 | E
353 | 0029
354 | 0
355 | C
356 | 000510
357 | CHAR
358 | 000255
359 | CHAR
360 |
361 |
362 | ZODIN_INPUT_CSV
363 | FIELD30
364 | E
365 | 0030
366 | 0
367 | C
368 | 000510
369 | CHAR
370 | 000255
371 | CHAR
372 |
373 |
374 | ZODIN_INPUT_CSV
375 | FIELD31
376 | E
377 | 0031
378 | 0
379 | C
380 | 000510
381 | CHAR
382 | 000255
383 | CHAR
384 |
385 |
386 | ZODIN_INPUT_CSV
387 | FIELD32
388 | E
389 | 0032
390 | 0
391 | C
392 | 000510
393 | CHAR
394 | 000255
395 | CHAR
396 |
397 |
398 | ZODIN_INPUT_CSV
399 | FIELD33
400 | E
401 | 0033
402 | 0
403 | C
404 | 000510
405 | CHAR
406 | 000255
407 | CHAR
408 |
409 |
410 | ZODIN_INPUT_CSV
411 | FIELD34
412 | E
413 | 0034
414 | 0
415 | C
416 | 000510
417 | CHAR
418 | 000255
419 | CHAR
420 |
421 |
422 | ZODIN_INPUT_CSV
423 | FIELD35
424 | E
425 | 0035
426 | 0
427 | C
428 | 000510
429 | CHAR
430 | 000255
431 | CHAR
432 |
433 |
434 | ZODIN_INPUT_CSV
435 | FIELD36
436 | E
437 | 0036
438 | 0
439 | C
440 | 000510
441 | CHAR
442 | 000255
443 | CHAR
444 |
445 |
446 | ZODIN_INPUT_CSV
447 | FIELD37
448 | E
449 | 0037
450 | 0
451 | C
452 | 000510
453 | CHAR
454 | 000255
455 | CHAR
456 |
457 |
458 | ZODIN_INPUT_CSV
459 | FIELD38
460 | E
461 | 0038
462 | 0
463 | C
464 | 000510
465 | CHAR
466 | 000255
467 | CHAR
468 |
469 |
470 | ZODIN_INPUT_CSV
471 | FIELD39
472 | E
473 | 0039
474 | 0
475 | C
476 | 000510
477 | CHAR
478 | 000255
479 | CHAR
480 |
481 |
482 | ZODIN_INPUT_CSV
483 | FIELD40
484 | E
485 | 0040
486 | 0
487 | C
488 | 000510
489 | CHAR
490 | 000255
491 | CHAR
492 |
493 |
494 | ZODIN_INPUT_CSV
495 | FIELD41
496 | E
497 | 0041
498 | 0
499 | C
500 | 000510
501 | CHAR
502 | 000255
503 | CHAR
504 |
505 |
506 | ZODIN_INPUT_CSV
507 | FIELD42
508 | E
509 | 0042
510 | 0
511 | C
512 | 000510
513 | CHAR
514 | 000255
515 | CHAR
516 |
517 |
518 | ZODIN_INPUT_CSV
519 | FIELD43
520 | E
521 | 0043
522 | 0
523 | C
524 | 000510
525 | CHAR
526 | 000255
527 | CHAR
528 |
529 |
530 | ZODIN_INPUT_CSV
531 | FIELD44
532 | E
533 | 0044
534 | 0
535 | C
536 | 000510
537 | CHAR
538 | 000255
539 | CHAR
540 |
541 |
542 | ZODIN_INPUT_CSV
543 | FIELD45
544 | E
545 | 0045
546 | 0
547 | C
548 | 000510
549 | CHAR
550 | 000255
551 | CHAR
552 |
553 |
554 | ZODIN_INPUT_CSV
555 | FIELD46
556 | E
557 | 0046
558 | 0
559 | C
560 | 000510
561 | CHAR
562 | 000255
563 | CHAR
564 |
565 |
566 | ZODIN_INPUT_CSV
567 | FIELD47
568 | E
569 | 0047
570 | 0
571 | C
572 | 000510
573 | CHAR
574 | 000255
575 | CHAR
576 |
577 |
578 | ZODIN_INPUT_CSV
579 | FIELD48
580 | E
581 | 0048
582 | 0
583 | C
584 | 000510
585 | CHAR
586 | 000255
587 | CHAR
588 |
589 |
590 | ZODIN_INPUT_CSV
591 | FIELD49
592 | E
593 | 0049
594 | 0
595 | C
596 | 000510
597 | CHAR
598 | 000255
599 | CHAR
600 |
601 |
602 | ZODIN_INPUT_CSV
603 | FIELD50
604 | E
605 | 0050
606 | 0
607 | C
608 | 000510
609 | CHAR
610 | 000255
611 | CHAR
612 |
613 |
614 | ZODIN_INPUT_CSV
615 | FIELD51
616 | E
617 | 0051
618 | 0
619 | C
620 | 000510
621 | CHAR
622 | 000255
623 | CHAR
624 |
625 |
626 | ZODIN_INPUT_CSV
627 | FIELD52
628 | E
629 | 0052
630 | 0
631 | C
632 | 000510
633 | CHAR
634 | 000255
635 | CHAR
636 |
637 |
638 | ZODIN_INPUT_CSV
639 | FIELD53
640 | E
641 | 0053
642 | 0
643 | C
644 | 000510
645 | CHAR
646 | 000255
647 | CHAR
648 |
649 |
650 | ZODIN_INPUT_CSV
651 | FIELD54
652 | E
653 | 0054
654 | 0
655 | C
656 | 000510
657 | CHAR
658 | 000255
659 | CHAR
660 |
661 |
662 | ZODIN_INPUT_CSV
663 | FIELD55
664 | E
665 | 0055
666 | 0
667 | C
668 | 000510
669 | CHAR
670 | 000255
671 | CHAR
672 |
673 |
674 | ZODIN_INPUT_CSV
675 | FIELD56
676 | E
677 | 0056
678 | 0
679 | C
680 | 000510
681 | CHAR
682 | 000255
683 | CHAR
684 |
685 |
686 | ZODIN_INPUT_CSV
687 | FIELD57
688 | E
689 | 0057
690 | 0
691 | C
692 | 000510
693 | CHAR
694 | 000255
695 | CHAR
696 |
697 |
698 | ZODIN_INPUT_CSV
699 | FIELD58
700 | E
701 | 0058
702 | 0
703 | C
704 | 000510
705 | CHAR
706 | 000255
707 | CHAR
708 |
709 |
710 | ZODIN_INPUT_CSV
711 | FIELD59
712 | E
713 | 0059
714 | 0
715 | C
716 | 000510
717 | CHAR
718 | 000255
719 | CHAR
720 |
721 |
722 | ZODIN_INPUT_CSV
723 | FIELD60
724 | E
725 | 0060
726 | 0
727 | C
728 | 000510
729 | CHAR
730 | 000255
731 | CHAR
732 |
733 |
734 | ZODIN_INPUT_CSV
735 | FIELD61
736 | E
737 | 0061
738 | 0
739 | C
740 | 000510
741 | CHAR
742 | 000255
743 | CHAR
744 |
745 |
746 | ZODIN_INPUT_CSV
747 | FIELD62
748 | E
749 | 0062
750 | 0
751 | C
752 | 000510
753 | CHAR
754 | 000255
755 | CHAR
756 |
757 |
758 | ZODIN_INPUT_CSV
759 | FIELD63
760 | E
761 | 0063
762 | 0
763 | C
764 | 000510
765 | CHAR
766 | 000255
767 | CHAR
768 |
769 |
770 | ZODIN_INPUT_CSV
771 | FIELD64
772 | E
773 | 0064
774 | 0
775 | C
776 | 000510
777 | CHAR
778 | 000255
779 | CHAR
780 |
781 |
782 | ZODIN_INPUT_CSV
783 | FIELD65
784 | E
785 | 0065
786 | 0
787 | C
788 | 000510
789 | CHAR
790 | 000255
791 | CHAR
792 |
793 |
794 | ZODIN_INPUT_CSV
795 | FIELD66
796 | E
797 | 0066
798 | 0
799 | C
800 | 000510
801 | CHAR
802 | 000255
803 | CHAR
804 |
805 |
806 | ZODIN_INPUT_CSV
807 | FIELD67
808 | E
809 | 0067
810 | 0
811 | C
812 | 000510
813 | CHAR
814 | 000255
815 | CHAR
816 |
817 |
818 | ZODIN_INPUT_CSV
819 | FIELD68
820 | E
821 | 0068
822 | 0
823 | C
824 | 000510
825 | CHAR
826 | 000255
827 | CHAR
828 |
829 |
830 | ZODIN_INPUT_CSV
831 | FIELD69
832 | E
833 | 0069
834 | 0
835 | C
836 | 000510
837 | CHAR
838 | 000255
839 | CHAR
840 |
841 |
842 | ZODIN_INPUT_CSV
843 | FIELD70
844 | E
845 | 0070
846 | 0
847 | C
848 | 000510
849 | CHAR
850 | 000255
851 | CHAR
852 |
853 |
854 | ZODIN_INPUT_CSV
855 | FIELD71
856 | E
857 | 0071
858 | 0
859 | C
860 | 000510
861 | CHAR
862 | 000255
863 | CHAR
864 |
865 |
866 | ZODIN_INPUT_CSV
867 | FIELD72
868 | E
869 | 0072
870 | 0
871 | C
872 | 000510
873 | CHAR
874 | 000255
875 | CHAR
876 |
877 |
878 | ZODIN_INPUT_CSV
879 | FIELD73
880 | E
881 | 0073
882 | 0
883 | C
884 | 000510
885 | CHAR
886 | 000255
887 | CHAR
888 |
889 |
890 | ZODIN_INPUT_CSV
891 | FIELD74
892 | E
893 | 0074
894 | 0
895 | C
896 | 000510
897 | CHAR
898 | 000255
899 | CHAR
900 |
901 |
902 | ZODIN_INPUT_CSV
903 | FIELD75
904 | E
905 | 0075
906 | 0
907 | C
908 | 000510
909 | CHAR
910 | 000255
911 | CHAR
912 |
913 |
914 | ZODIN_INPUT_CSV
915 | FIELD76
916 | E
917 | 0076
918 | 0
919 | C
920 | 000510
921 | CHAR
922 | 000255
923 | CHAR
924 |
925 |
926 | ZODIN_INPUT_CSV
927 | FIELD77
928 | E
929 | 0077
930 | 0
931 | C
932 | 000510
933 | CHAR
934 | 000255
935 | CHAR
936 |
937 |
938 | ZODIN_INPUT_CSV
939 | FIELD78
940 | E
941 | 0078
942 | 0
943 | C
944 | 000510
945 | CHAR
946 | 000255
947 | CHAR
948 |
949 |
950 | ZODIN_INPUT_CSV
951 | FIELD79
952 | E
953 | 0079
954 | 0
955 | C
956 | 000510
957 | CHAR
958 | 000255
959 | CHAR
960 |
961 |
962 | ZODIN_INPUT_CSV
963 | FIELD80
964 | E
965 | 0080
966 | 0
967 | C
968 | 000510
969 | CHAR
970 | 000255
971 | CHAR
972 |
973 |
974 |
975 |
976 |
977 |
--------------------------------------------------------------------------------
/src/zodin_internal.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_INTERNAL
7 | E
8 | INTTAB
9 | Internal
10 | 4
11 |
12 |
13 |
14 | ZODIN_INTERNAL
15 | COUNTER
16 | E
17 | 0001
18 | 0
19 | X
20 | 000004
21 | INT4
22 | 000010
23 | INT4
24 |
25 |
26 | ZODIN_INTERNAL
27 | STRATEGY
28 | 0002
29 | ZODIN_STRATEGY
30 | 0
31 | E
32 |
33 |
34 | ZODIN_INTERNAL
35 | STATE
36 | E
37 | 0003
38 | 0
39 | g
40 | 000008
41 | STRG
42 | STRG
43 |
44 |
45 | ZODIN_INTERNAL
46 | MSG
47 | E
48 | 0004
49 | 0
50 | g
51 | 000008
52 | STRG
53 | STRG
54 |
55 |
56 | ZODIN_INTERNAL
57 | BUKRS
58 | 0005
59 | BUKRS
60 | 0
61 | D
62 | E
63 |
64 |
65 | ZODIN_INTERNAL
66 | BELNR
67 | 0006
68 | BELNR_D
69 | 0
70 | E
71 |
72 |
73 | ZODIN_INTERNAL
74 | GJAHR
75 | 0007
76 | GJAHR
77 | 0
78 | E
79 |
80 |
81 | ZODIN_INTERNAL
82 | MONAT
83 | 0008
84 | MONAT
85 | 0
86 | E
87 |
88 |
89 | ZODIN_INTERNAL
90 | BUDAT
91 | 0009
92 | BUDAT
93 | 0
94 | T
95 | E
96 |
97 |
98 | ZODIN_INTERNAL
99 | BLDAT
100 | 0010
101 | BLDAT
102 | 0
103 | T
104 | E
105 |
106 |
107 | ZODIN_INTERNAL
108 | XBLNR
109 | 0011
110 | XBLNR
111 | 0
112 | E
113 |
114 |
115 | ZODIN_INTERNAL
116 | BLART
117 | 0012
118 | BLART
119 | 0
120 | E
121 |
122 |
123 | ZODIN_INTERNAL
124 | BKTXT
125 | 0013
126 | BKTXT
127 | 0
128 | E
129 |
130 |
131 | ZODIN_INTERNAL
132 | KUNNR
133 | 0014
134 | KUNNR
135 | 0
136 | D
137 | E
138 |
139 |
140 | ZODIN_INTERNAL
141 | LIFNR
142 | 0015
143 | LIFNR
144 | 0
145 | D
146 | E
147 |
148 |
149 | ZODIN_INTERNAL
150 | HKONT
151 | 0016
152 | HKONT
153 | 0
154 | E
155 |
156 |
157 | ZODIN_INTERNAL
158 | WRBTR_S
159 | 0017
160 | WRBTR
161 | 0
162 | ZODIN_INTERNAL
163 | WAERS
164 | E
165 |
166 |
167 | ZODIN_INTERNAL
168 | WRBTR_H
169 | 0018
170 | WRBTR
171 | 0
172 | ZODIN_INTERNAL
173 | WAERS
174 | E
175 |
176 |
177 | ZODIN_INTERNAL
178 | WAERS
179 | 0019
180 | WAERS
181 | 0
182 | E
183 |
184 |
185 | ZODIN_INTERNAL
186 | KURSF
187 | 0020
188 | KURSF
189 | 0
190 | E
191 |
192 |
193 | ZODIN_INTERNAL
194 | KURSF_M
195 | 0021
196 | ACPI_UKURSM
197 | 0
198 | E
199 |
200 |
201 | ZODIN_INTERNAL
202 | MWSKZ
203 | 0022
204 | MWSKZ
205 | 0
206 | E
207 |
208 |
209 | ZODIN_INTERNAL
210 | ZTERM
211 | 0023
212 | DZTERM
213 | 0
214 | E
215 |
216 |
217 | ZODIN_INTERNAL
218 | SGTXT
219 | 0024
220 | SGTXT
221 | 0
222 | E
223 |
224 |
225 | ZODIN_INTERNAL
226 | QSSKZ
227 | 0025
228 | QSSKZ
229 | 0
230 | E
231 |
232 |
233 | ZODIN_INTERNAL
234 | LZBKZ
235 | 0026
236 | LZBKZ
237 | 0
238 | E
239 |
240 |
241 | ZODIN_INTERNAL
242 | ZLSPR
243 | 0027
244 | DZLSPR
245 | 0
246 | E
247 |
248 |
249 | ZODIN_INTERNAL
250 | ZUONR
251 | 0028
252 | DZUONR
253 | 0
254 | E
255 |
256 |
257 | ZODIN_INTERNAL
258 | XREF1
259 | 0029
260 | XREF1
261 | 0
262 | E
263 |
264 |
265 | ZODIN_INTERNAL
266 | XREF2
267 | 0030
268 | XREF2
269 | 0
270 | E
271 |
272 |
273 | ZODIN_INTERNAL
274 | XREF3
275 | 0031
276 | XREF3
277 | 0
278 | E
279 |
280 |
281 | ZODIN_INTERNAL
282 | ZFBDT
283 | 0032
284 | DZFBDT
285 | 0
286 | T
287 | E
288 |
289 |
290 | ZODIN_INTERNAL
291 | BEWAR
292 | 0033
293 | RMVCT
294 | 0
295 | E
296 |
297 |
298 | ZODIN_INTERNAL
299 | AUFNR
300 | 0034
301 | AUFNR
302 | 0
303 | E
304 |
305 |
306 | ZODIN_INTERNAL
307 | KOSTL
308 | 0035
309 | KOSTL
310 | 0
311 | E
312 |
313 |
314 | ZODIN_INTERNAL
315 | PROJK
316 | 0036
317 | PS_POSID
318 | 0
319 | E
320 |
321 |
322 | ZODIN_INTERNAL
323 | VBEL2
324 | 0037
325 | VBELN_VA
326 | 0
327 | E
328 |
329 |
330 | ZODIN_INTERNAL
331 | POSN2
332 | 0038
333 | POSNR_VA
334 | 0
335 | E
336 |
337 |
338 | ZODIN_INTERNAL
339 | PRZNR
340 | 0039
341 | CO_PRZNR
342 | 0
343 | E
344 |
345 |
346 | ZODIN_INTERNAL
347 | ANLN1
348 | 0040
349 | ANLN1
350 | 0
351 | E
352 |
353 |
354 | ZODIN_INTERNAL
355 | ANLN2
356 | 0041
357 | ANLN2
358 | 0
359 | E
360 |
361 |
362 | ZODIN_INTERNAL
363 | VBUND
364 | 0042
365 | RASSC
366 | 0
367 | E
368 |
369 |
370 | ZODIN_INTERNAL
371 | EBELN
372 | 0043
373 | EBELN
374 | 0
375 | D
376 | E
377 |
378 |
379 | ZODIN_INTERNAL
380 | EBELP
381 | 0044
382 | EBELP
383 | 0
384 | E
385 |
386 |
387 | ZODIN_INTERNAL
388 | MENGE
389 | 0045
390 | MENGE_D
391 | 0
392 | ZODIN_INTERNAL
393 | MEINS
394 | E
395 |
396 |
397 | ZODIN_INTERNAL
398 | MEINS
399 | 0046
400 | MEINS
401 | 0
402 | E
403 |
404 |
405 | ZODIN_INTERNAL
406 | MANSP
407 | 0047
408 | MANSP
409 | 0
410 | E
411 |
412 |
413 | ZODIN_INTERNAL
414 | LANDL
415 | 0048
416 | LANDL
417 | 0
418 | E
419 |
420 |
421 | ZODIN_INTERNAL
422 | UMSKZ
423 | 0049
424 | UMSKZ
425 | 0
426 | E
427 |
428 |
429 | ZODIN_INTERNAL
430 | DOC_STATUS
431 | 0050
432 | BAPI_ACC_DOC_STATUS
433 | 0
434 | X
435 | F
436 | E
437 |
438 |
439 | ZODIN_INTERNAL
440 | GLVOR
441 | 0051
442 | GLVOR
443 | 0
444 | E
445 |
446 |
447 | ZODIN_INTERNAL
448 | BVTYP
449 | 0052
450 | BVTYP
451 | 0
452 | E
453 |
454 |
455 | ZODIN_INTERNAL
456 | REBZG
457 | 0053
458 | REBZG
459 | 0
460 | E
461 |
462 |
463 | ZODIN_INTERNAL
464 | REBZJ
465 | 0054
466 | REBZJ
467 | 0
468 | E
469 |
470 |
471 | ZODIN_INTERNAL
472 | REBZZ
473 | 0055
474 | REBZZ
475 | 0
476 | E
477 |
478 |
479 | ZODIN_INTERNAL
480 | BSCHL
481 | 0056
482 | BSCHL
483 | 0
484 | E
485 |
486 |
487 | ZODIN_INTERNAL
488 | KUNNR_GL
489 | 0057
490 | KUNNR
491 | 0
492 | D
493 | E
494 |
495 |
496 | ZODIN_INTERNAL
497 | LIFNR_GL
498 | 0058
499 | LIFNR
500 | 0
501 | D
502 | E
503 |
504 |
505 | ZODIN_INTERNAL
506 | PRCTR
507 | 0059
508 | PRCTR
509 | 0
510 | D
511 | E
512 |
513 |
514 | ZODIN_INTERNAL
515 | CUSTOM1
516 | E
517 | 0060
518 | 0
519 | g
520 | 000008
521 | STRG
522 | STRG
523 |
524 |
525 | ZODIN_INTERNAL
526 | CUSTOM2
527 | E
528 | 0061
529 | 0
530 | g
531 | 000008
532 | STRG
533 | STRG
534 |
535 |
536 | ZODIN_INTERNAL
537 | CUSTOM3
538 | E
539 | 0062
540 | 0
541 | g
542 | 000008
543 | STRG
544 | STRG
545 |
546 |
547 | ZODIN_INTERNAL
548 | CUSTOM4
549 | E
550 | 0063
551 | 0
552 | g
553 | 000008
554 | STRG
555 | STRG
556 |
557 |
558 | ZODIN_INTERNAL
559 | CUSTOM5
560 | E
561 | 0064
562 | 0
563 | g
564 | 000008
565 | STRG
566 | STRG
567 |
568 |
569 | ZODIN_INTERNAL
570 | CUSTOM6
571 | E
572 | 0065
573 | 0
574 | g
575 | 000008
576 | STRG
577 | STRG
578 |
579 |
580 | ZODIN_INTERNAL
581 | CUSTOM7
582 | E
583 | 0066
584 | 0
585 | g
586 | 000008
587 | STRG
588 | STRG
589 |
590 |
591 | ZODIN_INTERNAL
592 | CUSTOM8
593 | E
594 | 0067
595 | 0
596 | g
597 | 000008
598 | STRG
599 | STRG
600 |
601 |
602 | ZODIN_INTERNAL
603 | CUSTOM9
604 | E
605 | 0068
606 | 0
607 | g
608 | 000008
609 | STRG
610 | STRG
611 |
612 |
613 | ZODIN_INTERNAL
614 | CUSTOM10
615 | E
616 | 0069
617 | 0
618 | g
619 | 000008
620 | STRG
621 | STRG
622 |
623 |
624 |
625 |
626 |
627 |
--------------------------------------------------------------------------------
/src/zodin_internal_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_INTERNAL_T
7 | E
8 | ZODIN_INTERNAL
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | Internal
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/zodin_key_value.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_KEY_VALUE
7 | INTTAB
8 | 4
9 |
10 |
11 |
12 | ZODIN_KEY_VALUE
13 | LINE
14 | 0001
15 | 0
16 | X
17 | 000004
18 | INT4
19 | 000010
20 | INT4
21 |
22 |
23 | ZODIN_KEY_VALUE
24 | KEY
25 | 0002
26 | 0
27 | g
28 | 000008
29 | STRG
30 | STRG
31 |
32 |
33 | ZODIN_KEY_VALUE
34 | VALUE
35 | 0003
36 | 0
37 | g
38 | 000008
39 | STRG
40 | STRG
41 |
42 |
43 |
44 | D
45 |
46 |
47 | -
48 | D
49 | Key-Value-Paare
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/zodin_key_value_t.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_KEY_VALUE_T
7 | E
8 | ZODIN_KEY_VALUE
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | Key/Value
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/zodin_multifile.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report Z_ODIN_MULTIFILE
3 | *&---------------------------------------------------------------------*
4 | *MIT License
5 | *
6 | *Copyright (c) 2021 71TECH
7 | *
8 | *Permission is hereby granted, free of charge, to any person obtaining a copy
9 | *of this software and associated documentation files (the "Software"), to deal
10 | *in the Software without restriction, including without limitation the rights
11 | *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | *copies of the Software, and to permit persons to whom the Software is
13 | *furnished to do so, subject to the following conditions:
14 | *
15 | *The above copyright notice and this permission notice shall be included in all
16 | *copies or substantial portions of the Software.
17 | *
18 | *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 | *SOFTWARE.
25 | *&---------------------------------------------------------------------*
26 | REPORT zodin_multifile LINE-SIZE 1023.
27 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-bl1.
28 | PARAMETERS: p_srdir TYPE eps2filnam DEFAULT '/location/of/input/files/on/server' LOWER CASE,
29 | p_bkdir TYPE string LOWER CASE,
30 | p_sfname TYPE string LOWER CASE DEFAULT '*' OBLIGATORY.
31 | SELECTION-SCREEN COMMENT /1(70) TEXT-c02.
32 | SELECTION-SCREEN COMMENT /1(70) TEXT-c03.
33 | SELECTION-SCREEN END OF BLOCK b1.
34 |
35 | SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE TEXT-bl0.
36 | PARAMETERS: p_skprow TYPE i DEFAULT 0.
37 | SELECTION-SCREEN COMMENT 50(70) TEXT-c01 FOR FIELD p_skprow.
38 | SELECTION-SCREEN END OF BLOCK b0.
39 |
40 | SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-bl2.
41 | PARAMETERS: p_sep(1) DEFAULT ';',
42 | p_delim(1) DEFAULT '"',
43 | p_1000(1) DEFAULT '.',
44 | p_dec(1) DEFAULT ','.
45 | SELECTION-SCREEN END OF BLOCK b2.
46 |
47 | START-OF-SELECTION.
48 | WRITE: / 'PROTOCOL'.
49 | DATA error TYPE string.
50 | DATA files TYPE TABLE OF eps2fili.
51 | CALL FUNCTION 'EPS2_GET_DIRECTORY_LISTING'
52 | EXPORTING
53 | iv_dir_name = p_srdir
54 | TABLES
55 | dir_list = files
56 | EXCEPTIONS
57 | invalid_eps_subdir = 1
58 | sapgparam_failed = 2
59 | build_directory_failed = 3
60 | no_authorization = 4
61 | read_directory_failed = 5
62 | too_many_read_errors = 6
63 | empty_directory_list = 7
64 | OTHERS = 8.
65 | IF sy-subrc <> 0.
66 | CASE sy-subrc.
67 | WHEN 1.
68 | error = 'invalid_eps_subdir'.
69 | WHEN 2.
70 | error = 'sapgparam_failed'.
71 | WHEN 3.
72 | error = 'build_directory_failed'.
73 | WHEN 4.
74 | error = 'no_authorization'.
75 | WHEN 5.
76 | error = 'read_directory_failed'.
77 | WHEN 6.
78 | error = 'too_many_read_errors'.
79 | WHEN 7.
80 | error = 'empty_directory_list'.
81 | WHEN 8.
82 | error = 'other_error'.
83 | ENDCASE.
84 | IF sy-batch IS NOT INITIAL.
85 | MESSAGE s006(zodin) WITH error.
86 | ELSE.
87 | MESSAGE s006(zodin) WITH error DISPLAY LIKE 'E'.
88 | LEAVE LIST-PROCESSING.
89 | ENDIF.
90 | ENDIF.
91 | DATA srpath TYPE string.
92 | DATA bkpath TYPE string.
93 | DATA info TYPE string.
94 | LOOP AT files INTO DATA(files_s).
95 | DATA(tabix) = sy-tabix.
96 | IF files_s-name NP p_sfname.
97 | info = |Ignoring { files_s-name } because it doesn't cover pattern { p_sfname }|.
98 | IF sy-batch = abap_true.
99 | MESSAGE info TYPE 'S'.
100 | ELSE.
101 | WRITE: / info.
102 | ENDIF.
103 | CONTINUE.
104 | ENDIF.
105 | srpath = p_srdir && '/' && files_s-name.
106 | bkpath = p_bkdir && '/' && files_s-name.
107 | info = |Processing { srpath }...|.
108 | MESSAGE info TYPE 'S'.
109 | IF sy-batch = abap_false.
110 | FORMAT INTENSIFIED ON.
111 | WRITE / info.
112 | FORMAT INTENSIFIED OFF.
113 | ENDIF.
114 | TRY.
115 | DATA(cl_fin_doc) = NEW zcl_odin_posting(
116 | csv_separator = p_sep
117 | csv_delimiter = p_delim
118 | csv_decimal_separator = p_dec
119 | csv_thousands_separator = p_1000
120 | path_server = srpath
121 | path_server_backup = bkpath
122 | simulation = abap_false
123 | skip_rows = p_skprow ).
124 | CATCH zcx_odin INTO DATA(cx_odin).
125 | info = cx_odin->get_text( ).
126 | IF sy-batch = abap_true.
127 | MESSAGE info TYPE 'S'.
128 | ELSE.
129 | WRITE: / info.
130 | ENDIF.
131 | CONTINUE.
132 | ENDTRY.
133 | TRY.
134 | cl_fin_doc->post( ).
135 | CATCH zcx_odin INTO cx_odin.
136 | info = cx_odin->get_text( ).
137 | IF sy-batch = abap_true.
138 | MESSAGE info TYPE 'S'.
139 | ELSE.
140 | WRITE / info.
141 | ENDIF.
142 | ENDTRY.
143 | cl_fin_doc->display( report = 'ZODIN' pfstatus = 'ALV2' ).
144 | ENDLOOP.
145 |
--------------------------------------------------------------------------------
/src/zodin_multifile.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_MULTIFILE
7 | 1
8 | E
9 | X
10 | X
11 |
12 |
13 | -
14 | I
15 | BL0
16 | Settings
17 | 18
18 |
19 | -
20 | I
21 | BL1
22 | Files on server
23 | 25
24 |
25 | -
26 | I
27 | BL2
28 | Options for csv files
29 | 50
30 |
31 | -
32 | I
33 | C01
34 | (Number of lines before heading line)
35 | 74
36 |
37 | -
38 | I
39 | C02
40 | Multifiles in dialog:
41 | 70
42 |
43 | -
44 | I
45 | C03
46 | After first list is displayed, continue with back button
47 | 132
48 |
49 | -
50 | R
51 | Process multiple files server-side
52 | 34
53 |
54 | -
55 | S
56 | P_1000
57 | Thousands separator
58 | 27
59 |
60 | -
61 | S
62 | P_BKDIR
63 | Directory server backup
64 | 31
65 |
66 | -
67 | S
68 | P_DEC
69 | Decimal separator
70 | 25
71 |
72 | -
73 | S
74 | P_DELIM
75 | Delimiter
76 | 17
77 |
78 | -
79 | S
80 | P_SEP
81 | Separator
82 | 17
83 |
84 | -
85 | S
86 | P_SFNAME
87 | File name (Wildcard * ok)
88 | 35
89 |
90 | -
91 | S
92 | P_SKPROW
93 | Skip rows
94 | 17
95 |
96 | -
97 | S
98 | P_SRDIR
99 | Directory server
100 | 24
101 |
102 |
103 |
104 | -
105 | D
106 |
107 |
-
108 | I
109 | BL0
110 | Einstellungen
111 | 18
112 |
113 | -
114 | I
115 | BL1
116 | Dateien auf Server
117 | 25
118 |
119 | -
120 | I
121 | BL2
122 | Optionen für csv-Dateien
123 | 50
124 |
125 | -
126 | I
127 | C01
128 | (Anzahl Zeilen vor Überschriftszeile)
129 | 74
130 |
131 | -
132 | I
133 | C02
134 | Multi-Dateien im Dialog:
135 | 70
136 |
137 | -
138 | I
139 | C03
140 | Nach Anzeige der ersten Liste mit Back-Button fortsetzen
141 | 132
142 |
143 | -
144 | R
145 | Multidateiverarbeitung (serverseitig)
146 | 70
147 |
148 | -
149 | S
150 | P_1000
151 | Tausendertrennzeichen
152 | 38
153 |
154 | -
155 | S
156 | P_BKDIR
157 | Verzeichnis Server Backup
158 | 38
159 |
160 | -
161 | S
162 | P_DEC
163 | Dezimaltrennzeichen
164 | 38
165 |
166 | -
167 | S
168 | P_DELIM
169 | Delimiter
170 | 38
171 |
172 | -
173 | S
174 | P_SEP
175 | Trennzeichen
176 | 38
177 |
178 | -
179 | S
180 | P_SFNAME
181 | Dateiname (Wildcard * ok)
182 | 38
183 |
184 | -
185 | S
186 | P_SKPROW
187 | Zeilen überspringen
188 | 38
189 |
190 | -
191 | S
192 | P_SRDIR
193 | Verzeichnis Server
194 | 38
195 |
196 |
197 |
198 |
199 |
200 | -
201 |
202 | RE
203 |
204 | E
205 | E
206 | 0002
207 | X
208 | 00004
209 | A
210 |
211 |
212 | DOKU
213 | ZODIN_MULTIFILE
214 | RE
215 | E
216 | S_DOCU_SHOW
217 | S_DOCUS1
218 | 00002
219 | 072
220 |
221 |
222 |
223 | U1
224 | &PURPOSE&
225 |
226 |
227 | AS
228 | See https://github.com/71tech/ODIN
229 |
230 |
231 | U1
232 | &INTEGRATION&
233 |
234 |
235 | AS
236 |
237 |
238 | U1
239 | &PREREQUISITES&
240 |
241 |
242 | AS
243 |
244 |
245 | U1
246 | &FEATURES&
247 |
248 |
249 | AS
250 |
251 |
252 | U2
253 | &SELECTION&
254 |
255 |
256 | AS
257 |
258 |
259 | U2
260 | &STANDARD_VARIANTS&
261 |
262 |
263 | AS
264 |
265 |
266 | U2
267 | &OUTPUT&
268 |
269 |
270 | AS
271 |
272 |
273 | U1
274 | &ACTIVITIES&
275 |
276 |
277 | AS
278 |
279 |
280 | U1
281 | &EXAMPLE&
282 |
283 |
284 | AS
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
--------------------------------------------------------------------------------
/src/zodin_strategy.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZODIN_STRATEGY
7 | E
8 | 40
9 | 10
10 | 20
11 | 40
12 | Strategy
13 | Strategy
14 | Strategy
15 | Strategy
16 | Strategy
17 | E
18 | CHAR
19 | 000040
20 | 000040
21 |
22 |
23 | D
24 |
25 |
26 | -
27 | D
28 | Strategie
29 | Strategie
30 | Strategie
31 | Strategie
32 | Strategie
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------