VL01N/VL02N增强-退货订单(ZRE,ZWRE,ZRD)在VL01N对于发货过账时判断成本是否为0碰到的问题

来源:互联网 发布:淘宝客订单虚假交易 编辑:程序博客网 时间:2024/04/28 13:05
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




原创粉丝点击