获取到需要过账的数据之后,可以用来批量常规过账,也挺灵活的,只是有一些字段如果前台过账没有的话,记账的时候也不会记进去,传值的时候要注意。常规过账的话还是蛮好用的
*获取屏幕字段名称然后依次传值就行
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BUKRS' zsfi_g073_01-bukrs. "公司代码
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-XBLNR' zsfi_g073_01-maino. "参考
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BLDAT' lv_budat. "凭证日期
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BUDAT' lv_budat. "过账日期
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-WAERS' zsfi_g073_01-waers. "货币
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-KURSF' zsfi_g073_01-kursf. "汇率
PERFORM prepare_acc_doc_item_01 TABLES lt_ftpost.
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
i_function = 'C'
i_keep = 'X'
EXCEPTIONS
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
OTHERS = 6.
CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'
EXPORTING
i_tcode = 'FB01'
IMPORTING
e_msgid = sy-msgid
e_msgno = sy-msgno
e_msgty = sy-msgty
e_msgv1 = sy-msgv1
e_msgv2 = sy-msgv2
e_msgv3 = sy-msgv3
e_msgv4 = sy-msgv4
TABLES
t_blntab = lt_blntab
t_ftpost = lt_ftpost
t_fttax = lt_fttax
EXCEPTIONS
account_missing = 1
company_code_missing = 2
posting_key_invalid = 3
posting_key_missing = 4
record_type_invalid = 5
transaction_code_invalid = 6
amount_format_error = 7
too_many_line_items = 8
company_code_invalid = 9
screen_not_found = 10
no_authorization = 11
OTHERS = 12.
IF sy-msgty CA 'EA'.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
READ TABLE lt_blntab INTO ls_blntab INDEX 1.
IF sy-subrc = 0.
zsfi_g073_01-belnr = ls_blntab-belnr. "凭证号
ENDIF.
ENDIF.
FORM ftpost_field TABLES lt_ftpost STRUCTURE ftpost
USING lv_stype lv_count lv_fnam lv_fval.
DATA: ls_ftpost TYPE ftpost.
ls_ftpost-stype = lv_stype.
ls_ftpost-count = lv_count.
ls_ftpost-fnam = lv_fnam.
ls_ftpost-fval = lv_fval.
CONDENSE ls_ftpost-fval.
APPEND ls_ftpost TO lt_ftpost.
ENDFORM.
FORM prepare_acc_doc_item_01 TABLES lt_ftpost STRUCTURE ftpost.
DATA: lv_posnr TYPE posnr_acc.
" 借方
lv_posnr = lv_posnr + 1.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWBS' '40'.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWKO' zsfi_g073_01-saknr.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-WRBTR' zsfi_g073_01-money.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-RSTGR' zsfi_g073_01-rstgr.
" 贷方
lv_posnr = lv_posnr + 1.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWBS' '11'.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWKO' zsfi_g073_01-kunnr.
PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-WRBTR' zsfi_g073_01-money.
ENDFORM.