*&---------------------------------------------------------------------*
*& Report ZMMR130
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-10-06
*& Program Type : Report
*& Description : PR交货信息报表
*&---------------------------------------------------------------------*
REPORT ZMMR130.
TABLES:EBAN,EKPO,EKKO,LIPS,VBRK,VBRP.
TYPE-POOLS:SLIS,T001W,ICON.
DATA OK_CODE TYPE SY-UCOMM.
DATA OK_SAVE TYPE SY-UCOMM.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_STYLE TYPE LVC_S_STYL,
LT_STYLE TYPE TABLE OF LVC_S_STYL.
DATA: IW_CELLCOLOR TYPE LVC_T_SCOL WITH HEADER LINE.
TYPES: BEGIN OF GTS_DATA,
BANFN TYPE EBAN-BANFN, "请购单
BNFPO TYPE EBAN-BNFPO, "请购项目
AFNAM TYPE EBAN-AFNAM, "申请者
BEDNR TYPE EBAN-BEDNR, "需求跟踪号
MATNR TYPE EBAN-MATNR, "物料
MAKTX TYPE MAKT-MAKTX, "物料描述
IDNLF TYPE EBAN-IDNLF, "费用单号
MENGE_PR TYPE EBAN-MENGE, "申请数量
MEINS_PR TYPE EBAN-MEINS, "单位
EBELN TYPE EBAN-EBELN, "采购订单
EBELP TYPE EBAN-EBELP, "采购订单项目
MENGE_PO TYPE EKPO-MENGE, "数量
MEINS_PO TYPE EKPO-MEINS, "采购单位
TXZ01 TYPE EKPO-TXZ01, "短文本
BEDNR_PO TYPE EKPO-BEDNR, "项目交货日期
EINDT TYPE EKET-EINDT, "项目交货日期
MENGE_JH TYPE EKBE-MENGE, "交货数量
MENGE_WS TYPE EKBE-MENGE, "交货数量
AEDAT TYPE EKKO-AEDAT, "采购订单创建日期
CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色
STYLE TYPE LVC_T_STYL, "控制不可编辑
END OF GTS_DATA.
DATA: GT_ALV TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_ALV_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_ALV_B TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_LIPS TYPE TABLE OF LIPS WITH HEADER LINE .
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
SELECT-OPTIONS: S_BANFN FOR EBAN-BANFN MODIF ID MXY . "请购单
SELECT-OPTIONS: S_AFNAM FOR EBAN-AFNAM MODIF ID MXY . "申请者
SELECT-OPTIONS: S_BADAT FOR EBAN-BADAT MODIF ID MXY . "请求日期
"SELECT-OPTIONS: S_BEDNR FOR EBAN-BEDNR MODIF ID MXY . "需求跟踪号
SELECT-OPTIONS: S_MATNR FOR EBAN-MATNR MODIF ID MXY . "物料
SELECT-OPTIONS: S_EKGRP FOR EBAN-EKGRP MODIF ID MXY . "采购组
SELECT-OPTIONS: S_MATKL FOR EBAN-MATKL MODIF ID MXY . "物料组
SELECT-OPTIONS: S_WERKS FOR EBAN-WERKS MODIF ID MXY . "工厂
SELECT-OPTIONS: S_AEDAT FOR EKKO-AEDAT MODIF ID MXY . "采购订单创建日期
SELECT-OPTIONS: S_IDNLF FOR EBAN-IDNLF MODIF ID MXY . "费用单号
SELECT-OPTIONS: S_BSART FOR EBAN-BSART MODIF ID MXY DEFAULT 'Z1'. "凭证类型
SELECTION-SCREEN END OF BLOCK B2.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
DATA GT_EKBE TYPE TABLE OF EKBE WITH HEADER LINE .
CLEAR GT_ALV[].
SELECT
BANFN
BNFPO
AFNAM
BEDNR
MATNR
MENGE AS MENGE_PR
MEINS AS MEINS_PR
EBELN
EBELP
IDNLF
INTO CORRESPONDING FIELDS OF TABLE GT_ALV[] FROM EBAN
WHERE BANFN IN S_BANFN
AND AFNAM IN S_AFNAM
" AND BEDNR IN S_BEDNR
AND MATNR IN S_MATNR
AND EKGRP IN S_EKGRP
AND MATKL IN S_MATKL
AND WERKS IN S_WERKS
AND BSART IN S_BSART
AND BADAT IN S_BADAT
.
IF GT_ALV[] IS NOT INITIAL.
LOOP AT GT_ALV.
SELECT SINGLE MAKTX INTO GT_ALV-MAKTX FROM MAKT
WHERE MATNR = GT_ALV-MATNR
.
SELECT SINGLE AEDAT INTO GT_ALV-AEDAT FROM EKKO
WHERE EBELN = GT_ALV-EBELN
.
SELECT SINGLE
MENGE AS MENGE_PO
MEINS AS MEINS_PO
BEDNR AS BEDNR_PO
TXZ01
INTO CORRESPONDING FIELDS OF GT_ALV FROM EKPO
WHERE EBELN = GT_ALV-EBELN
AND EBELP = GT_ALV-EBELP
.
SELECT SINGLE
EINDT
INTO GT_ALV-EINDT FROM EKET
WHERE EBELN = GT_ALV-EBELN
AND EBELP = GT_ALV-EBELP
AND ETENR = '1'
.
CLEAR GT_EKBE[].
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_EKBE[] FROM EKBE
WHERE EBELN = GT_ALV-EBELN
AND EBELP = GT_ALV-EBELP
AND BWART IN ('101','102','123','122')
.
LOOP AT GT_EKBE .
IF GT_EKBE-BWART = '102' OR GT_EKBE-BWART = '122'.
GT_EKBE-MENGE = GT_EKBE-MENGE * -1 .
ENDIF.
GT_ALV-MENGE_JH = GT_ALV-MENGE_JH + GT_EKBE-MENGE .
CLEAR GT_EKBE .
ENDLOOP.
GT_ALV-MENGE_WS = GT_ALV-MENGE_PO - GT_ALV-MENGE_JH .
MODIFY GT_ALV .
CLEAR GT_ALV .
ENDLOOP.
ENDIF.
DELETE GT_ALV[] WHERE AEDAT NOT IN S_AEDAT .
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-COLTAB_FIELDNAME = 'CELLCOLOR'. "单元格颜色内表字段
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_SAVE = 'A'
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_ALV[].
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 = 'CKBOX' .
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'MENGE_T' .
WA_FIELDCAT-REF_TABNAME = 'AUFM'.
WA_FIELDCAT-REF_FIELDNAME = 'MENGE'.
WA_FIELDCAT-OUTPUTLEN = '13'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF .
IF WA_FIELDCAT-FIELDNAME = 'LGORT_T' .
WA_FIELDCAT-EDIT = 'X'.
ENDIF .
IF WA_FIELDCAT-FIELDNAME = 'PLNBEZ'
OR WA_FIELDCAT-FIELDNAME = 'MATNR'
OR WA_FIELDCAT-FIELDNAME = 'MATNRT'
.
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 = 'VBELN_DN' .
WA_FIELDCAT-REF_TABNAME = 'LIPS'.
WA_FIELDCAT-REF_FIELDNAME = 'VBELN'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'BANFN' .
WA_FIELDCAT-REF_TABNAME = 'EBAN'.
WA_FIELDCAT-REF_FIELDNAME = 'BANFN'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'BLDAT'
OR WA_FIELDCAT-FIELDNAME = 'BUDAT'
.
WA_FIELDCAT-REF_TABNAME = 'MATDOC'.
WA_FIELDCAT-REF_FIELDNAME = 'BLDAT'.
* WA_FIELDCAT-EDIT = 'X'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'MESSAGE' .
WA_FIELDCAT-OUTPUTLEN = '100'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'TYPBO'
OR WA_FIELDCAT-FIELDNAME = 'TYPAI'
.
WA_FIELDCAT-ICON = 'X'.
WA_FIELDCAT-OUTPUTLEN = '13'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'TYPBO'
OR WA_FIELDCAT-FIELDNAME = 'TYPAI'
.
WA_FIELDCAT-ICON = 'X'.
ENDIF.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
END-OF-DEFINITION.
FILL_FIELD :
'BANFN' '请购单',
'BNFPO' '请购项目',
'AFNAM ' '申请者',
* 'BEDNR_PO' '采购确认交货日期',
'BEDNR_PO' '采购确认交货日期',
'MATNR' '物料',
'MAKTX' '物料描述',
'IDNLF' '费用单号',
'MENGE_PR' '申请数量',
'MEINS_PR' '单位',
'EBELN' '采购订单',
'EBELP' '采购订单项目',
'AEDAT' '采购订单创建日期',
'MENGE_PO' '数量',
'MEINS_PO' '采购单位',
'TXZ01' '短文本',
'EINDT' '项目交货日期',
'MENGE_JH' '已收货货数量',
'MENGE_WS' '未收货货数量'.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN1'.
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 '&IC1'."表示双击
IF IS_SELFIELD-FIELDNAME = 'BANFN' .
CHECK IS_SELFIELD-TABINDEX > 0.
CLEAR GT_ALV .
READ TABLE GT_ALV INDEX IS_SELFIELD-TABINDEX.
IF GT_ALV-BANFN IS NOT INITIAL.
SET PARAMETER ID 'BAN' FIELD GT_ALV-BANFN.
CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
ENDIF.
ELSE .
MESSAGE '请选择有效字段!'TYPE 'S' DISPLAY LIKE 'W'.
ENDIF .
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
START-OF-SELECTION.
PERFORM FOM_GETDATA.
PERFORM FRM_DISPLAY.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TBC_01' ITSELF
CONTROLS: TBC_01 TYPE TABLEVIEW USING SCREEN 0100.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBC_01'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBC_01_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE GT_LIPS LINES TBC_01-LINES.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT.
LEAVE TO SCREEN 0 .
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
OK_SAVE = SY-UCOMM .
CLEAR SY-UCOMM .
CLEAR OK_CODE .
CASE OK_SAVE.
WHEN 'BACK' .
LEAVE TO SCREEN 0 .
WHEN OTHERS .
ENDCASE .
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'PF_0100'.
SET TITLEBAR 'TITLE_0100'.
ENDMODULE.
MM-PR交货信息报表(开发笔记)
最新推荐文章于 2020-07-28 08:47:39 发布