解决方案

SAP FI 清账函数

seo靠我 2023-09-26 00:50:54

前面几篇博客文章介绍 BAPI_ACC_DOCUMENT_POST 的使用,如果需要用代码完成类似 F-04 过账并清账的操作,可以顺序调用下面的三个函数:

- POSTING_INTERFACE_STSEO靠我ART - POSTING_INTERFACE_CLEARING - POSTING_INTERFACE_END

这三个函数在内部也是调用 BDC,但对于开发者来说,只需SEO靠我要给定参数,简化了编码的工作。

为了便于理解,假定我们需要对下面的会计凭证进行清账:

应付账款是未清项目,现在要对应付账款进行清账。先给出完整的代码,后面再对要点进行解释:

REPORT z_post_clSEO靠我earing.DEFINE populate_ftpost.clear ls_ftpost.ls_ftpost-stype = &1.ls_ftpost-count = &2.ls_ftpost-fnSEO靠我am = &3.ls_ftpost-fval = &4.append ls_ftpost to lt_ftpost. END-OF-DEFINITION.START-OF-SELECTSEO靠我ION.PERFORM frm_post_clearing.FORM frm_post_clearing." ftclear 是清账的数据的表参数DATA:lt_ftclear TYPE STANDASEO靠我RD TABLE OF ftclear,ls_ftclear LIKE LINE OF lt_ftclear." ftpost 是过账的抬头和行项目的表参数DATA:lt_ftpost TYPE STSEO靠我ANDARD TABLE OF ftpost,ls_ftpost LIKE LINE OF lt_ftpost.DATA:lt_blntab LIKE TABLE OF blntab WITH HEASEO靠我DER LINE,lt_fttax LIKE TABLE OF fttax WITH HEADER LINE." populate ftclear table parameterCLEAR ls_ftSEO靠我clear.ls_ftclear-agkoa = K. " k for vendorls_ftclear-agbuk = Z900.ls_ftclear-selfd = BELNR.ls_ftcleaSEO靠我r-xnops = X.ls_ftclear-selvon = 1900000001.APPEND ls_ftclear TO lt_ftclear." populate ftpost table pSEO靠我aramter" 分为header和line item,line item按行填充" 首先填写header (K)populate_ftpost K 1 BKPF-BUKRS Z900. " compSEO靠我any codepopulate_ftpost K 1 BKPF-BLART KA. " document typepopulate_ftpost K 1 BKPF-BLDAT sy-datum. "SEO靠我 posting datepopulate_ftpost K 1 BKPF-BUDAT sy-datum.populate_ftpost K 1 BKPF-WAERS CNY. " currencypSEO靠我opulate_ftpost K 1 BKPF-BKTXT Clearing 1900000001. " header text" 按行填写行项目的字段 (P)populate_ftpost P 1 SEO靠我RF05A-NEWBS 50. " posting keypopulate_ftpost P 1 BSEG-HKONT 10010100. " G/L accountpopulate_ftpost PSEO靠我 1 BSEG-SGTXT Clearing vendor invoice.populate_ftpost P 1 BSEG-WRBTR 1700. " amountCALL FUNCTION POSSEO靠我TING_INTERFACE_STARTEXPORTINGi_client = sy-mandti_function = Ci_mode = Ni_keep = Xi_update = Si_userSEO靠我 = sy-uname.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2SEO靠我 sy-msgv3 sy-msgv4.ENDIF.CALL FUNCTION POSTING_INTERFACE_CLEARINGEXPORTINGi_auglv = AUSGZAHLi_tcode SEO靠我= FB05i_sgfunct = CIMPORTINGe_msgid = sy-msgide_msgno = sy-msgnoe_msgty = sy-msgtye_msgv1 = sy-msgv1SEO靠我e_msgv2 = sy-msgv2e_msgv3 = sy-msgv3e_msgv4 = sy-msgv4TABLESt_blntab = lt_blntabt_ftclear = lt_ftcleSEO靠我art_ftpost = lt_ftpostt_fttax = lt_fttaxEXCEPTIONSclearing_procedure_invalid = 1clearing_procedure_mSEO靠我issing = 2table_t041a_empty = 3transaction_code_invalid = 4amount_format_error = 5too_many_line_itemSEO靠我s = 6company_code_invalid = 7screen_not_found = 8no_authorization = 9OTHERS = 10.IF sy-subrc <> 0.MESEO靠我SSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF." keepSEO靠我 track of document numberREAD TABLE lt_blntab INDEX 1.CALL FUNCTION POSTING_INTERFACE_ENDEXCEPTIONSsSEO靠我ession_not_processable = 1OTHERS = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msSEO靠我gnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.WRITE: lt_blntab-bukrs, lt_blntab-belnr, lt_blntabSEO靠我-gjahr, was posted successfully.ENDFORM.

POSTING_INTERFACE_START 函数

CALL FUNCTION POSTING_INTERFACE_STSEO靠我ART EXPORTINGi_client = sy-mandti_function = Ci_mode = Ni_keep = Xi_update = Si_user = sy-unSEO靠我ame.

这个函数主要给出 client, user id 以及后续 BDC 的一些参数。注意参数中 i_mode 参数,这个参数的含义与 BDC 模式的含义相同:

N 后台处理,没有界面和错误E提示错误,SEO靠我建议程在发布之前通过 E 模式调试错误,运行的时候可以跳转到前台调试,方便看出错误的原因A 显示前台每一步操作,也可用于调试

POSTING_INTERFACE_CLEARING 函数

这个函数式程序处理的SEO靠我主体,调用代码如下:

CALL FUNCTION POSTING_INTERFACE_CLEARINGEXPORTINGi_auglv = AUSGZAHLi_tcode = FB05i_sgfunctSEO靠我 = C TABLESt_blntab = lt_blntabt_ftclear = lt_ftcleart_ftpost = lt_ftpostt_fttax = lt_fttax .

auglv 参SEO靠我

auglv 参数表示清账过程,数据来自 T041A 表,比如上面的 AUSGZAHL 表示付款。

FTCLEAR 表参数

FTCLEAR 表参数是要要被清账的数据。对于本篇的会计凭证来说,我们要对应付账SEO靠我款(供应商)进行清账,所以需要填写 FTCLEAR 表参数如下:

" ftclear 是清账的数据的表参数DATA:lt_ftclear TYPE STANDARD TABLE OF ftclear,lSEO靠我s_ftclear LIKE LINE OF lt_ftclear." populate ftclear table parameterCLEAR ls_ftclear.ls_ftclear-agkoSEO靠我a = K. " k for vendorls_ftclear-agbuk = Z900.ls_ftclear-selfd = BELNR.ls_ftclear-xnops = X. " No SpeSEO靠我cial G/L itemsls_ftclear-selvon = 1900000001.APPEND ls_ftclear TO lt_ftclear.

可以看到,清账以会计凭证号码 19000000SEO靠我01 为基础,这是清账的一种方法而已。

FTPOST 表参数

FTPOST 表参数表示要过账的数据,包括 document header 和 line items。对于本次的过账凭证来说,最后生成的会计凭SEO靠我证为:

DR: 应付账款 1700 CR: 现金 (10010100)1700

贷方现金这一行就是过账数据,我们需要将 document header 和现金这一行填写到 PTPOST 参SEO靠我数中,为减少代码量,先定义一个宏。

DEFINE populate_ftpost.clear ls_ftpost.ls_ftpost-stype = &1.ls_ftpost-count = &2.lsSEO靠我_ftpost-fnam = &3.ls_ftpost-fval = &4.append ls_ftpost to lt_ftpost. END-OF-DEFINITION." ftpSEO靠我ost 是过账的抬头和行项目的表参数DATA:lt_ftpost TYPE STANDARD TABLE OF ftpost,ls_ftpost LIKE LINE OF lt_ftpost." poSEO靠我pulate ftpost table paramter" 分为header和line item,line item按行填充" 首先填写header (K)populate_ftpost K 1 BKSEO靠我PF-BUKRS Z900. " company codepopulate_ftpost K 1 BKPF-BLART KA. " document typepopulate_ftpost K 1 BSEO靠我KPF-BLDAT sy-datum. " posting datepopulate_ftpost K 1 BKPF-BUDAT sy-datum.populate_ftpost K 1 BKPF-WSEO靠我AERS CNY. " currencypopulate_ftpost K 1 BKPF-BKTXT Clearing 1900000001. " header text" 按行填写行项目的字段 (PSEO靠我)populate_ftpost P 1 RF05A-NEWBS 50. " posting keypopulate_ftpost P 1 BSEG-HKONT 10010100. " G/L accSEO靠我ountpopulate_ftpost P 1 BSEG-SGTXT Clearing vendor invoice.populate_ftpost P 1 BSEG-WRBTR 1700. " amSEO靠我ount

在填充参数的时候,ftpost-stype 为 K 表示 document header, P 表示 行项目。另外,我们可以看到,在一张凭证中 ftpost-count 用于关联 documeSEO靠我nt header 和 line item。

blntab 表参数

blntab 表参数用于记录生成的会计凭证号码信息:

DATA: lt_blntab LIKE TABLE OF blntab WITH SEO靠我HEADER LINE." keep track of document number READ TABLE lt_blntab INDEX 1.WRITE: lt_blntab-buSEO靠我krs, lt_blntab-belnr, lt_blntab-gjahr, was posted successfully.

POSTING_INTERFACE_END

如果 clearing 函数成功SEO靠我,调用函数 POSTING_INTERFACE_END

call function POSTING_INTERFACE_ENDexportingi_bdcimmed = XexceptionssessiSEO靠我on_not_processable = 1others = 2.
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2