zoukankan      html  css  js  c++  java
  • SAP调用第三方WebService

    项目中,可能会碰到客户提出需求,需要SAP、ABAP去访问已有WebService。本文以一个中国股票行情数据 WEB 服务为例,实现SAP调用第三方WebService

    一、常用WebService一览

    常用的WebService有很多,这里就不一一列举了,查看链接:常用WebService一览

    二、SAP配置客户端代理(Client Proxies)

    1.在SE80中新建一个Package,然后在包名上右击Create->Enterprise Service/Web Service->Proxy Object

    clip_image002

    2.根据向导一步一步创建。

    常用的是URL/HTTP Destination

    clip_image003

    在URL中填写对应WebService的WSDL,这里是http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?WSDL

    clip_image004

    选择port type,只能选Soap,别的都会报错

    clip_image005

    填写Package和前缀,前缀的命名有一定的要求,按F1查看,确定后创建完成。

    clip_image006

    激活。中间如果有各种警告都不要理会,一直确定,最后激活即可。

    3.LPCONFIG中设置Logical Port

    Proxy Class写在SE80中创建的代理类的名字

    Logical Port自己取一个名字

    Default Port记得打勾

    然后创建,输入描述后保存激活。创建后可以查看一些参数配置,基本上默认就行

    clip_image008

    4.返回SE80查看一些属性。在刚才建的Proxy Class的类上双击,查看Generation。

    第一行是你的Proxy Class类名

    后边都是WebSerice接口相应的输入输出参数类型,一般名字会和接口的名字相关。

    clip_image009

    在第一行上双击进去可以看到所包含的的接口,这里有5个接口和1个构造函数。

    clip_image011

    三、程序部分

    REPORT  ZSTOCK.
    DATA: PROXY TYPE REF TO ZPR_CO_CHINA_STOCK_WEB_SERVICE, "PROXY CLASS
          SO1 TYPE ZPR_GET_STOCK_INFO_BY_CODE_SO1,"GET_STOCK_INFO_BY_CODE接口的输入参数
          SOA TYPE ZPR_GET_STOCK_INFO_BY_CODE_SOA,"GET_STOCK_INFO_BY_CODE接口的输出参数
          WA_STRING LIKE LINE OF SOA-GET_STOCK_INFO_BY_CODE_RESULT-STRING,
          IT_LABLE TYPE STANDARD TABLE OF STRING,
          WA_LABLE TYPE STRING,
          ERROR TYPE REF TO CX_AI_SYSTEM_FAULT.
    SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001."选择屏幕
    PARAMETERS: P_CODE LIKE SO1-THE_STOCK_CODE OBLIGATORY DEFAULT 'SZ300170'.
    SELECTION-SCREEN END OF BLOCK BLK.
    INITIALIZATION."初始化一些标签说明
    APPEND '股票代号:' TO IT_LABLE.
    APPEND '股票名称:' TO IT_LABLE.
    APPEND '行情时间:' TO IT_LABLE.
    APPEND '最新价(元):' TO IT_LABLE.
    APPEND '昨收盘(元):' TO IT_LABLE.
    APPEND '今开盘(元):' TO IT_LABLE.
    APPEND '涨跌额(元)' TO IT_LABLE.
    APPEND '最低(元):' TO IT_LABLE.
    APPEND '最高(元):' TO IT_LABLE.
    APPEND '涨跌幅(%):' TO IT_LABLE.
    APPEND '成交量(手):' TO IT_LABLE.
    APPEND '成交额(万元):' TO IT_LABLE.
    APPEND '竞买价(元):' TO IT_LABLE.
    APPEND '竞买价(元):' TO IT_LABLE.
    APPEND '委比(%):' TO IT_LABLE.
    APPEND '买一(元)/手:' TO IT_LABLE.
    APPEND '买二(元)/手:' TO IT_LABLE.
    APPEND '买三(元)/手:' TO IT_LABLE.
    APPEND '买四(元)/手:' TO IT_LABLE.
    APPEND '买五(元)/手:' TO IT_LABLE.
    APPEND '卖一(元)/手:' TO IT_LABLE.
    APPEND '卖二(元)/手:' TO IT_LABLE.
    APPEND '卖三(元)/手:' TO IT_LABLE.
    APPEND '卖四(元)/手:' TO IT_LABLE.
    APPEND '卖五(元)/手:' TO IT_LABLE.
    START-OF-SELECTION.
    SO1-THE_STOCK_CODE = P_CODE.
    TRY .
    CREATE OBJECT PROXY"初始化PROXY
    EXPORTING
            LOGICAL_PORT_NAME = 'STOCK_WEBSERVICE'.
    CALL METHOD PROXY->GET_STOCK_INFO_BY_CODE"调用GET_STOCK_INFO_BY_CODE
    EXPORTING
    INPUT  = SO1
    IMPORTING
    OUTPUT = SOA
    .
    CATCH CX_AI_SYSTEM_FAULT INTO ERROR.
    WRITE /1 ERROR->ERRORTEXT.
    ENDTRY.
    LOOP AT SOA-GET_STOCK_INFO_BY_CODE_RESULT-STRING INTO WA_STRING."输出
    READ TABLE IT_LABLE INTO WA_LABLE INDEX SY-TABIX.
    WRITE: WA_LABLE,WA_STRING,/.
    ENDLOOP.

    四、运行效果:

    image

    这样就完成了一个SAP内置炒股软件,SAP真是无所不能啊:)

  • 相关阅读:
    discuz常用变量
    Discuz!X/模板标签说明
    Discuz x 默认模板文件目录说明
    apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
    基于Java的数据采集(三)
    基于Java的数据采集(二)
    基于Java的数据采集(一)
    使用Spring JDBCTemplate简化JDBC的操作
    基于原生PHP交叉会员权限控制
    PHP上传压缩包并自解压方法
  • 原文地址:https://www.cnblogs.com/raychenfj/p/3057043.html
Copyright © 2011-2022 走看看