List of directory file.
Hallo All, Is there any other way to get the file names in a directory other than 'TMP_GUI_DIRECTORY_LIST_FILES' and CL_GUI_FRONTEND_SERVICES=>DIRECTORY_LIST_FILES. Coz I can't use any GUI FM or methods. The purpose is I need this report for a backgroundjob..even the question is some how confusing. Please try to give me a clue.. ..regards.Sri
this will read the directory on apps server. works in foreground and background.
hope it helps.
randy
**********************************************************************
* Program Description:
*
* This program list the files in a directory on the application
* server.
*
*
**************Maintenance Changes************************************
* Transport# |WHO| Date | Description of change
*
*********************************************************************
REPORT zgetdir STANDARD PAGE HEADING
LINE-SIZE 94
LINE-COUNT 65.
PARAMETER:
* p_path(50) type c default '/usr/sap/transfer' lower case.
P_PATH(50) TYPE C DEFAULT '/tmp' LOWER CASE,
P_SRTNAM RADIOBUTTON GROUP GP1,
P_SRTDAT RADIOBUTTON GROUP GP1,
P_SRTSIZ RADIOBUTTON GROUP GP1.
CONSTANTS:
DAYS1980 TYPE I VALUE 3652.
DATA:
INFILE LIKE RTERM-FILE,
OUTFILE LIKE RTERM-FILE.
DATA:
BEGIN OF ATTR OCCURS 0,
FILE_NAME LIKE EPSF-EPSFILNAM,
FILE_SIZE LIKE EPSF-EPSFILSIZ,
FILE_OWNER LIKE EPSF-EPSFILOWN,
FILE_MODE LIKE EPSF-EPSFILMOD,
FILE_TYPE LIKE EPSF-EPSFILTYP,
FILE_MTIME(12),
END OF ATTR,
HEADING_TEXT(90).
*---------------------------E V E N T----------------------------------*
*--------------------------TOP-OF-PAGE---------------------------------*
* Print page header.
TOP-OF-PAGE.
PERFORM SET_UP_HEADINGS.
*---------------------------E V E N T----------------------------------*
*-----------------------END-OF-SELECTION-------------------------------*
END-OF-SELECTION.
HEADING_TEXT = 'File Name'.
HEADING_TEXT+41(10) = 'File Size'.
HEADING_TEXT+52(11) = 'Change Date'.
PERFORM EPS_GET_DIRECTORY_LISTING USING P_PATH 'X'.
*---------------------------------------------------------------------*
* FORM EPS_GET_DIRECTORY_LISTING *
*---------------------------------------------------------------------*
* Get an application server directory listing. *
*---------------------------------------------------------------------*
FORM EPS_GET_DIRECTORY_LISTING USING DIR_NAME TYPE C
P_LONG TYPE C.
CONSTANTS:
C_REL_I_DATE TYPE I VALUE 722816.
TYPES:
CX_POINT_IN_TIME.
DATA:
DIR_LIST LIKE EPSFILI OCCURS 0 WITH HEADER LINE,
TPATH LIKE EPSF-EPSDIRNAM,
MDATE LIKE SY-DATUM,
MTIME LIKE SY-UZEIT,
POINT_IN_TIME TYPE I,
POINT_1970 TYPE I.
TPATH = DIR_NAME.
CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'
* destination rfc_destination
EXPORTING
DIR_NAME = TPATH
TABLES
DIR_LIST = DIR_LIST
EXCEPTIONS
INVALID_EPS_SUBDIR = 1
SAPGPARAM_FAILED = 2
BUILD_DIRECTORY_FAILED = 3
NO_AUTHORIZATION = 4
READ_DIRECTORY_FAILED = 5
TOO_MANY_READ_ERRORS = 6
EMPTY_DIRECTORY_LIST = 7
OTHERS = 8.
IF SY-SUBRC NE 0.
WRITE: / 'Status =', SY-SUBRC.
EXIT.
ENDIF.
IF P_LONG IS INITIAL.
LOOP AT DIR_LIST.
WRITE: / DIR_LIST-NAME.
ENDLOOP.
ELSE.
LOOP AT DIR_LIST.
CALL FUNCTION 'EPS_GET_FILE_ATTRIBUTES'
EXPORTING
FILE_NAME = DIR_LIST-NAME
DIR_NAME = TPATH
IMPORTING
FILE_SIZE = ATTR-FILE_SIZE
FILE_OWNER = ATTR-FILE_OWNER
FILE_MODE = ATTR-FILE_MODE
FILE_TYPE = ATTR-FILE_TYPE
FILE_MTIME = ATTR-FILE_MTIME
EXCEPTIONS
READ_DIRECTORY_FAILED = 1
READ_ATTRIBUTES_FAILED = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
ATTR-FILE_NAME = DIR_LIST-NAME.
APPEND ATTR.
ENDIF.
ENDLOOP.
IF P_SRTNAM NE ' '.
* Sort by file name.
SORT ATTR BY FILE_NAME.
ELSEIF P_SRTDAT NE ' '.
* Sort by change date.
SORT ATTR BY FILE_MTIME DESCENDING.
ELSEIF P_SRTSIZ NE ' '.
SORT ATTR BY FILE_SIZE.
ENDIF.
LOOP AT ATTR.
* Convert seconds since 1970 to date, time.
POINT_IN_TIME = ATTR-FILE_MTIME.
CALL FUNCTION 'POINT_IN_TIME_CONVERT'
EXPORTING
POINT_IN_TIME = POINT_IN_TIME
IMPORTING
DATE = MDATE
TIME = MTIME
EXCEPTIONS
OTHERS = 1.
* Correct for SAP start date time.
SUBTRACT DAYS1980 FROM MDATE.
WRITE: / ATTR-FILE_NAME,
ATTR-FILE_SIZE,
MDATE,
MTIME.
ENDLOOP.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM EPS_GET_FILE_ATTRIBUTES *
*---------------------------------------------------------------------*
* Get an application server file's attributes.
*---------------------------------------------------------------------*
FORM EPS_GET_FILE_ATTRIBUTES USING NAME DIR.
DATA:
FILE_NAME LIKE EPSF-EPSFILNAM,
DIR_NAME LIKE EPSF-EPSDIRNAM,
PATH(60).
DATA:
BEGIN OF FILE,
DIRNAME(75) TYPE C, " name of directory. (possibly truncated.)
NAME(75) TYPE C, " name of entry. (possibly truncated.)
TYPE(10) TYPE C, " type of entry.
LEN LIKE EPSF-EPSFILSIZ, " length in bytes.
OWNER LIKE EPSF-EPSFILOWN, " owner of the entry.
MTIME(6) TYPE P, " last modification date, seconds since 1970
MODE LIKE EPSF-EPSFILMOD, " like "rwx-r-x--x": protection mode.
ERRNO(3) TYPE C,
ERRMSG(40) TYPE C,
END OF FILE.
FILE_NAME = NAME.
DIR_NAME = DIR.
CALL FUNCTION 'EPS_GET_FILE_ATTRIBUTES'
EXPORTING
FILE_NAME = FILE_NAME
DIR_NAME = DIR_NAME
IMPORTING
FILE_SIZE = FILE-LEN
FILE_OWNER = FILE-OWNER
FILE_MODE = FILE-MODE
FILE_TYPE = FILE-TYPE
FILE_MTIME = FILE-MTIME
EXCEPTIONS
READ_DIRECTORY_FAILED = 1
READ_ATTRIBUTES_FAILED = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
WRITE: / 'Status =', SY-SUBRC.
EXIT.
ENDIF.
CONCATENATE DIR NAME INTO PATH SEPARATED BY '/'.
WRITE: / PATH.
WRITE: / 'mtime =', FILE-MTIME.
WRITE: / 'size =', FILE-LEN.
WRITE: / 'owner =', FILE-OWNER.
WRITE: / 'mode =', FILE-MODE.
WRITE: / 'type =', FILE-TYPE.
ENDFORM.
*---------------------------------------------------------------------*
* FORM FILENAME_GET *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM FILENAME_GET.
CALL FUNCTION 'FILENAME_GET'
EXPORTING
FILENAME = INFILE
TITLE = 'title'
IMPORTING
FILENAME = OUTFILE
EXCEPTIONS
OTHERS = 1.
WRITE: / 'Status =', SY-SUBRC, OUTFILE.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SET_UP_HEADINGS *
*---------------------------------------------------------------------*
* Display heading for each page. *
*---------------------------------------------------------------------*
FORM SET_UP_HEADINGS.
STATICS:
PAGE_CNT TYPE P.
DATA:
PAGE_COL TYPE P,
TITLE_COL TYPE P,
PAGE_NUM_COL TYPE P,
PAGE_WIDTH TYPE P.
PAGE_WIDTH = SY-LINSZ. "size of report
TITLE_COL = PAGE_WIDTH / 2 - ( STRLEN( SY-TITLE ) / 2 ).
PAGE_COL = PAGE_WIDTH - 9.
PAGE_NUM_COL = PAGE_WIDTH - 4.
PAGE_CNT = PAGE_CNT + 1.
WRITE: /1 'DATE ', SY-DATUM, SY-UZEIT,
AT TITLE_COL SY-TITLE,
AT PAGE_COL 'PAGE',
AT PAGE_NUM_COL(5) PAGE_CNT NO-ZERO.
WRITE: /1 'Report:', SY-REPID, 'Client:', SY-MANDT.
ULINE.
IF NOT HEADING_TEXT IS INITIAL.
WRITE: / HEADING_TEXT.
SKIP.
ENDIF.
ENDFORM. " SET_UP_HEADINGSde]
hi
good job, works fine.
mlnaras
Hi,
Just try to use this FM....
RZL_READ_DIR_LOCAL
Thanks.