- 函數(shù)組與函數(shù)概念與關(guān)系
- 本地函數(shù)與遠程函數(shù)
- SE37函數(shù)的定義(import、export祭阀、table等參數(shù))
- 函數(shù)的調(diào)用
- 系統(tǒng)標(biāo)準(zhǔn)預(yù)留函數(shù)BAPI
一、RFC是什么
RFC是SAP系統(tǒng)和其他(SAP或非SAP)系統(tǒng)間的一個重要而常用的雙向接口技術(shù)鲜戒,也被視為SAP與外部通信的基本協(xié)議专控。簡單地說,RFC過程就是系統(tǒng)調(diào)用當(dāng)前系統(tǒng)外的程序模塊遏餐,從而實現(xiàn)某個功能伦腐,而且調(diào)用系統(tǒng)和被調(diào)用系統(tǒng)中至少有一個必須是SAPABAP系統(tǒng)。這種遠程功能調(diào)用也可在同一系統(tǒng)內(nèi)部進行(如本地SAP系統(tǒng)內(nèi)的遠程調(diào)用)失都;但通常情況下柏蘑,調(diào)用程序和被調(diào)用程序處于不同系統(tǒng)。
二粹庞、RFC開發(fā)技巧
- 屬性定義
- 導(dǎo)入定義
- 導(dǎo)出定義
- 正在更改
- 表
- 例外
- 源代碼
三咳焚、RFC開發(fā)實戰(zhàn)(TCODE: SE37)
業(yè)務(wù)背景
因為業(yè)務(wù)需要多個業(yè)務(wù)場景需要獲取學(xué)員的信息,包含學(xué)員基本信息庞溜、學(xué)員考勤等信息革半;現(xiàn)在需要把此功能封裝供不用業(yè)務(wù)場景共同調(diào)用。
功能分析
1)創(chuàng)建共享共享程序塊RFC流码。
2)RFC中實現(xiàn)又官,學(xué)員信息查詢功能。
1.首先創(chuàng)建函數(shù)組(function group)
se80 輸入將要創(chuàng)建的函數(shù)組名稱“”漫试,點擊回車進行創(chuàng)建
輸入描述信息赏胚,然后保存到自己的包和請求號下
創(chuàng)建成功,并激活
2.創(chuàng)建rfc函數(shù)(function module)
se37 輸入將要創(chuàng)建的RFC函數(shù)“ZFM_HY01_SXQ01”商虐,進行創(chuàng)建
輸入剛才創(chuàng)建的函數(shù)組和描述信息
屬性定義:改為遠程調(diào)用觉阅,并進行激活
導(dǎo)入定義:修改輸入?yún)?shù)
導(dǎo)出定義:修改輸出參數(shù)
表:定義學(xué)員考勤表
例外(異常):定義異常
源代碼:寫入代碼
FUNCTION zfm_hy01_sxq01.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(PI_ZXH) TYPE ZDEKY_XH OPTIONAL
*" VALUE(PI_ZBJ) TYPE ZDEKY_BJ OPTIONAL
*" EXPORTING
*" VALUE(PE_ZXYXX) LIKE ZTKT_XYXX STRUCTURE ZTKT_XYXX
*" TABLES
*" ET_ZXYKQ STRUCTURE ZTKT_XYKQ OPTIONAL
*" EXCEPTIONS
*" Z_NO_XYXX
*" Z_NO_XYKQ
*" Z_NO_ALL
*"----------------------------------------------------------------------
* 獲取:學(xué)員基本信息
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF pe_zxyxx
FROM ztkt_xyxx
WHERE zxh = pi_zxh
AND zbj = pi_zbj.
*拋出三個異常
IF SY-SUBRC <> 0.
*3.獲让爻怠:學(xué)員考勤記錄表
SELECT *
INTO CORRESPONDING FIELDS OF TABLE ET_ZXYKQ
FROM ZTKT_XYKQ
WHERE ZXH = PI_ZXH
AND ZBJ = PI_ZBJ.
IF SY-SUBRC = 0."無學(xué)員信息典勇,有考勤記錄
*3.1.拋出異常:無學(xué)員信息
RAISE Z_NO_XYXX.
ELSE.
*3.拋出異常:無任何信息
RAISE Z_NO_ALL.
ENDIF.
ELSE.
*2.獲取:學(xué)員考勤記錄表
SELECT *
INTO CORRESPONDING FIELDS OF TABLE ET_ZXYKQ
FROM ZTKT_XYKQ
WHERE ZXH = PI_ZXH
AND ZBJ = PI_ZBJ.
IF SY-SUBRC NE 0.
*2.拋出異常:無考勤記錄
RAISE E_NO_KQJL.
ENDIF.
ENDIF.
ENDFUNCTION.
3.運行結(jié)果查看叮趴,輸入學(xué)號班級
執(zhí)行查看
表中考勤記錄查看
4.異常信息查看割笙,輸入不存在的學(xué)號
執(zhí)行查看拋出的異常
5.調(diào)用rfc
(1)SE38 創(chuàng)建新的可執(zhí)行程序
(2)Pattern快速調(diào)用RFC
顯示
(3)定義變量
DATA: L_ZXH LIKE ZTKT_XYXX-ZXH VALUE 'HY101',
L_ZBJ LIKE ZTKT_XYXX-ZBJ VALUE 'H1',
LS_ZXYXX LIKE ZTKT_XYXX,
LT_ZXYKQ LIKE TABLE OF ZTKT_XYKQ WITH HEADER LINE.
全部代碼
*&---------------------------------------------------------------------*
*& Report ZHYR01_20220721_HY101
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZHYR01_20220721_HY101.
DATA: L_ZXH LIKE ZTKT_XYXX-ZXH VALUE 'HY101',
L_ZBJ LIKE ZTKT_XYXX-ZBJ VALUE 'H1',
LS_ZXYXX LIKE ZTKT_XYXX,
LT_ZXYKQ LIKE TABLE OF ZTKT_XYKQ WITH HEADER LINE.
CALL FUNCTION 'ZFM_HY01_SXQ01'
EXPORTING
pi_zxh = L_ZXH
pi_zbj = L_ZBJ
IMPORTING
PE_ZXYXX = LS_ZXYXX
TABLES
ET_ZXYKQ = LT_ZXYKQ
EXCEPTIONS
E_NO_ALL = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE '無此學(xué)員信息' TYPE 'I'.
ELSE.
WRITE LS_ZXYXX-ZXM.
MESSAGE '獲取學(xué)員信息成功' TYPE 'S'.
ENDIF.
運行結(jié)果查看
對比 修改輸入的序號為表中不存在的學(xué)號
輸出“無此學(xué)員信息”