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.屏幕增强的位置 *& ...
随机推荐
- Hibernate 具体代码
package com.shuyinghengxie.doudou; import static org.junit.Assert.*; import java.util.Date; import j ...
- jdk安装环境变量设置
设置JAVA_HOME,点击新建,变量名:JAVA_HOME,变量值:D:\java\jdk1.7.0,即刚才jdk安装的路径. 设置CLASSPATH属性,变量名:CLASSPATH,变量值:. ...
- QQ音乐项目(OC版) - 实现细节
QQ 音乐看似简单,但自己手动实现起来,才发现没有那么简单,有好多细节,需要注意. github : https://github.com/keenleung/QQMusic-OC 一.业务逻辑 首先 ...
- winform打开唯一窗体、构造函数传值
制作登入窗体: 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form ...
- python使用open经常报错:TypeError: an integer is required的解决方案
错误是由于从os模块引入了所有的函数导致的,os模块下有一个open函数,接受整型的文件描述符和打开模式,from os import *引入os模块的open函数,覆盖了python内建的open函 ...
- Android网络编程系列 一 TCP/IP协议族之链路层
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RA ...
- JavaWeb学习计划
1 HTML2 CSS3 JavaScript4 XML5 Tomcat6 Servlet7 HTTP8 Cookie Session9 JSP10 JSTL11 MySQL12 JDBC13 过滤器 ...
- Android控件之RadioGroup与RadioButton(单选控件)
一.RadioGroup与RadioButton 1.什么是RadioGroup: RadioButton的一个集合,提供多选机制 2.什么是RadioButton: RadioButton包裹在Ra ...
- linux特殊字符
linux特殊字符: * 匹配文件名中的任何字符串,包括空字符串. ? 匹配文件名中的任何单个字符. [...] 匹配[ ]中所包含的任何字符. [!...] 匹配[ ]中非感叹号!之后的字符. 当s ...
- 根据用户输入的二代身份证号码自动为其计算生成出生日期的javascript方法
if(idTypeIsChecked.checked == true){//如果选中的是二代身份证 var birthDateValue = document.getElementById('idNu ...