Code: Alles auswählen.
CALL FUNCTION 'GUI_UPLOAD'
Code: Alles auswählen.
CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
Code: Alles auswählen.
CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
EXPORTING
i_field_seperator = ','
i_line_header = 'X'
i_tab_raw_data = lt_rawdata
* I_FILENAME = p_file
TABLES
i_tab_converted_data = lt_csv
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
"pv_error = 'X'.
RETURN.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Code: Alles auswählen.
data: lt_rawdata TYPE truxs_t_text_data.
data: lt_csv type TABLE OF char50.
data ls_csv type char50.
data: lt_csv2 type TABLE OF char50.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:...test.txt'
" filetype = 'DAT'
has_field_separator = 'X'
TABLES
data_tab = lt_csv
EXCEPTIONS
file_open_error = 1.
loop at lt_csv into ls_csv.
split ls_csv at ',' into TABLE lt_csv2.
endloop.
BREAK-POINT.
Unit605 hat geschrieben:Hat die Datei in der ersten Zeile die Spaltennamen?
Wie ist sind die Spalten getrennt? Tab? Semikolon?
(Angepasstes..) Beispiel fuer eine Textdatei getrennt durch Semikolon mit Spaltenname in der ersten Zeile:
Hier braucht man keine Anzahl der Spalten.
Code: Alles auswählen.
FIELD-SYMBOLS: <upload_tab> TYPE STANDARD TABLE. LOOP AT lt_uploadtab INTO ls_uploadtab. IF sy-tabix EQ 1. "Header line PERFORM create_dynamic_internal_table USING ls_uploadtab. CONTINUE. ENDIF. CLEAR lt_headerline_fieldname. SPLIT ls_uploadtab AT con_semicolon INTO TABLE lt_headerline_fieldname. **** fill dynamic created table <upload_tab> with contains, line by line APPEND INITIAL LINE TO <upload_tab> ASSIGNING <upload_str>. LOOP AT lt_headerline_fieldname ASSIGNING <headerline_fieldname>. ASSIGN COMPONENT sy-tabix OF STRUCTURE <upload_str> TO <comp>. MOVE <headerline_fieldname> TO <comp>. ENDLOOP. ENDLOOP. ************* FORM CREATE....... FORM create_dynamic_internal_table USING us_uploadtab. DATA: lt_headerline_fieldname TYPE STANDARD TABLE OF string, lt_fcat TYPE lvc_t_fcat, lt_dyn_table TYPE REF TO data. FIELD-SYMBOLS: <headerline_fieldname> TYPE string, <ls_fcat> TYPE LINE OF lvc_t_fcat. *** TRANSLATE us_uploadtab TO UPPER CASE. SPLIT us_uploadtab AT con_semicolon INTO TABLE lt_headerline_fieldname. LOOP AT lt_headerline_fieldname ASSIGNING <headerline_fieldname>. APPEND INITIAL LINE TO lt_fcat ASSIGNING <ls_fcat>. CONDENSE <headerline_fieldname> NO-GAPS. <ls_fcat>-fieldname = <headerline_fieldname>. <ls_fcat>-datatype = con_strg. "Datatype STRING ENDLOOP. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fcat IMPORTING ep_table = lt_dyn_table. ASSIGN lt_dyn_table->* TO <upload_tab>. ENDFORM.
Code: Alles auswählen.
DATA: lt_uploadtab TYPE TABLE OF string.
*Einlesen der Datei ...
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_guisourcefile
dat_mode = abap_true
CHANGING
data_tab = lt_uploadtab
Code: Alles auswählen.
** "BEISPIEL: Struktur/Tabelle in die Du die Daten schieben willst = lv_tabname
descr_ref_type ?= cl_abap_typedescr=>describe_by_name( lv_tabname ).
LOOP AT <upload_tab> ASSIGNING <upload_str>.
APPEND INITIAL LINE TO lt_ztable ASSIGNING <ztable01>.
LOOP AT descr_ref_type->components ASSIGNING <components_wa>.
CHECK <components_wa>-name NE 'MANDT'. "BEISPIEL: Feld Mandt will ich nicht fuellen
ASSIGN COMPONENT <components_wa>-name OF STRUCTURE <upload_str> TO <comp>.
* check sy-subrc eq 0.
CONCATENATE '<ztable>-' <components_wa>-name INTO lv_fieldname.
ASSIGN (lv_fieldname) TO <fieldname>. "assign 'KUNDENUMMER' to fieldname
CASE <components_wa>-name.
WHEN 'KUNDENNUMMER'.
ASSIGN COMPONENT 'KUNDENNUMMER' OF STRUCTURE <upload_str> TO <comp>.
<ztable>-buchungsart = <comp>.
.....
.....
.....
.....
ENDCASE.
Endloop.
Endloop.
nicht möglich ist.Ich lese die Spaltenueberschriften aus der importierten Datei Spalte bei Spalte
und vergleiche diese Ueberschriften mit den Feldnamen der Tabelle ( lv_tabname ).