[转载]生成总账会计凭证的源程序

转自:http://blog.chinaunix.net/uid-22490185-id-75722.html

BAPI: BAPI_ACC_GL_POSTING_POST

生成总账会计凭证的源程序

1. BAPI没有记帐码的字段

BAPI一般是给其他系统调用的,所以BAPI的参数字段名和SAP的字段名不同,对于其他系统更容易理解,除了SAP,其他系统还有记帐码一说吗?!

2. BAPI创建成功后不返回SAP凭证号

OBJ_参考交易,OBJ_KEY字段参考关键 这2个参数如果赋值,则return消息中不会有SAP的凭证号信息了。

3.关于extension1参数

当用户的会计凭证信息在BAPI中没有参数支持时,可以借用extension存储。SAP提供增强对这个参数进行操作。

BAPI_ACC_GL_POSTING_POST: User exit   ACBAPI01

BAPI_ACC_DOCUMENT_POST:   BADI        ACC_DOCUMENT~CHANGE

4. Return返回的信息是创建成功,但在SAP系统中找不到凭证

是否忘记Commit work了?!



** 以下是生成总账会计凭证的源码:



REPORT  zbapi_gl_posting.

****声明变量和内表

DATA: obj_type LIKE bapiache02-obj_type,               "参考过程

obj_key LIKE bapiache02-obj_key,                 "对象关键字

obj_sys LIKE bapiache02-obj_sys,                 "源凭证的逻辑系统

gs_dochead  LIKE bapiache08,                     "凭证抬头结构

gt_accountgl LIKE bapiacgl08 OCCURS 0 WITH HEADER LINE, "行项目表

gt_curramount LIKE bapiaccr08 OCCURS 0 WITH HEADER LINE,"货币金额

gt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,   "记账后值返回

gt_extension LIKE bapiextc OCCURS 0 WITH HEADER LINE,"客户退出参数

bapi_retn_info  LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: v_error_flag.

****会计凭证的抬头  对应BKPF表

gs_dochead-comp_code    = ‘1100‘.                 "凭证的公司代码, 必输

gs_dochead-doc_date     = sy-datum.               "凭证的凭证日期, 必输

gs_dochead-pstng_date   = sy-datum.               "凭证的记账日期, 必输

gs_dochead-fis_period   = sy-datum+4(2).          "凭证的会计期间, 必输

gs_dochead-doc_type     = ‘SA‘.                   "凭证的凭证类型, 必输

gs_dochead-username     = sy-uname.               "凭证的录入用户, 必输

gs_dochead-header_txt   = ‘Test using BAPI‘.      "凭证的抬头文本

gs_dochead-trans_date   = sy-datum.               "凭证的换算日期

gs_dochead-fisc_year    = sy-datum(4).            "凭证的会计年度

gs_dochead-reason_rev   = ‘03‘.                   "凭证的冲销原因

gs_dochead-ref_doc_no   = ‘‘.                     "凭证的参考凭证编号

**** 会计凭证的行项目   对应BSEG表

gt_accountgl-itemno_acc = 1.                      "凭证行项目编号, 必输

gt_accountgl-gl_account = ‘0010010113‘.           "总账科目, 必输

gt_accountgl-comp_code  = ‘1100‘.                 "公司代码, 必输

gt_accountgl-costcenter = ‘‘.                     "成本中心

gt_accountgl-bus_area   = ‘1103‘.                 "业务范围

gt_accountgl-customer   = ‘A10003‘.               "客户编号

gt_accountgl-vendor_no  = ‘20025‘.                "供应商编号

gt_accountgl-alloc_nmbr = ‘分配1‘.                "分配

gt_accountgl-item_text = ‘行项目文本1‘.           "行项目文本

APPEND gt_accountgl.

gt_accountgl-itemno_acc = 2.

gt_accountgl-gl_account = ‘0055020129‘.

gt_accountgl-comp_code = ‘1100‘.

gt_accountgl-costcenter = ‘00 11010107‘.

gt_accountgl-bus_area   = ‘1103‘.

gt_accountgl-customer   = ‘A10003‘.

gt_accountgl-vendor_no  = ‘20025‘.

gt_accountgl-alloc_nmbr = ‘分配2‘.

gt_accountgl-item_text = ‘行项目文本2‘.

APPEND gt_accountgl.

***** 行项目的货币/金额

gt_curramount-itemno_acc = 1.                      "行项目编号, 必输

gt_curramount-currency = ‘CNY‘.                    "行项目凭证货币, 必输

gt_curramount-amt_doccur = ‘100.00‘.               "行项目金额, 必输

gt_curramount-exch_rate  = 0.                      "行项目汇率

APPEND gt_curramount.

gt_curramount-itemno_acc = ‘2‘.

gt_curramount-currency = ‘CNY‘.

gt_curramount-amt_doccur = ‘-100.00‘.

gt_curramount-exch_rate  = 0.

APPEND gt_curramount.

**** 调用功能函数: 总账凭证的过账

CALL FUNCTION ‘BAPI_ACC_GL_POSTING_POST‘

EXPORTING

documentheader  = gs_dochead         "凭证抬头

*     importing

*          obj_type = obj_type

*          obj_key  = obj_key

*          obj_sys  = obj_sys

TABLES

accountgl  = gt_accountgl             "凭证行项目

currencyamount = gt_curramount        "凭证货币和金额

return     = gt_return                "值返回

extension1 = gt_extension             "例外出口

EXCEPTIONS

OTHERS         = 1.

IF sy-subrc <> 0.    "[[[

MESSAGE ‘Problem occured‘ TYPE ‘I‘.

ELSE.                "|||

LOOP AT gt_return.

CLEAR bapi_retn_info.

MOVE-CORRESPONDING gt_return TO bapi_retn_info.

IF gt_return-type = ‘A‘ OR gt_return-type = ‘E‘.

v_error_flag = ‘X‘.

ENDIF.

APPEND bapi_retn_info.

ENDLOOP.

IF v_error_flag = ‘X‘.

MESSAGE  ‘Problem occured ‘  TYPE ‘I‘.

ROLLBACK WORK.

ELSE.

COMMIT WORK.

MESSAGE ‘DOCUMENT IS CREATED!‘ TYPE ‘I‘.

ENDIF.

ENDIF.               "]]]

时间: 2024-11-06 09:53:57

[转载]生成总账会计凭证的源程序的相关文章

生成预付款会计凭证

FUNCTION zrfc_mm014. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(CALLNO) TYPE ZCALLNO *" TABLES *" ZMMS002 STRUCTURE ZMMS002 *"----------------

C/C++程序编译步骤以及如何生成可执行文件

一.开篇 许久不碰关于这方面的知识了,前几天同学开课提及到该部分,正好作为回顾吧. C/C++语言很多人都比较熟悉,这基本上是每位大学生必学的一门编程语言,通常还都是作为程序设计入门语言学的,并且课程大多安排在大一(反正我是混过来的).刚上大学,学生们还都很乖,学习也比较认真.用心.所以,C/C++语言掌握地也都不错(说的是你么),不用说编译程序,就是写个上几百行的程序都不在话下,但是他们真的知道C/C++程序编译的步骤么? 很多人都不是很清楚吧,如果接下来学过"编译原理",也许能说个

C源程序怎么变成可执行文件

本文所有内容都是来自网上的转载,文末有转载链接. 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的基础.计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种语言,就是机器语言.想象一下老前辈们在打孔机面前数着一个一个孔的情景,嘘,小声点,你的惊吓可能使他们错过了一个孔,结果可能是导致一艘飞船飞离轨道阿. 为了减轻

C/C++程序编译运行过程分析(转载)

为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母.符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言.然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序.因为汇编指令和机器语言之间有着一一对应的关系,这可比英译汉或汉译英简单多

技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)

一. 自动过账原理 在MM模块的许多操作都能实现在FI模块自动过账,如PO收货.发票验证(LIV).工单发料.向生产车间发料等等.不用说,一定需要在IMG中进行配置才可以实现自动处理.但SAP实现的这种自动配置的机制是怎样的呢?其实也并不复杂,让我们先以一种最简单的情况来了解实现原理和实现流程,然后就可以轻松对各种情况作出配置. 如果我们使用SAP系统,初始化库存一定必不可少.大家都知道初始化库存使用移动类型(movement type) 561/562.我们先以561 / 562的配置方法为例

vc6.0里使用lib(静态库)的方法

vc6.0 中使用lib文件 使用库的方法如下: 1. 包含库的头文件(把库的头文件包含到项目中) 在应用程序工程中使用 #include "file path" file path可以为绝对路径,也可以为相对于工程所在目录的相对路径 如果头文件比较多,可以在project>settings>c/c++>preprocessor的Additional include directories中填入你的头文件所在目录 2. 导入lib库.导入的方法很多 方法1) 直接用p

智点财务软件适用行业及基本功能

当今社会财务软件在企业中起着不可或缺的作用:有助于带动财务管理乃至企业管理的规范化,从而提升企业的管理水平及效益:提高会计核算的工作效率,降低会计人员在账务处理方面的工作强度,改变"重核算轻管理"的局面,减少工作差错,便于账务查询等等.而智点财务软件作为整个财务软件中的不败者,更是在应用方面不断做出突破,下面就来简述一下智点财务软件的基本功能.       智点财务软件是在进行了大量的市场调研的基础上,针对中小企业的需求开发而成的.适用行业有:工业.商业.农业.旅游饮食业.交通运输业.

SAP MM/FI 自动过账实现 OBYC 接口执行

一. 自动过账原理 在MM模块的许多操作都能实现在FI模块自动过账,如PO收货.发票验证(LIV).工单发料.向生产车间发料等等.不用说,一定需要在IMG中进行配置才可以实现自动处理.但SAP实现的这种自动配置的机制是怎样的呢?其实也并不复杂,让我们先以一种最简单的情况来了解实现原理和实现流程,然后就可以轻松对各种情况作出配置. 如果我们使用SAP系统,初始化库存一定必不可少.大家都知道初始化库存使用移动类型(movement type) 561/562.我们先以561 / 562的配置方法为例

联机交易与批量交易

系统小事>>>联机交易与批量交易 =================== 什么是联机交易/批量交易?联机与批量并没有确切的定义,我个人的简单理解如下: 联机交易就意味着系统对外直接提供的交易,该类交易具有事务性——可回滚:实时性——交易有生命周期,并有超时机制等,调用方需实时等待被调方的反馈,成功或失败皆有反馈:并发性——同一类甚至同一个交易可同时被多个线程调用,相互间有锁处理机制. 批量处理则意味着该交易相关的参数.系统状态已经锁定,系统需要进行的是某一类操作,该类操作具有统一性——使