一种解决sap系统间rfc调用授权控制的方法

文档序号:6536342阅读:723来源:国知局
一种解决sap系统间rfc调用授权控制的方法
【专利摘要】本发明公开了一种解决SAP系统间RFC调用授权控制的方法,该方法利用用户切换功能模块和后台Job程序,实现RFC执行用户的切换,并通过透明表进行传递参数。本发明可以使其他系统调用RFC时通过通信用户连接,且可以进行系统用户的业务权限授权检查,保证了SAP系统用户的账户信息的安全性。
【专利说明】—种解决SAP系统间RFC调用授权控制的方法
【技术领域】
[0001]本发明涉及一种SAP系统,具体地说是一种解决SAP系统间RFC调用授权控制的方法。
【背景技术】
[0002]其他系统调用SAP系统RFC(Remote Function Call远程函数调用)时,一般都是通过公司特定的通信用户进行连接,并进行业务数据的处理,此时RFC内的逻辑是依据与通信用户的权限进行控制的。而通信用户一般是不具有业务授权的。所以在编写RFC逻辑的时候,不能进行权限检查,一旦进行权限检查就会因为是通信用户,而被拒绝业务操作。现行的解决办法是直接把SAP系统用户当作连接用户进行RFC操作。缺点在于SAP系统用户的账户信息的安全性会受到威胁,且不利于RFC调用的整体管理。 [0003]

【发明内容】

[0004]为了克服现有技术存在的问题,本发明的目的是提供一种解决SAP系统间RFC调用授权控制的方法,利用该方法,可以使其他系统调用RFC时通过通信用户连接,且可以进行系统用户的业务权限授权检查,保证了 SAP系统用户的账户信息的安全性。
[0005]本发明的目的是通过以下技术方案来实现的:
一种解决SAP系统间RFC调用授权控制的方法,其特征在于:该方法利用用户切换功能模块和后台Job程序,实现RFC执行用户的切换,并通过透明表进行传递参数;具体步骤如下:
DRFC函数包含USER参数,且是可选的,其他系统调用RFC时传递此参数;在RFC函数中定义全局的field symbol参数;在开始时将定义的field symbol指向RFC函数的参数;field symbol参数用来接收进行用户切换后执行的结果;
2)在RFC开头编写一个简单的逻辑判断算法如下:
IF USER IS NOT INITIAL.“执行用户切换功能模块 ELSE.“执行RFC业务逻辑 ENDIF.如果传入的USER参数不是空的,则执行用户切换功能模块,否则执行RFC本身逻辑;当其他系统调用RFC时,由于步骤I约束了 USER不是空的,所以执行用户切换功能模块,而用户切换功能模块把USER清空后,再通过Job执行RFC,真正执行RFC的业务逻辑;
3)用户切换功能模块,输入参数包括:
A、权限检查的系统用户名USER,RFC根据此用户进行权限检查,而不根据连接用户进行权限检查;B、RFC的名称FM_NAME,用于获取RFC的参数;
C、RFC的唯一标示FM_ID,用户获取RFC的参数;
4)在用户切换功能模块,通过’FUNCTION_MPORT_INTERFACE’获取当前RFC的参数,通过’ 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到透明表中,以给后续的Job程序获取;
5)在用户切换功能模块,调用函数’⑶ID_CREATE’和’J0B_0PEN’开启一个后台job程序;并且提交一个后台程序传入FM_NAME和步骤4)创建的number,因Job是用指定用户去执行的,所以,此后台程序以系统用户USER来启动,实现用户切换;
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’执行步骤5)提交的后台job,通过’ BP_J0B_STATUS_GET’监控后台job的状态,当状态等于F或者A的时候退出监控;
7)通过步骤4)相反的方法把步骤5)提交的后台JOB的运行结果参数MPORT传入到全局field symbol的变量中`;最终实现将RFC参数使用EXPORT和MPORT到透明表,再通过用系统用户执行后台Job,实现RFC的权限检查。
[0006]2、根据权利要求1所述的解决SAP系统间RFC调用授权控制的方法,其特征在于:步骤5)中,提交的后台程序选择参数包括:
A、FM_NAME,RFC的名称,用来动态启动此函数;
B、NRG,第4步中生成的number用来读取RFC的参数用;
后台程序的逻辑是通过MPORT读取透明表获取之前存入DB表的参数,然后执行RFC,再将执行结果EXPORT到透明表,以供步骤7)中MPORT读取程序执行结果,并返回。
[0007]本发明中,其他系统在调用RFC时,将权限检查的系统用户名当做参数传递给RFC。利用权限切换功能模块,动态获得FUNCTION的输入、输出、异常参数。然后基于SAP的后台执行机制,使用传入的系统用户名启动Job重新执行RFC,以得到通过系统用户进行权限检查的目的。然后通过内存变量将Job结果传递给RFC调用者。
[0008]本发明能够指定用某个用户去执行RFC调用,可以使其他系统调用RFC时通过通信用户连接,以解决RFC连接用户不具有业务权限的问题;且可以进行系统用户的业务权限授权检查,保证了 SAP系统用户的账户信息的安全性。
【专利附图】

【附图说明】
[0009]图1是本发明中RFC的流程图。
[0010]图2是本发明中用户切换功能模块流程图。[0011]图3是本发明中Job程序流程图。
【具体实施方式】
[0012]本发明中,相关技术术语的名词解释如下:
权限:读取任何数据内容,需要有当前用户相应的权限支持。如不具备,则读取数据内容失败。
[0013]JOB: SAP系统里的一个进程概念。它是一个独立的进程,不依赖于用户前台操作而独立运行。
[0014]异步:新开启的一个程序进程,不依赖于主进程 SAP:企业资源规划软件的一种。
[0015]一种解决SAP系统间RFC调用授权控制的方法,该方法利用用户切换功能模块和后台Job程序,实现RFC执行用户的切换,并通过透明表进行传递参数;具体步骤如下:
DRFC函数必须包含USER参数,且是可选的,但其他系统调用RFC时必须传递此参数。在RFC函数的主程序中定义全局的field symbol参数。在程序开始将定义的field symbol指向RFC函数的参数。field symbol参数用来接收进行用户切换后执行的结果。
[0016]2)在RFC开头编写一个简单的逻辑判断算法如下:
IF USER IS NOT INITIAL.“执行用户切换功能模块 ELSE.“执行RFC 业务逻辑 ENDIF.如果传入的USER参数不是空的,则执行用户切换功能模块,否则执行RFC本身逻辑。
[0017]当其他系统调用RFC时,由于步骤I约束了 USER不是空的,所以会执行用户切换功能模块,而用户切换功能模块会把USER清空后,再通过Job执行RFC,此时会真正执行RFC的业务逻辑。
[0018]3)用户切换功能模块,输入参数包括
A、权限检查的系统用户名USER,RFC根据此用户进行权限检查,而不根据连接用户进行权限检查
B、RFC的名称FM_NAME,用于获取RFC的参数。
[0019]C、RFC的唯一标示FM_ID,用户获取RFC的参数。
[0020]4)在用户切换功能模块,通过’ FUNCT10NJMP0RT_INTERFACE’获取当前RFC的参数,通过’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到透明表中,以给后续的Job程序获取。[0021]5)在用户切换功能模块,调用函数’⑶ID_CREATE’和’ J0B_0PEN’开启一个后台job程序。并且提交一个后台程序传入FM_NAME和第4步创建的number,因Job是可以用指定用户去执行的,所以,此后台程序以系统用户USER来启动,以达到用户切换的目的。
【权利要求】
1.一种解决SAP系统间RFC调用授权控制的方法,其特征在于:该方法利用用户切换功能模块和后台Job程序,实现RFC执行用户的切换,并通过透明表进行传递参数;具体步骤如下: RFC函数包含USER参数,且是可选的,其他系统调用RFC时传递此参数;在RFC函数中定义全局的field symbol参数;在开始时将定义的field symbol指向RFC函数的参数;field symbol参数用来接收进行用户切换后执行的结果; 在RFC开头编写一个简单的逻辑判断算法如下:
IF USER IS NOT INITIAL.“执行用户切换功能模块
ELSE.“执行RFC业务逻辑
ENDIF.如果传入的USER参数不是空的,则执行用户切换功能模块,否则执行RFC本身逻辑; 当其他系统调用RFC时,由于步骤I约束了 USER不是空的,所以执行用户切换功能模块,而用户切换功能模块把USER清空后,再通过Job执行RFC,真正执行RFC的业务逻辑; 3)用户切换功能模块,输入参数包括: A、权限检查的系统用户名USER,RFC根据此用户进行权限检查,而不根据连接用户进行权限检查; B、RFC的名称FM_NAME,用于获取RFC的参数; C、RFC的唯一标示FM_I`D,用户获取RFC的参数; 4)在用户切换功能模块,通过’FUNCTION_MPORT_INTERFACE’获取当前RFC的参数,通过’ 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到透明表中,以给后续的Job程序获取; 5)在用户切换功能模块,调用函数’⑶ID_CREATE’和’J0B_0PEN’开启一个后台job程序;并且提交一个后台程序传入FM_NAME和步骤4)创建的number,因Job是用指定用户去执行的,所以,此后台程序以系统用户USER来启动,实现用户切换; 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’执行步骤5)提交的后台job,通过’ BP_J0B_STATUS_GET’监控后台job的状态,当状态等于F或者A的时候退出监控; 7)通过步骤4)相反的方法把步骤5)提交的后台JOB的运行结果参数MPORT传入到全局field symbol的变量中;最终实现将RFC参数使用EXPORT和MPORT到透明表,再通过用系统用户执行后台Job,实现RFC的权限检查。
2.根据权利要求1所述的解决SAP系统间RFC调用授权控制的方法,其特征在于:步骤5)中,提交的后台程序选择参数包括: A)、FM_NAME,RFC的名称,用来动态启动此函数; B)、NRG,第4步中生成的number用来读取RFC的参数用; 后台程序的逻辑是通过MPORT读取透明表获取之前存入DB表的参数,然后执行RFC,再将执行结果EXPO RT到透明表,以供步骤7)中MPORT读取程序执行结果,并返回。
【文档编号】G06F9/44GK103778357SQ201410026510
【公开日】2014年5月7日 申请日期:2014年1月21日 优先权日:2014年1月21日
【发明者】潘留兴, 陈刚, 冯曙明 申请人:国家电网公司, 江苏省电力公司, 江苏电力信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1