1)首先读取物料主数据(MARC)获取可用性检查设置(MTVFP),填写到VBAP-MTVFP
该字段来自物料主数据“销售:一般/工厂”-》“一般数据”-》“可用性检查”
2)首先在单元FV45VF0B_BEDARF_LESEN代码里设置可用性检查的初始(TMVFP-OBVFP)
代码摘抄如下
DA_AUFRUFER = CHARA.
IF TVAK-LISOF NE SPACE. "立即交货
IF XVBUK-VBELN NE VBAK-VBELN.
PERFORM XVBUK_LESEN(SAPFV45K) USING VBAK-VBELN.
ENDIF.
IF XVBUK-LFSTK NE CHARB AND XVBUK-LFSTK NE CHARC.
DA_AUFRUFER = CHARB.
ENDIF.
ENDIF.
在同个这个值调用
CALL FUNCTION 'RV_REQUIREMENT_GET'
EXPORTING
AUFRUFER = DA_AUFRUFER
MATERIAL = US_MATNR
PRUEFGRUPPE = US_MTVFP
WERK = US_WERKS
BELEG = US_VBELN
POSITION = US_POSNR
VPMAT = US_VPMAT
VPWRK = US_VPWRK
PZMNG_LOESCHEN = DA_KORRI
KORR_AKT = US_KORRI
KORR_ALT = DA_KOPIERMODUS
CALL_MODUS = DA_CALL_MODUS
NICHT_SPERREN = DA_NICHT_SPERREN
VBTYP = VBAK-VBTYP
IMPORTING
SUMMIERUNG = SUMBD
MAT_GESPERRT = DA_GESPERRT
TABLES
AVBBD = AVBBD
XMVERF_POS = XMVERF_POS
XQUOT_VB = XQUOT_VB
XQUOT_CH = XQUOT_CH
EXCEPTIONS
MARC_MATNR_GESPERRT = 01
MARC_VPMAT_GESPERRT = 02
ENQUEUE_FEHLER = 03.
3)在RV_REQUIREMENT_GET函数中根据读取的可用性检查设置读取可用性检查控制(TMVF)和可用量检查冻结(TMVFP)
PERFORM TMVF_SELECT USING PRUEFGRUPPE AUFRUFER CHARX SY-SUBRC.
3.1)读取可用量检查冻结(TMVFP)的代码摘抄
代码单元:LV03VFT2
FORM TMVFP_SELECT USING US_MTVFP
US_OBVFP
US_ERROR
US_SUBRC.
US_SUBRC = 0.
IF TMVFP-MTVFP NE SPACE AND TMVFP-OBVFP NE SPACE.
CHECK: US_MTVFP NE TMVFP-MTVFP OR
US_OBVFP NE TMVFP-OBVFP.
ENDIF.
* Wenn in TMVF-ACENQ gesetzt wird TMVFP eigentlich nicht gebraucht,
* verwendet wird allerdings OBVFP als Aufrufer.
* Ebenso wenn VERPN (keine Pr黤ung) gesetzt
IF ( TMVF-ACENQ NE SPACE OR "物料在具有传递需求的可用性检查中冻结
TMVF-VERPN NE SPACE ) AND "没有可用性检查
US_MTVFP NE SPACE AND
US_OBVFP NE SPACE.
TMVFP-MTVFP = US_MTVFP.
TMVFP-OBVFP = US_OBVFP.
TMVFP-VFPSP = SPACE.
ENDIF.
CHECK TMVF-ACENQ EQ SPACE AND TMVF-VERPN EQ SPACE.
IF US_MTVFP EQ SPACE.
US_SUBRC = 4.
ELSE.
SELECT SINGLE * FROM TMVFP WHERE MTVFP = US_MTVFP
AND OBVFP = US_OBVFP.
IF SY-SUBRC NE 0.
US_SUBRC = 4.
ENDIF.
ENDIF.
IF US_SUBRC NE 0.
IF US_ERROR NE SPACE.
CLEAR: TMVFP.
MESSAGE I305(VV) WITH US_MTVFP US_OBVFP.
ENDIF.
ENDIF.
ENDFORM. "TMVFP_SELECT
4)、在代码单元LV03VFA7中形成(PRREG)检查可用性检查的规则,代码摘抄如下:
p_atpcs-prreg = tmvfp-obvfp.
p_atpcs-prreg+1(1) = p_mverf_pos-sobkz. "SOBKZ:特殊库存标识
IF p_mverf_pos-sobkz NE space AND
p_mverf_pos-sobkz NE chare AND
p_mverf_pos-sobkz NE charq.
p_atpcs-kunnr = p_mverf_pos-kunnr.
ELSE.
CLEAR p_atpcs-kunnr.
ENDIF.
5)这样可用性的检查控制的两个因素就都决定出来了检查规则和检查组(MTVFP prreg),这样就可以读取T441V表,并用于可用性检查。
6)相关 TCODE
OVZ2
OVZ1
OVZ9