SAP RFC


什么是RFC?

 RFCSAP系統和其他(SAP或非SAP)系統間的一個重要而常用的雙向接口技術,也被視為SAP與外部通信的基本協議。簡單地說,RFC過程就是系統調用當前系統外的程序模塊,從而實現某個功能,而且調用系統和被調用系統中至少有一個必須是SAPABAP系統。這種遠程功能調用也可在同一系統內部進行(如本地SAP系統內的遠程調用);但通常情況下,調用程序和被調用程序處於不同系統。

RFC調用過程

     在系統間通信過程中,需區分發送系統和接受系統。RFC調用請求從發送系統(調用系統)中傳至接收系統(被調用系統,也稱遠程系統或目標系統),發送請求的系統在通信過程中又稱為RFC客戶端,通信另一方則稱為RFC服務器。RFC客戶端發起遠程功能調用以執行RFC服務器提供的功能。

    其中,調用系統和被調用系統均可以是SAP系統和非SAP系統,此外還可以在SAP系統內部將特定應用服務器指定為目標系統。

RFC通信的情況

    根據通信方向和系統類型,共有如下三種RFC通信:

    *兩個獨立的SAP系統之間的通信;

    *SAPA系統作為調用系統,與外部遠程系統(非SAP ABAP系統)通信;

    *外部系統作為調用系統,與SAP系統通信。

 RFC接口系統

    SAP調用遠程功能的能力是通過RFC接口系統(RFC interface system)實現的。根據調用方向的不同(SAP系統調用其他模塊或其他系統調用SAP模塊),RFC接口提供以下兩種服務。

(1)ABAP程序的調用接口

(2)非SAP ABAP程序的調用接口。

 RFC通信模式

同步通信和異步通信:同步通信時間上允許誤差較小,異步通信時間上允許一定的誤差。

同步調用的優缺點:

1)優點:可以及時將數據返還給發送系統;

2)缺點:系統對話時必須保證兩個系統處於活動狀態,否則對話出現中斷,影響業務應用的處理。

異步調用的優缺點:

1)優點:不需要接收系統隨時可用,如系統升級、維護等不影響請求發送系統的業務處理;

2)缺點:不適用於要求及時響應的處理過程。

 

RFC版本包含的五種版本?

1、同步RFC(sRFC, synchronous RFC)是RFC的第一個版本,它要求連接的雙方是同步的工作方式,即都是在可用狀態才能夠實現成功調用。

 2、異步RFC(aRFC,asynchronous RFC)這種RFC可以實現異步的RFC調用方式,它可以進行多個並發調用,並且不要求被調用系統的可用狀態。發出調用系統會一直嘗試直到獲得被調用系統的應答。它通常用於當你需要提高系統並行調用多個RFC的效率,相對於強制等待程序的結果,它的效率更高。

3、事物RFC(tRFC,transactional RFC)是對aRFC進行相關技術改進后的一個RFC版本,其於aRFC相同點是實現異步調用,其優點是可以將多個調用進行LUW分組處理,並只執行一次運行。現在aRFC基本上已經停用

4、隊列RFC(qRFC,queue(d) RFC)是tRFC的一個增強版本,它保證了所傳輸數據的處理次序,並可用於SAP-SAP及SAP-non SAP。

5、並行RFC(pRFC,Parallel RFC)是一種特殊的RFC,它是aRFC的一種擴展類型。因為它改善了系統的性能,在執行大量的aRFC時。SAP使用它在MRP里面提高速度。但是它只能執行在同一個系統和同一個client里。

五種RFC調用特性對比:

 

執行時間

處理模式

交互對話

狀態查詢

sRFC

立即執行

同步

支持

不提供

aRFC

立即執行

異步

支持

不提供

tRFC

需等待

異步,一次執行

不支持

提供

qRFC

需等待

異步,一次順序執行

不支持

提供

pRFC

立即執行

異步

不建議使用

不提供


RFM:

Function-->Attributes-->Processing Type-->□Remote-Enable Module

RFM定義要點:

1)參數聲明必須是具體類型(不可以 Type any);

2)參數必須指定為值傳遞(Pass Value);

3)表類型參數系統隱式進行值傳遞。

4)對於字符型參數,調用方實參的定義長度應 <=被調用方形參定義長度

5)異常處理。基於類的異常不能通過遠程調用拋回。
    RFC有2個預設系統異常,調用系統必須接收:SYSTEM_FAILURE/ COMMUNICATION_FAILURE

 

RFC遠程目標維護及調用

首先,輸入TCODE   SM59

其次,可以添加一個連接類型,其中包含如下類型

(1)類型2( R/2連接),指定R/2系統作為目標系統。

(2)類型3(ABAP連接或R/3連接),指定SAP ABAP系統作為目標系統。

(3)類型I(內部連接),與當前系統連接到同一數據庫的ABAP系統。

(4)類型 L(邏輯目標):該條目不指定連接系統,而是參照物理目標生成

Technical Settings.

(5)Target system:目標系統名稱。

(6)Message server目標系統的消息服務器 T-CODE RZ03 Service 欄中帶有”M”字符的為消息服務器。

(7)Group服務器組 Tcode SMLG 可以查看。

(8)Target host (目標系統的主機或IP地址) SM51中的HOST name字段。

(9)System number(目標系統的系統編號),設定Logon/Security選項卡,Trusted system對於類型3的遠程目標,可將服務器系統設定為可信任系統,則RFC用戶無需對該系統再設定登陸密碼,其次,要設定同步或異步的調用方式。

如果同步RFC的調用方式,同步RFC要求遠程系統在調用時可用,調用程序的處理暫停,並等待遠程function module調用的返回結構后再繼續。

語法如下:

CALL FUNCTIOAN rfm_name

       DESTINATION dest

       …..

如果是異步的話,異步RFC也要求RFC服務器系統在調用時可用,被調用的function module將立即啟動並運行,區別於同步調用,調用程序不等待遠程調用結果,而繼續運行,遠程功能處理與調用程序的處理過程相分離,功能返回結果可以在后續過程中被接收。

語法如下:

CALL FUNCTION rfm_name

       START NEW TASK taskname

       ….

異步RFC調用時接收結果

CALL FUNCTION rfm_name

       START NEW TASK taskname

       PERFORMING return_form ON END OF TASK

子程序必須存在於程序中

 FORM return_form USING taskname

….

       RECEIVE RESULTS FROM FUNCTION rfm_name

….

ENDFORM

第三,進行異步RFC方式的RFM調用

RFC實際上是異步RFC調用的應用之一,異步RFC調用適用於多個SAP ABAP系統間的並行處理(不支持非SAP系統),可以在同一個系統內部使用異步RFC調用,並將部分處理負載轉移到其它的應用服務器上,如果不現實指定異步RFC調用的目標,則在同一應用服務器內,也可以通過本地異步RFC調用實現多個工作過程的並行處理。

分組並行處理的語法如下:

CALL FUNCTION rfm_name

 STARTING NEW TASK taskname

       DESTINATION IN GROUP g1

       ….

 EXCEPTION

       RESOURCE_FAILURE = ..

並行處理條件是,邏輯獨立的工作單元(logically-independent units of work):並行處理並不適合需要順序進行的數據處理。各個數據處理過程不能具有依賴關系。

ABAP要求是被調用的功能模塊程序中不能包含使用目標back的遠程功能調用。

調用程序不能在異步調用之后生成新的內部會話,不能通過 call function starting new task destination in group語句啟動外部程序,系統資源要求是為了處理並行作業, sap系統中至少要有三個對話工作過程。調度隊列(dispatcher queue)必須低於10%滿載,而且至少要有一個空閑對話工作過程用於處理並行作業中的任務,並保留兩個空閑的工作過程處理系統登陸及管理任務。

第四,設置事務性RFC。

通過事務RFC調用,可以將多個邏輯上相關的遠程調用綁定到一個LUW上.在該LUW內,所有調用按其調用順序,在目標系統的相同程序上下文中以單個事務的方式執行,要么執行所有,要么完全回滾。

語法如下:

CALL FUNCTION rfm_name

 IN BACKGROUND TASK

….

或者

CALL FUNCTION rfm_name

 IN BACKGROUND UNIT oref

….

事務RFC 調用不能直接接收或通過 receive results from fucntion來接收rfm的返回結果,模塊中不應該指定任何 export類型參數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM