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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
704 | 개발관련 주요 T-CODE [8] | 설탕수박 | 2007.11.23 | 3903 |
703 | sap tuning [16] | 김국진 | 2008.11.19 | 3903 |
702 | PI/XI 7.0 Alert Config 영문 | cry6 | 2016.09.01 | 3903 |
701 | BDC 설명 파일입니다. [17] | 장형규 | 2007.04.19 | 3908 |
700 | ABAP으로 그래프 그리는 예제.. [1] | 조바울 | 2007.05.10 | 3913 |
699 | e-book SAP Query에 관련된 Sams책입니다. [7] | 혀나미 | 2007.12.31 | 3916 |
698 | 3-2-4 핵심모듈기능_SD.ppt [26] | 사람사랑 | 2008.03.20 | 3919 |
697 | 드릴다운리포트교육자료 참고 자료 추가자료 [8] | SSong | 2007.08.24 | 3920 |
696 | An Easy Reference for ALV Grid Control [14] | 김현 | 2007.03.03 | 3921 |
695 | bapis_for_DMS [8] | sapjoy | 2007.03.11 | 3922 |
694 | alv help [4] | 김대영 | 2007.05.07 | 3925 |
693 | LSMW 사용방법 입니다 [6] | Beginer | 2007.04.24 | 3928 |
692 | ABAP Eclipse Editor White Paper | 불근모자 | 2009.01.19 | 3928 |
691 | BCCITREE 내용입니다. [1] | 하얀천군 | 2007.11.06 | 3934 |
690 | abap 교육자료입니다.(2) [8] | graceKim | 2009.04.29 | 3938 |
689 | IDOC_OUTBOUND [10] | 댕댕 | 2007.03.20 | 3945 |
688 | DB Link 만들기 [6] | dragon | 2007.05.02 | 3946 |
687 | 아밥 튜닝가이드입니다. [4] | 노력&성장 | 2007.07.05 | 3949 |
686 | ABAP Dictionary_4.6C [1] | 꽁꽁 | 2007.10.25 | 3950 |
685 | 탐색도움말 만들기&사용하기 [5] | SNIFF | 2009.01.10 | 3950 |