ABAP RFC


第一部分 RFC技術

什么是RFC?

RFC是SAP系統和其他(SAP或非SAP)系統間的一個重要而常用的雙向接口技術,也被視為SAP與外部通信的基本協議。簡單地說,RFC過程就是系統調用當前系統外的程序模塊,從而實現某個功能,而且調用系統和被調用系統中至少有一個必須是SAP ABAP系統。這種遠程功能調用也可在同一系統內部進行(如本地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類型參數。
文庫:https://wapwenku.baidu.com/view/c6a78ebaf121dd36a32d828d.html?pn=4&pu=

 轉載於:https://www.cnblogs.com/rainysblog/p/6629021.html

第一部分 RFC技術

什么是RFC?

RFC是SAP系統和其他(SAP或非SAP)系統間的一個重要而常用的雙向接口技術,也被視為SAP與外部通信的基本協議。簡單地說,RFC過程就是系統調用當前系統外的程序模塊,從而實現某個功能,而且調用系統和被調用系統中至少有一個必須是SAP ABAP系統。這種遠程功能調用也可在同一系統內部進行(如本地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類型參數。
文庫:https://wapwenku.baidu.com/view/c6a78ebaf121dd36a32d828d.html?pn=4&pu=

 

 

 

 

轉載於:https://www.cnblogs.com/rainysblog/p/6629021.html


免責聲明!

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



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