ユーザー依存のBAdI実装を作成する方法はありますか?つまり、BAdIには、ログに記録され、特定のトランザクションを呼び出すユーザーに応じて呼び出されるさまざまな実装があります。
他のシナリオは、このユーザーの特定の実装を呼び出さず、他のユーザーを呼び出すことです。可能ですか?
今は簡単なチェックを使っています
IF sy-uname = 'username'.
新しいBAdIを使用すると、GET BADI
呼び出しに1つ以上のFILTERS
パラメーターを含めることができます。これらのパラメーターを実装定義で使用して、さまざまな実装クラスを選択できます。ただし、これらのフィルターパラメーターは、BAdIを呼び出すコードによって提供される必要があります。標準コードがユーザー名をフィルターパラメーターとして提供しない場合、ユーザー名に基づいて実装クラスを選択する方法はありません。
したがって、ユーザーごとに異なるロジックが必要な場合は、実装コードでこれを行う必要があります。ただし、ユーザー名を使用して何をするかを決定することは、最も保守しやすいアーキテクチャではない可能性があります。
BAdIが特定のユーザーに対して異なる動作をすることになっている理由は、そのユーザーが会社で特別な仕事をしているためだと思います。この立場にある人が変わったとき、または他の1人か2人に助けてもらったとき、または彼がただ病気で電話をかけて他の誰かが仕事をしなければならないとき、あなたはどうしますか?それが発生するたびにプログラム変更を移送しますか?しかし、他のオプションがあります:
AUTHORITY-CHECK
、成功に応じてBAdIの動作を変えます。GET PARAMETER ID
。ユーザのパラメータは、トランザクションSU03の管理者、トランザクションSU3を使用するユーザ自身(権限がある場合)、またはプログラムを使用して設定することができますSET PARAMETER ID
。