RFC学习笔记
1, RFM: Remote Function Model
2,?? RFC的通信模式:同步通信和異步通信
3, RFC的模式:sRFC,synchronous RFC
???????????????? aRFC,asynchronous RFC
???????????????? tRFC,transaction RFC
???????????????? qRFC,queued RFC
???????????????? pRFC,parrodel FRC
4,?FRM:?a 參數申明:必須在參數定義是申明<passed valued>
b 格式轉化:實參長度不能大于被調用形參的長度
C 異常處理:raise exception
5, 調用RFM:?Call Function rfm_name
?Destination dest
?parameter list
其中Destination dest在 SM59 中定義
?????? FM:SXPG_COMMAND_EXECUTE用于執行服務器的系統命令
Call Function –Destination sRFC
Call Function –Starting new Task aRFC
Call Function –In Background Task tRFC
6 , RFC上下文
?????? A 本地正常調用:在跳用程序的work process中
?????? B 遠程調用:獨立的工作進程
?????? C 所有的遠程調用都在目標系統中存在一個獨立的 RFC上下文即RFC Context
?????? D 通常情況下,功能模塊調用和主程序位于相同的LUW中,不會觸發Commit/Rollback,需顯示執行。但 SRFC和aRFC調用中的每一個FM都擁有自己的 LUW,即每次調用是都將隱式觸發提交
7, sRFC和aRFC中可以存在dialog過程,如call screen, call transcation等。盡管RFC可以在后臺處理,但如果在后臺處理,RFC的對話將引起system_failture.
8,?RFC的調式:對于aRFC,將打開新的會話進行遠程調式
9,?sRFC的調用:調用程序將等待返回。
10, aRFC:被調用的功能模塊立即執行,調用程序不等待結果<Strating New Task>
????? A: 不能指定Importing 參數
????? B:對話處理和調式:打開新的會話并可以來回切換,打開新的會話:調式窗口
????? C:aRFC調用時的結果接收
?????????? Performing return_Form?on end of Task
?????????? Form?return_form using taskname
… receive results from funcation rfc_name
?????????? EndForm.
?????????? 一般情況下會在rerun_form中設置set user_command ‘OKCD’,然后在主程序中使用AT user_Command.
?????? D: 異步調用的等待
?????????? Wait until 必須與Performing同時使用
?????????? Wait until log_exp[up to sec seconds]可以在return_form中對log_exp中的條件賦值,從而達到等待RFC返回結果的目的。
11, tRFC:將多個邏輯上相關的遠程調用綁定至同一個LUW上,并按照調用順序執行,在到達 commit work 時執行所有計劃的更新。
?????????????????? <In background task ….Commit work>
??????? A: tRFC部要求被調用時立即執行,如果遠程系統不可用將保存在本地隊列中,如果在設定時間內,遠程系統仍不可用,將自動設置為后臺作業
??????? B: 不能返回結果,不允許交互性對話、調試
??????? C: FM中不能存在Export的參數,Call Funcation 時 不能指定improting
??????? D: ?事務ID : 表aRFCState: LUW執行狀態
???????????????????????? aRFCSdate:輸入的數據
????????????????????? SM58查看并重啟出錯的RFM
???????? E: 多RFC處理:多個 RFC針對不同的目標
???????? F:出錯:系統報表RSAFCSE重新執行。
總結
- 上一篇: BAPI学习笔记
- 下一篇: Send mail in ECC