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 부분은 앞페이지에 기술
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 |