*&---------------------------------------------------------------------*
*& PROGRAM : ZMMR0820
*& CONTENTS : [VN] GR document-printing
*& T-CODE : ZMM820
*&---------------------------------------------------------------------*
*& Date Rev # Programer Description
*&----------- -------- ------------- -------------------------------
*& 2016.06.23 NEW JH.KIM
*&---------------------------------------------------------------------*
REPORT ZMMR0820 NO STANDARD PAGE HEADING MESSAGE-ID ZMM .
TYPE-POOLS: SLIS.
***********************************************************************
*INCLUDE.
***********************************************************************
* Authority Check
INCLUDE ZSD_AUTHORITY_CHECK.
INCLUDE ZMMR0820_CLS. " CLASS
INCLUDE ZMMR0820_TOP. " GLOBAL Data
INCLUDE ZMMR0820_O01. " PBO-Modules
INCLUDE ZMMR0820_I01. " PAI-Modules
INCLUDE ZMMR0820_F01. " FORM-Routines
***********************************************************************
* INITIALIZATION
***********************************************************************
INITIALIZATION.
PERFORM INIT_DATE.
PERFORM INITIAL_SET.
***********************************************************************
* AT SELECTION-SCREEN
***********************************************************************
AT SELECTION-SCREEN.
***********************************************************************
*START-OF-SELECTION.
***********************************************************************
START-OF-SELECTION.
* Authority Check
PERFORM AUTHORITY_WERKS_S TABLES S_WERKS.
PERFORM SELECT_DATA.
PERFORM MAKE_LIST.
IF NOT GT_LIST[] IS INITIAL.
DESCRIBE TABLE GT_LIST LINES G_LINES.
MESSAGE S000 WITH G_LINES 'Data Found'.
CALL SCREEN 100.
ELSE.
MESSAGE S000 WITH 'No data Found!!'.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZSD_AUTHORITY_CHECK
*&---------------------------------------------------------------------*
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD BEGIN.
DATA : BEGIN OF gt_group OCCURS 0,
usergroup LIKE usgrp_user-usergroup,
END OF gt_group.
DATA gt_class LIKE zsdt0057 OCCURS 0 WITH HEADER LINE.
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD END.
*&---------------------------------------------------------------------*
*& Form AUTHORITY_VKORG_S
*&---------------------------------------------------------------------*
FORM authority_vkorg_s TABLES p_vkorg.
* TABLES: tvko.
DATA : BEGIN OF t_tvko OCCURS 0,
vkorg LIKE vbak-vkorg,
END OF t_tvko.
SELECT vkorg FROM tvko INTO TABLE t_tvko
WHERE vkorg IN p_vkorg.
LOOP AT t_tvko.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD t_tvko-vkorg.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH t_tvko-vkorg.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_VKORG_S
*&---------------------------------------------------------------------*
*& Form AUTHORITY_VKORG_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_vkorg_p USING p_vkorg.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD p_vkorg.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH p_vkorg.
ENDIF.
ENDFORM. " AUTHORITY_VKORG_P
*&---------------------------------------------------------------------*
*& Form AUTHORITY_BUKRS_S
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_S_BUKRS text
*----------------------------------------------------------------------*
FORM authority_bukrs_s TABLES p_bukrs.
* TABLES: t001.
DATA : BEGIN OF t_t001 OCCURS 0,
bukrs LIKE t001-bukrs,
END OF t_t001.
SELECT bukrs FROM t001 INTO TABLE t_t001
WHERE bukrs IN p_bukrs.
LOOP AT t_t001.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD t_t001-bukrs.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH t_t001-bukrs.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_BUKRS_S
*&---------------------------------------------------------------------*
*& Form AUTHORITY_BUKRS_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_bukrs_p USING p_bukrs.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH p_bukrs.
ENDIF.
ENDFORM. " AUTHORITY_BUKRS_P
*&---------------------------------------------------------------------*
*& Form AUTHORITY_WERKS_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_werks_p USING p_werks.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'WERKS' FIELD p_werks.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH p_werks.
ENDIF.
ENDFORM. " AUTHORITY_WERKS_P
*&---------------------------------------------------------------------*
*& Form AUTHORITY_WERKS_S
*&---------------------------------------------------------------------*
FORM authority_werks_s TABLES p_werks.
DATA : BEGIN OF t_t001w OCCURS 0,
werks LIKE t001w-werks,
END OF t_t001w.
SELECT werks FROM t001w INTO TABLE t_t001w
WHERE werks IN p_werks.
LOOP AT t_t001w.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'WERKS' FIELD t_t001w-werks.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH t_t001w-werks.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_WERKS_S
*&---------------------------------------------------------------------*
*& Form AUTHORITY_TPLST_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_tplst_p USING p_tplst.
AUTHORITY-CHECK OBJECT 'V_VTTK_TDS'
ID 'TPLST' FIELD p_tplst.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH p_tplst.
ENDIF.
ENDFORM. " AUTHORITY_TPLST_P
*&---------------------------------------------------------------------*
*& Form AUTHORITY_VSTEL_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_vstel_p USING p_vstel.
AUTHORITY-CHECK OBJECT 'V_LIKP_VST'
ID 'VSTEL' FIELD p_vstel.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH p_vstel.
ENDIF.
ENDFORM. " AUTHORITY_VSTEL_P
*&---------------------------------------------------------------------*
*& Form AUTHORITY_KOKRS_P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_kokrs_p USING p_kokrs.
AUTHORITY-CHECK OBJECT 'K_REPO_CCA'
ID 'KOKRS' FIELD p_kokrs.
IF sy-subrc <> 0.
MESSAGE e010(zco) WITH p_kokrs.
ENDIF.
ENDFORM. " AUTHORITY_KOKRS_P
*&---------------------------------------------------------------------*
*& Form GET_AUTHORITY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD BEGIN.
FORM get_authority .
CLEAR: gt_group, gt_group[],
gt_class, gt_class[].
SELECT usergroup INTO TABLE gt_group
FROM usgrp_user WHERE bname EQ sy-uname.
IF NOT gt_group[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_class
FROM zsdt0057 FOR ALL ENTRIES IN gt_group
WHERE class EQ gt_group-usergroup.
ENDIF.
ENDFORM. " GET_AUTHORITY
*&---------------------------------------------------------------------*
*& Form AUTHORITY_VKORG_Exception
*&---------------------------------------------------------------------*
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD BEGIN.
FORM authority_vkorg_exception TABLES p_vkorg.
* TABLES: tvko.
DATA : BEGIN OF t_tvko OCCURS 0,
vkorg LIKE vbak-vkorg,
END OF t_tvko.
SELECT vkorg FROM tvko INTO TABLE t_tvko
WHERE vkorg IN p_vkorg.
LOOP AT t_tvko.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD t_tvko-vkorg.
IF sy-subrc NE 0.
READ TABLE gt_class WITH KEY vkorg = t_tvko-vkorg.
IF sy-subrc NE 0.
MESSAGE e023(sd) WITH t_tvko-vkorg.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_VKORG_Exception
*&---------------------------------------------------------------------*
*& Form AUTHORITY_WERKS_exception
*&---------------------------------------------------------------------*
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD BEGIN.
FORM authority_werks_exception TABLES p_werks.
DATA : BEGIN OF t_t001w OCCURS 0,
werks LIKE t001w-werks,
END OF t_t001w.
SELECT werks FROM t001w INTO TABLE t_t001w
WHERE werks IN p_werks.
LOOP AT t_t001w.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'WERKS' FIELD t_t001w-werks.
IF sy-subrc <> 0.
READ TABLE gt_class WITH KEY werks = t_t001w-werks.
IF sy-subrc NE 0.
MESSAGE e023(sd) WITH t_t001w-werks.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_WERKS_exception
*&---------------------------------------------------------------------*
*& Form AUTHORITY_WERKS_exception_p
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*[SD-1060] 거래처 예외권한체크 2012.12.03 DAL2100 ADD BEGIN.
FORM authority_werks_exception_p USING p_werks.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'WERKS' FIELD p_werks.
* IF sy-subrc EQ 0.
IF sy-subrc NE 0.
READ TABLE gt_class WITH KEY werks = p_werks.
IF sy-subrc NE 0.
MESSAGE e023(sd) WITH p_werks.
ENDIF.
ENDIF.
ENDFORM. " AUTHORITY_WERKS_exception_p
*&---------------------------------------------------------------------*
*& Form AUTHORITY_VKBUR_S
*&---------------------------------------------------------------------*
FORM authority_vkbur_s TABLES p_vkbur.
DATA : BEGIN OF t_tvbur OCCURS 0,
vkbur LIKE vbak-vkbur,
END OF t_tvbur.
DATA t_index type sy-tabix.
CLEAR t_index.
DESCRIBE TABLE p_vkbur LINES t_index.
CHECK t_index <> 0.
SELECT vkbur FROM tvbur INTO TABLE t_tvbur
WHERE vkbur IN p_vkbur.
LOOP AT t_tvbur.
AUTHORITY-CHECK OBJECT 'V_VBKA_VKO'
ID 'VKBUR' FIELD t_tvbur-vkbur.
IF sy-subrc <> 0.
MESSAGE e023(sd) WITH t_tvbur-vkbur.
ENDIF.
ENDLOOP.
ENDFORM. " AUTHORITY_VKORG_S
*&---------------------------------------------------------------------*
*& Include ZMMR0820_CLS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& CLASS DEFINITIAL
*&---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DATA_CHANGED
FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED,
HANDLE_HOTSPOT_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID,
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DATA_CHANGED.
ENDMETHOD. "HANDLE_DATA_CHANGED
METHOD HANDLE_HOTSPOT_CLICK.
PERFORM METHOD_HOTSPOT_CLICK USING E_ROW_ID E_COLUMN_ID.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
METHOD HANDLE_DOUBLE_CLICK.
* PERFORM METHOD_DOUBLE_CLICK USING E_ROW-INDEX
* E_COLUMN-FIELDNAME.
ENDMETHOD. "HANDLE_DOUBLE_CLICK
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
* LOCAL CLASSES: Definition
*---------------------------------------------------------------------*
CLASS LCL_ALV_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID.
PUBLIC SECTION.
METHODS: SET_OPTIMIZE_ALL_COLS.
ENDCLASS. "LCL_AlV_GRID DEFINITION
*---------------------------------------------------------------------*
* CLASS LCL_AlV_GRID IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS LCL_ALV_GRID IMPLEMENTATION.
METHOD SET_OPTIMIZE_ALL_COLS.
CALL METHOD ME->OPTIMIZE_ALL_COLS
EXPORTING
INCLUDE_HEADER = 1.
ENDMETHOD. "SET_OPTIMIZE_ALL_COLS
ENDCLASS. "LCL_ALV_GRID IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Include ZMMR0820_TOP
*&---------------------------------------------------------------------*
TYPE-POOLS: ICON,SLIS.
* Tables
TABLES: MSEG, MKPF, EKKO, EKPO, EKET, T024, LFA1,
LFB1, LFM1, LFBK, BNKA, ADRC,
ADR6.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MATNR,
GROES TYPE GROES,
MAKTX TYPE MAKTX,
END OF TY_MARA.
TYPES: BEGIN OF TY_LFA1,
LIFNR TYPE LIFNR,
DATE_FROM TYPE AD_DATE_FR,
NATION TYPE AD_NATION,
DATE_TO TYPE AD_DATE_TO,
NAME1 TYPE AD_NAME1,
NAME2 TYPE AD_NAME2,
NAME3 TYPE AD_NAME3,
NAME4 TYPE AD_NAME4,
END OF TY_LFA1.
TYPES: BEGIN OF TY_EKPO,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
END OF TY_EKPO.
DATA: BEGIN OF GT_ITAB OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
BLDAT LIKE MKPF-BLDAT,
LIFNR LIKE EKKO-LIFNR,
EBELN LIKE MSEG-EBELN,
BEDAT LIKE EKKO-BEDAT,
EBELP LIKE EKPO-EBELP,
TXZ01 LIKE EKPO-TXZ01,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS, " unit
ERFMG LIKE MSEG-ERFMG,
ERFME LIKE MSEG-ERFME, " unit
END OF GT_ITAB.
DATA: BEGIN OF GT_LIST OCCURS 0,
COUNT(5) TYPE C,
MBLNR LIKE MKPF-MBLNR,
BLDAT LIKE MKPF-BLDAT,
LIFNR LIKE EKKO-LIFNR,
NAME1 LIKE ADRC-NAME1,
NAME2 LIKE ADRC-NAME2,
NAME3 LIKE ADRC-NAME3,
NAME4 LIKE ADRC-NAME4,
EBELN LIKE MSEG-EBELN,
EBELP LIKE EKPO-EBELP,
BEDAT LIKE EKKO-BEDAT,
MATNR LIKE EKPO-MATNR,
MAKTX LIKE MAKT-MAKTX,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS, " unit
ERFMG LIKE MSEG-ERFMG,
ERFME LIKE MSEG-ERFME, " unit
END OF GT_LIST.
DATA: BEGIN OF ITAB OCCURS 0,
COUNT(5) TYPE C,
MBLNR LIKE MKPF-MBLNR,
BLDAT LIKE MKPF-BLDAT,
LIFNR LIKE EKKO-LIFNR,
NAME1 LIKE ADRC-NAME1,
* NAME2 LIKE ADRC-NAME2,
* NAME3 LIKE ADRC-NAME3,
* NAME4 LIKE ADRC-NAME4,
EBELN LIKE MSEG-EBELN,
EBELP LIKE EKPO-EBELP,
BEDAT LIKE EKKO-BEDAT,
MATNR LIKE EKPO-MATNR,
MAKTX LIKE MAKT-MAKTX,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS, " unit
ERFMG LIKE MSEG-ERFMG,
ERFME LIKE MSEG-ERFME, " unit
END OF ITAB.
DATA: G_EBELN TYPE EBELN,
G_MBLNR TYPE MBLNR.
DATA: GS_EKKO TYPE EKKO,
GS_T024 TYPE T024,
GS_LFA TYPE LFA1,
GS_LFB TYPE LFB1,
GS_LFM TYPE LFM1,
GS_T052U TYPE T052U,
GS_LFBK TYPE LFBK,
GS_BNKA TYPE BNKA,
GS_ADRC TYPE ADRC,
GS_ADRT TYPE ADRT,
GS_ADR6 TYPE ADR6,
GT_MARA TYPE TABLE OF TY_MARA,
GS_MARA TYPE TY_MARA,
GT_LFA1 TYPE TABLE OF TY_LFA1,
GS_LFA1 TYPE TY_LFA1,
GT_EKPO TYPE TABLE OF TY_EKPO,
GS_EKPO TYPE TY_EKPO.
DATA: L_FORM(30) TYPE C VALUE 'TABLE_CREATE'.
DATA: L_LENGTH TYPE LVC_OUTLEN.
* 기본 SET
DATA : GV_SEL_FIELD LIKE HELP_INFO-FIELDNAME,
GT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE,
GV_SEL_VALUE LIKE HELP_INFO-FLDVALUE,
GV_TABIX LIKE SY-TABIX.
DATA : G_LNO TYPE I.
* 화면 필드 선언. -> 선택된 값을 화면 필드에 뿌려줄 때 사용.
* 화면 필드 선언. -> 선택된 값을 화면 필드에 뿌려줄 때 사용.
DATA : GT_DYNP LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
"NO ENTER ENTRY
DATA : BEGIN OF FIELDS OCCURS 0.
INCLUDE STRUCTURE HELP_VALUE.
DATA : END OF FIELDS.
DATA : BEGIN OF DYNPFIELDS OCCURS 0.
INCLUDE STRUCTURE DYNPREAD.
DATA : END OF DYNPFIELDS.
DATA : BEGIN OF VALUETAB OCCURS 0,
VALUE(80).
DATA : END OF VALUETAB.
DATA : BEGIN OF SELECT_VALUES OCCURS 0.
INCLUDE STRUCTURE HELP_VTAB.
DATA : END OF SELECT_VALUES.
DATA: RAD_CP,
RAD_PP.
DATA: I TYPE I.
***************** 광역 변수 선언
DATA : OK_CODE LIKE SY-UCOMM,
OK_CODE_200 LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM,
G_RFCDEST LIKE RFCDES-RFCDEST,
G_RTUN_C(2), "RFC Return code
G_RTUN_T(100). "RFD Return Text
***************** ALV
TYPE-POOLS : VRM, " for Dropdown Listbox
SLIS.
*----------------------------------------------------------------------*
* TYPE
*----------------------------------------------------------------------*
DATA : GS_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GS_CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GS_ALV_GRID TYPE REF TO LCL_ALV_GRID, " Local alv grid
GS_ALV_GRID2 TYPE REF TO LCL_ALV_GRID, " Local alv grid
GS_VARIANT TYPE DISVARIANT, " Layout (External Use)
GS_LAYOUT TYPE LVC_S_LAYO, " ALV control: Layout
GT_FIELDCAT TYPE LVC_T_FCAT, " Field Catalog for List
GT_FIELDCAT2 TYPE LVC_T_FCAT, " Field Catalog for List
GT_SLIS TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GT_SLIS2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GS_FIELDCATALOG TYPE LVC_T_FCAT WITH HEADER LINE,
GS_FIELDCAT TYPE LVC_S_FCAT,
G2_FIELDCAT2 TYPE LVC_S_FCAT,
GS_SORT TYPE TABLE OF LVC_S_SORT, "Field sort
GS_EXCLUDE TYPE UI_FUNCTIONS, "ALV Toolbar dim
GS_COLOR TYPE LVC_T_SCOL WITH HEADER LINE, "ALV color
GS_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER, "ALV Event
GS_SELFIELD TYPE SLIS_SELFIELD, "ALV Selected
GS_DROPDOWN TYPE LVC_T_DROP, "ALV List box
GS_CELLTAB TYPE LVC_T_STYL WITH HEADER LINE,"ALVControl
GS_ROWS TYPE LVC_T_ROW, "ALV 제어: 테이블행
GS_ROW TYPE LVC_S_ROW, "ALV 제어: 라인내역
GS_ROID TYPE LVC_T_ROID, "라인 ID에 라인번호 지정
GS_STBL TYPE LVC_S_STBL. "최신표시 안정성
*&---------------------------------------------------------------------*
*> OFFICE FILE I/F .
*&---------------------------------------------------------------------*
* EXCEL로 PRINT하기 위한 VARIABLES
INCLUDE <CTLDEF>.
INCLUDE OLE2INCL.
TYPES : BEGIN OF TY_EXDAT,
ROW TYPE I,
COL TYPE I,
VALUE(256),
END OF TY_EXDAT.
DATA : GS_EXDAT TYPE TY_EXDAT,
GT_EXDAT TYPE TY_EXDAT OCCURS 20.
DATA : GC_CONTROL TYPE REF TO I_OI_CONTAINER_CONTROL,
GC_SHEET TYPE REF TO I_OI_SPREADSHEET,
GC_DOCPROXY TYPE REF TO I_OI_DOCUMENT_PROXY,
GC_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : G_TEMPLATE(20) TYPE C,
G_LOTNAME(10) TYPE C,
G_SPRAS LIKE QPMT-SPRACHE.
CLASS C_OI_ERRORS DEFINITION LOAD.
DATA: EXCEL TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
BOOKS TYPE OLE2_OBJECT,
BOOK TYPE OLE2_OBJECT,
SHEETS TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT,
ACTIVESHEET TYPE OLE2_OBJECT,
CELLS TYPE OLE2_OBJECT,
CELL TYPE OLE2_OBJECT,
ROW TYPE OLE2_OBJECT,
TEXTBOX TYPE OLE2_OBJECT,
BUFFER TYPE OLE2_OBJECT,
G_OBJID LIKE WWWDATA-OBJID ,
G_FILE LIKE RLGRAP-FILENAME.
*----------------------------------------------------------------------*
* VARIABLE
*----------------------------------------------------------------------*
DATA : G_POS TYPE I, "ALV Display position
G_IND LIKE SY-TABIX. "Possible entry index
DATA : G_TEXT(50) TYPE C, "Process percentage info
G_LINES TYPE I VALUE 1, "Indicator line
G_PERCENTAGE TYPE P, "Indicator percentage
G_GREEN LIKE ICONS-L4 VALUE '@08@',"녹색
G_YELLOW LIKE ICONS-L4 VALUE '@09@',"노란색
G_RED LIKE ICONS-L4 VALUE '@0A@',"붉은색
G_MOD TYPE I, "Line 홀수/짝수
G_CHAR TYPE C, "색깔 정보
G_CONSTANT(1) TYPE C VALUE 'C', "Color constants
G_ON(1) TYPE C VALUE 1, "Intensified on
G_OFF(1) TYPE C VALUE 0. "Intensified off
*----------------------------------------------------------------------*
* CONSTANT
*----------------------------------------------------------------------*
CONSTANTS : C_CONTAINER TYPE SCRFNAME VALUE 'G_ALV_GRID', "ALV
C_CONTAINER2 TYPE SCRFNAME VALUE 'G_ALV_GRID2', "ALV
* C_GT_ITAB TYPE SLIS_TABNAME VALUE '<GT_TABLE>',
C_GT_TEMP TYPE SLIS_TABNAME VALUE 'ITAB',
C_GT_LIST(7) TYPE C VALUE 'GT_LIST',
C_(1) TYPE C VALUE ' ', "Empty flag
C_INFO(4) TYPE C VALUE 'INFO', "INFO
C_COLINFO(7) TYPE C VALUE 'COLINFO', "COLINFO
C_STYLE(5) TYPE C VALUE 'STYLE', "STYLE
* ALV FIELD NAME
C_EBELN(5) TYPE C VALUE 'EBELN',
C_MATNR(5) TYPE C VALUE 'MATNR',
C_MBLNR(5) TYPE C VALUE 'MBLNR',
C_AUFNR(5) TYPE C VALUE 'AUFNR',
C_GLSNO(5) TYPE C VALUE 'GLSNO',
* ALV DATA LENGTH
C_18(2) TYPE C VALUE '18',
* DATA TYPE
C_CHAR(4) TYPE C VALUE 'CHAR',
C_QUAN(4) TYPE C VALUE 'QUAN',
C_DEC(3) TYPE C VALUE 'DEC',
C_CURR(6) TYPE C VALUE 'C_CURR',
* STATUS TYPE
C_BACK(4) TYPE C VALUE 'BACK',
C_EXIT(4) TYPE C VALUE 'EXIT',
C_CANC(4) TYPE C VALUE 'CANC',
* 알파벳
C_A(1) TYPE C VALUE 'A',
C_B(1) TYPE C VALUE 'B',
C_C(1) TYPE C VALUE 'C',
C_D(1) TYPE C VALUE 'D',
C_E(1) TYPE C VALUE 'E',
C_F(1) TYPE C VALUE 'F',
C_G(1) TYPE C VALUE 'G',
C_H(1) TYPE C VALUE 'H',
C_I(1) TYPE C VALUE 'I',
C_J(1) TYPE C VALUE 'J',
C_K(1) TYPE C VALUE 'K',
C_L(1) TYPE C VALUE 'L',
C_M(1) TYPE C VALUE 'M',
C_N(1) TYPE C VALUE 'N',
C_O(1) TYPE C VALUE 'O',
C_P(1) TYPE C VALUE 'P',
C_Q(1) TYPE C VALUE 'Q',
C_R(1) TYPE C VALUE 'R',
C_S(1) TYPE C VALUE 'S',
C_T(1) TYPE C VALUE 'T',
C_U(1) TYPE C VALUE 'U',
C_V(1) TYPE C VALUE 'V',
C_W(1) TYPE C VALUE 'W',
C_X(1) TYPE C VALUE 'X',
C_Y(1) TYPE C VALUE 'Y',
C_Z(1) TYPE C VALUE 'Z',
* 숫자
C_1(1) TYPE C VALUE '1',
C_2(1) TYPE C VALUE '2',
C_3(1) TYPE C VALUE '3',
C_4(1) TYPE C VALUE '4',
C_5(1) TYPE C VALUE '5',
C_6(1) TYPE C VALUE '6',
C_7(1) TYPE C VALUE '7',
C_8(1) TYPE C VALUE '8',
C_9(1) TYPE C VALUE '9',
C_0(1) TYPE C VALUE '0',
C_0000000000(10) VALUE '0000000000'.
***************** 광역 변수 선언
DATA : G_OK_CODE LIKE SY-UCOMM.
*해더 관련
DATA : G_DD_DOC TYPE REF TO CL_DD_DOCUMENT,
G_DD_IMAGE TYPE REF TO CL_DD_IMAGE_NAME_CACHE.
***************** ALV
DATA: FILENAME(80) TYPE C,
FILENAME1 LIKE RLGRAP-FILENAME,
FILENAME2 LIKE RLGRAP-FILENAME,
FILE_LENGTH TYPE I.
***********************************************************************
*조회조건 입력화면
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_WERKS FOR MSEG-WERKS OBLIGATORY
MEMORY ID WRK
NO-EXTENSION.
SELECT-OPTIONS : S_MBLNR FOR MKPF-MBLNR NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLOCK1.
SELECTION-SCREEN BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS : S_EBELN FOR MSEG-EBELN,
S_LIFNR FOR MSEG-LIFNR,
S_MATNR FOR MSEG-MATNR,
S_BLDAT FOR MKPF-BLDAT,
S_USNAM FOR MKPF-USNAM DEFAULT SY-UNAME
MATCHCODE OBJECT USER_COMP.
SELECTION-SCREEN END OF BLOCK BLOCK2.
*&---------------------------------------------------------------------*
*& Include ZMMR0820_O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module ALV_DISPLAY OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE ALV_DISPLAY OUTPUT.
IF GS_CUSTOM_CONTAINER IS INITIAL.
IF NOT GS_CUSTOM_CONTAINER IS INITIAL.
CALL METHOD GS_CUSTOM_CONTAINER->FREE.
ENDIF.
CREATE OBJECT GS_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = C_CONTAINER.
CREATE OBJECT GS_ALV_GRID
EXPORTING
I_PARENT = GS_CUSTOM_CONTAINER.
PERFORM ALV_VARIANT. "<-- ALV Variant
PERFORM ALV_SORT. "<-- SORT
PERFORM ALV_LAYOUT. "<-- General Layout
PERFORM ALV_FIELDCATALOG. "<-- Field Attribute
PERFORM ALV_TOOLBAR_EXCLUDE. "CHANGING G_EXCLUDE. "<-- Toolbar Dim
CALL METHOD GS_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_DEFAULT = C_X
IS_LAYOUT = GS_LAYOUT
IS_VARIANT = GS_VARIANT
IT_TOOLBAR_EXCLUDING = GS_EXCLUDE
I_SAVE = C_A
CHANGING
IT_OUTTAB = GT_LIST[]
IT_FIELDCATALOG = GT_FIELDCAT[]
IT_SORT = GS_SORT.
CREATE OBJECT GS_EVENT_RECEIVER.
*--// ALV 변경사항 관리
SET HANDLER
GS_EVENT_RECEIVER->HANDLE_DATA_CHANGED FOR GS_ALV_GRID.
*--// HOTSPOT click event
SET HANDLER
GS_EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GS_ALV_GRID.
*--// DOUBLE click event
SET HANDLER
GS_EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GS_ALV_GRID.
ELSE.
GS_STBL-ROW = C_X. "행기준 안정적 최신표시
GS_STBL-COL = C_X. "열기준 정적 최신표시
CALL METHOD GS_ALV_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = GS_STBL.
ENDIF.
***//EDIT (0: EIDT 불가, 1: EDIT 가능)
CALL METHOD GS_ALV_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 0.
* 변경시점에 이벤트발생...........................
* ENTER시점은 CL_GUI_ALV_GRID=>MC_EVT_ENTER로.....
CALL METHOD GS_ALV_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = GS_ALV_GRID.
CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE. " ALV_DISPLAY OUTPUT
*&---------------------------------------------------------------------*
*& Module PBO_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PBO_0200 OUTPUT.
SET PF-STATUS '0200'.
PERFORM BUILD_EXCEL_CONTAINER.
PERFORM BUILD_EXCEL_DATA_0200.
PERFORM SET_EXCEL_DATA.
ENDMODULE. " PBO_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Include ZMMR0820_I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
CASE OK_CODE.
WHEN 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA: L_ANSWER.
* 여기에 따로 명령 때리고 싶은거 넣으면됨..
CASE OK_CODE.
WHEN 'DOWN'.
PERFORM CHECK_ITAB_FOR_MARK.
PERFORM PRINT_GR_DOCUMENT.
ENDCASE.
CLEAR OK_CODE.
*-----> ALV Refresh - Column & line fix
GS_STBL-ROW = C_X. "행기준 안정적 최신표시
GS_STBL-COL = C_X. "열기준 정적 최신표시
CALL METHOD GS_ALV_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = GS_STBL.
*-----> COLUMN SIZE REOPTIMIZ
CALL METHOD GS_ALV_GRID->SET_OPTIMIZE_ALL_COLS.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module PAI_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PAI_0200 INPUT.
CHECK OK_CODE_200 = 'BACK' OR
OK_CODE_200 = 'EXIT' OR
OK_CODE_200 = 'CANC'.
IF NOT GC_DOCPROXY IS INITIAL.
CALL METHOD GC_DOCPROXY->CLOSE_DOCUMENT.
FREE GC_DOCPROXY.
ENDIF.
IF NOT GC_CONTROL IS INITIAL.
CALL METHOD GC_CONTROL->DESTROY_CONTROL.
FREE GC_CONTROL.
ENDIF.
IF NOT GC_CONTAINER IS INITIAL.
CALL METHOD GC_CONTAINER->FREE.
FREE GC_CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
ENDMODULE. " PAI_0200 INPUT
*&---------------------------------------------------------------------*
*& Include ZMMR0820_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INITIAL_SET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INITIAL_SET .
SELECT SINGLE PARVA INTO S_WERKS-LOW
FROM USR05
WHERE BNAME EQ SY-UNAME
AND PARID EQ 'WRK'.
ENDFORM. " INITIAL_SET
*&---------------------------------------------------------------------*
*& Form SELECT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT_DATA .
DATA: LT_ITAB LIKE TABLE OF GT_ITAB.
SELECT A~ERFMG A~ERFME
B~MBLNR B~BLDAT
C~LIFNR C~BEDAT
D~EBELN D~EBELP D~MATNR D~MENGE D~MEINS D~TXZ01
INTO CORRESPONDING FIELDS OF TABLE GT_ITAB
FROM MSEG AS A
INNER JOIN MKPF AS B
ON B~MBLNR EQ A~MBLNR
INNER JOIN EKKO AS C
ON C~EBELN EQ A~EBELN
INNER JOIN EKPO AS D
ON D~EBELN EQ A~EBELN
AND D~EBELP EQ A~EBELP
WHERE A~BWART EQ '101'
AND A~WERKS IN S_WERKS
AND B~MBLNR IN S_MBLNR
AND A~EBELN IN S_EBELN
AND A~LIFNR IN S_LIFNR
AND A~MATNR IN S_MATNR
AND B~BLDAT IN S_BLDAT
AND B~USNAM IN S_USNAM.
LT_ITAB[] = GT_ITAB[].
IF LT_ITAB[] IS NOT INITIAL.
SORT LT_ITAB BY MATNR.
SELECT A~MATNR B~MAKTX A~GROES
INTO CORRESPONDING FIELDS OF TABLE GT_MARA
FROM MARA AS A JOIN MAKT AS B
ON A~MATNR = B~MATNR
FOR ALL ENTRIES IN LT_ITAB
WHERE A~MATNR = LT_ITAB-MATNR
AND B~SPRAS = SY-LANGU.
SORT GT_MARA BY MATNR.
SORT LT_ITAB BY LIFNR.
SELECT A~LIFNR
B~DATE_FROM B~NATION B~DATE_TO
B~NAME1 B~NAME2 B~NAME3 B~NAME4
INTO CORRESPONDING FIELDS OF TABLE GT_LFA1
FROM LFA1 AS A JOIN ADRC AS B
ON A~ADRNR = B~ADDRNUMBER
FOR ALL ENTRIES IN LT_ITAB
WHERE A~LIFNR = LT_ITAB-LIFNR.
SORT GT_LFA1 BY LIFNR.
ENDIF.
ENDFORM. " SELECT_DATA
*&---------------------------------------------------------------------*
*& Form MAKE_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAKE_LIST .
DATA: LV_CNT(5) TYPE C.
SORT GT_ITAB BY MBLNR EBELN EBELP.
LOOP AT GT_ITAB.
MOVE-CORRESPONDING GT_ITAB TO GT_LIST.
LV_CNT = LV_CNT + 1.
GT_LIST-COUNT = LV_CNT.
CLEAR GS_MARA.
READ TABLE GT_MARA INTO GS_MARA
WITH KEY MATNR = GT_ITAB-MATNR
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
MOVE: GS_MARA-MAKTX TO GT_LIST-MAKTX.
ELSE.
MOVE: GT_ITAB-TXZ01 TO GT_LIST-MAKTX.
ENDIF.
CLEAR GS_LFA1.
READ TABLE GT_LFA1 INTO GS_LFA1
WITH KEY LIFNR = GT_ITAB-LIFNR
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
MOVE: GS_LFA1-NAME1 TO GT_LIST-NAME1,
GS_LFA1-NAME2 TO GT_LIST-NAME2,
GS_LFA1-NAME3 TO GT_LIST-NAME3,
GS_LFA1-NAME4 TO GT_LIST-NAME4.
ENDIF.
APPEND GT_LIST.
CLEAR: GT_LIST, GT_ITAB.
ENDLOOP.
ENDFORM. " MAKE_LIST
*&---------------------------------------------------------------------*
*& Form INIT_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INIT_DATE .
REFRESH S_BLDAT. CLEAR S_BLDAT.
S_BLDAT-SIGN = 'I'.
S_BLDAT-OPTION = 'BT'.
S_BLDAT-HIGH = SY-DATLO.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = SY-DATLO
DAYS = '07'
MONTHS = '00'
SIGNUM = '-'
YEARS = '00'
IMPORTING
CALC_DATE = S_BLDAT-LOW.
APPEND S_BLDAT.
ENDFORM. " INIT_DATE
*&---------------------------------------------------------------------*
*& Form CHECK_ITAB_FOR_MARK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_ITAB_FOR_MARK .
DATA : LT_ROWS TYPE LVC_T_ROW, "라인열
LS_ROWS TYPE LVC_S_ROW,
TMP TYPE I,
L_CNT TYPE I.
CLEAR : LT_ROWS[], TMP, L_CNT.
CALL METHOD GS_ALV_GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = LT_ROWS.
DELETE LT_ROWS WHERE ROWTYPE <> SPACE.
DESCRIBE TABLE LT_ROWS LINES L_CNT.
IF L_CNT > 1.
MESSAGE E000(ZMM) WITH 'Only one entry chosen'.
*. Only one entry chosen.
ENDIF.
IF L_CNT = 0.
MESSAGE E000(ZMM) WITH 'No selected data.'.
*. No selected data.
LEAVE SCREEN.
ENDIF.
READ TABLE LT_ROWS INTO LS_ROWS INDEX 1.
CLEAR G_EBELN.
READ TABLE GT_LIST INDEX LS_ROWS-INDEX.
MOVE: GT_LIST-EBELN TO G_EBELN,
GT_LIST-MBLNR TO G_MBLNR.
ENDFORM. " CHECK_ITAB_FOR_MARK
*&---------------------------------------------------------------------*
*& Form PRINT_GR_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_GR_DOCUMENT .
CLEAR: OK_CODE.
CALL SCREEN '0200'.
ENDFORM. " PRINT_GR_DOCUMENT
*&---------------------------------------------------------------------*
*& Form ALV_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_VARIANT .
CLEAR GS_VARIANT.
GS_VARIANT-REPORT = SY-REPID. "프로그램명
GS_VARIANT-USERNAME = SY-UNAME. "사용자
ENDFORM. " ALV_VARIANT
*&---------------------------------------------------------------------*
*& Form ALV_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_SORT .
* CLEAR : GS_SORT, GS_SORT[].
* PERFORM SORT_FIELD TABLES GS_SORT USING :
* 1 'EBELN' C_X C_ C_X.
ENDFORM. " ALV_SORT
*&---------------------------------------------------------------------*
*& Form SORT_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GS_SORT text
* -->P_1 text
* -->P_0359 text
* -->P_C_X text
* -->P_C_ text
* -->P_C_X text
*----------------------------------------------------------------------*
FORM SORT_FIELD TABLES P_GS_SORT TYPE LVC_T_SORT
USING P_SPOS
P_FIELDNAME
P_UP
P_DOWN
P_SUBTOT.
P_GS_SORT-SPOS = P_SPOS.
P_GS_SORT-FIELDNAME = P_FIELDNAME.
P_GS_SORT-UP = P_UP.
P_GS_SORT-DOWN = P_DOWN.
P_GS_SORT-SUBTOT = P_SUBTOT.
APPEND P_GS_SORT.
ENDFORM. " SORT_FIELD
*&---------------------------------------------------------------------*
*& Form ALV_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_LAYOUT .
CLEAR GS_LAYOUT.
GS_LAYOUT-SEL_MODE = C_A.
GS_LAYOUT-ZEBRA = C_X. " LINE COLOR
GS_LAYOUT-CWIDTH_OPT = C_. " ALV 제어: 열너비최적화
* gs_layout-info_fname = c_info. " ROW COLOR.
* gs_layout-ctab_fname = c_colinfo. " COLUMN COLOR.
* gs_layout-stylefname = c_style.
GS_LAYOUT-NO_ROWMARK = ' '.
* GS_LAYOUT-GRID_TITLE = SY-TITLE.
ENDFORM. " ALV_LAYOUT
*&---------------------------------------------------------------------*
*& Form ALV_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATALOG .
CLEAR: GS_FIELDCAT, GT_FIELDCAT[], G_POS,
GT_SLIS, GT_SLIS[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = C_GT_TEMP
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = GT_SLIS[].
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
IT_FIELDCAT_ALV = GT_SLIS[]
IMPORTING
ET_FIELDCAT_LVC = GT_FIELDCAT
TABLES
IT_DATA = ITAB
EXCEPTIONS
IT_DATA_MISSING = 1
OTHERS = 2.
LOOP AT GT_FIELDCAT INTO GS_FIELDCAT.
CASE GS_FIELDCAT-FIELDNAME.
WHEN 'COUNT'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'NO'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ 'R' C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'MBLNR'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'GR NO'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_X C_ C_ C_ C_ C_ C_.
WHEN 'BLDAT'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'GR DOC Date'
GS_FIELDCAT-DATATYPE
'10'
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'LIFNR'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'Vendor'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_X C_ C_ C_ C_ C_ C_.
WHEN 'NAME1'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'NAME'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'EBELN'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'PO NO'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_X C_ C_ C_ C_ C_ C_.
WHEN 'EBELP'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'PO ITEM'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'BEDAT'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'PO DATE'
GS_FIELDCAT-DATATYPE
'10'
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'MATNR'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'Material'
GS_FIELDCAT-DATATYPE
'8'
C_X C_ C_ C_ C_ C_X C_ C_ C_ C_X C_ C_.
WHEN 'MAKTX'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'Material Desc'
GS_FIELDCAT-DATATYPE
'32'
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'MENGE'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'PO Qty'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINS'.
WHEN 'MEINS'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'PO Qty Unit'
GS_FIELDCAT-DATATYPE
'8'
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
WHEN 'ERFMG'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'GR Qty'
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-INTLEN
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINS'.
WHEN 'ERFME'.
PERFORM ALV_FIELDCAT_INSERT_RTN USING:
GS_FIELDCAT-FIELDNAME
'GR Qty Unit'
GS_FIELDCAT-DATATYPE
'8'
C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.
* WHEN 'COUNT'.
* PERFORM FIELDCAT_SET USING: 'X' " key
* ' '
* 'NO'. " Text
* WHEN 'MBLNR'.
* PERFORM FIELDCAT_SET USING: 'X' " key
* 'ALPHA'
* 'GR NO'. " Text
* WHEN 'BLDAT'.
* PERFORM FIELDCAT_SET USING: ' ' " key
* ' '
* 'GR DOC Date'. " Text
* WHEN 'LIFNR'.
* PERFORM FIELDCAT_SET USING: ' '
* 'ALPHA'
* 'Vendor'.
*
* WHEN 'NAME1'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'Name1'.
* WHEN 'NAME2'.
* WHEN 'NAME3'.
* WHEN 'NAME4'.
* WHEN 'EBELN'.
* PERFORM FIELDCAT_SET USING: ' '
* 'ALPHA'
* 'PO NO'.
* WHEN 'EBELP'.
* PERFORM FIELDCAT_SET USING: ' '
* 'ALPHA'
* ' '.
* WHEN 'BEDAT'.
* PERFORM FIELDCAT_SET USING: ' ' " key
* ' '
** 'PO Date'. " Text
* WHEN 'MATNR'.
* PERFORM FIELDCAT_SET USING: ' '
* 'MATN1'
* 'Material'.
* WHEN 'MAKTX'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'Material Desc'.
* WHEN 'MENGE'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'PO Qty'.
* WHEN 'MENGE'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'PO Qty Unit'.
* WHEN 'ERFMG'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'GR Qty'.
* WHEN 'MEINS'.
* PERFORM FIELDCAT_SET USING: ' '
* ' '
* 'GR Qty Unit'.
ENDCASE.
MODIFY GT_FIELDCAT FROM GS_FIELDCAT.
ENDLOOP.
ENDFORM. " ALV_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form ALV_TOOLBAR_EXCLUDE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_TOOLBAR_EXCLUDE .
DATA LS_EXCLUDE TYPE UI_FUNC.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXCL_ALL. " ** 툴바 모두제거 **
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO. " 실행취소 &LOCAL&UNDO
APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_AUF. " 소계확장 &AUF
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_AVERAGE. " &AVERAGE
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_BACK_CLASSIC.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_ABC. " &ABC
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_CHAIN.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_CRBATCH.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_CRWEB.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_LINEITEMS.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_MASTER_DATA.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_MORE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_REPORT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_XINT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_XXL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_COL_INVISIBLE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_COL_OPTIMIZE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CURRENT_VARIANT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_DATA_SAVE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_DELETE_FILTER.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_DESELECT_ALL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_DETAIL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXPCRDATA.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXPCRDESIG.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXPCRTEMPL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXPMDB.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_EXTEND.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_F4.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_FILTER.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_FIND.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_FIX_COLUMNS.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_GRAPH.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_HELP.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_INFO.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOAD_VARIANT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY. " 행 카피.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_HTML.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW. " 행 카피.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT. " 가위.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW. " 행삭제.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW. " 행삽입.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW. " 라인생성.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE. " 겹쳐쓰기.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW. " 겹쳐쓰기.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAINTAIN_VARIANT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MINIMUM.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PC_FILE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_BACK.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_PREV.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_REFRESH. " 새로고침.
APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_REPREP.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SAVE_VARIANT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SELECT_ALL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SEND.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SEPARATOR.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SORT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SORT_ASC.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SORT_DSC.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUBTOT.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUM.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_TO_OFFICE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_TO_REP_TREE.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_UNFIX_COLUMNS.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEWS.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_CRYSTAL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_EXCEL.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_GRID.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_WORD_PROCESSOR.
* APPEND LS_EXCLUDE TO GS_EXCLUDE.
ENDFORM. " ALV_TOOLBAR_EXCLUDE
*&---------------------------------------------------------------------*
*& Form FIELDCAT_SET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0474 text
* -->P_0475 text
* -->P_0476 text
*----------------------------------------------------------------------*
FORM FIELDCAT_SET USING P_KEY
P_CONV
P_TEXT.
GS_FIELDCAT-KEY = P_KEY.
GS_FIELDCAT-CONVEXIT = P_CONV.
IF P_TEXT IS NOT INITIAL.
GS_FIELDCAT-COLTEXT = P_TEXT.
GS_FIELDCAT-SCRTEXT_L = P_TEXT.
GS_FIELDCAT-SCRTEXT_M = P_TEXT.
GS_FIELDCAT-SCRTEXT_S = P_TEXT.
ENDIF.
ENDFORM. " FIELDCAT_SET
*&---------------------------------------------------------------------*
*& Form BUILD_EXCEL_CONTAINER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_EXCEL_CONTAINER .
DATA : L_AVAIL TYPE I.
DATA : LC_ERROR TYPE REF TO I_OI_ERROR.
CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
IMPORTING
CONTROL = GC_CONTROL
ERROR = LC_ERROR.
CALL METHOD LC_ERROR->RAISE_MESSAGE
EXPORTING
TYPE = 'E'.
CREATE OBJECT GC_CONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER'.
CALL METHOD GC_CONTROL->INIT_CONTROL
EXPORTING
R3_APPLICATION_NAME = 'JPN'
INPLACE_ENABLED = 'X'
INPLACE_SCROLL_DOCUMENTS = 'X'
PARENT = GC_CONTAINER
REGISTER_ON_CLOSE_EVENT = 'X'
REGISTER_ON_CUSTOM_EVENT = 'X'
NO_FLUSH = 'X'
IMPORTING
ERROR = LC_ERROR.
CALL METHOD LC_ERROR->RAISE_MESSAGE
EXPORTING
TYPE = 'E'.
PERFORM LOAD_EXCEL_FILE.
CALL METHOD GC_DOCPROXY->HAS_SPREADSHEET_INTERFACE
EXPORTING
NO_FLUSH = 'X'
IMPORTING
IS_AVAILABLE = L_AVAIL
ERROR = LC_ERROR.
CALL METHOD GC_DOCPROXY->GET_SPREADSHEET_INTERFACE
EXPORTING
NO_FLUSH = SPACE
IMPORTING
SHEET_INTERFACE = GC_SHEET
ERROR = LC_ERROR.
ENDFORM. " BUILD_EXCEL_CONTAINER
*&---------------------------------------------------------------------*
*& Form BUILD_EXCEL_DATA_0200
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_EXCEL_DATA_0200 .
DATA: L_CNT TYPE C.
DATA: L_DATE(15).
DATA: L_STRING TYPE STRING,
L_TEXT(50) TYPE C.
READ TABLE GT_LIST WITH KEY MBLNR = G_MBLNR.
* GR NO
PERFORM EXCEL_ASSIGN_DATA USING 6 6 GT_LIST-MBLNR.
* GR DOC DATE
CLEAR: L_DATE.
PERFORM CONVERSION_EXIT_PDATE_OUTPUT USING GT_LIST-BLDAT
CHANGING L_DATE.
PERFORM EXCEL_ASSIGN_DATA USING 6 9 L_DATE.
* VENDOR NAME
PERFORM EXCEL_ASSIGN_DATA USING 7 4 GT_LIST-NAME1.
* PO NO
PERFORM EXCEL_ASSIGN_DATA USING 8 4 GT_LIST-EBELN.
* PO DATE
CLEAR: L_DATE.
PERFORM CONVERSION_EXIT_PDATE_OUTPUT USING GT_LIST-BEDAT
CHANGING L_DATE.
PERFORM EXCEL_ASSIGN_DATA USING 8 6 L_DATE.
I = 12.
CLEAR L_CNT.
LOOP AT GT_LIST WHERE MBLNR = G_MBLNR.
I = I + 1.
ADD 1 TO L_CNT.
PERFORM EXCEL_ASSIGN_DATA USING I 2 GT_LIST-MAKTX.
PERFORM EXCEL_ASSIGN_DATA USING I 5 GT_LIST-MATNR.
CLEAR L_TEXT.
WRITE: GT_LIST-MENGE TO L_TEXT UNIT GT_LIST-MEINS.
PERFORM EXCEL_ASSIGN_DATA USING I 7 L_TEXT.
CLEAR L_TEXT.
WRITE: GT_LIST-ERFMG TO L_TEXT UNIT GT_LIST-ERFME.
PERFORM EXCEL_ASSIGN_DATA USING I 8 L_TEXT.
PERFORM EXCEL_ASSIGN_DATA USING I 6 GT_LIST-MEINS.
ENDLOOP.
ENDFORM. " BUILD_EXCEL_DATA_0200
*&---------------------------------------------------------------------*
*& Form SET_EXCEL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_EXCEL_DATA .
DATA : L_RNAME(128),
L_TABIX(05) TYPE N.
DATA : WA_EXDAT TYPE TY_EXDAT.
DATA : LC_RITEM TYPE SOI_RANGE_ITEM,
LC_RLIST TYPE SOI_RANGE_LIST,
LC_GITEM TYPE SOI_GENERIC_ITEM,
LC_GTABL TYPE SOI_GENERIC_TABLE.
LC_RITEM-ROWS = 1.
LC_RITEM-COLUMNS = 1.
LC_GITEM-ROW = 1.
LC_GITEM-COLUMN = 1.
LOOP AT GT_EXDAT INTO WA_EXDAT.
L_TABIX = SY-TABIX.
CONCATENATE 'DATA' L_TABIX INTO L_RNAME.
PERFORM DEFINE_RANGES USING L_RNAME WA_EXDAT.
LC_RITEM-NAME = L_RNAME.
APPEND LC_RITEM TO LC_RLIST.
LC_GITEM-VALUE = WA_EXDAT-VALUE.
APPEND LC_GITEM TO LC_GTABL.
ENDLOOP.
CALL METHOD GC_SHEET->SET_RANGES_DATA
EXPORTING
RANGES = LC_RLIST
CONTENTS = LC_GTABL
NO_FLUSH = 'X'.
ENDFORM. " SET_EXCEL_DATA
*&---------------------------------------------------------------------*
*& Form LOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_EXCEL_FILE .
DATA: MESSAGE(100),
ANS.
* Declare an instance for the central object of the office integration
DATA: BDS_DOCUMENT TYPE REF TO CL_BDS_DOCUMENT_SET,
ERRORS TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE.
* BDS Document File
DATA: DOC_CLASSNAME TYPE SBDST_CLASSNAME VALUE 'ZMM',
DOC_CLASSTYPE TYPE SBDST_CLASSTYPE VALUE 'OT',
DOC_OBJECT_KEY TYPE SBDST_OBJECT_KEY VALUE SPACE.
DATA: DOC_DESCR(40) VALUE 'ZMM'.
DATA: DOC_SIGNATURE TYPE SBDST_SIGNATURE,
DOC_SIGNATURE_2 TYPE SBDST_SIGNATURE,
DOC_COMPONENTS TYPE SBDST_COMPONENTS,
DOC_PROPERTIES TYPE SBDST_PROPERTIES,
DOC_URIS TYPE SBDST_URI,
DOC_MIMETYPE TYPE BAPICOMPON-MIMETYPE,
DOC_URL LIKE BAPIURI-URI,
DOCUMENT_MIMETYPE TYPE BAPICOMPON-MIMETYPE,
WA_DOC_SIGNATURE LIKE LINE OF DOC_SIGNATURE,
WA_DOC_COMPONENTS LIKE LINE OF DOC_COMPONENTS,
WA_DOC_PROPERTIES LIKE LINE OF DOC_PROPERTIES,
WA_DOC_URIS LIKE LINE OF DOC_URIS.
* Data
TYPES: MY_ROW(500) TYPE C. " Excel Range
DATA: EXCEL_TABLE_WA TYPE MY_ROW,
EXCEL_TABLE TYPE TABLE OF MY_ROW.
* spreadsheet interface structures for excel data input
DATA: CELLITEM TYPE SOI_GENERIC_ITEM,
RANGEITEM TYPE SOI_RANGE_ITEM,
RANGES TYPE SOI_RANGE_LIST,
EXCEL_INPUT TYPE SOI_GENERIC_TABLE,
EXCEL_INPUT_WA TYPE SOI_GENERIC_ITEM,
INITIALIZED TYPE C.
DATA: FIELDS_TABLE TYPE TABLE OF RFC_FIELDS,
W_FIELDS_TABLE TYPE RFC_FIELDS.
* Define Data
DATA: OKCODE(04).
DATA: RETCODE TYPE SOI_RET_STRING.
DATA: DOCUMENT_TYPE TYPE SOI_DOCUMENT_TYPE.
DATA: DOCUMENT_FORMAT TYPE SOI_DOCUMENT_TYPE.
DATA: DATA_TABLE TYPE SBDST_CONTENT,
DATA_SIZE TYPE I.
CREATE OBJECT BDS_DOCUMENT.
CALL METHOD BDS_DOCUMENT->GET_INFO
EXPORTING
CLASSNAME = DOC_CLASSNAME
CLASSTYPE = DOC_CLASSTYPE
OBJECT_KEY = DOC_OBJECT_KEY
CHANGING
COMPONENTS = DOC_COMPONENTS
SIGNATURE = DOC_SIGNATURE
EXCEPTIONS
NOTHING_FOUND = 1
ERROR_KPRO = 2
INTERNAL_ERROR = 3
PARAMETER_ERROR = 4
NOT_AUTHORIZED = 5
NOT_ALLOWED = 6.
DOC_SIGNATURE_2 = DOC_SIGNATURE.
READ TABLE DOC_SIGNATURE_2 INTO WA_DOC_SIGNATURE
WITH KEY PROP_VALUE = 'GOODS_RECEIPT_FORM'.
CLEAR DOC_SIGNATURE.
APPEND WA_DOC_SIGNATURE TO DOC_SIGNATURE.
CLEAR DOC_SIGNATURE_2.
CLEAR WA_DOC_SIGNATURE.
* retrieving the choosen document:
CALL METHOD BDS_DOCUMENT->GET_WITH_URL
EXPORTING
CLASSNAME = DOC_CLASSNAME
CLASSTYPE = DOC_CLASSTYPE
OBJECT_KEY = DOC_OBJECT_KEY
CHANGING
URIS = DOC_URIS
SIGNATURE = DOC_SIGNATURE
EXCEPTIONS
NOTHING_FOUND = 1
ERROR_KPRO = 2
INTERNAL_ERROR = 3
PARAMETER_ERROR = 4
NOT_AUTHORIZED = 5
NOT_ALLOWED = 6.
* Get the correct 'doc_component'-Data that correspond to the choosen
* 'doc_signature':
CLEAR DOC_COMPONENTS.
CALL METHOD BDS_DOCUMENT->GET_INFO
EXPORTING
CLASSNAME = DOC_CLASSNAME
CLASSTYPE = DOC_CLASSTYPE
OBJECT_KEY = DOC_OBJECT_KEY
CHANGING
COMPONENTS = DOC_COMPONENTS
SIGNATURE = DOC_SIGNATURE
EXCEPTIONS
NOTHING_FOUND = 1
ERROR_KPRO = 2
INTERNAL_ERROR = 3
PARAMETER_ERROR = 4
NOT_AUTHORIZED = 5
NOT_ALLOWED = 6.
READ TABLE DOC_SIGNATURE INTO WA_DOC_SIGNATURE INDEX 1.
READ TABLE DOC_COMPONENTS INTO WA_DOC_COMPONENTS INDEX 1.
READ TABLE DOC_URIS INTO WA_DOC_URIS INDEX 1.
* Just to put the right description on the dynpro:
LOOP AT DOC_SIGNATURE INTO WA_DOC_SIGNATURE
WHERE PROP_NAME = 'DESCRIPTION'.
DOC_DESCR = WA_DOC_SIGNATURE-PROP_VALUE.
ENDLOOP.
DOC_MIMETYPE = WA_DOC_COMPONENTS-MIMETYPE. " MIME Type
DOC_URL = WA_DOC_URIS-URI.
G_FILE = DOC_URL.
CASE DOC_MIMETYPE.
WHEN 'application/x-rtf' OR 'text/rtf'.
DOCUMENT_FORMAT = SOI_DOCFORMAT_RTF.
WHEN 'application/x-oleobject'.
DOCUMENT_FORMAT = SOI_DOCFORMAT_COMPOUND.
WHEN 'text/plain'.
DOCUMENT_FORMAT = SOI_DOCFORMAT_TEXT.
WHEN OTHERS.
DOCUMENT_FORMAT = SOI_DOCFORMAT_NATIVE.
ENDCASE.
IF NOT GC_DOCPROXY IS INITIAL.
DATA: IS_CLOSED TYPE I.
CALL METHOD GC_DOCPROXY->IS_DESTROYED
IMPORTING
RET_VALUE = IS_CLOSED.
ENDIF.
CALL METHOD GC_CONTROL->GET_DOCUMENT_PROXY
EXPORTING
DOCUMENT_TYPE = DOCUMENT_TYPE
DOCUMENT_FORMAT = DOCUMENT_FORMAT
IMPORTING
DOCUMENT_PROXY = GC_DOCPROXY
RETCODE = RETCODE.
IF RETCODE NE C_OI_ERRORS=>RET_OK.
EXIT.
ENDIF.
CALL METHOD GC_DOCPROXY->OPEN_DOCUMENT
EXPORTING
DOCUMENT_URL = DOC_URL
OPEN_INPLACE = 'X'
OPEN_READONLY = ' '
IMPORTING
RETCODE = RETCODE.
CALL METHOD C_OI_ERRORS=>RAISE_MESSAGE
EXPORTING
TYPE = 'E'.
ENDFORM. " LOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
*& Form DEFINE_RANGES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_L_RNAME text
* -->P_WA_EXDAT text
*----------------------------------------------------------------------*
FORM DEFINE_RANGES USING PA_RNAME
PS_EXDAT STRUCTURE GS_EXDAT.
CALL METHOD GC_SHEET->INSERT_RANGE_DIM
EXPORTING
NAME = PA_RNAME
TOP = PS_EXDAT-ROW
LEFT = PS_EXDAT-COL
ROWS = 1
COLUMNS = 1
NO_FLUSH = 'X'.
ENDFORM. " DEFINE_RANGES
*&---------------------------------------------------------------------*
*& Form EXCEL_ASSIGN_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I text
* -->P_2 text
* -->P_GT_LIST_MAKTX text
*----------------------------------------------------------------------*
FORM EXCEL_ASSIGN_DATA USING PA_ROW PA_COL PA_VALUE.
DATA : WA_EXDAT TYPE TY_EXDAT.
WA_EXDAT-ROW = PA_ROW.
WA_EXDAT-COL = PA_COL.
WA_EXDAT-VALUE = PA_VALUE.
APPEND WA_EXDAT TO GT_EXDAT.
ENDFORM. " EXCEL_ASSIGN_DATA
*&---------------------------------------------------------------------*
*& Form CONVERSION_EXIT_PDATE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST_BLDAT text
* <--P_L_DATE text
*----------------------------------------------------------------------*
FORM CONVERSION_EXIT_PDATE_OUTPUT USING P_IN_DATE TYPE SY-DATUM
CHANGING P_OUT_DATE.
CLEAR P_OUT_DATE.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = P_IN_DATE
IMPORTING
OUTPUT = P_OUT_DATE.
ENDFORM. " CONVERSION_EXIT_PDATE_OUTPUT
*&---------------------------------------------------------------------*
*& Form ALV_FIELDCAT_INSERT_RTN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT_FIELDNAME text
* -->P_0555 text
* -->P_GT_FIELDCAT_DATATYPE text
* -->P_GT_FIELDCAT_INTLEN text
* -->P_C_X text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
* -->P_C_ text
*----------------------------------------------------------------------*
FORM ALV_FIELDCAT_INSERT_RTN USING
P_FNAM P_TEXT P_TYPE P_OUTLEN P_FIXCOLUMN P_NOOUT
P_KEY P_JUST P_SUM P_HOTSPOT P_F4 P_EDIT P_BOX
P_ZERO P_CURR P_UNIT.
CLEAR: G_POS.
G_POS = G_POS + 1.
GS_FIELDCATALOG-COL_POS = G_POS. "colum position
GS_FIELDCATALOG-FIELDNAME = P_FNAM. "Field name
GS_FIELDCATALOG-REPTEXT = P_TEXT. "Field Description
GS_FIELDCATALOG-DATATYPE = P_TYPE. "Data Type
GS_FIELDCATALOG-OUTPUTLEN = P_OUTLEN. "Data Length
GS_FIELDCATALOG-FIX_COLUMN = P_FIXCOLUMN. "Fix Column
GS_FIELDCATALOG-NO_OUT = P_NOOUT. "Hidden Field
GS_FIELDCATALOG-KEY = P_KEY. "Key.
GS_FIELDCATALOG-JUST = P_JUST. "위치.
GS_FIELDCATALOG-DO_SUM = P_SUM. "Do sum.
GS_FIELDCATALOG-HOTSPOT = P_HOTSPOT. "Hotspot.
GS_FIELDCATALOG-F4AVAILABL = P_F4. "Search help
GS_FIELDCATALOG-EDIT = P_EDIT. "Edit.
GS_FIELDCATALOG-CHECKBOX = P_BOX. "BOX.
GS_FIELDCATALOG-NO_ZERO = P_ZERO. "NO-ZERO.
GS_FIELDCATALOG-CFIELDNAME = P_CURR. "NO-ZERO.
GS_FIELDCATALOG-QFIELDNAME = P_UNIT. "unit.
MOVE-CORRESPONDING GS_FIELDCATALOG TO GS_FIELDCAT. CLEAR GS_FIELDCATALOG.
ENDFORM. " ALV_FIELDCAT_INSERT_RTN
*&---------------------------------------------------------------------*
*& Form METHOD_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM METHOD_HOTSPOT_CLICK USING P_ROW
P_COLUMN.
CASE P_COLUMN.
WHEN 'MBLNR'.
READ TABLE GT_LIST INDEX P_ROW.
IF GT_LIST-MBLNR IS NOT INITIAL.
SET PARAMETER ID 'MBN' FIELD GT_LIST-MBLNR.
SET PARAMETER ID 'MJA' FIELD GT_LIST-BLDAT(4).
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'LIFNR'.
READ TABLE GT_LIST INDEX P_ROW.
IF GT_LIST-LIFNR IS NOT INITIAL.
SET PARAMETER ID : 'LIF' FIELD GT_LIST-LIFNR.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'EBELN'.
READ TABLE GT_LIST INDEX P_ROW.
IF GT_LIST-EBELN IS NOT INITIAL.
SET PARAMETER ID : 'BES' FIELD GT_LIST-EBELN.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'MATNR'.
READ TABLE GT_LIST INDEX P_ROW.
IF GT_LIST-MATNR IS NOT INITIAL.
SET PARAMETER ID : 'MAT' FIELD GT_LIST-MATNR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. " METHOD_HOTSPOT_CLICK
댓글 없음:
댓글 쓰기