SAP 시스템을 사용할 때 다소 불편하게 느껴지는 부분이 파일 관리 부분입니다.
SAP 사용자들 사이에 도면 파일을 공유해야 하거나 문서 파일을 공유하기 위해서 필요한 파일들을 SAP 시스템에 올리고 필요할 때 조회할 수 있는 환경을 만드는 것이 결코 쉬운 작업이 아닙니다. ABAP 개발자가 독단적으로 처리할 수 없으며 BC(시스템 관리자) 담당자의 도움을 받아야 할 수 있는 작업이기도 합니다.
그래서 일반적으로 많이 사용하는 방법이 NAS나 File Server를 별도로 활용하여 각 PC에서는 동일한 네트워크 드라이브로 공유 폴더에 접근해서 사용하는 방법입니다. 공유 폴더마다 접근 할 수 있는 사용자 권한을 부여할 수 있어 파일 접근 관리도 훨씬 편리하게 운영할 수 있습니다.
ABAP 개발자는 지정된 네트워크 드라이브 경로로 접근해서 파일을 업로딩 하거나 파일을 열어 조회할 수 있도록 프로그램을 개발하면 쉽게 파일 관리를 할 수 있게 됩니다.
이번 글에서는 ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법에 대해 알아보겠습니다.
SAP에서 네트워크 드라이브로 파일(폴더) 처리를 하는 시나리오
▶ ABAP에서 특정 폴더에 있는 파일 목록이나 폴더 목록을 가져와서 활용 하는 방법을 설명하기 위한 예제 시나리오 입니다.
- SAP에서 접근해서 사용할 NAS의 IP주소는 “100.1.1.1”이라고 가정하여 설명합니다.
- 만약 네트워크 드라이브로 연결해서 사용할 경우 드라이브 문자를 “N”이라고 가정하여 설명합니다.
- 사용하는 폴더 이름은 “공용폴더”라고 가정하고 설명합니다.
▶ 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 실행 화면
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^