zoukankan      html  css  js  c++  java
  • SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求

    不知道业务怎么配置的,创建销售单时,一堆计划行类别,什么CN,DN。。。都有,但是审核后需要计划行变更为CP,这样在MD04才能看到需求。

    原有逻辑是弄个后台程序,审核后调一下,更新一下计划行,这样是会有需求的。。。

    但是,业务有个习惯喜欢VA02直接审,或者是交货后还来修改等等。。。这时候就需要在VA02里做增强。,

    原本的开发还是调程序。。。这就产生了很多问题。后来我自己写增强审核的时候自动修改计划行类别,巴特,不产生需求。。。这特么鬼,后来各种找,各种DEBUG,找到根源了。。。

    Now,来个增强,实现:MV45AFZZ  USEREXIT_SAVE_DOCUMENT_PREPARE

    IF ( i_stonO = '20' AND i_stonN = '30' ).
           LOOP AT XVBEP INTO GX_VBEP.
             LY_I = SY-TABIX.
             CASE VBAK-AUART.
                 WHEN 'ZOR' .
                IF GX_VBEP-ETTYP <> 'CP' AND GX_VBEP-ETTYP <> 'ZD'.
                  GX_VBEP-ETTYP = 'CP'.
                  IF SY-TCODE = 'VA01'.
                    ELSEIF SY-TCODE = 'VA02'.
                      GX_VBEP-UPDKZ = 'U'.
                      GX_VBEP-BEDSD = 'X'.
                      GX_VBEP-BDAALT = '05'.
                      GX_VBEP-BDART = '05'.
                      GX_VBEP-PLART = '0'.
                      IF XVBBE[] IS INITIAL.
                        GW_VBBE-MANDT = SY-MANDT.
                        GW_VBBE-VBELN = GX_VBEP-VBELN.
                        GW_VBBE-POSNR = GX_VBEP-POSNR.
                        GW_VBBE-ETENR = GX_VBEP-ETENR.
                        GW_VBBE-MBDAT = GX_VBEP-EDATU.
                        GW_VBBE-VBTYP = 'C'.
                        GW_VBBE-BDART = '05'.
                        GW_VBBE-PLART = '0'.
                        GW_VBBE-UPDKZ = 'I'.
                        GW_VBBE-OMENG = GX_VBEP-LMENG.
                        GW_VBBE-VMENG = GX_VBEP-BMENG.
                        GW_VBBE-MEINS = GX_VBEP-VRKME.
                        GW_VBBE-PZMNG = GX_VBEP-LMENG.
                        GW_VBBE-AUART = XVBAK-AUART.
                        GW_VBBE-KUNNR = XVBAK-KUNNR.
                         READ TABLE XVBAP INTO GX_VBAP WITH KEY POSNR = GX_VBEP-POSNR.
                         IF SY-SUBRC = 0.
                           LY_J = SY-TABIX.
                           GX_VBAP-SUMBD = 'A'.
                           GX_VBAP-UPDKZ = 'U'.
                           GX_VBAP-BEDUP = 'X'.
    
                           MODIFY XVBAP FROM GX_VBAP INDEX LY_J TRANSPORTING SUMBD UPDKZ BEDUP.
                          GW_VBBE-MATNR = GX_VBAP-MATNR.
                          GW_VBBE-WERKS = GX_VBAP-WERKS.
                          GW_VBBE-LGORT = GX_VBAP-LGORT.
                          GW_VBBE-CHARG = GX_VBAP-CHARG.
                          GW_VBBE-AWAHR = GX_VBAP-AWAHR.
                          GW_VBBE-VPZUO = GX_VBAP-VPZUO.
                         ENDIF.
                         INSERT GW_VBBE INTO XVBBE INDEX GX_VBEP-ETENR.
                      ENDIF.
                  ENDIF.
                ENDIF.
              WHEN 'ZKB' .
                IF GX_VBEP-ETTYP <> 'E1'.
                  GX_VBEP-ETTYP = 'E1'.
                  IF SY-TCODE = 'VA01'.
                    ELSEIF SY-TCODE = 'VA02'.
                      GX_VBEP-UPDKZ = 'U'.
                      GX_VBEP-BEDSD = 'X'.
                      GX_VBEP-BDAALT = '05'.
                      GX_VBEP-BDART = '05'.
                      GX_VBEP-PLART = '0'.
                      IF XVBBE[] IS INITIAL.
                        GW_VBBE-MANDT = SY-MANDT.
                        GW_VBBE-VBELN = GX_VBEP-VBELN.
                        GW_VBBE-POSNR = GX_VBEP-POSNR.
                        GW_VBBE-ETENR = GX_VBEP-ETENR.
                        GW_VBBE-MBDAT = GX_VBEP-EDATU.
                        GW_VBBE-VBTYP = 'C'.
                        GW_VBBE-BDART = '05'.
                        GW_VBBE-PLART = '0'.
                        GW_VBBE-UPDKZ = 'I'.
                        GW_VBBE-OMENG = GX_VBEP-LMENG.
                        GW_VBBE-VMENG = GX_VBEP-BMENG.
                        GW_VBBE-MEINS = GX_VBEP-VRKME.
                        GW_VBBE-PZMNG = GX_VBEP-LMENG.
                        GW_VBBE-AUART = XVBAK-AUART.
                        GW_VBBE-KUNNR = XVBAK-KUNNR.
                         READ TABLE XVBAP INTO GX_VBAP WITH KEY POSNR = GX_VBEP-POSNR.
                         IF SY-SUBRC = 0.
                           LY_J = SY-TABIX.
                           GX_VBAP-SUMBD = 'A'.
                           GX_VBAP-UPDKZ = 'U'.
                           GX_VBAP-BEDUP = 'X'.
    
                           MODIFY XVBAP FROM GX_VBAP INDEX LY_J TRANSPORTING SUMBD UPDKZ BEDUP.
                          GW_VBBE-MATNR = GX_VBAP-MATNR.
                          GW_VBBE-WERKS = GX_VBAP-WERKS.
                          GW_VBBE-LGORT = GX_VBAP-LGORT.
                          GW_VBBE-CHARG = GX_VBAP-CHARG.
                          GW_VBBE-AWAHR = GX_VBAP-AWAHR.
                          GW_VBBE-VPZUO = GX_VBAP-VPZUO.
                         ENDIF.
                         INSERT GW_VBBE INTO XVBBE INDEX GX_VBEP-ETENR.
                      ENDIF.
                  ENDIF.
                ENDIF.
                 WHEN 'ZSP' .
                READ TABLE XVBAP INTO GX_VBAP WITH KEY POSNR = GX_VBEP-POSNR.
                IF SY-SUBRC = 0.
                  IF GX_VBAP-PSTYV = 'ZSNN' AND GX_VBEP-ETTYP <> 'ZN'.
                    GX_VBEP-ETTYP = 'ZN'.
                    IF SY-TCODE = 'VA01'.
                    ELSEIF SY-TCODE = 'VA02'.
                      GX_VBEP-UPDKZ = 'U'.
                      GX_VBEP-BEDSD = 'X'.
                      GX_VBEP-BDAALT = '05'.
                      GX_VBEP-BDART = '05'.
                      GX_VBEP-PLART = '0'.
                      IF XVBBE[] IS INITIAL.
                        GW_VBBE-MANDT = SY-MANDT.
                        GW_VBBE-VBELN = GX_VBEP-VBELN.
                        GW_VBBE-POSNR = GX_VBEP-POSNR.
                        GW_VBBE-ETENR = GX_VBEP-ETENR.
                        GW_VBBE-MBDAT = GX_VBEP-EDATU.
                        GW_VBBE-VBTYP = 'C'.
                        GW_VBBE-BDART = '05'.
                        GW_VBBE-PLART = '0'.
                        GW_VBBE-UPDKZ = 'I'.
                        GW_VBBE-OMENG = GX_VBEP-LMENG.
                        GW_VBBE-VMENG = GX_VBEP-BMENG.
                        GW_VBBE-MEINS = GX_VBEP-VRKME.
                        GW_VBBE-PZMNG = GX_VBEP-LMENG.
                        GW_VBBE-AUART = XVBAK-AUART.
                        GW_VBBE-KUNNR = XVBAK-KUNNR.
                         READ TABLE XVBAP INTO GX_VBAP WITH KEY POSNR = GX_VBEP-POSNR.
                         IF SY-SUBRC = 0.
                           LY_J = SY-TABIX.
                           GX_VBAP-SUMBD = 'A'.
                           GX_VBAP-UPDKZ = 'U'.
                           GX_VBAP-BEDUP = 'X'.
    
                           MODIFY XVBAP FROM GX_VBAP INDEX LY_J TRANSPORTING SUMBD UPDKZ BEDUP.
                          GW_VBBE-MATNR = GX_VBAP-MATNR.
                          GW_VBBE-WERKS = GX_VBAP-WERKS.
                          GW_VBBE-LGORT = GX_VBAP-LGORT.
                          GW_VBBE-CHARG = GX_VBAP-CHARG.
                          GW_VBBE-AWAHR = GX_VBAP-AWAHR.
                          GW_VBBE-VPZUO = GX_VBAP-VPZUO.
                         ENDIF.
                         INSERT GW_VBBE INTO XVBBE INDEX GX_VBEP-ETENR.
                      ENDIF.
                  ENDIF.
                  ELSEIF GX_VBAP-PSTYV = 'ZSAN' AND GX_VBEP-ETTYP <> 'CP'.
                    GX_VBEP-ETTYP = 'CP'.
                    IF SY-TCODE = 'VA01'.
                    ELSEIF SY-TCODE = 'VA02'.
                      GX_VBEP-UPDKZ = 'U'.
                      GX_VBEP-BEDSD = 'X'.
                      GX_VBEP-BDAALT = '05'.
                      GX_VBEP-BDART = '05'.
                      GX_VBEP-PLART = '0'.
                      IF XVBBE[] IS INITIAL.
                        GW_VBBE-MANDT = SY-MANDT.
                        GW_VBBE-VBELN = GX_VBEP-VBELN.
                        GW_VBBE-POSNR = GX_VBEP-POSNR.
                        GW_VBBE-ETENR = GX_VBEP-ETENR.
                        GW_VBBE-MBDAT = GX_VBEP-EDATU.
                        GW_VBBE-VBTYP = 'C'.
                        GW_VBBE-BDART = '05'.
                        GW_VBBE-PLART = '0'.
                        GW_VBBE-UPDKZ = 'I'.
                        GW_VBBE-OMENG = GX_VBEP-LMENG.
                        GW_VBBE-VMENG = GX_VBEP-BMENG.
                        GW_VBBE-MEINS = GX_VBEP-VRKME.
                        GW_VBBE-PZMNG = GX_VBEP-LMENG.
                        GW_VBBE-AUART = XVBAK-AUART.
                        GW_VBBE-KUNNR = XVBAK-KUNNR.
                         READ TABLE XVBAP INTO GX_VBAP WITH KEY POSNR = GX_VBEP-POSNR.
                         IF SY-SUBRC = 0.
                           LY_J = SY-TABIX.
                           GX_VBAP-SUMBD = 'A'.
                           GX_VBAP-UPDKZ = 'U'.
                           GX_VBAP-BEDUP = 'X'.
    
                           MODIFY XVBAP FROM GX_VBAP INDEX LY_J TRANSPORTING SUMBD UPDKZ BEDUP.
                          GW_VBBE-MATNR = GX_VBAP-MATNR.
                          GW_VBBE-WERKS = GX_VBAP-WERKS.
                          GW_VBBE-LGORT = GX_VBAP-LGORT.
                          GW_VBBE-CHARG = GX_VBAP-CHARG.
                          GW_VBBE-AWAHR = GX_VBAP-AWAHR.
                          GW_VBBE-VPZUO = GX_VBAP-VPZUO.
                         ENDIF.
                         INSERT GW_VBBE INTO XVBBE INDEX GX_VBEP-ETENR.
                      ENDIF.
                  ENDIF.
                  ENDIF .
                ENDIF.
                 WHEN OTHERS.
             ENDCASE.
             MODIFY XVBEP FROM GX_VBEP.
           ENDLOOP.
         ENDIF.
  • 相关阅读:
    队列<一>
    二叉树的遍历[先序,中序,后序]
    The method format(String, Object[]) in the type String is not applicable for the arguments
    sqlserver 备份 与 还原
    sqlserver 无法获得数据库独占权
    page.isvalid
    bzoj3994 [SDOI2015]约数个数和
    bzoj4868 [Shoi2017]期末考试
    bzoj1179 [Apio2009]Atm
    bzoj4869 [Shoi2017]相逢是问候
  • 原文地址:https://www.cnblogs.com/sapSB/p/5569636.html
Copyright © 2011-2022 走看看