可用性检查函数函数
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
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