ABAP에서 인터널테이블의 내용을 PC 파일로 다운로드 하거나 업로드 하는 방법


ABAP 프로그램을 개발할 때 리포트 결과를 엑셀 파일이나 PC 로컬 파일로 다운로드 하거나 반대로 PC 로컬 파일을 업로드 해서 인터널테이블을 채우는 로직을 많이 구현하게 됩니다.

Internal Table을 다운로드 하거나 업로드 하는 방법은 Function 모듈을 사용해서 쉽게 구현이 가능합니다.

이번 글에서는 ABAP에서 인터널테이블의 내용을 PC 파일로 다운로드 하거나 업로드 하는 방법에 대해 각각 알아보겠습니다.

ABAP에서 인터널테이블의 내용을 PC 파일로 다운로드 하거나 업로드 하는 방법

ABAP Internal table의 내용을 PC file로 다운로

▶ 인터널테이블의 내용을 사용자 PC의 파일로 내려받기 작업(Download)을 할 때 사용하는 Function 입니다.

일반적으로 인터널 테이블을 파일로 저장할 때 확장자를 ‘xls’로 지정합니다. 마치 엑셀로 내려 받는 것 같지만 아래 File Type을 보면 알겠지만 구분자로 분리된 텍스트 파일 입니다. 

내려받은 파일을 엑셀에서 바로 열 때 텍스트 내용에 따라 셀이 뭉치는 현상이 발생할 수 있습니다.
혹시 셀이 뭉치는 현상이 발생하면 SAP에서 저장한 파일을 엑셀로 바로 열 때 특정 셀이 뭉쳐지는 현상을 해결하는 방법 글을 참고하세요

CALL FUNCTION ‘GUI_DOWNLOAD’
     EXPORTING
          filename        = i_file
          filetype        = ‘ASC’
     TABLES
          data_tab        = it_datatab  “ITBL_IN_RECORD[]
     EXCEPTIONS
          file_open_error = 1
          others          = 2.
 


▼ 만약 사용 중인 SAP GUI 버전이 4.7 이전 버전이라면 아래 WS_DOWNLOAD을 사용할 수 있습니다. (Internal table into presentation server file)

CALL FUNCTION ‘WS_DOWNLOAD’
     EXPORTING
          filename = i_file
          filetype = ‘DAT’             ” 파일 타입
     TABLES
          data_tab = it_datatab.    ” 인터널테이블
 

ABAP PC file을 Internal table로 업로드

▶ 사용자 PC에 있는 파일을 인터널 테이블로 올리는 작업(Upload)을 할 때 사용하는 Function 입니다.

CALL FUNCTION ‘GUI_UPLOAD’
     EXPORTING
          filename        = i_file
          filetype        = ‘ASC’
     TABLES
          data_tab        = it_datatab  “ITBL_IN_RECORD[]
     EXCEPTIONS
          file_open_error = 1
          OTHERS          = 2.
 


▼ 만약 사용 중인 SAP GUI 버전이 4.7 이전 버전이라면 아래 WS_UPLOAD을 사용할 수 있습니다. (Presentation server file to internal table)

CALL FUNCTION ‘WS_UPLOAD’
     EXPORTING
          filename = i_file
          filetype = ‘DAT’             ” 파일 타입
     TABLES
          data_tab = it_datatab.    ” 인터널테이블
 

FILETYPE 종류

일반적으로 인터널 테이블의 내용을 PC의 로컬 파일로 다운로드 하거나 업로드 할 때 사용하는 FileType은 ‘ASC‘와 ‘DAT‘ 입니다.

  • ASC : ASCII
  • DAT : 탭으로 분리된 텍스트
  • IBM : EBCDIC
  • BIN : Binary





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


답글 남기기