MV50AFZ1   这个程序里面找个FORM 用户出口,
FORM USEREXIT_SAVE_DOCUMENT_PREPARE.
 
用户出口如下:

例:需求:

开发要求:制作交货单的人员,需要同一张单的交货仓位保持一致,设计成在保存前将所有行都改为和第一行项的仓位一致。

在发货过时会检查如发现不一致,不于过账。

*---------------------------------------------------------------------*
* FORM USEREXIT_SAVE_DOCUMENT_PREPARE *
*---------------------------------------------------------------------*
* This userexit can be used for changes or checks, before a *
* document is saved. *
* *
* If field T180-TRTYP contents 'H', the document will be *
* created, else it will be changed. *
* *
* This form is called at the beginning of form BELEG_SICHERN *
* *
*---------------------------------------------------------------------*
FORM userexit_save_document_prepare. IF sy-uname = 'HS014'.
BREAK-POINT.
ENDIF. "只处理对客户发货,公司间交易不处理.
IF ( tcode = 'VL02N' OR tcode = 'VL02' OR tcode = 'VL01N' OR tcode = 'VL01' ) and ( xlikp-VKORG = '' or xlikp-VKORG = '' ). "DATA: XLIPS_C LIKE LIPSVB OCCURS 0 WITH HEADER LINE.
"DATA: I_LIPS LIKE LIPSVB OCCURS 0 WITH HEADER LINE.
data: c_lgort like xlips-lgort , i_idx type i,i_Cnt type i, msg type string. IF sy-ucomm = 'WABU_T'. "过账 需要检查 如果有不同仓位,则报错.
c_lgort = ''.
i_idx = .
loop at xlips .
if i_idx = . "取得第一行的库位
i_idx = i_idx + .
c_lgort = c_lgort = xlips-lgort.
endif.
if c_lgort <> xlips-lgort.
message '交货单内存在不同的交货仓位,请通知销售助理修改正确后再过账.' type 'E'.
endif.
clear xlips.
endloop.
endif. IF sy-ucomm = 'SICH_T' or sy-ucomm = 'YES' . "如果是保存(或退出提示保存) ,则统一更新仓位.
c_lgort = ''.
i_idx = .
i_Cnt = .
loop at xlips .
if i_idx = . "取得第一行的仓位
i_idx = i_idx + .
c_lgort = c_lgort = xlips-lgort.
if c_lgort = ''.
message '在保存交货单前请填写第一行项的交货仓位' type 'E'.
else.
concatenate '你在第一行项输入的仓是' c_lgort ',增强系统将按此仓位更新所有行项' into msg.
message msg type 'I'.
endif.
endif. if c_lgort <> xlips-lgort.
"更新仓位
xlips-lgort = c_lgort. "更新标识 U 表示该纪录被修改,需要更新,D表示删除,I表示新增
if xlips-updkz = ' '.
xlips-updkz = 'U'.
endif.
modify xlips.
i_Cnt = i_Cnt + . endif.
clear xlips.
endloop.
if i_Cnt > .
msg = i_Cnt .
concatenate '更新了' msg '个行项的仓位' into msg.
message msg type 'I'.
endif.
endif.
ENDIF.
ENDFORM. "USEREXIT_SAVE_DOCUMENT_PREPARE
*eject

20170228 交货单过账增强 MV50AFZ1的更多相关文章

  1. SAP交货单过账自动生产采购订单、采购订单自动收货入库

    公司间需要买卖操作,由于发货和收货都是同一批人在操作,为了减少业务人员的工作量,提高工作效率,特实现以上功能 1.增强实现:增强点为交货单过账成功时触发,在提交前触发,如果遇到不可预知问题,可能造成数 ...

  2. SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

    SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现 如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660.该内向交货单是在外向交货单8001632 ...

  3. 【MM系列】SAP 交货单屏幕增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 交货单屏幕增强   前言部分 ...

  4. SAP交货单增强MV50AFZ1问题

    在MV50AFZ1这个出口的子程序FORM USEREXIT_SAVE_DOCUMENT_PREPARE.中进行了一些控制 当VL01N创建交货单点击保存的时候检查行项目的信息,如果有问题给出TYPE ...

  5. 读取交货单拣配数量PIKMG(转)

    原文链接:https://www.591sap.com/thread-953-1-1.html SAP交货单交货数量在lips中直接读取,但是拣配数量lfimg,只存在vbfa中,且如果基本计量单位和 ...

  6. VL01N发货过账无法冲销

    1业务场景 SD和EWM在使用BAPI:BAPI_OUTB_DELIVERY_CONFIRM_DEC发货过账后,发现外向交货单无法被冲销,后来发现是在发货过账后,有一个字段VLSTK声明仓库被维护上了 ...

  7. SAP模块常用增强总结{转载}

    MM模块: 采购订单增强: BADI :ME_GUI_PO_CUST ME_PROCESS_PO_CUST 物料凭证增强: BADI:MB_DOCUMENT_BADI USER-EXIT:MBCF00 ...

  8. SAP模块常用增强总结(转)

    转自:http://blog.sina.com.cn/s/blog_4298a2c80102x40c.html MM模块: 采购订单增强: BADI :ME_GUI_PO_CUST ME_PROCES ...

  9. 【ABAP系列】SAP 关于出口(user-exit)MV50AFZ1的一些问题

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 关于出口(user-ex ...

随机推荐

  1. Ext grid单元格编辑时获取获取Ext.grid.column.Column

    item2.width = 80; //item2.flex = 1; item2.align = 'center'; item2.menuDisabled = true; //禁止显示列头部右侧菜单 ...

  2. 2008 SQL SERVER 用户 架构

    2008 SQL SERVER 用户: SERVER用户与数据库用户 SERVER 与 数据库用户的映射,以使 登陆用户可访问数据库 架构等同于SCHEM (表空间),即表空间管理对象,建立层次对象关 ...

  3. WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC

    本文说的是解决过程,可直接点击本行略过探查内容,跳到最后的解决办法!! 现象: 1.WEBLOGIC安装在 CENTOSopenSUSE 等LINUX或者UNIX机器上,无论是虚拟机或者PC或者服务器 ...

  4. [反汇编练习] 160个CrackMe之028

    [反汇编练习] 160个CrackMe之028. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  5. linux mysql-server can't find mysql_config

    linux mysql-server can't find mysql_config Ask Question up vote7down votefavorite 3 I have a running ...

  6. JavaScript校验输入的字符串是否包含特殊字符

    校验在文本框输入的字符串中是否包含特殊字符串,js代码如下 function strInclude(substring){ if(substring){ var reg = new RegExp(&q ...

  7. 百科知识 华为手机P7如何更换电池

    参考下面 教程 https://item.jd.com/3265516.html  

  8. 《C程序猿:从校园到职场》出版预告(4):从“散兵游勇”到“正规部队”

    看过电视剧<楚汉传奇>的朋友应该对这个场景还有印象:当刘邦第一次去找项羽帮忙的时候.他们一行人看到了项羽军营是怎样练兵的.想到自己练兵的方法,当时就震惊了."刘家军"就 ...

  9. C# SQL 整表插入

    说明: (1)表A的一部分数据插入到表B (2)DataAccess 类,是放在DAL层下的底层类; da.StrConnection 写在DataAccess类中; //整表插入方法 private ...

  10. Kuebernetes之DaemonSet

    系列目录 DaemonSet确保集群中每个(部分)node运行一份pod副本,当node加入集群时创建pod,当node离开集群时回收pod.如果删除DaemonSet,其创建的所有pod也被删除,D ...