第一部分 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