Abap 依赖于用户的BAdI实现。怎么用?

Abap 依赖于用户的BAdI实现。怎么用?,abap,badi,Abap,Badi,有没有办法创建依赖于用户的BAdI实现?我的意思是,BAdI有不同的实现,根据记录的用户和调用特定事务的用户调用不同的实现 另一种情况是不为此用户调用某些实现,而是调用其他用户。有可能吗 现在我用的是简单的支票 IF sy-uname = 'username'. 新的BADI允许GET BADI调用具有一个或多个过滤器参数,这些参数可在实现定义中用于选择不同的实现类。但是这些过滤器参数必须由调用BAdI的代码提供。当标准代码没有提供用户名作为过滤参数时,就无法根据用户名选择实现类 因此,当您需

有没有办法创建依赖于用户的BAdI实现?我的意思是,BAdI有不同的实现,根据记录的用户和调用特定事务的用户调用不同的实现

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

现在我用的是简单的支票

IF sy-uname = 'username'.

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

因此,当您需要为不同的用户提供不同的逻辑时,您需要在实现代码中这样做。但是使用用户名来决定做什么可能不是最容易维护的体系结构

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

  • 用户组的不同行为。可以从数据库表usr02(字段类)中读取用户组
  • 不同的行为由权限决定。执行
    权限检查
    ,并根据成功情况使BAdI的行为有所不同
  • 不同的行为由用户参数决定。要读取程序中的用户参数,请使用
    GET parameter ID
    。用户的参数可以由事务SU03中的管理员设置,也可以由用户自己使用事务SU3(当他们有权限这样做时)设置,或者通过
    set PARAMETER ID
    编程设置

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

因此,当您需要为不同的用户提供不同的逻辑时,您需要在实现代码中这样做。但是使用用户名来决定做什么可能不是最容易维护的体系结构

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

  • 用户组的不同行为。可以从数据库表usr02(字段类)中读取用户组
  • 不同的行为由权限决定。执行
    权限检查
    ,并根据成功情况使BAdI的行为有所不同
  • 不同的行为由用户参数决定。要读取程序中的用户参数,请使用
    GET parameter ID
    。用户的参数可以由事务SU03中的管理员设置,也可以由用户自己使用事务SU3(当他们有权限这样做时)设置,或者通过
    set PARAMETER ID
    编程设置

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