sap提供了一套标准的清账函数

  • POSTING_INTERFACE_START
  • POSTING_INTERFACE_CLEARING
  • POSTING_INTERFACE_END

但是很多小伙伴不怎么会去使用,因为POSTING_INTERFACE_*这一套函数使用有限制,而且比普通录屏要复杂一些,也需要通过增强才能实现所有的清账函数都能使用。
(需要注意的是,清账函数可以使用的tcode包含了所有的清账tcode:fb05、f-04等等),如下代码:

  DATA e_msgid   TYPE sy-msgid.DATA e_msgno   TYPE sy-msgno.DATA e_msgty   TYPE sy-msgty.DATA e_msgv1   TYPE sy-msgv1.DATA e_msgv2   TYPE sy-msgv2.DATA e_msgv3   TYPE sy-msgv3.DATA e_msgv4   TYPE sy-msgv4.DATA e_subrc   TYPE sy-subrc.DATA t_blntab  TYPE STANDARD TABLE OF blntab.DATA t_ftclear TYPE STANDARD TABLE OF ftclear.DATA t_ftpost  TYPE STANDARD TABLE OF ftpost.DATA t_fttax   TYPE STANDARD TABLE OF fttax.DATA: p_mode     TYPE rfpdo-allgazmd VALUE 'N',ls_ftpost  TYPE ftpost,ls_ftclear TYPE ftclear,ls_blntab  TYPE blntab,lt_bdcdata TYPE TABLE OF bdcdata, " bdcls_bdcdata TYPE bdcdata,gv_id      TYPE char20, "MEMORY IDlv_mitkz   TYPE mitkz,lv_wrbtr   TYPE string,lv_budat   TYPE string,lr_hkont   TYPE RANGE OF bseg-hkont.* 定义宏DEFINE def_ftpost.ls_ftpost-stype = &1.ls_ftpost-count = &2.ls_ftpost-fnam  = &3.ls_ftpost-fval  = &4.APPEND ls_ftpost TO t_ftpost.END-OF-DEFINITION.DEFINE def_bdcdata.CLEAR ls_bdcdata.ls_bdcdata-program = &1.ls_bdcdata-dynpro = &2.ls_bdcdata-dynbegin = &3.ls_bdcdata-fnam = &4.ls_bdcdata-fval = &5.APPEND ls_bdcdata TO lt_bdcdata.END-OF-DEFINITION."银行科目lr_hkont = VALUE #( sign = 'I' option = 'CP' ( low = '1001*' )( low = '1002*' ) ).CLEAR:lt_bdcdata,gv_id.CONCATENATE sy-uname 'ADD_SCR' INTO gv_id.DATA:doc_line TYPE i,lv_kbetr TYPE string.REFRESH: t_blntab[],  t_ftclear[], t_ftpost[],  t_fttax[].DATA(lv_bktxt) = |{ ls_input-req-zzjptbm }|. " 抬头文本" Headerdef_ftpost: 'K' '001' 'BKPF-BUKRS' ls_input-req-bukrs,      " 公司代码'K' '001' 'BKPF-BUDAT' ls_input-req-zjyrq,      " 过账日期'K' '001' 'BKPF-BLDAT' ls_input-req-zjyrq,      " 记账日期'K' '001' 'BKPF-MONAT' ls_input-req-zjyrq+4(2). " 期间*  CASE ls_input-req-zywlx.
*    WHEN '票据兑付'.
*      def_ftpost: 'K' '001' 'BKPF-BLART' 'KZ'.      " 凭证类型
*    WHEN OTHERS.
*      def_ftpost: 'K' '001' 'BKPF-BLART' 'DZ'.      " 凭证类型
*  ENDCASE.def_ftpost: 'K' '001' 'BKPF-BLART' 'ZD'.      " 凭证类型def_ftpost: 'K' '001' 'BKPF-WAERS' ls_input-req-waers,        " 货币'K' '001' 'BKPF-BKTXT' lv_bktxt.                  " 抬头文本" 会计凭证行项目 item1doc_line  = doc_line + 1.  def_ftpost : 'P' doc_line 'RF05A-NEWBS' '50', " posting key'P' doc_line 'RF05A-NEWUM' ''.  lv_gl_account = '1001010001'.def_ftpost:'P' doc_line 'RF05A-NEWKO' '1001010001'.DATA(lv_item_text)     = |付{ ls_input-req-zdfhm }{ ls_input-req-zywlx }|." 文本def_ftpost :   'P' doc_line 'BSEG-SGTXT' lv_item_text.IF lv_gl_account IN lr_hkont.def_ftpost :'P' doc_line 'BSEG-RSTGR' ls_input-req-zyydm.  " 原因代码ENDIF.CLEAR:lv_kbetr.lv_kbetr = ls_input-req-zje.CONDENSE lv_wrbtr NO-GAPS.def_ftpost : 'P' doc_line 'BSEG-WRBTR' lv_kbetr.       " 金额" 部分清账界面def_bdcdata: 'SAPDF05X' '3100' 'X' '' '',
*  def_bdcdata: 'SAPMF05A' '0122' 'X' '' '','' '' '' 'BDC_OKCODE' '=PART', "点击部分清账页签'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6102PAGE','' '' '' 'BDC_CURSOR' 'DF05B-PSSKT(01)','' '' '' 'RF05A-ABPOS' '1'." 查找清账行" 根据ZPJHM=BSED-WBANK取BSED-BELNR、BSED-GJAHR、BSED-BUZEI;再根据BSED取ACDOCA-KOART、ACDOCA-LIFNR、ACDOCA-KUNNR;去重后写入下面的数据SELECT a~*FROM bsed AS aINNER JOIN @ls_input-req-billdetails AS bON a~wbank = b~zpjhmINTO TABLE @DATA(lt_bsed).SORT lt_bsed BY bukrs belnr gjahr buzei.DELETE ADJACENT DUPLICATES FROM lt_bsed COMPARING bukrs belnr gjahr buzei.IF lt_bsed IS NOT INITIAL.SELECT *FROM acdocaINTO TABLE @DATA(lt_acdoca)FOR ALL ENTRIES IN @lt_bsedWHERE rbukrs = @lt_bsed-bukrsAND belnr = @lt_bsed-belnrAND gjahr = @lt_bsed-gjahrAND buzei = @lt_bsed-buzei.SORT lt_acdoca BY rbukrs belnr gjahr buzei.ENDIF.SORT ls_input-req-billdetails BY zpjhm.LOOP AT lt_bsed INTO DATA(ls_bsed).READ TABLE lt_acdoca INTO DATA(ls_acdoca) WITH KEY rbukrs = ls_bsed-bukrsbelnr  = ls_bsed-belnrgjahr  = ls_bsed-gjahrbuzei  = ls_bsed-buzei BINARY SEARCH.CHECK sy-subrc EQ 0.READ TABLE ls_input-req-billdetails INTO DATA(ls_billdetails) WITH KEY zpjhm = ls_bsed-wbank BINARY SEARCH.CHECK sy-subrc EQ 0.CLEAR:lv_mitkz.SELECT SINGLE mitkz INTO @lv_mitkz FROM skb1 WHERE bukrs = @ls_acdoca-rbukrs  AND saknr = @ls_acdoca-racct.CHECK sy-subrc = 0.CLEAR ls_ftclear.ls_ftclear-agkoa  = lv_mitkz.               " 账户类型ls_ftclear-agbuk  = ls_input-req-bukrs." 公司代码IF ls_acdoca-umskz IS  INITIAL.ls_ftclear-xnops  = 'X'.             " 标准未清项ELSE.ls_ftclear-agums  = ls_acdoca-umskz. " 特殊总帐标识符ENDIF.ls_ftclear-selfd  = 'BELNR'.           " 凭证索引中的字段名ls_ftclear-agkon  = ls_acdoca-lifnr.   " 供应商ls_ftclear-selvon = ls_acdoca-belnr && ls_acdoca-gjahr && ls_acdoca-buzei. "选择未清项目的搜索标准的输入字段APPEND ls_ftclear TO t_ftclear.def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '/00','' '' '' 'BDC_OKCODE' '=OSU',               " 点击筛选按钮'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE','' '' '' 'BDC_CURSOR' 'RF05A-ABPOS','' '' '' 'RF05A-ABPOS' '1'." 选择凭证编号按钮def_bdcdata: 'SAPDF05X' '2000' 'X' '' '','' '' '' 'BDC_CURSOR' 'RF05A-XPOS1(01)','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-XPOS1(01)' '','' '' '' 'RF05A-XPOS1(04)' 'X'." 填入凭证编号def_bdcdata: 'SAPDF05X' '0731' 'X' '' '','' '' '' 'BDC_CURSOR' 'RF05A-SEL01(01)','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-SEL01(01)' ls_acdoca-belnr ." 点击筛选按钮def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '/00','' '' '' 'BDC_OKCODE' '=OSU','' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE'." 选择过账日期按钮def_bdcdata: 'SAPDF05X' '2000' 'X' '' '','' '' '' 'BDC_CURSOR' 'RF05A-XPOS1(01)','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-XPOS1(01)' '','' '' '' 'RF05A-XPOS1(05)' 'X'.CLEAR:lv_budat.lv_budat = ls_acdoca-budat.CONDENSE lv_budat NO-GAPS." 填入凭证过账日期def_bdcdata: 'SAPDF05X' '0732' 'X' '' '','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-VONDT(01)' lv_budat ." 点击筛选按钮def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '/00','' '' '' 'BDC_OKCODE' '=OSU','' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE'." 选择行按钮def_bdcdata: 'SAPDF05X' '2000' 'X' '' '','' '' '' 'BDC_CURSOR' 'RF05A-XPOS1(01)','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-XPOS1(01)' '','' '' '' 'RF05A-XPOS1(02)' 'X'." 填入凭证行def_bdcdata: 'SAPDF05X' '0731' 'X' '' '','' '' '' 'BDC_CURSOR' 'RF05A-SEL01(01)','' '' '' 'BDC_OKCODE' '=GO','' '' '' 'RF05A-SEL01(01)' ls_acdoca-buzei.CLEAR:lv_wrbtr.lv_wrbtr = ls_billdetails-zpjje.CONDENSE lv_wrbtr NO-GAPS." 填入金额def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '/00',                " 回车'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE','' '' '' 'RF05A-ABPOS' '1','' '' '' 'BDC_CURSOR' 'DF05B-PSZAH(01)','' '' '' 'DF05B-PSZAH(01)' lv_wrbtr.        " 金额def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '=OSE',  " 返回上一层'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE'.def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '=OSE',  "返回上一层'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE'.def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '=OSE',  "返回上一层'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE'.ENDLOOP." 过账def_bdcdata: 'SAPDF05X' '3100' 'X' '' '','' '' '' 'BDC_OKCODE' '=BU', "保存过账'' '' '' 'BDC_SUBSCR' 'SAPDF05X   6104PAGE','' '' '' 'BDC_CURSOR' 'DF05B-PSZAH(01)','' '' '' 'RF05A-ABPOS' '1'.CALL FUNCTION 'POSTING_INTERFACE_START'EXPORTINGi_client           = sy-mandti_function         = 'C'i_keep             = 'X'i_mode             = p_modei_update           = 'S'i_user             = sy-unameEXCEPTIONSclient_incorrect   = 1function_invalid   = 2group_name_missing = 3mode_invalid       = 4update_invalid     = 5OTHERS             = 6.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO DATA(lv_txt).DATA(lv_msg) = '创建失败:' && lv_txt.set_msg_ats003 '' 'E' lv_msg.RETURN.ELSE.IF lt_bdcdata IS NOT INITIAL.EXPORT lt_bdcdata FROM lt_bdcdata TO MEMORY ID gv_id.  "部分清账时补充屏幕数据ENDIF.REFRESH:t_blntab[].CALL FUNCTION 'POSTING_INTERFACE_CLEARING'EXPORTINGi_auglv                    = 'UMBUCHNG'i_tcode                    = 'FB05' " 调用F-04i_sgfunct                  = 'C'IMPORTINGe_msgid                    = e_msgide_msgno                    = e_msgnoe_msgty                    = e_msgtye_msgv1                    = e_msgv1e_msgv2                    = e_msgv2e_msgv3                    = e_msgv3e_msgv4                    = e_msgv4e_subrc                    = e_subrcTABLESt_blntab                   = t_blntabt_ftclear                  = t_ftcleart_ftpost                   = t_ftpostt_fttax                    = t_fttaxEXCEPTIONSclearing_procedure_invalid = 1clearing_procedure_missing = 2table_t041a_empty          = 3transaction_code_invalid   = 4amount_format_error        = 5too_many_line_items        = 6company_code_invalid       = 7screen_not_found           = 8no_authorization           = 9.READ TABLE t_blntab INTO ls_blntab INDEX 1.IF sy-subrc <> 0.CALL FUNCTION 'FORMAT_MESSAGE'EXPORTINGid        = e_msgidlang      = sy-languno        = e_msgnov1        = e_msgv1v2        = e_msgv2v3        = e_msgv3v4        = e_msgv4IMPORTINGmsg       = lv_txtEXCEPTIONSnot_found = 1OTHERS    = 2.lv_msg = '创建失败:' && lv_txt.set_msg_ats003 '' 'E' lv_msg.RETURN.ELSE.set_msg_ats003 ls_blntab-belnr 'S' '凭证创建成功'.ENDIF.CALL FUNCTION 'POSTING_INTERFACE_END'EXPORTINGi_bdcimmed              = 'X'EXCEPTIONSsession_not_processable = 1OTHERS                  = 2.ENDIF.

同时需要在程序LFIPIF00中做一个代码的隐式增强:

代码如下:

*{   INSERT         S4DK900285                                        1DATA:GV_ID TYPE CHAR20,LT_BDCDATA TYPE TABLE OF BDCDATA,LS_BDCDATA TYPE BDCDATA,LV_LINES TYPE I.CLEAR:LT_BDCDATA,GV_ID.CONCATENATE SY-UNAME 'ADD_SCR' INTO GV_ID.IMPORT LT_BDCDATA TO LT_BDCDATA FROM MEMORY ID GV_ID. "补充屏幕数据IF LT_BDCDATA IS NOT INITIAL.APPEND LINES OF LT_BDCDATA TO FT.LOOP AT  FT WHERE FVAL = '/11'.FT-FVAL = '=PA' .MODIFY FT.ENDLOOP.FREE MEMORY ID GV_ID.ENDIF.
*}   INSERT

sap fi清账函数POSTING_INTERFACE*的使用相关推荐

  1. SAP FI/CO 知识 浓缩版

    一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...

  2. SAP FI/CO Reading Repository

    目 录 前言. 一.SAP FI/CO 模块设置 二.SAP R/3 财务基本概念及集成性浅释--主数据概念篇 2.1 总账主数据 2.2 供应商主数据 2.3 客户主数据 2.4 商品主数据 2.5 ...

  3. SAP FI/CO 知识 搜集整理

    一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...

  4. [转]SAP FI/CO 模块设置

    一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...

  5. 【学习笔记】SAP FI 业务范围的概念

    业务范围 以前转载过几篇关于业务范围的文章: SAP Business Area 业务范围_SAP剑客的博客-CSDN博客_sap 业务范围 SAP FI 系列 002:业务范围派生_stone082 ...

  6. SAP FI模块与SD、MM的接口配置

    问:能否介绍一下FI模块与SD.MM的接口配置基本方法? 答:accounting determination autoposting,做FICO的对这两个接口帐号的配置都会感兴趣的啊- 不过这些东东 ...

  7. 如何理解 SAP UI5 的 sap.ui.define 函数

    Understanding sap.ui.define by Hello World 随着 1.28 版本中 sap.ui.define 函数的引入,SAPUI5 引入了对异步模块定义 (AMD) 的 ...

  8. SAP FI 应收应付账龄分析-功能研究

    转自:http://www.weidianyuedu.com/ 应收应付账龄分析,账龄开始计算日期应当以什么日期为准 一般使用"净到期日"作为账龄分析计算的开始日期. 在SAP会计 ...

  9. sap的清账是什么意思_SAP部分清账与剩余清账

    在对供应商付款清账时,有时候发票金额是10万,而实际只支付8万,这种情况下该如何操作呢?SAP提供了部分清账和剩余清账的功能,二者有什么区别呢?本文详细介绍SAP中的部分清账与剩余清账功能,供读者参考 ...

最新文章

  1. redis有序集合类型sort set
  2. 遇到的问题及解决方法
  3. 关于C语言的问卷调查
  4. [导入]伍迷创意随想集 之 聚众广告创精品
  5. 乐源机器人优点跟缺点_机床实现自动化上下料选桁架机械手还是关节机器人好?...
  6. Bootstrap list-group-item获取值
  7. Go圣经-学习笔记之复合类型(二)
  8. Python基本语法(一)
  9. 计算机图标怎么隐藏cmd,一个神奇的bat批处理文件,更好的隐藏电脑里的文件或者文件夹...
  10. orb特征描述符 打开相机与图片物体匹配
  11. 分享个markdownpad2的授权key
  12. java手机视频下载_使用JAVA合并哔哩哔哩手机客户端下载的视频
  13. 【Go语言入门教程】Go语言基本语法
  14. 关于补天SRC新手入门详细介绍(通用漏洞篇)
  15. 一步步教你Windows配置ISCSI共享存储
  16. 安装时总是显示“$(DllSelfRegisterEx)不能被注册” 的解决方法
  17. 初中计算机word试题,初中计算机会考word试题WORD15
  18. 天载优配提示商场存在两方面的问题
  19. 2020年再见,2021年你好!
  20. 二手书交易平台相关调研

热门文章

  1. linux 的 ip 命令 和 ifconfig 命令
  2. P2P下载技术-BT协议与Magnet磁力链接
  3. Resin 3.0.14 和 IIS6 整合
  4. 2020-12-19
  5. 为什么说DAO是未来的公司形式
  6. asp.net的aspx页面<% %>、<%@ %>、<%# %>、<%= %>、<%$ %>的用法
  7. JAVA代码混淆器大全
  8. 系统权限管理功能设计研究
  9. 利用pyechart绘制简单的迁徙流向图、世界地图
  10. 前端复习之DOM、BOM