根据前台需要输入参数,在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过账生成凭证的更多相关文章

  1. 【ABAP系列】SAP ABAP 资产类BAPI过账 BAPI_ACC_DOCUMENT_POST

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 资产类BAPI ...

  2. 关于BAPI_ACC_DOCUMENT_POST解读

    BAPI_ACC_DOCUMENT_POST是SAP ERP提供生成会计凭证的标准BAPI,这个BAPI可以用到多种场景生成会计凭证,实际项目中一般情况下更多的是生成应收和应付的会计凭证,分别对应客户 ...

  3. NC凭证接口(Java发送流和处理返回结果)

    问题描述: 金融行业在系统模块分为财务和业务两个系统,我公司是负责业务模块系统,NC公司负责财务系统.但是财务有时候需要生成凭证,这时候就涉及业务模块了,我方就需要写NC凭证接口.这时候就需要三方交互 ...

  4. 用友二次开发之科脉TOT3凭证接口

    按客户的要求,根据科脉导出的数据,开发一个工具,将凭证导入T3 这个科目导出的凭证格式. 选择账套登陆,你没看错,这个是我开发的登陆界面. 选择接口文件. 软件自动进数据分类,你可以看到数据了.但只是 ...

  5. 收货MIGO

    FUNCTION zrfc_mm003. *"---------------------------------------------------------------------- * ...

  6. BAPI_GOODSMVT_CREATE 移动类型201 CODE = '03' 代码

    DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.      "物料凭证编号   DATA: GMHEAD LIKE BAPI2017_GM_H ...

  7. BAPI_GOODSMVT_CREATE 移动类型311 CODE = '04' 代码

    DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.      "物料凭证编号   DATA: GMHEAD LIKE BAPI2017_GM_H ...

  8. GL_总账完整会计周期业务(流程)

    2014-06-02 BaoXinjian

  9. F-02 创建财务凭证BAPI

    **.获取抬头参数, documentheader **.项目参数 accountgl = lt_acgl"G/L account item accountreceivable = lt_a ...

随机推荐

  1. SAP会计年度变式

       会计年度变式用来确定SAP系统中每个公司的会计记账期间的变式.顾名思议,每个公司的会计年度变式必须与其实际使用的会计年度匹配.     在SAP系统中,每个会计年度最多允许有16个记账期间,其中 ...

  2. windows下同时安装多个python版本的方法

    根据项目的需要,我的电脑上需要安装的python不止一个版本,比如同时需要python2.7和python3.6: 安装多个python版本 这时需要下载多个python安装包,为了区分不同的pyth ...

  3. alipay sign error

    阴影部分地址参数有问题: <PAY_COMPLETE_PAGE_URL><![CDATA[https://baoxian.itaiping.com/ae-console/remote ...

  4. Docker安装MySQL 8.0并挂载数据及配置文件

    安装部署环境 Ubuntu 18.04.3 LTS Docker 19.03.2 MySQL latest(8.0.17) 下载镜像 # docker从仓库中拉取最新版的mysql镜像,如果没加标签的 ...

  5. vue--npm的使用

    npm介绍 NPM 全称 Node Package Manager,它是 JavaScript 的包管理工具, 并且是 Node.js 平台的默认包管理工具.通过NPM 可以安装.共享.分发代码,管理 ...

  6. DRF--ModelSerializer

    前戏 在之前我们写序列化器的时候,写的很low,遇到反序列化的有时候还需要重写该字段,用post请求的时候,还要重写create方法,用put请求的时候,还需要重写update方法.总而言之,写起来很 ...

  7. luogu5823 课表的排列

    题目链接 problem 构造一个长度为\(2n\)的数列.满足: 1.[1,n]中每个数字恰好出现两次. 2.将所有相同数字之间相隔的数字个数排序后,得到公差为1的等差数列. 保证n为奇数. sol ...

  8. intellij idea从git检出代码并建立工程

    1. 打开intellij idea,点击configure,settings 2. 左侧展开Version Control,点击Git,点击下图中红框中按钮 3. 在弹出窗口中找到git.exe,点 ...

  9. [Pytorch Bug] "EOFError: Ran out of input" When using Dataloader with num_workers=x

    在Windows上使用Dataloader并设置num_workers为一个非零数字,enumerate取数据时会引发"EOFError: Ran out of input"的报错 ...

  10. 用OC实现一个栈:结合单链表创建动态栈

    一.介绍 栈是一种数据存储结构,存储的数据具有先进后出的特点.栈一般分为动态栈和静态栈. 静态栈比较好理解,例如用数组实现的栈.动态栈可以用链表来实现. 方式:固定base指针,每次更改top指向入栈 ...