




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章 proxy(代理)的生成首先通過se80進(jìn)入到我們要創(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)下面的選擇界面:這個選擇界面中,如果我們自己的機(jī)器就是服務(wù)器,那么可以選擇Local File,然后給出WSDL文件所在地。不過
2、一般情況下,我們是通過URL/HTTP訪問WSDL文件的。這里,我得到的WSDL文件地址為:23/jfids/ChangePwService?wsdl我們需要先確認(rèn)這個鏈接的有效性,可以在瀏覽器中打開這個鏈接,如果鏈接有效,則我們可以看到對應(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ù),此時會出現(xiàn)確認(rèn)信息:完成后,會看到workbench request,設(shè)置請求號和描述:然后我們會發(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)會列出新生成的proxy類型以及其需要的數(shù)據(jù)類型(也就是前面指的輸入數(shù)據(jù)類型、輸出數(shù)據(jù)類型):我們可以通過雙擊proxy類型,察看這個類
4、包含的屬性和方法。這里,我們可以看到ZCMIS_CO_CHANGE_PW_SERVICE包含了一個構(gòu)造函數(shù)和一個SET_PW_DATA方法:雙擊任意方法,就可以看到它的代碼。這里,我雙擊了構(gòu)造函數(shù)(CONSTRUCTOR),可看到該構(gòu)造函數(shù)需要文件名和邏輯端口號,以后的內(nèi)容我們將介紹邏輯端口號的配置和使用:同樣,我們在Used Objects中除了察看ZCMIS_CO_CHANGE_PW_SERVICE的屬性和方法之外,還可以察看其輸入、輸出數(shù)據(jù)的細(xì)節(jié),以輸入數(shù)據(jù)為例,雙擊ZCMIS_SET_PW_DATA:可以看到,ZCMIS_SET_PW_DATA是一個結(jié)構(gòu),包含了CONTROLLER、A
5、RG0、ARG1、ARG2四個元素。其中CONTROLLER用于控制其它元素的格式,另外三個元素則來源于外部的Web Service。此處它們對應(yīng)的是userID、oldPassword、newPassword三個數(shù)值。CONTROLLER是PRXCTRLTAB類型,即一個由PRXCTRL類型的數(shù)據(jù)組成的表格。PRXCTRL類型叫做輸入格式控制,包含兩個字段:FIELD和VALUE。其中,F(xiàn)IELD對應(yīng)著被控制的字段名稱,VALUE通過不同值控制對應(yīng)字段的輸入格式(通常為1),羅列如下:1Initial Value初始化,比如數(shù)字為0,日期為0000-00-00等2xsi:nil=truexm
6、l節(jié)點(diǎn)元素可為空3Hide隱藏第二章 設(shè)置邏輯端口上一章我們在察看ZCMIS_CO_CHANGE_PW_SERVICE類的CONSTRUCTOR(構(gòu)造函數(shù))的時候,看到有個參數(shù)叫做邏輯端口,邏輯端口可以用于軟件之間的數(shù)據(jù)交互,也可用于連接物理端口(比如打印機(jī))。下面我們將配置ZCMIS_CO_CHANGE_PW_SERVICE需要的邏輯端口。使用事務(wù)代碼lpconfig可以進(jìn)入管理邏輯端口的界面:輸入代理類名稱,邏輯端口名稱(這個可以自己命名,比如我們的邏輯端口用HTTP協(xié)議、80端口連接CMIS系統(tǒng),所以邏輯端口名稱就為CMIS_HTTP80)。如果該類沒有缺省端口,需要選中缺省端口,這樣才
7、能在構(gòu)造函數(shù)沒有指明端口的情況下會將缺省端口作為邏輯端口。選擇中間的創(chuàng)建,進(jìn)入編輯界面。在描述一欄,我們可以給出中文的信息,比如“員工自助修改密碼”。運(yùn)行時間一欄,我們需要選擇Web服務(wù)基礎(chǔ)結(jié)構(gòu)。然后在調(diào)用參數(shù)一欄,我們需要給出URL地址,即前面提到的23/jfids/ChangePwService?wsdl:保存設(shè)置,會出現(xiàn)customizing request,設(shè)置請求號與描述:激活設(shè)置,即完成了邏輯端口配置。第三章 調(diào)用Web Service的代碼介紹這里依然將以員工自助密碼修改的功能為例,我為這個功能編寫的ABAP代碼名為:ZHR_PASSWORD_CHA
8、NGE。代碼內(nèi)容如下(需要重點(diǎn)關(guān)注的部分,我將以加粗字體進(jìn)行介紹):*&-*&ReportZHR_PASSWORD_CHANGE*&*&-*&本程序用于員工PORTAL密碼修改*&該界面獲取用戶輸入的舊密碼、新密碼信息后,通過調(diào)用WebService對這些數(shù)據(jù)進(jìn)行*&處理,完成更新密碼的工作*&WebService對應(yīng)類型為ZLP01CO_CHANGE_PW_SERVICE:*&輸入為結(jié)構(gòu)ZLP01GET_STRING,含三個字段:*&arg0:用戶ID*&arg1:舊密碼*&arg2:新密碼*&輸出為結(jié)構(gòu)ZLP01GET_STRING_RESPONSE,含一個字段:*&return:計(jì)算結(jié)果
9、,success為成功,fail為失敗*&更多詳情請參看其他注釋*&-*&-*&變量定義部分*&-*REPORTZHR_PASSWORD_CHANGE.DATA:ok_codeTYPEsy-ucomm,用戶操作useridTYPEsy-uname.用戶IDDATA:pre_password_str(24)TYPEc,對應(yīng)0100屏幕第一行文本框new_password_str1(24)TYPEc,對應(yīng)0100屏幕第二行文本框new_password_str2(24)TYPEc.對應(yīng)0100屏幕第三行文本框DATA:webservice_proxyWebService代理對象TYPEREFTOZ
10、CMIS_CO_CHANGE_PW_SERVICE,WebService代理類型webservice_inputTYPEZCMIS_SET_PW_DATA,輸入?yún)?shù)包,包含了三個參數(shù)webservice_outputTYPEZCMIS_SET_PW_DATA_RESPONSE,返回值包,包含了返回值wa_inputLIKEprxctrl.輸入格式控制DATA:webservice_sys_errorTYPEREFTOcx_ai_system_fault,系統(tǒng)錯誤webservice_app_errorTYPEREFTOcx_ai_application_fault.應(yīng)用錯誤DATA:new_p
11、assword_lengthTYPEi,新密碼長度digit_countTYPEi.新密碼包含數(shù)字的位數(shù)我們在se80中利用外部鏈接23/jfids/ChangePwService?wsdl 定義好了ZCMIS_CO_CHANGE_PW_SERVICE類,這里的webservice_proxy即該類的對象。在第一章中,我們知道這個類的SET_PW_DATA方法的輸入數(shù)據(jù)類型為ZCMIS_SET_PW_DATA(含有CONTROLLER、ARG0、ARG1、ARG2四個字段)、返回?cái)?shù)據(jù)類型為ZCMIS_SET_PW_DATA_RESPONSE(含有CONTROLLE
12、R、RETURN兩個字段),所以這里需要專門定義webservice_input、webservice_output作為輸入、輸出的對象。wa_input類型為prxctrl(參見第一章的內(nèi)容),CONTROLLER字段就是通過一組prxctrl數(shù)據(jù)來對各個字段進(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對話框主標(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)錯誤則清空輸入欄以便重新輸入*&-*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ù)字,請重新輸入.ELSE.將三
16、個參數(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提示無效操作密碼長度不能小于6位,請重新輸入.PERFORMreset.ENDIF.ELSE.popup提示無效操作兩次輸入新密碼必須相同,請重新輸入.PERFORMreset.ENDIF.ENDFORM.在第一章中我們知道輸入數(shù)據(jù)除CONTROLLER外,真正輸送到Web Service一端的是ARG0、ARG1、ARG2三個字段,這里,我
18、們通過wa_input對三個字段分別進(jìn)行輸入控制的設(shè)置,并將設(shè)置存放進(jìn)CONTROLLER字段。ARG0、ARG1、ARG2三個字段均為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消息修改成功請按確認(rèn)關(guān)閉對話框.PERFORMreset.ELSEIFwebservice_output-return=fail.popup消息修改失敗請檢查您的輸入.PERFORMr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 燒烤業(yè)網(wǎng)紅店區(qū)域代理合作協(xié)議范本
- 能源監(jiān)測數(shù)據(jù)實(shí)時采集與處理協(xié)議
- 社區(qū)共享廚房加盟店加盟店市場調(diào)研與競爭分析協(xié)議
- 資產(chǎn)評估機(jī)構(gòu)合伙人合作協(xié)議及保密責(zé)任承諾書
- 建筑節(jié)能改造工程全過程審計(jì)監(jiān)管協(xié)議
- 2025年中國白皮杉醇行業(yè)市場規(guī)模調(diào)研及投資前景研究分析報告
- 生物農(nóng)藥田間試驗(yàn)技術(shù)支持與成果轉(zhuǎn)化協(xié)議
- 網(wǎng)絡(luò)數(shù)據(jù)恢復(fù)硬盤租賃與數(shù)據(jù)恢復(fù)技術(shù)培訓(xùn)合同
- 跨境電商平臺客服外包及售后服務(wù)合同
- 智能倉儲物流標(biāo)準(zhǔn)補(bǔ)充協(xié)議
- 2025年上半年酒店市場營銷部工作總結(jié)與下半年計(jì)劃
- 多元金融行業(yè):期貨行業(yè)專題報告:行業(yè)邏輯趨完善乘風(fēng)破浪終有時311mb
- 2025屆山東省濟(jì)南市高三二模歷史試題(含答案)
- 第七單元 第1課時 從不同位置觀察物體(大單元教學(xué)設(shè)計(jì)) 一年級數(shù)學(xué)下冊 (蘇教版2025)
- 2025年環(huán)境管理體系審核員考試試題及答案
- 樓梯 欄桿 欄板(一)22J403-1
- 塑膠原料來料檢驗(yàn)報告
- 一級病原微生物實(shí)驗(yàn)室危害評估報告
- 2006年工資標(biāo)準(zhǔn)及套改對應(yīng)表
- DBJ∕T 13-183-2014 基樁豎向承載力自平衡法靜載試驗(yàn)技術(shù)規(guī)程
- 張雙樓煤礦安全評價報告(出版稿10.14)
評論
0/150
提交評論