VL01N/VL02N增强-退货订单(ZRE,ZWRE,ZRD)在VL01N对于发货过账时判断成本是否为0碰到的问题
2013-09-29 09:18
459 查看
ZOR,ZWOR等类型订单在VL01N发货过账时用增强MCS50001判断,但是ZRE等类型的退货订单不会进入MCS50001这个增强,早几个月前就找过VL01N的增强,当时测试了很多都不会执行,今天下了狠心,把所有增强都打开,发现还真有个增强可以执行到。早先测试的时候看这个增强怎么也不像是用于判断的。
经测试发现该增强在VL01N新创建及发货过账的时候都会执行。而且参数只有 is_lips 和is_likp,在新建和发货过账时完全一样,业务部门要求在发货过账时才判断,根本无法用现有参数数据判断是否新建还是发货过账,又给出了一大难题。
折腾了好长时间想到直接用SY-UCOMM判断是否点击了发货过账按钮,经测试还真可以。
*&---------------------------------------------------------------------*
*& 包括 ZXV50U07
*&---------------------------------------------------------------------*
break ypcheng.
DATA: field(30),
ls_attyp LIKE mara-attyp,
ls_taklv LIKE mara-taklv,
ldc_kwert LIKE konv-kwert,
ls_knumv LIKE vbak-knumv,
ls_matnr LIKE vbap-matnr,
ls_mtart LIKE mara-mtart.
DATA: ls_message(200) TYPE c.
FIELD-SYMBOLS:<f1> TYPE ANY,<f2> TYPE ANY.
break ypcheng.
IF sy-ucomm = 'WABU_T'.
break ypcheng.
field = '(SAPMV50A)VBAK-AUART'.
ASSIGN (field) TO <f1>.
IF <f1> = 'ZRE' OR <f1> = 'ZWRE' OR <f1> = 'ZRD'.
break ypcheng.
field = '(SAPMV50A)VBAK-KNUMV'.
ASSIGN (field) TO <f2>.
ls_knumv = <f2>.
ls_message = ''.
SELECT kwert INTO ldc_kwert FROM konv WHERE knumv = ls_knumv AND ( kschl = 'ZIV3' OR kschl = 'ZIV1' OR kschl = 'VPRS' ) AND kposn = is_lips-posnr.
SELECT SINGLE attyp mtart INTO (ls_attyp,ls_mtart) FROM mara WHERE matnr = is_lips-matnr.
IF ldc_kwert = 0 AND is_lips-matkl <> 'R1699' AND is_lips-matkl <> 'R9998' AND is_lips-matkl <> 'R9999' AND is_lips-lfimg > 0 AND ls_attyp <> '10' AND ls_mtart <> 'Z008'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = is_lips-matnr
IMPORTING
output = ls_matnr.
CONCATENATE '当前订单' ls_matnr '商品的ZIV1/ZIV3/VPRS的价格为0,不能发货过账!' INTO ls_message.
MESSAGE e398(00) WITH ls_message.
ENDIF.
ENDSELECT.
ENDIF.
ENDIF.
转载自:http://blog.sina.com.cn/s/blog_6f99a0500100ryzl.html
经测试发现该增强在VL01N新创建及发货过账的时候都会执行。而且参数只有 is_lips 和is_likp,在新建和发货过账时完全一样,业务部门要求在发货过账时才判断,根本无法用现有参数数据判断是否新建还是发货过账,又给出了一大难题。
折腾了好长时间想到直接用SY-UCOMM判断是否点击了发货过账按钮,经测试还真可以。
*&---------------------------------------------------------------------*
*& 包括 ZXV50U07
*&---------------------------------------------------------------------*
break ypcheng.
DATA: field(30),
ls_attyp LIKE mara-attyp,
ls_taklv LIKE mara-taklv,
ldc_kwert LIKE konv-kwert,
ls_knumv LIKE vbak-knumv,
ls_matnr LIKE vbap-matnr,
ls_mtart LIKE mara-mtart.
DATA: ls_message(200) TYPE c.
FIELD-SYMBOLS:<f1> TYPE ANY,<f2> TYPE ANY.
break ypcheng.
IF sy-ucomm = 'WABU_T'.
break ypcheng.
field = '(SAPMV50A)VBAK-AUART'.
ASSIGN (field) TO <f1>.
IF <f1> = 'ZRE' OR <f1> = 'ZWRE' OR <f1> = 'ZRD'.
break ypcheng.
field = '(SAPMV50A)VBAK-KNUMV'.
ASSIGN (field) TO <f2>.
ls_knumv = <f2>.
ls_message = ''.
SELECT kwert INTO ldc_kwert FROM konv WHERE knumv = ls_knumv AND ( kschl = 'ZIV3' OR kschl = 'ZIV1' OR kschl = 'VPRS' ) AND kposn = is_lips-posnr.
SELECT SINGLE attyp mtart INTO (ls_attyp,ls_mtart) FROM mara WHERE matnr = is_lips-matnr.
IF ldc_kwert = 0 AND is_lips-matkl <> 'R1699' AND is_lips-matkl <> 'R9998' AND is_lips-matkl <> 'R9999' AND is_lips-lfimg > 0 AND ls_attyp <> '10' AND ls_mtart <> 'Z008'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = is_lips-matnr
IMPORTING
output = ls_matnr.
CONCATENATE '当前订单' ls_matnr '商品的ZIV1/ZIV3/VPRS的价格为0,不能发货过账!' INTO ls_message.
MESSAGE e398(00) WITH ls_message.
ENDIF.
ENDSELECT.
ENDIF.
ENDIF.
转载自:http://blog.sina.com.cn/s/blog_6f99a0500100ryzl.html
相关文章推荐
- //题目:输入一个年份,判断是否有闰年. 碰到一个问题```
- VA02 删除销售订单增强,根据订单类型确认是否可删除
- 数据结构常见问题(二)利用栈和队列判断字符串是否是回文
- 检查订单是否有退货
- leetcode上做的一道判断括号字符串是否有效的问题
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 八数码问题完全版-是否可解判断及求解
- #if 标签判断是否存在的问题及解决思路
- sap-abap-交货出口-交货单保存前设定所有行项发货仓位且过账前检查是否仓位一致
- python新手必碰到的问题---encode与decode,中文乱码,for 循环 in判断中文
- 判断链表中是否有环 -- 有关单链表中环的问题
- [zz]判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断单链表是否有环及确定环的入口结点问题
- 小黑小波比.判断字段是否存在和字段值是否为空问题
- String字符串判断是否一致要注意的问题
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- O2O地图应用之判断用户订单地址是否在服务范围内
- 如何判断一个程序是否会有线程安全问题?
- 判断链表中是否有环 ----- 有关单链表中环的问题
- JS动态判断radio是否被选中的问题