服务器文件列表

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 . 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值