当前位置: 首页 > news >正文

SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)

SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)

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

一、 接口内容

接口详细信息

1. 字段对应关系

发送字段对应关系

返回字段对应关系

2. 报文信息

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

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

二、 接口配置

登陆网址:http://sgnwpid.sgcc.com.cn:50000/dir/start/index.jsp

事物码登陆: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之间转换的固定格式:

REQUEST:

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

RESPONSE:

同理,将集中部署侧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 EXPORTING 46 input = lw_input_item-matnr 47 IMPORTING 48 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 SINGLE 54 a~matnr 55 a~werks 56 a~lgort 57 b~maktx 58 a~labst 59 FROM mard AS a INNER JOIN makt AS b 60 ON a~matnr = b~matnr 61 INTO CORRESPONDING FIELDS OF lw_output_item 62 WHERE a~matnr = lw_input_item-matnr AND 63 a~werks = lw_input_item-werks AND 64 a~lgort = lw_input_item-lgort AND 65 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.

http://www.jsqmd.com/news/1165416/

相关文章:

  • Unity XR开发环境搭建:从导入包到多平台适配全攻略
  • Python AI数据分析实战:从环境搭建到机器学习项目完整指南
  • C++深度学习特征匹配库Light_Glue_CPP:原理、部署与性能优化实战
  • 方法论解析:339题学习力诊断量表的五维架构与信效度体系
  • U盘量产修复全指南:主控识别、固件重写与避坑实战
  • Unity WebXR开发实战:用SimpleWebXR插件打造零安装AR/VR网页应用
  • 2026年西南酸汤贴牌/辣椒面/酸汤底料/红酸汤/酸汤食品品牌优选指南 贵州贵阳等地五大品质品牌参考
  • AD7490与PIC32MX664F064L的硬件协同设计与优化
  • 软实时、NTP、PTP 如何选型?矿山数采时间同步实测方案
  • 2026年7月最新郑州帝舵官方售后服务网点地址及客服电话一览 - 帝舵中国官方服务中心
  • 常平改灯超长质保门店 常平名亮汽车用品店专业车灯升级服务 - 全域观察站
  • 可灵AI NEXTGEN颁奖典礼:AI视频生成技术突破与平台架构解析
  • IP 广播音响工程企业通用标准参考指南
  • STM32CubeIDE + IAR 编译器:3 种国产 MCU 工程移植方案与 2 个常见编译错误解决
  • 豆包长对话导航脚本:DOM解析实现提问目录与空间定位
  • RS485压力传感器通信排错指南:5种常见故障现象分析与Modbus指令调试方法
  • 2026年7月最新唐山积家官方售后客服服务电话及地址网点大全 - 积家官方售后服务中心
  • 哈尔滨对讲机杂音大、听不清、断断续续根治方法 香坊双工电子现场降噪优化方案
  • C/C++项目嵌入Wren脚本引擎:轻量级双向绑定与实战指南
  • ABAP STRANS 转换器实战:3步配置内表与XML双向转换(含嵌套结构)
  • MoE架构如何优化视频生成:LingBot-Video的工程实践解析
  • LabVIEW 2023 卷积码性能对比:(2,1,5) vs (2,1,7) 在AWGN信道下的3组误码率实测
  • ESP32 + LinkBoy 5.0 实战:3种DIY时钟方案对比与代码移植避坑指南
  • 2026年7月最新重庆伯爵官方售后服务网点地址及客服电话一览 - 亨得利钟表维修中心
  • AI药物研发实战:从靶点发现到临床试验优化的全流程解析
  • ECDSA与RSA算法深度对比:TLS证书选型实战指南
  • 开发岗越老越焦虑,他在科莱特SAP培训后收获12Koffer
  • 2026年7月最新南京美度官方售后客户服务热线与维修网点地址汇总 - 亨得利钟表维修中心
  • 腾势Z全球首发!比亚迪携旗下三大汽车品牌再次亮相英国古德伍德速度节
  • 红外与热成像图像融合实战:基于 OpenCV 4.8 的 3 种配准算法对比