ABAP/Web Dynpro ABAP(WDA)
[번역] 웹딘프로아밥 XLSX 엑셀파일 업로드 예제
Derby
2016. 9. 7. 14:50
이글은 아래 링크의 원본 글에 대한 한글 번역 입니다 (+약간의 내용 추가)
https://scn.sap.com/community/web-dynpro-abap/blog/2012/04/05/upload-xlsx-file-in-webdynpro-abap-and-view-its-content
더 발전된 코드 웹딘프로아밥 XLSX 엑셀파일 업로드 펑션: https://boy0.tistory.com/107
Posted by Ashish Shah in Web Dynpro ABAP on Apr 5, 2012 2:20:52 PM
Upload XLSX file in WebDynpro ABAP and view its content
웹딘프로아밥 게시판에는 엑셀 파일을 읽어서 그 내용을 화면에 테이블로 보여주기를 원하는 많은 글이 있습니다. 그런데 대부분은 답변이 없는 상태로 남아있죠. 그 이유는 스탠다드 기능만으로 바로 엑셀파일을 다룰 수 있는 방법이 없기 때문입니다.
새로운 해결 방법은 바로 ABAP2XLSX 프로젝트를 통해서 가능합니다!!!
준비:
- SAPlink 최신버전 설치 https://boy0.tistory.com/96
- SAPlink 플러그인 설치
- ABAP2XLSX 설치 https://boy0.tistory.com/95
- 샘플 데이터를 입력한 XLSX 엑셀파일
- (필수는 아님) 개선사항을 업데이트 받기위해 ABAP2XLS 와 SAPLINK 그룹에 가입하기
https://cw.sdn.sap.com/cw/groups/saplink and https://cw.sdn.sap.com/cw/groups/abap2xlsx
파일업로드 UI 엘리먼트가 있는 웹딘프로아밥 만들기:
- 티코드 SE80에서 웹딘프로아밥 컴포넌트를 생성합니다.
- 뷰의 context 탭에서 "upload_content" 노드를 만들고 그 아래에 타입이 XSTRING인 "file_content" 어트리뷰트를 만듭니다.
- layout 탭에서 파일업로드 UI 엘리먼트를 추가 하고 data 속성에 XSTRING 어트리뷰트를 바인딩합니다.

- 버튼을 추가하고 action: upload를 지정합니다.
- 아래 코드를 사용하여 엑셀 2007포맷의 .xlsx 파일을 읽을 수 있습니다.
Method OnActionUpload. |
METHOD onactionupload .
DATA lo_nd_upload_content TYPE REF TO if_wd_context_node.
DATA lo_el_upload_content TYPE REF TO if_wd_context_element.
DATA ls_upload_content TYPE wd_this->element_upload_content.
DATA: lo_componentcontroller TYPE REF TO ig_componentcontroller,
lo_current_controller TYPE REF TO if_wd_controller,
lo_view_controller TYPE REF TO if_wd_view_controller,
lo_message_manager TYPE REF TO if_wd_message_manager .
DATA: excel TYPE REF TO zcl_excel,
lo_excel_writer TYPE REF TO zif_excel_writer,
reader TYPE REF TO zif_excel_reader.
DATA: worksheet TYPE REF TO zcl_excel_worksheet,
highest_column TYPE zexcel_cell_column,
highest_row TYPE int4,
column TYPE zexcel_cell_column VALUE 1,
col_str TYPE zexcel_cell_column_alpha,
row TYPE int4 VALUE 1,
value TYPE zexcel_cell_value.
DATA: ex TYPE REF TO zcx_excel,
msg TYPE string,
lv_highest_row TYPE string,
lv_highest_column TYPE string,
lv_rowdata TYPE string,
lv_rownumber TYPE string.
lo_current_controller ?= wd_this->wd_get_api( ).
lo_message_manager = lo_current_controller->get_message_manager( ).
lo_view_controller = wd_this->wd_get_api( ).
* navigate from to via lead selection
lo_nd_upload_content = wd_context->get_child_node( name = wd_this->wdctx_upload_content ).
* get element via lead selection
lo_el_upload_content = lo_nd_upload_content->get_element( ).
* get all declared attributes
lo_el_upload_content->get_static_attributes(
IMPORTING
static_attributes = ls_upload_content ).
TRY.
CREATE OBJECT reader TYPE zcl_excel_reader_2007.
excel = reader->load( ls_upload_content-file_content ).
worksheet = excel->get_active_worksheet( ).
highest_column = worksheet->get_highest_column( ).
MOVE highest_column TO lv_highest_column.
highest_row = worksheet->get_highest_row( ).
MOVE highest_row TO lv_highest_row.
CONCATENATE 'Highest column: ' lv_highest_column 'Highest row: ' lv_highest_row INTO msg.
CALL METHOD lo_message_manager->report_message
EXPORTING
message_text = msg.
CLEAR lv_rowdata.
WHILE row <= highest_row.
WHILE column <= highest_column.
col_str = zcl_excel_common=>convert_column2alpha( column ).
worksheet->get_cell(
EXPORTING
ip_column = col_str
ip_row = row
IMPORTING
ep_value = value
).
CONCATENATE lv_rowdata value INTO lv_rowdata SEPARATED BY space.
column = column + 1.
ENDWHILE.
CLEAR msg.
MOVE row TO lv_rownumber.
CONCATENATE 'Row# ' lv_rownumber ' Data = ' lv_rowdata INTO msg.
CLEAR lv_rowdata.
CALL METHOD lo_message_manager->report_message
EXPORTING
message_text = msg.
column = 1.
row = row + 1.
ENDWHILE.
CATCHzcx_excel INTO ex. ” Exceptions for ABAP2XLSX
CLEAR msg.
msg = ex->error.
* report message
CALL METHOD lo_message_manager->report_message
EXPORTING
message_text = msg.
ENDTRY.
ENDMETHOD.
|
샘플 엑셀 파일 내용

엑샐 파일을 업로드 하는 웹딘프로아밥 프로그램 예:

결과 :

행복하세요!!!!
관심있는 댓글 환영합니다.
이글은 아래 링크의 원본 글에 대한 한글 번역 입니다 (+약간의 내용 추가)
https://scn.sap.com/community/web-dynpro-abap/blog/2012/04/05/upload-xlsx-file-in-webdynpro-abap-and-view-its-content
더 발전된 코드 웹딘프로아밥 XLSX 엑셀파일 업로드 펑션: https://boy0.tistory.com/107