![ABAP外調(diào)WebService過程介紹_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/be365af7-bc92-4dd3-874a-a9342454949d/be365af7-bc92-4dd3-874a-a9342454949d1.gif)
![ABAP外調(diào)WebService過程介紹_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/be365af7-bc92-4dd3-874a-a9342454949d/be365af7-bc92-4dd3-874a-a9342454949d2.gif)
![ABAP外調(diào)WebService過程介紹_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/be365af7-bc92-4dd3-874a-a9342454949d/be365af7-bc92-4dd3-874a-a9342454949d3.gif)
![ABAP外調(diào)WebService過程介紹_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/be365af7-bc92-4dd3-874a-a9342454949d/be365af7-bc92-4dd3-874a-a9342454949d4.gif)
![ABAP外調(diào)WebService過程介紹_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/be365af7-bc92-4dd3-874a-a9342454949d/be365af7-bc92-4dd3-874a-a9342454949d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章 proxy(代理)的生成首先通過se80進(jìn)入到我們要?jiǎng)?chuàng)建proxy(代理)的package(包)。以我的zhr_password_change程序?yàn)槔?,該程序的目的是幫助用戶修改密碼,所以進(jìn)入的是ZHR包。進(jìn)入ZHR包后,右鍵選擇Create - Enterprise Service / Web Service - Proxy Object,彈出如下選擇框:由于我們是外調(diào)Web Service,所以選擇Service Consumer選項(xiàng),并點(diǎn)擊繼續(xù)。隨后出現(xiàn)下面的選擇界面:這個(gè)選擇界面中,如果我們自己的機(jī)器就是服務(wù)器,那么可以選擇Local File,然后給出WSDL文件所在地。不過
2、一般情況下,我們是通過URL/HTTP訪問WSDL文件的。這里,我得到的WSDL文件地址為:23/jfids/ChangePwService?wsdl我們需要先確認(rèn)這個(gè)鏈接的有效性,可以在瀏覽器中打開這個(gè)鏈接,如果鏈接有效,則我們可以看到對(duì)應(yīng)的xml代碼:將有效的URL地址輸入,點(diǎn)擊繼續(xù),如圖:接下來要選擇package(包)和prefix(前綴),package即proxy(代理)所在的包,prefix即代理各種屬性(比如名稱)、包含數(shù)據(jù)類型(比如輸入數(shù)據(jù)類型、輸出數(shù)據(jù)類型)等的前綴,主要用于與系統(tǒng)變量進(jìn)行區(qū)分。我這里選擇的包是ZHR、前綴為ZCMIS_。輸入包
3、名、前綴后選擇繼續(xù),此時(shí)會(huì)出現(xiàn)確認(rèn)信息:完成后,會(huì)看到workbench request,設(shè)置請(qǐng)求號(hào)和描述:然后我們會(huì)發(fā)現(xiàn)package(包)里出現(xiàn)了Enterprise Service選項(xiàng),里面包含了代理類及其用到的數(shù)據(jù)類型。我們需要保存并激活Enterprise Service選項(xiàng):External View和Internal View分別展示了從被調(diào)用方和調(diào)用方看到的類的屬性,我們可以看到原函數(shù)名稱以及它在ABAP代碼中的名稱:Used Object選項(xiàng)會(huì)列出新生成的proxy類型以及其需要的數(shù)據(jù)類型(也就是前面指的輸入數(shù)據(jù)類型、輸出數(shù)據(jù)類型):我們可以通過雙擊proxy類型,察看這個(gè)類
4、包含的屬性和方法。這里,我們可以看到ZCMIS_CO_CHANGE_PW_SERVICE包含了一個(gè)構(gòu)造函數(shù)和一個(gè)SET_PW_DATA方法:雙擊任意方法,就可以看到它的代碼。這里,我雙擊了構(gòu)造函數(shù)(CONSTRUCTOR),可看到該構(gòu)造函數(shù)需要文件名和邏輯端口號(hào),以后的內(nèi)容我們將介紹邏輯端口號(hào)的配置和使用:同樣,我們?cè)赨sed Objects中除了察看ZCMIS_CO_CHANGE_PW_SERVICE的屬性和方法之外,還可以察看其輸入、輸出數(shù)據(jù)的細(xì)節(jié),以輸入數(shù)據(jù)為例,雙擊ZCMIS_SET_PW_DATA:可以看到,ZCMIS_SET_PW_DATA是一個(gè)結(jié)構(gòu),包含了CONTROLLER、A
5、RG0、ARG1、ARG2四個(gè)元素。其中CONTROLLER用于控制其它元素的格式,另外三個(gè)元素則來源于外部的Web Service。此處它們對(duì)應(yīng)的是userID、oldPassword、newPassword三個(gè)數(shù)值。CONTROLLER是PRXCTRLTAB類型,即一個(gè)由PRXCTRL類型的數(shù)據(jù)組成的表格。PRXCTRL類型叫做輸入格式控制,包含兩個(gè)字段:FIELD和VALUE。其中,F(xiàn)IELD對(duì)應(yīng)著被控制的字段名稱,VALUE通過不同值控制對(duì)應(yīng)字段的輸入格式(通常為1),羅列如下:1Initial Value初始化,比如數(shù)字為0,日期為0000-00-00等2xsi:nil=truexm
6、l節(jié)點(diǎn)元素可為空3Hide隱藏第二章 設(shè)置邏輯端口上一章我們?cè)诓炜碯CMIS_CO_CHANGE_PW_SERVICE類的CONSTRUCTOR(構(gòu)造函數(shù))的時(shí)候,看到有個(gè)參數(shù)叫做邏輯端口,邏輯端口可以用于軟件之間的數(shù)據(jù)交互,也可用于連接物理端口(比如打印機(jī))。下面我們將配置ZCMIS_CO_CHANGE_PW_SERVICE需要的邏輯端口。使用事務(wù)代碼lpconfig可以進(jìn)入管理邏輯端口的界面:輸入代理類名稱,邏輯端口名稱(這個(gè)可以自己命名,比如我們的邏輯端口用HTTP協(xié)議、80端口連接CMIS系統(tǒng),所以邏輯端口名稱就為CMIS_HTTP80)。如果該類沒有缺省端口,需要選中缺省端口,這樣才
7、能在構(gòu)造函數(shù)沒有指明端口的情況下會(huì)將缺省端口作為邏輯端口。選擇中間的創(chuàng)建,進(jìn)入編輯界面。在描述一欄,我們可以給出中文的信息,比如“員工自助修改密碼”。運(yùn)行時(shí)間一欄,我們需要選擇Web服務(wù)基礎(chǔ)結(jié)構(gòu)。然后在調(diào)用參數(shù)一欄,我們需要給出URL地址,即前面提到的23/jfids/ChangePwService?wsdl:保存設(shè)置,會(huì)出現(xiàn)customizing request,設(shè)置請(qǐng)求號(hào)與描述:激活設(shè)置,即完成了邏輯端口配置。第三章 調(diào)用Web Service的代碼介紹這里依然將以員工自助密碼修改的功能為例,我為這個(gè)功能編寫的ABAP代碼名為:ZHR_PASSWORD_CHA
8、NGE。代碼內(nèi)容如下(需要重點(diǎn)關(guān)注的部分,我將以加粗字體進(jìn)行介紹):*&-*&ReportZHR_PASSWORD_CHANGE*&*&-*&本程序用于員工PORTAL密碼修改*&該界面獲取用戶輸入的舊密碼、新密碼信息后,通過調(diào)用WebService對(duì)這些數(shù)據(jù)進(jìn)行*&處理,完成更新密碼的工作*&WebService對(duì)應(yīng)類型為ZLP01CO_CHANGE_PW_SERVICE:*&輸入為結(jié)構(gòu)ZLP01GET_STRING,含三個(gè)字段:*&arg0:用戶ID*&arg1:舊密碼*&arg2:新密碼*&輸出為結(jié)構(gòu)ZLP01GET_STRING_RESPONSE,含一個(gè)字段:*&return:計(jì)算結(jié)果
9、,success為成功,fail為失敗*&更多詳情請(qǐng)參看其他注釋*&-*&-*&變量定義部分*&-*REPORTZHR_PASSWORD_CHANGE.DATA:ok_codeTYPEsy-ucomm,用戶操作useridTYPEsy-uname.用戶IDDATA:pre_password_str(24)TYPEc,對(duì)應(yīng)0100屏幕第一行文本框new_password_str1(24)TYPEc,對(duì)應(yīng)0100屏幕第二行文本框new_password_str2(24)TYPEc.對(duì)應(yīng)0100屏幕第三行文本框DATA:webservice_proxyWebService代理對(duì)象TYPEREFTOZ
10、CMIS_CO_CHANGE_PW_SERVICE,WebService代理類型webservice_inputTYPEZCMIS_SET_PW_DATA,輸入?yún)?shù)包,包含了三個(gè)參數(shù)webservice_outputTYPEZCMIS_SET_PW_DATA_RESPONSE,返回值包,包含了返回值wa_inputLIKEprxctrl.輸入格式控制DATA:webservice_sys_errorTYPEREFTOcx_ai_system_fault,系統(tǒng)錯(cuò)誤webservice_app_errorTYPEREFTOcx_ai_application_fault.應(yīng)用錯(cuò)誤DATA:new_p
11、assword_lengthTYPEi,新密碼長(zhǎng)度digit_countTYPEi.新密碼包含數(shù)字的位數(shù)我們?cè)趕e80中利用外部鏈接23/jfids/ChangePwService?wsdl 定義好了ZCMIS_CO_CHANGE_PW_SERVICE類,這里的webservice_proxy即該類的對(duì)象。在第一章中,我們知道這個(gè)類的SET_PW_DATA方法的輸入數(shù)據(jù)類型為ZCMIS_SET_PW_DATA(含有CONTROLLER、ARG0、ARG1、ARG2四個(gè)字段)、返回?cái)?shù)據(jù)類型為ZCMIS_SET_PW_DATA_RESPONSE(含有CONTROLLE
12、R、RETURN兩個(gè)字段),所以這里需要專門定義webservice_input、webservice_output作為輸入、輸出的對(duì)象。wa_input類型為prxctrl(參見第一章的內(nèi)容),CONTROLLER字段就是通過一組prxctrl數(shù)據(jù)來對(duì)各個(gè)字段進(jìn)行輸入控制的。*&-*&模塊定義部分*&status_0100:屏幕運(yùn)行前,設(shè)置工具欄、標(biāo)題*&user_command_0100:屏幕運(yùn)行后,根據(jù)用戶命令進(jìn)行操作*&-*MODULEstatus_0100OUTPUT.SETPF-STATUSSTATUS_0100.設(shè)置工具欄SETTITLEBARTITLE_0100.設(shè)置標(biāo)題END
13、MODULE.MODULEuser_command_0100INPUT.CASEsy-ucomm.WHENPERFORM.執(zhí)行PERFORMread_text.PERFORMcompare_newpassword.WHENEXIT.退出LEAVEPROGRAM.ENDCASE.ENDMODULE.*&-*&宏定義部分*&-*DEFINEpopup.CALLFUNCTIONPOPUP_TO_CONFIRM_WITH_MESSAGEEXPORTINGTITEL=&1對(duì)話框主標(biāo)題DIAGNOSETEXT1=&2抬頭TEXTLINE1=&3.正文END-OF-DEFINITION.*&-*&函數(shù)定義部
14、分*&read_text:讀取需要的數(shù)據(jù)*&compare_newpassword:比較兩次輸入的新密碼,不同則重新輸入,相同則繼續(xù)執(zhí)行*&check_digit:檢查新輸入的密碼有多少數(shù)字,用于檢查密碼復(fù)雜度*&execute:執(zhí)行外部WebService的get_string函數(shù)*&reset:出現(xiàn)錯(cuò)誤則清空輸入欄以便重新輸入*&-*FORMread_text.userid=sy-uname.讀取登陸用戶pre_password_str=pre_password_str.讀取用戶輸入的舊密碼new_password_str1=new_password_str1.讀取用戶輸入的新密碼new_
15、password_str2=new_password_str2.讀取再次輸入的新密碼new_password_length=strlen(new_password_str1).digit_count=0.ENDFORM.FORMcompare_newpassword.IFnew_password_str1=new_password_str2.IFnew_password_length5.PERFORMcheck_digit.IFdigit_count=new_password_lengthORdigit_count=0.popup提示無效操作新密碼必須包含字母和數(shù)字,請(qǐng)重新輸入.ELSE.將三
16、個(gè)參數(shù)轉(zhuǎn)換為函數(shù)設(shè)定的structurewa_input-field=ARG0.wa_input-value=1.APPENDwa_inputTOwebservice_input-controller.wa_input-field=ARG1.wa_input-value=1.APPENDwa_inputTOwebservice_input-controller.wa_input-field=ARG2.wa_input-value=1.APPENDwa_inputTOwebservice_input-controller.CLEARwa_input.webservice_input-arg0=u
17、serid.webservice_input-arg1=pre_password_str.webservice_input-arg2=new_password_str1.執(zhí)行g(shù)et_StringPERFORMexecute.ENDIF.ELSE.popup提示無效操作密碼長(zhǎng)度不能小于6位,請(qǐng)重新輸入.PERFORMreset.ENDIF.ELSE.popup提示無效操作兩次輸入新密碼必須相同,請(qǐng)重新輸入.PERFORMreset.ENDIF.ENDFORM.在第一章中我們知道輸入數(shù)據(jù)除CONTROLLER外,真正輸送到Web Service一端的是ARG0、ARG1、ARG2三個(gè)字段,這里,我
18、們通過wa_input對(duì)三個(gè)字段分別進(jìn)行輸入控制的設(shè)置,并將設(shè)置存放進(jìn)CONTROLLER字段。ARG0、ARG1、ARG2三個(gè)字段均為String型,可以直接賦值,所以我們是直接將用戶ID、舊密碼、新密碼賦值給它們。FORMcheck_digit.DATA:indexTYPEi.index=0.WHILEindex=0ANDnew_password_str1+index(1)SET_PW_DATAEXPORTINGinput=webservice_inputIMPORTINGoutput=webservice_output.CATCHcx_ai_system_faultINTOwebservice_sys_error.CATCHcx_ai_application_faultINTOwebservice_app_error.ENDTRY.結(jié)果為success則成功,為fail則失敗IFwebservice_output-return=success.popup消息修改成功請(qǐng)按確認(rèn)關(guān)閉對(duì)話框.PERFORMreset.ELSEIFwebservice_output-return=fail.popup消息修改失敗請(qǐng)檢查您的輸入.PERFORMr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國半導(dǎo)體用水溶性助焊劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國第一人稱視角射擊游戲行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國HDPE模制容器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國茂金屬線型低密度聚乙烯樹脂行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 合同起草范本
- 汽車自駕租賃合同
- 房屋委托代管合同
- 2025贈(zèng)與合同公證書
- 維修工聘用合同范本
- 收獲成長(zhǎng)迎接新起點(diǎn)主題班會(huì)
- 2024年江西省南昌市南昌縣中考一模數(shù)學(xué)試題(含解析)
- 繪本的分鏡設(shè)計(jì)-分鏡的編排
- 查干淖爾一號(hào)井環(huán)評(píng)
- 體檢中心分析報(bào)告
- 人教版初中英語七八九全部單詞(打印版)
- 臺(tái)球運(yùn)動(dòng)中的理論力學(xué)
- 最高人民法院婚姻法司法解釋(二)的理解與適用
- 關(guān)于醫(yī)保應(yīng)急預(yù)案
- 新人教版五年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題大全doc
- 2022年版義務(wù)教育勞動(dòng)課程標(biāo)準(zhǔn)學(xué)習(xí)培訓(xùn)解讀課件筆記
- 2022年中國止血材料行業(yè)概覽:發(fā)展現(xiàn)狀對(duì)比分析研究報(bào)告(摘要版) -頭豹
評(píng)論
0/150
提交評(píng)論