依赖于用户的BAdI实现

时间:2012-10-10 08:59:02

标签: sap abap

我想知道有没有机会创建依赖于用户的BAdI实现?

我的意思是:BAdI有不同的实现,根据记录的用户和调用特定事务的用户调用。

其他方案是不为该用户调用某些实现并调用其他用户。有这样的机会吗?

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

IF sy-uname = 'username'.

1 个答案:

答案 0 :(得分:5)

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

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

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

  • 用户组的不同行为。您可以从数据库表usr02(字段CLASS)
  • 中读取用户组
  • 权限的不同行为。执行AUTHORITY-CHECK,并根据成功情况使BAdI表现不同。
  • 用户参数的不同行为。要阅读程序中的用户参数,请使用GET PARAMETER ID。用户的参数可以由交易SU03中的管理员设置,由用户自己设置事务SU3(当他们有权这样做时)或以编程方式设置SET PARAMETER ID