SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
不知道业务怎么配置的,创建销售单时,一堆计划行类别,什么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需求的更多相关文章
- 【ABAP系列】SAP 销售订单的行项目里条件的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...
- SAP 销售订单中采购标识无法修改
VA03中的销售订单第四个物料没有ZA选项, 错误提示:计划行类别ZA未定义 原因: MM03中的 MRP2---采购类型未被定义
- SAP 销售订单交货对成本中心记账
销售订单发货不计入主营业务成本,而是直接接入费用科目,与成本中心挂钩的业务经常发生.不少公司只是简单地处理交货,计入主营业务成本,然后财务再手工将成本归结到相关的成本中心.其实SAP系统是支持销售订单 ...
- SAP生产订单状态
SAP系统的常见订单状态如下: · CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: · PREL (部分下达):当生产订单部分下达时,如仅下 ...
- SAP销售订单屏幕字段控制隐藏,必输等
1.T-CODE:shd0 创建变式 , 点击确认按钮后,SAP进入下一个屏幕,然后重复上面的操作,直到所有屏幕已完成设置. 如果后续屏幕不需要设置,可点击“退出并保存”按钮.保存后,进入下图所示页 ...
- SAP 销售订单的文本项目
http://blog.itpub.net/9859323/viewspace-616508/ ls_hdname = wa_vbak-vbeln . CALL FUNCTION 'READ_ ...
- 20170501xlVBA销售订单整理一行转多行
Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = False Appli ...
- SAP销售订单需求类型的确定优秀级
需求类型的确定优秀级:1.策略组里的需求类型:2.MRP组里的:3.SO行项目类别+MRP类型4.SO行项目类别 部分截图:
- SAP销售订单屏幕增强行项目屏幕增强
1.在vbap表中 append一个自定义结构,如下图: 2.TCODE:SE80 程序名:SAPMV45A 屏幕:8459 如图: 3.标记增强的屏幕字段 4.屏幕增强的位置 *& ...
随机推荐
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...
- [SAP ABAP开发技术总结]程序自己以JOB方式运行
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- SQL SERVER 2005中同义词实例
From : http://www.cnblogs.com/jackyrong/archive/2006/11/15/561287.html 在SQL SERVER 2005中,终于出现了同义词了,大 ...
- Linux下C程序的编译,运行,及调试
先查看linux有没有gcc 和 gdb $ gcc -v $ gdb -v 如果没有安装gcc,可以 $ yum install gcc 要获取管理员权限才能安装软件,$ su root (有的li ...
- iOS - Swift NSSize 尺寸
前言 结构体,这个结构体用来表示事物的宽度和高度. public typealias NSSize = CGSize public struct CGSize { public var width: ...
- iOS - TouchID 指纹识别
前言 NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8. ...
- iOS - UIColor
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIColor : NSObject <NSSecureCoding, NSCopying> @avai ...
- URLConnection 使用
统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <M ...
- lab_c!
#include<stdio.h> hi() { printf("hello world!\n"); } int main() { hi(); int i = hi() ...
- Java编程思想学习笔记_1(Java内存和垃圾回收)
1.Java中对象的存储数据的地方: 共有五个不同的地方可以存储数据. 1)寄存器.最快,因为位于处理器的内部,寄存器按需求分配,不能直接控制. 2)堆栈.位于通用RAM,通过堆栈指针可以从处理器那里 ...