Abap 依赖于用户的BAdI实现。怎么用?
有没有办法创建依赖于用户的BAdI实现?我的意思是,BAdI有不同的实现,根据记录的用户和调用特定事务的用户调用不同的实现 另一种情况是不为此用户调用某些实现,而是调用其他用户。有可能吗 现在我用的是简单的支票Abap 依赖于用户的BAdI实现。怎么用?,abap,badi,Abap,Badi,有没有办法创建依赖于用户的BAdI实现?我的意思是,BAdI有不同的实现,根据记录的用户和调用特定事务的用户调用不同的实现 另一种情况是不为此用户调用某些实现,而是调用其他用户。有可能吗 现在我用的是简单的支票 IF sy-uname = 'username'. 新的BADI允许GET BADI调用具有一个或多个过滤器参数,这些参数可在实现定义中用于选择不同的实现类。但是这些过滤器参数必须由调用BAdI的代码提供。当标准代码没有提供用户名作为过滤参数时,就无法根据用户名选择实现类 因此,当您需
IF sy-uname = 'username'.
新的BADI允许
GET BADI
调用具有一个或多个过滤器
参数,这些参数可在实现定义中用于选择不同的实现类。但是这些过滤器参数必须由调用BAdI的代码提供。当标准代码没有提供用户名作为过滤参数时,就无法根据用户名选择实现类
因此,当您需要为不同的用户提供不同的逻辑时,您需要在实现代码中这样做。但是使用用户名来决定做什么可能不是最容易维护的体系结构
我想,对于特定的用户,BAdI应该表现得不同的原因是因为该用户在公司有一些特殊的工作。当这个职位的人改变了,或者当他请了一两个人来帮助他们,或者当他打电话请病假而其他人不得不做他的工作时,你会怎么做?您想在发生程序更改时传输该更改吗?但还有其他选择:
- 用户组的不同行为。可以从数据库表usr02(字段类)中读取用户组
- 不同的行为由权限决定。执行
,并根据成功情况使BAdI的行为有所不同权限检查
- 不同的行为由用户参数决定。要读取程序中的用户参数,请使用
。用户的参数可以由事务SU03中的管理员设置,也可以由用户自己使用事务SU3(当他们有权限这样做时)设置,或者通过GET parameter ID
编程设置set PARAMETER ID
GET BADI
调用具有一个或多个过滤器
参数,这些参数可在实现定义中用于选择不同的实现类。但是这些过滤器参数必须由调用BAdI的代码提供。当标准代码没有提供用户名作为过滤参数时,就无法根据用户名选择实现类
因此,当您需要为不同的用户提供不同的逻辑时,您需要在实现代码中这样做。但是使用用户名来决定做什么可能不是最容易维护的体系结构
我想,对于特定的用户,BAdI应该表现得不同的原因是因为该用户在公司有一些特殊的工作。当这个职位的人改变了,或者当他请了一两个人来帮助他们,或者当他打电话请病假而其他人不得不做他的工作时,你会怎么做?您想在发生程序更改时传输该更改吗?但还有其他选择:
- 用户组的不同行为。可以从数据库表usr02(字段类)中读取用户组
- 不同的行为由权限决定。执行
,并根据成功情况使BAdI的行为有所不同权限检查
- 不同的行为由用户参数决定。要读取程序中的用户参数,请使用
。用户的参数可以由事务SU03中的管理员设置,也可以由用户自己使用事务SU3(当他们有权限这样做时)设置,或者通过GET parameter ID
编程设置set PARAMETER ID