這篇文章主要介紹“ABAP編程環(huán)境里怎么消費(fèi)第三方服務(wù)”,在日常操作中,相信很多人在ABAP編程環(huán)境里怎么消費(fèi)第三方服務(wù)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ABAP編程環(huán)境里怎么消費(fèi)第三方服務(wù)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
靈山網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,靈山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為靈山成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的靈山做網(wǎng)站的公司定做!
在ABAP On-Premises環(huán)境下,使用ABAP編程消費(fèi)第三方服務(wù),相信很多ABAP顧問(wèn)都已經(jīng)非常熟悉了,無(wú)非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT來(lái)發(fā)送和接收HTTP請(qǐng)求。
下圖這短短的38行代碼,展示了如何使用ABAP工具類CL_HTTP_CLIENT去訪問(wèn)百度首頁(yè)并拿到回復(fù)。
從百度返回的響應(yīng),通過(guò)方法GET_CDATA獲得,存儲(chǔ)于變量rv_data內(nèi):
當(dāng)然如果我們是做正式的產(chǎn)品開發(fā)的話,一般不會(huì)把第三方服務(wù)的URL硬編碼在應(yīng)用程序里,而是通過(guò)事務(wù)碼SM59創(chuàng)建的Destination管理第三方服務(wù)的endpoint,然后把Destination名稱存儲(chǔ)于配置表里,這樣使得第三方服務(wù)的URL同應(yīng)用代碼解除耦合關(guān)系。
下圖是一個(gè)例子,我在SM59事務(wù)碼里維護(hù)了一個(gè)指向某C4C系統(tǒng)的Destination,取名為C4C:
然后在ABAP代碼里使用cl_http_client=>create_by_destination創(chuàng)建HTTP工具類的實(shí)例。后續(xù)操作同使用cl_http_client=>create_by_url構(gòu)造實(shí)例的代碼一致,這里不再重復(fù)。
如果我們直接把On-Premises環(huán)境下的這些ABAP代碼搬到SAP Cloud Platform的ABAP環(huán)境里,會(huì)遇到很多語(yǔ)法錯(cuò)誤:
原因在Jerry的第一篇介紹SAP云平臺(tái)ABAP編程環(huán)境的文章 在SAP云平臺(tái)ABAP編程環(huán)境上編寫第一段ABAP程序 里就已經(jīng)提到,云端的ABAP編程模型支持的只是ABAP編程語(yǔ)言的一個(gè)子集,我們只能使用SAP開放的白名單里的資源,這個(gè)白名單即上圖左邊Released Objects里面包含的內(nèi)容。
因?yàn)镴erry在On-Premises環(huán)境里使用過(guò)的CL_HTTP_CLIENT, CL_REST_HTTP_CLIENT, IF_HTTP_CLIENT等ABAP類和接口均不在白名單內(nèi),故無(wú)法在ABAP云端環(huán)境使用。
既然在云端了,我們就得使用云端的編程范式。
Jerry去年的文章使用Java+SAP云平臺(tái)+SAP Cloud Connector調(diào)用ABAP On-Premise系統(tǒng)里的函數(shù) 里曾經(jīng)介紹過(guò)運(yùn)行在云端的Java應(yīng)用如何通過(guò)SAP云平臺(tái)上創(chuàng)建的Destination來(lái)調(diào)用ABAP On-Premises系統(tǒng)里的RFC函數(shù)。如今我們?cè)谠粕线\(yùn)行的應(yīng)用的編程語(yǔ)言從Java換成了ABAP,然而借助Destination進(jìn)行第三方服務(wù)調(diào)用的思路仍然不變。
Jerry先把正確答案公布出來(lái),在SAP Cloud Platform ABAP編程環(huán)境訪問(wèn)第三方服務(wù)的代碼如下:
可以看到其思路就是通過(guò)CL_HTTP_DESTINATION_PROVIDER這個(gè)云端的Destination工廠類,拿到Destination實(shí)例,然后基于該實(shí)例創(chuàng)建云端上的ABAP HTTP客戶端實(shí)例。工廠類生產(chǎn)Destination實(shí)例需要兩個(gè)參數(shù):
i_name
i_service_instance_name
根據(jù)這個(gè)方法的接口注釋,這兩個(gè)參數(shù)分別為Destination的名稱和Service instance的名稱。下面Jerry介紹如何獲得這兩個(gè)參數(shù)的值。
在SAP Cloud Platform Service Marketplace里創(chuàng)建一個(gè)新的Destination實(shí)例:
我們把新建的實(shí)例取名為DestService,然后再基于該實(shí)例創(chuàng)建一個(gè)Destination配置,這個(gè)配置就好比我們?cè)贏BAP On-Premises的SM59事務(wù)碼里創(chuàng)建的Destination:
Destination我取名為ZJERRY_API, 這就是前面提到的工廠方法里第一個(gè)參數(shù)i_name值的由來(lái)。
點(diǎn)擊Check Connection,確保該Destination指向的URL可以訪問(wèn):
然后點(diǎn)擊Open Dashboard,打開這個(gè)SAP Cloud Platform ABAP實(shí)例的Fiori界面:
點(diǎn)擊Launchpad tile,創(chuàng)建一個(gè)新的Communication Arrangements:
需要為新建的Communication Arrangement選擇一個(gè)Communication Scenario,這里我選擇SAP標(biāo)準(zhǔn)發(fā)布的專門用于CloudFoundry環(huán)境同第三方服務(wù)進(jìn)行集成的場(chǎng)景,ID為SAP_COM_0276:
創(chuàng)建Communication Arrangement時(shí)還要維護(hù)Service Key信息:
這個(gè)Service Key的信息可以從Destination實(shí)例列表的Service Key維護(hù)界面獲得:
在創(chuàng)建好的Communication Arrangement里,維護(hù)Service Instance Name的值為jerry-service-instance, 這也就是ABAP代碼里傳給工廠方法的第二個(gè)參數(shù)。
執(zhí)行這個(gè)ABAP類:
獲得期望的輸出:
到此,關(guān)于“ABAP編程環(huán)境里怎么消費(fèi)第三方服務(wù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!