DATA:
BEGIN OF GS_FILE,
DIRECTORY(75) TYPE C, " name of directory.
" (possibly truncated.)
NAME(75) TYPE C, " name of entry.
" (possibly truncated.)
TYPE(10) TYPE C, " type of entry: directory, file
LEN(8) TYPE P, " length in bytes
OWNER(8) TYPE C, " owner of the entry
MTIME(6) TYPE P, " last modification date,
" seconds since 1970
MODE(9) TYPE C, " like "rwx-r-x--x":
" protection mode
ERRNO(3) TYPE C,
ERRMSG(40) TYPE C,
MOD_DATE TYPE D,
MOD_TIME(8) TYPE C, " hh:mm:ss
SUBRC LIKE SY-SUBRC,
END OF GS_FILE.
DATA:
GT_FILE LIKE GS_FILE OCCURS 0,
G_OK ,
DIRECTORY(255) type c ,
FILEMASK(10) type c ,
GRID1 TYPE REF TO CL_GUI_ALV_GRID .
*****************
DATA : MYREPID LIKE SY-REPID. "REPORT NAME
DATA : ALLFIELDS TYPE LVC_T_FCAT.
DATA : WA_ALLFIELDS TYPE LINE OF LVC_T_FCAT.
DATA : layout TYPE LVC_S_LAYO .
data : ls_event type slis_alv_event.
data : gt_events type slis_t_event.
*****************
DIRECTORY = '/usr/sap/DEV/DVEBMGS00/work' .
FILEMASK = '*' .
PERFORM DIRECTORY_CONTENTS_GET TABLES GT_FILE
USING DIRECTORY
FILEMASK
CHANGING G_OK.
PERFORM build_layout USING layout.
PERFORM DISPLAY_DATA .
FORM DOWN .
* CALL FUNCTION 'WS_DOWNLOAD'
* EXPORTING
* filename = 'C:/aaaba.txt'
* filetype = 'DAT'
* TABLES
* data_tab = GT_FILE .
ENDFORM .
FORM DIRECTORY_CONTENTS_GET TABLES PT_FILE STRUCTURE GS_FILE
USING P_DIRECTORY
P_FILEMASK
CHANGING P_OK.
DATA:
L_COUNTER TYPE I,
L_COUNTER_PACKAGE TYPE I,
L_CHAR10(10),
L_TEXT(100),
L_SUBRC LIKE SY-SUBRC,
LS_FILE LIKE GS_FILE.
P_OK = 'X'.
CLEAR PT_FILE[].
CALL 'C_DIR_READ_FINISH'
ID 'ERRNO' FIELD LS_FILE-ERRNO
ID 'ERRMSG' FIELD LS_FILE-ERRMSG.
CALL 'C_DIR_READ_START' ID 'DIR' FIELD P_DIRECTORY
ID 'FILE' FIELD '*'
ID 'ERRNO' FIELD LS_FILE-ERRNO
ID 'ERRMSG' FIELD LS_FILE-ERRMSG.
IF SY-SUBRC <> 0.
P_OK = ' '.
IF NOT LS_FILE-ERRMSG IS INITIAL.
MESSAGE I034(/SAPDMC/LSMW_OBJ_060) WITH LS_FILE-ERRMSG.
ENDIF.
EXIT.
ENDIF.
DO.
CLEAR LS_FILE.
CALL 'C_DIR_READ_NEXT'
ID 'TYPE' FIELD LS_FILE-TYPE
ID 'NAME' FIELD LS_FILE-NAME
ID 'LEN' FIELD LS_FILE-LEN
ID 'OWNER' FIELD LS_FILE-OWNER
ID 'MTIME' FIELD LS_FILE-MTIME
ID 'MODE' FIELD LS_FILE-MODE
ID 'ERRNO' FIELD LS_FILE-ERRNO
ID 'ERRMSG' FIELD LS_FILE-ERRMSG.
L_SUBRC = SY-SUBRC.
LS_FILE-SUBRC = SY-SUBRC.
IF L_SUBRC = 1.
EXIT.
ELSEIF L_SUBRC = 5.
LS_FILE-TYPE = '???'.
LS_FILE-OWNER = '???'.
LS_FILE-MODE = '???'.
ENDIF.
LS_FILE-DIRECTORY = P_DIRECTORY.
ADD 1 TO L_COUNTER.
ADD 1 TO L_COUNTER_PACKAGE.
IF L_COUNTER_PACKAGE = 100.
L_TEXT = '& Eintraege gelesen'.
L_CHAR10 = L_COUNTER.
REPLACE '&' WITH L_CHAR10 INTO L_TEXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = L_TEXT.
L_COUNTER_PACKAGE = 0.
ENDIF.
PERFORM P6_TO_DATE_TIME_TZ(RSTR0400) USING LS_FILE-MTIME
LS_FILE-MOD_TIME
LS_FILE-MOD_DATE.
CASE LS_FILE-TYPE(1).
WHEN 'F' OR 'f'. " File
IF LS_FILE-NAME CP P_FILEMASK.
APPEND LS_FILE TO PT_FILE.
ENDIF.
WHEN OTHERS.
APPEND LS_FILE TO PT_FILE.
ENDCASE.
ENDDO.
CALL 'C_DIR_READ_FINISH'
ID 'ERRNO' FIELD LS_FILE-ERRNO
ID 'ERRMSG' FIELD LS_FILE-ERRMSG.
L_TEXT = '& Eintraege gelesen, Baum wird aufgebaut ...'.
L_CHAR10 = L_COUNTER.
REPLACE '&' WITH L_CHAR10 INTO L_TEXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = L_TEXT.
SORT PT_FILE BY TYPE DESCENDING NAME DESCENDING.
ENDFORM.
FORM build_layout USING p_layout TYPE LVC_S_LAYO.
p_layout-zebra = 'X'.
p_layout-CWIDTH_OPT = 'X'.
* p_layout-window_titlebar = 'aaa' .
* p_layout-group_buttons = 'X'.
p_layout-SEL_MODE = 'A' .
p_layout-ZEBRA ='X'.
* p_layout-EDIT_MODE ='X'.
* p_layout-EDIT ='X'.
ENDFORM. " BUILD_LAYOUT
FORM display_data .
WA_ALLFIELDS-FIELDNAME = 'DIRECTORY'.
WA_ALLFIELDS-COLTEXT = '目录'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'NAME'.
WA_ALLFIELDS-COLTEXT = '文件名称'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'TYPE'.
WA_ALLFIELDS-COLTEXT = '文件类型'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'LEN'.
WA_ALLFIELDS-COLTEXT = '文件大小'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'OWNER'.
WA_ALLFIELDS-COLTEXT = '所有者'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'MTIME'.
WA_ALLFIELDS-COLTEXT = 'MTIME'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
**
WA_ALLFIELDS-FIELDNAME = 'MODE'.
WA_ALLFIELDS-COLTEXT = 'MODE'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
**
WA_ALLFIELDS-FIELDNAME = 'ERRNO'.
WA_ALLFIELDS-COLTEXT = 'ERRNO'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
**
WA_ALLFIELDS-FIELDNAME = 'ERRMSG'.
WA_ALLFIELDS-COLTEXT = 'ERRMSG'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
**
WA_ALLFIELDS-FIELDNAME = 'MOD_DATE'.
WA_ALLFIELDS-COLTEXT = 'MOD_DATE'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
WA_ALLFIELDS-FIELDNAME = 'MOD_TIME'.
WA_ALLFIELDS-COLTEXT = 'MOD_TIME'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
**
WA_ALLFIELDS-FIELDNAME = 'SUBRC'.
WA_ALLFIELDS-COLTEXT = 'SUBRC'.
APPEND WA_ALLFIELDS TO ALLFIELDS.
CLEAR WA_ALLFIELDS.
* WA_ALLFIELDS-FIELDNAME = 'AA15'.
* WA_ALLFIELDS-COLTEXT = '本科 在册'.
* APPEND WA_ALLFIELDS TO ALLFIELDS.
* CLEAR WA_ALLFIELDS.
*
MYREPID = SY-REPID. "REPROT NAME
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = MYREPID
I_GRID_TITLE = '服务器文件列表' "TITLE
IS_LAYOUT_LVC = layout
* IT_EVENTS = gt_events
I_SAVE = 'X'
IT_FIELDCAT_LVC = ALLFIELDS
TABLES
T_OUTTAB = GT_FILE "输出内表
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2 .
ENDFORM .