Z_SD_VBFA_SELECT
FUNCTION z_sd_vbfa_select.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_VBELV) LIKE VBUK-VBELN
*" EXPORTING
*" VALUE(INVOICE) LIKE VBRK-VBELN
*" VALUE(INV_STATUS) LIKE VBRK-FKSTO
*" VALUE(STATUS) TYPE CHAR20
*" TABLES
*" FVBFA STRUCTURE VBFA OPTIONAL
*"----------------------------------------------------------------------
* relevance check will be done in a requirement in this report it is temporar
y
DATA: lt_vbfa TYPE TABLE OF vbfa,
ls_vbfa TYPE vbfa,
lv_vbelv TYPE vbeln,
wa_vbrk TYPE vbrk.
lv_vbelv = i_vbelv.
* Read document flow
CALL FUNCTION 'SD_VBFA_SELECT'
EXPORTING
i_vbelv = lv_vbelv
TABLES
fvbfa = lt_vbfa[].
DELETE lt_vbfa WHERE vbtyp_n NE 'M'.
READ TABLE lt_vbfa[] INTO ls_vbfa WITH KEY vbtyp_n = 'M'.
IF sy-subrc = 0.
SELECT SINGLE * FROM vbrk INTO wa_vbrk WHERE vbeln = ls_vbfa-vbeln.
invoice = wa_vbrk-vbeln.
inv_status = wa_vbrk-fksto.
IF inv_status IS NOT INITIAL.
status = 'Cancelled'.
ELSE.
status = 'Not cancelled'.
ENDIF.
ELSE.
RETURN.
ENDIF.
ENDFUNCTION.
2. ZBAPI_SALESORDER
FUNCTION zbapi_salesorder.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(KUNNR) TYPE KUNNR
*" VALUE(MATNR) TYPE MATNR
*" EXPORTING
*" VALUE(V_VBELN) TYPE VBELN
*" TABLES
*" IT_RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
DATA : wa_order_header_in TYPE bapisdhd1,
wa_order_header_inx TYPE bapisdhd1x,
it_order_items_in TYPE STANDARD TABLE OF bapisditm,
it_order_items_inx TYPE STANDARD TABLE OF bapisditmx,
it_order_partners TYPE STANDARD TABLE OF bapiparnr,
wa_order_items_in TYPE bapisditm,
wa_order_items_inx TYPE bapisditmx,
wa_order_partners TYPE bapiparnr,
wa_return TYPE bapiret2.
* v_vbeln = '1000000000'.
wa_order_header_in-doc_type = 'ZDS'.
wa_order_header_in-sales_org = '2000'.
wa_order_header_in-distr_chan = 'DS'.
wa_order_header_in-division = 'D1'.
wa_order_header_in-doc_date = sy-datum.
wa_order_header_inx-doc_type = 'X'.
wa_order_header_inx-sales_org = 'X'.
wa_order_header_inx-distr_chan = 'X'.
wa_order_header_inx-division = 'X'.
wa_order_header_inx-doc_date = 'X'.
wa_order_items_in-itm_number = '000010'.
wa_order_items_in-material = matnr.
wa_order_items_in-target_qty = '100'.
wa_order_items_in-plant = 'MFG1'.
APPEND wa_order_items_in TO it_order_items_in.
CLEAR wa_order_items_in.
wa_order_items_inx-itm_number = '000001'.
wa_order_items_inx-material = 'X'.
wa_order_items_inx-target_qty = 'X'.
wa_order_items_inx-plant = 'X'.
APPEND wa_order_items_inx TO it_order_items_inx.
CLEAR wa_order_items_inx.
wa_order_partners-partn_role = 'AG'.
wa_order_partners-partn_numb = kunnr.
wa_order_partners-name = 'Lanco Inductries Ltd'.
wa_order_partners-street = '113 Udyog Vihar Phase II'.
wa_order_partners-postl_code = '321234'.
wa_order_partners-country = 'IN'.
APPEND wa_order_partners TO it_order_partners.
CLEAR wa_order_partners.
wa_order_partners-partn_role = 'RE'.
wa_order_partners-partn_numb = kunnr.
wa_order_partners-name = 'Lanco Inductries Ltd'.
wa_order_partners-street = '113 Udyog Vihar Phase II'.
wa_order_partners-postl_code = '321234'.
wa_order_partners-country = 'IN'.
APPEND wa_order_partners TO it_order_partners.
CLEAR wa_order_partners.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = wa_order_header_in
order_header_inx = wa_order_header_inx
IMPORTING
salesdocument = v_vbeln
TABLES
return = it_return
order_items_in = it_order_items_in
order_items_inx = it_order_items_inx
order_partners = it_order_partners.
IF NOT it_return IS INITIAL.
READ TABLE it_return TRANSPORTING NO FIELDS WITH KEY type = 'E'.
IF NOT sy-subrc IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN = RETURN
.
* MESSAGE :'Sales Order' TYPE 'I'.
* WRITE : v_vbeln.
* MESSAGE: 'has been successfully changed.' TYPE 'I'.
ELSE.
* WRITE: 'Not Succeed'.
ENDIF.
ENDIF.
ENDFUNCTION.