Z 테이블 데이터 EXCEL 가져오기
*&---------------------------------------------------------------------*
*& Report ZLY_UPLOAD_TABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZUPLOAD_TABLE.
TABLES:RSRD1.
TYPE-POOLS:ABAP.
FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
<DYN_WA>,
<DYN_FIELD>.
DATA: DY_TABLE TYPE REF TO DATA,
DY_LINE TYPE REF TO DATA,
XFC TYPE LVC_S_FCAT,
IFC TYPE LVC_T_FCAT.
DATA : GT_EXCEL_T TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
GS_EXCEL_T LIKE LINE OF GT_EXCEL_T.
DATA: GC_FIELDVALUE TYPE FIELDVALUE, "
GC_FLDNAME TYPE FIELDNAME. "
SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_TBMA TYPE RSRD1-TBMA_VAL,
P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK01.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FRM_GET_FILEPATH.
START-OF-SELECTION.
CHECK P_TBMA IS NOT INITIAL.
CHECK P_FILE IS NOT INITIAL.
PERFORM PRM_GET_TAB_STRC.
PERFORM PRM_GET_EXCEL.
PERFORM PRM_UPDATA_TAB.
*&---------------------------------------------------------------------*
*& Form FRM_GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_FILEPATH .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',Excel(*.xls),*.XLS,*.XLSX,'
TITLE = ' '(100)
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
" MESSAGE e100(zdev) WITH ' !'(007).
ENDIF.
ENDFORM. " FRM_GET_FILEPATH
*&---------------------------------------------------------------------*
*& Form PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_TAB_STRC .
DATA:GT_TABLE TYPE DDFIELDS,
GS_TABLE TYPE DFIES.
CALL FUNCTION 'CATSXT_GET_DDIC_FIELDINFO'
EXPORTING
IM_STRUCTURE_NAME = P_TBMA
IMPORTING
EX_DDIC_INFO = GT_TABLE
EXCEPTIONS
FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT GT_TABLE INTO GS_TABLE.
CLEAR XFC.
XFC-FIELDNAME = GS_TABLE-FIELDNAME .
XFC-INTTYPE = GS_TABLE-INTTYPE.
XFC-INTLEN = GS_TABLE-LENG.
XFC-DECIMALS = GS_TABLE-DECIMALS.
APPEND XFC TO IFC.
ENDLOOP.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = IFC
IMPORTING
EP_TABLE = DY_TABLE.
ASSIGN DY_TABLE->* TO <DYN_TABLE>.
CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
ASSIGN DY_LINE->* TO <DYN_WA>.
ENDFORM. " PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
*& Form PRM_GET_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_EXCEL .
IF P_FILE IS NOT INITIAL.
* excel
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = '1'
I_BEGIN_ROW = '2'
I_END_COL = '300'
I_END_ROW = '50000'
TABLES
INTERN = GT_EXCEL_T.
ENDIF.
IF GT_EXCEL_T[] IS NOT INITIAL.
LOOP AT GT_EXCEL_T INTO GS_EXCEL_T.
AT NEW ROW.
CLEAR <DYN_WA>.
ENDAT.
IF <DYN_WA> IS INITIAL.
ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
IF SY-SUBRC = 0.
<DYN_FIELD> = SY-MANDT.
ENDIF.
ENDIF.
GS_EXCEL_T-COL = GS_EXCEL_T-COL + 1.
GC_FIELDVALUE = GS_EXCEL_T-VALUE.
CONDENSE GC_FIELDVALUE.
ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
IF SY-SUBRC = 0.
<DYN_FIELD> = GC_FIELDVALUE.
ENDIF.
AT END OF ROW.
APPEND <DYN_WA> TO <DYN_TABLE>.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " PRM_GET_EXCEL
*&---------------------------------------------------------------------*
*& Form PRM_UPDATA_TAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_UPDATA_TAB .
MODIFY (P_TBMA) FROM TABLE <DYN_TABLE>.
IF SY-SUBRC = 0.
MESSAGE ' ' TYPE 'S'.
ELSE.
MESSAGE ' ' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDFORM. " PRM_UPDATA_TAB
가장 간단한 방법은 매개 변수를 입력하는 것이다. 테이블 이름, EXXCEL(EXCEL에서 데이터는 테이블의 데이터 요소 순서에 따라 클라이언트를 추가하지 않아도 된다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.