ZFI_自动关联采购的物料价格(开发笔记)

*&---------------------------------------------------------------------*
*& 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输出所需变量
DATAS_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 WITH HEADER LINE.

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

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

DATAGT_ALV    TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_ALV_A  TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_BDC    TYPE TABLE OF GTS_BDC WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
SELECT-OPTIONSS_MATNR  FOR   MARC-MATNR     MODIF ID MXY .                          "物料
SELECT-OPTIONSS_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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值