先定义一个结构类型:服务器
types: BEGIN OF TP_FILE_ATTR, PATH TYPE ESEFTAPPL, NAME TYPE ESEFTAPPL, TARGET_PATH TYPE ESEFTAPPL, TYPE(10) TYPE C, FSIZE TYPE P LENGTH 4 DECIMALS 0, OWNER(8) TYPE C, FMODE(9) TYPE C, MTIME TYPE P LENGTH 6 DECIMALS 0, ERRNO(3) TYPE C, ERRMSG(40) TYPE C, END OF TP_FILE_ATTR . types: TP_FILE_ATTR_TAB TYPE TABLE OF TP_FILE_ATTR .
方法:spa
METHOD GET_FILE_LIST. DATA: WA_FILE_ATTR TYPE TP_FILE_ATTR. DATA: UNIX_PATH TYPE ESEFTAPPL. DATA: TARGET_UNIX_PATH TYPE ESEFTAPPL. DATA: LW_FILE_PATH TYPE ZRCAFILEPATH. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LW_FILE_PATH "这边是读取路径FROM ZRCAFILEPATH WHERE INTID = INT_ID AND BUKRS = BUKRS AND WERKS = WERKS AND EKORG = EKORG AND VKORG = VKORG. IF SY-SUBRC EQ 0. CONDENSE LW_FILE_PATH-FILEPATH. TRANSLATE LW_FILE_PATH-FILEPATH to LOWER CASE. CONCATENATE '/connectdirect/cdfiles/interface/' LW_FILE_PATH-FILEPATH INTO UNIX_PATH. "拼接路径 CONCATENATE '/connectdirect/cdfiles/archive/' LW_FILE_PATH-FILEPATH INTO TARGET_UNIX_PATH. "这个能够忽略 REFRESH: FILE_LIST. CALL 'C_DIR_READ_FINISH' ID 'ERRNO' FIELD WA_FILE_ATTR-ERRNO ID 'ERRMSG' FIELD WA_FILE_ATTR-ERRMSG. CALL 'C_DIR_READ_START' ID 'DIR' FIELD UNIX_PATH "打开SAP应用服务器路径 ID 'FILE' FIELD '*' ID 'ERRNO' FIELD WA_FILE_ATTR-ERRNO ID 'ERRMSG' FIELD WA_FILE_ATTR-ERRMSG. IF SY-SUBRC NE 0. MESSAGE I208(00) WITH 'Cannot Open Specified Directory!'. EXIT. ENDIF. DO. CLEAR: WA_FILE_ATTR. 循环读取该路径下的文件 CALL 'C_DIR_READ_NEXT' ID 'TYPE' FIELD WA_FILE_ATTR-TYPE ID 'NAME' FIELD WA_FILE_ATTR-NAME ID 'LEN' FIELD WA_FILE_ATTR-FSIZE ID 'OWNER' FIELD WA_FILE_ATTR-OWNER ID 'MTIME' FIELD WA_FILE_ATTR-MTIME ID 'MODE' FIELD WA_FILE_ATTR-FMODE ID 'ERRNO' FIELD WA_FILE_ATTR-ERRNO ID 'ERRMSG' FIELD WA_FILE_ATTR-ERRMSG. IF SY-SUBRC NE 0 AND WA_FILE_ATTR-NAME IS INITIAL. EXIT. ENDIF. CHECK: WA_FILE_ATTR-NAME IS NOT INITIAL. CHECK: WA_FILE_ATTR-TYPE NE 'directory'. "判断目录名称 * CHECK: WA_FILE_ATTR-NAME CS '.txt' OR WA_FILE_ATTR-NAME CS '.dat' OR * WA_FILE_ATTR-NAME CS '.TXT' OR WA_FILE_. CHECK: WA_FILE_ATTR-NAME NS '.done' AND WA_FILE_ATTR-NAME NS '.DONE'. "检查文件名称中不能包含.DONE 和.done MOVE UNIX_PATH TO WA_FILE_ATTR-PATH. MOVE TARGET_UNIX_PATH TO WA_FILE_ATTR-TARGET_PATH. APPEND WA_FILE_ATTR TO FILE_LIST. ”把读取得文件添加到内表中 ENDDO. CALL 'C_DIR_READ_FINISH' ID 'ERRNO' FIELD WA_FILE_ATTR-ERRNO ID 'ERRMSG' FIELD WA_FILE_ATTR-ERRMSG. ELSE. MESSAGE E001 WITH INT_ID. " (No path maintained in table ZRCAFILEPATH for interface &1.) ENDIF. ENDMETHOD.