ABAP 建立並呼叫WebService
有兩種方式建立webservice,一種是在se80中使用wizard生成,另一種是直接在se37中給予function生成,具體操作如下:
1.se80中Create-->Enterprise Service/Web Service --> Web Servcie
維護service名,選擇一個poit type(type point為一個功能點:如,Bapi中的Method,FunctionGroup中的一個function,一個function或者Message Interface:XI)
2.se37 Utility--> More Utility --> Create WebService -->From the Function Module
在建立完成的時候可以選擇立刻release,否則需要在wsconfig中進行release。
二 WSASMIN(WebService Administration)
Tcode:wsadmin
選中剛剛建立的Webservice ,可以有兩種操作測試webservice
1.點選Ctrl+F8 --> 進入WebService HomePage(可以預覽webservice傳送接收的資料)
2.點選Ctrl+F1 --> 預覽WSDL文件
三 在Wsconfig中設定Logon Data
輸入Service Definition , 並填寫一個Variant,點選新建
Create --> ICF Detail -->在Servcie列表中選擇需要設定Logo Data的Service,雙擊,在logon data的tab頁中設定logo data(設定了logon data的service在呼叫時就不會在彈出logon對話方塊)
(tcode : SICF 可以直接進入Maintain Service)
四 在ABAP中呼叫Webservice
1.建立Proxy
se80 --> Create --> Enterprice Service --> Proxy
在Proxy中指定wsdl連線
2. 建立Logical Port (tcode:lpconfig)
輸入Logical Port,指定Proxy Class,點選新建。
3.建立程式
在se80中,將Proxy拖入到workbench中,自動生成程式碼框架,根據自己需求進行簡單的修改,程式碼示例如下:
REPORT zws_flight_gl.
DATA: g_proxy TYPE REF TO zglco_zgl_flight .
TRY.
CREATE OBJECT g_proxy
EXPORTING logical_port_name = 'ZGLPORT_FLIGHT'
.
CATCH cx_ai_system_fault .
ENDTRY.
DATA: output TYPE zglflight_get_list_response .
DATA: input TYPE zglflight_get_list .
input-max_rows = 10 .
TRY.
CALL METHOD g_proxy->flight_get_list
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.
DATA : ls_sflight TYPE zglbapisfldat.
DATA : lt_sflight TYPE zglbapisfldat_tab .
lt_sflight = output-flight_list-item .
LOOP AT lt_sflight INTO ls_sflight .
WRITE : ls_sflight-airlineid , ls_sflight-airline ,
ls_sflight-connectid , ls_sflight-flightdate ,
ls_sflight-airportfr , ls_sflight-cityfrom ,
ls_sflight-airportto , ls_sflight-cityto ,
ls_sflight-deptime , ls_sflight-arrtime ,
ls_sflight-arrdate , ls_sflight-price ,
ls_sflight-curr , ls_sflight-curr_iso .
ULINE .
ENDLOOP.