一種解決sap系統(tǒng)間rfc調用授權控制的方法
【專利摘要】本發(fā)明公開了一種解決SAP系統(tǒng)間RFC調用授權控制的方法,該方法利用用戶切換功能模塊和后臺Job程序,實現(xiàn)RFC執(zhí)行用戶的切換,并通過透明表進行傳遞參數(shù)。本發(fā)明可以使其他系統(tǒng)調用RFC時通過通信用戶連接,且可以進行系統(tǒng)用戶的業(yè)務權限授權檢查,保證了SAP系統(tǒng)用戶的賬戶信息的安全性。
【專利說明】—種解決SAP系統(tǒng)間RFC調用授權控制的方法
【技術領域】
[0001]本發(fā)明涉及一種SAP系統(tǒng),具體地說是一種解決SAP系統(tǒng)間RFC調用授權控制的方法。
【背景技術】
[0002]其他系統(tǒng)調用SAP系統(tǒng)RFC(Remote Function Call遠程函數(shù)調用)時,一般都是通過公司特定的通信用戶進行連接,并進行業(yè)務數(shù)據(jù)的處理,此時RFC內的邏輯是依據(jù)與通信用戶的權限進行控制的。而通信用戶一般是不具有業(yè)務授權的。所以在編寫RFC邏輯的時候,不能進行權限檢查,一旦進行權限檢查就會因為是通信用戶,而被拒絕業(yè)務操作?,F(xiàn)行的解決辦法是直接把SAP系統(tǒng)用戶當作連接用戶進行RFC操作。缺點在于SAP系統(tǒng)用戶的賬戶信息的安全性會受到威脅,且不利于RFC調用的整體管理。 [0003]
【發(fā)明內容】
[0004]為了克服現(xiàn)有技術存在的問題,本發(fā)明的目的是提供一種解決SAP系統(tǒng)間RFC調用授權控制的方法,利用該方法,可以使其他系統(tǒng)調用RFC時通過通信用戶連接,且可以進行系統(tǒng)用戶的業(yè)務權限授權檢查,保證了 SAP系統(tǒng)用戶的賬戶信息的安全性。
[0005]本發(fā)明的目的是通過以下技術方案來實現(xiàn)的:
一種解決SAP系統(tǒng)間RFC調用授權控制的方法,其特征在于:該方法利用用戶切換功能模塊和后臺Job程序,實現(xiàn)RFC執(zhí)行用戶的切換,并通過透明表進行傳遞參數(shù);具體步驟如下:
DRFC函數(shù)包含USER參數(shù),且是可選的,其他系統(tǒng)調用RFC時傳遞此參數(shù);在RFC函數(shù)中定義全局的field symbol參數(shù);在開始時將定義的field symbol指向RFC函數(shù)的參數(shù);field symbol參數(shù)用來接收進行用戶切換后執(zhí)行的結果;
2)在RFC開頭編寫一個簡單的邏輯判斷算法如下:
IF USER IS NOT INITIAL.“執(zhí)行用戶切換功能模塊 ELSE.“執(zhí)行RFC業(yè)務邏輯 ENDIF.如果傳入的USER參數(shù)不是空的,則執(zhí)行用戶切換功能模塊,否則執(zhí)行RFC本身邏輯;當其他系統(tǒng)調用RFC時,由于步驟I約束了 USER不是空的,所以執(zhí)行用戶切換功能模塊,而用戶切換功能模塊把USER清空后,再通過Job執(zhí)行RFC,真正執(zhí)行RFC的業(yè)務邏輯;
3)用戶切換功能模塊,輸入參數(shù)包括:
A、權限檢查的系統(tǒng)用戶名USER,RFC根據(jù)此用戶進行權限檢查,而不根據(jù)連接用戶進行權限檢查;B、RFC的名稱FM_NAME,用于獲取RFC的參數(shù);
C、RFC的唯一標示FM_ID,用戶獲取RFC的參數(shù);
4)在用戶切換功能模塊,通過’FUNCTION_MPORT_INTERFACE’獲取當前RFC的參數(shù),通過’ NUMBER_GET_NEXT’獲取一個number用來存儲變量的轉換信息;通過以下語法獲取RFC 存儲在全局 field symbo 中的變量值; CONCATENATE ’(SAPL’ FG_NAME ’)〈’ FM_ID M_TAB-PARAMETER,>,
INTO STR.CONDENSE STR NO-GAPS.ASSIGN (STR) TO <I_DATA>.<I_DATA>是用戶切換功能模塊定義的變量,這樣就將全局field symbo中的變量值獲取到<I_DATA>中;將所有RFC變量的值獲取之后,全部EXPORT到透明表中,以給后續(xù)的Job程序獲??;
5)在用戶切換功能模塊,調用函數(shù)’⑶ID_CREATE’和’J0B_0PEN’開啟一個后臺job程序;并且提交一個后臺程序傳入FM_NAME和步驟4)創(chuàng)建的number,因Job是用指定用戶去執(zhí)行的,所以,此后臺程序以系統(tǒng)用戶USER來啟動,實現(xiàn)用戶切換;
SUBMIT ZPOO 1_HR_RFC_AUTH USING SELECT I ON-SCREEN ' 1000'WITH FM = FM_NAMEWITH NRG = NUMUSER USER VIA JOB
NAME NUMBER NUMBER ;
6)在用戶切換功能模塊,調用’J0B_CL0SE’執(zhí)行步驟5)提交的后臺job,通過’ BP_J0B_STATUS_GET’監(jiān)控后臺job的狀態(tài),當狀態(tài)等于F或者A的時候退出監(jiān)控;
7)通過步驟4)相反的方法把步驟5)提交的后臺JOB的運行結果參數(shù)MPORT傳入到全局field symbol的變量中`;最終實現(xiàn)將RFC參數(shù)使用EXPORT和MPORT到透明表,再通過用系統(tǒng)用戶執(zhí)行后臺Job,實現(xiàn)RFC的權限檢查。
[0006]2、根據(jù)權利要求1所述的解決SAP系統(tǒng)間RFC調用授權控制的方法,其特征在于:步驟5)中,提交的后臺程序選擇參數(shù)包括:
A、FM_NAME,RFC的名稱,用來動態(tài)啟動此函數(shù);
B、NRG,第4步中生成的number用來讀取RFC的參數(shù)用;
后臺程序的邏輯是通過MPORT讀取透明表獲取之前存入DB表的參數(shù),然后執(zhí)行RFC,再將執(zhí)行結果EXPORT到透明表,以供步驟7)中MPORT讀取程序執(zhí)行結果,并返回。
[0007]本發(fā)明中,其他系統(tǒng)在調用RFC時,將權限檢查的系統(tǒng)用戶名當做參數(shù)傳遞給RFC。利用權限切換功能模塊,動態(tài)獲得FUNCTION的輸入、輸出、異常參數(shù)。然后基于SAP的后臺執(zhí)行機制,使用傳入的系統(tǒng)用戶名啟動Job重新執(zhí)行RFC,以得到通過系統(tǒng)用戶進行權限檢查的目的。然后通過內存變量將Job結果傳遞給RFC調用者。
[0008]本發(fā)明能夠指定用某個用戶去執(zhí)行RFC調用,可以使其他系統(tǒng)調用RFC時通過通信用戶連接,以解決RFC連接用戶不具有業(yè)務權限的問題;且可以進行系統(tǒng)用戶的業(yè)務權限授權檢查,保證了 SAP系統(tǒng)用戶的賬戶信息的安全性。
【專利附圖】
【附圖說明】
[0009]圖1是本發(fā)明中RFC的流程圖。
[0010]圖2是本發(fā)明中用戶切換功能模塊流程圖。[0011]圖3是本發(fā)明中Job程序流程圖。
【具體實施方式】
[0012]本發(fā)明中,相關技術術語的名詞解釋如下:
權限:讀取任何數(shù)據(jù)內容,需要有當前用戶相應的權限支持。如不具備,則讀取數(shù)據(jù)內容失敗。
[0013]JOB: SAP系統(tǒng)里的一個進程概念。它是一個獨立的進程,不依賴于用戶前臺操作而獨立運行。
[0014]異步:新開啟的一個程序進程,不依賴于主進程 SAP:企業(yè)資源規(guī)劃軟件的一種。
[0015]一種解決SAP系統(tǒng)間RFC調用授權控制的方法,該方法利用用戶切換功能模塊和后臺Job程序,實現(xiàn)RFC執(zhí)行用戶的切換,并通過透明表進行傳遞參數(shù);具體步驟如下:
DRFC函數(shù)必須包含USER參數(shù),且是可選的,但其他系統(tǒng)調用RFC時必須傳遞此參數(shù)。在RFC函數(shù)的主程序中定義全局的field symbol參數(shù)。在程序開始將定義的field symbol指向RFC函數(shù)的參數(shù)。field symbol參數(shù)用來接收進行用戶切換后執(zhí)行的結果。
[0016]2)在RFC開頭編寫一個簡單的邏輯判斷算法如下:
IF USER IS NOT INITIAL.“執(zhí)行用戶切換功能模塊 ELSE.“執(zhí)行RFC 業(yè)務邏輯 ENDIF.如果傳入的USER參數(shù)不是空的,則執(zhí)行用戶切換功能模塊,否則執(zhí)行RFC本身邏輯。
[0017]當其他系統(tǒng)調用RFC時,由于步驟I約束了 USER不是空的,所以會執(zhí)行用戶切換功能模塊,而用戶切換功能模塊會把USER清空后,再通過Job執(zhí)行RFC,此時會真正執(zhí)行RFC的業(yè)務邏輯。
[0018]3)用戶切換功能模塊,輸入參數(shù)包括
A、權限檢查的系統(tǒng)用戶名USER,RFC根據(jù)此用戶進行權限檢查,而不根據(jù)連接用戶進行權限檢查
B、RFC的名稱FM_NAME,用于獲取RFC的參數(shù)。
[0019]C、RFC的唯一標示FM_ID,用戶獲取RFC的參數(shù)。
[0020]4)在用戶切換功能模塊,通過’ FUNCT10NJMP0RT_INTERFACE’獲取當前RFC的參數(shù),通過’NUMBER_GET_NEXT’獲取一個number用來存儲變量的轉換信息。通過以下語法獲取 RFC 存儲在全局 field symbo 中的變量值。 CONCATENATE ’(SAPL’ FG_NAME ’)〈’FM_ID,」M_TAB-PARAMETER,>,
INTO STR.CONDENSE STR NO-GAPS.ASSIGN (STR) TO <I_DATA>.<I_DATA>是用戶切換功能模塊定義的變量,這樣就可以將全局field symbo中的變量值獲取到<I_DATA>中。將所有RFC變量的值獲取之后,全部EXPORT到透明表中,以給后續(xù)的Job程序獲取。[0021]5)在用戶切換功能模塊,調用函數(shù)’⑶ID_CREATE’和’ J0B_0PEN’開啟一個后臺job程序。并且提交一個后臺程序傳入FM_NAME和第4步創(chuàng)建的number,因Job是可以用指定用戶去執(zhí)行的,所以,此后臺程序以系統(tǒng)用戶USER來啟動,以達到用戶切換的目的。
【權利要求】
1.一種解決SAP系統(tǒng)間RFC調用授權控制的方法,其特征在于:該方法利用用戶切換功能模塊和后臺Job程序,實現(xiàn)RFC執(zhí)行用戶的切換,并通過透明表進行傳遞參數(shù);具體步驟如下: RFC函數(shù)包含USER參數(shù),且是可選的,其他系統(tǒng)調用RFC時傳遞此參數(shù);在RFC函數(shù)中定義全局的field symbol參數(shù);在開始時將定義的field symbol指向RFC函數(shù)的參數(shù);field symbol參數(shù)用來接收進行用戶切換后執(zhí)行的結果; 在RFC開頭編寫一個簡單的邏輯判斷算法如下:
IF USER IS NOT INITIAL.“執(zhí)行用戶切換功能模塊
ELSE.“執(zhí)行RFC業(yè)務邏輯
ENDIF.如果傳入的USER參數(shù)不是空的,則執(zhí)行用戶切換功能模塊,否則執(zhí)行RFC本身邏輯; 當其他系統(tǒng)調用RFC時,由于步驟I約束了 USER不是空的,所以執(zhí)行用戶切換功能模塊,而用戶切換功能模塊把USER清空后,再通過Job執(zhí)行RFC,真正執(zhí)行RFC的業(yè)務邏輯; 3)用戶切換功能模塊,輸入參數(shù)包括: A、權限檢查的系統(tǒng)用戶名USER,RFC根據(jù)此用戶進行權限檢查,而不根據(jù)連接用戶進行權限檢查; B、RFC的名稱FM_NAME,用于獲取RFC的參數(shù); C、RFC的唯一標示FM_I`D,用戶獲取RFC的參數(shù); 4)在用戶切換功能模塊,通過’FUNCTION_MPORT_INTERFACE’獲取當前RFC的參數(shù),通過’ NUMBER_GET_NEXT’獲取一個number用來存儲變量的轉換信息;通過以下語法獲取RFC存儲在全局 field symbo 中的變量值;CONCATENATE ’(SAPL’ FG_NAME ’)〈’ FM_ID,」M_TAB-PARAMETER,>,
INTO STR.CONDENSE STR NO-GAPS.ASSIGN (STR) TO <I_DATA>.<I_DATA>是用戶切換功能模塊定義的變量,這樣就將全局field symbo中的變量值獲取到<I_DATA>中;將所有RFC變量的值獲取之后,全部EXPORT到透明表中,以給后續(xù)的Job程序獲取; 5)在用戶切換功能模塊,調用函數(shù)’⑶ID_CREATE’和’J0B_0PEN’開啟一個后臺job程序;并且提交一個后臺程序傳入FM_NAME和步驟4)創(chuàng)建的number,因Job是用指定用戶去執(zhí)行的,所以,此后臺程序以系統(tǒng)用戶USER來啟動,實現(xiàn)用戶切換; SUBMIT ZPOO 1_HR_RFC_AUTH USING SELECT I ON-SCREEN ' 1000'WITH FM = FM_NAMEWITH NRG = NUMUSER USER VIA JOBNAME NUMBER NUMBER ; 6)在用戶切換功能模塊,調用’J0B_CL0SE’執(zhí)行步驟5)提交的后臺job,通過’ BP_J0B_STATUS_GET’監(jiān)控后臺job的狀態(tài),當狀態(tài)等于F或者A的時候退出監(jiān)控; 7)通過步驟4)相反的方法把步驟5)提交的后臺JOB的運行結果參數(shù)MPORT傳入到全局field symbol的變量中;最終實現(xiàn)將RFC參數(shù)使用EXPORT和MPORT到透明表,再通過用系統(tǒng)用戶執(zhí)行后臺Job,實現(xiàn)RFC的權限檢查。
2.根據(jù)權利要求1所述的解決SAP系統(tǒng)間RFC調用授權控制的方法,其特征在于:步驟5)中,提交的后臺程序選擇參數(shù)包括: A)、FM_NAME,RFC的名稱,用來動態(tài)啟動此函數(shù); B)、NRG,第4步中生成的number用來讀取RFC的參數(shù)用; 后臺程序的邏輯是通過MPORT讀取透明表獲取之前存入DB表的參數(shù),然后執(zhí)行RFC,再將執(zhí)行結果EXPO RT到透明表,以供步驟7)中MPORT讀取程序執(zhí)行結果,并返回。
【文檔編號】G06F9/44GK103778357SQ201410026510
【公開日】2014年5月7日 申請日期:2014年1月21日 優(yōu)先權日:2014年1月21日
【發(fā)明者】潘留興, 陳剛, 馮曙明 申請人:國家電網公司, 江蘇省電力公司, 江蘇電力信息技術有限公司