2016년 12월 15일 목요일

ZPPREWORK02_[VIETNAM CF-FIV] Activity Type Quantity Analysis

*&---------------------------------------------------------------------*
*& Report  ZPPREWORK02
*&---------------------------------------------------------------------*
*& [VIETNAM CJ-FIV] Activity Type Quantity Analysis
*&---------------------------------------------------------------------*
* Description      : [VIETNAM CF-FIV] Activity Type Quantity Analysis  *
*
* Dev. Request No  :                           *
***********************************************************************
* MODIFICATION LOG :                                                  *
***********************************************************************
* Date        Rev#  Programmer         Description                    *
* ----------  ----  -----------------  -------------------------------*
* 2016.12.01  1.0   VIETNAMDEV         New Created
*&--------------------------------------------------------------------*
REPORT ZPPREWORK02 NO STANDARD PAGE HEADING MESSAGE-ID ZDPP LINE-SIZE 1023.
***********************************************************************
*INCLUDE.
***********************************************************************
INCLUDE <ICON>.
INCLUDE ZPPREWORK02_C01.
INCLUDE ZPPREWORK02_TOP.
INCLUDE ZPPREWORK02_F01.
INCLUDE ZPPREWORK02_F02.
INCLUDE ZPPREWORK02_O01.
INCLUDE ZPPREWORK02_I01.

***********************************************************************
*INITIALIZATION.
***********************************************************************
INITIALIZATION.
  PERFORM INIT_DATE.

***********************************************************************
*START-OF-SELECTION.
***********************************************************************
START-OF-SELECTION.
  PERFORM GET_MASTER_LIST.
  PERFORM GT_LIST_EDIT.

  IF GT_RESULT[] IS INITIAL.
    MESSAGE S000 WITH 'No data Found!!'.
  ELSE.
    PERFORM GET_DESC_DATA.
    PERFORM MAKE_HEADER_DATA.
    CALL SCREEN 100.
  ENDIF.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&  Include           ZPPREWORK02_C01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      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.
      METHODSSET_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           ZPPREWORK02_TOP
*&---------------------------------------------------------------------*
***********************************************************************
* TABLES & TYPE-POOLS
***********************************************************************
TABLES CSKTCSLTCOBKAFRUZMSEG.

TYPE-POOLSICONSLISVRMOLE2.

***********************************************************************
** Internal Table & Data
***********************************************************************
DATABEGIN OF GT_RESULT OCCURS 0,
       KOKRS    LIKE COBK-KOKRS,
       BELNR    LIKE COBK-BELNR,
       REFBN    LIKE COBK-REFBN,
       AWORG    LIKE COBK-AWORG,
       BUDAT    LIKE COBK-BUDAT,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       PAROB    LIKE COEP-PAROB,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER,
       AUFNR    LIKE AFRU-AUFNR,
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEINS    LIKE AFRU-MEINH,
       WERKS    LIKE AFRU-WERKS,
       VORNR    LIKE AFRU-VORNR,
       MEILR    LIKE AFRU-MEILR,
       ZREWORK(1).
DATAEND OF GT_RESULT.

DATABEGIN OF GT_HEADER OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       BUDAT    LIKE COBK-BUDAT,
       AUFNR    LIKE AFRU-AUFNR,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEINS    LIKE AFRU-MEINH,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT.      "Cost Center Desc
DATAEND OF GT_HEADER.

DATABEGIN OF GT_DETAIL OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       BUDAT    LIKE COBK-BUDAT,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       AUFNR    LIKE AFRU-AUFNR,
       MEINS    LIKE AFRU-MEINH,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF GT_DETAIL.

DATABEGIN OF GT_SUM OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR_Y   LIKE COEP-MEGBTR,   "Yield Actity Qty
       MEGBTR_W   LIKE COEP-MEGBTR,   "Recycle Actity Qty
       MEINH    LIKE COEP-MEINH,
       WTGBTR_Y LIKE COVP-WTGBTR,     "Yield Value
       WTGBTR_W LIKE COVP-WTGBTR,     "Recycle Value
       TWAER    LIKE COVP-TWAER.
DATAEND OF GT_SUM.

DATABEGIN OF GT_MAT OCCURS 0,
       AUFNR    LIKE AFPO-AUFNR,
       MATNR    LIKE MAKT-MATNR,
       MAKTX    LIKE MAKT-MAKTX.
DATAEND OF GT_MAT.

DATABEGIN OF GT_YIELD OCCURS 0,
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF GT_YIELD.

DATABEGIN OF GT_REWORK OCCURS 0,
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF GT_REWORK.

DATAGT_CSKT LIKE TABLE OF CSKT WITH HEADER LINE,
      GT_CSLT LIKE TABLE OF CSLT WITH HEADER LINE.

DATABEGIN OF ITAB OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       BUDAT    LIKE COBK-BUDAT,
       AUFNR    LIKE AFRU-AUFNR,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEINS    LIKE AFRU-MEINH,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
END OF ITAB.

DATABEGIN OF ITAB2 OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       BUDAT    LIKE COBK-BUDAT,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       AUFNR    LIKE AFRU-AUFNR,
       MEINS    LIKE AFRU-MEINH,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF ITAB2.

DATABEGIN OF ITAB3 OCCURS 0,
       WERKS    LIKE AFRU-WERKS,
       MATNR    LIKE AFPO-MATNR,
       MAKTX    LIKE MAKT-MAKTX,
       KOSTL    LIKE CSKT-KOSTL,      "Cost Center
       KTEXT    LIKE CSKT-KTEXT,      "Cost Center Desc
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR_Y   LIKE COEP-MEGBTR,   "Yield Actity Qty
       MEGBTR_W   LIKE COEP-MEGBTR,   "Recycle Actity Qty
       MEINH    LIKE COEP-MEINH,
       WTGBTR_Y LIKE COVP-WTGBTR,     "Yield Value
       WTGBTR_W LIKE COVP-WTGBTR,     "Recycle Value
       TWAER    LIKE COVP-TWAER.
DATAEND OF ITAB3.

DATABEGIN OF ITAB4 OCCURS 0,
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF ITAB4.

DATABEGIN OF ITAB5 OCCURS 0,
       LSTAR    LIKE CSLT-LSTAR,      "Activity type
       LTEXT    LIKE CSLT-LTEXT,      "Activity type Desc
       MEGBTR   LIKE COEP-MEGBTR,
       MEINH    LIKE COEP-MEINH,
       WTGBTR   LIKE COVP-WTGBTR,
       TWAER    LIKE COVP-TWAER.
DATAEND OF ITAB5.

DATABEGIN OF GT_ITAB OCCURS 0,
       LMNGA    LIKE AFRU-LMNGA,
       RMNGA    LIKE AFRU-RMNGA,
       MEINH    LIKE COEP-MEINH,
       MEINH2   LIKE COEP-MEINH.
DATAEND OF GT_ITAB.

DATAGV_LMNGA  LIKE AFRU-LMNGA.
DATAGV_RMNGA  LIKE AFRU-RMNGA.
DATAGV_MEINH  LIKE COEP-MEINH.
DATAGV_MEINH2 LIKE COEP-MEINH.
***********************************************************************
* Screen
***********************************************************************
* 기본 SET
DATA GV_SEL_FIELD   LIKE  HELP_INFO-FIELDNAME,
       GT_FIELDS      LIKE  HELP_VALUE OCCURS 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 WITH HEADER LINE"NO ENTERENTRY

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 OK_CODE 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_CUSTOM_CONTAINER3 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       GS_CUSTOM_CONTAINER4 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       GS_CUSTOM_CONTAINER5 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_ALV_GRID3         TYPE REF TO LCL_ALV_GRID,  " Local alv grid
       GS_ALV_GRID4         TYPE REF TO LCL_ALV_GRID,  " Local alv grid
       GS_ALV_GRID5         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
       GS_FIELDCAT          TYPE LVC_T_FCAT,    " Field Catalog for List
       GS_FIELDCAT2         TYPE LVC_T_FCAT,    " Field Catalog for List
       GS_FIELDCAT3         TYPE LVC_T_FCAT,    " Field Catalog for List
       GS_FIELDCAT4         TYPE LVC_T_FCAT,    " Field Catalog for List
       GS_FIELDCAT5         TYPE LVC_T_FCAT,    " Field Catalog for List
       GT_FIELDCAT          TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       GT_FIELDCAT2         TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       GT_FIELDCAT3         TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       GT_FIELDCAT4         TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       GT_FIELDCAT5         TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       GS_FIELDCATALOG      TYPE LVC_T_FCAT WITH HEADER LINE,
       GS_FIELDCATALOG2     TYPE LVC_T_FCAT WITH HEADER LINE,
       GS_FIELDCATALOG3     TYPE LVC_T_FCAT WITH HEADER LINE,
       GS_FIELDCATALOG4     TYPE LVC_T_FCAT WITH HEADER LINE,
       GS_FIELDCATALOG5     TYPE LVC_T_FCAT WITH HEADER LINE,
       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.     "최신표시 안정성

*----------------------------------------------------------------------*
*  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 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(1TYPE VALUE 'C',            "Color constants
        G_ON(1)       TYPE VALUE 1,              "Intensified on
        G_OFF(1)      TYPE 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_CONTAINER3    TYPE SCRFNAME    VALUE 'G_ALV_GRID3'"ALV
            C_CONTAINER4    TYPE SCRFNAME    VALUE 'G_ALV_GRID4'"ALV
            C_CONTAINER5    TYPE SCRFNAME    VALUE 'G_ALV_GRID5'"ALV

            C_GT_TEMP       TYPE SLIS_TABNAME VALUE 'ITAB',
            C_GT_TEMP2      TYPE SLIS_TABNAME VALUE 'ITAB2',
            C_GT_TEMP3      TYPE SLIS_TABNAME VALUE 'ITAB3',
            C_GT_TEMP4      TYPE SLIS_TABNAME VALUE 'ITAB4',
            C_GT_TEMP5      TYPE SLIS_TABNAME VALUE 'ITAB5',
            C_GT_LIST(7)    TYPE VALUE 'GT_LIST',
            C_(1)           TYPE VALUE ' ',               "Empty flag
            C_INFO(4)       TYPE VALUE 'INFO',            "INFO
            C_COLINFO(7)    TYPE VALUE 'COLINFO',         "COLINFO
            C_STYLE(5)      TYPE VALUE 'STYLE',           "STYLE

*           ALV FIELD NAME
            C_WERKS(5)      TYPE VALUE 'WERKS',
            C_BUDAT(5)      TYPE VALUE 'BUDAT',
            C_AUFNR(5)      TYPE VALUE 'AUFNR',
            C_MATNR(5)      TYPE VALUE 'MATNR',
            C_MAKTX(24)     TYPE VALUE 'MAKTX',
            C_MEINS(5)      TYPE VALUE 'MEINS',
            C_KOSTL(5)      TYPE VALUE 'KOSTL',
            C_KTEXT(5)      TYPE VALUE 'KTEXT',
            C_LSTAR(5)      TYPE VALUE 'LSTAR',

            C_LMNGA(5)      TYPE VALUE 'LMNGA',
            C_RMNGA(5)      TYPE VALUE 'RMNGA',

*           ALV DATA LENGTH
            C_18(2)         TYPE VALUE '18',

*           DATA TYPE
            C_CHAR(4)       TYPE VALUE 'CHAR',
            C_QUAN(4)       TYPE VALUE 'QUAN',
            C_DEC(3)        TYPE VALUE 'DEC',
            C_CURR(6)       TYPE VALUE 'C_CURR',

*           STATUS TYPE
            C_BACK(4)       TYPE VALUE 'BACK',
            C_EXIT(4)       TYPE VALUE 'EXIT',
            C_CANC(4)       TYPE VALUE 'CANC',
            C_EXPAND(6)     TYPE VALUE 'EXPAND',
            C_COLLAP(6)     TYPE VALUE 'COLLAP',
            C_ACTSUM(6)     TYPE VALUE 'ACTSUM',

*           알파벳
            C_A(1)          TYPE VALUE 'A',
            C_B(1)          TYPE VALUE 'B',
            C_C(1)          TYPE VALUE 'C',
            C_D(1)          TYPE VALUE 'D',
            C_E(1)          TYPE VALUE 'E',
            C_F(1)          TYPE VALUE 'F',
            C_G(1)          TYPE VALUE 'G',
            C_H(1)          TYPE VALUE 'H',
            C_I(1)          TYPE VALUE 'I',
            C_J(1)          TYPE VALUE 'J',
            C_K(1)          TYPE VALUE 'K',
            C_L(1)          TYPE VALUE 'L',
            C_M(1)          TYPE VALUE 'M',
            C_N(1)          TYPE VALUE 'N',
            C_O(1)          TYPE VALUE 'O',
            C_P(1)          TYPE VALUE 'P',
            C_Q(1)          TYPE VALUE 'Q',
            C_R(1)          TYPE VALUE 'R',
            C_S(1)          TYPE VALUE 'S',
            C_T(1)          TYPE VALUE 'T',
            C_U(1)          TYPE VALUE 'U',
            C_V(1)          TYPE VALUE 'V',
            C_W(1)          TYPE VALUE 'W',
            C_X(1)          TYPE VALUE 'X',
            C_Y(1)          TYPE VALUE 'Y',
            C_Z(1)          TYPE VALUE 'Z',

*           숫자
            C_1(1)          TYPE VALUE '1',
            C_2(1)          TYPE VALUE '2',
            C_3(1)          TYPE VALUE '3',
            C_4(1)          TYPE VALUE '4',
            C_5(1)          TYPE VALUE '5',
            C_6(1)          TYPE VALUE '6',
            C_7(1)          TYPE VALUE '7',
            C_8(1)          TYPE VALUE '8',
            C_9(1)          TYPE VALUE '9',
            C_0(1)          TYPE VALUE '0',
            C_0000000000(10VALUE '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.

***********************************************************************
* SELECTION SCREEN . [SELECT-OPTION & PARAMETERS ]
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS P_KOKRS LIKE CSKT-KOKRS DEFAULT 'VN20'.

SELECT-OPTIONS S_WERKS FOR AFRU-WERKS DEFAULT '7210'.

SELECT-OPTIONS S_BUDAT FOR COBK-BUDAT.

SELECT-OPTIONS S_AUFNR FOR AFRU-AUFNR.

SELECTION-SCREEN END   OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-002.
PARAMETERSP_RECY TYPE AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BL2. 



*&---------------------------------------------------------------------*
*&  Include           ZPPREWORK02_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  INIT_DATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INIT_DATE .
  DATA LV_DATE LIKE SY-DATUM.

  CLEAR S_BUDATS_BUDAT[].

  IF SY-DATUM+6(2>= 6.
* 6일 이후는 현재 월의 1일 ~ 말일자
    CONCATENATE SY-DATUM+0(6'01' INTO S_BUDAT-LOW.

    CALL FUNCTION 'LAST_DAY_OF_MONTHS'
      EXPORTING
        DAY_IN            SY-DATUM
      IMPORTING
        LAST_DAY_OF_MONTH S_BUDAT-HIGH.
  ELSE.
* 6일 이전에는 지난 월의 1일 ~ 말일자
    CALL FUNCTION 'OIL_GET_PREV_MONTH'
      EXPORTING
        I_DATE SY-DATUM
      IMPORTING
        E_DATE LV_DATE.

    CONCATENATE LV_DATE+0(6'01' INTO S_BUDAT-LOW.

    CALL FUNCTION 'LAST_DAY_OF_MONTHS'
      EXPORTING
        DAY_IN            LV_DATE
      IMPORTING
        LAST_DAY_OF_MONTH S_BUDAT-HIGH.
  ENDIF.

  APPEND S_BUDAT.
  CLEAR S_BUDAT.
ENDFORM.                    " INIT_DATE
*&---------------------------------------------------------------------*
*&      Form  GET_MASTER_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_MASTER_LIST .
  SELECT A~KOKRS  A~BELNR  A~REFBN A~AWORG A~BUDAT
         B~PAROB  B~MEGBTR B~MEINH
         C~WTGBTR C~TWAER
    INTO CORRESPONDING FIELDS OF TABLE GT_RESULT
   FROM COBK AS A INNER JOIN COEP AS B
     ON A~KOKRS B~KOKRS
    AND A~BELNR B~BELNR
   JOIN COVP AS C
     ON B~KOKRS C~KOKRS
    AND B~BELNR C~BELNR
    AND B~BUZEI C~BUZEI
  WHERE A~KOKRS EQ P_KOKRS
    AND A~BUDAT IN S_BUDAT
    AND A~VRGNG 'RKL'       "생산 확정 처리
    AND A~STFLG SPACE
    AND A~STOKZ SPACE
    AND B~PAROB <> 'OR'.
ENDFORM.                    " GET_MASTER_LIST
*&---------------------------------------------------------------------*
*&      Form  GT_LIST_EDIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GT_LIST_EDIT .
  DATA LV_AUFNR  LIKE AFRU-AUFNR,
         LV_LMNGA  LIKE AFRU-LMNGA,
         LV_RMNGA  LIKE AFRU-RMNGA,
         LV_MEINH  LIKE AFRU-MEINH,
         LV_RUECK  LIKE AFRU-RUECK,
         LV_RMZHL  LIKE AFRU-RMZHL,
         LV_WERKS  LIKE AFRU-WERKS,
         LV_VORNR  LIKE AFRU-VORNR,
         LV_MEILR  LIKE AFRU-MEILR.

  LOOP AT GT_RESULT.
    LV_RUECK GT_RESULT-REFBN.  "RUECK와 REFBN TYPE 맞지 않기 때문
    LV_RMZHL GT_RESULT-AWORG.

    SELECT SINGLE AUFNR LMNGA RMNGA MEINH WERKS VORNR MEILR
      INTO (LV_AUFNRLV_LMNGALV_RMNGALV_MEINHLV_WERKSLV_VORNR,LV_MEILR)
      FROM AFRU
     WHERE RUECK LV_RUECK
       AND RMZHL LV_RMZHL
       AND WERKS IN S_WERKS
       AND AUFNR IN S_AUFNR.

    IF SY-SUBRC 0.
      GT_RESULT-AUFNR LV_AUFNR.
      GT_RESULT-LMNGA LV_LMNGA.
      GT_RESULT-RMNGA LV_RMNGA.
      GT_RESULT-MEINS LV_MEINH.
      GT_RESULT-WERKS LV_WERKS.
      GT_RESULT-VORNR LV_VORNR.
      GT_RESULT-MEILR LV_MEILR.

      IF GT_RESULT-RMNGA > 0.
        GT_RESULT-ZREWORK 'X'.
      ENDIF.

      MODIFY GT_RESULT.
    ELSE.
      DELETE GT_RESULT.
    ENDIF.
    CLEAR GT_RESULT.

  ENDLOOP.

* Recycle이 체크된 경우 Rework 수량이 0인 것은 삭제
  IF P_RECY IS NOT INITIAL.
    DELETE GT_RESULT WHERE RMNGA IS INITIAL.
  ENDIF.

ENDFORM.                    " GT_LIST_EDIT
*&---------------------------------------------------------------------*
*&      Form  GET_DESC_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DESC_DATA.
  DATALT_RESULT LIKE TABLE OF GT_RESULT.
  DATALV_INDEX LIKE SY-TABIX.

  LT_RESULT[] GT_RESULT[].

  SORT LT_RESULT BY AUFNR.
  SELECT A~AUFNR B~MATNR B~MAKTX INTO CORRESPONDING FIELDS OF TABLE GT_MAT
   FROM AFPO AS JOIN MAKT AS B
      ON A~MATNR B~MATNR
     FOR ALL ENTRIES IN LT_RESULT
    WHERE A~AUFNR LT_RESULT-AUFNR
      AND B~SPRAS SY-LANGU.

  SELECT INTO CORRESPONDING FIELDS OF TABLE GT_CSKT
    FROM CSKT
  WHERE SPRAS  SY-LANGU
     AND KOKRS P_KOKRS.

  SELECT INTO CORRESPONDING FIELDS OF TABLE GT_CSLT
    FROM CSLT
  WHERE SPRAS SY-LANGU
    AND KOKRS P_KOKRS.

*GT_RESULT를 LOOP 돌리면서, 추가 필드 값 입력하기
  SORT GT_MAT  BY AUFNR.
  SORT GT_CSKT BY KOSTL.
  SORT GT_CSLT BY LSTAR.

  LOOP AT GT_RESULT.
    LV_INDEX SY-TABIX.

    IF GT_MAT[] IS NOT INITIAL.
      READ TABLE GT_MAT WITH KEY AUFNR GT_RESULT-AUFNR
                        BINARY SEARCH.
      IF SY-SUBRC 0.
        GT_RESULT-MATNR GT_MAT-MATNR.
        GT_RESULT-MAKTX GT_MAT-MAKTX.
      ENDIF.
    ENDIF.

    IF GT_CSKT[] IS NOT INITIAL.
      GT_RESULT-KOSTL GT_RESULT-PAROB+6(10).
      READ TABLE GT_CSKT WITH KEY KOSTL GT_RESULT-KOSTL
                         BINARY SEARCH.
      IF SY-SUBRC 0.
        GT_RESULT-KTEXT GT_CSKT-KTEXT.
      ENDIF.
    ENDIF.


    IF GT_CSLT[] IS NOT INITIAL.
      GT_RESULT-LSTAR GT_RESULT-PAROB+16(4).
      READ TABLE GT_CSLT WITH KEY LSTAR GT_RESULT-LSTAR
                         BINARY SEARCH.
      GT_RESULT-LTEXT GT_CSLT-LTEXT.
    ENDIF.

    MODIFY GT_RESULT INDEX LV_INDEX.
    CLEARGT_RESULTGT_MATGT_CSKTGT_CSLT.

  ENDLOOP.

ENDFORM.                    " GET_DESC_DATA
*&---------------------------------------------------------------------*
*&      Form  MAKE_HEADER_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM MAKE_HEADER_DATA .
  DATALT_RESULT LIKE TABLE OF GT_RESULT WITH HEADER LINE,
        LT_ZMSEG  LIKE TABLE OF ZMSEG     WITH HEADER LINE.

  DATA BEGIN OF LT_GR OCCURS 0,
          WERKS LIKE ZMSEG-WERKS,
          BUDAT LIKE ZMSEG-BUDAT,
          AUFNR LIKE ZMSEG-AUFNR,
          MENGE LIKE ZMSEG-MENGE.
  DATA END OF LT_GR.

  DATA BEGIN OF LT_REWORK_SUM OCCURS 0,
          WERKS LIKE AFRU-WERKS,
          BUDAT LIKE AFRU-BUDAT,
          AUFNR LIKE AFRU-AUFNR,
          VORNR LIKE AFRU-VORNR,
          RMNGA LIKE AFRU-RMNGA.
  DATA END OF LT_REWORK_SUM.

  DATA LV_AUFNR  LIKE AFRU-AUFNR,
         LV_RMNGA  LIKE AFRU-RMNGA,
         LV_RUECK  LIKE AFRU-RUECK,
         LV_RMZHL  LIKE AFRU-RMZHL,
         LV_WERKS  LIKE AFRU-WERKS,
         LV_VORNR  LIKE AFRU-VORNR.

***** GT_RESULT 값을 GT_HEAD_ALV에 입력하기.(플랜트/전기일자/오더별 한 레코드)
  CLEAR LT_RESULT[].
  LT_RESULT[] GT_RESULT[].

  SORT LT_RESULT BY BUDAT AUFNR ZREWORK.
  DELETE ADJACENT DUPLICATES FROM LT_RESULT COMPARING WERKS BUDAT AUFNR" ZREWORK.
  LOOP AT LT_RESULT.
    MOVE-CORRESPONDING LT_RESULT TO GT_HEADER.
    COLLECT GT_HEADERCLEAR GT_HEADER.
  ENDLOOP.

**** 정상생산량은 입고량으로 수정 함.(확정을 두번 이상한 경우 누락될 수 있음)
**** 플랜트/전기일자/생산오더별 입고량 정보 내부테이블 만들기(ZMSEG 아용)

  SELECT INTO CORRESPONDING FIELDS OF TABLE LT_ZMSEG
   FROM ZMSEG
   FOR ALL ENTRIES IN GT_HEADER
  WHERE WERKS IN S_WERKS
    AND BUDAT IN S_BUDAT
    AND BWART IN ('101','102')
    AND AUFNR EQ GT_HEADER-AUFNR.

  LOOP AT LT_ZMSEG.
    MOVE-CORRESPONDING LT_ZMSEG TO LT_GR.
    IF LT_ZMSEG-BWART '102'.
      LT_GR-MENGE LT_ZMSEG-MENGE * -).
    ENDIF.
    COLLECT LT_GRCLEAR LT_GR.
  ENDLOOP.

**** 전기일자/생산오더별 입고량으로 정상 생산량 Update하기
  LOOP AT GT_HEADER.
    CLEAR GT_HEADER-LMNGA.
    READ TABLE LT_GR WITH KEY WERKS GT_HEADER-WERKS
                              BUDAT GT_HEADER-BUDAT
                              AUFNR GT_HEADER-AUFNR.
    IF SY-SUBRC 0.
      GT_HEADER-LMNGA LT_GR-MENGE.
    ENDIF.
    MODIFY GT_HEADERCLEAR GT_HEADER.
  ENDLOOP.

**** Rework량은 전기일자/생산오더별 가장 큰 량을 가져와 UPDATE 함.
**** Rework이 생산오더에 대해 AFRU테이블에서 Rework량을 오더/Operation별로 가져와 Sum하기
  CLEAR LT_RESULT[].
  LT_RESULT[] GT_RESULT[].

  DELETE LT_RESULT WHERE ZREWORK SPACE.
  SORT LT_RESULT BY AUFNR.
  DELETE ADJACENT DUPLICATES FROM LT_RESULT COMPARING AUFNR.

  LOOP AT LT_RESULT.
    LV_RUECK LT_RESULT-REFBN.  "RUECK와 REFBN TYPE 맞지 않기 때문
    LV_RMZHL LT_RESULT-AWORG.
    SELECT SINGLE AUFNR RMNGA WERKS VORNR
       INTO (LV_AUFNRLV_RMNGALV_WERKSLV_VORNR )
       FROM AFRU
      WHERE RUECK LV_RUECK
        AND RMZHL LV_RMZHL.

    LT_REWORK_SUM-WERKS LV_WERKS.
    LT_REWORK_SUM-BUDAT LT_RESULT-BUDAT.
    LT_REWORK_SUM-AUFNR LV_AUFNR.
    LT_REWORK_SUM-VORNR LV_VORNR.
    LT_REWORK_SUM-RMNGA LV_RMNGA.
    COLLECT LT_REWORK_SUM.
  ENDLOOP.

  SORT LT_REWORK_SUM BY WERKS AUFNR VORNR RMNGA ASCENDING.

  LOOP AT GT_HEADER.
    CLEAR GT_HEADER-RMNGA.
    READ TABLE LT_REWORK_SUM WITH KEY WERKS GT_HEADER-WERKS
                                      BUDAT GT_HEADER-BUDAT
                                      AUFNR GT_HEADER-AUFNR.
    IF SY-SUBRC 0.
      GT_HEADER-RMNGA LT_REWORK_SUM-RMNGA.
    ENDIF.
    MODIFY GT_HEADERCLEAR GT_HEADER.
  ENDLOOP.

  SORT GT_HEADER BY WERKS BUDAT MATNR AUFNR.
ENDFORM.                    " MAKE_HEADER_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_DETAIL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DETAIL_DATA .
*GT_RESULT 값을 GT_DETAIL에 입력하기.
  CLEARGT_DETAILGT_DETAIL[].
  LOOP AT GT_RESULT.
    MOVE-CORRESPONDING GT_RESULT TO GT_DETAIL.
    COLLECT  GT_DETAIL.
    CLEAR GT_DETAIL.
  ENDLOOP.

  SORT GT_DETAIL BY WERKS BUDAT MATNR AUFNR LSTAR.
ENDFORM.                    " GET_DETAIL_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_SUM_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_SUM_DATA .
*GT_RESULT 값을 GT_SUM에 입력하기.
  CLEARGT_SUMGT_SUM[].
  LOOP AT GT_RESULT.
    MOVE-CORRESPONDING GT_RESULT TO GT_SUM.
    IF GT_RESULT-RMNGA > 0.   "REWORK
      GT_SUM-MEGBTR_W GT_RESULT-MEGBTR.
      GT_SUM-WTGBTR_W GT_RESULT-WTGBTR.
    ELSE.
      GT_SUM-MEGBTR_Y GT_RESULT-MEGBTR.
      GT_SUM-WTGBTR_Y GT_RESULT-WTGBTR.
    ENDIF.
    COLLECT GT_SUM.
    CLEAR GT_SUM.
  ENDLOOP.

  SORT GT_SUM BY WERKS MATNR LSTAR.

ENDFORM.                    " GET_SUM_DATA
*&---------------------------------------------------------------------*
*&      Form  METHOD_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_ROW_INDEX  text
*      -->P_E_COLUMN_FIELDNAME  text
*----------------------------------------------------------------------*
FORM METHOD_DOUBLE_CLICK  USING P_ROW    TYPE LVC_S_ROW-INDEX
                                P_COLUMN TYPE LVC_S_COL-FIELDNAME.

  DATA LT_HEADER   LIKE GT_HEADER.

  CHECK NOT P_ROW IS INITIAL.

  READ TABLE GT_HEADER INTO LT_HEADER INDEX P_ROW.
  CHECK SY-SUBRC AND NOT LT_HEADER IS INITIAL.

  CASE P_COLUMN.
    WHEN 'AUFNR'.
      READ TABLE GT_HEADER INDEX P_ROW.
      CHECK GT_HEADER-AUFNR NE SPACE.
      READ TABLE GT_HEADER WITH KEY AUFNR GT_HEADER-AUFNR
                                    RMNGA 0.
      GT_ITAB-LMNGA  GT_HEADER-LMNGA.
      GT_ITAB-MEINH  GT_HEADER-MEINS.

      READ TABLE GT_HEADER WITH KEY AUFNR GT_HEADER-AUFNR
                                    LMNGA 0.
      GT_ITAB-RMNGA  GT_HEADER-RMNGA.
      GT_ITAB-MEINH2 GT_HEADER-MEINS.
      PERFORM GET_YIELD_REWORK_ITEM.
      CALL SCREEN 400 STARTING AT ENDING AT 80 22.

    WHEN OTHERS.
  ENDCASE.

ENDFORM.                    " METHOD_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*&      Form  GET_YIELD_REWORK_ITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_YIELD_REWORK_ITEM .
  CLEARGT_RESULTGT_YIELDGT_REWORKGT_YIELD[]GT_REWORK[].
  LOOP AT GT_RESULT WHERE AUFNR EQ GT_HEADER-AUFNR.
    IF GT_RESULT-LMNGA > 0.
      MOVE-CORRESPONDING GT_RESULT TO GT_YIELD.
      APPEND GT_YIELD.
    ELSE.
      MOVE-CORRESPONDING GT_RESULT TO GT_REWORK.
      APPEND GT_REWORK.
    ENDIF.
    CLEARGT_YIELDGT_REWORK.
    SORT GT_YIELD  BY LSTAR.
    SORT GT_REWORK BY LSTAR.
  ENDLOOP.

ENDFORM.                    " GET_YIELD_REWORK_ITEM
*&---------------------------------------------------------------------*
*&      Form  GLOBAL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GLOBAL_DATA .
*  GT_ITAB-LMNGA,  = GT_HEADER-LMNGA.
*  GT_ITAB-RMNGA  = GT_HEADER-RMNGA.
*  GT_ITAB-MEINH  = GT_HEADER-MEINS.
*  GT_ITAB-MEINH2 = GT_HEADER-MEINS.
ENDFORM.                    " GLOBAL_DATA

*&---------------------------------------------------------------------*
*&  Include           ZPPREWORK02_F02
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      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_SORTGS_SORT[].
  PERFORM SORT_FIELD TABLES GS_SORT USING :
    1  C_WERKS  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    2  C_BUDAT  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    3  C_AUFNR  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    4  C_MATNR  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    5  C_MAKTX  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    6  C_MEINS  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    7  C_KOSTL  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    8  C_KTEXT  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    9  C_LSTAR  C_X C_ C_.

ENDFORM.                    " ALV_SORT
*&---------------------------------------------------------------------*
*&      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 .
  CLEARGS_FIELDCATGS_FIELDCAT[]G_POS,
         GT_FIELDCATGT_FIELDCAT[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     SY-REPID
      I_INTERNAL_TABNAME C_GT_TEMP
      I_INCLNAME         'ZPPREWORK02_TOP'
      I_BYPASSING_BUFFER 'X'
      I_BUFFER_ACTIVE    'X'
    CHANGING
      CT_FIELDCAT        GT_FIELDCAT[].

** Field CATALOG
*/ 1:Field Name,2:Discription,3:Data Type,4:Data Length,5:Fix,6:No Disp
*/ 7:Key 8:위치 9:Sum 10:Hotspot 11:F4 12:Edit 13:Checkbox 14:No Zero
*  15.currency 16 unit.

  LOOP AT GT_FIELDCAT.
    CASE GT_FIELDCAT-FIELDNAME.
      WHEN 'WERKS'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Plant'
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'BUDAT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Posting Date'
                GT_FIELDCAT-DATATYPE
                '12'
                C_X C_ C_ 'C' C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'AUFNR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Order No'
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'MATNR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Material'
                GT_FIELDCAT-DATATYPE
                '12'
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'MAKTX'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Mat. Desc'
                GT_FIELDCAT-DATATYPE
                '20'
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LMNGA'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Yield Qty'
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_X C_ C_ C_ C_X C_ C_ C_ C_ C_ C_ 'MEINS'.

      WHEN 'RMNGA'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Rework Qty'
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_X C_ C_ C_ C_X C_ C_ C_ C_ C_ C_ 'MEINS'.

      WHEN 'MEINS'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Qty. Unit'
                 GT_FIELDCAT-DATATYPE
                '8'
                 C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'KOSTL'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'Cost Center'
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'KTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                'C.C Desc'
                GT_FIELDCAT-DATATYPE
                '16'
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN OTHERS.
        PERFORM ALV_FIELDCAT_INSERT_RTN USING:
                GT_FIELDCAT-FIELDNAME
                GT_FIELDCAT-REPTEXT_DDIC
                GT_FIELDCAT-DATATYPE
                GT_FIELDCAT-INTLEN
                C_ C_ C_ C_ C_ C_ C_X C_ C_ C_ C_ C_.
    ENDCASE.
  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  SORT_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GS_SORT  text
*      -->P_1      text
*      -->P_C_WERKS  text
*      -->P_C_X  text
*      -->P_C_  text
*      -->P_C_  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_FIELDCAT_INSERT_RTN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_FIELDCAT_FIELDNAME  text
*      -->P_0091   text
*      -->P_GT_FIELDCAT_DATATYPE  text
*      -->P_GT_FIELDCAT_INTLEN  text
*      -->P_C_X  text
*      -->P_C_X  text
*      -->P_C_  text
*      -->P_0097   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.

  CLEARG_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.

  APPEND GS_FIELDCATALOG TO GS_FIELDCATCLEAR GS_FIELDCATALOG.

ENDFORM.                    " ALV_FIELDCAT_INSERT_RTN
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCATALOG2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATALOG2 .
  CLEARGS_FIELDCAT2GS_FIELDCAT2[]G_POS,
         GT_FIELDCAT2GT_FIELDCAT2[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     SY-REPID
      I_INTERNAL_TABNAME C_GT_TEMP2
      I_INCLNAME         'ZPPREWORK02_TOP'
*     I_BYPASSING_BUFFER = 'X'
*     I_BUFFER_ACTIVE    = 'X'
    CHANGING
      CT_FIELDCAT        GT_FIELDCAT2[].

** Field CATALOG
*/ 1:Field Name,2:Discription,3:Data Type,4:Data Length,5:Fix,6:No Disp
*/ 7:Key 8:위치 9:Sum 10:Hotspot 11:F4 12:Edit 13:Checkbox 14:No Zero
*  15.currency 16 unit.

  LOOP AT GT_FIELDCAT2.
    CASE GT_FIELDCAT2-FIELDNAME.
      WHEN 'WERKS'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Plant'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'BUDAT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Posting Date'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ 'C' C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'MATNR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Material'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'MAKTX'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Mat. Desc'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'AUFNR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Order No'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'MEINS'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
               'Qty. Unit'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'KOSTL'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Cost Center'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'KTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'C.C Desc'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LSTAR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Activity Type'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Act.Typ.Desc'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LMNGA'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Yield Qty'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'RMNGA'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Rework Qty'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Activity Qty'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEINH'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Activity Unit'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'WTGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Value'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ 'TWAER' C_.

      WHEN 'TWAER'.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                'Currency'
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.


      WHEN OTHERS.
        PERFORM ALV_FIELDCAT_INSERT_RTN2 USING:
                GT_FIELDCAT2-FIELDNAME
                GT_FIELDCAT2-REPTEXT_DDIC
                GT_FIELDCAT2-DATATYPE
                GT_FIELDCAT2-INTLEN
                C_ C_ C_ C_ C_ C_ C_X C_ C_ C_ C_ C_.
    ENDCASE.
  ENDLOOP.
ENDFORM.                    " ALV_FIELDCATALOG2
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT_INSERT_RTN2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_FIELDCAT2_FIELDNAME  text
*      -->P_GT_FIELDCAT2_REPTEXT_DDIC  text
*      -->P_GT_FIELDCAT2_DATATYPE  text
*      -->P_GT_FIELDCAT2_INTLEN  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_X  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*----------------------------------------------------------------------*
FORM ALV_FIELDCAT_INSERT_RTN2  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.

  CLEARG_POS.

  G_POS                         G_POS + 1.
  GS_FIELDCATALOG2-COL_POS      G_POS.      "colum position
  GS_FIELDCATALOG2-FIELDNAME    P_FNAM.      "Field name
  GS_FIELDCATALOG2-REPTEXT      P_TEXT.      "Field Description
  GS_FIELDCATALOG2-DATATYPE     P_TYPE.      "Data Type
  GS_FIELDCATALOG2-OUTPUTLEN    P_OUTLEN.    "Data Length
  GS_FIELDCATALOG2-FIX_COLUMN   P_FIXCOLUMN"Fix Column
  GS_FIELDCATALOG2-NO_OUT       P_NOOUT.     "Hidden Field
  GS_FIELDCATALOG2-KEY          P_KEY.       "Key.
  GS_FIELDCATALOG2-JUST         P_JUST.      "위치.
  GS_FIELDCATALOG2-DO_SUM       P_SUM.       "Do sum.
  GS_FIELDCATALOG2-HOTSPOT      P_HOTSPOT.   "Hotspot.
  GS_FIELDCATALOG2-F4AVAILABL   P_F4.        "Search help
  GS_FIELDCATALOG2-EDIT         P_EDIT.      "Edit.
  GS_FIELDCATALOG2-CHECKBOX     P_BOX.       "BOX.
  GS_FIELDCATALOG2-NO_ZERO      P_ZERO.      "NO-ZERO.
  GS_FIELDCATALOG2-CFIELDNAME   P_CURR.      "NO-ZERO.
  GS_FIELDCATALOG2-QFIELDNAME   P_UNIT.      "unit.

  APPEND GS_FIELDCATALOG2 TO GS_FIELDCAT2CLEAR GS_FIELDCATALOG2.

ENDFORM.                    " ALV_FIELDCAT_INSERT_RTN2
*&---------------------------------------------------------------------*
*&      Form  ALV_SORT3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_SORT3 .
  CLEAR GS_SORTGS_SORT[].
  PERFORM SORT_FIELD TABLES GS_SORT USING :
    1  C_WERKS  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    2  C_MATNR  C_X C_ C_.

  PERFORM SORT_FIELD TABLES GS_SORT USING :
    3  C_MAKTX  C_X C_ C_.

ENDFORM.                    " ALV_SORT3
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCATALOG3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATALOG3 .
  CLEARGS_FIELDCAT3GS_FIELDCAT3[]G_POS,
         GT_FIELDCAT3GT_FIELDCAT3[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     SY-REPID
      I_INTERNAL_TABNAME C_GT_TEMP3
      I_INCLNAME         'ZPPREWORK02_TOP'
*     I_BYPASSING_BUFFER = 'X'
*     I_BUFFER_ACTIVE    = 'X'
    CHANGING
      CT_FIELDCAT        GT_FIELDCAT3[].

** Field CATALOG
*/ 1:Field Name,2:Discription,3:Data Type,4:Data Length,5:Fix,6:No Disp
*/ 7:Key 8:위치 9:Sum 10:Hotspot 11:F4 12:Edit 13:Checkbox 14:No Zero
*  15.currency 16 unit.

  LOOP AT GT_FIELDCAT3.
    CASE GT_FIELDCAT3-FIELDNAME.
      WHEN 'WERKS'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Plant'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'MATNR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Material'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'MAKTX'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Mat. Desc'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'KOSTL'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Cost Center'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_X C_ C_.

      WHEN 'KTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'C.C Desc'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LSTAR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Activity Type'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Act.Typ.Desc'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'MEGBTR_Y'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Yield Activity Qty'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEGBTR_W'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Recycle Activity Qty'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEINH'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Activity Unit'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'WTGBTR_Y'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Yield Value'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ 'TWAER' C_.

      WHEN 'WTGBTR_W'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Recyle Value'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ 'TWAER' C_.

      WHEN 'TWAER'.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                'Currency'
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.


      WHEN OTHERS.
        PERFORM ALV_FIELDCAT_INSERT_RTN3 USING:
                GT_FIELDCAT3-FIELDNAME
                GT_FIELDCAT3-REPTEXT_DDIC
                GT_FIELDCAT3-DATATYPE
                GT_FIELDCAT3-INTLEN
                C_ C_ C_ C_ C_ C_ C_X C_ C_ C_ C_ C_.
    ENDCASE.
  ENDLOOP.
ENDFORM.                    " ALV_FIELDCATALOG3
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT_INSERT_RTN3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_FIELDCAT3_FIELDNAME  text
*      -->P_1155   text
*      -->P_GT_FIELDCAT3_DATATYPE  text
*      -->P_GT_FIELDCAT3_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_RTN3  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.

  CLEARG_POS.

  G_POS                         G_POS + 1.
  GS_FIELDCATALOG3-COL_POS      G_POS.      "colum position
  GS_FIELDCATALOG3-FIELDNAME    P_FNAM.      "Field name
  GS_FIELDCATALOG3-REPTEXT      P_TEXT.      "Field Description
  GS_FIELDCATALOG3-DATATYPE     P_TYPE.      "Data Type
  GS_FIELDCATALOG3-OUTPUTLEN    P_OUTLEN.    "Data Length
  GS_FIELDCATALOG3-FIX_COLUMN   P_FIXCOLUMN"Fix Column
  GS_FIELDCATALOG3-NO_OUT       P_NOOUT.     "Hidden Field
  GS_FIELDCATALOG3-KEY          P_KEY.       "Key.
  GS_FIELDCATALOG3-JUST         P_JUST.      "위치.
  GS_FIELDCATALOG3-DO_SUM       P_SUM.       "Do sum.
  GS_FIELDCATALOG3-HOTSPOT      P_HOTSPOT.   "Hotspot.
  GS_FIELDCATALOG3-F4AVAILABL   P_F4.        "Search help
  GS_FIELDCATALOG3-EDIT         P_EDIT.      "Edit.
  GS_FIELDCATALOG3-CHECKBOX     P_BOX.       "BOX.
  GS_FIELDCATALOG3-NO_ZERO      P_ZERO.      "NO-ZERO.
  GS_FIELDCATALOG3-CFIELDNAME   P_CURR.      "NO-ZERO.
  GS_FIELDCATALOG3-QFIELDNAME   P_UNIT.      "unit.

  APPEND GS_FIELDCATALOG3 TO GS_FIELDCAT3CLEAR GS_FIELDCATALOG3.

ENDFORM.                    " ALV_FIELDCAT_INSERT_RTN3
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCATALOG4
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATALOG4 .
  CLEARGS_FIELDCAT4GS_FIELDCAT4[]G_POS,
         GT_FIELDCAT4GT_FIELDCAT4[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     SY-REPID
      I_INTERNAL_TABNAME C_GT_TEMP4
      I_INCLNAME         'ZPPREWORK02_TOP'
*     I_BYPASSING_BUFFER = 'X'
*     I_BUFFER_ACTIVE    = 'X'
    CHANGING
      CT_FIELDCAT        GT_FIELDCAT4[].

** Field CATALOG
*/ 1:Field Name,2:Discription,3:Data Type,4:Data Length,5:Fix,6:No Disp
*/ 7:Key 8:위치 9:Sum 10:Hotspot 11:F4 12:Edit 13:Checkbox 14:No Zero
*  15.currency 16 unit.

  LOOP AT GT_FIELDCAT4.
    CASE GT_FIELDCAT4-FIELDNAME.
      WHEN 'LSTAR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Activity Type'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Act.Typ.Desc'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'MEGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Activity Qty'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEINH'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Activity Unit'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'WTGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Value'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ 'TWAER' C_.

      WHEN 'TWAER'.
        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
                GT_FIELDCAT4-FIELDNAME
                'Currency'
                GT_FIELDCAT4-DATATYPE
                GT_FIELDCAT4-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.


*      WHEN OTHERS.
*        PERFORM ALV_FIELDCAT_INSERT_RTN4 USING:
*                GT_FIELDCAT4-FIELDNAME
*                GT_FIELDCAT4-REPTEXT_DDIC
*                GT_FIELDCAT4-DATATYPE
*                GT_FIELDCAT4-INTLEN
*                C_ C_ C_ C_ C_ C_ C_X C_ C_ C_ C_ C_.
    ENDCASE.
  ENDLOOP.
ENDFORM.                    " ALV_FIELDCATALOG4
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCATALOG5
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATALOG5 .
  CLEARGS_FIELDCAT5GS_FIELDCAT5[]G_POS,
         GT_FIELDCAT5GT_FIELDCAT5[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     SY-REPID
      I_INTERNAL_TABNAME C_GT_TEMP5
      I_INCLNAME         'ZPPREWORK02_TOP'
*     I_BYPASSING_BUFFER = 'X'
*     I_BUFFER_ACTIVE    = 'X'
    CHANGING
      CT_FIELDCAT        GT_FIELDCAT5[].

** Field CATALOG
*/ 1:Field Name,2:Discription,3:Data Type,4:Data Length,5:Fix,6:No Disp
*/ 7:Key 8:위치 9:Sum 10:Hotspot 11:F4 12:Edit 13:Checkbox 14:No Zero
*  15.currency 16 unit.

  LOOP AT GT_FIELDCAT5.
    CASE GT_FIELDCAT5-FIELDNAME.
      WHEN 'LSTAR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Activity Type'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'LTEXT'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Act.Typ.Desc'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'MEGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Activity Qty'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ 'MEINH'.

      WHEN 'MEINH'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Activity Unit'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

      WHEN 'WTGBTR'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Value'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ 'TWAER' C_.

      WHEN 'TWAER'.
        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
                GT_FIELDCAT5-FIELDNAME
                'Currency'
                GT_FIELDCAT5-DATATYPE
                GT_FIELDCAT5-INTLEN
                C_X C_ C_ C_ C_ C_ C_ C_ C_ C_ C_ C_.

*      WHEN OTHERS.
*        PERFORM ALV_FIELDCAT_INSERT_RTN5 USING:
*                GT_FIELDCAT5-FIELDNAME
*                GT_FIELDCAT5-REPTEXT_DDIC
*                GT_FIELDCAT5-DATATYPE
*                GT_FIELDCAT5-INTLEN
*                C_ C_ C_ C_ C_ C_ C_X C_ C_ C_ C_ C_.
    ENDCASE.
  ENDLOOP.
ENDFORM.                    " ALV_FIELDCATALOG5
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT_INSERT_RTN5
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_FIELDCAT5_FIELDNAME  text
*      -->P_GT_FIELDCAT5_REPTEXT_DDIC  text
*      -->P_GT_FIELDCAT5_DATATYPE  text
*      -->P_GT_FIELDCAT5_INTLEN  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_X  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*      -->P_C_  text
*----------------------------------------------------------------------*
FORM ALV_FIELDCAT_INSERT_RTN5  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.

  CLEARG_POS.

  G_POS                         G_POS + 1.
  GS_FIELDCATALOG5-COL_POS      G_POS.      "colum position
  GS_FIELDCATALOG5-FIELDNAME    P_FNAM.      "Field name
  GS_FIELDCATALOG5-REPTEXT      P_TEXT.      "Field Description
  GS_FIELDCATALOG5-DATATYPE     P_TYPE.      "Data Type
  GS_FIELDCATALOG5-OUTPUTLEN    P_OUTLEN.    "Data Length
  GS_FIELDCATALOG5-FIX_COLUMN   P_FIXCOLUMN"Fix Column
  GS_FIELDCATALOG5-NO_OUT       P_NOOUT.     "Hidden Field
  GS_FIELDCATALOG5-KEY          P_KEY.       "Key.
  GS_FIELDCATALOG5-JUST         P_JUST.      "위치.
  GS_FIELDCATALOG5-DO_SUM       P_SUM.       "Do sum.
  GS_FIELDCATALOG5-HOTSPOT      P_HOTSPOT.   "Hotspot.
  GS_FIELDCATALOG5-F4AVAILABL   P_F4.        "Search help
  GS_FIELDCATALOG5-EDIT         P_EDIT.      "Edit.
  GS_FIELDCATALOG5-CHECKBOX     P_BOX.       "BOX.
  GS_FIELDCATALOG5-NO_ZERO      P_ZERO.      "NO-ZERO.
  GS_FIELDCATALOG5-CFIELDNAME   P_CURR.      "NO-ZERO.
  GS_FIELDCATALOG5-QFIELDNAME   P_UNIT.      "unit.

  APPEND GS_FIELDCATALOG5 TO GS_FIELDCAT5CLEAR GS_FIELDCATALOG5.

ENDFORM.                    " ALV_FIELDCAT_INSERT_RTN5
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT_INSERT_RTN4
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_FIELDCAT2_FIELDNAME  text
*      -->P_1570   text
*      -->P_GT_FIELDCAT2_DATATYPE  text
*      -->P_GT_FIELDCAT2_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_RTN4  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.

  CLEARG_POS.

  G_POS                         G_POS + 1.
  GS_FIELDCATALOG4-COL_POS      G_POS.      "colum position
  GS_FIELDCATALOG4-FIELDNAME    P_FNAM.      "Field name
  GS_FIELDCATALOG4-REPTEXT      P_TEXT.      "Field Description
  GS_FIELDCATALOG4-DATATYPE     P_TYPE.      "Data Type
  GS_FIELDCATALOG4-OUTPUTLEN    P_OUTLEN.    "Data Length
  GS_FIELDCATALOG4-FIX_COLUMN   P_FIXCOLUMN"Fix Column
  GS_FIELDCATALOG4-NO_OUT       P_NOOUT.     "Hidden Field
  GS_FIELDCATALOG4-KEY          P_KEY.       "Key.
  GS_FIELDCATALOG4-JUST         P_JUST.      "위치.
  GS_FIELDCATALOG4-DO_SUM       P_SUM.       "Do sum.
  GS_FIELDCATALOG4-HOTSPOT      P_HOTSPOT.   "Hotspot.
  GS_FIELDCATALOG4-F4AVAILABL   P_F4.        "Search help
  GS_FIELDCATALOG4-EDIT         P_EDIT.      "Edit.
  GS_FIELDCATALOG4-CHECKBOX     P_BOX.       "BOX.
  GS_FIELDCATALOG4-NO_ZERO      P_ZERO.      "NO-ZERO.
  GS_FIELDCATALOG4-CFIELDNAME   P_CURR.      "NO-ZERO.
  GS_FIELDCATALOG4-QFIELDNAME   P_UNIT.      "unit.

  APPEND GS_FIELDCATALOG4 TO GS_FIELDCAT4CLEAR GS_FIELDCATALOG4.

ENDFORM.                    " ALV_FIELDCAT_INSERT_RTN4


*&---------------------------------------------------------------------*
*&  Include           ZPPREWORK02_O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '100'.
  SET TITLEBAR '100'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  ALV_HEADER  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE ALV_HEADER OUTPUT.
*  DATA : L_TEXT  TYPE SDYDO_TEXT_ELEMENT,
*         L_KURSF(20)                    ,
*         L_LTEXT LIKE TCURT-LTEXT       ,
*         L_VTEXT LIKE TKVST-VTEXT       .
*
*  CHECK G_DD_DOC IS INITIAL.
*  CREATE OBJECT G_DD_DOC
*    EXPORTING
*      BACKGROUND_COLOR = 2.
*
*  WRITE : 'GLS Goods Movement Monitoring' TO L_TEXT.
*
*  CALL METHOD G_DD_DOC->ADD_TEXT
*    EXPORTING
*      TEXT      = L_TEXT
*      SAP_STYLE = CL_DD_DOCUMENT=>HEADING.
*
**  WRITE : SY-DATUM TO L_TEXT.
*
*  CONCATENATE 'Baseline Date : ' sy-datum(4) '/' sy-datum+4(2) '/'
*               sy-datum+6(2) INTO L_TEXT SEPARATED BY SPACE.
*
*  CALL METHOD G_DD_DOC->NEW_LINE.
*  CALL METHOD G_DD_DOC->ADD_TEXT
*    EXPORTING
*      TEXT      = L_TEXT
*      SAP_STYLE = CL_DD_DOCUMENT=>HEADING.
*
*  CALL METHOD G_DD_DOC->NEW_LINE.
*  CALL METHOD G_DD_DOC->ADD_TEXT
*    EXPORTING
*      TEXT      = L_TEXT
*      SAP_STYLE = CL_DD_DOCUMENT=>HEADING. "MEDIUM.
*
*  CALL METHOD G_DD_DOC->DISPLAY_DOCUMENT
*    EXPORTING
*      CONTAINER = 'G_ALV_GRID3'.
ENDMODULE.                 " ALV_HEADER  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_HEADER[]
        IT_FIELDCATALOG      GS_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  STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
  SET PF-STATUS '200'.
  SET TITLEBAR '200'.

ENDMODULE.                 " STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  ALV_DISPLAY_200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE ALV_DISPLAY_200 OUTPUT.
  IF GS_CUSTOM_CONTAINER2 IS INITIAL.
    IF NOT GS_CUSTOM_CONTAINER2 IS INITIAL.
      CALL METHOD GS_CUSTOM_CONTAINER2->FREE.
    ENDIF.

    CREATE OBJECT GS_CUSTOM_CONTAINER2
      EXPORTING
        CONTAINER_NAME C_CONTAINER2.
    CREATE OBJECT GS_ALV_GRID2
      EXPORTING
        I_PARENT GS_CUSTOM_CONTAINER2.

    PERFORM ALV_VARIANT.       "<-- ALV Variant
    PERFORM ALV_SORT.          "<-- SORT
    PERFORM ALV_LAYOUT.        "<-- General Layout
    PERFORM ALV_FIELDCATALOG2.    "<-- Field Attribute
    PERFORM ALV_TOOLBAR_EXCLUDE"CHANGING G_EXCLUDE. "<-- Toolbar Dim

    CALL METHOD GS_ALV_GRID2->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_DETAIL[]
        IT_FIELDCATALOG      GS_FIELDCAT2[]
        IT_SORT              GS_SORT.

    CREATE OBJECT GS_EVENT_RECEIVER.

*--// ALV 변경사항 관리
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_DATA_CHANGED  FOR GS_ALV_GRID2.

*--// HOTSPOT click event
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GS_ALV_GRID2.

*--// DOUBLE click event
    SET HANDLER
      GS_EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GS_ALV_GRID2.

  ELSE.
    GS_STBL-ROW C_X.  "행기준 안정적 최신표시
    GS_STBL-COL C_X.  "열기준 정적 최신표시
    CALL METHOD GS_ALV_GRID2->REFRESH_TABLE_DISPLAY
      EXPORTING
        IS_STABLE GS_STBL.
  ENDIF.

***//EDIT (0: EIDT 불가, 1: EDIT 가능)
  CALL METHOD GS_ALV_GRID2->SET_READY_FOR_INPUT
    EXPORTING
      I_READY_FOR_INPUT 0.

* 변경시점에 이벤트발생...........................
* ENTER시점은 CL_GUI_ALV_GRID=>MC_EVT_ENTER로.....
  CALL METHOD GS_ALV_GRID2->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_GRID2.

  CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.                 " ALV_DISPLAY_200  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0300  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0300 OUTPUT.
  SET PF-STATUS '300'.
  SET TITLEBAR '300'.

ENDMODULE.                 " STATUS_0300  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  ALV_DISPLAY_300  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE ALV_DISPLAY_300 OUTPUT.
  IF GS_CUSTOM_CONTAINER3 IS INITIAL.
    IF NOT GS_CUSTOM_CONTAINER3 IS INITIAL.
      CALL METHOD GS_CUSTOM_CONTAINER3->FREE.
    ENDIF.

    CREATE OBJECT GS_CUSTOM_CONTAINER3
      EXPORTING
        CONTAINER_NAME C_CONTAINER3.
    CREATE OBJECT GS_ALV_GRID3
      EXPORTING
        I_PARENT GS_CUSTOM_CONTAINER3.

    PERFORM ALV_VARIANT.       "<-- ALV Variant
    PERFORM ALV_SORT3.         "<-- SORT
    PERFORM ALV_LAYOUT.        "<-- General Layout
    PERFORM ALV_FIELDCATALOG3.    "<-- Field Attribute
    PERFORM ALV_TOOLBAR_EXCLUDE"CHANGING G_EXCLUDE. "<-- Toolbar Dim

    CALL METHOD GS_ALV_GRID3->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_SUM[]
        IT_FIELDCATALOG      GS_FIELDCAT3[]
        IT_SORT              GS_SORT.

    CREATE OBJECT GS_EVENT_RECEIVER.

*--// ALV 변경사항 관리
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_DATA_CHANGED  FOR GS_ALV_GRID3.

*--// HOTSPOT click event
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GS_ALV_GRID3.

*--// DOUBLE click event
    SET HANDLER
      GS_EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GS_ALV_GRID3.

  ELSE.
    GS_STBL-ROW C_X.  "행기준 안정적 최신표시
    GS_STBL-COL C_X.  "열기준 정적 최신표시
    CALL METHOD GS_ALV_GRID3->REFRESH_TABLE_DISPLAY
      EXPORTING
        IS_STABLE GS_STBL.
  ENDIF.

***//EDIT (0: EIDT 불가, 1: EDIT 가능)
  CALL METHOD GS_ALV_GRID3->SET_READY_FOR_INPUT
    EXPORTING
      I_READY_FOR_INPUT 0.

* 변경시점에 이벤트발생...........................
* ENTER시점은 CL_GUI_ALV_GRID=>MC_EVT_ENTER로.....
  CALL METHOD GS_ALV_GRID3->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_GRID3.

  CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.                 " ALV_DISPLAY_300  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0400  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0400 OUTPUT.
  SET PF-STATUS '400'.
  SET TITLEBAR '400'.
  PERFORM GLOBAL_DATA.

ENDMODULE.                 " STATUS_0400  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  ALV_DISPLAY_400  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE ALV_DISPLAY_400 OUTPUT.
************************************************************************
* YIELD SCREEN
************************************************************************
  IF GS_CUSTOM_CONTAINER4 IS INITIAL.
    IF NOT GS_CUSTOM_CONTAINER4 IS INITIAL.
      CALL METHOD GS_CUSTOM_CONTAINER4->FREE.
    ENDIF.

    CREATE OBJECT GS_CUSTOM_CONTAINER4
      EXPORTING
        CONTAINER_NAME C_CONTAINER4.
    CREATE OBJECT GS_ALV_GRID4
      EXPORTING
        I_PARENT GS_CUSTOM_CONTAINER4.

    PERFORM ALV_VARIANT.       "<-- ALV Variant
    PERFORM ALV_LAYOUT.        "<-- General Layout
    PERFORM ALV_FIELDCATALOG4.    "<-- Field Attribute
    PERFORM ALV_TOOLBAR_EXCLUDE"CHANGING G_EXCLUDE. "<-- Toolbar Dim

    CALL METHOD GS_ALV_GRID4->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_YIELD[]
        IT_FIELDCATALOG      GS_FIELDCAT4[]
        IT_SORT              GS_SORT.

    CREATE OBJECT GS_EVENT_RECEIVER.

*--// ALV 변경사항 관리
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_DATA_CHANGED  FOR GS_ALV_GRID4.

*--// HOTSPOT click event
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GS_ALV_GRID4.

*--// DOUBLE click event
    SET HANDLER
      GS_EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GS_ALV_GRID4.

  ELSE.
    GS_STBL-ROW C_X.  "행기준 안정적 최신표시
    GS_STBL-COL C_X.  "열기준 정적 최신표시
    CALL METHOD GS_ALV_GRID4->REFRESH_TABLE_DISPLAY
      EXPORTING
        IS_STABLE GS_STBL.
  ENDIF.

************************************************************************
* REWORK SCREEN
************************************************************************
  IF GS_CUSTOM_CONTAINER5 IS INITIAL.
    IF NOT GS_CUSTOM_CONTAINER5 IS INITIAL.
      CALL METHOD GS_CUSTOM_CONTAINER5->FREE.
    ENDIF.

    CREATE OBJECT GS_CUSTOM_CONTAINER5
      EXPORTING
        CONTAINER_NAME C_CONTAINER5.
    CREATE OBJECT GS_ALV_GRID5
      EXPORTING
        I_PARENT GS_CUSTOM_CONTAINER5.

    PERFORM ALV_VARIANT.       "<-- ALV Variant
*    PERFORM ALV_SORT3.         "<-- SORT
    PERFORM ALV_LAYOUT.        "<-- General Layout
    PERFORM ALV_FIELDCATALOG5.    "<-- Field Attribute
    PERFORM ALV_TOOLBAR_EXCLUDE"CHANGING G_EXCLUDE. "<-- Toolbar Dim

    CALL METHOD GS_ALV_GRID5->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_REWORK[]
        IT_FIELDCATALOG      GS_FIELDCAT5[]
        IT_SORT              GS_SORT.

    CREATE OBJECT GS_EVENT_RECEIVER.

*--// ALV 변경사항 관리
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_DATA_CHANGED  FOR GS_ALV_GRID5.

*--// HOTSPOT click event
    SET HANDLER
       GS_EVENT_RECEIVER->HANDLE_HOTSPOT_CLICK FOR GS_ALV_GRID5.




*--// DOUBLE click event
    SET HANDLER
      GS_EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GS_ALV_GRID5.

  ELSE.
    GS_STBL-ROW C_X.  "행기준 안정적 최신표시
    GS_STBL-COL C_X.  "열기준 정적 최신표시
    CALL METHOD GS_ALV_GRID5->REFRESH_TABLE_DISPLAY
      EXPORTING
        IS_STABLE GS_STBL.
  ENDIF.

***//EDIT (0: EIDT 불가, 1: EDIT 가능)
  CALL METHOD GS_ALV_GRID5->SET_READY_FOR_INPUT
    EXPORTING
      I_READY_FOR_INPUT 0.

* 변경시점에 이벤트발생...........................
* ENTER시점은 CL_GUI_ALV_GRID=>MC_EVT_ENTER로.....
  CALL METHOD GS_ALV_GRID5->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_GRID5.

  CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.                 " ALV_DISPLAY_400  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  GET_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE GET_DATA INPUT.
  GT_ITAB-LMNGA  GT_HEADER-LMNGA.
  GT_ITAB-RMNGA  GT_HEADER-RMNGA.
  GT_ITAB-MEINH  GT_HEADER-MEINS.
  GT_ITAB-MEINH2 GT_HEADER-MEINS.
ENDMODULE.                 " GET_DATA  INPUT


*&---------------------------------------------------------------------*
*&  Include           ZPPREWORK02_I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
  CASE SY-UCOMM.
    WHEN C_BACK OR C_CANC.
      LEAVE TO SCREEN 0.
    WHEN C_EXIT.
      LEAVE PROGRAM.
  ENDCASE.

ENDMODULE.                 " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  CASE SY-UCOMM.
    WHEN C_EXPAND.
      PERFORM GET_DETAIL_DATA.

      IF GT_DETAIL[] IS INITIAL.
        MESSAGE S000 WITH 'No data Found!!'.
      ELSE.
        CALL SCREEN 200.
      ENDIF.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
  CASE SY-UCOMM.
    WHEN C_COLLAP.
      LEAVE TO SCREEN 0.
    WHEN C_ACTSUM.
      PERFORM GET_SUM_DATA.

      IF GT_SUM[] IS INITIAL.
        MESSAGE S000 WITH 'No data Found!!'.
      ELSE.
        CALL SCREEN 300.
      ENDIF.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0300  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0300 INPUT.
*  CASE SY-UCOMM.
*    WHEN C_BACK OR C_CANC.
**      CALL METHOD GS_CUSTOM_CONTAINER3->FREE.
**      CALL METHOD CL_GUI_CFW=>FLUSH.
*      LEAVE TO SCREEN 0.
*    WHEN C_EXIT.
*      LEAVE PROGRAM.
*  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0300  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0400  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0400 INPUT.
  CASE SY-UCOMM.
    WHEN 'CLOSE' OR 'END'.
      LEAVE TO SCREEN 0.
    WHEN C_EXIT.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0400  INPUT