*&---------------------------------------------------------------------*
*& Report ZSDR008
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-10-06
*& Program Type : Report
*& Description : 关联采购的物料价格
*&---------------------------------------------------------------------*
REPORT ZFIR011.
TABLES:MARC,MARA,MVKE.
TYPE-POOLS:SLIS,T001W,ICON.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA:MESSAGE TYPE BAPI_MSG .
DATA:SUBRC LIKE SYST-SUBRC .
DATA:FLAG TYPE C .
DATA:KSTBM TYPE KSTBM .
DATA:MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
TYPES: BEGIN OF GTS_DATA,
MATNR TYPE MARC-MATNR, "物料编码
WERKS TYPE MARC-WERKS, "工厂
PSTAT TYPE MARC-PSTAT, "维护状态
INFNR TYPE EINE-INFNR, "采购信息记录号
NETPR TYPE EINE-NETPR, "采购信息记录中的净价
PEIN1 TYPE EINE-PEINH, "价格单位
VPRSV TYPE MBEW-VPRSV, "价格控制指示符
PEIN2 TYPE MBEW-PEINH, "价格单位
END OF GTS_DATA.
TYPES: BEGIN OF GTS_BDC,
BUDAT LIKE BDCDATA-FVAL,
WERKS LIKE BDCDATA-FVAL,
BKTXT LIKE BDCDATA-FVAL,
MATNR LIKE BDCDATA-FVAL,
NEWVALPR LIKE BDCDATA-FVAL,
NETPR LIKE EINE-NETPR,
INFNR LIKE EINE-INFNR,
END OF GTS_BDC.
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_BDC TYPE TABLE OF GTS_BDC WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
SELECT-OPTIONS: S_MATNR FOR MARC-MATNR MODIF ID MXY . "物料
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS MODIF ID MXY . "工厂
SELECTION-SCREEN END OF BLOCK B2.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
DATA EDITPOS TYPE TABLE OF CDRED WITH HEADER LINE.
DATA GT_ZTFI_ST01 TYPE TABLE OF ZTFI_ST01 WITH HEADER LINE.
DATA OBJECTCLASS LIKE CDHDR-OBJECTCLAS.
DATA OBJECTID LIKE CDHDR-OBJECTID.
CLEAR GT_ALV[].
SELECT
MARC~MATNR
MARC~WERKS
MARC~PSTAT
EINE~INFNR
EINE~NETPR
EINE~PEINH AS PEIN1
MBEW~VPRSV
MBEW~PEINH AS PEIN2
INTO CORRESPONDING FIELDS OF TABLE GT_ALV[]
FROM EINE
INNER JOIN EINA ON EINE~INFNR = EINA~INFNR
INNER JOIN MARC ON EINA~MATNR = MARC~MATNR AND EINE~WERKS = MARC~WERKS
INNER JOIN MBEW ON EINA~MATNR = MBEW~MATNR AND EINE~WERKS = MBEW~BWKEY
WHERE MARC~WERKS IN ( '2200' , '2101' )
AND MBEW~VPRSV = 'S'
AND MARC~MATNR IN S_MATNR
AND MARC~WERKS IN S_WERKS
.
SORT GT_ALV[] BY INFNR .
DELETE ADJACENT DUPLICATES FROM GT_ALV[] COMPARING INFNR.
CLEAR GT_BDC[].
LOOP AT GT_ALV.
IF GT_ALV-PSTAT CS 'B'.
CLEAR EDITPOS[].
OBJECTID = GT_ALV-INFNR.
CALL FUNCTION 'CHANGEDOCUMENT_READ'
EXPORTING
OBJECTCLASS = 'INFOSATZ'
OBJECTID = OBJECTID
TABLES
EDITPOS = EDITPOS
EXCEPTIONS
NO_POSITION_FOUND = 1
OTHERS = 2.
SORT EDITPOS[] BY UDATE DESCENDING .
READ TABLE EDITPOS INDEX 1.
IF EDITPOS-UDATE = SY-DATUM.
GT_BDC-BUDAT = SY-DATUM .
GT_BDC-INFNR = GT_ALV-INFNR .
GT_BDC-MATNR = GT_ALV-MATNR .
GT_BDC-WERKS = GT_ALV-WERKS .
GT_BDC-NETPR = GT_ALV-NETPR .
GT_BDC-NETPR = GT_ALV-NETPR / GT_ALV-PEIN1 * GT_ALV-PEIN2 .
GT_BDC-NEWVALPR = GT_BDC-NETPR .
GT_BDC-BKTXT = GT_ALV-WERKS && '自动更新物料价格为关联采购净价'.
SHIFT GT_BDC-NEWVALPR LEFT DELETING LEADING SPACE.
APPEND GT_BDC.
CLEAR GT_BDC.
ENDIF.
ENDIF.
CLEAR GT_ALV .
ENDLOOP.
LOOP AT GT_BDC.
CLEAR SUBRC .
CLEAR MESSAGE .
CLEAR MESSTAB[] .
CALL FUNCTION 'ZF_MR21_01'
EXPORTING
CTU = 'X'
MODE = 'N'
UPDATE = 'L'
NODATA = '/'
BUDAT_001 = GT_BDC-BUDAT
WERKS_002 = GT_BDC-WERKS
BKTXT_003 = GT_BDC-BKTXT
MATNR_01_004 = GT_BDC-MATNR
NEWVALPR_01_005 = GT_BDC-NEWVALPR
IMPORTING
SUBRC = SUBRC
MESSAGE = MESSAGE
TABLES
MESSTAB = MESSTAB[].
.
GT_ZTFI_ST01-MATNR = GT_BDC-MATNR.
GT_ZTFI_ST01-WERKS = GT_BDC-WERKS.
GT_ZTFI_ST01-INFNR = GT_BDC-INFNR.
GT_ZTFI_ST01-NETPR = GT_BDC-NETPR.
GT_ZTFI_ST01-DATUM = SY-DATUM.
GT_ZTFI_ST01-UNAME = SY-UNAME.
IF MESSAGE IS NOT INITIAL .
GT_ZTFI_ST01-MTYPE = 'E'.
GT_ZTFI_ST01-MESSAGE = MESSAGE.
ELSE.
GT_ZTFI_ST01-MTYPE = 'S'.
GT_ZTFI_ST01-MESSAGE = '操作成功!'.
ENDIF.
MODIFY ZTFI_ST01 FROM GT_ZTFI_ST01 .
COMMIT WORK .
CLEAR GT_ZTFI_ST01.
CLEAR GT_BDC.
ENDLOOP.
ENDFORM.
START-OF-SELECTION.
PERFORM FOM_GETDATA.
ZFI_自动关联采购的物料价格(开发笔记)
最新推荐文章于 2020-04-29 11:12:56 发布