ABAP FICO F-37/F-47创建预收/预付款
FICO 所有的创建会计凭证的bapi都是: BAPI_ACC_DOCUMENT_POST
F-37/F-47创建的预收/预付款,只有一行
一般来说都是借贷项平衡。所以直接去函数里面填数据,会报错
查阅资料后得知,如果创建的凭证只有一行的,那么需要打上特定的标识,
函数的入参中 sp_gl_ind 和 bus_act 我分别填写的是F 和 'RFST'
并且增强:BADI_ACC_DOCUMENT
代码如下,供大家参考
DATA:ls_documentheader LIKE bapiache09,lt_accountgl LIKE TABLE OF bapiacgl09,ls_accountgl LIKE bapiacgl09,lt_currencyamount LIKE TABLE OF bapiaccr09,ls_currencyamount LIKE bapiaccr09,lt_return LIKE TABLE OF bapiret2,ls_return TYPE bapiret2,lt_accountpayable LIKE TABLE OF bapiacap09,ls_accountpayable LIKE bapiacap09,lt_accountreceivable LIKE TABLE OF bapiacar09,ls_accountreceivable LIKE bapiacar09,lt_extension LIKE TABLE OF bapiparex,ls_extension LIKE bapiparex.DATA: lv_num TYPE posnr_acc.DATA: ls_exten TYPE zsfi_acc_document_ex1.DATA: ls_celtab TYPE lvc_s_styl.LOOP AT gt_data INTO gs_data WHERE box IS NOT INITIAL.CLEAR:lt_return,gs_data-message."凭证抬头CLEAR ls_documentheader.ls_documentheader-username = sy-uname. "用户名ls_documentheader-bus_act = 'RFST'. "必填,且必定为此值,不填报错ls_documentheader-comp_code = gs_data-bukrs. "公司代码ls_documentheader-doc_date = sy-datum. "凭证日期 收款日期ls_documentheader-pstng_date = sy-datum. "过账日期 收款日期ls_documentheader-doc_type = 'DZ'. "凭证类型ls_documentheader-header_txt = gs_data-bktxt. "抬头文本CLEAR: ls_accountreceivable,lt_accountreceivable.lv_num = lv_num + 1.ls_accountreceivable-itemno_acc = lv_num. "会计凭证行项目编号ls_accountreceivable-customer = gs_data-kunnr. "临时客户ls_accountreceivable-item_text = gs_data-bktxt. "行项目文本ls_accountreceivable-sales_ord = gs_data-vbeln.ls_accountreceivable-s_ord_item = gs_data-posnr.ls_accountreceivable-comp_code = gs_data-bukrs.ls_accountreceivable-bline_date = gs_data-zdate.ls_accountreceivable-sp_gl_ind = 'F'.ls_accountreceivable-tax_code = 'X0'.ls_accountreceivable-gl_account = '2205010000'.APPEND ls_accountreceivable TO lt_accountreceivable."金额CLEAR: ls_currencyamount,lt_currencyamount.ls_currencyamount-itemno_acc = lv_num.ls_currencyamount-currency = gs_data-waers.ls_currencyamount-amt_doccur = gs_data-zwrbtr.APPEND ls_currencyamount TO lt_currencyamount.CLEAR: ls_exten,ls_extension,lt_extension.ls_exten-posnr = lv_num. "凭证行项目ls_exten-bschl = '09'. "凭证行项目过账码ls_exten-zumsk = 'A'. "ls_exten-umskz = 'F'. "ls_extension-structure = 'ZSFI_ACC_DOCUMENT_EX1'.ls_extension-valuepart1 = ls_exten.APPEND ls_extension TO lt_extension."应收CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'EXPORTINGdocumentheader = ls_documentheaderTABLESaccountgl = lt_accountglaccountreceivable = lt_accountreceivablecurrencyamount = lt_currencyamountreturn = lt_returnextension2 = lt_extension.LOOP AT lt_return INTO ls_return WHERE type = 'E'.CONCATENATE gs_data-message ls_return-message INTO gs_data-message.ENDLOOP.
增强中的代码如下:
DATA: wa_extension TYPE bapiparex,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 c_extension2 BY structure.LOOP AT c_extension2 INTO wa_extension.AT NEW structure.CREATE DATA l_ref TYPE (wa_extension-structure).ASSIGN l_ref->* TO <l_struc>.ENDAT.CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2wa_extension-valuepart3 wa_extension-valuepart4INTO ext_value.MOVE ext_value TO <l_struc>.ASSIGN COMPONENT 'POSNR' OF STRUCTURE <l_struc> TO <l_field>.READ TABLE c_accit WITH KEY posnr = <l_field>INTO wa_accit.IF sy-subrc IS INITIAL.MOVE-CORRESPONDING <l_struc> TO wa_accit.
*此处为创建单行项目的会计凭证的特殊逻辑。为了不影响标准的会计凭证创建,
*需要根据传入的增强结构判断,并将BSTAT设置为'S',这样就不会校验借贷平衡了IF wa_extension-structure = 'ZSFI_ACC_DOCUMENT_EX1'.wa_accit-bstat = 'S'.ENDIF.MODIFY c_accit FROM wa_accit INDEX sy-tabix.ENDIF.ENDLOOP.
ABAP FICO F-37/F-47创建预收/预付款相关推荐
- ABAP 数据类型 P 和 F
文章目录 1. I : integer 2. P:packed number 3. F :float 大家都是搞计算的数字咯,那大家有啥区别? 1. I : integer 整形,就整数呗.有正整数和 ...
- R语言F分布函数F Distribution(df, pf, qf rf )实战
R语言F分布函数F Distribution(df, pf, qf & rf )实战 目录 R语言F分布函数F Distribution(df, pf, qf & rf )实战 #生成 ...
- tail -f 和 -F 的用法
-f 是--follow[=HOW]的缩写, 可以一直读文件末尾的字符并打印出来. "[=HOW]"有两个写法,一个"=descriptor",另一个是&quo ...
- python练习笔记——面试题 F(n) = F(n-1)+F(n-2)
已知:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) 其中(n≥2,n∈N*) 求:求10以内的函数值分别是多少 方法一: def F(n):if n <= ...
- mips语言实现 f(n) = f(n-1) + 2*f(n-2) + 3*f(n-3)
这是计算机组成的一个任务,原来拿别人的交了,现在补上! 首先,了解 f(n) = f(n-1) + 2*f(n-2) + 3*f(n-3) 的基本条件:f(0) = 0, f(1) = 1, f(2) ...
- 创建预编译头 Debug 正常 Release Link Error:预编译头已存在,使用第一个 PCH
创建预编译头 Debug 正常 Release Link Error Main.obj : error LNK2005: ___@@_PchSym_@00@UmfilkilqUdrmzkkUkilqU ...
- c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...
#include #include int f(int n) { if (n == 0 || n == 1) { return 1; } if (n == 2) { return 0; } retur ...
- 鏡頭上的 F 與 f 之區別
http://zip.nvp.com.tw/forum.php?mod=viewthread&tid=603&extra=page%3D2 鏡頭上的 F 與 f 之區別: ‧ F 代表 ...
- 设f(x)=∑x^n/n^2,证明f(x)+f(1-x)+lnxln(1-x)=∑1/n^2
题目 设 f ( x ) = ∑ n = 1 ∞ x n n 2 ,证明: f ( x ) + f ( 1 − x ) + ln x ln ( 1 − x ) = ∑ n = 1 ∞ 1 n ...
最新文章
- Java:假设车库有3个车位(可以通过boolean[]数组来表示车库)可以停车,写一个程序模拟多个用户开车离开,停车入库的效果。注意:车位有车时不能停车。
- FTP(File Transfer Protocol)搭建文件传输服务器vsftp(vsftpd)(FTP和SFTP区别)(未完成)
- Ubuntu16.04怎样安装Python3.6
- 程序员面试题准备(1)单链表逆置
- 如何使用CDR智能填充工具
- mysql 日期型中文报错_mysql日期类型默认值'0000-00-00' 报错,是什么问题?
- 敏捷 - #1 原则:早期和持续交付有价值的软件 (#1 Agile Principle)
- 剑指offer——6.从尾到头打印链表
- 阶段3 1.Mybatis_09.Mybatis的多表操作_4 完成account一对一操作-建立实体类关系的方式...
- Atitit mysql insert perf enhance 批量插入数据库性能 目录 1.1. 案一:使用ignore关键字	1 2. 异步插入	2 2.1. 其它关键:DELAYED 做为
- delphi10.2.1下载地址
- Arduino与Proteus仿真实例-AD5242数字电位器驱动仿真
- f5 系统损坏,重新安全系统
- 爬去当当热销图书信息
- linux命令ftps,Linux下FTP服务器应用之FTPS(FTP+SSL)
- HTML实现倒计时插件
- 计算机音乐蜗牛与黄鹂鸟,音乐教材《蜗牛与黄鹂鸟》教案
- vue 使用swper组件
- 没“硬货”!不卖手机的苹果做起了信用卡和脱口秀
- Java毕设_装修公司业务流程管理系统的设计与实现
热门文章
- 中国计算机软件专业技术,中国计算机软件专业技术资格考试-20210325012847.doc-原创力文档...
- ab压力测试工具-批量压测脚本
- 服务器系统事件日志删除部分,web 服务器的系统事件日志
- ubuntu清理挖矿病毒
- 远程连接多台电脑做压力性能测试
- 天津市百畅网络科技有限公司----微信代运营服务细则
- wordpress主题基本文件配置
- java 调用 docker 中的 HBase 服务 卡死 不报错 不报异常 卡着不动 但 服务ip是能ping通
- leetcode(68)_1436_easy_旅行终点站_python
- 前端HTML学习笔记(一)