Code: Alles auswählen.
************************************************************************
FORM get_filelist CHANGING ct_filelist TYPE gtyp_filelist_tab.
************************************************************************
DATA: lf_filelist TYPE gtyp_filelist,
ld_segment TYPE text255,
lt_segments TYPE STANDARD TABLE OF text255,
ld_filename TYPE text255,
ld_string TYPE text255,
ld_errno TYPE char03,
ld_errmsg TYPE text40,
ld_list_errmsg TYPE text40,
ld_type TYPE char10,
ld_tabix TYPE sy-tabix.
***** Ggf. vorangegangenen Lesevorgang beenden
CALL 'C_DIR_READ_FINISH' ID 'ERRNO' FIELD ld_errno
ID 'ERRMSG' FIELD ld_list_errmsg.
CALL 'C_DIR_READ_START' ID 'DIR' FIELD gp_path
ID 'FILE' FIELD gp_file
ID 'ERRNO' FIELD ld_errno
ID 'ERRMSG' FIELD ld_errmsg.
IF sy-subrc <> 0.
MESSAGE e204(s1) WITH ld_list_errmsg ld_errmsg.
ENDIF.
DO.
CLEAR: ld_type, lf_filelist, ld_errno, ld_errmsg.
CALL 'C_DIR_READ_NEXT' ID 'TYPE' FIELD ld_type
ID 'NAME' FIELD lf_filelist-filename
ID 'ERRNO' FIELD ld_errno
ID 'ERRMSG' FIELD ld_errmsg.
IF sy-subrc = 5.
sy-subrc = 0.
ENDIF.
CASE sy-subrc.
WHEN 0.
CLEAR: ld_errno, ld_errmsg.
CASE ld_type(1).
WHEN 'F' OR 'f'.
* do nothing at present
WHEN OTHERS.
CLEAR lf_filelist.
ENDCASE.
WHEN 1.
EXIT.
WHEN OTHERS. " SY-SUBRC >= 2
CLEAR lf_filelist.
ENDCASE.
IF lf_filelist IS NOT INITIAL.
APPEND lf_filelist TO ct_filelist.
ENDIF.
ENDDO.
CALL 'C_DIR_READ_FINISH' ID 'ERRNO' FIELD ld_errno
ID 'ERRMSG' FIELD ld_list_errmsg.
IF sy-subrc <> 0.
MESSAGE e204(s1) WITH ld_list_errmsg ld_errmsg.
ENDIF.
***** Zu jeder Datei wird nun noch das Datum der Erstellung ermittelt
***** und zum Dateinamen hinzugefügt
LOOP AT ct_filelist INTO lf_filelist.
ld_tabix = sy-tabix.
CONCATENATE gp_path lf_filelist-filename INTO ld_filename
SEPARATED BY gc_slash.
OPEN DATASET ld_filename FOR INPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF sy-subrc <> 0.
MESSAGE e203(e0) WITH ld_filename.
* Datei '&' konnte nicht geöffnet werden
ENDIF.
***** Erste 255 Zeichen der Datei lesen und an den Hochkommata in Seg-
***** mente aufspalten
CLEAR ld_string.
READ DATASET ld_filename INTO ld_string MAXIMUM LENGTH 255.
CLOSE DATASET ld_filename.
SPLIT ld_string AT '''' INTO TABLE lt_segments.
***** Zeitstempel aus dem String isolieren und zur Dateiliste hinzufügen
LOOP AT lt_segments INTO ld_segment.
IF ld_segment+0(3) = 'DTM'.
lf_filelist-timestamp = ld_segment+8(12).
MODIFY ct_filelist FROM lf_filelist INDEX ld_tabix
TRANSPORTING timestamp.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
SORT ct_filelist BY timestamp ASCENDING.
ENDFORM. " get_filelist
Und hier noch die fehlenden Definitionen
TYPES: BEGIN OF gtyp_filelist,
filename TYPE text120,
timestamp TYPE char12,
END OF gtyp_filelist.
TYPES: gtyp_filelist_tab TYPE STANDARD TABLE OF gtyp_filelist,
PARAMETERS: gp_path TYPE text128,
gp_file TYPE text128,
Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag (Insgesamt 2):
a-dead-trousers • Thomas R.
Den hatte ich mit "AL08" oder so ähnlich im Namen gemeint 😅