201704 创建财务凭证函数

从老司机那了解到创建财务凭证就只有两个函数,
用的多的就是 BAPI_ACC_DOCUMENT_POST.

另外,今天发现下另外一个,

418-419 要完成F110 预付款功能的开发,得抓紧时间了。

以下转自[http://blog.csdn.net/trassion/article/details/8267953]

http://www.soujigu.com/blog_76943.html

http://blog.csdn.net/longgerr/article/details/5958210

http://scnblogs.techweb.com.cn/orangeboy/archives/149.html

http://blog.csdn.net/wren2004/article/details/5757565

http://blog.csdn.net/longgerr/article/details/5958210

sap 标准例子  SE38:ACC_BAPI_TEST_DOCUMENT

使用实例:

FUNCTION zrfc_document_post.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  EXPORTING
*"    REFERENCE(EP_DOCNO) TYPE  BELNR_D
*"  TABLES
*"     T_DOCUMENT STRUCTURE  ZDOCUMENT
*"     IT_RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------
  DATA:wa_documentheader   TYPEbapiache09,                   "待传凭证抬头 工作区

   wa_accountgl        TYPEbapiacgl09,                   "总帐科目项 工作区
   it_accountgl        TYPE STANDARD TABLE OF bapiacgl09,  "总帐科目项内表
   wa_accountreceivable TYPEbapiacar09,                   "客户项目 工作区
   it_accountreceivable TYPE STANDARD TABLE OFbapiacar09,  "客户项目 内表
   wa_accountpayable   TYPEbapiacap09,                   "供应商项目 工作区
   it_accountpayable   TYPE STANDARD TABLE OF bapiacap09,  "供应商项目内表
   wa_currencyamount   TYPEbapiaccr09,                   "货币项目 工作区
   it_currencyamount   TYPE STANDARD TABLE OF bapiaccr09,  "货币项目 内表
   wa_extension2       TYPEbapiparex,                    "参考结构 工作区
   it_extension2       TYPE STANDARD TABLE OFbapiparex,   "参考结构 内表
   wa_return           TYPEbapiret2,                     "返回参数 工作区
**   it_return           TYPE STANDARD TABLE OFbapiret2,   "返回参数 内表
   wa_zbkpf_send       TYPEzbkpf_send,                   "已导凭证 工作区
   it_zbkpf_send       TYPE STANDARD TABLE OF zbkpf_send.  "已导凭证 内表

  DATA: w_document  TYPEzdocument,       "凭证头 工作区
    lw_documentTYPEzdocument.       "临时 凭证头 工作区

  DATA: cns_dr_r TYPE char2 VALUE‘DR‘,   "凭证借方标识
    cns_cr_rTYPE char2 VALUE‘CR‘,   "凭证贷方标识
   cns_x    TYPEchar1 VALUE‘X‘,    "确认标识
    cns_rfbuTYPE char4 VALUE ‘RFBU‘,  "业务事务
   cns_sa   TYPE char2 VALUE‘SA‘,   "总分类账凭证
   cns_kr   TYPE char2 VALUE‘KR‘,   "供应商发票
   cns_40   TYPE char2 VALUE‘40‘,   "总账-借
   cns_50   TYPE char2 VALUE‘50‘,   "总账-贷
   cns_01   TYPE char2 VALUE‘01‘,   "应收-借
   cns_11   TYPE char2 VALUE‘11‘,   "应收-贷
   cns_21   TYPE char2 VALUE‘21‘,   "应付-借
   cns_31   TYPE char2 VALUE‘31‘.   "应付-贷
  DATA: l_return_tabcount TYPE i.

  CHECK t_document IS NOT INITIAL.

  SORT t_document BY belnr ASCENDING.

  LOOP AT t_document INTO w_document.

   lw_document = w_document.
*------------------------转换表头------------------------------------
    AT NEWbelnr.
     wa_documentheader-bus_act   =cns_rfbu.          "业务事务
     wa_documentheader-username   =sy-uname.          "系统当前用户
     wa_documentheader-comp_code  =lw_document-bukrs.  "公司代码
     wa_documentheader-doc_date   =lw_document-bldat.  "凭证中的凭证日期
     wa_documentheader-pstng_date = lw_document-budat. "凭证中的记帐日期
     wa_documentheader-fisc_year  =lw_document-gjahr.  "会计年度
     wa_documentheader-fis_period = lw_document-monat. "会计期间
     wa_documentheader-doc_type   =lw_document-blart.  "凭证类型
     wa_documentheader-ref_doc_no = lw_document-xblnr. "参考凭证号
     wa_documentheader-header_txt = lw_document-bktxt. "凭证抬头文本
    ENDAT.

    CASElw_document-blart.
*------------------------总账科目------------------------------------
     WHEN cns_sa.
*------------------------总帐科目项----------------------------------
       wa_accountgl-itemno_acc =lw_document-buzei.           "会计凭证中的行项目数
       wa_accountgl-gl_account =lw_document-hkont.           "总分类帐帐目
       wa_accountgl-comp_code  =lw_document-bukrs.           "公司代码
       wa_accountgl-costcenter =lw_document-kostl.           "成本中心
       wa_accountgl-profit_ctr =lw_document-prctr.           "利润中心
       APPEND wa_accountgl TO it_accountgl.
       CLEAR wa_accountgl.
*------------------------供应商发票OR供应商贷项凭证----------------
     WHEN cns_kr OR cns_kg.
*     统驭科目
       IF lw_document-mitkz = cns_x.
*------------------------供应商项目----------------------------------
         wa_accountpayable-itemno_acc =lw_document-buzei.      "会计凭证中的行项目数
         wa_accountpayable-vendor_no  =lw_document-lifnr.      "供应商
         APPEND wa_accountpayable TO it_accountpayable.
         CLEAR wa_accountpayable.
*     非统驭科目
       ELSE.
*------------------------总帐科目项----------------------------------
         wa_accountgl-itemno_acc =lw_document-buzei.           "会计凭证中的行项目数
         wa_accountgl-gl_account =lw_document-hkont.           "总分类帐帐目
         wa_accountgl-comp_code  =lw_document-bukrs.           "公司代码
         wa_accountgl-costcenter =lw_document-kostl.           "成本中心
         wa_accountgl-profit_ctr =lw_document-prctr.           "利润中心
         APPEND wa_accountgl TO it_accountgl.
         CLEAR wa_accountgl.
       ENDIF.
    ENDCASE.

*------------------------增强字段-----------------------------------
    IFlw_document-brnch IS NOT INITIAL.
     wa_extension2-structure  =‘BRNCH‘.             "分支号
     wa_extension2-valuepart1 =lw_document-buzei.   "行项目数
     wa_extension2-valuepart2 =lw_document-brnch.   "分支号值

     APPEND wa_extension2 TO it_extension2.
     CLEAR wa_extension2.
    ENDIF.

    IFlw_document-umskz IS INITIAL.  “特别总/分类帐指示符
     CASE lw_document-blart.
       WHEN cns_sa.
         IF lw_document-shkzg =cns_dr_r.   "借贷方记账码
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_40.
         ELSEIF lw_document-shkzg = cns_cr_r.
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_50.
         ENDIF.
     ENDCASE.

     APPEND wa_extension2 TO it_extension2.
     CLEAR wa_extension2.
    ELSE.
     wa_extension2-structure  =‘UMSKZ‘.             "特别总/分类帐指示符
     wa_extension2-valuepart1 =lw_document-buzei.   "行项目数
     wa_extension2-valuepart2 =lw_document-umskz.   "特别总/分类帐值

     APPEND wa_extension2 TO it_extension2.
     CLEAR wa_extension2.

     CASE lw_document-blart.
       WHEN cns_kr OR cns_kg.
         IF lw_document-shkzg = cns_dr_r.
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_29.
         ELSEIF lw_document-shkzg = cns_cr_r.
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_39.
         ENDIF.
       WHEN cns_dr OR cns_dg.
         IF lw_document-shkzg = cns_dr_r.
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_09.
         ELSEIF lw_document-shkzg = cns_cr_r.
           wa_extension2-structure  = ‘BSCHL‘.
           wa_extension2-valuepart1 = lw_document-buzei.
           wa_extension2-valuepart2 = cns_19.
         ENDIF.
     ENDCASE.

     APPEND wa_extension2 TO it_extension2.
     CLEAR wa_extension2.
    ENDIF.

    IFlw_document-sgtxt IS NOT INITIAL.
     wa_extension2-structure  =‘SGTXT‘.             "项目文本
     wa_extension2-valuepart1 =lw_document-buzei.   "行项目数
     wa_extension2-valuepart2 =lw_document-sgtxt.   "项目文本值
     APPEND wa_extension2 TO it_extension2.
     CLEAR wa_extension2.
    ENDIF.

    AT END OFbelnr.

     CALL FUNCTION ‘BAPI_ACC_DOCUMENT_POST‘
       EXPORTING
         documentheader   =wa_documentheader    "录入凭证头
       TABLES
         accountgl        =it_accountgl         "总帐科目项
         accountreceivable = it_accountreceivable "客户项目
         accountpayable   =it_accountpayable    "供应商项目
         currencyamount   =it_currencyamount    "货币项目
         extension2       =it_extension2        "扩展字段
         return           =it_return.           "返回值

     DESCRIBE TABLE it_return LINES l_return_tabcount.

     IF l_return_tabcount =1.                          "凭证导入成功
       CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘.

*     记录已导入的凭证号
       READ TABLE it_return INTO wa_return INDEX 1.
       IF sy-subrc EQ 0.
         ep_docno = wa_return-message_v2+0(10).
         wa_return-type = ‘S‘.
         wa_return-message = text-001.
         APPEND wa_return TO it_return.
       ELSE.
         wa_return-type = ‘E‘.
         wa_return-message = text-002.
         APPEND wa_return TO it_return.
       ENDIF.
     ELSE.                                              "凭证导入失败

     ENDIF.
     CLEAR: l_return_tabcount,
        wa_zbkpf_send,
        wa_documentheader,
        it_accountgl,
        it_accountpayable,
        it_currencyamount,
        it_extension2,
        it_return.
    ENDAT.
    CLEAR:w_document,lw_document.
  ENDLOOP.

ENDIF.

ENDFUNCTION.
时间: 2024-10-12 20:07:47

201704 创建财务凭证函数的相关文章

201704 F-02创建财务凭证

一.F-02 创建财务凭证-BDC 期初余额导入程序 程序:ZFIU_LDV_F_02_UPLOAD 创建F-02 凭证: *&---------------------------------------------------------------------------------------------------- CALL TRANSACTION 'F-02' USING it_bdcdata MODE mode_f UPDATE 'S' MESSAGES INTO it_bdcm

【转】IntelliJ 创建main函数快捷

http://blog.csdn.net/tiantiandjava/article/details/42269173 今天偶然发现了IntelliJ中 创建main函数的快捷键,依次还有for循环,System.out.println(); 在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main的首字母. 依次还有在方法体内键入for会有一个fori的提示,选中然后tab键,就会自动创

SQL_创建表值函数

--创建表值函数 create function GetClassMember(@className nvarchar(50)) returns table as return(select * from Students where ClassName=@className) go --调用表值函数 select * from GetClassMember('高三一班')

labview学习之“创建数组”函数

“创建数组”函数 一.位置:“函数”-“编程”-“数组”-“创建数组” 其图标为: 图1 图标 二.简介: “创建数组”函数有两种模式,一种是“连接模式”,一种是“添加模式”. 如需切换两种模式,可右键单击“创建数组”函数,切换连接输入菜单项. “创建数组”函数默认输入端数量为1.如需添加输入,可右键单击该函数并从菜单中选择添加输入,或者调整函数的大小. (1)在连接模式下,输入可以同时包含n维数组.n-1维数组(n>0).“创建数组”函数通过连接输入数组的每个元素得到一个n维数组. (2)在添

创建一个函数,实现库函数strstr的功能

★创建一个函数,实现库函数strstr的功能 #include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strstr(char *src,char *dst) { assert(dst); assert(src); char *p = src; char *q = dst; while ((*dst)&&(*src)) { if (*src == *dst)        //两指针

Exchange 2013 PowerShell创建PowerShell函数

函数是将一些列命令合并到一个可重用的代码块中,然后我们只需要调用这个函数.函数可以被配置为更改或返回一个或多个可以显示在控制台或输出到一个外部文件的对象.你可以将函数的输出传递給一个变量,或其它命令.在这一节中,我们讲学习下如何创建一个PowerShell函数 去创建一个函数,我们需要用到关键字Function,然后紧跟着就是这个函数的名称,然后函数的代码附在大括号{}中.先来看一个示例,这是一个基本的函数,将会在一个列表中显示邮箱的三个属性 function Get-MailboxList {

[笔记]linux下和windows下的 创建线程函数

linux下和windows下的 创建线程函数 1 #ifdef __GNUC__ 2 //Linux 3 #include <pthread.h> 4 #define CreateThreadEx(tid,threadFun,args) pthread_create(tid, 0, threadFun, args) 5 #define CloseHandle(ph) 6 7 int pthread_create( 8 //指向线程标识符的指针. 9 pthread_t *restrict t

javascript 创建ajax函数 &quot;四部曲&quot;

开门见山简要的来写一个ajax函数,方便要用到ajax的时候来调用,下面附:获取 json 数据一个小实例,请在服务器下执行...   创建一个 ajax.js 文件把ajax函数代码放进去 //创建ajax函数四部曲  1.创建创建XMLHttpRequest对象   2.连接服务器   3.发送请求   4.接收数据 function ajax(url,sueeccd,lose){ // 1.创建XMLHttpRequest对象 //定义一个全局变量 var xhr = null; //判断

【ASP.NET】如何使用类创建公共函数,在不同ASP.NET页面间重复调用

为了减少代码冗余,应将公共函数写在类中,供不同ASP.NET页面调用. 1,先新建一个类,并在类中添加函数逻辑 namespace public_function_demo { public class MyFunction { public static string tbName(string tbNo) { if (tbNo == "510101") { return "3GPP 51.010-1"; } else { return "3GPP 51