• 注册
  • SAP SAP 关注:2 内容:73

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

  • 查看作者
  • 打赏作者
    • SAP
    • 黑马
      er
      • 转自:https://www.cnblogs.com/fanjb/p/10829858.html

        一、      接口内容

        接口详细信息

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

        1.  字段对应关系

        发送字段对应关系

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

        返回字段对应关系

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

        2.  报文信息

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

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

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

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

        二、      接口配置

        登陆网址: 链接

        事物码登陆:SXMB_IFR

        A.  配置ESR(Enterprise Service Builder)

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

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

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

        1.      创建Data Types

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

        1.1  外围侧发送方

        DT_SHARE_SGHRERP2CEERP_REQ

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

        DT_SHARE_SGHRERP2CEERP_RESP

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

        1.2  ERP侧接收方

        DT_TS01_MM2CEERP_REQ

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

        DT_TS01_MM2CEERP_RESP

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

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

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

        2.      创建Message Types

        根据DATA TYPES创建ERP侧的MESSAGER TYPES

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

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

        3.      创建Service Interface

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

        SIO_TS01_MM_GETMSG

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

        SII_TS01_CEERP_GETMSG

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

        4.      创建Imported Archives

        编辑xsl文档,并导入IA

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

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

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

        REQUEST:

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

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

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

        RESPONSE:

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

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

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

        5.      创建Operation Mapping

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

        B.  配置integration builder

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

        1.      创建Configuration Scenario(场景)

        CS_TS01_MM2CEERP_GETMSG

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

        2.      导入Business System

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

        3.      创建发送方Communication Channel

        CC_TS01_MM_GETMSG

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

        4.      创建Sender Agreement,发送方

        发送方为:BS_SGHRERP

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

        5.      创建Receiver Determination

        确认接收方系统

        接收方:集中部署201

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

        6.      创建Interface Determination,

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

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

        7.      创建接收方Communication Channel

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

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

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

        8.      创建Receiver Agreement,接收方

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

        9.      激活CS,并导出wsdl

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

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

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

        链接

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

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

        外围系统调用即:SIO_TS01_MM_GETMSG

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

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

        三、      GUI侧接口开发

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

        事物代码:sproxy

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

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

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

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

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

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

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

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

        4.      实例参考代码

        SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)
         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.

      请登录之后再进行评论

      登录
    • 实时动态
    • 帖子间隔 侧栏位置: