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. Windwos2008如何关闭IE增强的安全配置

    如题 方法:

  2. Python Challenge 第五关

    进入第五关,一张图和一行提示: pronounce it.右键源代码,只有一行注释: <!-- peak hell sounds familiar ? --> peak hell 听起来熟 ...

  3. 基于python脚本的对拍debug

    首先,这是python脚本 import os; for i in range(0,20): print ("Case:"+str(i)); print ("random ...

  4. 预防SQL注入笔记

    SQL注入如何预防? 本文参考自owasp,重点是提供清晰,简单,可操作的指导,以防止应用程序中的SQL注入漏洞.不幸的是,SQL注入攻击很常见,这是由于两个因素: SQL注入漏洞的显着流行 目标的吸 ...

  5. python中a=a+2与a+=2的区别

    1.a=a+2,表示一个新的对象,新的对象名字还是a,但是指向的内存地址已经变了 >>> a=2 >>> id(a) 140406287260016 >> ...

  6. Linux退出时出现there are stopped jobs如何解决?

    Linux 使用exit时出现there are stopped jobs如何解决? 这是因为一些命令被挂起了, 在后台驻留,需要关闭. 解决问题: 输入命令jobs -l显示停止进程的详细列表 可以 ...

  7. MySQL命令学习(一)

    今天我们来学习一下MySQL中的经常使用命令(MySQL中的命令keyword是不区分大写和小写的): (1)show databases; 显示MySQL中的全部database (2)create ...

  8. python(19)- 列表生成式和生成器表达式练习Ⅰ

    列表表达式 程序一: 常规写法: egg_list=[] for i in range(100): egg_list.append('egg%s' %i) print(egg_list) 列表表达式写 ...

  9. WeX5开发指南

    WeX5入门.UI2开发.App开发.服务端开发.扩展资料学习. 1 新手入门 1.1 运行WeX5的demo(视频) 1.2 App开发.调试.打包部署完整过程(视频) 1.3 创建第一个应用(视频 ...

  10. 为什么应使用 Node.js

    为什么应使用 Node.js JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScrip ...