二维码

读取交货单拣配数量lips-lfimg

Twilight发表于 2018-10-12 14:41Twilight 最后回复于 2018-10-12 14:41 [复制链接] 12118 0

SAP交货单交货数量在lips中直接读取,但是拣配数量lfimg,只存在vbfa中,且如果基本计量单位和销售单位不一样,那么需要数量的转换

一、部分代码:
  1.       SELECT SUM( rfmng ) INTO lv_rfmng
  2.       FROM vbfa
  3.       WHERE vbelv = lt_lips-vbeln
  4.         AND posnv = lt_lips-posnr
  5.         AND vbtyp_n = 'Q'.
  6.       IF sy-subrc = 0.
  7.         CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'  "基本计量单位-->销售单位
  8.           EXPORTING
  9.             input                = lv_rfmng
  10. *           KZMEINH              = ' '
  11.             matnr                = lt_lips-matnr
  12.             meinh                = lt_lips-vrkme  "销售单位
  13.             meins                = lt_lips-meins  "基本计量单位
  14.           IMPORTING
  15.             output               = t_item-pikmg
  16.           EXCEPTIONS
  17.             conversion_not_found = 1
  18.             input_invalid        = 2
  19.             material_not_found   = 3
  20.             meinh_not_found      = 4
  21.             meins_missing        = 5
  22.             no_meinh             = 6
  23.             output_invalid       = 7
  24.             overflow             = 8
  25.             OTHERS               = 9.
  26.       ENDIF.
  27.       t_item-vrkme = lt_lips-vrkme.
复制代码

二、调用标准函数直接取拣配数量:WB2_GET_PICK_QUANTITY
  1. DATA:e_pikmg TYPE pikmg.

  2. CALL FUNCTION 'WB2_GET_PICK_QUANTITY'
  3.   EXPORTING
  4.     i_vbeln             = i_head-vbeln
  5.     i_posnr             = t_item-posnr
  6. *   I_MODE              = ' '
  7.   IMPORTING
  8.     e_pikmg             = e_pikmg
  9.   EXCEPTIONS
  10.     document_read_error = 1
  11.     OTHERS              = 2.
复制代码

三、交货单拣配发货过账时,拣配数量的控制1、增强MV50AFZ1拣配数量XLIPS-PIKMG
  1. FORM USEREXIT_SAVE_DOCUMENT_PREPARE.
  2. *{   INSERT         SGDK905697                                        1
  3. *发货过账时拣配数量为0 检查
  4. DATA:lv_wbstk TYPE vbuk-wbstk.

  5. CHECK likp-lfart = 'ZLF1' AND vbuk-wbstk = 'C'."VBUK-WBSTK check post goods issue

  6. SELECT SINGLE  wbstk INTO lv_wbstk FROM vbuk WHERE vbeln = vbuk-vbeln AND wbstk = 'C'.
  7. IF sy-subrc <> 0 .
  8.   LOOP AT xlips WHERE updkz NE 'D' AND pikmg IS INITIAL.
  9.     READ TABLE xlips TRANSPORTING NO FIELDS WITH KEY uecha = xlips-posnr.
  10.     IF sy-subrc = 0.
  11.       CONTINUE.
  12.     ELSE.
  13.       MESSAGE '拣配数量不能为0!' TYPE 'E'.
  14.     ENDIF.
  15.   ENDLOOP.
  16. ENDIF.

  17. *}   INSERT
  18. ENDFORM.
复制代码

但FORM USEREXIT_SAVE_DOCUMENT_PREPARE中报错,会在某些场景触发系统报错:Risk of posting several mat.documents for one delivery->long text

2、交货单不完整性检查配置
交货单中 交货数量=0,拣配数量=0,不允许过账,可以通过交货单不完整性检查配置来解决,但是这里有个致命的问题,不支持交货单物料的批次拆分,所以该配置又局限性,不适用。
不完整日志1.jpg
不完整日志2.jpg
不完整日志3.jpg
不完整日志4.jpg

3、物料没库存,参考创建交货单,直接没有该物料
VL02N_PIKING1.jpg
VL02N_PIKING2.jpg
注意,将“检查数量0”设置为B,即可实现避免交货单0拣配数量问题
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表