BAPI per chiusura tecnica di un Ordine di Manutenzione
Nel caso in cui si debba effettuare la chiusura tecnica di un OdM, in pratica che simuli la transazione IW32, mediante codice ABAP, usare la BAPI_ALM_ORDER_MAINTAIN.
Riporto il codice per il popolamento della bapi:
DATA: lt_bapiret TYPE bapiret2_t,
lt_methods TYPE STANDARD TABLE OF bapi_alm_order_method,
ls_methods TYPE bapi_alm_order_method,
lt_header_i TYPE STANDARD TABLE OF bapi_alm_order_headers_i,
ls_header_i TYPE bapi_alm_order_headers_i,
lt_header_up TYPE STANDARD TABLE OF bapi_alm_order_headers_up,
ls_header_up TYPE bapi_alm_order_headers_up,
lv_aufnr TYPE
AUFNR,
lv_err
TYPE
boolean.
lv_err = abap_false.
lv_aufnr = '590042282'.
CLEAR: ls_methods.
ls_methods-refnumber = '000001'.
ls_methods-objecttype = 'HEADER'.
ls_methods-method = 'TECHNICALCOMPLETE '.
ls_methods-objectkey = lv_aufnr.
APPEND ls_methods TO lt_methods.
CLEAR:ls_methods.
ls_methods-refnumber = '000001'.
ls_methods-objecttype = ''.
ls_methods-method = 'SAVE'.
ls_methods-objectkey = lv_aufnr.
APPEND ls_methods TO lt_methods.
CLEAR:ls_header_i.
ls_header_i-orderid = lv_aufnr.
APPEND ls_header_i TO lt_header_i.
CLEAR:ls_header_up.
ls_header_up-orderid = p_aufnr.
APPEND ls_header_up TO lt_header_up.
CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
TABLES
it_methods = lt_methods
it_header = lt_header_i
it_header_up = lt_header_up
return = lt_bapiret.
LOOP AT lt_bapiret ASSIGNING FIELD-SYMBOL(<lfs_bapiret>)
WHERE type = 'A' OR type = 'E'.
lv_err = abap_true.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
EXIT.
ENDLOOP.
CHECK lv_err = abap_false.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
NOTA: Nel caso in cui, prima della chiusura tecnica di un OdM, vengono effettuate altre operazioni sull'OdM, ad esempio lo storno delle ore, richiamando la bapi BAPI_ALM_CONF_CANCEL, dato che questa bapi effettua delle chiamate a delle sessioni di upgrade asincrone, si potrebbero verificare degli errori nella chiamata della bapi BAPI_ALM_ORDER_MAINTAIN
In questo caso usare al posto della bapi BAPI_ALM_ORDER_MAINTAIN, la seguente BAPI:
DATA: lt_return TYPE STANDARD TABLE OF bapiret1,
lv_date TYPE riwo1-bezdt,
lv_time TYPE riwo1-brzur,
lv_aufnr TYPE
AUFNR
,
lv_err TYPE boolean.
FREE: lt_return[].
lv_date = sy-datum.
lv_time = sy-uzeit.
lv_err = abap_false.
lv_aufnr = '093030303'.
CALL FUNCTION 'BAPI_ISUSMORDER_SETSTATUSTECHN'
EXPORTING
number = lv_aufnr
referencedate = lv_date
referencetime = lv_time
TABLES
return = lt_return.
LOOP AT lt_return ASSIGNING FIELD-SYMBOL(<lfs_return>)
WHERE type = 'A' OR type = 'E'.
lv_err = abap_true.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
EXIT.
ENDLOOP.
CHECK lv_err = abap_false.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews