terça-feira, 24 de março de 2026

CALL FUNCTION STARTING NEW TASK - CALLING

- FUNÇÃO


FUNCTION ZFM_TESTE_INVOICE_CREATE

IMPORTING

VALUE(is_header) TYPE bapi_incinv_create_header

VALUE(it_tm) TYPE tb_bapi_incinv_create_tm_item

VALUE(it_item) TYPE tab_bapi_incinv_create_item

EXPORTING

VALUE(ev_invoicenumber) TYPE rbkp-belnr

VALUE(ev_fiscalyear) TYPE rbkp-gjahr

VALUE(et_return) TYPE bapiret2_t.




CLEAR: ev_invoicenumber, ev_fiscalyear.

CLEAR et_return.


CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE1'

EXPORTING

headerdata = is_header

IMPORTING

invoicedocnumber = ev_invoicenumber

fiscalyear = ev_fiscalyear

TABLES

itemdata = it_item

return = et_return

tm_itemdata = it_tm.



IF ev_invoicenumber IS NOT INITIAL.


et_return = VALUE #( ( type = 'S' id = 'ZMM_DRC' number = '000' message_v1 = 'Faturamento criado com sucesso.' ) ).


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = abap_true.


ELSE.


CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.


ENDIF.


ENDFUNCTION.

==== Chamada da função

CALL FUNCTION 'ZFM_TESTE_INVOICE_CREATE' STARTING NEW TASK 'Z_TESTE_INV'

CALLING zcl_teste_inv=>get_bapi_return ON END OF TASK

EXPORTING

is_header = ls_header

it_tm = lt_tm

it_item = lt_item.



WAIT FOR ASYNCHRONOUS TASKS UNTIL gt_return[] is not initial.



==== Método CALL BACK


CLASS-METHOD: get_bapi_return IMPORTING VALUE(p_task) TYPE clike,


METHOD get_bapi_return.


RECEIVE RESULTS FROM FUNCTION 'ZFM_TESTE_INVOICE_CREATE'

IMPORTING

et_return = gt_return

ev_invoicenumber = gs_bapi_miro_ret-invoicedocnumber

ev_fiscalyear = gs_bapi_miro_ret-fiscalyear

EXCEPTIONS

communication_failure = 1

system_failure = 2.


ENDMETHOD.




Nenhum comentário:

Postar um comentário