sap与webserver(client)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.在Web servers与外部系统进行数据交换时,可以快捷,方面进行数据交换,SAP系统中RFC经Web servers的封装后,可以减少ABAP和外围系统的开发量。
经在福建电力系统的接口开发中的实践,效果非常的好。
2.前提条件:
(1)SAP 系统必需按装WEB application service 6.4版本以上的服务,或SAP XI 3.0版本以上的组件。
(2)在福建电力项目上,没有安装SAP XI 。
系统SAP webAS 是SAPWeb 6.4 以上,通过SOAP 的协议进行数据的交换。
Prerequisites for Using the Various Runtime Components
3.WEB service 的开发分两大块:SAP调用外围系统的WEB service,SAP 的RFC经WEB service封装后给外围系统调用。
4.介绍SAP调用外围系统的WEB service.
(1)SE80 创建proxy object
在Enterprise Service 下会产生Clint Proxies 及 Data Types 两目录
必须先创建代理类,然后跟据代理类创建逻辑端口
(3)调用的方法如下:
PROGRAM Z_TEST_LJN006.
DATA: PROXY TYPE REF TO ZCO_HELLO_WORLD.
DATA: PARAM type ZSAY_HI1.
DATA: RESPONSE type ZSAY_HI_RESPONSE1.
DATA: EXP type STRING.
DATA: EXCEPTION TYPE REF TO CX_AI_SYSTEM_FAULT.
START-OF-SELECTION.
TRY.
CREATE OBJECT PROXY
EXPORTING
LOGICAL_PORT_NAME = 'TESTEAI'.
CATCH CX_AI_SYSTEM_FAULT .
WRITE / 'CX_AI_SYSTEM_FAULT FROM CREATE OBJECT'. ENDTRY.
IF NOT PROXY IS INITIAL.
PARAM-PARAMETERS-TEXT = 'AAAAAAA'.
TRY.
CALL METHOD PROXY->SAY_HI
EXPORTING
SAY_HI = PARAM
IMPORTING
SAY_HI_RESPONSE = RESPONSE.
CATCH CX_AI_SYSTEM_FAULT INTO EXCEPTION.
CALL METHOD EXCEPTION->IF_MESSAGE~GET_LONGTEXT
RECEIVING
RESULT = EXP.
WRITE: / 'CX_AI_SYSTEM_FAULT FROM SAY_HI:', EXP. CATCH CX_AI_APPLICATION_FAULT .
WRITE: / 'CX_AI_APPLICATION_FAULT FROM SAY_HI'. ENDTRY.
WRITE / RESPONSE-PARAMETERS-RETURN.
ELSE.
WRITE / 'PROXY OBJECT IS INITIAL'.
ENDIF.
另外一种方法写代码
(此种方法:不必创建proxy object及逻辑端口)
*&---------------------------------------------------------------------*
*& Report ZTEST_WEBSERVICE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zvalidate_email.
PARAMETERS: p_mail(100) LOWER CASE. " E-Mail id to be verified
DATA: http_client TYPE REF TO if_http_client .
DATA: w_string TYPE string ,
w_result TYPE string ,
r_str TYPE string .
DATA: result_tab TYPE TABLE OF string.
START-OF-SELECTION .
CLEAR w_string .
* CONCATENATE
*
'/ValidateEmail.asmx/IsValidEmail?Email =' p_mail
* INTO
*http://192.168.101.127:8080/HelloWorld?wsdl
* w_string =
'http://192.168.101.83:8080/HelloWorld/sayHi?text=qqq'.
w_string =
'http://192.168.101.127:8080/HelloWorld/sayHi?text=qqq'.
* w_string = ''.
* w_string =
'/ValidateEmail.asmx/IsValidEmail?Email = wkq@'.
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = w_string
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2.
*
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
*
CLEAR w_result .
w_result = http_client->response->get_cdata( ).
REFRESH result_tab .
SPLIT w_result AT cl_abap_char_utilities=>cr_lf INTO TABLE result_tab .
READ TABLE result_tab INTO r_str INDEX 2.
IF r_str = 't'.
WRITE:/ 'Valid email address'.
ELSE.
WRITE:/ 'Invalid email address'.
ENDIF.。