반응형

 

Excel 을 다운로드 하는 경우가 종종 생긴다.

 

먼저 Download 할 위치를 정해줘야 하는데 SAP 스탠다드 코드를 이용할 수 있다.

 

Method cl_gui_frontend_services=>file_save_dialog를 이용하면 된다.

 

  DATA : lv_file_filter       TYPE string,
         lv_initial_directory TYPE string,
         lv_filename          TYPE string,
         lv_path              TYPE string,
         lv_fullpath          TYPE string.

  lv_filename = 'Template'.
  lv_file_filter = 'Excel File(*.xlsx; *.xls )|*.xlsx; *.xls'.
  lv_initial_directory = 'C:'.
  cl_gui_frontend_services=>file_save_dialog(
    EXPORTING
      default_extension         = 'xlsx'                " Default Extension
      default_file_name         = lv_filename           " Default File Name
      file_filter               = lv_file_filter        " File Type Filter Table
      initial_directory         = lv_initial_directory  " Initial Directory
    CHANGING
      filename                  = lv_filename           " File Name to Save
      path                      = lv_path               " Path to File
      fullpath                  = lv_fullpath           " Path + File Name
    EXCEPTIONS
      cntl_error                = 1                     " Control error
      error_no_gui              = 2                     " No GUI available
      not_supported_by_gui      = 3                     " GUI does not support this
      invalid_default_file_name = 4                     " Invalid default file name
      OTHERS                    = 5.
      
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  
  IF lv_fullpath IS INITIAL.
    RETURN.
  ENDIF.

 

위 코드와 같이 작성을 하면 아래와 같이 Download하는 창을 불러올 수 있다.

Excel Download 창

 

Default로 C드라이브 , 제목은 Template고 형식은 Excel로 들어간다.

 

필요에 따라 저장위치, 파일이름, 형식은 변경이 가능

 

lv_fullpath 는 저장위치(path) + 파일이름(File Name)  으로 구성되는 String으로 반환된다.

 

 

자 그러면 이제 Excel 혹은 Excel Template를 SAP 스탠다드에(웹저장소) 등록을 해보자.

 

T-Code : SMW0 실행.

 

SMW0 화면

 

Binary data for WebRFC applications를 선택하고 실행을 눌러준다.

 

Binary data for WebRFC 화면

 

해당 프로그램이 포함된 Package를 넣어주고 Excute(실행) 클릭

반응형

 

Obj. name 과 Description을 작성하고 import 버튼을 눌러 생성해준다.

 

Obj. name은 나중에 select문에 사용된다.

 

Import 클릭 후 화면

 

Import 버튼을 누르면 Excel을 선택하는 창이 나오는데,

 

미리 작성해둔 template excel 파일을 선택하여 등록하면 SAP 스탠다드 웹 저장소에 Upload되면서 저장이 된다.

 

그럼 코드로 돌아와서 해당 파일을 가져오자.

 

DATA : ls_item              TYPE wwwdatatab,
       lv_file              TYPE rlgrap-filename.
       
lv_file = lv_fullpath.

  SELECT SINGLE FROM wwwdata
   FIELDS *
    WHERE objid = 'Z_EXCEL_TEMPLATE'
     INTO CORRESPONDING FIELDS OF @ls_item.             "#EC CI_NOORDER

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = ls_item
      destination = lv_file.

  IF ls_item IS INITIAL.
    "File is not exist
    MESSAGE s044 DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

 

wwwdata 에서 방금 만든 obj.name 의 data를 가져와 

 

CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' 를 사용해서 다운로드를 해주면 

 

기존의 만들어 뒀던 template의 모든 형식그대로 다운로드가 된다.

 

( 날짜 타입, 엑셀 border, Cell style 모두 적용된 상태로 다운 )

 

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] URL 접근하여 데이터 얻는 방법  (0) 2024.09.12
[ABAP] BDC를 활용한 CALL TRANSACTION  (0) 2024.09.10
[ABAP] Subtotal(소계) 세팅  (1) 2024.09.02
[ABAP] SELECT WITH 구문  (0) 2024.06.24
[ABAP] Pass by Value vs Pass by Reference  (1) 2024.06.16

+ Recent posts