码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【SAP Abap】SAP ODATA数据服务发布


    三种方法进行SAP ODATA数据服务发布(DDIC、RFC、CDS)

    • 1、通过DDIC发布ODATA服务
      • 1.1、SE11创建数据表
      • 1.2、配置ODATA服务(定义)
      • 1.3、发布ODATA服务(激活)
      • 1.4、测试ODATA服务
      • 1.5、总结
    • 2、通过RFC发布ODATA服务
      • 2.1、SE37创建函数
      • 2.2、配置ODATA服务(定义)
      • 2.3、服务激活测试(同上)
      • 2.4、总结
    • 3、通过CDS发布ODATA服务
      • 3.1、创建CDS View
      • 3.2、发布ODATA服务
      • 3.3、服务测试
      • 3.4、总结

    1、通过DDIC发布ODATA服务

    1.1、SE11创建数据表

    首先,要创建ODATA要发布的数据结构,可以是透明表,也可以是结构体。
    这里我以一个自建表 ZTIFLIST 为例,发布其中的几个字段。
    在这里插入图片描述

    1.2、配置ODATA服务(定义)

    (1)执行SEGW,新建 ODATA 项目
    在这里插入图片描述
    (2)创建 数据模型,选择导入 → DDIC结构
    在这里插入图片描述
    定义 Entity 名称,选择对应的 DDIC 表
    在这里插入图片描述
    勾选需要让外部访问的字段
    在这里插入图片描述
    勾选关键字
    在这里插入图片描述
    模型创建完成,如下图
    在这里插入图片描述
    (3)生成ODATA服务
    在这里插入图片描述
    生成如下 Runtime Artifacts 对象
    在这里插入图片描述
    说明:
    DPC:data provider class 数据CRUD类,提供增上改查方法
    MPC:modle provider class 数据提供类,提供查询方法

    (4)服务实施:创建方法
    在这里插入图片描述
    其中:
    GetEntity(Read)表示读取单条,需要配合关键字查询;
    GetEntitySet(Query)表示读取集合。

    选中对应要提供的方法,右键 → 重定义
    在这里插入图片描述
    编写数据查询代码,保存,激活,服务配置完成。
    在这里插入图片描述
    在这里插入图片描述

    1.3、发布ODATA服务(激活)

    (1)执行事务码:/n/IWFND/MAINT_SERVICE
    在这里插入图片描述
    在这里插入图片描述
    添加成功如下:
    在这里插入图片描述

    1.4、测试ODATA服务

    点击 SAP Gateway 客户端,进行服务测试 → 点击执行
    在这里插入图片描述
    获得响应,服务连接成功
    在这里插入图片描述
    修改URL参数,可以获取 json 数据集合
    在这里插入图片描述
    在返回结果中,有完整的ODATA服务访问地址,复制出来,可以在浏览器或第三方工具中访问,如Posman,需要输入SAP登录用户名和密码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    查询单条记录时报错,可以通过事务码 /n/IWFND/ERROR_LOG 查看报错日志
    在这里插入图片描述
    因为我们还未实施单条记录查询的方法。

    1.5、总结

    此种方法,适用于快速发布基于某个表的数据服务。

    2、通过RFC发布ODATA服务

    2.1、SE37创建函数

    基于上表 ZTIFLIST,创建一个RFC函数,来进行 ODATA服务发布演示。
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    2.2、配置ODATA服务(定义)

    配置过程基本同上,这里仅截取部分不同的界面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    创建完成后,生成运行对象。

    服务实施:重定义方法

      METHOD YZTIFLISTSET_GET_ENTITYSET.
    
      DATA: LT_LIST TYPE TABLE OF ZTIFLIST.
      DATA: LS_ENTITY LIKE LINE OF ET_ENTITYSET.
    
      TRY.
        CALL FUNCTION 'YFM_ODATA'
          TABLES
            T_LIST        = LT_LIST.
    
        MOVE-CORRESPONDING LT_LIST TO ET_ENTITYSET.
    
        CATCH /IWBEP/CX_MGW_BUSI_EXCEPTION.
        CATCH /IWBEP/CX_MGW_TECH_EXCEPTION.
      ENDTRY.
      ENDMETHOD.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.3、服务激活测试(同上)

    2.4、总结

    此种方法,适用于发布基于某个已封装逻辑的函数服务。

    3、通过CDS发布ODATA服务

    3.1、创建CDS View

    进入Eclipse ADT开发环境,新建CDS View
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    编写CDS,增加注解 @OData.publish: true
    在这里插入图片描述
    保存,激活CDS,忽略警告提示服务尚未激活
    在这里插入图片描述

    @AbapCatalog.sqlViewName: 'ZV_CDS_ODATA'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'CDS View 发布ODATA服务'
    @OData.publish: true        --此注解表示发布odata服务
    define view ZCDS_ODATA as select from ztiflist {
        key ifno,				--指定key
        key ifrow,
            ifname,
            project,
            iftype,
            devname
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.2、发布ODATA服务

    执行事务码:/n/IWFND/MAINT_SERVICE,添加服务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    添加成功,回到 Eclipse,刷新,查看提示,OData服务已创建。
    在这里插入图片描述

    3.3、服务测试

    增加 EntitySet(默认实体为ZCDS_ODATA)和URI Option(format=json),可以获得JSON 格式结果。
    在这里插入图片描述

    3.4、总结

    此种方法,可以直接基于CDS发布ODATA服务,省去了配置Sap Getway以及方法实现的步骤,更加快速便捷。

    原创文章,转载请注明来源-X档案

  • 相关阅读:
    在 Java 代码中来一段 JavaScript?聊聊 Flowable 中的脚本任务
    React报错之Functions are not valid as a React child
    C#学生信息管理系统,数据库sqlserver
    如何调节电脑屏幕亮度?让你的眼睛更舒适!
    使用YOLOv5的backbone网络识别图像天气 - P9
    北斗导航 | 初尝PPP-RTK禁果
    孙卫琴的《精通Vue.js》读书笔记-在Vue项目中使用Axios
    在线小说阅读系统
    浅谈基于物联网的医院消防安全管理
    CS5801 HDMI转4K 4lane_DP/eDP方案
  • 原文地址:https://blog.csdn.net/XLevon/article/details/127447658
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号