Code:
FUNCTION TMP_GUI_DIRECTORY_LIST_FILES.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(DIRECTORY) TYPE C
*" VALUE(FILTER) TYPE C DEFAULT '*.*'
*" EXPORTING
*" VALUE(FILE_COUNT) TYPE I
*" VALUE(DIR_COUNT) TYPE I
*" TABLES
*" FILE_TABLE STRUCTURE SDOKPATH
*" DIR_TABLE STRUCTURE SDOKPATH
*" EXCEPTIONS
*" CNTL_ERROR
*"----------------------------------------------------------------------
TYPES: BEGIN OF FILE_INFO,
FILENAME(1024) TYPE C,
FILELENGTH TYPE I,
ISDIR TYPE I,
ISHIDDEN TYPE I,
ISSYSTEM TYPE I,
ISREADONLY TYPE I,
ISARCHIVED TYPE I,
ISNORMAL TYPE I,
ISCOMPRESS TYPE I,
DUMMY(1024) TYPE C,
END OF FILE_INFO.
DATA: RC TYPE I,
THE_FILE_TABLE TYPE FILE_INFO OCCURS 0 WITH HEADER LINE,
TMP_HANDLE TYPE CNTL_HANDLE.
DIR_COUNT = 0.
FILE_COUNT = 0.
REFRESH: FILE_TABLE, DIR_TABLE.
IF ORBTYP IS INITIAL.
PERFORM SET_ORBTYP.
ENDIF.
PERFORM COM_INIT.
IF COM_INIT IS INITIAL.
RAISE CNTL_ERROR.
ENDIF.
* h_control-guid = 0.
TMP_HANDLE-HANDLE_TYPE = CNTL_TYPE_NO_OCX.
TMP_HANDLE-OBJ = H_COM1.
CASE ORBTYP.
WHEN ORB_COM_DEF.
CALL FUNCTION 'DP_CONTROL_ASSIGN_TABLE'
EXPORTING
H_CNTL = TMP_HANDLE
MEDIUM = CNDP_MEDIUM_R3TABLE
PROPERTYNAME = 'R3TABLE'
TABLES
DATA = THE_FILE_TABLE
EXCEPTIONS
DP_ERROR_CREATE = 1
DP_ERROR_SEND_DATA = 2
DP_ERROR_ASSIGN = 3
DP_ERROR_INVALID_PARAM = 4
DP_ERROR_TABNAME = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
CALL METHOD OF H_COM1 'LISTFILES' = RC
EXPORTING #1 = DIRECTORY
#2 = FILTER.
IF SY-SUBRC NE 0.
RAISE CNTL_ERROR.
ENDIF.
CALL FUNCTION 'DP_CONTROL_GET_TABLE'
EXPORTING
H_CNTL = TMP_HANDLE
PROPERTYNAME = 'R3TABLE'
MEDIUM = CNDP_MEDIUM_R3TABLE
TABLES
DATA = THE_FILE_TABLE
EXCEPTIONS
DP_ERROR_CREATE = 1
DP_ERROR_GET_PROPERTY = 2
DP_ERROR_GET_DATA = 3
DP_ERROR_INVALID_PARAM = 4
OTHERS = 5.
IF SY-SUBRC NE 0.
RAISE CNTL_ERROR.
ENDIF.
LOOP AT THE_FILE_TABLE.
IF THE_FILE_TABLE-ISDIR = 1.
APPEND THE_FILE_TABLE-FILENAME TO DIR_TABLE.
DIR_COUNT = DIR_COUNT + 1.
ELSE.
APPEND THE_FILE_TABLE-FILENAME TO FILE_TABLE.
FILE_COUNT = FILE_COUNT + 1.
ENDIF.
ENDLOOP.
ENDCASE.
ENDFUNCTION.