Code: Alles auswählen.
METHOD formate.
DATA: controll TYPE abap_bool.
FIELD-SYMBOLS: <test> TYPE ANY TABLE,
<infty> TYPE ANY TABLE.
ASSIGN ip_data->* TO <infty>.
DATA: lt_table TYPE TABLE OF string,
t_kopfzeile TYPE TABLE OF string,
lv_tabix TYPE i,
lv_placeh TYPE char7 VALUE 'a*\,\a*',
lv_replac TYPE char1 VALUE '.'.
lt_table = ip_uploaded_csv.
* DATA(lv_condition) = |SPRPS NE 'X'|.
LOOP AT lt_table REFERENCE INTO DATA(ls_uploaded_csv_document).
IF ip_cb_head IS NOT INITIAL AND sy-tabix = 1.
" Speichern der Kopfzeile
SPLIT ls_uploaded_csv_document->* AT ';' INTO TABLE t_kopfzeile.
* Index des Tabelleneintrags ermitteln
DATA(idx) = line_index( t_kopfzeile[ table_line = 'SPRPS' ] ).
CONTINUE.
ENDIF.
SPLIT ls_uploaded_csv_document->* AT ';' INTO TABLE DATA(t_splitted_table).
LOOP AT t_splitted_table ASSIGNING FIELD-SYMBOL(<fs_splitted_table>).
controll = abap_false.
" Für spätere überprüfung ob das Datum falsch Formatiert ist
DATA(zeile) = <fs_splitted_table>.
IF ip_cb_mandt IS NOT INITIAL.
lv_tabix = sy-tabix.
ELSE.
lv_tabix = sy-tabix + 1.
ENDIF.
IF idx = lv_tabix.
DATA(iv_sprps) = 'SPRPS'.
ASSIGN COMPONENT iv_sprps OF STRUCTURE cp_structure TO FIELD-SYMBOL(<fs_sprps>).
IF <fs_sprps> IS NOT INITIAL.
CLEAR cp_structure. controll = abap_true. EXIT.
ENDIF.
ENDIF.
ASSIGN COMPONENT lv_tabix OF STRUCTURE cp_structure TO FIELD-SYMBOL(<fs_cell>).
IF sy-subrc <> 0.
EXIT.
ENDIF.
" Datum überprüfung
IF cl_abap_matcher=>matches( pattern = '\d\d\.\d\d.\d\d\d\d' text = zeile ) = abap_true.
<fs_splitted_table> = |{ zeile+6(4) }{ zeile+3(2) }{ zeile(2) }|.
ENDIF.
" Komma Zahlen in Punkt Zahlen umwandeln
DATA(matcher) = cl_abap_matcher=>create( pattern = lv_placeh text = zeile ignore_case = abap_true ).
" Alle Platzhalter mit Replacement ersetzen
IF matcher->replace_all( lv_replac ) > 0.
<fs_splitted_table> = matcher->text.
ENDIF.
<fs_cell> = <fs_splitted_table>.
ENDLOOP.
IF controll = abap_false.
INSERT cp_structure INTO TABLE <infty>.
ENDIF.
ENDLOOP.
ep_table = <infty>.
ENDMETHOD.
Code: Alles auswählen.
DATA workarea_deiner_internen_tabelle LIKE LINE OF deine_interne_tabelle.
ASSIGN COMPONENT spaltenname_aus_erster_csv_zeile OF STRUCTURE workarea_deiner_internen_tabelle TO <irgendein_feldsymbol>.
<irgendein_feldsymbol> = spalteninhalt_aus_csv_zeile.
APPEND workarea_deiner_internen_tabelle TO deine_interne_tabelle.