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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
164 | FAQ ABOUT SQL [1] | sapjoy | 2007.03.30 | 3233 |
163 | ABAP TIP 모음 [4] | sapjoy | 2007.03.30 | 4673 |
162 | 함수를 이용한 ALV 따라하기 [11] | sapjoy | 2007.03.30 | 3304 |
161 | ABAP data type에 관한 자료입니다. [10] | SARA | 2007.03.29 | 7349 |
160 | 코딩 스탠다드-변수 네이밍 룰등.. [3] | SARA | 2007.03.29 | 5223 |
159 | SAP UNICODE란? [7] | SARA | 2007.03.29 | 6169 |
158 | Report Painter 설명 [10] | 나침반친구 | 2007.03.29 | 7572 |
157 | CTS OVERVIEW [1] | sapjoy | 2007.03.29 | 4760 |
156 | BSP 참고 자료 [4] | 안진명 | 2007.03.28 | 3378 |
155 | BADI for CMOD [4] | 마달수 | 2007.03.28 | 5525 |
154 | sap search help [14] | 쿠도스 | 2007.03.28 | 5209 |
153 | ALV 영문 자료 입니다. 다른 것과 비슷한 내용이네요. [1] | SARA | 2007.03.28 | 3569 |
152 | ABAP 소개 [1] | SARA | 2007.03.28 | 5213 |
151 | 인터널 테이블 자료 입니다. [8] | SARA | 2007.03.28 | 5135 |
150 | 14장 Enhancement-Exits [9] | sapjoy | 2007.03.28 | 6052 |
149 | The basics for SALV [17] | 펠릭스 | 2007.03.27 | 3986 |
148 | event handling for SALV [14] | 펠릭스 | 2007.03.27 | 4436 |
147 | SAP 오라클비교_검토자료 | SARA | 2007.03.27 | 6390 |
146 | Customer Order Creation Using BAPI [1] | 펠릭스 | 2007.03.27 | 3840 |
145 | 중요한 시스템 변수 [8] | 김성수 | 2007.03.27 | 4175 |