1、创建开票凭证
1.1、前台
VF01创建开票凭证
1.2、源代码
"--------------------@斌将军--------------------
DATA:lt_billingdatain TYPE TABLE OF bapivbrk WITH HEADER LINE,
lt_conditiondatain TYPE TABLE OF bapikomv WITH HEADER LINE,
lt_success TYPE TABLE OF bapivbrksuccess,
lt_return TYPE TABLE OF bapiret1.
DATA:lv_check TYPE char1,
lv_message TYPE char200.
CLEAR:lt_billingdatain.
lt_billingdatain-ref_doc = '0080012360'."交货单号
lt_billingdatain-ref_item = '10'.
lt_billingdatain-doc_number = '0010001709'."销售订单号
lt_billingdatain-itm_number = '10'. "
lt_billingdatain-ref_doc_ca = 'J'."凭证类别
*lt_billingdatain-payer = lv_payer. "付款方 20191030 add
*lt_billingdatain-material = ''."gs_root-matnr. "物料编码
*lt_billingdatain-req_qty = ''."gs_root-fkimg. "数量
*lt_billingdatain-sales_unit = ''."gs_root-vrkme. "数量单位
APPEND lt_billingdatain.
*CLEAR:lt_conditiondatain.
*gv_index = gv_index + 1.
*lt_conditiondatain-data_index = gv_index. "其他结构的表格项目的指针
*lt_conditiondatain-cond_type = 'ZPR1'. "条件类型
*lt_conditiondatain-cond_value = gs_root-kbetr."金额
*lt_conditiondatain-cond_curr = 'CNY'. "货币单位
*lt_conditiondatain-cond_p_unt = '1'. "货币单位
*APPEND lt_conditiondatain.
"调用bapi生成发票号
CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
TABLES
billingdatain = lt_billingdatain
conditiondatain = lt_conditiondatain
return = lt_return
success = lt_success.
CLEAR:lv_check,lv_message.
LOOP AT lt_return INTO DATA(ls_return) WHERE type CA 'AEX'.
lv_check = 'E'.
lv_message = lv_message && ls_return-message.
ENDLOOP.
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
"--------------------@斌将军--------------------
2、冲销开票凭证
2.1、前台
VF11冲销开票凭证
2.2、源代码
"--------------------@斌将军--------------------
DATA:lv_bill_doc TYPE bapivbrksuccess-bill_doc,
lt_success TYPE TABLE OF bapivbrksuccess,
lt_return TYPE TABLE OF bapiret1.
DATA:lv_check TYPE char1,
lv_message TYPE char200.
lv_bill_doc = '0090000367'."需要冲销的发票
CALL FUNCTION 'BAPI_BILLINGDOC_CANCEL1'
EXPORTING
billingdocument = lv_bill_doc
TABLES
return = lt_return
success = lt_success.
CLEAR:lv_check,lv_message.
LOOP AT lt_return INTO DATA(ls_return) WHERE type CA 'AEX'.
lv_check = 'E'.
lv_message = lv_message && ls_return-message.
ENDLOOP.
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
"--------------------@斌将军--------------------
VL03N查看交货单凭证流
定期更文,欢迎关注