sap-abap-交货出口-交货单保存前设定所有行项发货仓位且过账前检查是否仓位一致
2011-10-25 13:16
597 查看
开发要求:制作交货单的人员,需要同一张单的交货仓位保持一致,设计成在保存前将所有行都改为和第一行项的仓位一致。
在发货过时会检查如发现不一致,不于过账。
用户出口如下:
修改 Userexit_save_document_prepare 例程
代码如下:
在发货过时会检查如发现不一致,不于过账。
用户出口如下:
修改 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 = '1010' or xlikp-VKORG = '1020' ). "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 = 0. loop at xlips . if i_idx = 0 . "取得第一行的库位 i_idx = i_idx + 1. 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 = 0. i_Cnt = 0. loop at xlips . if i_idx = 0 . "取得第一行的仓位 i_idx = i_idx + 1. 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 + 1. endif. clear xlips. endloop. if i_Cnt > 1. msg = i_Cnt . concatenate '更新了' msg '个行项的仓位' into msg. message msg type 'I'. endif. endif. ENDIF. ENDFORM. "USEREXIT_SAVE_DOCUMENT_PREPARE *eject
相关文章推荐
- SAP-BAPI-将指定的交货单发货过账(指定账期和出货仓位)
- ABAP 订单-交货单-发货过账自动完成 案例
- SAP所有用户出口列表(4.6C)(续)
- C#检查所有的checkbox 是否被选中
- SAP使用VL01N创建发货报错“对于指导所选日期的交货没有到期的计划行”的原因
- 标准附件,如果上传了没有保存.怎么检查他是否上传了附件
- SAP ABAP收货或者货物移动(MIGO,MB11,MB1A)在保存时候的增强点
- SAP所有用户出口列表(4.6C)
- Texmaker错误文件不能保存,请检查你是否拥有写权限
- Linux 检查是否安装perl模块及列出所有已安装的perl模块(安装路径、版本号)
- ######ssh:Junit遇到initializationError(知识点:Junit测试3要素:public、void、无参)==解决:检查所有方法的注解。是否添加正确
- SAP所有用户出口列表(4.6C)(续)
- 检查drawing中草绘线,是否与零件中截面上的线一致
- SAP所有用户出口列表(4.6C)(续)
- ABAP如何检查字符串是否为日期或时间格式
- SAP交货单过账自动生产采购订单、采购订单自动收货入库
- sap-abap-销售订单的订货,生产,存货,发货情况统计报表
- ABAP中,利用函数WS_DELIVERY_UPDATE进行VL02N发货过账时获取凭证号(mblnr)
- Oracle 中建表时数据库不检查外键约束的字段宽度是否一致
- sap-abap 取销售订单行的已发货数量