SAP创建会计凭证,用BAPI扩展字段方法:BAPI_ACC_DOCUMENT_POST

news2024/12/26 2:48:57

业务需求:和银行做一个接口,要通过银行流水产生会计凭证,会计凭证的事务码是F-02,查到了BAPI方法BAPI_ACC_DOCUMENT_POST。昨天测试发现,有一些参数在BAPI_ACC_DOCUMENT_POST的输入和表参数中根本没有,如记账码Posting Key、原因代码Reason Code,那怎么把这些字段的值传进去呢?在SDN查了一下相关问题的解决办法,发现遇到这个问题的朋友还挺多,总结了一下,解决办法大体如下:
    1se11创建结构,必须包含行项目号POSNR字段,和其他需要扩展的字段,如记账码Posting Key、原因代码Reason Code
    2
SE19实现BADI增强ACC_DOCUMENT,这个增强是用来将BAPI_ACC_DOCUMENT_POST参数表EXTENSION2传入系统表
    3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入

详细步骤如下:
1、创建结构,se11,很简单,不再赘述,如下图:

 

2SE19实现BADI增强ACC_DOCUMENT
通过ACC_DOCUMENT help文档知道,方法CHANGE用来完成字段的扩展,还有一个需要注意的是参考业务类型,这个一定要选对,不然执行BAPI的时候不会调用这个BADI,我用的是BKPFF,如下图:

 

激活这个BADI实现。

双击change方法创建,可以查看ACC_DOCUMENT 的实现例子CL_EXM_IM_ACC_DOCUMENTR/3 4.7版本,其他版本可能名称不一样),,将这个实例的change方法的代码直接copy过来,激活方法,代码如下

DATA: wa_extension   TYPE bapiparex,
        ext_value(960) TYPE c,
        wa_accit       TYPE accit,
        l_ref          TYPE REF TO data.
  FIELD-SYMBOLS: <L_STRUC> TYPE ANY,
                 <L_FIELD> TYPE ANY.
  SORT c_extension2 BY structure.
  LOOP AT c_extension2 INTO wa_extension.
    AT NEW structure.
      CREATE DATA l_ref TYPE (wa_extension-structure).
      ASSIGN l_ref->* TO .<L_STRUC>
    ENDAT.
    CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
                wa_extension-valuepart3 wa_extension-valuepart4
           INTO ext_value.
    MOVE ext_value TO .<L_STRUC>
    ASSIGN COMPONENT 'POSNR' OF STRUCTURE TO .<L_FIELD>
    READ TABLE c_accit WITH KEY posnr = <L_FIELD>
          INTO wa_accit.
    IF sy-subrc IS INITIAL.
      MOVE-CORRESPONDING <L_STRUC> TO wa_accit.
      MODIFY c_accit FROM wa_accit INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入
********************************************************************** 
*INTERNAL TABLE DECLARATION
**********************************************************************
*&—-G/L ACCOUNT ITEM
DATA: ACCOUNTGL TYPE STANDARD TABLE OF BAPIACGL09.
*&—CURRENCY ITEMS
DATA: CURRENCY_AMOUNT TYPE STANDARD TABLE OF BAPIACCR09.
*&—-RETURN PARAMETER
DATA: RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.
*&—-it_extension2 ITEMS
DATA: IT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX WITH HEADER LINE.
*&—WORKAREA FOR ZEXTEN
DATA: WA_ZEXTEN LIKE ZEXTEN. ”ZEXTEN就是刚才SE11创建的那个结构
********************************************************************** 
*赋值
**********************************************************************
*& EXTENSION2 扩展字段增强部分
  WA_ZEXTEN-POSNR = '0000000010'. "凭证行项目
  WA_ZEXTEN-RSTGR = '171'. "凭证行项目原因代码
  IT_EXTENSION2-STRUCTURE  = 'ZEXTEN'.
  IT_EXTENSION2-VALUEPART1 = WA_ZEXTEN.
  APPEND IT_EXTENSION2.
*其他参数表的字段赋值如下例
HEADER-HEADER_TXT = 'TEST HEADER'."凭证抬头文本
  HEADER-USERNAME = SY-UNAME.  "用户名
  HEADER-COMP_CODE = '1000'."公司代码
  HEADER-DOC_DATE = '20090618'."凭证中的凭证日期
  HEADER-PSTNG_DATE = '20090618'."凭证中的记帐日期
  HEADER-DOC_TYPE = 'S1'."凭证类型
*  HEADER-BUS_ACT = 'RFBU'."交易业务
  WA_ACCOUNTGL-ITEMNO_ACC = '0000000010'. "会计凭证行项目编号
  WA_ACCOUNTGL-GL_ACCOUNT = '1002010105'. "总分类帐帐目
*  WA_ACCOUNTGL-ITEM_TEXT = .
  WA_ACCOUNTGL-BUS_AREA = '8000'. "业务范围
  APPEND WA_ACCOUNTGL TO ACCOUNTGL.
  CLEAR WA_ACCOUNTGL.
  WA_ACCOUNTGL-ITEMNO_ACC = '0000000020'. "会计凭证行项目编号
  WA_ACCOUNTGL-GL_ACCOUNT = '1301040000'. "总分类帐帐目
  WA_ACCOUNTGL-BUS_AREA = '8000'. "业务范围
*WA_ACCOUNTGL-ITEM_TEXT = .
*wa_accountgl-ACCT_TYPE = 'R'.
  APPEND WA_ACCOUNTGL TO ACCOUNTGL.
  CLEAR WA_ACCOUNTGL.
  WA_CURRENCY_AMOUNT-ITEMNO_ACC = '0000000010'. "行项目编号
  WA_CURRENCY_AMOUNT-AMT_DOCCUR = '500'. "金额
  WA_CURRENCY_AMOUNT-CURRENCY = 'RMB'.
  APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.
  CLEAR WA_CURRENCY_AMOUNT.
  WA_CURRENCY_AMOUNT-ITEMNO_ACC = '0000000020'.
  WA_CURRENCY_AMOUNT-AMT_DOCCUR = '-500'.
  WA_CURRENCY_AMOUNT-CURRENCY = 'RMB'.
  APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.
  CLEAR WA_CURRENCY_AMOUNT.
  *执行BAPI
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
  DOCUMENTHEADER = HEADER
*CUSTOMERCPD =
*CONTRACTHEADER =
*IMPORTING
*OBJ_TYPE =
*OBJ_KEY =
*OBJ_SYS =
  TABLES
  ACCOUNTGL = ACCOUNTGL
*ACCOUNTRECEIVABLE =
*ACCOUNTPAYABLE =
*ACCOUNTTAX =
  CURRENCYAMOUNT = CURRENCY_AMOUNT
*CRITERIA =
*VALUEFIELD =
*EXTENSION1 =
  RETURN = RETURN
*PAYMENTCARD =
*CONTRACTITEM =
  EXTENSION2 = IT_EXTENSION2
*REALESTATE =
  .
  IF RETURN-TYPE NA 'EA'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

如果还需要扩展其他字段,在结构ZEXTEN加入,然后在调用BAPI前对相应字段赋值,就行了。

注释:使用动态赋值需要排除系统中已实现的非动态赋值的增强结构。。

解决方案:在动态创建数据引用时,查询结构在DD02L中是否存在,若存在就继续执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css实现步骤条中的横线

实现步骤中的横线&#xff0c;我们使用css中的after选择器&#xff0c;content写空&#xff0c;然后给这个范围设定一个绝对定位&#xff0c;相当于和它设置伪类选择的元素的位置&#xff0c;直接看代码&#xff1a; const commonStyle useMemo(() > ({fontSize: 30px}),[]…

【HCIA】14.WLAN基础与配置实现

WLAN的术语 基本服务集BSS 一个AP覆盖的范围在一个BSS相同的区域内&#xff0c;STA可以相互通信 基本服务集标识符BSSID 是无线网络的一个身份标识&#xff0c;用AP的MAC地址表示 服务集标识符SSID 无线网络的标识&#xff0c;用字符串表示 扩展服务集ESS 由多个使用相同的…

遥感数字图像处理实验教程(韦玉春)--部分实验问题回答

个人的学习思考&#xff0c;仅供参考。 目录 实验三、图像合成和显示增强 一、目的 二、要求 三、实验 实验五、图像变换 一、目的 二、要求 三、实验 实验六、图像滤波 一、目的 二、要求 三、实验 实验七、图像分割 一、目的 二、要求 三、实验 实验八、图…

【JavaScript】花点时间了解执行上下文

引言 当我们在浏览器中运行JavaScript代码时&#xff0c;浏览器会先创建一个全局执行上下文&#xff08;Global Execution Context&#xff09;&#xff0c;然后逐行解析和执行代码。 执行上下文是JavaScript中非常重要的概念&#xff0c;它决定了代码的执行顺序和作用域链等…

vue elemenet

日常开发当中&#xff0c;只使用vue是不够的&#xff0c;虽然提供给我们强大的功能&#xff0c;用的还是原生的html标签。 这可能就需要我们去关注前台美化展示的工作。 日常开发当中都是vue去配合前端的组件库&#xff0c;两个结合起来一起去开发。 知识点 Element Plus 介绍…

Qt应用开发(基础篇)——Button按钮

目录 一、前言 二&#xff1a;QAbstractButton 抽象按钮基类 三&#xff1a;QPushButton 普通按钮 四&#xff1a;QCommandLinkButton 链接按钮 五&#xff1a;QCheckBox 复选按钮 六&#xff1a;QRadioButton 单选按钮 七&#xff1a;QToolButton 工具按钮 一、前言 常…

一劳永逸的日报月报制作方法,还不快来get

许多政府机构、企业都会使用日报、月报来把握现有状况&#xff0c;比如说生产制造企业&#xff0c;需要通过日报来监控项目进度和生产数据。哪怕这些报表制作起来繁琐浪费、重复复杂&#xff0c;但是企业不得不通过日报对生产数据进行实时把控。 那么有没有一种办法或者工具&a…

Linux为何是软件开发专业人员的心头爱-Robotics Ubuntu

Linux与Windows都是十分常见的电脑操作系统&#xff0c;相信你对它们二者都有所了解&#xff01;在你的使用过程中&#xff0c;是否有什么事让你觉得在Linux上顺理成章&#xff0c;换到Windows上就令你费解&#xff1f;亦或者关于这二者你有任何想要分享的&#xff0c;都可以在…

幸福长寿的秘诀 —— 查理芒格

查理芒格&#xff1a;幸福长寿的秘诀其实很简单。_哔哩哔哩_bilibili People trying to figure out what the secret to life, is to a long and happy life ? Its simple. You dont have a lot of envy. You dont have a lot of resentment. You dont overspend your incom…

wms-3代货架标签系统(四个灯供电版本)接口文档

一、查询标签信息接口 接口类型&#xff1a;POST, 参数格式&#xff1a;json array 链接形式&#xff1a; http://localhost/wms/associate/getTagsMsg 代码形式&#xff1a; { url : http://localhost/wms/associate/getTagsMsg, requestMethed : GET, requestParamete…

Django模板语法和请求

1、在django关于模板文件加载顺序 创建的django项目下会有一个seeetings.py的文件 如果在seeetings.py 中加了 os.path.join(BASE_DIR,‘templates’)&#xff0c;如果是pycharm创建的django项目会加上&#xff0c;就会默认先去根目录找templates目录下的html文件&#xff0c…

CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用

气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响&#xff0c;是当前全球关注的核心议题之一。IPCC&#xff08;Intergovernmental Panel on Climate Change&#xff0c;政府间气候变化专门委员会&#xff09;的第六次评估报告明确&#xff1b;指出&#x…

建议收藏:模拟版图面试题,含解析(附下载)

IC行业是一个充满竞争和机遇的领域&#xff0c;而作为一名模拟版图工程师&#xff0c;在面试中表现出色至关重要。 之前为大家全面解析过模拟版图&#xff0c;但面对面对即将找工作或者是面对今年秋招的的同学&#xff0c;可能对于模拟版图面试这块更感兴趣。 秋今天芯博士为…

Python数据可视化工具——Matplotlib

目录 1 基础准备1.1简介1.2安装1.3 绘图基础知识1.4 查询matplotlib系统中文字体 2 绘图流程2.1 简单绘图2.2 标准绘图2.3 绘制子图2.3.1 add_subplot方法两行一列子图 plt1.add_subplot(2,1,*)一行两列子图 plt1.add_subplot(1,2,*) 2.3.2 plt.subplot()方法 2.4 添加文字说明…

【必看,干货满满】K8S云原生技术小结

Docker容器技术总结&#xff1a; 1、Docker容器部署及常用命令详解 2、Dockerfile使用及案例详解 3、Docker容器数据卷详解 4、Docker网络详解 5、Docker资源配额详解 6、Docker私有仓库Harbor搭建及使用 7、Docker图形化管理工具Protainer搭建 8、Docker配置阿里镜像加速源&am…

最新版本docker 设置国内镜像源 加速办法

解决问题:加速 docker 设置国内镜像源 目录: 国内加速地址 修改方法 国内加速地址 1.Docker中国区官方镜像 https://registry.docker-cn.com 2.网易 http://hub-mirror.c.163.com 3.ustc https://docker.mirrors.ustc.edu.cn 4.中国科技大学 https://docker.mirrors…

【《React Hooks实战》——指导你使用hook开发性能优秀可复用性高的React组件】

使用React Hooks后&#xff0c;你很快就会发现&#xff0c;代码变得更具有组织性且更易于维护。React Hooks是旨在为用户提供跨组件的重用功能和共享功能的JavaScript函数。利用React Hooks&#xff0c; 可以将组件分成多个函数、管理状态和副作用&#xff0c;并且不必声明类即…

生信学院|07月27日《非线性仿真的领头羊之ABAQUS介绍》

课程主题&#xff1a;非线性仿真的领头羊之ABAQUS介绍 课程时间&#xff1a;2023年07月27日 14:00-14:30 主讲人&#xff1a;张明学 生信科技 CAE专家 ABAQUS功能ABAQUS应用Q&A 请安装腾讯会议客户端或APP&#xff0c;微信扫描海报中的二维码报名哦~~~ 或者点击链接报…

用js把地区字符串格式化为省、市、区

用js把地区信息格式化为省、市、详细信息&#xff0c;结果如下 代码如下 formatter("广东省深圳市南山区深南大道10000号") formatter("西藏自治区拉萨市城关区北京中路35号") formatter("四川省阿坝藏族羌族自治州九寨沟县漳扎镇301省道") for…

cass--单选不累加设置

打开软件&#xff0c;在空白处右击--选项--选择&#xff0c;如下&#xff1a; 完成后&#xff0c;点击确定按钮即可。