抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

之前写了一篇使用RFC形式的配置PO接口的笔记,那一篇的配置比较简单,且在安全性方面不太可靠。所以这次介绍一下比较常用也相对灵活的代理类形式的配置方式。

代理类形式的PO接口配置

一、需求分析

1.读取航班表SFLIGHT表中的数据信息

外围系统需要通过航线代码CARRID、航班连接编号CONNID和航班日期FLDATE三个字段读取航班表中的信息。其中他们所对应的接口字段名称与外围系统所需要使用的字段结构如下所示:

SAP对应的字段 类型 外围系统所对应的字段名
CARRID STRING RouteCode
CONNID STRING FlightConnection
FLDATE STRING FlightDate
PRICE DEC(15,2) AirFreight
CURRENCY STRING LocalCurrency
PLANETYPE STRING AircraftType
SEATSMAX STRING MaximumCapacity
SEATSOCC STRING EconomyClassSeatsUsed
PAYMENTSUM DEC(17,2) TotalNumberOfReservations
SEATSMAX_B STRING MaximumCapacityOfBusinessClass
SEATSOCC_B STRING BusinessClassSeatsUsed
SEATSMAX_F STRING MaximumCapacityOfFirst
SEATSOCC_F STRING FirstClassSeatsOccupied

根据上图的字段对应关系可以看出,外围系统的接口字段与SAP的接口字段并不一致,所以我们需要新建两套Data Type对象用于映射SAP系统字段与外围系统的字段。并且是根据三个主键进行的查询,所以约定成用于筛选的输入结构如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"RouteCode":[
{
"LOW":"",
"HIGH":""
}
],
"FlightConnection":[
{
"LOW":"",
"HIGH":""
}
],
"FlightDate":[
{
"LOW":"",
"HIGH":""
}
]
}

二、新建PO接口 Enterprise Services Builder

1.新建接口文件夹

在命名空间或文件夹上右键,新建一个如下图所示的文件夹。

1.新建接口文件_NEW 2.新建接口文件_文件名称填写

在新建好的界面上点击保存按钮,就可以在左侧的工具栏处看到新建的文件夹了。

3.新建好的接口文件夹

2.新建输入参数的Data Type

(1)新建Data Type对象

填入用于区分的Data Type对象名称与描述,然后点击左下角的创建按钮新建一个Data Type对象。在这个地方可以根据自己的需求来,可以只创建一个Data Type对象然后SAP端的输入参数名称和这个名称保持一致即可。也可以专门再新建一个SAP端用的Data Type。然后一会通过Message Mapping进行映射即可。

为了方便理解,本篇笔记会新建两套Data Type用于讲解PO中数据方向对参数配置的影响。所以在这个地方我们新建两个用于输入参数的Data Type。

4.新建SAP端输入Data Type 5.新建外围系统端输入Data Type 6.新建的Data Type对象

(2)填写Data Type输入参数结构

由输入参数的JSON结构可以看出来,三个输入的字段结构都是数组形式的。所以在配置的时候我们需要将其放在一个结构中封装起来。然后在配置通道的时候设置数据类型为数组即可。

想要封装成一个结构,则需要在字段的Occurrence列设置字段属性的maxOccursunbounded。这样就代表该字段是一个结构,然后就可以插入子元素。用ABAP来说的话,被设置为unbounded的字段为结构体名称,然后插入该字段的子元素就是该结构体下的字段名。

① 配置SAP端的输入参数字段结构
7.编写SAP端输入参数结构

完整的输入参数结构如下,其余两个字段的配置方式都是一样的。

8.完整的SAP端输入参数结构
② 配置外围系统端输入参数
9.编写外围系统端的输入参数结构

完成的外围系统输入参数结构。

10.完整的外围系统端的输入参数结构

(3)填写Data Type输出参数结构

根据SAP传出的结构参数与外围系统的接口字段参数关联起来。这些的配置方式都是和上面的内容一致的,所以此处就只展示最终配置好的参数结构就行。

同样的要先和上面新建Data Type一样,需要现新建两个Data Type对象。

11.新建传出参数Data Type
① 配置SAP端的输出参数字段结构
12.SAP端传出参数结构
② 配置外围系统端的输出参数字段结构
13.外围系统端传出参数结构

3.创建Message Type

创建Message Type对象。这个对象就是用在接口数据传输过程中的对象,可以理解为信息的载体。用ABAP的开发来理解的话,Data Type是定义了一种数据类型,而Message Type对象则是参照数据类型定义的变量,要存储数据和内容自然是要使用变量也就是Message Type去存储。

此外有个不算规范的小技巧,在创建Message Type对象时我们可以将Message Type的后缀名称写成与Data Type一致的后缀名称,这样就可以很快的定位到Message Type所参照的类型。

14.新建Message Type对象_填写名称

新建完成Message Type对象后,我们就需要为该对象声明参照类型,也就是Data Type对象。当你的PO中有很多的Data Type对象,直接通过Data Type的名称引入时数据太多不利于查找。所以也可以考虑先填入Data Type所在的命名空间(Namespace)缩小查找范围

15.新建Message Type对象_填入Data Type

新建完成之后点击最上方的保存按钮,就可以在最左侧的工具栏中看到新建的对象了。下图中工具栏中圈出来的Message Type对象就是SAP端与外围系统端所对应的全部Message Type对象。

16.新建Message Type对象_全部Message Type

(1)创建输入参数结构的Message Type

① 外围系统端输入参数结构
17.外围系统端输入结构Message Type
② SAP端输入参数结构
18.SAP端输出结构Message Type

(2)创建输出参数结构的Message Type

① 外围系统端输出参数结构
19.外围系统端输出结构Message Type
② SAP端输出参数结构
20.SAP端输出结构Message Type

4.创建字段映射对象Message Mapping

来到了PO创建的一个小重点。Message Mapping对象是用来关联SAP端接口字段与外围系统端接口字段的。简单来说就是告诉PO中间件,我需要将这个结构的A字段的值传递到另一个接口的a字段中。这就是Message Mapping对象所作的事情。

介绍完Message Mapping的作用后接下来介绍如何创建和配置Message Mapping对象。先介绍创建对象。

(1)创建Message Mapping对象

21.创建Message Mapping对象_输入属性名称

点击左下角的创建按钮,进入下面的界面中。在该界面中左侧的空白区域需要填入数据来源Message对象,在右侧需要填入数据目标Message对象

22.创建Message Mapping对象_界面介绍

(2)Message Mapping映射方向

Message Mapping的映射方向顺序不能反,不然后续在使用过程中会报错。简单来说就是根据接口的调用方向来判断数据的来源与去向

如果是SAP推送数据到外围系统,那么在Request中映射的关系就是SAP是输入源,那么在左侧就需要填入SAP端的Message Type。而传输出去之后获取外围系统接口返回值的Response中映射关系是外围系统是输入源,在Response映射结构中左侧的输入源就应该是外围系统端的Message Type。

23.SAP端推送数据到外围系统端 Message Mapping映射方向

反过来如果是外围系统推送数据到SAP系统,那么在Request的映射结构中,外围系统段就是输入源,在左侧的映射关系中应该填入外围系统端的Message Type。反过来,在外围系统推送数据到SAP后,SAP需要返回信息给外围系统,这个时候在Response中SAP端就是输入源

24.外围系统推送数据到SAP端 PO Message Mapping映射方向

(3)配置Request Message Mapping

本次的接口是外围系统调用SAP的接口(需要推送数据到SAP端)。所以按照上面的数据传导方向,在Request结构中外围系统是数据源,SAP端是目标数据。所以左侧引入外围系统的Message Type对象 MT_DEMO001_DEMO2ERP_REQ_OUT,右侧引入SAP端的Message Type对象MT_DEMO001_DEMO2ERP_REQ。

25.分配Request 的Message Mapping对象

(4)映射Request Message Mapping字段

进行完上面的操作之后会发现每个字段和结构前面有一个圆形的灯。此时是灰色的,代表没有与之映射的字段。选中左右两边的结构,点击映射按钮映射两个字段或结构当两个结构下有同名的字段时,会自动映射字段名相同的字段

26.映射Request 的Message Mapping字段

当字段全部映射结束后,会发现有映射关系的字段前面的圆形灯会变成绿色。代表字段映射成功。

(5)配置Response Message Mapping

与上面配置Request的映射关系一样,需要先分清楚数据的方向。本次的接口是外围系统调用SAP端的接口,所以在一开始传入数据时是外围系统端传入的,而此时响应外围系统的请求后需要回传SAP端的消息给外围系统。所以在Response的映射结构中数据源是SAP端,目标数据是外围系统端

即左侧的Source Message是MT_DEMO001_DEMO2ERP_RES,右侧的Target Message是MT_DEMO001_DEMO2ERP_RES_OUT。

27.配置Response 的Message Mapping对象

(6)映射Response Message Mapping

和上面的操作类似,根据FS给出的字段对应关系一个字段一个字段的映射即可。最终映射完成之后见下图。

28.映射Response 的Message Mapping字段

5.配置Service Interface

(1)创建Service Interface对象

上面创建了很多的对象,例如SAP端的Message Type对象MT_DEMO001_DEMO2ERP_REQ与MT_DEMO001_DEMO2ERP_RES。外围系统端的Message Type对象MT_DEMO001_DEMO2ERP_REQ_OUT与MT_DEMO001_DEMO2ERP_RES_OUT。我们可以根据命名规则知道他们两两一组是对应的Request与Response对象。

此时我们需要告诉系统,上方的Message Type对象哪两个是一组的对象。也就是将同一个数据端的Request对象与Response对象关联起来。这样在数据进入中间件时就会根据对应的接口来传递数据。简单来说就是PO系统哪两个Message Type是SAP端的,哪两个Message Type的外围系统端的。

在Service Interface中,除了可以关联Message Type对象,还可以设置接口对应的Request与Response对应的是那个对象。

29.新建Service Interface对象_新建按钮 30.新建Service Interface对象_对象名称与描述

(2)创建SAP端的Service Interface对象

创建完Service Interface对象后,还需要配置方向。也就是Category属性,在图中用红框圈起来了。此处需要设置当前Service Interface是inbound还是outbound。此时可以遵循调用方是outbound,响应方是inbound

在这个接口中,外围系统是调用方,SAP是响应方。所以在SAP端的Service Interface对象应该将Category属性设置为inbound。

31.新建Service Interface对象_设置属性与Message Type

(3)创建外围系统端的Service Interface对象

同理,创建外围系统的Service Interface对象时,因为他是调用方,所以设置Category属性设置为outbound

32.新建Service Interface对象_设置外围系统端属性与Message Type

6.配置Operation Mapping

(1)创建Operation Mapping对象

此处设置的内容和上面的Message Mapping对象设置的内容类似,也是需要区分数据源和目标数据。简单理解成接口的调用方是数据源,而响应方是目标源即可。我们刚刚在上面设置了两个端的Service Interface对象。

接下来是新建Operation Mapping对象的操作。

33.新建Operation Mapping_输入命名与描述

(2)配置Operation Mapping对象

按照上面说的内容,接口的调用方是数据源,而响应方是目标源。在外围系统调用SAP端接口时,外围系统是调用方(数据源),SAP端是响应方(目标源)。对Operation Mapping对象进行设置。

34.新建Operation Mapping_配置目标源与目标

配置完数据源与目标数据后,点击下方的刷新按钮唤出下面消息的映射关系页签Request与Response。

因为我们在上面配置了数据源与目标数据的关系,所以下面会根据上面配置的Message Type自动带出来对应的对象,然后在中间填写他们两者之间的Mapping关系即可。

35.新建Operation Mapping_配置Request参数映射

Response页签的Message Type映射关系。

36.新建Operation Mapping_配置Response参数映射

7.激活全部对象

配置完上面的所有对象之后,就可以激活创建的所有对象了。当然在创建中途你也可以激活未处于活动状态的对象。这里只是为了统一介绍功能所以才放在了一起介绍。在每个新建的对象未激活前所创建的对象在左上角都会带一个红色的小勾。激活对象是没有这个图标的。例如在下面的第一张图中,下面的MM文件夹和SD文件夹都是激活状态,而其他的对象左上角都带有红色的小勾图标,代表未激活对象。

在未激活的对象上单击右键,点击Activate按钮。之后会弹出一个未激活对象的列表弹框。在其中勾选你要激活的对象,然后再点击弹框左下角的Activate按钮,激活选中的对象。

37.激活对象_激活按钮 38.激活对象_未激活对象列表

激活完成后,如果没有报错就会弹出下面的弹框。点击弹框的close按钮后,就可以看到刚刚未激活的对象左上角小勾图标消失了。

39.激活对象_激活成功 40.激活对象_激活成功的对象

三、集成生成器 Integration Builder

1.业务组件/业务系统 Business Component/System

这两种对象简单来说就是业务系统(Business System)是具有真实地址的对象,而业务组件(Business Component)是虚拟的服务对象。在使用时是需要通过Communication Channel对象设置各项属性和访问用的URL地址的。但是业务系统在一开始配置PO时就配置好响应的属性了,所以在集成生成器中只需要Assign进来就可以了。在创建接口时因为会根据配置自动带出属性等信息,所以不需要像虚拟对象一样配置很多的属性了。

(1)配置业务系统 Business System

在这里简单介绍一下配置业务系统(Business System)的地方和方法。在一开始配置好PO时,就可以在System Landscape Directory中设置业务系统了。

但是因为本片笔记主旨在于介绍配置代理类形式的PO接口,所以这里只简单介绍一下如何配置。

配置业务系统的地方如下图所示。点击下图红框选中的超链接进入System Landscape Directory界面。

41.配置业务系统_PO超链接

在该界面需要先配置好技术系统,然后再去下面的业务系统中配置业务系统(Business System)对象。因为下面业务系统中的对象属性基本都是从上面导入的技术系统中映射过来的,所以需要先配置好上面的技术系统,然后再去配置业务系统。

42.配置业务系统_技术与业务系统

在技术系统界面会看到目前已经配置好了四套系统,分别是PO的开发系统和测试系统以及SAP的开发D系统和测试Q系统。

43.配置业务系统_技术系统

在配置完成上面的技术系统之后就可以去刚刚看到的业务系统中根据导入的系统配置业务对象了。配置好的业务对象如下图所示。

44.配置业务系统_业务系统

新建业务对象的步骤如下图红框圈中的内容所示。

45.配置业务系统_新建业务系统

(2)配置业务组件 Business Component

这个对象是虚拟对象,没有地址等属性信息,所以在使用时一般需要配置Communication Channel对象设置各项属性和访问用的URL地址。所以创建的时候比较简单,只需要在一个对象上单击右键New,选择Business Component即可。

46.创建业务组件

2.配置 接口通信通道 Communication Channel对象

这个可以简单理解为为业务组件或业务系统配置属性的对象,一个业务组件/系统可以拥有多个不同的通信通道对象。而每一个通信通道对象都对应一个/多个接口,所以才可以做到一个业务组件/系统可以同时对接不同类型与不同地址的接口。

(1)新建对象

在新建通信信道时需要在界面上填写通信组件(Communication Component)。这个一般填写都是虚拟的对象,也就是业务组件对象。我们本次使用自己配置的BC_DEMO_CYH对象。

47.创建通信信道_新建界面

(2)配置通信通道基础属性

本页面重要的信息很多,第一个就是需要在最开始的位置设置适配器。也就是图中第一个红框圈起来的地方。在设置完这个地方之后才会出现下面的多个页签。

第二个需要注意是判断当前通信通道到底是发送方还是接收方。这个的判断是通过刚开始在创建通信通道时输入的业务组件对象,相对于他来说是发送方还是接收方。我们在创建时,导入的业务组件对象是外围系统方。他们是调用我们的接口,所以他们是请求的发送方。

第三个需要注意的是需要设置下方的Element Name和Element Namespace。这个地方需要传入的是Message Mapping对象Test页签中的东西。详细位置可以参考下一张图片。

第四个就是最下面的设置数据格式的地方,这里可以设置传入和传出JSON报文中的字段数据格式。例如传入的是数组(内表)或传出的是数组(内表)等信息,也可以在这里对某一字段设置默认初始值。本次配置的接口中数组形式的字段很多,所以配置了较多的内容。

48.创建通信信道_设置基础属性

Message Mapping对象Test页签。

49.创建通信信道_参考Element位置

(3)配置通信通道的接口地址后缀

此处还可以灵活的设置动态参数从SAP端或外围系统端灵活的传入PO进行处理,这个后面有机会单独介绍。多适用于一个PO的通信访问多个其他接口。简单来说比如一个SAP端的接口需要将数据推送给不同外围系统的接口地址,就需要在这里动态的配置外围系统的接口地址。

本次接口不涉及这些内容所以只需要将SAP端接口后缀设置好之后就可以设置下一项请求方式的配置了。

50.创建通信信道_配置接口地址

(4)配置通信通道的请求方式

因为是请求数据的接口,所以我们将他的请求方式设置未GET请求方式即可。

51.创建通信信道_设置请求方式

配置完上面的所有过程之后,通信通道对象的属性就全部设置完成了,这个时候激活就可以了。

3.配置代理类的通信通道

这一步主要是对没有启用或尚未配置代理类访问服务用的。如果你的PO已经配置过SAP端的XI服务访问方式可以直接跳过这一步,到下面的集成配置。

(1)新建通信通道对象

因为是400系统的XI通信通道对象,即配置的是400系统的服务。所以这里的业务组件是BS_DEV_400。

67.配置SAP端代理类通信通道_新建

(2)选择通信通道适配器

代理类的适配器是SOAP,但是需要变更Message Protocol(消息协议)为XI 3.0。完成之后选择通过URL地址方式配置服务地址。在最下面选择登录SAP的方式。目标URL地址获取方式在下一步介绍。

69.代理类通信通道配置访问服务与登录方式

(3)获取目标URL Target URL

这个目标URL是通过事务码 SICF进入SAP Service界面,点击运行按钮进入到Service列表中。

72.补充获取目标URL_选择屏幕

在列表中展开SAP页签,展开XI页签,最后在集成引擎(SAP XI消息格式)上单击右键选择测试服务。此时会有一个弹框也可能不会有,但是最后都会跳转到浏览器。此时浏览器的URL就是目标URL。

70.使用SICF获取Target URL

网页的目标地址。

71.获取Target URL网页端网址

4.配置 集成配置 integrated configuration 对象

(1)配置业务组件的接口服务

在新建集成配置对象前,需要先去参与交互的业务组件对象处将本次它参与的接口服务对象填充进去。本次我们使用的是BC_DEMO_CYH业务组件对象且他是发送方,所以我们需要在他的发送页签中将对应接口的Service Interface填充进去。

53.配置业务组件的服务接口

(2)新建集成配置对象

在创建集成配置对象时,一样需要传入业务组件对象。这里传入的业务组件对象是固定的,是接口的调用方。如果调用方是SAP,则在这里传入SAP端的业务系统。如果调用方是外围系统则在这里传入外围系统的业务组件对象。

第二个interface输入框中则需要填入我们配置的接口所对应的Service Interface对象,这个对象需要在上面的操作中引入业务组件对象才可以在这里使用搜索帮助带出来。

54.新建集成配置_新建对象

(3)配置通信通道对象

因为在开头配置过发送方的业务组件对象了,所以在这里只需要配置发送方的通信通道即可。在通信信道中有发送方的属性信息。

55.集成配置对象_配置CC对象

(4)配置接收方

配置完发送方的属性信息之后就需要配置接收方对象了。在这里可以配置多个对象,既可以在这里配置400的接收方也可以配置500的接收方等。不过需要设置一下响应的条件,即告诉系统在什么情况下调用哪个系统的数据。这个判断条件是在第二列的Condition中进行设置的。

56.集成配置对象_配置接收者

下面附带一张多系统响应的参考截图。

60.集成配置对象_多接收者接口补充

(5)配置接收方报文映射关系

这里主要设置的是接收方对字段的映射关系。不同的接收方系统可以调用不同的映射关系。

57.集成配置对象_接收者接口

(6)接收方输出设置

此处的配置是根据接收方配置的属性去设置的,一般只要选好接收方,这个地方会自动带出来接收方的CC配置。我这里配置了两个访问方式,第一个是通过XI的代理类方式访问的通信通道,第二个是通过SAP 的RFC方式访问的通信通道。我们选择上面配置的代理类方式的通信通道。

58.集成配置对象_输出设置

(7)高级设置

这里主要是配置一些日志相关的内容。配置完这些内容之后就可以激活创建的对象了。到这一步,PO端的配置就全部完成了。剩下的就是到SAP端激活和生成代理类,然后在其中编写接口的响应逻辑了。

59.集成配置对象_高级设置

四、SAP端接口响应逻辑

1.激活PO生成代理类对象

(1)查找对应的PO对象路径

使用事务码 SPROXY进入SAP端PO配置界面。

61.SAP端PO配置界面路径

(2)Generate对象

在其中一个对象上右键点击Generate选项生成对象,此时会弹框需要你绑定生成的对象应该存放在什么包和事务码下。

62.Generate对象_按钮位置 63.Generate对象_配置包与事务码

(3)激活生成的对象

生成完成的对象前面图标和原来生成之前的一样,只有在生成之后激活对象后,该对象才算是在SAP中可以使用的对象。对象前的蜕变也会变成一个右下角带绿色方框的图标。

64.激活生成的对象

在生成对象时可以直接根据自己的接口需求进行生成即可。在图中可以看到一个PO对象有两个Service。一个是消费者,一个是供应商。这两个带入到调用方与响应方中就是接口调用方是消费者,接口响应方是供应商。在本次配置的接口中,因为是外围系统调用SAP端的接口。所以SAP端是供应商,外围系统端是消费者。

这样一来我们就只需要生成一下供应商服务,编写他的响应逻辑即可。操作的方式和上面的一致,先生成Service Providers,然后在激活生成的代理类型对象即可。

64.生成对象 65.激活生成的对象_Service

(4)查看代理类实例化方法

在生成的服务上,双击实现类对象,查看接口响应的实例化方法。

66.查看代理类实例化方法

(5)接口响应逻辑

因为是查询航班表的逻辑,所以这里根据传入的筛选条件编写查询逻辑并将返回的数据封装到对应的参数结构中即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
METHOD ZII_SI_DEMO001_DEMO2ERP_SYNC_S~SI_DEMO001_DEMO2ERP_SYNC_SAP.
*--------------------------Variables-----------------------------------*
CONSTANTS:
LC_I TYPE C LENGTH 1 VALUE 'I',
LC_EQ TYPE C LENGTH 2 VALUE 'EQ',
LC_BT TYPE C LENGTH 2 VALUE 'BT'.
"PO设置的参数结构
DATA:
LS_INPUT TYPE ZMT_DEMO001_DEMO2ERP_REQ,
LS_OUTPUT TYPE ZMT_DEMO001_DEMO2ERP_RES.
"PO中参与逻辑处理的参数
DATA:
LS_CARRID TYPE ZDT_DEMO001_DEMO2ERP_REQ_CARRI,"输入筛选参数结构体
LS_CONNID TYPE ZDT_DEMO001_DEMO2ERP_REQ_CONNI,"输入筛选参数结构体
LS_FLDATE TYPE ZDT_DEMO001_DEMO2ERP_REQ_FLDAT,"输入筛选参数结构体
LT_CARRID TYPE ZDT_DEMO001_DEMO2ERP_REQ__TAB1,"输入筛选参数内表
LT_CONNID TYPE ZDT_DEMO001_DEMO2ERP_REQ_C_TAB,"输入筛选参数内表
LT_FLDATE TYPE ZDT_DEMO001_DEMO2ERP_REQ_F_TAB,"输入筛选参数内表
LT_TABLE TYPE ZDT_DEMO001_DEMO2ERP_RES_E_TAB."返回参数内表
"SAP端参数
DATA:
LR_CARRID TYPE RANGE OF SFLIGHT-CARRID,
LR_CONNID TYPE RANGE OF SFLIGHT-CONNID,
LR_FLDATE TYPE RANGE OF SFLIGHT-FLDATE,
LS_CARRID_R LIKE LINE OF LR_CARRID,
LS_CONNID_R LIKE LINE OF LR_CONNID,
LS_FLDATE_R LIKE LINE OF LR_FLDATE.
*----------------------------Logic-------------------------------------*
"参数传入
LS_INPUT = INPUT.

"将传入参数传入内表中
MOVE-CORRESPONDING:
LS_INPUT-MT_DEMO001_DEMO2ERP_REQ-CARRID TO LT_CARRID,
LS_INPUT-MT_DEMO001_DEMO2ERP_REQ-CONNID TO LT_CONNID,
LS_INPUT-MT_DEMO001_DEMO2ERP_REQ-FLDATE TO LT_FLDATE.

"将传入的筛选条件填入Range表
MOVE-CORRESPONDING:
LT_CARRID TO LR_CARRID,
LT_CONNID TO LR_CONNID,
LT_FLDATE TO LR_FLDATE.

"补全Range表
SELECT @LC_I AS SIGN,
CASE WHEN R~LOW IS NOT INITIAL AND R~HIGH IS INITIAL
THEN @LC_EQ
WHEN R~LOW IS NOT INITIAL AND R~HIGH IS NOT INITIAL
THEN @LC_BT END AS OPTION,
R~LOW, R~HIGH
FROM @LR_CARRID AS R
INTO CORRESPONDING FIELDS OF TABLE @LR_CARRID.

SELECT @LC_I AS SIGN,
CASE WHEN R~LOW IS NOT INITIAL AND R~HIGH IS INITIAL
THEN @LC_EQ
WHEN R~LOW IS NOT INITIAL AND R~HIGH IS NOT INITIAL
THEN @LC_BT END AS OPTION,
R~LOW, R~HIGH
FROM @LR_CONNID AS R
INTO CORRESPONDING FIELDS OF TABLE @LR_CONNID.

SELECT @LC_I AS SIGN,
CASE WHEN R~LOW IS NOT INITIAL AND R~HIGH IS INITIAL
THEN @LC_EQ
WHEN R~LOW IS NOT INITIAL AND R~HIGH IS NOT INITIAL
THEN @LC_BT END AS OPTION,
R~LOW, R~HIGH
FROM @LR_FLDATE AS R
INTO CORRESPONDING FIELDS OF TABLE @LR_FLDATE.

"根据Range表查询数据
SELECT CARRID,
CONNID,
FLDATE,
PRICE,
CURRENCY,
PLANETYPE,
SEATSMAX,
SEATSOCC,
PAYMENTSUM,
SEATSMAX_B,
SEATSOCC_B,
SEATSMAX_F,
SEATSOCC_F
FROM SFLIGHT
WHERE CARRID IN @LR_CARRID
AND CONNID IN @LR_CONNID
AND FLDATE IN @LR_FLDATE
INTO TABLE @DATA(LT_SFLIGHT).
MOVE-CORRESPONDING LT_SFLIGHT TO LT_TABLE.

"设置返回值
OUTPUT-MT_DEMO001_DEMO2ERP_RES-ET_TABLE = LT_TABLE.
ENDMETHOD.

五、测试接口

1.Postman测试接口

打开Postman输入接口地址,然后在权限处选择Basic类型的权限,然后此处填入的是PO的登录账号。

73.填写接口访问账号信息_PO账号

2.传输筛选JSON

编写筛选的JSON字符串,发送到接口查看取数是否正确。接口联通成功。

74.填写筛选JSON条件

六、其他内容

1.配置PO目标

上面在配置PO时介绍了配置SAP端的代理类通信通道。那是其中一种配置的方式,如果只有个别接口需要使用代理类方式的话,可以使用那种方式配置。但是如果存在多个系统需要不断切换数据源时,或有特殊的需求比如需要PO端登录SAP的账号不同时,就比较麻烦了。所以这里再介绍一种通过目标来设置访问服务器的方式。

(1)目标链接位置

75.配置目标_前端链接

(2)目标页签位置

76.配置目标_目标位置页签

(3)创建目标对象

点击上面的创建按钮,在下面先填写代理类的XI的Target URL(这个内容详见三、集成生成器 Integration Builder下的第三小项)。然后再配置下系统表示等字段内容,就可以继续配置登陆数据。

77.创建目标对象_设置目标URL

在登录数据页签中输入登录SAP的账号信息。之后点击保存按钮就可以将目标对象保存都PO的配置系统中,在后续的使用过程中可以直接引用该对象即可。

78.创建目标对象_设置登录数据

(4)引用目标对象

这样的效果和上面的配置代理类通信通道的效果是一样的。

79.目标对象引用示例

评论