SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Список файлов в директории на сервере приложений



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
nebo
Участник
Участник



Joined: 29 Dec 2007
Posts: 31

PostPosted: Tue Mar 11, 2008 10:48 am    Post subject: Список файлов в директории на сервере приложений Reply with quote

Доброе утро, подскажите ФМ для получения списка файлов в указанной директории на сервере приложений? Сервер может быть как юниксовый, так и виндовый.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 11, 2008 12:16 pm    Post subject: Reply with quote

Стандарт не нашел...
Набросал такой ФМ:
Code:
FUNCTION ZBCA_SERVER_FILE_LIST.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(DIRECTORY) DEFAULT ' '
*"  TABLES
*"      E_FILES TYPE  FILETABLE
*"  EXCEPTIONS
*"      NOT_FOUND
*"----------------------------------------------------------------------

* Data definition
  DATA:
    BEGIN OF LS_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 LS_FILE.

  DATA:
    LT_FILE LIKE LS_FILE OCCURS 0,
    L_COUNTER TYPE I,
    L_COUNTER_PACKAGE TYPE I,
    L_CHAR10(10),
    L_TEXT(100),
    L_SUBRC LIKE SY-SUBRC.


* Get files
  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 DIRECTORY
                          ID 'FILE'   FIELD '*'
                          ID 'ERRNO'  FIELD LS_FILE-ERRNO
                          ID 'ERRMSG' FIELD LS_FILE-ERRMSG.
  IF SY-SUBRC <> 0.
    IF NOT LS_FILE-ERRMSG IS INITIAL.
      MESSAGE I034(/SAPDMC/LSMW_OBJ_060) WITH LS_FILE-ERRMSG.
    ENDIF.
    RAISE NOT_FOUND.
  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 = DIRECTORY.

    ADD 1 TO L_COUNTER.
    ADD 1 TO L_COUNTER_PACKAGE.
    IF L_COUNTER_PACKAGE = 100.
      L_TEXT = '& Eintrфge 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.
    APPEND LS_FILE TO LT_FILE.

  ENDDO.

  CALL 'C_DIR_READ_FINISH'
      ID 'ERRNO'  FIELD LS_FILE-ERRNO
      ID 'ERRMSG' FIELD LS_FILE-ERRMSG.

  SORT LT_FILE BY TYPE DESCENDING NAME DESCENDING.

* Prepare outtab
  LOOP AT LT_FILE INTO LS_FILE.
    E_FILES-FILENAME = LS_FILE-NAME.
    APPEND E_FILES.
  ENDLOOP.


ENDFUNCTION.


Попробуйте, может поможет.
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 11, 2008 12:19 pm    Post subject: Reply with quote

Сейчас еще допроверил. Этот ФМ и на локальной машине списки в директориях считывает. Вообще шоколадно вышло.
Back to top
View user's profile Send private message Blog
nebo
Участник
Участник



Joined: 29 Dec 2007
Posts: 31

PostPosted: Tue Mar 11, 2008 12:48 pm    Post subject: Reply with quote

Так быстро написали, спасибо!
Как Вы заставили его получить список файлов на локальной машине?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 11, 2008 1:12 pm    Post subject: Reply with quote

Я не волшебник - это все кусок стандартной программы, вызываемой внутри ФМ /SAPDMC/LSM_F4_SERVER_FILE. Просто завернул в нужный вид.

По-поводу поиска на локале - даже не знаю, использование C-функций дело темное и наукой не объяснимое, работает и ладно.
Back to top
View user's profile Send private message Blog
nebo
Участник
Участник



Joined: 29 Dec 2007
Posts: 31

PostPosted: Tue Mar 11, 2008 1:28 pm    Post subject: Reply with quote

John Doe wrote:
По-поводу поиска на локале - даже не знаю, использование C-функций дело темное и наукой не объяснимое, работает и ладно.


Я немного про другое спросил. У меня выбает список файлов на сервере приложений, а Вы написали, что проверили на "Этот ФМ и на локальной машине списки в директориях считывает."

Как с локальной машины считать, не пойму? Crying or Very sad
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 11, 2008 2:03 pm    Post subject: Reply with quote

ОЙ Shocked , это я лажанул, запустил с параметром 'C:\' и показалось, что корень с моей машины, а это корневой каталог с сервера...

Сильно извиняюсь за неправильные данные.
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 11, 2008 2:05 pm    Post subject: Reply with quote

Нашел ФМ для локальной машины - TMP_GUI_DIRECTORY_LIST_FILES
Back to top
View user's profile Send private message Blog
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.