外部テーブルの統合
すでにユーザ固有のデータが入力されている外部テーブルをユーザまたはロール更新に提供するには、インタフェース IF_PERS_EXTERNAL_TABLE をインプリメントするクラスをインプリメントする必要があります。このインタフェースは、クラス CL_SUPER_PERS_ACCESS を使用してインプリメントします。このクラスから、必要なメソッドがすべて継承されます。互換性を保つため、常にこのクラスをインプリメントしてください。これにより、インタフェースが拡張されたときの安定性が高まります。
以下に、含まれるメソッドについて簡単に説明します。
|
メソッド USER_COPY |
||
|
P_USER_SOURCE |
UNAME |
コピー元ユーザの名前 |
|
P_USER_TARGET |
UNAME |
コピー先ユーザの名前 |
|
P_PERS_KEY |
SPERS_KEY |
パーソナライゼーションオブジェクトのキー |
|
P_NO_BUFFER |
CHAR1 |
バッファリングをオフにするフラグ |
|
メソッド USER_DELETE |
||
|
P_USER |
UNAME |
データ削除の対象となるユーザの名前 |
|
P_PERS_KEY |
SPERS_KEY |
パーソナライゼーションオブジェクトのキー |
|
メソッド USER_RENAME |
||
|
P_USER_SOURCE |
UNAME |
旧ユーザ名 |
|
P_USER_TARGET |
UNAME |
新ユーザ名 |
|
P_PERS_KEY |
SPERS_KEY |
パーソナライゼーションオブジェクトのキー |
|
メソッド USER_COPY |
||
|
P_UNAME |
UNAME |
コピー元ユーザの名前 |
|
P_PERS_KEY |
SPERS_KEY |
パーソナライゼーションオブジェクトのキー |
|
P_COMMIT |
CHAR1 |
バッファリングに関するフラグ。 フラグを 'X' にすると、データはバッファリングされません。 |
ロールのダイアログ、削除、コピー、および名称変更のためのメソッドも同様にインプリメントします。
|
メソッド USER_COPY |
||
|
P_ROLE_NAME |
AGR_NAME |
移送するロールの名前 |
|
P_PERS_KEY |
SPERS_KEY |
パーソナライゼーションオブジェクトのキー |
|
P_ORDER |
TRKORR |
データを移送するための移送依頼 |
システムデータのダイアログメソッドは、ユーザやロールと同様にインプリメントできます。
システムにデータを転送するメソッドは、ロールと同様にインプリメントできます。
このメソッドで、バッファ内のすべてのデータがデータベースに書き込まれます。

メソッド SAVE_BUFFER をインプリメントします。ユーザ更新またはロール更新で統合が必要なデータは、バッファリングが必要です。
継承を使用して、ユーザ独自のアクセスメソッドをインプリメントできます。
ここでは、クラスCL_SUPER_PERS_ACCESS を使用できます。ユーザ独自の派生クラスではコンストラクタのみインプリメントが必要です。ユーザおよびロールの名前を含むテーブルおよび項目の名前をコンストラクタで割り当てる必要があります。ヘッダ行と内部テーブルも、アクセスに対して動的に登録される必要があります。

SAP R/3 リリース 4.6C には、バッファリングのための一般メソッドまたは一般ダイアログがありません。バッファリングのためのメソッドは、インプリメントされても完全な機能を備えていません。
このメソッドは、テーブル SPERS_FAV 用のサンプルクラス SPERSD_REUSE_EXTERNAL でインプリメントされます。
|
method CONSTRUCTOR . * ...
data: l_fieldname type fieldname.
* set types for buffer table types: t_buffer_table_user type standard table of spersd_fav with default key. types: t_buffer_line_user type spersd_fav.
types: t_buffer_table_role type standard table of spersd_fav with default key. types: t_buffer_line_role type spersd_fav.
* set user table name table_user = 'SPERSD_FAV'. field_user = 'UNAME'.
* set user table name table_role = 'SPERSD_FAV'. field_role = 'ROLE'.
* create buffer table and work area create data buffer_table_user type t_buffer_table_user. create data buffer_line_user type t_buffer_line_user.
* create buffer table and work area create data buffer_table_role type t_buffer_table_role.
create data buffer_line_role type t_buffer_line_role.
* set hidden fields for generic dialog l_fieldname = 'MANDT'. append l_fieldname to dialog_fields_hide. l_fieldname = 'UNAME'. append l_fieldname to dialog_fields_hide. l_fieldname = 'ROLE'. append l_fieldname to dialog_fields_hide. l_fieldname = 'NUM'. append l_fieldname to dialog_fields_hide.
endmethod.
|
この例では、ユーザおよびロール固有データのテーブルタイプが定義され、対応するバッファテーブルが登録されます。一般ダイアログ使用時には表示しないテーブル項目の名前も指定されます。