博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)
阅读量:5339 次
发布时间:2019-06-15

本文共 7446 字,大约阅读时间需要 24 分钟。

转自:https://www.cnblogs.com/fanjb/p/10829858.html

一、      接口内容

接口详细信息

1.  字段对应关系

发送字段对应关系

返回字段对应关系

 

 

2.  报文信息

传入报文(报文结构,外围系统提供)

1 
2
3
4
B001
5
6
7
000000000500022359
8
B001
9
BBBB
10
11
12
000000000500022352
13
B001
14
9501
15
16

返回报文(外围系统提供)

1 
2
3
天津市电工厂名称为
4
5
000000000500022359
6
B001
7
BBBB
8
测试物料2004
9
3425.0
10
11
12
000000000500022352
13
B001
14
9501
15
test004
16
6.0
17
18

二、      接口配置

登陆网址:

事物码登陆:SXMB_IFR

A.  配置ESR(Enterprise Service Builder)

找到对应命名空间(人资组开发机目前只有薪酬通道是正常的,此处我们暂时挂到薪酬组下)

1.      创建Data Types

代理类形式需要为双方接口创建数据类型,国网项目都需要走esb通道,所传数据以<![CDATA[*]]>包裹xml报文形式进行传输,所以发出方只需要输入输出各一个参数即可,此处我们使用公共数据类型

1.1  外围侧发送方

DT_SHARE_SGHRERP2CEERP_REQ

DT_SHARE_SGHRERP2CEERP_RESP

 

1.2  ERP侧接收方

DT_TS01_MM2CEERP_REQ

 

DT_TS01_MM2CEERP_RESP

1.3  外围和集中部署关系图如下

 

2.      创建Message Types

根据DATA TYPES创建ERP侧的MESSAGER TYPES

  

3.      创建Service Interface

分别创建外围系统方和集中部署方服务接口。

SIO_TS01_MM_GETMSG

 

SII_TS01_CEERP_GETMSG

4.      创建Imported Archives

编辑xsl文档,并导入IA

 

CDATA和xml之间转换的固定格式:

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

REQUEST:

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

根据外围系统传入报文路径取数拼接到集中部署messagetyeps的报文结构中

 

RESPONSE:

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

同理,将集中部署侧messagetypes的返回报文的值拼入到外围返回报文中去

5.      创建Operation Mapping

 

B.  配置integration builder

 

1.      创建Configuration Scenario(场景)

CS_TS01_MM2CEERP_GETMSG

 

2.      导入Business System

 

3.      创建发送方Communication Channel

CC_TS01_MM_GETMSG

4.      创建Sender Agreement,发送方

发送方为:BS_SGHRERP

 

5.      创建Receiver Determination

确认接收方系统

接收方:集中部署201

 

6.      创建Interface Determination,

确认接收方系统的接收接口

 

7.      创建接收方Communication Channel

(代理类用XI,RFC类型用RFC)

 

 

8.      创建Receiver Agreement,接收方

 

9.      激活CS,并导出wsdl

所有的组件均要导入CS场景CS_TS01_MM2CEERP_GETMSG中,一步一激活确认所有组件均激活后导出wsdl进行测试。有一种情况的报错需要把场景及其组件删掉重新配置注册的情况,请注意。

 

按照如下格式修改URL并填入

http://10.1.169.34:50000/XISOAPAdapter/MessageServlet?channel=:BS_SGHRERP:CC_TS01_MM_GETMSG

 

选择对应的接口,外围系统调用

外围系统调用即:SIO_TS01_MM_GETMSG

 

填写CC:BS_SGHRERP,并导出wsdl即可供外围系统调用。

三、      GUI侧接口开发

前文部分为PI接口java端的开发配置,接下来开发基于abap的服务提供方接口(既ERP侧)的逻辑代码。

事物代码:sproxy

1.      根据组件名称、命名空间、接口名找到对应的接口

由于服务提供方为集中部署,我们只需开发ceerp侧的接口即可

2.      双击创建,分配包、请求号、前缀,系统自动根据PI的配置生成输入输出参数及其参考数据结构

 

 

3.      双击方法,在其内编写逻辑代码即可,注意导入导出的参数使用方式,一般接口data types都会定义成string类型,遇到数字型QUAN、DEC可能出现转换错误,可在代码中进行转换

 

 

4.      实例参考代码

1 METHOD zpi00_ii_sii_ts01_ceerp_getmsg~sii_ts01_ceerp_getmsg. 2 *** **** INSERT IMPLEMENTATION HERE **** *** 3  4   DATA p_werks TYPE mard-werks. 5  6   TYPES:BEGIN OF ty_out, 7         matnr TYPE mard-matnr, 8         werks TYPE mard-werks, 9         lgort TYPE mard-lgort,10         maktx TYPE makt-maktx,11         labst TYPE mard-labst,12         END OF ty_out.13 14   DATA:lw_out TYPE ty_out,15        lt_out TYPE TABLE OF ty_out.16 17   DATA: lw_header TYPE zpi00_dt_ts01_mm2ceerp_req_hea,                "输入参数抬头信息18         lt_input_item TYPE TABLE OF zpi00_dt_ts01_mm2ceerp_req_ite,   "输入参数内表19         lw_input_item TYPE zpi00_dt_ts01_mm2ceerp_req_ite,            "输入参数工作区20         lw_return TYPE zpi00_dt_ts01_mm2ceerp_resp_re,                "输出参数返回消息21         lt_output_item TYPE TABLE OF zpi00_dt_ts01_mm2ceerp_resp_it,  "输出参数内表22         lw_output_item TYPE zpi00_dt_ts01_mm2ceerp_resp_it            "输出参数工作区23         .24 25   DATA:lw_t001w TYPE t001w,26        zmsg TYPE string.27 28   MOVE-CORRESPONDING input-mt_ts01_mm2ceerp_req-header TO lw_header.29   p_werks = lw_header-werks.30 31   SELECT SINGLE werks name1 FROM t001w INTO CORRESPONDING FIELDS OF lw_t001w WHERE werks = p_werks AND spras = sy-langu.32 33   IF lw_t001w-werks IS NOT INITIAL.34     CONCATENATE lw_t001w-werks '工厂名称为' lw_t001w-name1 INTO zmsg.35     lw_return-mesg = zmsg.36     output-MT_TS01_MM2CEERP_RESP-RETURN = lw_return.37   ELSE.38     lw_return-mesg = '该工厂不存在'.39     output-MT_TS01_MM2CEERP_RESP-RETURN = lw_return.40   ENDIF.41 42 43   LOOP AT input-mt_ts01_mm2ceerp_req-item INTO lw_input_item.44     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "增加前导零45         EXPORTING46           input  = lw_input_item-matnr47         IMPORTING48           output = lw_input_item-matnr.49     APPEND lw_input_item TO lt_input_item.50   ENDLOOP.51 52   LOOP AT lt_input_item INTO lw_input_item.53     SELECT SINGLE54       a~matnr55       a~werks56       a~lgort57       b~maktx58       a~labst59       FROM mard AS a INNER JOIN makt AS b60       ON a~matnr = b~matnr61       INTO CORRESPONDING FIELDS OF lw_output_item62       WHERE a~matnr = lw_input_item-matnr AND63             a~werks = lw_input_item-werks AND64             a~lgort = lw_input_item-lgort AND65             b~spras = sy-langu.66 67     IF sy-subrc eq 0.68       APPEND lw_output_item TO output-mt_ts01_mm2ceerp_resp-item.69       CLEAR: lw_output_item.70     ENDIF.71   ENDLOOP.72 73 ENDMETHOD.

转载于:https://www.cnblogs.com/BruceKing/p/11341060.html

你可能感兴趣的文章
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
like tp
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>