BAPI_ACC_DOCUMENT_POST是SAP ERP提供生成会计凭证的标准BAPI,这个BAPI可以用到多种场景生成会计凭证,实际项目中一般情况下更多的是生成应收和应付的会计凭证,分别对应客户和供应商,本例使用该BAPI生成资产价值,对应前台事务为F-90.

使用F-90,前台做凭证一般是一行是供应商(应付),一行是资产(总帐),因此使用BAPI_ACC_DOCUMENT_POST创建资产价值的时候应该按照这样填充值,需要注意以下参数赋值,对于资产行,由于资产主数据上有科目定位码这个字段,对应是在事务代码AO90中配置了科目,对于资产价值需要使用购置和生产成本这个科目,所以在BAPI中也要使用这个科目;科目类型要给A(如果不给A,BAPI的返回消息中会提示科目1601050000不能直接记帐);业务范围本例给的0001,这个取决于资产主数据是否填写,如果填写F-90做凭证的时候可以直接带过来,BAPI中则可以赋值,没填写就可以不使用;次级资产编号标准定义的是CHAR4,在使用BAPI时一定要给足四位,否则会报错(报资产XX不属于公司代码XX)。根据公司代码,帐目表,科目定位码可以在AO90中找到对应的关于资产的科目配置,如下图所示,1601050000在FS00中是资产类型的统驭科目,





另外对于资产来说还需要业务类型字段(对应F-90中的字段是事务类型),由于BAPI中的ACCOUNTGL中没有该字段,因此需要手动扩充,建立在EXTENSION2中,并结合BADI使用,建立的扩充结构如下,字段名字参照BSEG。





生成的凭证:



参考样例代码,供读者参考,

REPORT zssh_test_create_asset_value.

*通过BAPI创建资产价值 对应事务为F-90

DATA:ls_doc_header TYPE bapiache09,

lt_accountgl TYPE TABLE OF bapiacgl09,

ls_accountgl TYPE bapiacgl09,

lt_accountpayable TYPE TABLE OF bapiacap09,

ls_accountpayable TYPE bapiacap09,

lt_currencyamount TYPE TABLE OF bapiaccr09,

ls_currencyamount TYPE bapiaccr09,

lt_extension2 TYPE TABLE OF bapiparex,

ls_extension2 TYPE bapiparex,

lt_return TYPE TABLE OF bapiret2,

ls_return TYPE bapiret2,

ls_asset_value TYPE zssh_test_asset_value_str.

ls_doc_header-comp_code = 'ZSSH'.

ls_doc_header-fisc_year = 2020.

ls_doc_header-fis_period = 11.

ls_doc_header-doc_type = 'KR'.

ls_doc_header-pstng_date = '20201116'.

ls_doc_header-doc_date = '20201116'. " 凭证中的凭证日期

ls_doc_header-header_txt = 'BAPI_ACC_DOCUMENT_POST创建资产价值'. " 凭证抬头文本

ls_doc_header-username = sy-uname. " 用户名

ls_doc_header-ref_doc_no = 'BAPI_ACC_DOCUMENT_POST'.

*应付科目行

ls_accountpayable-itemno_acc = 1. "会计凭证行项目 1

ls_accountpayable-comp_code = 'ZSSH'. "公司代码

ls_accountpayable-profit_ctr = 'LZSSH00001'. "利润中心

ls_accountpayable-item_text = 'BAPI_ACC_DOCUMENT_POST创建资产价值'. "行项目文本

ls_accountpayable-gl_account = '2202010000'. "总账科目

ls_accountpayable-vendor_no = '0401000015'. "客户代码

ls_accountpayable-pmnttrms = 'ZZ99'.

ls_accountpayable-bline_date = '20201116'. "付款基准日期

APPEND ls_accountpayable TO lt_accountpayable.

ls_currencyamount-itemno_acc = 1. "会计凭证行项目编号

ls_currencyamount-amt_doccur = 120 * '-1'.

ls_currencyamount-curr_type = '00'.

ls_currencyamount-currency = 'RMB' .

APPEND ls_currencyamount TO lt_currencyamount.

*资产科目行

ls_accountgl-itemno_acc = 2. " 会计凭证行项目 2

ls_accountgl-comp_code = 'ZSSH'. " 公司代码

ls_accountgl-item_text = 'BAPI_ACC_DOCUMENT_POST创建资产价值'. " 行项目文本

ls_accountgl-gl_account = '1601050000'. " 总分类帐帐目

ls_accountgl-asset_no = '180207000015'.

ls_accountgl-sub_number = '0000'.

*ls_accountgl-cs_trans_t = '100'."事务类型

*ls_accountgl-acct_key = '100'.

ls_accountgl-acct_type = 'A'. "资产

ls_accountgl-bus_area = '0001'. "业务部门 业务类别

APPEND ls_accountgl TO lt_accountgl.

ls_currencyamount-itemno_acc = 2. "会计凭证行项目编号

ls_currencyamount-amt_doccur = 120.

ls_currencyamount-curr_type = '00'.

ls_currencyamount-currency = 'RMB' .

APPEND ls_currencyamount TO lt_currencyamount.

ls_asset_value-posnr = 2.

ls_asset_value-anbwa = '100'.

ls_extension2-structure = 'ZSSH_TEST_ASSET_VALUE_STR'.

ls_extension2+30(960) = ls_asset_value.

APPEND ls_extension2 TO lt_extension2.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

EXPORTING

documentheader = ls_doc_header

  • CUSTOMERCPD =
  • CONTRACTHEADER =
  • IMPORTING
  • OBJ_TYPE =
  • OBJ_KEY =
  • OBJ_SYS =

    TABLES

    accountgl = lt_accountgl
  • ACCOUNTRECEIVABLE =

    accountpayable = lt_accountpayable
  • ACCOUNTTAX =

    currencyamount = lt_currencyamount
  • CRITERIA =
  • VALUEFIELD =
  • EXTENSION1 =

    return = lt_return
  • PAYMENTCARD =
  • CONTRACTITEM =

    extension2 = lt_extension2
  • REALESTATE =
  • ACCOUNTWT =

    .

LOOP AT lt_return INTO ls_return WHERE type CA 'AE'.

WRITE:/ ls_return-id,ls_return-number,ls_return-message.

CLEAR ls_return.

ENDLOOP.

IF sy-subrc NE 0.

LOOP AT lt_return INTO ls_return WHERE type EQ 'S'.

WRITE:/ ls_return-id,ls_return-number,ls_return-message.

CLEAR ls_return.

ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

ENDIF.

BADI:ACC_DOCUMENT

METHOD if_ex_acc_document~change.

DATA:ls_asset_value TYPE zssh_test_asset_value_str,

ls_extension2 TYPE bapiparex,

ls_accit TYPE accit.

CHECK sy-uname EQ 'SHISH'.

LOOP AT c_extension2 INTO ls_extension2.

ls_asset_value = ls_extension2+30(960).

CLEAR ls_accit.
READ TABLE c_accit INTO ls_accit WITH KEY posnr = ls_asset_value-posnr.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING ls_asset_value TO ls_accit.
MODIFY c_accit FROM ls_accit INDEX sy-tabix. "lv_tabix.
ENDIF.

ENDLOOP.

ENDMETHOD.

关于BAPI_ACC_DOCUMENT_POST解读的更多相关文章

  1. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

  2. SDWebImage源码解读 之 NSData+ImageContentType

    第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...

  3. SDWebImage源码解读 之 UIImage+GIF

    第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...

  4. SDWebImage源码解读 之 SDWebImageCompat

    第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的 ...

  5. SDWebImage源码解读_之SDWebImageDecoder

    第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...

  6. SDWebImage源码解读之SDWebImageCache(上)

    第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...

  7. SDWebImage源码解读之SDWebImageCache(下)

    第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...

  8. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  9. AFNetworking 3.0 源码解读 总结(干货)(上)

    养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...

随机推荐

  1. FL studio系列教程(五):FL Studio20自带的效果器Fruity Delay3功能

    作为音乐编曲常用软件之一的FL Studio20,在国内外都有着很多真爱粉,当然,在国内我们一般都叫它水果音乐制作软件,或者直接叫"水果".它有丰富的内置插件于音源,想要用好这些插 ...

  2. win10安装jenkins忘记密码的解决方法

    jenkins安装完了一直没用,突然想学习的时候,忘记了登陆密码. 一:修改配置文件 1. 打开jenkins的安装目录,选择users下面的admin目录下的config.xml文件   我的文件路 ...

  3. 太干了!一张图整理了 Python 所有内置异常

    在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一 ...

  4. Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  5. 为什么不用UUID做主键?

    不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用. 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位 ...

  6. webgl智慧楼宇发光效果算法系列之高斯模糊

    webgl智慧楼宇发光效果算法系列之高斯模糊 如果使用过PS之类的图像处理软件,相信对于模糊滤镜不会陌生,图像处理软件提供了众多的模糊算法.高斯模糊是其中的一种. 在我们的智慧楼宇的项目中,要求对楼宇 ...

  7. 笔记本无法连接校园网,windows诊断显示校园网之未响应

    打开cmd(管理员): 输入以下四条,每一条都按enter ipconfig /flushdns ipconfig /registerdns ipconfig /release ipconfig / ...

  8. Beta冲刺随笔——Day_Three

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...

  9. 【PSMA】Progressive Sample Mining and Representation Learning for One-Shot Re-ID

    目录 主要挑战 主要的贡献和创新点 提出的方法 总体框架与算法 Vanilla pseudo label sampling (PLS) PLS with adversarial learning Tr ...

  10. 【GDOI2007】JZOJ2020年8月10日提高组T1 夏娜的菠萝包

    [GDOI2007]JZOJ2020年8月10日提高组T1 夏娜的菠萝包 题目 Description 夏娜很喜欢吃菠萝包,她的经纪人RC每半个月就要为她安排接下来的菠萝包计划.今天是7月份,RC又要 ...