1

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

其他场景是不为该用户调用某些实现并为其他用户调用。有可能吗?

现在我正在使用简单的检查

IF sy-uname = 'username'.
4

1 回答 1

5

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

因此,当您想要为不同的用户提供不同的逻辑时,您需要在您的实现代码中执行此操作。但是使用用户名来决定做什么可能不是最可维护的架构。

我想 BAdI 应该对特定用户表现不同的原因是因为该用户在公司有一些特殊的工作。当担任这个职位的人发生变化时,或者当他让一两个人帮助他们时,或者当他只是请病假而其他人必须做他的工作时,你会怎么做?您想在发生这种情况时传输程序更改吗?但还有其他选择:

  • 用户组的不同行为。您可以从数据库表 usr02(字段 CLASS)中读取用户组
  • 权限不同的行为。做一个AUTHORITY-CHECK,并根据成功使 BAdI 表现不同。
  • 用户参数的不同行为。要在程序中读取用户参数,请使用GET PARAMETER ID. 用户的参数可以由管理员在事务 SU03 中设置,也可以由用户自己通过事务 SU3 设置(当他们有权这样做时)或以编程方式使用SET PARAMETER ID.
于 2012-10-10T09:36:48.100 回答