1.预算处理类型ENTR类型的调用方式
DATA: lv_language TYPE bapi_0050_fields-language,
lw_header_data TYPE bapi_0050_header,
lv_bued_docln TYPE numc06,
lt_item_data TYPE TABLE OF bapi_0050_item,
lw_item_data TYPE bapi_0050_item,
lt_item_data1 TYPE TABLE OF bapi_0050_item,
lw_item_data1 TYPE bapi_0050_item,
lt_period_data TYPE TABLE OF bapi_0050_period,
lw_period_data TYPE bapi_0050_period,
lt_period_data1 TYPE TABLE OF bapi_0050_period,
lw_period_data1 TYPE bapi_0050_period,
lt_return TYPE TABLE OF bapiret2,
lv_documentnumber TYPE bapi_0050_fields-document,
lv_message TYPE bapi_msg,
lv_str TYPE string.
DATA: gt_mt001 TYPE TABLE OF zfmt001,
gw_mt001 TYPE zfmt001.
lw_header_data-fm_area = '1000' . "财务管理范围
lw_header_data-version = '000' . "版本
lw_header_data-docdate = sy-datum . "凭证日期
lw_header_data-doctype = 'Z001' . "凭证类型
lw_header_data-docstate = '1' .
lw_header_data-process = 'ENTR' . "预算过程
ADD 1 TO lv_bued_docln .
lw_item_data-item_num = lv_bued_docln . "凭证行
lw_item_data-fisc_year = '2022' . "会计年度
lw_item_data-budcat = '9F' . "预算类别
lw_item_data-budtype = 'BDR1' . "预算类型
lw_item_data-funds_ctr = 'F010201' . "资金中心
lw_item_data-cmmt_item = 'F0010002'. "承诺项目
lw_item_data-trans_curr = 'CNY' . "交易货币
lw_item_data-valtype = 'B1' . "BCS值类型
APPEND lw_item_data TO lt_item_data .
lw_period_data-item_num = lv_bued_docln .
lw_period_data-budgeting_period = '006'.
lw_period_data-period_amount = '1' .
APPEND lw_period_data TO lt_period_data .
lv_language = sy-langu .
CALL FUNCTION 'BAPI_0050_CREATE'
EXPORTING
language = lv_language
header_data = lw_header_data
testrun = ''
IMPORTING
documentnumber = lv_documentnumber
TABLES
item_data = lt_item_data "接收方行项目
sender_item_data = lt_item_data1 "发送方行项目
period_data = lt_period_data "接收方行项目期间
sender_period_data = lt_period_data1 "发送方行项目期间
return = lt_return.
LOOP AT lt_return INTO DATA(lw_return) WHERE type = 'E' OR type = 'A' .
lv_message = lv_message && lw_return-message .
ENDLOOP .
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
lv_str = lv_documentnumber && '预算创建成功' .
ELSE .
lv_str = '预算创建失败:' && lv_message .
ENDIF.
创建结果
2.预算处理类型TRAN类型的调用方式
DATA: lv_language TYPE bapi_0050_fields-language,
lw_header_data TYPE bapi_0050_header,
lv_bued_docln TYPE numc06,
lt_item_data TYPE TABLE OF bapi_0050_item,
lw_item_data TYPE bapi_0050_item,
lt_item_data1 TYPE TABLE OF bapi_0050_item,
lw_item_data1 TYPE bapi_0050_item,
lt_period_data TYPE TABLE OF bapi_0050_period,
lw_period_data TYPE bapi_0050_period,
lt_period_data1 TYPE TABLE OF bapi_0050_period,
lw_period_data1 TYPE bapi_0050_period,
lt_return TYPE TABLE OF bapiret2,
lv_documentnumber TYPE bapi_0050_fields-document,
lv_message TYPE bapi_msg,
lv_str TYPE string.
DATA: gt_mt001 TYPE TABLE OF zfmt001,
gw_mt001 TYPE zfmt001.
lw_header_data-fm_area = '1000' . "财务管理范围
lw_header_data-version = '000' . "版本
lw_header_data-docdate = sy-datum . "凭证日期
lw_header_data-doctype = 'Z001' . "凭证类型
lw_header_data-docstate = '1' .
lw_header_data-process = 'TRAN' . "预算过程
"发送方(-)
ADD 1 TO lv_bued_docln .
lw_item_data1-item_num = lv_bued_docln . "凭证行
lw_item_data1-fisc_year = '2022' . "会计年度
lw_item_data1-budcat = '9F' . "预算类别
lw_item_data1-budtype = 'BDR1' . "预算类型
lw_item_data1-funds_ctr = 'F010101' . "资金中心
lw_item_data1-cmmt_item = 'F0010001'. "承诺项目
lw_item_data1-trans_curr = 'CNY' . "交易货币
lw_item_data1-valtype = 'B1' . "BCS值类型
lw_item_data1-item_text = '发送方(-)' . "项目文本
APPEND lw_item_data1 TO lt_item_data1 .
lw_period_data1-item_num = lv_bued_docln .
lw_period_data1-budgeting_period = '006'.
lw_period_data1-period_amount = '1' .
APPEND lw_period_data1 TO lt_period_data1.
"接受方(+)
ADD 1 TO lv_bued_docln .
lw_item_data-item_num = lv_bued_docln . "凭证行
lw_item_data-fisc_year = '2022' . "会计年度
lw_item_data-budcat = '9F' . "预算类别
lw_item_data-budtype = 'BDR1' . "预算类型
lw_item_data-funds_ctr = 'F010201' . "资金中心
lw_item_data-cmmt_item = 'F0010002'. "承诺项目
lw_item_data-trans_curr = 'CNY' . "交易货币
lw_item_data-valtype = 'B1' . "BCS值类型
lw_item_data-item_text = '接受方(+)' . "项目文本
APPEND lw_item_data TO lt_item_data .
lw_period_data-item_num = lv_bued_docln .
lw_period_data-budgeting_period = '006'.
lw_period_data-period_amount = '1' .
APPEND lw_period_data TO lt_period_data .
lv_language = sy-langu .
CALL FUNCTION 'BAPI_0050_CREATE'
EXPORTING
language = lv_language
header_data = lw_header_data
testrun = ''
IMPORTING
documentnumber = lv_documentnumber
TABLES
item_data = lt_item_data "接收方行项目
sender_item_data = lt_item_data1 "发送方行项目
period_data = lt_period_data "接收方行项目期间
sender_period_data = lt_period_data1 "发送方行项目期间
return = lt_return.
LOOP AT lt_return INTO DATA(lw_return) WHERE type = 'E' OR type = 'A' .
lv_message = lv_message && lw_return-message .
ENDLOOP .
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
lv_str = lv_documentnumber && '预算创建成功' .
ELSE .
lv_str = '预算创建失败:' && lv_message .
ENDIF.
创建结果