2012-10-10 37 views
1

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

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

其他情况是不为该用户调用某些实现并呼叫其他用户。有这样的机会吗?

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

IF sy-uname = 'username'. 

回答

4

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

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

我猜为什么BAdI应该为特定用户行为不同的原因是因为该用户在公司中有一些特殊的工作。当拥有这个职位的人改变了,或者当他得到一两个其他人来帮助他们,或者他只是呼吁生病,而其他人必须去做他的工作时,你会做什么?每当发生这种情况时,您是否想要传输程序更改?但还有其他选项:

  • 用户组的不同行为。您可以从数据库表中读取用户组usr02(字段CLASS)
  • 权限不同的行为。做一个AUTHORITY-CHECK,并根据成功使BADI行为有所不同。
  • 用户参数的不同行为。要读取程序中的用户参数,请使用GET PARAMETER ID。用户的参数可以由事务SU03中的管理员通过用户自己用事务SU3(当他们有权这样做的时候)或者以编程方式用SET PARAMETER ID来设置。
+1

而不是用户参数,您应该使用个性化对象。它们允许更好的维护UI以及基于角色的分配。 – vwegert