项目中,可能会碰到客户提出需求,需要SAP、ABAP去访问已有WebService。本文以一个中国股票行情数据 WEB 服务为例,实现SAP调用第三方WebService
一、常用WebService一览
常用的WebService有很多,这里就不一一列举了,查看链接:常用WebService一览
二、SAP配置客户端代理(Client Proxies)
1.在SE80中新建一个Package,然后在包名上右击Create->Enterprise Service/Web Service->Proxy Object
2.根据向导一步一步创建。
常用的是URL/HTTP Destination
在URL中填写对应WebService的WSDL,这里是http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?WSDL
选择port type,只能选Soap,别的都会报错
填写Package和前缀,前缀的命名有一定的要求,按F1查看,确定后创建完成。
激活。中间如果有各种警告都不要理会,一直确定,最后激活即可。
3.LPCONFIG中设置Logical Port
Proxy Class写在SE80中创建的代理类的名字
Logical Port自己取一个名字
Default Port记得打勾
然后创建,输入描述后保存激活。创建后可以查看一些参数配置,基本上默认就行
4.返回SE80查看一些属性。在刚才建的Proxy Class的类上双击,查看Generation。
第一行是你的Proxy Class类名
后边都是WebSerice接口相应的输入输出参数类型,一般名字会和接口的名字相关。
在第一行上双击进去可以看到所包含的的接口,这里有5个接口和1个构造函数。
三、程序部分
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.
四、运行效果:
这样就完成了一个SAP内置炒股软件,SAP真是无所不能啊:)