PERFORM frm_acc_gl_document.
*&---------------------------------------------------------------------*
*& Form frm_cancel_document
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_acc_gl_document .
DATA: ls_header TYPE bapiache08,
lv_objtype TYPE bapiache02-obj_type,
lv_objkey TYPE bapiache02-obj_key,
lv_objsys TYPE bapiache02-obj_sys,
lt_accountgl TYPE TABLE OF bapiacgl08,
lt_amount TYPE TABLE OF bapiaccr08,
lt_return TYPE TABLE OF bapiret2,
ls_exten_val TYPE zfis_exten,
lt_exten TYPE TABLE OF bapiextc,
ls_exten TYPE bapiextc.
" 抬头
CLEAR: ls_header, lv_objtype, lv_objkey, lv_objsys.
REFRESH: lt_accountgl, lt_amount, lt_exten, lt_return.
ls_header-username = 'UNAME' . " 用户
ls_header-doc_date = 'BLDAT'. " 凭证日期
ls_header-pstng_date = 'BUDAT'. " 过账日期
ls_header-doc_type = 'BLART'. " 凭证类型
ls_header-fisc_year = 'GJAHR'. " 年度
ls_header-fis_period = 'MONAT'. " 期间
ls_header-comp_code = 'BUKRS'. " 公司代码
ls_header-ref_doc_no = 'XBLNR' . " 参考凭证
ls_header-header_txt = 'BKTXT'. " 抬头文本
" 总账科目
APPEND VALUE #(
itemno_acc = 'POSNR_ACC' " 行项目
gl_account = 'HKONT' " 科目
item_text = 'SGTXT' " 行项目文本
profit_ctr = 'PRCTR' " 利润中心
costcenter = 'KOSTL' " 成本中心
ref_key_1 = 'XREF1' " 参考1
) TO lt_accountgl.
" 00 凭证货币
" 10 公司代码货币
" 20 成本控制范围的记帐货币
" 30 集团公司记帐货币
" 不确认一定有金额的情况, 先判断金额, 再对金额赋值
" 凭证金额
APPEND VALUE #(
itemno_acc = 'POSNR_ACC' " 行项目
amt_doccur = 'WRBTR' " 凭证金额
currency = 'WAERS' " 凭证货币
curr_type = '00'
) TO lt_amount.
" 本币金额
APPEND VALUE #(
itemno_acc = 'POSNR_ACC' " 行项目
amt_doccur = 'DMBTR' " 本币金额
currency = 'WAERS' " 本币货币
curr_type = '10'
) TO lt_amount.
" 扩展结构可以参考BAPI_ACC_DOCUMENT_POST传结构+值来传递, 也可以直接传值. 具体参考扩展增强里的代码怎么写的
" DEMO选择参考BAPI_ACC_DOCUMENT_POST传输结构+值来进行扩展赋值
ls_exten_val = VALUE #(
posnr = 'POSNR_ACC'
bschl = 'BSCHL'
rstgr = 'RSTGR'
umskz = 'UMSKZ'
).
ls_exten-field1 = 'ZFIS_EXTEN'.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_exten_val
IMPORTING
ex_container = ls_exten+240
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
APPEND ls_exten TO lt_exten.
CLEAR ls_exten.
CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'
EXPORTING
documentheader = ls_header
IMPORTING
obj_type = lv_objtype
obj_key = lv_objkey
obj_sys = lv_objsys
TABLES
accountgl = lt_accountgl
currencyamount = lt_amount
return = lt_return
extension1 = lt_exten.
LOOP AT lt_return INTO DATA(ls_return) WHERE type CA 'EAX'.
CONCATENATE lv_zmsg ls_return-message INTO DATA(lv_zmsg) SEPARATED BY '/'.
ENDLOOP.
IF lv_zmsg IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
IF lv_key IS NOT INITIAL.
" lv_key+0(10) BELNR
" lv_key+10(4) BUKRS
" lv_key+14(4) GJAHR
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDIF.
ENDFORM.
*--------------------------------------------------------------------*
* 增强
* SMOD: ACBAPI01 函数: EXIT_SAPLACC4_001
*--------------------------------------------------------------------*
*T_ACCHD LIKE ACCHD
*T_ACCIT LIKE ACCIT
*EXTENSION LIKE BAPIEXTC
*RETURN LIKE BAPIRET2
*T_ACCWT LIKE ACCIT_WT
*T_ACCTX LIKE ACCBSET
*T_ACCFI LIKE ACCFI
DATA: wa_extension TYPE bapiextc,
ext_value(960) TYPE c,
wa_accit TYPE accit,
l_ref TYPE REF TO data.
FIELD-SYMBOLS: <l_struc> TYPE any,
<l_field> TYPE any.
SORT extension BY field1.
LOOP AT c_extension2 INTO wa_extension.
AT NEW field1.
CREATE DATA l_ref TYPE (wa_extension-field1).
ASSIGN l_ref->* TO <l_struc>.
ENDAT.
ext_value = wa_extension+240.
** CONCATENATE wa_extension-field2
** wa_extension-field3
** wa_extension-field4 INTO ext_value.
<l_struc> = ext_value .
ASSIGN COMPONENT 'POSNR' OF STRUCTURE <l_struc> TO <l_field>.
IF sy-subrc = 0 AND <l_field> IS NOT INITIAL. " 行项目赋值
READ TABLE t_accit WITH KEY posnr = <l_field> INTO wa_accit.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING <l_struc> TO wa_accit.
MODIFY t_accit FROM wa_accit INDEX sy-tabix.
ENDIF.
ELSE. " 抬头赋值"
MOVE-CORRESPONDING <l_struc> TO t_acchd.
ENDIF.
ENDLOOP.
ABAP DEMO BAPI_ACC_GL_POSTING_POST FBV1预制会计凭证
于 2023-12-20 16:44:23 首次发布