Posted: Wed Aug 20, 2008 9:57 am Post subject: Display Information about OS Files on a Path
Code:
* Source Name is ZFILEINFO
REPORT ZFILEINFO line-size 132 line-count 65.
DATA: SAP_YES(1) VALUE 'X'
, SAP_NO(1) VALUE ' '
, SRT(1) VALUE 'T'
, NO_CS VALUE ' ' " no MUST_ContainString
, ALL_GEN VALUE '*' " generic filename shall select all
, STRLEN LIKE SY-FDPOS
.
parameters: dirname like epsf-epsdirnam
default '/data/KOD/Outbound/TO_UPPS/Archive'
lower case.
data: parm2(75) value '*'.
data: parm3(10).
data: filename(70).
DATA: BEGIN OF FILE_LIST OCCURS 100,
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(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.
USEABLE(1) TYPE C,
SUBRC(4) TYPE C,
ERRNO(3) TYPE C,
ERRMSG(40) TYPE C,
MOD_DATE like sy-datum,
MOD_TIME(8) TYPE C, " hh:mm:ss
SEEN(1) TYPE C,
CHANGED(1) TYPE C,
END OF FILE_LIST.
data: begin of file.
include structure file_list.
data: end of file.
refresh file_list.
perform fill_file_list using dirname parm2 parm3.
loop at file_list.
if file_list-name co ' .'.
delete file_list index syst-tabix.
endif.
endloop.
loop at file_list.
concatenate file_list-dirname '/' file_list-name into filename.
write: / filename,
file_list-mod_date,
file_list-mod_time.
endloop.
*---------------------------------------------------------------------*
* FORM FILL_FILE_LIST *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> A_DIR_NAME *
* --> A_GENERIC_NAME *
* --> A_MUST_CS *
*---------------------------------------------------------------------*
FORM FILL_FILE_LIST USING A_DIR_NAME A_GENERIC_NAME A_MUST_CS.
DATA: ERRCNT(2) TYPE P VALUE 0.
IF A_DIR_NAME IS INITIAL.
* MESSAGE E220. " 'Place cursor on valid line !'.
ENDIF.
CALL 'C_DIR_READ_FINISH' " just to be sure
ID 'ERRNO' FIELD FILE_LIST-ERRNO
ID 'ERRMSG' FIELD FILE_LIST-ERRMSG.
CALL 'C_DIR_READ_START' ID 'DIR' FIELD A_DIR_NAME
ID 'FILE' FIELD A_GENERIC_NAME
ID 'ERRNO' FIELD FILE-ERRNO
ID 'ERRMSG' FIELD FILE-ERRMSG.
IF SY-SUBRC <> 0.
* message i204 with sy-subrc 'C_DIR_READ_START'
* ' ' a_dir_name.
* message i204 with sy-subrc 'C_DIR_READ_START...'
* file-errno file-errmsg.
* MESSAGE E204 WITH FILE_LIST-ERRMSG FILE-ERRMSG.
ENDIF.
DO.
CLEAR FILE.
CALL 'C_DIR_READ_NEXT'
ID 'TYPE' FIELD FILE-TYPE
ID 'NAME' FIELD FILE-NAME
ID 'LEN' FIELD FILE-LEN
ID 'OWNER' FIELD FILE-OWNER
ID 'MTIME' FIELD FILE-MTIME
ID 'MODE' FIELD FILE-MODE
ID 'ERRNO' FIELD FILE-ERRNO
ID 'ERRMSG' FIELD FILE-ERRMSG.
FILE-DIRNAME = A_DIR_NAME.
MOVE SY-SUBRC TO FILE-SUBRC.
CASE SY-SUBRC.
WHEN 0.
CLEAR: FILE-ERRNO, FILE-ERRMSG.
CASE FILE-TYPE(1).
WHEN 'F'. " normal file.
* PERFORM FILENAME_USEABLE USING FILE-NAME FILE-USEABLE.
WHEN 'f'. " normal file.
* PERFORM FILENAME_USEABLE USING FILE-NAME FILE-USEABLE.
WHEN OTHERS. " directory, device, fifo, socket,...
MOVE SAP_NO TO FILE-USEABLE.
ENDCASE.
IF FILE-LEN = 0.
MOVE SAP_NO TO FILE-USEABLE.
ENDIF.
WHEN 1.
EXIT.
WHEN OTHERS. " SY-SUBRC >= 2
ADD 1 TO ERRCNT.
IF ERRCNT > 10.
EXIT.
ENDIF.
IF SY-SUBRC = 5.
MOVE: '???' TO FILE-TYPE,
'???' TO FILE-OWNER,
'???' TO FILE-MODE.
ELSE.
* ULINE.
* WRITE: / 'C_DIR_READ_NEXT', 'SUBRC', SY-SUBRC.
ENDIF.
MOVE SAP_NO TO FILE-USEABLE.
ENDCASE.
PERFORM P6_TO_DATE_TIME_TZ(RSTR0400) USING FILE-MTIME
FILE-MOD_TIME
FILE-MOD_DATE.
* * Does the filename contains the requested pattern?
* * Then store it, else forget it.
IF A_MUST_CS = NO_CS.
MOVE-CORRESPONDING FILE TO FILE_LIST.
APPEND FILE_LIST.
ELSE.
IF FILE-NAME CS A_MUST_CS.
MOVE-CORRESPONDING FILE TO FILE_LIST.
APPEND FILE_LIST.
ENDIF.
ENDIF.
ENDDO.
CALL 'C_DIR_READ_FINISH'
ID 'ERRNO' FIELD FILE_LIST-ERRNO
ID 'ERRMSG' FIELD FILE_LIST-ERRMSG.
IF SY-SUBRC <> 0.
WRITE: / 'C_DIR_READ_FINISH', 'SUBRC', SY-SUBRC.
ENDIF.
IF SRT = 'T'.
SORT FILE_LIST BY MTIME DESCENDING NAME ASCENDING.
ELSE.
SORT FILE_LIST BY NAME ASCENDING MTIME DESCENDING.
ENDIF.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.