1. 程式人生 > 其它 >CO09可用性檢查

CO09可用性檢查

技術標籤:ABAPMM

LOOP AT it_mard INTO wa_mard.
  MOVE-CORRESPONDING wa_mard TO wa_result.
  CALL FUNCTION 'ZFG_LOCAL_3'
    EXPORTING
      i_matnr   = wa_mard-matnr
      i_werks   = wa_mard-werks
    TABLES
      lt_atpdsx = lt_atpdsx.
  LOOP AT lt_atpdsx INTO ls_atpdsx WHERE atpnr+6(4) = wa_mard-lgort.
    IF ls_atpdsx-delkz = 'VJ' OR ls_atpdsx-delkz = 'VC'. "訂單、交貨單
      wa_result-kbmeng = wa_result-kbmeng + ls_atpdsx-qty_o.      "訂單、交貨單佔用    (計劃數量為負值)
    ENDIF.
    CLEAR:ls_atpdsx.
  ENDLOOP.
  LOOP AT lt_atpdsx INTO ls_atpdsx WHERE delkz = 'U1'. "UB轉儲單佔用
    wa_ekpo-ebeln = ls_atpdsx-delnr.
    wa_ekpo-matnr = wa_mard-matnr.
    SELECT SINGLE reswk FROM ekko INTO wa_ekpo-werks
      WHERE ebeln = wa_ekpo-ebeln.
    wa_ekpo-menge = ls_atpdsx-qty_o.
    APPEND wa_ekpo TO it_ekpo.
    CLEAR: ls_atpdsx, wa_ekpo.
  ENDLOOP.
  APPEND wa_result TO it_result.
  CLEAR:wa_mard,wa_result.
ENDLOOP.

FUNCTION zfg_local_3.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_MATNR) TYPE  MATNR
*"     VALUE(I_WERKS) TYPE  WERKS_D
*"  TABLES
*"      LT_ATPDSX STRUCTURE  ATPDS OPTIONAL
*"----------------------------------------------------------------------

  DATA: p_atpca   TYPE atpca.
  DATA: lt_atpcsx TYPE STANDARD TABLE OF atpcs,
        ls_atpcsx TYPE atpcs.

  p_atpca-anwdg      = '8'.
  p_atpca-anwdg_orig = 'A'.
  p_atpca-azerg      = 'T'.
  p_atpca-rdmod      = 'S'.  " A→總計,S→單個
  p_atpca-xenqmd     = 'N'.
  p_atpca-force_r3   = 'X'.

  ls_atpcsx-matnr  = i_matnr.
  ls_atpcsx-werks  = i_werks.
  ls_atpcsx-prreg  = '01'.
  ls_atpcsx-chmod  = 'EXP'.
  ls_atpcsx-delkz  = 'VC'.
  ls_atpcsx-bdter  = sy-datum.
  ls_atpcsx-xline  = '1'.
  ls_atpcsx-trtyp  = 'A'.
  ls_atpcsx-IDXATP = '1'.
  ls_atpcsx-resmd  = 'X'.
  ls_atpcsx-chkflg  = 'X'.
  APPEND ls_atpcsx TO lt_atpcsx.

  CALL FUNCTION 'AVAILABILITY_CHECK'
    TABLES
      p_atpcsx = lt_atpcsx
      p_atpdsx = lt_atpdsx
    CHANGING
      p_atpca  = p_atpca
    EXCEPTIONS
      error    = 1
      OTHERS   = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFUNCTION.