溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ABAP基礎(chǔ)知識有哪些

發(fā)布時間:2021-12-29 17:12:00 來源:億速云 閱讀:147 作者:iii 欄目:服務(wù)器

本篇內(nèi)容介紹了“ABAP基礎(chǔ)知識有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

什么是ABAP Netweaver應(yīng)用服務(wù)器?

SAP Netweaver應(yīng)用服務(wù)器是SAP ABAP應(yīng)用開發(fā)和運行平臺,ABAP開發(fā)人員在上面可以專注于具體業(yè)務(wù)邏輯的開發(fā),凡涉及到更底層的基礎(chǔ)設(shè)施相關(guān)任務(wù),比如請求的負載均衡,進程的派生,同步和調(diào)度,內(nèi)存管理,服務(wù)器多實例間緩存同步等等,統(tǒng)統(tǒng)交由Netweaver平臺本身處理。如此一來,一個ABAP開發(fā)人員,即使不具備精深的計算機組成原理,操作系統(tǒng),計算機網(wǎng)絡(luò)等領(lǐng)域知識,也能勝任SAP應(yīng)用的開發(fā)工作。

ABAP Netweaver應(yīng)用服務(wù)器和SAP解決方案的關(guān)系?

本文討論的SAP解決方案,僅限于那些基于ABAP技術(shù)棧的SAP產(chǎn)品。

Google里根據(jù)關(guān)鍵字"SAP ABAP three layer"搜索,能找到很多基于ABAP技術(shù)的SAP解決方案的三層經(jīng)典架構(gòu)圖:

ABAP基礎(chǔ)知識有哪些

隨便點開一張查看:

ABAP基礎(chǔ)知識有哪些

SAP客戶位于圖中最上面的展現(xiàn)層(Presentation Layer),通過SAP GUI這個客戶端軟件或者瀏覽器訪問SAP系統(tǒng);

SAP系統(tǒng)的軟件,安裝在ABAP Netweaver服務(wù)器上,響應(yīng)用戶請求,完成對應(yīng)的業(yè)務(wù)邏輯。ABAP Netweaver服務(wù)器位于上圖中間的應(yīng)用層。

最底層是數(shù)據(jù)庫層,很多SAP產(chǎn)品都支持不同類型的數(shù)據(jù)庫,比如SAP HANA,Oracle數(shù)據(jù)庫,SQL Server等。

ABAP基礎(chǔ)知識有哪些

部分ABAP開發(fā)人員覺得,我們既然能夠直接在ABAP Netweaver里用OPEN SQL對數(shù)據(jù)庫表進行讀寫操作,那么Netweaver應(yīng)用服務(wù)器本身就包含了數(shù)據(jù)庫層。這樣理解其實不正確。我們在Netweaver SE38里編寫的OPEN SQL代碼,會通過Netweaver內(nèi)部的數(shù)據(jù)庫接口,轉(zhuǎn)換成數(shù)據(jù)庫提供商相關(guān)的原生SQL語句在數(shù)據(jù)庫里執(zhí)行,并且從最底層的數(shù)據(jù)庫層,到應(yīng)用層里的ABAP程序之間的數(shù)據(jù)傳輸,也是通過數(shù)據(jù)庫接口完成的。

ABAP基礎(chǔ)知識有哪些

本文討論的ABAP Netweaver服務(wù)器的組成部分,位于三層架構(gòu)中的應(yīng)用層。

ABAP Netweaver服務(wù)器實例

運行在物理機器上的ABAP應(yīng)用服務(wù)器,按照其用途的不同,又可分為兩種實例:應(yīng)用服務(wù)器實例和ABAP SAP中央服務(wù)實例(ABAP SAP Central Services instances, 縮寫為ASCS instances), 也就是下圖兩個灰色矩形框代表的實例。

ABAP基礎(chǔ)知識有哪些

一個典型的SAP系統(tǒng)一般由一到多個應(yīng)用服務(wù)器實例和一個ASCS實例組成。

從上圖左邊的矩形框里,能觀察到ABAP應(yīng)用服務(wù)器實例包含的主要組件有:

(1) Internet Communication Manager (ICM)

(2) ABAP dispatcher

(3) 工作進程

(4) RFC Gateway

(5) Start Service

下面是對這些組件的簡要介紹。

Internet Communication Manager (ICM)

ICM是Netweaver服務(wù)器里一個單獨的進程,由ABAP Dispatcher啟動并監(jiān)控,負責SAP系統(tǒng)和外部的網(wǎng)絡(luò)通信?;谑盏秸埱骍RL的解析,ICM會將請求分發(fā)給具體的handler進行處理。

ICM常用的與Internet交互的協(xié)議有HTTP,HTTPS,SMTP等。

下圖是ICM的架構(gòu)圖。

ABAP基礎(chǔ)知識有哪些

Thread Control:該線程負責接收外界請求,從ICM線程池中取出空閑的工作線程,將請求的上下文交給工作線程。

工作線程:負責請求的具體處理,包含一個I/O處理器,可以用來進行網(wǎng)絡(luò)的輸入和輸出操作。對于不同協(xié)議類型的請求,Thread Control會調(diào)度包含了對應(yīng)協(xié)議插件的工作線程。

Watchdog:如果一個工作線程在任務(wù)處理時出現(xiàn)了等待某個響應(yīng)直至超時的情況,Watchdog會將該工作線程釋放,避免其無限期的等待,這樣該工作線程可以服務(wù)于其他請求。而Watchdog會繼續(xù)等待尚未到來的響應(yīng)。其后如果響應(yīng)到達,Watchdog會通知Thread control, 后者會繼續(xù)調(diào)用新的工作線程來處理。

Signal Handler:處理來自操作系統(tǒng)或者其他進程的信號。

Connection Info: 這張表維護了每個連接的狀態(tài)信息,包括內(nèi)存管道等。

Memory Pipes:內(nèi)存管道是基于內(nèi)存的通訊數(shù)據(jù)結(jié)構(gòu),用于將ICM接收到的外部請求包含的數(shù)據(jù)轉(zhuǎn)交給工作線程。

Internet Server Cache:服務(wù)器端的緩存,對于重復(fù)的請求可以加快響應(yīng)速度。

ABAP Dispatcher和工作進程

二者的關(guān)系在下圖體現(xiàn)得很清晰,ABAP應(yīng)用服務(wù)器上運行著許多工作進程(Work Process),這些進程類型各異,負責處理各種類型不同的請求。

ABAP基礎(chǔ)知識有哪些

事務(wù)碼SM50里能看到當前應(yīng)用服務(wù)器上的工作進程明細,比如下圖顯示用于處理用戶普通事務(wù)請求的對話(Dialog)進程有30個,其中29個空閑;Update進程負責執(zhí)行數(shù)據(jù)庫的更新操作;Background進程處理后臺作業(yè),Spool負責打印任務(wù)。而ABAP里數(shù)據(jù)庫更新的操作有V1和V2兩種級別(平時大家用的默認都是V1級別),分別由下圖的Update和Update Task2兩種類型的工作進程完成。

ABAP基礎(chǔ)知識有哪些

Gateway

這里的Gateway和SAP Fiori里的Gateway系統(tǒng)是兩碼事,后者指代安裝了SAP_GWFND這個Software Component的ABAP應(yīng)用服務(wù)器,而我們現(xiàn)在即將討論的Gateway,是ABAP應(yīng)用服務(wù)器里的一個組件。

SAP系統(tǒng)之間,以及SAP系統(tǒng)與外部系統(tǒng)間通過基于TCP/IP的RFC(Remote Function Call,遠程系統(tǒng)調(diào)用)進行通信,而Gateway作為RFC調(diào)用分發(fā)的入口,如下圖所示:

ABAP基礎(chǔ)知識有哪些

值得一提的是,我們能夠在SAP標準程序里看到CALL FUNCTION 'XXX' DESTINATION 'NONE'的寫法,這種寫法使得函數(shù)XXX仍然在調(diào)用它的應(yīng)用服務(wù)器實例內(nèi)部執(zhí)行,而非在其他服務(wù)器上遠程執(zhí)行。那么這種寫法不是多此一舉嗎?

SAP官網(wǎng)對這種用法的解釋:Destination "NONE" has the effect that the function module is started on the same application server as the calling program, however through the RFC interface and in its own RFC context.

也就是說,通過這種方式調(diào)用的函數(shù),即便是和調(diào)用者同處一個應(yīng)用服務(wù)器實例內(nèi),也會像遠程調(diào)用執(zhí)行時一樣,到RFC接口即Gateway組件里去走一遭。

付出這種在額外協(xié)議棧上執(zhí)行開銷的代價,有什么收益?那得從ABAP Netweaver里不同類型的會話說起。我們每用SAP GUI登錄一次系統(tǒng),會在服務(wù)器上生成一個用戶會話(User Session). 每個User Session里通過命令行輸入/o可以生成新的ABAP會話,每個ABAP會話內(nèi)的程序調(diào)用生成新的內(nèi)部會話(Internal Session).

ABAP基礎(chǔ)知識有哪些

如果直接調(diào)用函數(shù)CALL FUNCTION 'XXX', 在發(fā)起該函數(shù)調(diào)用的同一ABAP會話內(nèi),會派生一個新的內(nèi)部會話去執(zhí)行函數(shù)體的邏輯。如果用CALL FUNCTION 'XXX' DESTINATION 'NONE', 則會派生一個全新的用戶會話,此時這個全新的用戶會話,和發(fā)起函數(shù)調(diào)用的原始用戶會話是完全隔離的,不共享任何數(shù)據(jù),參數(shù)傳遞也是通過RFC標準的參數(shù)傳遞方式進行。通過這種方式,能實現(xiàn)被調(diào)用函數(shù)和原始程序的異步調(diào)用效果,同時兩個用戶會話里的程序執(zhí)行完全隔離,不會彼此影響。

事務(wù)碼SM04能看到ABAP應(yīng)用服務(wù)器上所有的用戶會話。雙擊某一用戶會話,能看到該用戶會話派生的所有ABAP會話。

ABAP基礎(chǔ)知識有哪些

SAP Start Service

該服務(wù)運行在部署了SAP應(yīng)用服務(wù)器實例的服務(wù)器上,實現(xiàn)載體是Windows的系統(tǒng)服務(wù)(sapstartsrv.exe)和Unix系統(tǒng)的Daemon進程(sapstartsrv).

SAP Start Service實現(xiàn)的功能有:

(1) 啟動和終止SAP應(yīng)用服務(wù)器實例,及其運行狀態(tài)的監(jiān)控

(2) 應(yīng)用服務(wù)器日志,跟蹤和配置文件的讀取與管理

ABAP SAP中央服務(wù)實例(ABAP SAP Central Services instances, ASCS)

主要包含Enqueue服務(wù)器和消息服務(wù)器。

Enqueue Server

數(shù)據(jù)庫層面的鎖由數(shù)據(jù)庫管理,而ABAP應(yīng)用程序級別的鎖,比如鎖一個訂單,鎖一個物料主數(shù)據(jù),則通過應(yīng)用程序提出鎖申請,由Enqueue Server完成和管理鎖。應(yīng)用服務(wù)器實例上所有用戶當前會話持有的鎖,都維護在Enqueue服務(wù)器的鎖信息管理表中,該表維護在Enqueue服務(wù)器的內(nèi)存中,不會進行持久化,因此Enqueue服務(wù)器成為了ABAP系統(tǒng)的單點故障源之一:當Enqueue服務(wù)器由于各種原因運行時發(fā)生故障需要重啟時,維護在內(nèi)存中的鎖信息表的數(shù)據(jù)會丟失。

ABAP基礎(chǔ)知識有哪些

因此為了確保Enqueue服務(wù)器的高可用性,通常將其放到單獨的物理主機上部署,甚至引入遵循主從機制的多臺Enqueue服務(wù)器,將Master Enqueue服務(wù)器上的鎖信息管理表同步到其他Enqueue服務(wù)器上。

ABAP基礎(chǔ)知識有哪些

事務(wù)碼SM12查看某個用戶持有的應(yīng)用鎖:

ABAP基礎(chǔ)知識有哪些

SE11里打開任意一個鎖對象,點擊Lock Modules,進入自動生成的ABAP函數(shù)內(nèi)部,就可以了解鎖請求是如何從應(yīng)用服務(wù)器發(fā)送到Enqueue服務(wù)器的。

ABAP基礎(chǔ)知識有哪些

SAP Message Server

每個SAP系統(tǒng)只能包含一個消息服務(wù)器,該組件負責完成以下任務(wù):

(1) 作為SAP系統(tǒng)內(nèi)多個應(yīng)用服務(wù)器實例間通訊的中央渠道

(2) 對來自客戶端通過SAP GUI和SAP RFC登錄請求的負載分發(fā)

當一個應(yīng)用服務(wù)器實例啟動后,其Dispatcher進程就會聯(lián)系消息服務(wù)器,向其報告自己能夠提供的服務(wù)類型。

SAP系統(tǒng)的消息服務(wù)器地址,可以在SAP GUI里維護該系統(tǒng)登錄信息的Message Server字段里查詢到。

ABAP基礎(chǔ)知識有哪些

上圖我登錄的AG3系統(tǒng)有多個應(yīng)用服務(wù)器實例,我登錄的實例編號為54,使用事務(wù)碼SM53發(fā)現(xiàn)這個系統(tǒng)還有另外兩個實例,編號為55和56.

ABAP基礎(chǔ)知識有哪些

忽視SAP系統(tǒng)可以由多個應(yīng)用服務(wù)器實例組成這一點,有時候可能會遇到一些無法按照自己期望工作的場景.比如數(shù)據(jù)庫性能測量工具ST05,如果在實例A上打開跟蹤,而業(yè)務(wù)代碼實際執(zhí)行在實例B上,那么待分析性能的應(yīng)用執(zhí)行完畢后,在實例A上關(guān)閉跟蹤后,當然看不到性能數(shù)據(jù)。這種情況下,最保險的做法就是,在激活跟蹤時,選擇“在所有實例上”打開跟蹤開關(guān)。

ABAP基礎(chǔ)知識有哪些

“ABAP基礎(chǔ)知識有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI