DATA:gs_docheader TYPE bapiache09,
gt_curramount TYPE TABLE OF bapiaccr09, "金额
gs_curramount TYPE bapiaccr09,
gt_acgl TYPE TABLE OF bapiacgl09, "总账
gs_acgl TYPE bapiacgl09,
gt_rec TYPE STANDARD TABLE OF bapiacar09, " 客户
gs_rec TYPE bapiacar09,
gt_ex TYPE STANDARD TABLE OF bapiparex,
gs_ex TYPE bapiparex,
gt_return TYPE TABLE OF bapiret2,
gs_return TYPE bapiret2.
DATA:gv_err_msg TYPE string,
gv_msg TYPE string.
DATA:gv_ytpz TYPE bkpf-belnr, "存储用于更新日志的凭证号
gv_hcpz TYPE bkpf-belnr,
gv_key TYPE bapiache09-obj_key. "bapi返回的会计凭证号
DATA:gv_excute TYPE char1.
gs_docheader-username = sy-uname.
gs_docheader-header_txt = '返利预提' && gs_alv-zkh."凭证抬头文本
gs_docheader-comp_code = gs_alv-zxszz. "公司代码
gs_docheader-doc_date = s_date-low. "凭证日期
gs_docheader-pstng_date = s_date-low. "过账日期
gs_docheader-doc_type = 'Y7'. "凭证类型
gs_acgl-itemno_acc = '1'. "会计凭证行项目编号
gs_acgl-gl_account = '6001010100'. "总账科目
CASE gs_alv-zxszz.
WHEN 'H101'.
gs_acgl-profit_ctr = 'H10100000'. "利润中心
WHEN 'H205'.
gs_acgl-profit_ctr = 'H20500000'. "利润中心
ENDCASE.
APPEND gs_acgl TO gt_acgl.
CLEAR:gs_acgl.
gs_curramount-itemno_acc = '1'. "会计凭证行项目编号
gs_curramount-currency = 'CNY'. "货币码
gs_curramount-amt_doccur = gv_bcyt_sum. "以凭证货币计的金额
APPEND gs_curramount TO gt_curramount.
gs_acgl-itemno_acc = '2'. "会计凭证行项目编号
gs_acgl-gl_account = '2281030300'. "'2801010000'. "总账科目 2022.11.23调整
APPEND gs_acgl TO gt_acgl.
gs_curramount-itemno_acc = '2'. "会计凭证行项目编号
gs_curramount-currency = 'CNY'. "货币码
gs_curramount-amt_doccur = -1 * gv_bcyt_sum. "以凭证货币计的金额
APPEND gs_curramount TO gt_curramount.
" 创建会计凭证
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = gs_docheader
IMPORTING
obj_key = gv_key
TABLES
accountgl = gt_acgl
currencyamount = gt_curramount
return = gt_return.
LOOP AT gt_return INTO gs_return.
IF gs_return-type = 'E' OR gs_return-type = 'A'.
"calling message buld FM to get the error message
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = gs_return-id
msgnr = gs_return-number
msgv1 = gs_return-message_v1
msgv2 = gs_return-message_v2
msgv3 = gs_return-message_v3
msgv4 = gs_return-message_v4
IMPORTING
message_text_output = gv_msg.
gv_err_msg = ';' && gv_err_msg && gv_msg.
CLEAR:gv_msg.
ENDIF.
ENDLOOP.
IF gv_err_msg IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE '预提凭证创建失败!' && gv_err_msg TYPE 'S' DISPLAY LIKE 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
gv_ytpz = gv_key+0(10).
lv_correct_msg = lv_correct_msg && '预提凭证:' && gv_ytpz.
PERFORM frm_update_log TABLES gt_ytlog_yt
USING 'ZHSD036_Z1'.
ENDIF.
CLEAR:gs_docheader,gs_acgl,gt_acgl,gs_curramount,gt_curramount,gt_return,gs_return.