본문 바로가기

SAP/BSP

BSP - 엑셀 다운로드 예시

STEP 1. BSP PAGE.

DATA : LT_HEADER    TYPE EXTDFIEST,
       LS_HEADER    TYPE EXTDFIES.
DATA : IT_LIST TYPE TABLE ZTEST_T_TEST.

LS_HEADER-COLTITLE = '헤'APPEND LS_HEADER TO LT_HEADER. CLEAR LS_HEADER.
LS_HEADER-COLTITLE = '더'APPEND LS_HEADER TO LT_HEADER. CLEAR LS_HEADER.
LS_HEADER-COLTITLE = '부'APPEND LS_HEADER TO LT_HEADER. CLEAR LS_HEADER.
LS_HEADER-COLTITLE = '분'APPEND LS_HEADER TO LT_HEADER. CLEAR LS_HEADER.

CALL METHOD
  APPLICATION->TEST->TEST_EXCEL_LIST
  EXPORTING
    IR_RESPONSE   = IR_RESPONSE
    IR_NAVIGATION = NAVIGATION
    IT_DISPLAY    = IT_LIST                  "아이템 테이 블
    IT_HEADER     = LT_HEADER
    I_TITLE       = '테스트'
  IMPORTING
    E_MSG         = L_MSG
    E_RC          = L_RC.



STEP 2 APPLICATION->TEST->TEST_EXCEL_LIST 부분
METHOD TEST_EXCEL_LIST.

  DATA :
    LS_DISPLAY  TYPE ZTEST_S_TEST,
    LT_DISPLAY  TYPE ZTEST_T_TEST,
    LS_EXCEL    TYPE ZTEST_S_TEST_EXCEL_LIST,
    LT_EXCEL    TYPE ZTEST_T_TEST_LIST.

  DATA: CONTENT_DISPOSITION TYPE STRING.
  DATA: EX_XSTRING          TYPE XSTRING.
  DATA: L_REF               TYPE REF TO DATA.
  DATA: LREF_UTILITY        TYPE REF TO ZCL_TEST_UTILITY.
  DATA: L_RC        TYPE SY-SUBRC.

  CREATE OBJECT LREF_UTILITY.

  IF IT_DISPLAY[] IS NOT INITIAL.
    LOOP AT IT_DISPLAY INTO LS_DISPLAY.
      APPEND LS_DISPLAY TO LT_DISPLAY.
    ENDLOOP.

    IF LT_DISPLAY[] IS INITIAL.
      E_RC = 4.
      E_MSG = 'Excel 파일로 다운로드할 내용이 없습니다'.
      RETURN.
    ENDIF.
  ELSE.
    E_RC = 4.
    E_MSG = 'Excel 파일로 다운로드할 내용이 없습니다'.
    RETURN.
  ENDIF.

* 리스트 다운로드
  IF LT_DISPLAY[] IS NOT INITIAL.
*************************************************************
* Excel 구조대로 필드 뽑기
*************************************************************
    LOOP AT LT_DISPLAY INTO LS_DISPLAY.
      MOVE-CORRESPONDING LS_DISPLAY TO LS_EXCEL.
      APPEND LS_EXCEL TO LT_EXCEL.
    ENDLOOP.
*************************************************************
* Excel download data를 html tag로 변환
*************************************************************
    GET REFERENCE OF LT_EXCEL INTO L_REF.

    CALL METHOD LREF_UTILITY->CONVERT_ITAB_TO_HTML
      EXPORTING
        I_HEADER  = IT_HEADER
        I_ITAB    = L_REF
      IMPORTING
        E_XSTRING = EX_XSTRING.

    IF EX_XSTRING IS NOT INITIAL.
* set file name and extention.
      CONCATENATE 'attachment; filename='
                  I_TITLE
                  '_'
                  SY-DATUM
                  '.xls'
             INTO CONTENT_DISPOSITION.

      CALL METHOD CL_BSP_UTILITY=>DOWNLOAD
        EXPORTING
          OBJECT_S            = EX_XSTRING
          CONTENT_TYPE        = 'application/vnd.ms-excel'
          CONTENT_DISPOSITION = CONTENT_DISPOSITION
          RESPONSE            = IR_RESPONSE
          NAVIGATION          = IR_NAVIGATION.

    ENDIF.
  ELSE.
    E_RC = 4.
    E_MSG = 'Excel 파일 다운로드중 오류가 발생하였습니다'.
    RETURN.
  ENDIF.

ENDMETHOD.





CALL METHOD LREF_UTILITY->CONVERT_ITAB_TO_HTML 부분은 앞페이지에 기술

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

BSP - Process bar  (0) 2010.04.13
BSP - ZIP 파일 생성(여러개 파일을 묶어서 다운로드)  (0) 2010.04.09
BSP - 엑셀다운로드  (0) 2010.04.08
Table View에 사용되는 스타일 시트  (0) 2008.06.05
Table View에 관하여....  (0) 2008.06.05