ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법


SAP 시스템을 사용할 때 다소 불편하게 느껴지는 부분이 파일 관리 부분입니다.

SAP 사용자들 사이에 도면 파일을 공유해야 하거나 문서 파일을 공유하기 위해서 필요한 파일들을 SAP 시스템에 올리고 필요할 때 조회할 수 있는 환경을 만드는 것이 결코 쉬운 작업이 아닙니다. ABAP 개발자가 독단적으로 처리할 수 없으며 BC(시스템 관리자) 담당자의 도움을 받아야 할 수 있는 작업이기도 합니다.

그래서 일반적으로 많이 사용하는 방법이 NAS나 File Server를 별도로 활용하여 각 PC에서는 동일한 네트워크 드라이브로 공유 폴더에 접근해서 사용하는 방법입니다. 공유 폴더마다 접근 할 수 있는 사용자 권한을 부여할 수 있어 파일 접근 관리도 훨씬 편리하게 운영할 수 있습니다.

ABAP 개발자는 지정된 네트워크 드라이브 경로로 접근해서 파일을 업로딩 하거나 파일을 열어 조회할 수 있도록 프로그램을 개발하면 쉽게 파일 관리를 할 수 있게 됩니다.

이번 글에서는 ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법에 대해 알아보겠습니다.

SAP에서 네트워크 드라이브로 파일(폴더) 처리를 하는 시나리오

▶ ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법을 설명하기 위한 예제 시나리오 입니다.

  1. SAP에서 접근해서 사용할 NAS의 IP주소는 “100.1.1.1”이라고 가정하여 설명합니다.
  2. 만약 네트워크 드라이브로 연결해서 사용할 경우 드라이브 문자를 “N”이라고 가정하여 설명합니다.
  3. 사용하는 폴더 이름은 “공용폴더”라고 가정하고 설명합니다.


▶ NAS의 공용폴더를 사용하기 위한 DATA 선언

  • IP주소로 접근할 경우data: lc_directory like bdschko16-target_dir value ‘\\100.1.1.1\공용폴더\’.
  • 네트워크 드라이브로 접근할 경우data: lc_directory like bdschko16-target_dir value ‘N:\\공용폴더\’.


▶ 프로그램에서 사용할 DATA 변수 선언

  • data: li_file_count type i,
         li_dir_count type i,
         ltab_dir_table like sdokpath occurs 0 with header line,
         ltab_file_table like sdokpath occurs 0 with header line,
        G_FILE TYPE STRING.

특정 폴더에 있는 파일 목록 및 폴더 목록을 가져오는 ABAP Function

▶ ABAP에서 지정된 폴더의 파일 목록이나 하위 폴더 목록을 가져오는 Funtion은 ‘TMP_GUI_DIRECTORY_LIST_FILES‘ 입니다.

  • file_count : 파일 갯수를 리턴합니다.
  • dir_count : 폴더(디렉토리) 갯수를 리턴합니다.
  • file_table : 파일 목록이 들어 있은 인터널 테이블을 리턴합니다.
  • dir_table : 서브 폴더의 목록이 들어 있는 인터널 테이블을 리턴합니다.
  CALL FUNCTION ‘TMP_GUI_DIRECTORY_LIST_FILES’
    EXPORTING
      directory  = lc_directory
      filter     = ‘*.*’
    IMPORTING
      file_count = li_file_count     “파일 갯수
      dir_count  = li_dir_count     “폴더 갯수
    TABLES
      file_table = ltab_file_table    “파일 목록이 들어 있는 테이블
      dir_table  = ltab_dir_table    “폴더 목록이 들어 있는 테이블
    EXCEPTIONS
      cntl_error = 1
      others     = 2.
 

파일 목록의 인터널 테이블을 활용하는 방법

▶ Funtion으로 파일 목록을 가져온 인터널 테이블을 다른 인터널 테이블(it_list)로 파일 경로를 APPEND 하는 방법

  • LOOP AT ltab_file_table.
      it_list-PATHNAME= ltab_file_table-PATHNAME.
      APPEND it_list. CLEAR it_list.
    ENDLOOP.


▶ 파일 목록을 화면에 출력(WRITE)

  • LOOP AT it_list.|
      WRITE:/ it_list-PATHNAME.
    ENDLOOP.


▶ 파일 목록을 WRITE문으로 화면에 출력한 상태에서 특정 파일을 마우스 더블 클릭(AT LINE-SELECTION)으로 해당 문서를 여는 방법

AT LINE-SELECTION.
  CONCATENATE LC_DIRECTORY SY-LISEL INTO G_FILE.
 
  “프로그램에 연결된 확장자인 경우 파일만 실행하면 자동으로 연결 프로그램이 실행됨.
  CALL METHOD cl_gui_frontend_services=>execute
      EXPORTING
        document = G_FILE     “선택한 파일의 경로와 파일명
      EXCEPTIONS
        OTHERS   = 1.

Funtion 모듈 TMP_GUI_DIRECTORY_LIST_FILES 실행 화면

ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기