* create a return order given sales order
* and update the return order with order reason

DATA lv_vbeln      TYPE vbak-vbeln.
DATA lt_return     TYPE STANDARD TABLE OF bapiret2 WITH EMPTY KEY.
DATA ls_header_in  TYPE bapisdh1.
DATA ls_header_inx TYPE bapisdh1x.

CALL FUNCTION 'BAPI_SALESDOCUMENT_COPY'
  EXPORTING
    salesdocument    = '3000071300'
    documenttype     = 'ABC'
  IMPORTING
    salesdocument_ex = lv_vbeln
  TABLES
    return           = lt_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    wait = abap_true.

ls_header_in-ord_reason = 'ABC'.
ls_header_inx-updateflag = 'U'.
ls_header_inx-ord_reason = abap_true.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
  EXPORTING
    salesdocument    = lv_vbeln
    order_header_in  = ls_header_in
    order_header_inx = ls_header_inx
  TABLES
    return           = lt_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    wait = abap_true.

BREAK-POINT.