*&---------------------------------------------------------------------*
*& Report ZFIR093
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2018-10-16
*& Program Type : Report
*& Description : 恒锋调整报表
*&---------------------------------------------------------------------*
REPORT ZFIR093.
*&---------------------------------------------------------------------*
*& 包含 ZFIR092_TOP
*&---------------------------------------------------------------------*
TABLES:TVKO,VBAK,EKKN,VBAP.
TYPE-POOLS:SLIS.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
TYPES: BEGIN OF GTS_DATA,
VLFAG TYPE C, "标记字段
KUNNR TYPE VBAK-KUNNR, "客户
NAME1 TYPE KNA1-NAME1, "客户描述
AUART TYPE VBAK-AUART, "订单类型
VBELN TYPE VBAK-VBELN, "销售订单
POSNR TYPE VBAP-POSNR, "SO行项目
KWMENG TYPE VBAP-KWMENG, "订单数量
VRKME TYPE VBAP-VRKME, "基本单位
MATNR TYPE VBAP-MATNR, "物料代码
ARKTX TYPE VBAP-ARKTX, "物料描述
ZKPSL TYPE LIPS-LFIMG, "开票数量
ZTHSL TYPE LIPS-LFIMG, "退货数量
ZTZSL TYPE LIPS-LFIMG, "调整数量
EBELN TYPE EKKN-EBELN, "采购订单
EBELP TYPE EKKN-EBELP, "PO行项目
MENGE TYPE EKPO-MENGE, "PO数量
NETWR TYPE EKPO-NETWR, "PO净值
RKZSL TYPE EKBE-MENGE, "入库总数量
RKZJE TYPE EKBE-DMBTR, "入库暂估金额
POKPS TYPE EKBE-MENGE, "PO开票数量
UPOKP TYPE EKBE-MENGE, "PO未开票数量
UKPJE TYPE EKBE-DMBTR, "未开票金额(调整金额)
LIFNR TYPE EKKO-LIFNR, "供应商
WERKS TYPE EKPO-WERKS, "工厂
END OF GTS_DATA.
DATA: GT_DATA TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GS_DATA TYPE GTS_DATA .
TYPES: BEGIN OF GTS_ZVM,
VGBEL TYPE VBAP-VGBEL, "参考单据的单据编号
VGPOS TYPE VBAP-VGPOS, "参考项目的项目号
VBELN TYPE VBAP-VBELN, "销售凭证
POSNR TYPE VBAP-POSNR, "销售凭证项目
AUART TYPE VBAK-AUART, "订单类型
LFIMG TYPE LIPS-LFIMG, "DN过账数量
END OF GTS_ZVM.
DATA: GT_ZVM2 TYPE TABLE OF GTS_ZVM WITH HEADER LINE.
DATA: GT_ZVM2_C TYPE TABLE OF GTS_ZVM WITH HEADER LINE.
DATA: GT_ZVM4 TYPE TABLE OF GTS_ZVM WITH HEADER LINE.
DATA: GT_ZVM4_C TYPE TABLE OF GTS_ZVM WITH HEADER LINE.
TYPES: BEGIN OF GTS_EKBE,
EBELN TYPE EKBE-EBELN , "采购订单
EBELP TYPE EKBE-EBELP , "PO行项目
VGABE TYPE EKBE-VGABE , "业务处理/事件类型,采购订单的历史记录
BUDAT TYPE EKBE-BUDAT , "截止日期
MENGE TYPE EKBE-MENGE , "数量
SHKZG TYPE EKBE-SHKZG , "借方/贷方标识
DMBTR TYPE EKBE-DMBTR , "按本位币计的金额
RKZSL TYPE EKBE-MENGE, "入库总数量
RKZJE TYPE EKBE-DMBTR, "入库暂估金额
POKPS TYPE EKBE-MENGE, "PO开票数量
UPOKP TYPE EKBE-MENGE, "PO未开票数量
UKPJE TYPE EKBE-DMBTR, "未开票金额(调整金额)
END OF GTS_EKBE.
DATA: GT_EKBE TYPE TABLE OF GTS_EKBE WITH HEADER LINE.
DATA: GT_EKBE_C TYPE TABLE OF GTS_EKBE WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_BUKRS FOR TVKO-BUKRS MODIF ID C1 OBLIGATORY . "公司代码
PARAMETERS: P_AUART LIKE VBAK-AUART MODIF ID M1 DEFAULT 'ZVM1', "订单类型
P_AUDAT LIKE VBAK-AUDAT MODIF ID C1 OBLIGATORY . "截止日期
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN MODIF ID C1, "销售订单号
S_MATNR FOR VBAP-MATNR MODIF ID C1, "物料编码
S_EBELN FOR EKKN-EBELN MODIF ID C1. "采购订单号
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& 包含 ZFIR092_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_EXCLUDE_OPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_EXCLUDE_OPTION .
** Define the object to be passed to the RESTRICTION parameter
*DATA RESTRICT TYPE SSCR_RESTRICT.
*
** Auxiliary objects for filling RESTRICT
*DATA : OPTLIST TYPE SSCR_OPT_LIST,
* ASS TYPE SSCR_ASS.
*
** 限制MATNR参数只能使用‘EQ’ 和‘BT’.
* OPTLIST-NAME = 'OBJECTKEY1'.
* OPTLIST-OPTIONS-EQ = 'X'.
* OPTLIST-OPTIONS-BT = 'X'.
* APPEND OPTLIST TO RESTRICT-OPT_LIST_TAB.
*
* ASS-KIND = 'S'.
* ASS-NAME = 'S_MONAT'.
* ASS-SG_MAIN = 'I'.
* ASS-SG_ADDY = SPACE.
* ASS-OP_MAIN = 'OBJECTKEY1'.
* APPEND ASS TO RESTRICT-ASS_TAB.
*
* CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
* EXPORTING
* RESTRICTION = RESTRICT
* EXCEPTIONS
* TOO_LATE = 1
* REPEATED = 2
* SELOPT_WITHOUT_OPTIONS = 3
* SELOPT_WITHOUT_SIGNS = 4
* INVALID_SIGN = 5
* EMPTY_OPTION_LIST = 6
* INVALID_KIND = 7
* REPEATED_KIND_A = 8
* OTHERS = 9
* .
*
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_OUTPUT .
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'M1'.
SCREEN-INPUT = '0'.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
* AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
* ID 'WERKS' FIELD P_WERKS.
* IF SY-SUBRC <> 0.
* MESSAGE '您没有工厂:'&& P_WERKS && ' 的权限!' TYPE 'E' .
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
FIELD-SYMBOLS <FS> .
DATA: G_FIELD(40).
DATA: GT_TVKO TYPE TABLE OF TVKO WITH HEADER LINE.
CLEAR GT_TVKO[] .
SELECT VKORG INTO CORRESPONDING FIELDS OF TABLE GT_TVKO FROM TVKO
WHERE BUKRS IN S_BUKRS .
IF GT_TVKO[] IS NOT INITIAL .
CLEAR:GT_DATA[].
SELECT
VBAK~KUNNR
VBAK~AUART
VBAK~VBELN
VBAP~POSNR
VBAP~KWMENG
VBAP~VRKME
VBAP~MATNR
VBAP~ARKTX
EKKN~EBELN
EKKN~EBELP
EKPO~MENGE
EKPO~NETWR
EKPO~WERKS
EKKO~LIFNR
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
FROM VBAK
INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
INNER JOIN EKKN ON VBAP~VBELN = EKKN~VBELN AND VBAP~POSNR = EKKN~VBELP
INNER JOIN EKPO ON EKKN~EBELN = EKPO~EBELN AND EKKN~EBELP = EKPO~EBELP
INNER JOIN EKKO ON EKPO~EBELN = EKKO~EBELN
FOR ALL ENTRIES IN GT_TVKO[]
WHERE VBAK~VKORG = GT_TVKO-VKORG
AND VBAK~AUART = P_AUART
AND VBAK~VBELN IN S_VBELN
AND VBAP~MATNR IN S_MATNR
AND EKKN~EBELN IN S_EBELN
.
ENDIF.
IF GT_DATA[] IS NOT INITIAL.
CLEAR:GT_ZVM2[].
SELECT
VBAP~VGBEL
VBAP~VGPOS
VBAP~VBELN
VBAP~POSNR
LIPS~LFIMG
INTO CORRESPONDING FIELDS OF TABLE GT_ZVM2[]
FROM VBAK
INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
INNER JOIN LIPS ON VBAP~VBELN = LIPS~VGBEL AND VBAP~POSNR = LIPS~VGPOS
INNER JOIN LIKP ON LIPS~VBELN = LIKP~VBELN
FOR ALL ENTRIES IN GT_DATA[]
WHERE VBAP~VGBEL = GT_DATA-VBELN
AND VBAP~VGPOS = GT_DATA-POSNR
AND VBAK~AUART = 'ZVM2'
AND LIPS~WBSTA = 'C'
AND LIKP~WADAT_IST <= P_AUDAT
.
CLEAR GT_ZVM2_C[] .
GT_ZVM2_C[] = GT_ZVM2[].
SORT GT_ZVM2[] BY VGBEL VGPOS .
DELETE ADJACENT DUPLICATES FROM GT_ZVM2[] COMPARING VGBEL VGPOS.
LOOP AT GT_ZVM2.
CLEAR GT_ZVM2-LFIMG .
LOOP AT GT_ZVM2_C WHERE VGBEL = GT_ZVM2-VGBEL AND VGPOS = GT_ZVM2-VGPOS.
GT_ZVM2-LFIMG = GT_ZVM2-LFIMG + GT_ZVM2_C-LFIMG .
CLEAR GT_ZVM2_C .
ENDLOOP.
MODIFY GT_ZVM2 .
CLEAR GT_ZVM2 .
ENDLOOP.
CLEAR:GT_ZVM4[].
SELECT
VBAP~VGBEL
VBAP~VGPOS
VBAP~VBELN
VBAP~POSNR
LIPS~LFIMG
INTO CORRESPONDING FIELDS OF TABLE GT_ZVM4[]
FROM VBAK
INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
INNER JOIN LIPS ON VBAP~VBELN = LIPS~VGBEL AND VBAP~POSNR = LIPS~VGPOS
INNER JOIN LIKP ON LIPS~VBELN = LIKP~VBELN
FOR ALL ENTRIES IN GT_ZVM2[]
WHERE VBAP~VGBEL = GT_ZVM2-VBELN
AND VBAP~VGPOS = GT_ZVM2-POSNR
AND VBAK~AUART = 'ZVM4'
AND LIPS~WBSTA = 'C'
AND LIKP~WADAT_IST <= P_AUDAT
.
LOOP AT GT_ZVM4.
READ TABLE GT_ZVM2 WITH KEY VBELN = GT_ZVM4-VGBEL POSNR = GT_ZVM4-VGPOS .
GT_ZVM4-VGBEL = GT_ZVM2-VGBEL .
GT_ZVM4-VGPOS = GT_ZVM2-VGPOS .
MODIFY GT_ZVM4 .
CLEAR GT_ZVM4 .
ENDLOOP.
CLEAR GT_ZVM4_C[] .
GT_ZVM4_C[] = GT_ZVM4[].
SORT GT_ZVM4[] BY VGBEL VGPOS .
DELETE ADJACENT DUPLICATES FROM GT_ZVM4[] COMPARING VGBEL VGPOS.
LOOP AT GT_ZVM4.
CLEAR GT_ZVM4-LFIMG .
LOOP AT GT_ZVM4_C WHERE VGBEL = GT_ZVM4-VGBEL AND VGPOS = GT_ZVM4-VGPOS.
GT_ZVM4-LFIMG = GT_ZVM4-LFIMG + GT_ZVM4_C-LFIMG .
CLEAR GT_ZVM4_C .
ENDLOOP.
MODIFY GT_ZVM4 .
CLEAR GT_ZVM4 .
ENDLOOP.
CLEAR:GT_EKBE[].
SELECT
EKBE~EBELN
EKBE~EBELP
EKBE~VGABE
EKBE~BUDAT
EKBE~MENGE
EKBE~SHKZG
EKBE~DMBTR
INTO CORRESPONDING FIELDS OF TABLE GT_EKBE[]
FROM EKBE
FOR ALL ENTRIES IN GT_DATA[]
WHERE EKBE~EBELN = GT_DATA-EBELN
AND EKBE~EBELP = GT_DATA-EBELP
AND EKBE~VGABE IN (1,2)
AND EKBE~BUDAT <= P_AUDAT
.
CLEAR GT_EKBE_C[] .
GT_EKBE_C[] = GT_EKBE[].
SORT GT_EKBE[] BY EBELN EBELP VGABE .
DELETE ADJACENT DUPLICATES FROM GT_EKBE[] COMPARING EBELN EBELP VGABE .
**入库总数量:
*Select EKBE-menge EKBE~SHKZG where ekbe~EBELN = EKPO~EBELN and EKBE~EBELP = EKPO-EBELP and EKBE~VGABE = '1' AND EKBE~BUDAT <= '截止日期'. 一个采购订单行项目有可能存在多条收货记录,需要对收货记录进行求和。
*IF EKBE~SHKZG = ‘S’数量为正,IF EKBE~SHKZG =‘H’,数量、DMBTR为负数(EBELN EBELP SUM 一下)。
*入库暂估金额:EKBE-DMBTR
LOOP AT GT_EKBE WHERE VGABE = 1 .
LOOP AT GT_EKBE_C WHERE EBELN = GT_EKBE-EBELN AND EBELP = GT_EKBE-EBELP AND VGABE = GT_EKBE-VGABE.
IF GT_EKBE_C-SHKZG = 'H'.
GT_EKBE_C-MENGE = GT_EKBE_C-MENGE * -1 .
GT_EKBE_C-DMBTR = GT_EKBE_C-DMBTR * -1 .
ENDIF.
GT_EKBE-RKZSL = GT_EKBE-RKZSL + GT_EKBE_C-MENGE .
GT_EKBE-RKZJE = GT_EKBE-RKZJE + GT_EKBE_C-DMBTR .
CLEAR GT_EKBE_C .
ENDLOOP.
MODIFY GT_EKBE .
CLEAR GT_EKBE .
ENDLOOP.
*
**PO开票数量:
*Select EKBE-menge EKBE~SHKZG where ekbe~EBELN = EKPO~EBELN and EKBE~EBELP = EKPO-EBELP and EKBE~VGABE = '2'AND EKBE~BUDAT <= '截止日期'. 一个采购订单行项目有可能存在多条收货记录,需要对收货记录进行求和。
*IF EKBE~SHKZG = ‘S’数量为正,IF EKBE~SHKZG =‘H’,数量、DMBTR为负数(EBELN EBELP SUM 一下)。
*PO未开票数量:入库总数量-PO开票数量
*未开票金额:= PO净值 * PO未开票数量
LOOP AT GT_EKBE WHERE VGABE = 2 .
LOOP AT GT_EKBE_C WHERE EBELN = GT_EKBE-EBELN AND EBELP = GT_EKBE-EBELP AND VGABE = GT_EKBE-VGABE.
IF GT_EKBE_C-SHKZG = 'H'.
GT_EKBE_C-MENGE = GT_EKBE_C-MENGE * -1 .
GT_EKBE_C-DMBTR = GT_EKBE_C-DMBTR * -1 .
ENDIF.
GT_EKBE-POKPS = GT_EKBE-POKPS + GT_EKBE_C-MENGE .
CLEAR GT_EKBE_C .
ENDLOOP.
MODIFY GT_EKBE .
CLEAR GT_EKBE .
ENDLOOP.
LOOP AT GT_DATA.
SELECT SINGLE NAME1 INTO GT_DATA-NAME1 FROM KNA1
WHERE KUNNR = GT_DATA-KUNNR
.
READ TABLE GT_ZVM2 WITH KEY VGBEL = GT_DATA-VBELN VGPOS = GT_DATA-POSNR .
IF SY-SUBRC = 0.
GT_DATA-ZKPSL = GT_ZVM2-LFIMG ."开票数量
ENDIF.
READ TABLE GT_ZVM4 WITH KEY VGBEL = GT_DATA-VBELN VGPOS = GT_DATA-POSNR .
IF SY-SUBRC = 0.
GT_DATA-ZTHSL = GT_ZVM4-LFIMG ."退货数量
ENDIF.
READ TABLE GT_EKBE WITH KEY EBELN = GT_DATA-EBELN EBELP = GT_DATA-EBELP VGABE = 1 .
IF SY-SUBRC = 0.
GT_DATA-RKZSL = GT_EKBE-RKZSL ."入库总数量
GT_DATA-RKZJE = GT_EKBE-RKZJE ."入库暂估金额
ENDIF.
READ TABLE GT_EKBE WITH KEY EBELN = GT_DATA-EBELN EBELP = GT_DATA-EBELP VGABE = 2 .
IF SY-SUBRC = 0.
GT_DATA-POKPS = GT_EKBE-POKPS ."PO开票数量
ENDIF.
GT_DATA-POKPS = GT_DATA-RKZSL - GT_DATA-ZKPSL + GT_DATA-ZTHSL ."调整数量
GT_DATA-UPOKP = GT_DATA-RKZSL - GT_DATA-POKPS ."PO未开票数量
GT_DATA-UKPJE = GT_DATA-NETWR * GT_DATA-UPOKP ."未开票金额(调整金额)
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
ELSE .
MESSAGE 'NO_DATA!'TYPE'S'DISPLAY LIKE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
wa_fieldcat-fieldname = &1.
wa_fieldcat-seltext_l = &2.
* IF wa_fieldcat-fieldname = 'MSLJH' or wa_fieldcat-fieldname = 'WCBJH'.
* wa_fieldcat-EMPHASIZE = 'C600'. "设置字段的颜色
* ENDIF.
*
* IF wa_fieldcat-fieldname = 'MSLMB' or wa_fieldcat-fieldname = 'WCBMB'.
* wa_fieldcat-EMPHASIZE = 'C710'. "设置字段的颜色
* ENDIF.
IF wa_fieldcat-fieldname = 'PLNBEZ' OR wa_fieldcat-fieldname = 'MATNR' .
wa_fieldcat-ref_tabname = 'MARA'.
wa_fieldcat-ref_fieldname = 'MATNR'.
ENDIF.
IF wa_fieldcat-fieldname = 'ARKTX' OR wa_fieldcat-fieldname = 'WAKTX' .
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-ref_fieldname = 'ARKTX'.
ENDIF.
IF wa_fieldcat-fieldname = 'AUFNR' .
wa_fieldcat-ref_tabname = 'AUFK'.
wa_fieldcat-ref_fieldname = 'AUFNR'.
ENDIF.
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
END-OF-DEFINITION.
FILL_FIELD :
'KUNNR' '客户',
'NAME1' '客户描述',
'AUART' '订单类型',
'VBELN' '销售订单',
'POSNR' 'SO行项目',
'KWMENG' '订单数量',
'VRKME' '基本单位',
'MATNR' '物料代码',
'ARKTX' '物料描述',
'ZKPSL' '开票数量',
'ZTHSL' '退货数量',
'ZTZSL' '调整数量',
'EBELN' '采购订单',
'EBELP' 'PO行项目',
'MENGE' 'PO数量',
'NETWR' 'PO净值',
'RKZSL' '入库总数量',
'RKZJE' '入库暂估金额',
'POKPS' 'PO开票数量',
'UPOKP' 'PO未开票数量',
'UKPJE' '未开票金额(调整金额)',
'LIFNR' '供应商',
'WERKS' '工厂'.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA:L_BUKRS TYPE T001K-BUKRS.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN 'DEL_DJ'.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
INITIALIZATION .
PERFORM FRM_EXCLUDE_OPTION.
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_OUTPUT.
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA .
PERFORM FRM_DISPLAY.