从头开始创建一个OData SAP Gateway Service

news2024/9/27 19:22:25

可能用到的事务代码:

/IWFND/IWF_ACTIVATE – Activate / Deactivate SAP Gateway

SEGW – SAP Gateway Service Builder

/IWFND/MAINT_SERVICE – Activate and Maintain Services

/IWFND/EXPLORER – Service Explorer

/IWFND/GW_CLIENT – SAP Gateway Client

/IWFND/STATS – SAP Gateway Statistics

/IWFND/TRACES – SAP Gateway Traces

/IWFND/VIEW_LOG – SAP Gateway Application Log Viewer

/IWFND/V4_ADMIN – SAP Gateway Service Administration

/IWFND/CACHE – Gateway Cache Management

/IWFND/CACHE_CLEANUP – Cleanup of GW Model Cache

/IWFND/CACHE_REBUILD – Rebuild Gateway Model Cache

SPRO中关于SAP Gateway的配置:

SAP Gateway的系统组件为SAP_GWFND:

创建SAP Odata服务的基本步骤大致为:

1.激活SAP Gateway服务(/IWFND/IWF_ACTIVATE – Activate / Deactivate SAP Gateway)

2.创建服务(SEGW – SAP Gateway Service Builder)

3.激活服务(/IWFND/MAINT_SERVICE – Activate and Maintain Services)

4.查看服务(/IWFND/EXPLORER – Service Explorer)

5.测试服务(/IWFND/GW_CLIENT – SAP Gateway Client)

6.查看日志(/IWFND/VIEW_LOG – SAP Gateway Application Log Viewer)

#激活SAP Gateway服务(/IWFND/IWF_ACTIVATE – Activate / Deactivate SAP Gateway)

Before you can use the SAP Gateway functionality, you have to activate it globally in your system.

If SAP Gateway is not activated, OData services cannot run, consumer servers cannot communicate with it, and an error message is sent to any system that calls the services.

SAP Gateway Foundation offers development and generation tools to create OData services to a variety of client development tools. Put simply, it establishes a connection between application or SAP Business Suite data and target clients, platforms, and programming framework.

可以简单将SAP Gateway Foundation (SAP_GWFND)理解为SAP ABAP服务器和外部系统进行数据交互的一个组件,一个类似WEB容器的平台。

关于SAP Gateway的更多信息可以在https://help.sap.com/viewer/product/SAP_NETWEAVER_750/7.5.9/en-US页面搜索关键字Gateway进去看,是一个成体系的知识。

#创建服务(SEGW – SAP Gateway Service Builder)

这一步就是基于SAP Gateway这个底层创建我们的数据服务(REST),例如销售订单服务、采购订单服务、员工信息服务、物料主数据服务、考勤时间服务、工单服务等,类似于创建webservice或者rfc函数。

只不过通过SEGW创建的是基于ODATA协议的数据服务,ODATA相比WS,更加现代、时尚和可操控,UI5与SAP后端系统进行数据交互所调用的数据服务大多也是基于ODATA协议的服务。

The OData service uses ABAP to retrieve SAP data and returns it via the OData service.

本例我们创建一个飞机航班查询的服务。

涉及到项目、数据模型、实体类型、实体集合、服务实施几个主要的概念。

项目,理解为一个文件夹,和SE80开发ABAP程序用到的“包”差不多一个概念,就是将ODATA服务进行分门别类管理的一个文件夹。

服务,就是对外提供odata数据接口的一个URI。

数据模型,SAP的表、RFC函数、BRF等都可以作为数据模型,通过数据模型这个工具可以将这些底层的东西通过简单的裁剪、配置、转换成服务需要的数据格式。例如,SAP的销售订单有多张表,但外部服务可能只需要某张表中的某几个字段,而且外部需要的字段名也和SAP DDIC不同,就可以通过数据模型进行转换。

实体类型,数据模型下的一个概念,一张表、一个RFC函数等都可以作为实体,一个实体就是一个实际提供数据的载体,有数据结构、字段。

实体集合,对实体类型进行了进一步包装,ODATA服务的CURD都是基于实体集合的。实体集合和实体类型是多对多的关系,例如我们可以创建好一个通用的销售订单实体,但对于不同的接口我们可以基于这个实体创建不同的实体集合,针对不同的实体集合有不同的权限管理、CURD逻辑。

服务实施,实体集合的CURD操作,暴露给外部的接口。

我们先创建一个项目,例如ZBC01,由于只是练习,因此使用$tmp包即可。

这样我们就有一个完整的ODATA项目目录结构了,接下来在这个标准结构中创建模型、写操作逻辑即可。

本例中我们将使用DDIC中的SCARR表作为数据源来创建一个数据模型,操作如下:

给实体取一个便于识别的明细,输入要作为实体数据源的表名,Next。

选择需要的字段,Next。

选择要作为主键的字段(建议一定要做),将对外暴露的字段名改成自己需要的(此处我只是将首字段全部改成小写,因为Linux服务器是区分大小写的,为了和其他系统交互更顺畅,我把他都改成小写了)。Finish。

这样基于这个数据源的数据模型就创建好了,自动创建了实体、实体集合以及实体集合对应的方法名(只是先生成了方法名,具体的数据处理逻辑后面要自己进去写)。

如果此时我们觉得这个实体有些地方还需要调整下,例如需要增加、减少、修改字段映射的,操作如下:

系统已经自动创建了一个这个实体对应的实体集合和实体集合对应的操作方法,如果你还需要基于这个实体创建其他的实体集合,新增即可。

例如我新增一个实体集合zairSet,系统会自动产生其对应的CURD方法。

可以看到,实体集合的方法是不能自己添加的,只能使用系统自动产生的这些个。那么对于同一个数据实体,不同的业务逻辑可能就需要创建不同的实体集合。

接下来激活运行时相关的一些信息,系统应该是在后台创建了一些程序、生成了一些DDIC相关的数据。

跟着向导走即可,可见系统将会创建一堆的类、注册两个服务,同时还会产生服务的版本号。这个动作和其他语言里用反射工具一键生成数据库表对应的操作代码是类似的。

#激活服务(/IWFND/MAINT_SERVICE – Activate and Maintain Services)

在SEGW中创建完服务之后,这个服务还没有部署到Gateway(类似于Nginx这样的容器)中,这一步的动作就是把开发好的服务注册(部署,发版……)到能被外部访问到的Gateway中。

进入这个事务代码之后可以看到已经有一个服务清单,只有这个服务清单里的服务才能被外部访问到,我们把上面开发好的Gateway Service注册到这里。

系统别名选择LOCAL或者自己配置的别名,服务名称可以输入星号进行匹配,或者输入上面生成的完整服务名,然后敲回车系统就会查出满足条件但还未注册的服务。

选中服务,添加即可。

此时返回到事务代码/IWFND/MAINT_SERVICE,就能看到我们刚刚注册的服务了,点击服务在下面的两个框中会显示这个服务的一些基本信息。

然后我们可以用浏览器或者SAP客户端测试这个服务。

测试结果反馈200,证明响应正常。

也可以用测试结果xml中的link,用浏览器进行访问,需要输入账号密码,效果是一样的。SAP客户端里的这个测试工具其实更高级,和Postman比较像,可以写header参数。

我们可以更改测试URL的后缀,传不同的参数,这样就能返回不同的结果。

例如,改成$metadata?sap-ds-debug=true就能返回这个实体集的基本属性、方法和其他运行时信息。

把后缀改成/zairSet?sap-ds-debug=true,执行GET方法就会调用SEGW里生成的GET方法获取数据,由于此时我们还没有编写获取数据的实际逻辑,只是产生了一个空方法名,执行这个动作会报错(http的返回码是501),解释得非常清楚。

请求:

响应:

那么我们就去SEGW写一下zairSet这个实体集合的GET方法的具体取数逻辑吧。

系统提示说这个方法还没实施,那我们就去实施。

向导自动打开了SE80,如果左侧的树状清单没打开自己打开一下。然后展开方法,找到要写逻辑的方法,右击选择Redefine即可进入方法写逻辑。

简单取几条数据测试下。

然后激活方法,可见有三个DDIC对象需要激活。

此时再测试这个服务就可以看到数据了。

点击右侧的Data Explorer可以以清单的形式看到每一条返回的数据,非常好用。

事务代码/IWFND/VIEW_LOG – SAP Gateway Application Log Viewer可以查看对应的LOG和报错信息。

这个例子参考下面的例子进行练习:

https://www.trailsap.com/dev/sap-webapps/?topic=segw-odata-gateway-service

这个实验只练习了GET方法,其他几个方法还需要进一步熟悉。

下一个实验将练习一下使用openui5访问这个服务,把前端和后端的操作都串一下。

https://openui5.org/

总结一下:

1.创建Gateway Service(SEGW – SAP Gateway Service Builder)

2.注册Gateway Service(/IWFND/MAINT_SERVICE – Activate and Maintain Services)

3.测试Gateway Service(/IWFND/GW_CLIENT – SAP Gateway Client)

隔天总结:

一个项目由数据模型(MDL,MPC),服务(SRV)和运行时(DPC)构成。

数据模型包括实体类型、关系和实体集合,数据模型下可包括多个实体类型,实体类型和实体集合可以是多对多的关系。

服务是基于数据集合的,每个数据集合有独立的CURD方法,SEGW生成运行时对象时自动创建(rebuild)服务CURD对应的类,具体的方法逻辑需自行去写(redefine)。

未redefine的方法在Inherited Methods 文件夹下,已经dedefine了的方法在Redefinitions下,redefine方法会需要激活三个DDIC对象。

服务生成之后需要注册到SAP Gateway中才能进行测试和外部访问,一个项目就是一个服务,只需要注册一次即可,后续有新的数据集合加入后只需要redefine对应的方法就能访问到。

服务管理工具(/IWFND/MAINT_SERVICE)是个非常强大的工具,可以添加、删除、测试、监控、统计服务。

通过服务管理工具(/IWFND/MAINT_SERVICE)可以跳转服务测试客户端(/IWFND/GW_CLIENT),这个客户端内置和多个非常方便的按钮,可以方便地切换实体集、添加请求后缀、导出测试结果,对于Odata的开发和测试比用Postman和浏览器要方便和强大太多。

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

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

相关文章

Android | 输入系统(IMS)

前言 一般情况下很多同学对于点击事件的认识都只存在于从 Activity 开始的,然后从 Window 中进行分发,甚至有些人可能也只知道 onTouchEvent 和 dispatchTouchEvetn 这几个方法,对于 View 层的了解都不属性。 自从对于应用层面的分发过程了…

logging日志模块详解

说到日志,无论是写框架代码还是业务代码都离不开日志的记录,其能给我们定位问题带来极大的帮助。 记录日志最简单的方式是在你想要记录的地方加上一句print。我相信无论是新手还是老鸟都经常这么干,在简单的代码或者小型项目中这么干一点问题…

这样吃才能有效补脑

核桃长得像大脑,还含有Ω-3,一直被认为补脑效果很好。但是现代科学研究发现,Ω-3并不是核桃专有的,很多坚果都有,所以核桃在补脑这方面并没有什么特殊功效。补脑其实就是维持大脑的正常工作,还要延缓大脑认…

SAP ADM100-Unit4 数据库工作原理:监控数据库

概览 除了执行数据备份之外,还需要对数据库进行大量的周期性检查。 课程目标 对数据库计划额外的周期性检查。 1、数据库定期监控 除了日常监控数据库备份外,还有大量的其他检查不得不定期执行。有的检查可以通过DBA Cockpit Planning Calendar来计划。 例如: 当存取数…

Mac电脑使用:查看本机已连接Wi-Fi密码的方法

前言 在使用Mac电脑的时候,电脑自身所连接成功的Wi-Fi一般都不显示密码,这是苹果出于安全考量的保护措施,但是有时候遇到新的设备想要连接已经连过的Wi-Fi,由于时间太久忘记Wi-Fi密码,这就需要查看一下电脑连接的Wi-Fi…

点击化学标记1817735-33-3,Pyrene-PEG5-propargyl,芘甲酰胺五聚乙二醇丙炔

Pyrene-PEG5-propargyl,芘甲酰胺-五聚乙二醇-丙炔Product structure:Pyrene-PEG5-propargyl结构式Product specifications:1.CAS No:1817735-33-32.Molecular formula:C30H33NO63.Molecular weight:503.64.…

终于有多位大神联手把计算机基础知识与操作系统讲清楚了

操作系统的定义 指的是控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。 计算机系统的层级结构 1、用户 应用程序 2、操…

vue前端框架课程笔记(三)

目录条件渲染v-ifv-show列表渲染关于:key列表过滤watch属性实现computed属性列表排序表单数据收集input是否配置value属性过滤器本博客参考尚硅谷官方课程,详细请参考 【尚硅谷bilibili官方】 本博客以vue2作为学习目标(请勿混淆v2与v3的代码规范&…

Azure 语音用人工智能改变游戏开发的三种方式

通过 Azure 认知服务的智能语音功能[1],用户可以使用语音 SDK 开发工具包快速构建支持语音交互的各种应用。将语音转录为准确的文本 (STT,或语音识别)或者将文本转换成生动的语音 (TTS,或语言合成&#xff…

大数据NiFi(十五):NiFi入门案例二

文章目录 NiFi入门案例二 一、配置“GenerateFlowFile”处理器 1、拖拽“Processor”在弹框中输入“GenerateFlowFile” <

如何解决缓存雪崩、击穿、穿透难题?

缓存雪崩、缓存击穿和缓存穿透这三个问题是我们在使用redis做缓存的时候要面临的&#xff0c;一旦发生这三个问题&#xff0c;就会导致大量的请求都积压到了数据库层&#xff0c;有可能导致数据库宕机&#xff0c;进入导致整个系统不可用。 下边&#xff0c;具体看一下这三个问…

Qt扫盲-Qt资源系统概述

Qt资源系统概述一、概述二、资源文件(.qrc)三、外部二进制资源四、内嵌资源五、压缩资源文件六、在应用中使用资源七、使用Library 库中的资源一、概述 Qt资源系统是一种独立于平台的机制&#xff0c;用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序总是需要一…

Spring Boot学习之集成Dubbo+Zookeeper小案例

文章目录一 框架搭建1. [Dubbozookeeper下载和安装](https://blog.csdn.net/yang2330648064/article/details/128790320)二 项目创建2.1 服务者部分2.2 消费者部分2.3 注意点2.3.1 在service的实现类中配置服务注解&#xff0c;发布服务&#xff01;注意导包问2.3.2 服务接口的…

[Vulnhub] DC-8

下载链接&#xff1a;https://download.vulnhub.com/dc/DC-8.zip 知识点&#xff1a; sqlmap 注入出用户名密码msfvenom 生成脚本msf反弹shellsuid-exim 提权 目录 <1> 信息搜集 <2> 反弹shell (1) 利用kali自带webshell代码 (2) msfvenom制作反弹shell脚本…

SaaS平台数据表单组件设计技巧分享

SaaS平台数据表单组件设计技巧分享&#xff0c;数据表单方法&#xff1a;固定表头、固定侧栏、自定义栏、分页器、过滤器、数据排序、多选项同时操作、简单且简约、普通的字体样式、项目链接、鼠标悬停设计指南&#xff0c;为大家提供有关数据表单设计的实用性建议。在实际的数…

20克拉默法则、逆矩阵、体积

本节是关于行列式的最后一课&#xff0c;主要包括按各方面&#xff1a;求逆矩阵、克莱姆法则和体积 求逆矩阵 A-1 早在之前&#xff0c;就已经了解过求解逆矩阵的方法&#xff1a;高斯-若尔当求逆法。高斯-若尔当求逆法对于数值计算无懈可击&#xff0c;但很难想象这是如何做…

Hadoop基础之《(6)—Hadoop单机伪集群安装》

一、安装JDK yum install java-1.8* 二、关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld 三、配置ip地址和主机名映射 vi /etc/hosts 加入&#xff1a; 192.168.1.1 hadoop001 四、配置免密登录 1、生成公私钥 ssh-key…

设计模式第5式:装饰器模式

前言 当我们初学编程时&#xff0c;扩展程序功能一般习惯使用继承&#xff0c;使用继承有一些缺点&#xff0c;那就是容易造成类爆炸&#xff0c;并且容易继承一些不需要的特性。当我们学习完装饰器模式后&#xff0c;会发现善用组合会有比继承更好的效果。 正文 1、咖啡馆案…

全志A40i+Logos FPGA开发板(4核ARM Cortex-A7)硬件说明书(上)

前 言 本文档主要介绍TLA40iF-EVM工业评估板硬件接口资源以及设计注意事项等内容。 核心板的ARM端和FPGA端的IO电平标准一般为3.3V,上拉电源一般不超过3.3V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键或接口需考虑ESD设计,ESD器件选型时需…

深入Java自动化探针技术的原理和实践

转至作者 蒋志伟&#xff1a;深入Java自动化探针技术的原理和实践 前言建议阅读时间 30~40分钟读者需要对Java JVM 一定了解&#xff0c;文章会系统的介绍Java 探针核心原理和技术实现&#xff0c;总结目前一些主流的框架方案。同时&#xff0c;接下来我会分享一篇关于 OpenTel…