在实际开发中我们经常会遇到需要保存多层实体结构到后台系统的场景,比如SAP各种凭证都是抬头和行项目一起保存,我今天就介绍一下创建深度插入OData实体的详细步骤。

今天的例子是创建客户发票凭证,需要同时保存凭证抬头和行项目,SAP提供的标准BAPI 需要同时输入凭证的行项目和抬头信息。

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
        EXPORTING
          documentheader    = documentheader
        IMPORTING
          obj_key           = obj_key
        TABLES
          accountgl         = accountgl
          accountreceivable = accountreceivable
          accounttax        = accounttax
          currencyamount    = currencyamount
          return            = return.
而我们的OData的设计是这样的:

所以我们就需要使用SAP OData Service提供的Deep Insert方法,下面是相关的详细步骤。

1.创建DocumentHeader和DocumentItem的关联

在事务码SEGW中创建关联,如下图:

点击创建运行时对象。

这时候系统自动创建了凭证抬头和行项目之间的关联,我们为了验证系统正确的生成了关联,我们在事务码:/IWFND/GW_CLIENT中进行验证,如下图我们在OData Service的URL中加入$metadata,比如:/sap/opu/odata/BAO/FI_INVCUS_SRV/$metadata

2.重新定义方法/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY

首先我们需要定义deep entity的Type, 代码如下:

DATA : BEGIN OF ls_invoice_data.
        INCLUDE  TYPE /bao/cl_fi_invcus_mpc_ext=>ts_documentheader.
       DATA: documentitemset TYPE /bao/cl_fi_invcus_mpc_ext=>tt_documentitem,
         END OF ls_invoice_data.

然后我们通过以下语句来读取前台传来的entity信息:

io_data_provider->read_entry_data( IMPORTING es_data = ls_invoice_data ).

这里需要注意在定义deep entity的时候, documentitemset的命名一定要是 line item的entityset的名字,否不能生成正确的deep entity。

 3. 关于 Create Deep entity的测试

我们当然可以使用前台的UI5代码进行测试,但是在集成测试之前使用 SAP Gateway Client进行测试。首先我们通过get expand获得deep entity的信息,然后点击 Use as Request。

更多精彩,请关注公众号:环宇的后花园

转载于:https://www.cnblogs.com/alexsap/p/10668639.html

实战 Deep Insert (SAP OData Service 实战系列)相关推荐

  1. SAP OData 开发实战教程:从入门到提高

    文章目录 SEGW - Gateway Service Builder 使用 Restful ABAP Programming 编程模型(简称 RAP) 开发 OData 服务 使用 SAP Clou ...

  2. SAP OData service的执行是如何从Gateway系统转交到backend系统

    下面是我今天研究的后台OData数据的model以及如何在IE里面consume: SPRO里面: 这个model provider class定义了LWM_CUSTOMER_BRIEFING这个mo ...

  3. 使用ABAP SAT工具分析SAP OData service实现明细

    Created by Wang, Jerry, last modified on Mar 26, 2015 使用SAT运行OData service测试report: 直接运行report: 确保OD ...

  4. 找出SAP OData service出错根源的小技巧

    SAP的Fiori应用是通过OData和后台交互的.在使用Fiori应用时您可能会遇到这样的错误消息: 这个错误消息没有包含有助于partner或者客户定位问题根源的线索. 下面是如何在后台找出问题根 ...

  5. SAP OData Service group - get entity set

    Created by Wang, Jerry on Jan 12, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  6. 使用jMeter对基于SAP ID service进行Authentication的Restful API进行并发测试

    这篇文章本来Jerry只在SAP社区上写了英文版的,可以通过点击文末的"阅读原文"获得.后来有两位做Marketing Cloud开发的德国同事,写邮件询问关于文章的更多细节,声称 ...

  7. 【CTR模型】TensorFlow2.0 的 DCN(Deep Cross Network) 实现与实战(附代码+数据)

    CTR 系列文章: 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码) CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解 CTR深度学习模型之 ...

  8. Java RESTful Web Service实战(第2版)

    Java核心技术系列 Java RESTful Web Service实战 (第2版) 韩陆 著 图书在版编目(CIP)数据 Java RESTful Web Service实战 / 韩陆著. -2版 ...

  9. Java RESTful Web Service实战

    编者按: InfoQ开设栏目"品味书香",精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注.本文节选自韩陆著<Java RESTful Web Servi ...

最新文章

  1. MF0 AI+IoT K210 人脸识别模块 应用笔记-(1)
  2. python3 文件 复制、重命名、移动、删除
  3. 注重网站用户体验优化就要避开前方弯道
  4. SVD在推荐系统中的应用详解以及算法推导
  5. 深入解读EOS源代码之——区块链内核
  6. .NET Core 3.0 即将结束生命周期,建议迁移 3.1
  7. 第三十六期:如果把线程当作一个人来对待,所有问题都瞬间明白了
  8. iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”(转)
  9. spark 把一列数据合并_Spark DataFrame列的合并与拆分
  10. 剑指offer 面试题64. 求1+2+…+n
  11. 92. php 命名空间(2)
  12. redis的hscan替换hgetall的疑问,redis返回列表获取数据示例
  13. 现场抽奖小程序_抽奖小程序助手转盘活动微信抽奖系统
  14. 鸟哥Linux学习笔记(从头学习Linux基础)
  15. NXP Zigbee 3.0标准网关开发复盘(JN5169)
  16. 直观理解 梯度(gradient)
  17. css vw vh ie9,css3中calc、vw、vh、vmin、vmax 属性的应用及兼容性详解
  18. 在wine里面播放视频和音乐之WMP
  19. 人与人之间的交往艺术
  20. 各类文件头及其十六进制标识

热门文章

  1. python【蓝桥杯vip练习题库】ADV-236林丹大战李宗伟
  2. 查看自己的Android studio 版本
  3. java并发 设计模式,Java并发——设计模式
  4. 如何一键部署php应用,我们怎样来使用宝塔面板一键部署安装博客程序ZBlogPHP
  5. mysql和mybatis优化_MySQL + mybatis的SQL优化方案
  6. (1)搞一搞 seata 之 基础环境搭建
  7. 如何网络推广浅析网站优化的过程中首页降权了该怎么办?
  8. 网络营销重点之如何了解用户需求完善网络营销策略
  9. 企业网络推广—企业网络推广专员一定要避免这些不靠谱的优化方式
  10. 友情链接优化的技巧分享