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

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

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

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

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

IF ( i_stonO = '' AND i_stonN = '' ).
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 = ''.
GX_VBEP-BDART = ''.
GX_VBEP-PLART = ''.
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 = ''.
GW_VBBE-PLART = ''.
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 = .
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 = ''.
GX_VBEP-BDART = ''.
GX_VBEP-PLART = ''.
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 = ''.
GW_VBBE-PLART = ''.
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 = .
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 = .
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 = ''.
GX_VBEP-BDART = ''.
GX_VBEP-PLART = ''.
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 = ''.
GW_VBBE-PLART = ''.
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 = .
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 = ''.
GX_VBEP-BDART = ''.
GX_VBEP-PLART = ''.
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 = ''.
GW_VBBE-PLART = ''.
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 = .
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.

SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求的更多相关文章

  1. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

  2. SAP 销售订单中采购标识无法修改

    VA03中的销售订单第四个物料没有ZA选项, 错误提示:计划行类别ZA未定义 原因: MM03中的 MRP2---采购类型未被定义

  3. SAP 销售订单交货对成本中心记账

    销售订单发货不计入主营业务成本,而是直接接入费用科目,与成本中心挂钩的业务经常发生.不少公司只是简单地处理交货,计入主营业务成本,然后财务再手工将成本归结到相关的成本中心.其实SAP系统是支持销售订单 ...

  4. SAP生产订单状态

    SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: ·        PREL (部分下达):当生产订单部分下达时,如仅下 ...

  5. SAP销售订单屏幕字段控制隐藏,必输等

    1.T-CODE:shd0 创建变式  , 点击确认按钮后,SAP进入下一个屏幕,然后重复上面的操作,直到所有屏幕已完成设置. 如果后续屏幕不需要设置,可点击“退出并保存”按钮.保存后,进入下图所示页 ...

  6. SAP 销售订单的文本项目

    http://blog.itpub.net/9859323/viewspace-616508/ ls_hdname = wa_vbak-vbeln .     CALL FUNCTION 'READ_ ...

  7. 20170501xlVBA销售订单整理一行转多行

    Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = False Appli ...

  8. SAP销售订单需求类型的确定优秀级

    需求类型的确定优秀级:1.策略组里的需求类型:2.MRP组里的:3.SO行项目类别+MRP类型4.SO行项目类别 部分截图:

  9. SAP销售订单屏幕增强行项目屏幕增强

    1.在vbap表中 append一个自定义结构,如下图: 2.TCODE:SE80     程序名:SAPMV45A   屏幕:8459 如图: 3.标记增强的屏幕字段 4.屏幕增强的位置 *& ...

随机推荐

  1. JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...

  2. [SAP ABAP开发技术总结]程序自己以JOB方式运行

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. SQL SERVER 2005中同义词实例

    From : http://www.cnblogs.com/jackyrong/archive/2006/11/15/561287.html 在SQL SERVER 2005中,终于出现了同义词了,大 ...

  4. Linux下C程序的编译,运行,及调试

    先查看linux有没有gcc 和 gdb $ gcc -v $ gdb -v 如果没有安装gcc,可以 $ yum install gcc 要获取管理员权限才能安装软件,$ su root (有的li ...

  5. iOS - Swift NSSize 尺寸

    前言 结构体,这个结构体用来表示事物的宽度和高度. public typealias NSSize = CGSize public struct CGSize { public var width: ...

  6. iOS - TouchID 指纹识别

    前言 NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8. ...

  7. iOS - UIColor

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIColor : NSObject <NSSecureCoding, NSCopying> @avai ...

  8. URLConnection 使用

    统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <M ...

  9. lab_c!

    #include<stdio.h> hi() { printf("hello world!\n"); } int main() { hi(); int i = hi() ...

  10. Java编程思想学习笔记_1(Java内存和垃圾回收)

    1.Java中对象的存储数据的地方: 共有五个不同的地方可以存储数据. 1)寄存器.最快,因为位于处理器的内部,寄存器按需求分配,不能直接控制. 2)堆栈.位于通用RAM,通过堆栈指针可以从处理器那里 ...