用BAPI_ACC_DOCUMENT_POST过账生成凭证
根据前台需要输入参数,在bapi里面传值,不同业务所需参数不同。
dome1:
"bapi结构赋值
LOOP AT lt_item INTO lw_item.
wa_documentheader-comp_code = lw_item-bukrs. "公司代码
wa_documentheader-doc_date = p_date. "凭证日期
wa_documentheader-pstng_date = p_date. "过账日期
wa_documentheader-doc_type = 'Z4'.
wa_documentheader-username = sy-uname.
wa_documentheader-fisc_year = p_date+0(4).
wa_documentheader-header_txt = '合同税率计算过账'.
wa_documentheader-fis_period = sy-datum+4(2).
CLEAR :wa_accountgl.
lv_i = lv_i + 1.
wa_accountgl-itemno_acc = lv_i. "会计凭证行项目编号
wa_accountgl-gl_account = '6051060000'. "总分类帐帐目
wa_accountgl-item_text = '合同税率计算过账'.
wa_accountgl-profit_ctr = lw_item-prctr. "利润中心
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount-itemno_acc = lv_i. "行项目编号
wa_currency_amount-amt_doccur = lw_item-taxamount. "金额
wa_currency_amount-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR:wa_zbapi_acc01,wa_extension2.
wa_zbapi_acc01-posnr = lv_i.
wa_zbapi_acc01-xnegp = 'X'. "反记账
wa_zbapi_acc01-bschl = '40'.
wa_extension2-structure = 'ZBAPI_ACC01'.
wa_extension2-valuepart1 = wa_zbapi_acc01.
APPEND wa_extension2 TO lt_extension2.
CLEAR :wa_accountgl.
lv_i = lv_i + 1.
wa_accountgl-itemno_acc = lv_i. "会计凭证行项目编号
wa_accountgl-gl_account = lw_item-acctcode. "总分类帐帐目
wa_accountgl-item_text = '合同税率计算过账'.
wa_accountgl-profit_ctr = lw_item-prctr. "利润中心
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount-itemno_acc = lv_i. "行项目编号
wa_currency_amount-amt_doccur = - lw_item-taxamount. "金额
wa_currency_amount-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR:wa_zbapi_acc01,wa_extension2.
wa_zbapi_acc01-posnr = lv_i.
wa_zbapi_acc01-bschl = '50'.
wa_extension2-structure = 'ZBAPI_ACC01'.
wa_extension2-valuepart1 = wa_zbapi_acc01.
APPEND wa_extension2 TO lt_extension2.
"财务凭证为999行,到900行时,进行财务凭证拆分;调用bapi生成凭证
IF lv_i >= 999.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = wa_documentheader
IMPORTING
obj_type = lv_obj_type
obj_key = lv_obj_key
obj_sys = lv_obj_sys
TABLES
accountgl = lt_accountgl
currencyamount = lt_currency_amount
return = lt_return
extension2 = lt_extension2.
CLEAR wa_return.
READ TABLE lt_return INTO wa_return WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. "失败
LOOP AT lt_return INTO wa_return WHERE type = 'E'.
ls_item-mesg = ls_item-mesg && '' && wa_return-message.
ENDLOOP.
ls_item-mesg = '@0A@' && '过账失败:' && ls_item-mesg.
ls_item-status = 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "成功
EXPORTING
wait = 'X'.
CONCATENATE '@08@' '过账成功' INTO ls_item-mesg.
ls_item-status = 'S'.
ENDIF.
CLEAR : lv_i,wa_documentheader,lt_accountgl,wa_accountgl,lt_currency_amount,
wa_currency_amount
,lt_extension2,lt_extension2[].
ENDIF.
ENDLOOP.
demo2:
LOOP AT gt_item INTO gs_item.
AT NEW bukrs.
CLEAR:lv_i,wa_documentheader,lt_accountgl,wa_accountgl,lt_currency_amount,
wa_currency_amount
,lt_extension2,lt_extension2[].
wa_documentheader
-comp_code = gs_item-bukrs.
READ TABLE gt_item INTO gs_item INDEX sy-tabix.
wa_documentheader
-doc_date = p_budat. "凭证日期
wa_documentheader
-pstng_date = p_budat. "过账日期
wa_documentheader
-doc_type = 'SA'.
wa_documentheader
-username = sy-uname.
wa_documentheader
-header_txt = '调整折旧费用分摊'.
ENDAT.
IF gs_item-mes IS INITIAL.
CLEAR :wa_accountgl.
lv_i
= lv_i + 1.
wa_accountgl
-itemno_acc = lv_i. "会计凭证行项目编号
wa_accountgl
-gl_account = gs_item-ktnafg. "总分类帐帐目
wa_accountgl
-costcenter = gs_item-kostl. "成本中心
wa_accountgl
-item_text = '调整折旧费用分摊'.
wa_accountgl
-profit_ctr = gs_item-bukrs. "利润中心
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount
-itemno_acc = lv_i. "行项目编号
wa_currency_amount
-amt_doccur = - gs_item-nafaz. "金额
wa_currency_amount
-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR :wa_accountgl.
lv_i
= lv_i + 1.
wa_accountgl
-itemno_acc = lv_i. "会计凭证行项目编号
wa_accountgl
-gl_account = gs_item-hkont. "总分类帐帐目
wa_accountgl
-costcenter = gs_item-kostl1. "成本中心
wa_accountgl
-profit_ctr = gs_item-bukrs. "利润中心
wa_accountgl
-item_text = '调整折旧费用分摊'.
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount
-itemno_acc = lv_i. "行项目编号
wa_currency_amount
-amt_doccur = gs_item-nafaz. "金额
wa_currency_amount
-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR:wa_zbapi_acc01,wa_extension2.
wa_zbapi_acc01
-posnr = lv_i.
IF gs_item-nafaz LT 0.
wa_zbapi_acc01
-xnegp = 'X'. "反记账
ENDIF.
wa_extension2
-structure = 'ZBAPI_ACC01'.
wa_extension2
-valuepart1 = wa_zbapi_acc01.
APPEND wa_extension2 TO lt_extension2.
ENDIF.
AT END OF bukrs.
"调用bapi生成凭证
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader
= wa_documentheader
IMPORTING
obj_type
= lv_obj_type
obj_key
= lv_obj_key
obj_sys
= lv_obj_sys
TABLES
accountgl
= lt_accountgl
currencyamount
= lt_currency_amount
return = lt_return
extension2
= lt_extension2.
LOOP AT gt_anlp1 ASSIGNING <f1> WHERE box EQ 'X' AND mes EQ space.
CLEAR wa_return.
READ TABLE lt_return INTO wa_return WITH KEY type = 'E'.
IF sy-subrc = 0.
CONCATENATE '@0A@' '调整失败:' wa_return-message INTO <f1>-mes.
CONCATENATE 'E' gs_anlp-sta INTO <f1>-sta.
ELSE.
CONCATENATE '@08@' '科目调整成功' lv_obj_key+0(10) INTO <f1>-mes.
CONCATENATE 'S' '' INTO <f1>-sta.
ENDIF.
<f1>
-pname = sy-uname.
<f1>
-pdate = sy-datum.
<f1>
-ptime = sy-uzeit.
<f1>
-belnr_t = lv_obj_key+0(10).
<f1>
-peraf = p_peraf.
ENDLOOP.
PERFORM frm_save_data.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDAT.
ENDLOOP.
注意:bapi结束需要
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT''.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
每生成一个凭证就保存。
用BAPI_ACC_DOCUMENT_POST过账生成凭证的更多相关文章
- 【ABAP系列】SAP ABAP 资产类BAPI过账 BAPI_ACC_DOCUMENT_POST
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 资产类BAPI ...
- 关于BAPI_ACC_DOCUMENT_POST解读
BAPI_ACC_DOCUMENT_POST是SAP ERP提供生成会计凭证的标准BAPI,这个BAPI可以用到多种场景生成会计凭证,实际项目中一般情况下更多的是生成应收和应付的会计凭证,分别对应客户 ...
- NC凭证接口(Java发送流和处理返回结果)
问题描述: 金融行业在系统模块分为财务和业务两个系统,我公司是负责业务模块系统,NC公司负责财务系统.但是财务有时候需要生成凭证,这时候就涉及业务模块了,我方就需要写NC凭证接口.这时候就需要三方交互 ...
- 用友二次开发之科脉TOT3凭证接口
按客户的要求,根据科脉导出的数据,开发一个工具,将凭证导入T3 这个科目导出的凭证格式. 选择账套登陆,你没看错,这个是我开发的登陆界面. 选择接口文件. 软件自动进数据分类,你可以看到数据了.但只是 ...
- 收货MIGO
FUNCTION zrfc_mm003. *"---------------------------------------------------------------------- * ...
- BAPI_GOODSMVT_CREATE 移动类型201 CODE = '03' 代码
DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC. "物料凭证编号 DATA: GMHEAD LIKE BAPI2017_GM_H ...
- BAPI_GOODSMVT_CREATE 移动类型311 CODE = '04' 代码
DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC. "物料凭证编号 DATA: GMHEAD LIKE BAPI2017_GM_H ...
- GL_总账完整会计周期业务(流程)
2014-06-02 BaoXinjian
- F-02 创建财务凭证BAPI
**.获取抬头参数, documentheader **.项目参数 accountgl = lt_acgl"G/L account item accountreceivable = lt_a ...
随机推荐
- [Spring cloud 一步步实现广告系统] 10. 使用Ribbon 实现微服务调用
在使用Ribbon调用广告投放系统API之前,我们需要先创建2个VO对象,AdPlanVO,AdPlanGetRequestVO. //数据请求对象 @Data @NoArgsConstructor ...
- C# loop executed one by one wait the former completed
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Initialize a Property After Creating an Object 创建对象后初始化属性 (XPO)
In this lesson, you will learn how to set the default value for a particular property of a business ...
- 【C#】学习笔记(3) 关于Events使用的小Demo
关于Events事件的简单Demo. 目录结构: Program.cs using System; namespace EventsDemo { class Program { static void ...
- SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里
SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里 如下的销售订单,有多个ITEM, 为其中的第一个ITEM创建了DN 80016362, 如果业务发现需要修改该交货单,将销售订单里的 ...
- qt qrc 资源文件
qt qrc 资源文件 qt qrc 资源文件 qt qrc 资源文件
- Leetcode 90. 子集 II
地址 https://leetcode-cn.com/problems/subsets-ii/ 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重 ...
- C++ 标准库,可变参数数量,参数类型相同
#include <iostream> // 可变模板参数 // 此例:可以构造可变数量,可变类型的函数输入. // 摘自:https://www.cnblogs.com/qicosmos ...
- dom0、dom2、dom3事件
https://www.jianshu.com/p/3acdf5f71d5b addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用. removeEven ...
- oracle中utl_raw
RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节.LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变 ...