REPORT zr_dynamic_table_update_excel NO STANDARD PAGE HEADING.
*** --- Data Declarations
DATA:lt_excel TYPE TABLE OF alsmex_tabline,
lt_dref TYPE REF TO data,
ls_dref TYPE REF TO data,
lv_col TYPE i,
lo_alv TYPE REF TO cl_salv_table,
lt_table_filds TYPE TABLE OF dfies.
*** --- Field Symbols
FIELD-SYMBOLS : <fs_table> TYPE any .
FIELD-SYMBOLS : <ft_table> TYPE STANDARD TABLE.
FIELD-SYMBOLS : <dyn_field> .
*** --- Selection screen designing
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_file TYPE rlgrap-filename OBLIGATORY,
p_table TYPE dd02l-tabname OBLIGATORY,
p_test AS CHECKBOX DEFAULT abap_true.
SELECTION-SCREEN END OF BLOCK b1.
*** --- value request for p_file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
*** --- START-OF-SELECTION
START-OF-SELECTION.
*create OBJECT lr_descr.
*** --- Assigning fields symbols for Tables
CREATE DATA lt_dref TYPE TABLE OF (p_table).
CREATE DATA ls_dref TYPE (p_table).
*** --- Assign field symbol with table type of DDIC
ASSIGN lt_dref->* TO <ft_table>.
*** --- Assign field symbol with Structure type of DDIC
ASSIGN ls_dref->* TO <fs_table>.
*** --- Call the Function module ALSM_EXCEL_TO_INTERNAL_TABLE
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 1
i_end_col = 99
i_end_row = 999999
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc EQ 0.
*** --- Sort
SORT lt_excel BY row.
LOOP AT lt_excel INTO DATA(ls_excel).
*** --- Adding count to skip the mapping for MANDT field
lv_col = ls_excel-col + 1.
ASSIGN COMPONENT lv_col OF STRUCTURE <fs_table> TO <dyn_field>.
IF sy-subrc = 0.
***-- Compare Excel sheet column data and Dynamic table fields
IF ls_excel-row = 1.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = p_table
TABLES
dfies_tab = lt_table_filds
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
READ TABLE lt_table_filds INTO DATA(ls_table_fields) INDEX lv_col.
IF sy-subrc = 0.
IF ls_table_fields-fieldname NE ls_excel-value.
WRITE: 'Excel sheet data and Dynamic table fields are not matching'.
EXIT.
ENDIF.
ENDIF.
ELSE.
<dyn_field> = ls_excel-value.
ENDIF.
ENDIF.
IF ls_excel-row GT 1.
AT END OF row.
APPEND <fs_table> TO <ft_table>.
CLEAR <fs_table>.
ENDAT.
ENDIF.
ENDLOOP.
IF <ft_table> IS NOT INITIAL.
IF p_test IS INITIAL.
*** --- Modify
MODIFY (p_table) FROM TABLE <ft_table>.
IF sy-subrc EQ 0.
COMMIT WORK.
DATA(lv_lines) = lines( <ft_table> ).
WRITE: TEXT-002,lv_lines.
ELSE.
ROLLBACK WORK.
MESSAGE TEXT-003 TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
ELSE.
*** --- Factory Method
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv " Basis Class Simple ALV Tables
CHANGING
t_table = <ft_table>
).
*** --- Display
lo_alv->display( ).
ENDIF.
ENDIF.
ENDIF.
출처 : https://blogs.sap.com/2019/09/20/dynamically-update-data-from-excel-to-database-table/
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
144 | The New Programming Model in SAP NetWeaver 04 [1] | 홍성호 | 2007.03.27 | 3659 |
143 | ABAP 예제 프로그램 정보를 담고 있는 엑셀 파일 [5] | SARA | 2007.03.26 | 4104 |
142 | work flow (워크 플로우) 메뉴얼 입니다. [5] | SARA | 2007.03.26 | 5102 |
141 | work flow (워크 플로우)오버뷰 [3] | SARA | 2007.03.26 | 5373 |
140 | ALV Gird Control 문서 [4] | 김관현 | 2007.03.26 | 3573 |
139 | RFC Programming in ABAP [2] | 김관현 | 2007.03.26 | 5378 |
138 | RFC 호출, Call rfc [11] | sapjoy | 2007.03.26 | 4687 |
137 | idoc 이란? [16] | sapjoy | 2007.03.26 | 9753 |
136 | 간단한 SALV 만들기 [13] | 펠릭스 | 2007.03.23 | 6132 |
135 | Background Processing, LUW [10] | 하얀콩 | 2007.03.23 | 3535 |
134 | ALV개념 정리 [20] | 팡다루 | 2007.03.22 | 5614 |
133 | ABAP Key word 문서입니다. [4] | 화니 | 2007.03.21 | 4776 |
132 | [PDF]BC-ABAP Programming [5] | 하얀콩 | 2007.03.20 | 4598 |
131 | [PDF]BC ABAP Workbench Tutorial~ [4] | 하얀콩 | 2007.03.20 | 4417 |
130 | 스마트 폼 [3] | 댕댕 | 2007.03.20 | 4124 |
129 | 자주 쓰는 펑션 모음 [27] | 댕댕 | 2007.03.20 | 10395 |
128 | SAP Interface overview [5] | 댕댕 | 2007.03.20 | 3356 |
127 | CATT 자료 [3] | 댕댕 | 2007.03.20 | 3679 |
126 | IDOC_OUTBOUND [10] | 댕댕 | 2007.03.20 | 3945 |
125 | IDOC_INBOUND [10] | 댕댕 | 2007.03.20 | 4051 |