sap fi清账函数POSTING_INTERFACE*的使用
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*的使用相关推荐
- SAP FI/CO 知识 浓缩版
一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...
- SAP FI/CO Reading Repository
目 录 前言. 一.SAP FI/CO 模块设置 二.SAP R/3 财务基本概念及集成性浅释--主数据概念篇 2.1 总账主数据 2.2 供应商主数据 2.3 客户主数据 2.4 商品主数据 2.5 ...
- SAP FI/CO 知识 搜集整理
一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...
- [转]SAP FI/CO 模块设置
一.SAP FI/CO 模块设置 1. 一般设置-货币-定义货币换算的换算率 增加换算率:M(标准兑换)-EUR(欧元)-RMB(人民币)-比率 2. 一般设置-货币-输入汇率 增加汇率:M(标准兑换 ...
- 【学习笔记】SAP FI 业务范围的概念
业务范围 以前转载过几篇关于业务范围的文章: SAP Business Area 业务范围_SAP剑客的博客-CSDN博客_sap 业务范围 SAP FI 系列 002:业务范围派生_stone082 ...
- SAP FI模块与SD、MM的接口配置
问:能否介绍一下FI模块与SD.MM的接口配置基本方法? 答:accounting determination autoposting,做FICO的对这两个接口帐号的配置都会感兴趣的啊- 不过这些东东 ...
- 如何理解 SAP UI5 的 sap.ui.define 函数
Understanding sap.ui.define by Hello World 随着 1.28 版本中 sap.ui.define 函数的引入,SAPUI5 引入了对异步模块定义 (AMD) 的 ...
- SAP FI 应收应付账龄分析-功能研究
转自:http://www.weidianyuedu.com/ 应收应付账龄分析,账龄开始计算日期应当以什么日期为准 一般使用"净到期日"作为账龄分析计算的开始日期. 在SAP会计 ...
- sap的清账是什么意思_SAP部分清账与剩余清账
在对供应商付款清账时,有时候发票金额是10万,而实际只支付8万,这种情况下该如何操作呢?SAP提供了部分清账和剩余清账的功能,二者有什么区别呢?本文详细介绍SAP中的部分清账与剩余清账功能,供读者参考 ...
最新文章
- redis有序集合类型sort set
- 遇到的问题及解决方法
- 关于C语言的问卷调查
- [导入]伍迷创意随想集 之 聚众广告创精品
- 乐源机器人优点跟缺点_机床实现自动化上下料选桁架机械手还是关节机器人好?...
- Bootstrap list-group-item获取值
- Go圣经-学习笔记之复合类型(二)
- Python基本语法(一)
- 计算机图标怎么隐藏cmd,一个神奇的bat批处理文件,更好的隐藏电脑里的文件或者文件夹...
- orb特征描述符 打开相机与图片物体匹配
- 分享个markdownpad2的授权key
- java手机视频下载_使用JAVA合并哔哩哔哩手机客户端下载的视频
- 【Go语言入门教程】Go语言基本语法
- 关于补天SRC新手入门详细介绍(通用漏洞篇)
- 一步步教你Windows配置ISCSI共享存储
- 安装时总是显示“$(DllSelfRegisterEx)不能被注册” 的解决方法
- 初中计算机word试题,初中计算机会考word试题WORD15
- 天载优配提示商场存在两方面的问题
- 2020年再见,2021年你好!
- 二手书交易平台相关调研
热门文章
- linux 的 ip 命令 和 ifconfig 命令
- P2P下载技术-BT协议与Magnet磁力链接
- Resin 3.0.14 和 IIS6 整合
- 2020-12-19
- 为什么说DAO是未来的公司形式
- asp.net的aspx页面<% %>、<%@ %>、<%# %>、<%= %>、<%$ %>的用法
- JAVA代码混淆器大全
- 系统权限管理功能设计研究
- 利用pyechart绘制简单的迁徙流向图、世界地图
- 前端复习之DOM、BOM