交货单可用性检查,库存+批次可用

来源:互联网 发布:虚拟机的linux不能启动 编辑:程序博客网 时间:2024/06/01 22:30
可用性检查函数函数
FUNCTION zsdfm001_60.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_MATNR) TYPE  MATNR OPTIONAL
*"     VALUE(I_CHARG) TYPE  CHARG_D OPTIONAL
*"     VALUE(I_VBELN) TYPE  VBELN
*"  EXPORTING
*"     VALUE(E_ITEM) TYPE  ZSDS086
*"----------------------------------------------------------------------
DATA: i_return LIKE bapiwmdve OCCURS 0 WITH HEADER LINE.
DATA: i_WMDVSX LIKE BAPIWMDVS OCCURS 0 WITH HEADER LINE.




*    批次库存
DATA:BEGIN OF i_lips OCCURS 0,
      matnr LIKE lips-matnr,
      charg LIKE lips-charg,
      werks LIKE lips-werks,
      lgort LIKE lips-lgort,
      meins LIKE lips-meins,
      END OF i_lips.
      SELECT
      matnr
      charg
      werks
      lgort
      VRKME
      INTO TABLE i_lips
      FROM lips
      WHERE vbeln = i_vbeln.


      IF i_matnr IS NOT INITIAL."说明查询的是没有批次的库存
                 READ TABLE i_lips WITH KEY matnr = i_matnr.


                SELECT SINGLE
                mard~matnr
                mard~labst
                mara~meins
                INTO (e_item-matnr,e_item-menge,e_item-meins )
                FROM mard
                INNER JOIN mara ON mara~matnr = mard~matnr
                WHERE  mard~werks = i_lips-werks AND mard~lgort = i_lips-lgort AND mard~matnr = i_matnr .




ELSEIF i_charg IS NOT INITIAL."查询单个批次


      SELECT "SINGLE
      mchb~matnr
      mchb~charg
      mchb~clabs
      INTO  (e_item-matnr,e_item-charg,e_item-chnum )
      FROM mchb
      FOR ALL ENTRIES IN i_lips
      WHERE  mchb~werks = i_lips-werks AND mchb~lgort = i_lips-lgort and matnr = i_lips-matnr AND mchb~charg = i_charg .
     ENDSELECT.


      SELECT "SINGLE
      mard~matnr
      mard~labst
      mara~meins
      INTO (e_item-matnr,e_item-menge,e_item-meins )
      FROM mard
      INNER JOIN mara ON mara~matnr = mard~matnr
      FOR ALL ENTRIES IN i_lips
      WHERE  mard~werks = i_lips-werks AND mard~lgort = i_lips-lgort AND mard~matnr = e_item-matnr .
     ENDSELECT.


*          *批次可用库存
      READ TABLE i_lips WITH KEY matnr = e_item-matnr.


      CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
      EXPORTING
        plant      = i_lips-werks
        material   = e_item-matnr
        UNIT       = i_lips-meins
        check_rule = 'B'
        stge_loc   = i_lips-lgort
        batch      = e_item-charg
      TABLES
        WMDVSX = I_WMDVSX
        wmdvex     = i_return.
        READ TABLE i_return INDEX 1.
        e_item-chnum_k = i_return-COM_QTY.
        REFRESH i_return.
  ENDIF.


*            *库位可用库存
refresh i_return.
  CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
  EXPORTING
    plant      = i_lips-werks
    material   = e_item-matnr
    UNIT       = i_lips-meins
    check_rule = 'B'
    stge_loc   = i_lips-lgort
  TABLES
    WMDVSX = I_WMDVSX
    wmdvex     = i_return.


  READ TABLE i_return INDEX 1.
  e_item-menge_k = i_return-COM_QTY.


*单位换算
  CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
EXPORTING
  INPUT   = e_item-menge      "clabs--基本计量单位下库存数量,为传入参数
  kzmeinh = ' '
  matnr   = e_item-matnr
  meinh   = i_lips-meins
IMPORTING
  OUTPUT  = e_item-menge.      "输出值赋值给zkcsl--公斤计库存数量


  CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
EXPORTING
  INPUT   = e_item-chnum      "clabs--基本计量单位下库存数量,为传入参数
  kzmeinh = ' '
  matnr   = e_item-matnr
  meinh   = i_lips-meins
IMPORTING
  OUTPUT  = e_item-chnum.      "输出值赋值给zkcsl--公斤计库存数量


E_ITEM-meins = I_LIPS-meins.
  ENDFUNCTION
0 0
原创粉丝点击