ABAP-销售发票冲销
FUNCTION zsd_fm_44.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_VBELN_VF) TYPE VBELN_VF
*" EXPORTING
*" VALUE(STATUS) TYPE C
*" VALUE(MESSAGE) TYPE CHAR200
*"----------------------------------------------------------------------
DATA:
ls_return LIKE bapireturn1,
ls_success LIKE bapivbrksuccess,
l_bill_doc LIKE bapivbrksuccess-bill_doc.
DATA: ls_re TYPE bapireturn.
DATA:
lt_return LIKE TABLE OF bapireturn1,
lt_success LIKE TABLE OF bapivbrksuccess.
CLEAR: l_bill_doc.
l_bill_doc = i_vbeln_vf. "发票凭证
*--- 取消发票
CALL FUNCTION 'BAPI_BILLINGDOC_CANCEL1'
EXPORTING
billingdocument = l_bill_doc
TABLES
return = lt_return
success = lt_success.
READ TABLE lt_return INTO ls_return
WITH KEY type = 'E'.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
status = 'S'.
message = '冲销成功'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
status = 'E'.
CLEAR ls_re.
CALL FUNCTION 'BALW_BAPIRETURN_GET'
EXPORTING
type = 'E'
cl = ls_return-id
number = ls_return-number
* PAR1 = ' '
* PAR2 = ' '
* PAR3 = ' '
* PAR4 = ' '
* LOG_NO = ' '
* LOG_MSG_NO = ' '
IMPORTING
bapireturn = ls_re
* EXCEPTIONS
* ONLY_2_CHAR_FOR_MESSAGE_ID = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
message = ls_re-message.
ENDIF.
ENDFUNCTION.