用户依赖BAdI的实现。如何实现?

问题描述 投票:1回答:1

有什么方法可以创建用户依赖的BAdI实现?我的意思是说,BAdI有不同的实现,这些实现根据被登录的用户和调用特定事务的用户而被调用。

另一种情况是不为这个用户调用某些实现,而为其他用户调用。这可能吗?

现在我使用简单的检查

IF sy-uname = 'username'.
sap abap badi
1个回答
5
投票

新的BAdI允许 GET BADI 呼叫拥有一个或多个 FILTERS 参数,这些参数可以在实现定义中用来选择不同的实现类。但是这些过滤参数必须由调用BAdI的代码提供。当标准代码没有提供用户名作为过滤参数时,就没有办法根据用户名来选择实现类。

所以当你希望对不同的用户有不同的逻辑时,你需要在你的实现代码中做到这一点。但是用用户名来决定做什么可能不是最可维护的架构。

我想,为什么BAdI要对某个特定的用户有不同的行为,是因为这个用户在公司有一些特殊的工作。当有这个职位的人换了,或者他找了一两个人帮忙,或者他只是请了个病假,别人要做他的工作,你会怎么做?每当这种情况发生时,你要不要运筹帷幄?但还有其他选择。

  • 根据用户组的不同行为。你可以从数据库表usr02(字段CLASS)中读取用户组。
  • 按权限不同的行为。做一个 AUTHORITY-CHECK,并使BAdI根据成功率的不同而做出不同的行为。
  • 根据用户参数的不同行为。要在程序中读取用户参数,使用 GET PARAMETER ID. 用户的参数可以由管理员在事务SU03中设置,也可以由用户自己在事务SU3中设置(当他们有权限时),或者通过以下方式进行设置 SET PARAMETER ID.
© www.soinside.com 2019 - 2024. All rights reserved.