Code: Alles auswählen.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename
filetype = 'BIN'
has_field_separator = ' '
header_length = 0
read_by_line = 'X'
dat_mode = ' '
Code: Alles auswählen.
OPEN DATASET lv_filename FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
DO.
READ DATASET lv_filename INTO ls_xml_line.
IF sy-subrc EQ 0.
APPEND ls_xml_line TO xml_table.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
Code: Alles auswählen.
TYPES: BEGIN OF xml_line,
data(256) TYPE x,
END OF xml_line.
DATA: xml_table TYPE TABLE OF xml_line,
ls_xml_line LIKE LINE OF xml_table.
Code: Alles auswählen.
TYPES: BEGIN OF xml_line,
data(1) TYPE x,
END OF xml_line.
Code: Alles auswählen.
TYPES: BEGIN OF xml_line,
data(1) TYPE x,
END OF xml_line.
Code: Alles auswählen.
TYPES: BEGIN OF xml_line,
data(255) TYPE x,
END OF xml_line.
Hi das Problem ist Deine Sy-SubRC Abfrage. Wenn READ DATASET die letzte Zeile aus Deine Dokument liest ist das FileEnde erreicht und der Sy-SubRC <> 0. ABER in ls_xml_line steht trotzedem die letzte Zeile. Du APPENDest sie aber nicht, deshalb fehlt sie Dir in der xml_table.justMe hat geschrieben: und alternativ so:das erste funktioniert immer!Code: Alles auswählen.
OPEN DATASET lv_filename FOR INPUT IN BINARY MODE. IF sy-subrc = 0. DO. READ DATASET lv_filename INTO ls_xml_line. IF sy-subrc EQ 0. APPEND ls_xml_line TO xml_table. ELSE. EXIT. ENDIF. ENDDO. ENDIF.
Code: Alles auswählen.
OPEN DATASET lv_filename FOR INPUT IN BINARY MODE.
lv_subrc = sy-subrc.
WHILE lv_subrc = 0.
READ DATASET lv_filename INTO ls_xml_line.
lv_subrc = sy-subrc.
CHECK NOT ls_xml_line IS INITIAL
APPEND ls_xml_line TO xml_table.
CLAER ls_xml_line.
ENDWHILE.
CLOSE DATASET lv_filename.