20-PI开发手册-集中部署发布服务供外部系统调用(sproxy代理类)

一、      文档信息

版本号*

更新日期*

姓名*

更新内容及更新理由*

备注*

V1.0

2019/04/01

范佳斌

文档创建

此接口为集中部署发布服务供外围系统调用,实现方式为sproxy代理类的形式。可与RFC类型(文档01)互作比较,两者功能相同实现方式不同。

V1.1

2019/04/08

范佳斌

文档调整

 

 

 

 

 

 

二、      接口内容

接口编号

TS01

接口功能描述

测试:外围系统调用集中部署服务,获取集中部署物料信息

发送方

外围系统

发送方接口名称

SIO_TS01_MM_GETMSG

接收方

集中部署ERP系统

接收方接口名称

SII_TS01_CEERP_GETMSG

交互模式

同步

触发机制

实时/按需/定时作业

后台作业名称

作业频率

发生频度

每日

集成方式

PI+ESB

接口类型

sproxy代理类

技术链路

外围系统-总部ESB-PI-集中部署ERP系统

服务提供方

集中部署ERP系统

备注

填写需要强调的重要信息

接口详细信息

1.  字段对应关系

发送字段对应关系

返回字段对应关系

字段信息

发送方

接收方

字段描述

类型

是否必填 (是/否)

长度(二者选其一)

备注

外围系统

集中部署

固定长度

最大长度

MATNR

MATNR

物料编码

CHAR

 

 

WERKS

WERKS

工厂代码

CHAR

 

 

LGORT

LGORT

库存地点

CHAR

 

 

字段信息

ERP系统字段名

外围系统字段名

字段描述

类型

是否必填 (是/否)

长度

备注

固定长度

最大长度

MESG

MESG

APP接口编号

CHAR

 

 

 

 

MATNR

MATNR

物料编码

CHAR

 

 

WERKS

WERKS

工厂代码

CHAR

 

 

LGORT

LGORT

库存地点

CHAR

 

 

MAKTX

MAKTX

物料描述

CHAR

 

 

LABST

LABST

非限制库存

DEC

 

 

2.  报文信息

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

<?xml version="1.0" encoding="utf-8"?>

<REQMESG>

<HEADER>

    <WERKS>B001</WERKS>

</HEADER>

<ITEM>

    <MATNR>000000000500022359</MATNR>

    <WERKS>B001</WERKS>

    <LGORT>BBBB</LGORT>

</ITEM>

<ITEM>

    <MATNR>000000000500022352</MATNR>

    <WERKS>B001</WERKS>

    <LGORT>9501</LGORT>

</ITEM>

</REQMESG>

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

<?xml version="1.0" encoding="UTF-8"?>

<RESPONSE>

<MESG>天津市电工厂名称为</MESG>

<ITEM>

    <MATNR>000000000500022359</MATNR>

    <WERKS>B001</WERKS>

    <LGORT>BBBB</LGORT>

    <MAKTX>测试物料2004</MAKTX>

    <LABST>3425.0</LABST>

</ITEM>

<ITEM>

    <MATNR>000000000500022352</MATNR>

    <WERKS>B001</WERKS>

    <LGORT>9501</LGORT>

    <MAKTX>test004</MAKTX>

    <LABST>6.0</LABST>

</ITEM>

</RESPONSE>

三、      接口配置

登陆网址: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.      实例参考代码

METHOD zpi00_ii_sii_ts01_ceerp_getmsg~sii_ts01_ceerp_getmsg.
*** **** INSERT IMPLEMENTATION HERE **** ***

  DATA p_werks TYPE mard-werks.

  TYPES:BEGIN OF ty_out,
        matnr TYPE mard-matnr,
        werks TYPE mard-werks,
        lgort TYPE mard-lgort,
        maktx TYPE makt-maktx,
        labst TYPE mard-labst,
        END OF ty_out.

  DATA:lw_out TYPE ty_out,
       lt_out TYPE TABLE OF ty_out.

  DATA: lw_header TYPE zpi00_dt_ts01_mm2ceerp_req_hea,                "输入参数抬头信息
        lt_input_item TYPE TABLE OF zpi00_dt_ts01_mm2ceerp_req_ite,   "输入参数内表
        lw_input_item TYPE zpi00_dt_ts01_mm2ceerp_req_ite,            "输入参数工作区
        lw_return TYPE zpi00_dt_ts01_mm2ceerp_resp_re,                "输出参数返回消息
        lt_output_item TYPE TABLE OF zpi00_dt_ts01_mm2ceerp_resp_it,  "输出参数内表
        lw_output_item TYPE zpi00_dt_ts01_mm2ceerp_resp_it            "输出参数工作区
        .

  DATA:lw_t001w TYPE t001w,
       zmsg TYPE string.

  MOVE-CORRESPONDING input-mt_ts01_mm2ceerp_req-header TO lw_header.
  p_werks = lw_header-werks.

  SELECT SINGLE werks name1 FROM t001w INTO CORRESPONDING FIELDS OF lw_t001w WHERE werks = p_werks AND spras = sy-langu.

  IF lw_t001w-werks IS NOT INITIAL.
    CONCATENATE lw_t001w-werks '工厂名称为' lw_t001w-name1 INTO zmsg.
    lw_return-mesg = zmsg.
    output-MT_TS01_MM2CEERP_RESP-RETURN = lw_return.
  ELSE.
    lw_return-mesg = '该工厂不存在'.
    output-MT_TS01_MM2CEERP_RESP-RETURN = lw_return.
  ENDIF.


  LOOP AT input-mt_ts01_mm2ceerp_req-item INTO lw_input_item.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "增加前导零
        EXPORTING
          input  = lw_input_item-matnr
        IMPORTING
          output = lw_input_item-matnr.
    APPEND lw_input_item TO lt_input_item.
  ENDLOOP.

  LOOP AT lt_input_item INTO lw_input_item.
*    SELECT SINGLE a~matnr
*                  b~maktx
*      FROM mard as a INNER JOIN makt as b
*      on a~matnr = b~matnr
*      INTO CORRESPONDING FIELDS OF lw_output_item
*      WHERE a~matnr = lw_input_item-matnr.

    SELECT SINGLE
      a~matnr
      a~werks
      a~lgort
      b~maktx
      a~labst
      FROM mard AS a INNER JOIN makt AS b
      ON a~matnr = b~matnr
      INTO CORRESPONDING FIELDS OF lw_output_item
      WHERE a~matnr = lw_input_item-matnr AND
            a~werks = lw_input_item-werks AND
            a~lgort = lw_input_item-lgort AND
            b~spras = sy-langu.

    IF sy-subrc eq 0.
      APPEND lw_output_item TO output-mt_ts01_mm2ceerp_resp-item.
      CLEAR: lw_output_item.
    ENDIF.


  ENDLOOP.

ENDMETHOD.

猜你喜欢

转载自www.cnblogs.com/fanjb/p/10829858.html