ドメイン/検索ヘルプ/ロックオブジェクト

ドメイン

 ドメインには、データエレメントの技術属性を設定できる。ドメインの重要な特性の1つは、値の範囲を定義すること。ドメインが関連付けられているデータエレメントを使用するすべてのテーブルフィールドと構造コンポーネントは、ドメインによって定義された範囲で値を持つことができる。特定の値のみ登録させたいときに使用すると便利だが、既存のものに修正を加える場合はここで意図せず制限をかけられてしまうことがないよう注意しよう。
ABAPデータディクショナリの初期画面で[ドメイン]ラジオボタンを選択すると、ABAPデータディクショナリにドメインを作成できる。 [定義]タブには、次のオプションが存在する。
 ・書式
F4ヘルプを使用して、ABAPデータディクショナリ基本データ型を更新できる。文字数と小数点以下桁数を設定できる。
 ・出力特性
出力特性は、このドメインを使用するデータエレメントを参照するフィールドが画面に表示される方法、またはWRITEステートメントを使用する場合の設定ができる。
以下のオプションは、出力特性セクションに存在する。
 出力長:出力長の値は、選択した基本データ型に基づいて決定される。この値は、このフィールドの値を設定することで上書きできる。フィールドの出力長は、フィールド内のフォーマット文字に基づいて決定する必要がある。たとえば、日付フィールドの場合、内部の長さは8(YYYYMMDD)だが、セパレーター(DD-MM-YYYY)に対応するには、出力の長さを長くする必要があるので注意。
 Output1:10進浮動小数点であるドメインには、使用可能なオプションの1つを選択して出力スタイルを割り当てる必要がある。
 ルーチン:変換ルーチン(変換Exitとも呼ばれる)は、命名規則CON-で作成された特別な汎用モジュール。
VERSION_EXIT_XXXXX_INPUTおよびCONVERSION_EXIT_XXXX_OUTPUT。ここで、XXXXXは、変換ルーチンの5文字の名前。
各変換ルーチンには、入力と出力の両方の汎用モジュールが存在する。画面フィールドがこのドメインが関連付けられているデータエレメントを参照していて、変換ルーチンがドメインに対して設定されている場合、画面上の各入力に対して_INPUT汎用モジュールが呼び出され、画面出力に対して_OUTPUT汎用モジュールが呼び出される。 これにより、データを内部形式と外部形式に変換することが可能だ。
たとえば、ユーザーは日付を外部形式(DD-MM-YYYY)で入力し、この値は変換ルーチン(_INPUT汎用モジュール)に渡される。変換ルーチンは日付を内部形式(YYYYMMDD)に変換する。
この日付が画面に出力されると、日付は外部形式(_OUTPUT汎用モジュール)に変換され、ユーザーに表示される。
このフィールドでは、5文字の変換ルーチン名を設定できる。変換ルーチン名は、画面フィールドに直接割り当てることも可能だ。カスタム変換ルーチンを作成する場合は、変換ルーチンの命名規則に従って関数ビルダーで作成できる。変換Exit汎用モジュールには、1つの必須パラメーターをINPUTとして、1つの必須パラメーターをOUTPUTとして含める必要がある。入力パラメーターには値が変換され、出力パラメーターには変換された値が含まれる。
 符号:データ型が数値の場合、このオプションを選択すると、負の値の場合に負の符号を表示することが可能になる。
 大/小文字区別:文字タイプのフィールドの場合、このオプションを設定すると、値が大文字に変換されなくなる。たとえば、選択画面フィールドに値を入力すると、その値はプログラムに渡されるときに自動的に大文字に変換される。この値をフィールドのドメインで設定すると、値は変換されず、そのままプログラムフィールドに渡される。
 時間形式:時間フィールド(タイプTIMS)の場合、時間形式は12時間形式または24時間形式に設定できる。
 値の範囲タブでは、ドメインが関連付けられているデータエレメントを参照するフィールドの値の範囲を設定できる。 ここでは、固定値、間隔(値の範囲)、または両方の組み合わせを設定できる。 値の範囲は、基本データ型CHAR、NUMC、DEC、INT1、INT2、およびINT4に対して定義できる。 タイプCHARおよびNUMCのフィールドの場合、値の範囲は、ドメインが関連付けられているデータエレメントを参照する画面フィールドの有効な入力値を指定する。
入力フィールドには、検索ヘルプが添付されていない。値の範囲は入力ヘルプとして表示される。 ABAPプログラムおよびデータベースフィールドのデータオブジェクトのコンテンツでは、値の範囲は無視される。個別の値ごとにテキスト(短)を更新することができ、値範囲が入力ヘルプに使用されている場合は、入力ヘルプに表示される。
値テーブルは保守可能であり、外部キーを使用してテーブルフィールドにチェックテーブルが割り当てられると、チェックテーブルとして提案される。値テーブル自体はチェックをトリガーしない。
標準ドメインの場合、追加の固定値を維持するために固定値の追加を定義できる。追加の固定値はアップグレード時に失われない。ドメインには複数の固定値を追加することが可能だ。メニューパスGoTo Fixed Value Appendを使用して、ドメインの固定値追加を定義する。

検索ヘルプ

 検索は、画面フィールドの入力ヘルプを提供するのに使用できる。検索ヘルプは、画面フィールド、データエレメント、またはテーブルフィールドに割り当てることができる。入力ヘルプは、SAP システムの標準機能だ。アプリケーションを開発する際には、画面の入力ヘルプを設定して、ユーザーに一貫した UI エクスペリエンスを提供する必要がある。
入力ヘルプを使用するには、キーボードの (F4 キー) を押すか、画面フィールドの[入力ヘルプ ] ボタンをクリックする。入力ヘルプが呼び出されると、フィールドの入力可能なエントリが複数行に表示され、ユーザーは最適な行をダブルクリックして値を入力フィールドにコピーすることが可能だ。
入力は、ユーザーが適切な値を検索できるように、複数の検索パスと制限を提供するのに役立つ。たとえば、ユーザがプラント番号を入力する必要があるが、プラント名しか知らない場合、入力ヘルプを使用すると、ユーザはプラント名に基づいてプラント番号を検索することができる。
複数の検索パスが入力ヘルプのタブとして表示される。たとえば、単一の検索パス (単一のタブ) と複数の検索パス (複数のタブ) で検索が役立つことを示している。
ABAP データディクショナリで作成できる検索ヘルプには、次の 2 種類が存在する。
 ・基本検索ヘルプ
基本検索ヘルプは、入力ヘルプの単一の検索パスを提供するのに役立つ。複数の基本検索ヘルプを使用して、集合的な検索ヘルプを作成できる。
 ・複合検索ヘルプ
複合検索ヘルプでは、入力ヘルプの複数の検索パスが提供される。
 ・基本検索ヘルプ
 基本検索ヘルプは、単一のテーブルまたは投影ビューを使用して作成できる。複数のテーブルから検索ヘルプフィールドが必要な場合は、データベースビューまたはヘルプビューを定義し、検索ヘルプの選択方法として使用できる。
 次の手順では、基本検索ヘルプを作成する。
[ABAP データ ディクショナリ] 画面で、[検索ヘルプ] ラジオ ボタンを選択し、Z または Y から始まる検索ヘルプ名を入力して、[作成] ボタンをクリックする。
表示されるダイアログ ウィンドウで、[基本検索ヘルプ] を選択し、緑色のチェックマークをクリックする 。
以下のオプションを更新する。
 内容説明:わかりやすい内容説明を入力する。この説明は、検索ヘルプの検索に使用することが可能。
 選択メソッド:[データ収集]セクションで、データ選択に使用する必要があるテーブルまたはビューの名前(メンテナンスビューを除く)を入力する。
 テキストテーブル:選択テーブルにテキストテーブルがアタッチされている場合、データソースセクションの[テキストテーブル]フィールドに自動的に入力される。
 ダイアログtype:この設定は、検索ヘルプダイアログの表示方法に影響する。ドロップダウンメニューを使用して、次のオプションのいずれかを選択する。
 –値の直接表示:入力ヘルプが呼び出されると、該当対象一覧がすぐに表示される。ヒットリストが小さく、通常少数のレコードしか含まれていない場合は、このオプションを選択する。
 –範囲制限用ダイアログの表示:入力ヘルプが呼び出されると、値を制限するためのダイアログボックスが表示され、ヒットリストを制限することができる。可能なエントリのリストが通常非常に大きい場合は、このオプションを選択する。ヒットリストを制限すると、ユーザーのシステムパフォーマンスと明確さが向上する。
 –値セット依存のダイアログ:この設定により、ヒットリストをすぐに表示するか、制限ダイアログを表示するかを動的に決定できる。ヒットリストに含まれるエントリが100未満の場合は、すぐに表示される。ヒットリストに100を超えるエントリが含まれている場合は、値を制限するためのダイアログボックスが表示される。
 ホットキー:基本検索ヘルプが集合検索ヘルプで使用されている場合、ホットキーを使用すると、ユーザーはホットキーを使用して基本検索ヘルプを選択できる。 2文字の英数字の値を入力可能だ。
 拡張オプション:SAP GUI 7.40以降で機能する追加の拡張オプションは次の通りだ。
 –入力項目の提案検索:このオプションを選択すると、ユーザーが入力を開始すると、フィールドの下に検索ヘルプ値が自動的に表示される。これにより、(F4)を介して手動で検索ヘルプを呼び出す必要がなくなる。
 –全文あいまい検索(データベース固有):このオプションを選択すると、システムは複数の列にわたって検索を実行できるため、ユーザーは異なる列の値に基づいて入力値を識別できる。たとえば、ユーザーが顧客番号を知らない場合、[名前]または[住所]列のデータは、ユーザーが入力する顧客を識別するのに役立つ。
 –エラー許容全文検索の精度値:これにより、考慮すべき精度値を提供できる。たとえば、システムが検索を実行するときに値を正確に一致させるか、バリエーションを使用してスペルミスに対処する必要がある場合など。
 検索ヘルプExit:標準の検索ヘルプは、検索ヘルプ出口を使用して拡張できる。
 パラメータ:これらのオプションを使用すると、検索ヘルプに表示されるフィールドを維持できる。次の列は、パラメータテーブルの下にある。
 –検索ヘルプパラメータ:検索ヘルプに表示される選択テーブルのフィールドを入力する。
– IMP(IMPORTパラメータ):パラメータをインポートパラメータとして設定するためのフラグ。このパラメーターの値は、画面フィールドから検索ヘルプにインポートされる。
 – EXP(EXPORTパラメータ):エクスポートパラメータを設定するためのフラグ。このパラメーターの値は、画面フィールドにエクスポートされる。
 – LPos(一覧位置):ヒットリスト上のフィールドの位置を設定する。たとえば、値3が設定されている場合、フィールドは3番目の列として表示される。値がないか0が維持されている場合、このフィールドは非表示になる。
 – SPos(選択位置):制限ダイアログのフィールドの位置を設定する。値がないか0が維持されている場合、このフィールドは非表示になる。
 – SDis(選択表示):パラメーターを表示専用フィールドとして設定するためのフラグ。パラメータの内容はヒットリストを制限し、ユーザーは値を変更できない。このパラメーターには定数値を割り当てることができる。
 –DE(データエレメント):選択テーブルのフィールドに使用されるデータエレメントは、入力されたフィールド名に基づいて自動的に入力される。この検索ヘルプが割り当てられている画面項目では、このデータエレメントに対して更新されている文書を(F1)ヘルプとして使用する。
 –修正済み:自動入力されたデータエレメント名を変更する場合は、このフラグを選択して、データエレメントフィールドの入力を有効にする。
 –デフォルト値:パラメータに使用するデフォルト値を更新する。
必要なすべてのパラメーターを保守したら、検索ヘルプを有効化する。アプリケーションツールバーの[実行]ボタンを使用して、テストのために検索ヘルプを直接実行できる。

 ・複合検索ヘルプ
複数の検索ヘルプを使用して、集合的な検索ヘルプを作成することができる。複合検索ヘルプでは、ユーザーに複数の検索パスが提供され、各基本検索ヘルプがタブとして表示される。
基本検索ヘルプと同様に、複合検索ヘルプには、画面項目から値をインポートし、値を画面項目にエクスポートするためのインタフェースがある。複合検索ヘルプを作成する場合、基本検索のヘルプのすべての項目を含めるか、基本検索の選択項目のみを含めることができる。
次の手順では、集合的な検索ヘルプを作成する方法について説明する。

[検索ヘルプの作成] ウィンドウで、[集合検索ヘルプ] を選択し、緑色のチェックマークをクリックする。
[ディクショナリ: 検索ヘルプの変更]画面に、検索ヘルプパラメータと対応するデータエレメントを入力する。パラメーターのインポートフラグとエクスポートフラグを設定する。オプションで、各パラメーターのデフォルト値を設定可能だ。
[インクルード検索ヘルプ] タブをクリックし、集合的な検索ヘルプの一部として使用する検索ヘルプを含める。基本検索と集合検索ヘルプの両方を含めることが可能だ。
検索ヘルプ名にカーソルを置いたまま、割当ボタンをクリックする。
[Defineパラメータの割り当ての定義] ダイアログ ボックスが表示される。[はい] をクリックして割当を提案し、次の画面で[コピー ] をクリック。リストされているすべての検索ヘルプに対してこの手順を繰り返す。
表示されている各検索ヘルプでは、隠しフラグ を設定して、検索ヘルプを非表示にすることができる。これは、特定のシステムで特定の検索パスを非表示にする場合に便利だ。
[実行] ボタンをクリックして検索ヘルプをアクティブにして、テストする。

 ・検索ヘルプの割り当て
検索ヘルプは、画面項目に直接割り当てるか、データエレメントに対して管理し、そのデータエレメントを参照する場合に使用できる。
検索ヘルプを選択画面項目に割り当てるには、次のようにMATCHCODE オブジェクトを使用する。
PARAMETERS p_matnr TYPE matnr MATCHCODE OBJECT ZSH_DEMO_COLL.
一般画面の画面項目の場合、検索ヘルプは、フィールド属性の下の画面ペインタで割り当てることができる。
検索ヘルプは[さらにCharacteristics] タブの下のデータエレメントに割り当てることができる。[名前] フィールドに検索ヘルプ名を入力Name し、[パラメータ]フィールドの(F4) ヘルプを使用して、このフィールドに渡す検索ヘルプのパラメータを選択する。このデータエレメントを参照する画面フィールドは、画面フィールド属性値で上書きされない限り、検索ヘルプを自動的に継承する。

 ・検索ヘルプExit
検索ヘルプExitは、検索ヘルプの標準機能を拡張するために使用される。これにより、検索ヘルプ機能を動的に操作できる。たとえば、列の幅を調整したり、2 つの列の値を組み合わせたりできる。検索ヘルプExitは、定義済みインタフェースを持つ汎用モジュールとして実装される。
デモ汎用モジュールF4IF_SHLP_EXIT_EXAMPLEは、検索ヘルプExit用の独自の汎用モジュールを作成するための参照として使用できる。
ヘルプの検索の終了は、ヘルプ プロセッサによって異なるイベントに対して呼び出される。
必要な検索パスを選択するためのダイアログボックスを表示する前に(一括検索ヘルプの場合のみ)
基本検索ヘルプの(F4)プロセスを開始する前に
検索条件を入力するためのダイアログボックスを表示する前に
データを選択する前に
ヒットリストを表示する前に
ユーザーが選択した値を入力テンプレートに戻す前に

これらのステップは、汎用モジュールパラメータCALLCONTROL-STEPに渡される (関数ビルダーのデモ汎用モジュールF4IF_SHLP_EXIT_EXAMPLE参照)。これは各ステップに適したロジックを実装できる IF条件を使用して、フィールドをチェックする。

オブジェクトのロック

 ロックオブジェクトは、アプリケーションで論理ロック機能を提供するために使用される。たとえば、2人のユーザーが同じドキュメントを同時に編集できないようにする場合は、ロック オブジェクトを実装して、別のユーザーが既に編集用にドキュメントを開いている場合に、そのユーザーがドキュメントを開くことを制限することが可能だ。
ロックオブジェクトは ABAP データディクショナリで定義される。ロックオブジェクトは、オブジェクトをロックおよびロック解除するために ABAP プログラムで呼び出すことができる2 つの汎用モジュールENQUEUE と DEQUEUEを作成する。
ABAP データディクショナリでロックオブジェクトを登録する方法は次の通りだ。
ABAP データディクショナリの第一画面で、[ロックオブジェクト]ラジオボタンを選択する。ロック オブジェクトの名前を入力し、[ 作成] をクリックする。ロック オブジェクト名はEZで始まる必要があるので注意。
 [ディクショナリ: ロックオブジェクトの変更]画面で、 [テーブル] タブを選択する。一次テーブルの名前を入力し、[ロックモード] を選択する。ロック モードは、ロックの実装方法を決定する。
次のオプションは、一次テーブルセクションのロックモードに設定できる。
 書込ロック(排他ロック)Exclusive Locks :排他ロックが適用されると、ロックされたデータは1人のユーザーだけが表示または編集できる。別の排他ロックまたは共有ロックのいずれかに対するそれ以降の要求はすべて拒否される。
 共有ロック(読み取りロック)Shared Lock :共有ロックが適用されると、複数のユーザーが読み取りモードでデータにアクセスできる。ただし、1人のユーザーがデータを処理するために変更モードに入るとすぐに、2人目のユーザーはデータにアクセスできなくなる。異なるユーザーからのものであっても、それ以上の共有ロックからのリクエストは受け入れられる。排他ロックは拒否される。
 排他、累積なし(排他的であるが累積的でないロックExclusive but Not Cumulative lock):同じトランザクションで複数回要求できる排他的ロックとは異なり、排他的で非累積的なロックは、同じトランザクションで1回だけ要求できる。後続の各ロック要求は拒否される。
 オプティミスティックロック設定(O):オプティミスティックロックは、最初は共有ロックのように動作し、排他ロックに変換できる。
 オプティミスティックロックのプロモート’O’から’E’に変換(楽観的ロックPromote Optimistic Lock(R)の昇格):楽観的ロックを排他ロックに変換する。
 コンフリクトチェック(衝突チェック/昇格チェック( ‘U’、 ‘V’、 ‘W’、 ‘C’)):それぞれのロック( ‘E’、 ‘S’、 ‘X’、 ‘O’)の1つが可能かどうかをチェックする。ただし、ロックは設定しない。必要に応じて、さらにセカンダリテーブルをロックオブジェクトに追加することが可能。


[ロックParam]タブを選択する。テーブルのキーフィールドは自動的に入力される。ツールバーの[有効化]ボタンをクリックして、ロックを確認して有効化する。
ロックオブジェクトが有効化されると、2 つの汎用モジュールが生成される。
ENQUEUE_obj名とDEQUEUE_obj名。
これらの汎用モジュールは、ABAP プログラムで呼び出して、ロックを設定および解除することができる。ロック・パラメーターは、ロックの設定または解放要求の間に汎用モジュールに渡される。

コメント

タイトルとURLをコピーしました