C_ABAPD_2309 試験問題 31
内部テーブルのセカンダリ キーの特徴は何ですか? 注: この質問には 3 つの正解があります。
正解: A,B,D
説明
セカンダリ キーは、プライマリ キーの一部ではないフィールドを使用してテーブルへのアクセスを最適化するために内部テーブルに定義できる追加のキーです。セカンダリ キーは、テーブルの種類とキーの一意性に応じて、ソートまたはハッシュ化できます。セカンダリ キーには次の特性があります1。
A) 実際に内部テーブルから読み取るときは、セカンダリ キーを明示的に選択する必要があります。つまり、READ TABLE または LOOP AT ステートメントを使用して内部テーブルにアクセスするときは、USING KEY オプションを使用して、使用するセカンダリ キーを指定する必要があります。たとえば、次のステートメントは、セカンダリ キー sec_key を使用して内部テーブル itab を読み取ります。
キー sec_key を使用してテーブル itab をデータ (wa) に読み取ります。
セカンダリ キーを指定しない場合は、デフォルトでプライマリ キーが使用されます2。
B) あらゆる種類の内部テーブルに複数のセカンダリ キーが許可されます。つまり、テーブルの種類に関係なく、内部テーブルに複数のセカンダリ キーを定義できます。たとえば、次のステートメントは、2 つのセカンダリ キー sec_key_1 と sec_key_2 を持つ内部テーブル itab を定義します。
データ itab タイプ 一意でないキー sec_key_1 コンポーネント field1 field2 sec_key_2 コンポーネント field3 field4 を持つ ty_itab のソート済みテーブル。
次に、内部テーブル 1 にアクセスするときに使用するセカンダリ キーを選択できます。
D) ソートされたセカンダリ キーは一意である必要はありません。つまり、キー フィールドの重複値を許可する内部テーブルにソートされたセカンダリ キーを定義できます。ソートされたセカンダリ キーは、キー フィールドが指定された順序で定義される、内部テーブルの定義済みソート順序を維持します。たとえば、次のステートメントは、内部テーブル itab にソートされたセカンダリ キー sec_key を定義し、テーブルを field1 で昇順、field2 で降順でソートします。
データ itab タイプ ty_itab の標準テーブル、一意でないソート キー sec_key コンポーネント field1 ASCENDING field2 DESCENDING。
次に、線形検索よりも高速なバイナリ検索アルゴリズムを使用して、ソートされたセカンダリ キーを使用して内部テーブルにアクセスできます3。
次の理由は、内部テーブルのセカンダリ キーの特性ではありません。
C) ハッシュされたセカンダリ キーは一意である必要はありません。ハッシュされたセカンダリ キーは一意である必要があるため、これは誤りです。つまり、キー フィールドに重複値を許可しない内部テーブルに対してのみ、ハッシュされたセカンダリ キーを定義できます。ハッシュされたセカンダリ キーには、内部テーブルの定義済みソート順序はありませんが、ハッシュ アルゴリズムを使用してテーブル行を保存およびアクセスします。たとえば、次のステートメントは、フィールド 1 とフィールド 2 でテーブルをハッシュする内部テーブル itab のハッシュされたセカンダリ キー sec_key を定義します。
データ itab タイプ ty_itab の標準テーブル、一意のハッシュ キー sec_key コンポーネント field1 field2。
その後、ハッシュされたセカンダリ キーと直接アクセス アルゴリズムを使用して内部テーブルにアクセスできるようになります。これは非常に高速です。
E) セカンダリ キーは標準テーブルにのみ作成できます。これは誤りです。セカンダリ キーは、標準テーブル、ソート テーブル、ハッシュ テーブルなど、あらゆる種類の内部テーブルに作成できます。ただし、セカンダリ キーのタイプは内部テーブルのタイプによって異なります。たとえば、標準テーブルにはソートまたはハッシュされたセカンダリ キーを設定でき、ソート テーブルにはソートされたセカンダリ キーを設定でき、ハッシュ テーブルにはハッシュされたセカンダリ キーを設定できます1。
参照: 1: セカンダリ テーブル キー - ABAP キーワード ドキュメント 2: READ TABLE - ABAP キーワード ドキュメント 3: ソートされたテーブル - ABAP キーワード ドキュメント : ハッシュ テーブル - ABAP キーワード ドキュメント
セカンダリ キーは、プライマリ キーの一部ではないフィールドを使用してテーブルへのアクセスを最適化するために内部テーブルに定義できる追加のキーです。セカンダリ キーは、テーブルの種類とキーの一意性に応じて、ソートまたはハッシュ化できます。セカンダリ キーには次の特性があります1。
A) 実際に内部テーブルから読み取るときは、セカンダリ キーを明示的に選択する必要があります。つまり、READ TABLE または LOOP AT ステートメントを使用して内部テーブルにアクセスするときは、USING KEY オプションを使用して、使用するセカンダリ キーを指定する必要があります。たとえば、次のステートメントは、セカンダリ キー sec_key を使用して内部テーブル itab を読み取ります。
キー sec_key を使用してテーブル itab をデータ (wa) に読み取ります。
セカンダリ キーを指定しない場合は、デフォルトでプライマリ キーが使用されます2。
B) あらゆる種類の内部テーブルに複数のセカンダリ キーが許可されます。つまり、テーブルの種類に関係なく、内部テーブルに複数のセカンダリ キーを定義できます。たとえば、次のステートメントは、2 つのセカンダリ キー sec_key_1 と sec_key_2 を持つ内部テーブル itab を定義します。
データ itab タイプ 一意でないキー sec_key_1 コンポーネント field1 field2 sec_key_2 コンポーネント field3 field4 を持つ ty_itab のソート済みテーブル。
次に、内部テーブル 1 にアクセスするときに使用するセカンダリ キーを選択できます。
D) ソートされたセカンダリ キーは一意である必要はありません。つまり、キー フィールドの重複値を許可する内部テーブルにソートされたセカンダリ キーを定義できます。ソートされたセカンダリ キーは、キー フィールドが指定された順序で定義される、内部テーブルの定義済みソート順序を維持します。たとえば、次のステートメントは、内部テーブル itab にソートされたセカンダリ キー sec_key を定義し、テーブルを field1 で昇順、field2 で降順でソートします。
データ itab タイプ ty_itab の標準テーブル、一意でないソート キー sec_key コンポーネント field1 ASCENDING field2 DESCENDING。
次に、線形検索よりも高速なバイナリ検索アルゴリズムを使用して、ソートされたセカンダリ キーを使用して内部テーブルにアクセスできます3。
次の理由は、内部テーブルのセカンダリ キーの特性ではありません。
C) ハッシュされたセカンダリ キーは一意である必要はありません。ハッシュされたセカンダリ キーは一意である必要があるため、これは誤りです。つまり、キー フィールドに重複値を許可しない内部テーブルに対してのみ、ハッシュされたセカンダリ キーを定義できます。ハッシュされたセカンダリ キーには、内部テーブルの定義済みソート順序はありませんが、ハッシュ アルゴリズムを使用してテーブル行を保存およびアクセスします。たとえば、次のステートメントは、フィールド 1 とフィールド 2 でテーブルをハッシュする内部テーブル itab のハッシュされたセカンダリ キー sec_key を定義します。
データ itab タイプ ty_itab の標準テーブル、一意のハッシュ キー sec_key コンポーネント field1 field2。
その後、ハッシュされたセカンダリ キーと直接アクセス アルゴリズムを使用して内部テーブルにアクセスできるようになります。これは非常に高速です。
E) セカンダリ キーは標準テーブルにのみ作成できます。これは誤りです。セカンダリ キーは、標準テーブル、ソート テーブル、ハッシュ テーブルなど、あらゆる種類の内部テーブルに作成できます。ただし、セカンダリ キーのタイプは内部テーブルのタイプによって異なります。たとえば、標準テーブルにはソートまたはハッシュされたセカンダリ キーを設定でき、ソート テーブルにはソートされたセカンダリ キーを設定でき、ハッシュ テーブルにはハッシュされたセカンダリ キーを設定できます1。
参照: 1: セカンダリ テーブル キー - ABAP キーワード ドキュメント 2: READ TABLE - ABAP キーワード ドキュメント 3: ソートされたテーブル - ABAP キーワード ドキュメント : ハッシュ テーブル - ABAP キーワード ドキュメント
C_ABAPD_2309 試験問題 32
RESTful アプリケーション プログラミング モデルでデータベース テーブルを作成した後、次に何を作成しますか?
正解: B
説明
RESTful アプリケーション プログラミング モデル (RAP) でデータベース テーブルを作成したら、次のステップはデータベース テーブルに投影ビューを作成することです。投影ビューは、テーブル、ビュー、関連付けなど、1 つ以上のデータ ソースのビューを定義する CDS アーティファクトです。投影ビューでは、データ ソースのフィールドを選択、名前変更、または集計できますが、読み取り専用かどうかなどのフィールドのプロパティを変更することはできません。フィールドのプロパティは、データ ソースまたはビジネス オブジェクトの動作定義から継承されます12。例:
次のコードスニペットは、データベーステーブル上の投影ビューZI_AGENCYを定義します。
/DMO/代理店:
ビュー ZI_AGENCY を、/dmo/agency から選択 { key agency_id、agency_name、street、city、region、postal_code、country、phone_number、url } として定義します。投影ビューは、データベース テーブルのデータをサービス定義に公開するために使用されます。これは、RAP の次のステップです。サービス定義は、サービスのインターフェイスとバインディングを定義する CDS アーティファクトです。
サービスは、1 つ以上のビジネス オブジェクトのデータと機能を OData、InA、または SQL サービスとして公開する CDS エンティティです。サービス定義では、サービスのフィールドのプロパティ (フィルタリング可能、並べ替え可能、集計可能など) を指定できます12。例:
次のコード スニペットは、投影ビュー ZI_AGENCY を OData サービスとして公開するサービス定義 ZI_AGENCY_SRV を定義します。
サービス ZI_AGENCY_SRV を定義します { ZI_AGENCY を Agency として公開します。 }
以下のいずれも実行できません。
A) メタデータ拡張: メタデータ拡張は、ビジネス オブジェクト、サービス、投影ビューなどの CDS エンティティの追加注釈を定義する CDS アーティファクトです。メタデータ拡張では、CDS エンティティのフィールドのプロパティを UI または分析目的で指定できます (表示、編集可能、非表示など)。ただし、メタデータ拡張は、データベース テーブルのデータをサービス定義に公開する必要がないため、RAP でデータベース テーブルを作成した後の次のステップではありません。メタデータ拡張は、後で作成して、サービスを使用する UI または分析アプリケーションをカスタマイズできます 12。
C) データ モデル ビュー: データ モデル ビューは、テーブル、ビュー、関連付けなどの 1 つ以上のデータ ソースのビューを定義する CDS アーティファクトです。データ モデル ビューでは、データ ソースのフィールドを選択、名前変更、または集計できます。また、フィールドのプロパティ (読み取り専用かどうかなど) を変更することもできます。フィールドのプロパティは、データ モデル ビューの注釈または動作定義によって定義されます。データ モデル ビューは、顧客、注文、製品などのビジネス エンティティまたは概念を表す CDS エンティティであるビジネス オブジェクトのデータ モデルを定義するために使用されます。
ただし、データ モデル ビューは、RAP でデータベース テーブルを作成した後の次のステップではありません。これは、データベース テーブルのデータをサービス定義に公開する必要がないためです。データ モデル ビューは、後で作成して、データベース テーブルをデータ ソースとして使用するビジネス オブジェクトを定義することができます12。
D) サービス定義: サービス定義は、サービスのインターフェイスとバインディングを定義する CDS アーティファクトです。サービスは、1 つ以上のビジネス オブジェクトのデータと機能を OData、InA、または SQL サービスとして公開する CDS エンティティです。サービス定義では、サービスのフィールドのプロパティ (フィルター可能、並べ替え可能、集計可能など) を指定できます。ただし、サービス定義は、RAP でデータベース テーブルを作成した後の次のステップではありません。データベース テーブルのデータを公開するには、投影ビューまたはデータ モデル ビューが必要です。サービス定義は、データベース テーブルに投影ビューまたはデータ モデル ビューを作成した後に作成できます12。
参照: 1: ABAP CDS - データ定義 - ABAP キーワード ドキュメント - SAP オンライン ヘルプ 2: ABAP CDS - サービス定義 - ABAP キーワード ドキュメント - SAP オンライン ヘルプ
RESTful アプリケーション プログラミング モデル (RAP) でデータベース テーブルを作成したら、次のステップはデータベース テーブルに投影ビューを作成することです。投影ビューは、テーブル、ビュー、関連付けなど、1 つ以上のデータ ソースのビューを定義する CDS アーティファクトです。投影ビューでは、データ ソースのフィールドを選択、名前変更、または集計できますが、読み取り専用かどうかなどのフィールドのプロパティを変更することはできません。フィールドのプロパティは、データ ソースまたはビジネス オブジェクトの動作定義から継承されます12。例:
次のコードスニペットは、データベーステーブル上の投影ビューZI_AGENCYを定義します。
/DMO/代理店:
ビュー ZI_AGENCY を、/dmo/agency から選択 { key agency_id、agency_name、street、city、region、postal_code、country、phone_number、url } として定義します。投影ビューは、データベース テーブルのデータをサービス定義に公開するために使用されます。これは、RAP の次のステップです。サービス定義は、サービスのインターフェイスとバインディングを定義する CDS アーティファクトです。
サービスは、1 つ以上のビジネス オブジェクトのデータと機能を OData、InA、または SQL サービスとして公開する CDS エンティティです。サービス定義では、サービスのフィールドのプロパティ (フィルタリング可能、並べ替え可能、集計可能など) を指定できます12。例:
次のコード スニペットは、投影ビュー ZI_AGENCY を OData サービスとして公開するサービス定義 ZI_AGENCY_SRV を定義します。
サービス ZI_AGENCY_SRV を定義します { ZI_AGENCY を Agency として公開します。 }
以下のいずれも実行できません。
A) メタデータ拡張: メタデータ拡張は、ビジネス オブジェクト、サービス、投影ビューなどの CDS エンティティの追加注釈を定義する CDS アーティファクトです。メタデータ拡張では、CDS エンティティのフィールドのプロパティを UI または分析目的で指定できます (表示、編集可能、非表示など)。ただし、メタデータ拡張は、データベース テーブルのデータをサービス定義に公開する必要がないため、RAP でデータベース テーブルを作成した後の次のステップではありません。メタデータ拡張は、後で作成して、サービスを使用する UI または分析アプリケーションをカスタマイズできます 12。
C) データ モデル ビュー: データ モデル ビューは、テーブル、ビュー、関連付けなどの 1 つ以上のデータ ソースのビューを定義する CDS アーティファクトです。データ モデル ビューでは、データ ソースのフィールドを選択、名前変更、または集計できます。また、フィールドのプロパティ (読み取り専用かどうかなど) を変更することもできます。フィールドのプロパティは、データ モデル ビューの注釈または動作定義によって定義されます。データ モデル ビューは、顧客、注文、製品などのビジネス エンティティまたは概念を表す CDS エンティティであるビジネス オブジェクトのデータ モデルを定義するために使用されます。
ただし、データ モデル ビューは、RAP でデータベース テーブルを作成した後の次のステップではありません。これは、データベース テーブルのデータをサービス定義に公開する必要がないためです。データ モデル ビューは、後で作成して、データベース テーブルをデータ ソースとして使用するビジネス オブジェクトを定義することができます12。
D) サービス定義: サービス定義は、サービスのインターフェイスとバインディングを定義する CDS アーティファクトです。サービスは、1 つ以上のビジネス オブジェクトのデータと機能を OData、InA、または SQL サービスとして公開する CDS エンティティです。サービス定義では、サービスのフィールドのプロパティ (フィルター可能、並べ替え可能、集計可能など) を指定できます。ただし、サービス定義は、RAP でデータベース テーブルを作成した後の次のステップではありません。データベース テーブルのデータを公開するには、投影ビューまたはデータ モデル ビューが必要です。サービス定義は、データベース テーブルに投影ビューまたはデータ モデル ビューを作成した後に作成できます12。
参照: 1: ABAP CDS - データ定義 - ABAP キーワード ドキュメント - SAP オンライン ヘルプ 2: ABAP CDS - サービス定義 - ABAP キーワード ドキュメント - SAP オンライン ヘルプ
C_ABAPD_2309 試験問題 33
この注釈の効果は何ですか? 注: この質問には 2 つの正解があります。


正解: A,B
説明
注釈 @Environment.systemField: #LANGUAGE は、ABAP システム フィールド sy-langu を CDS ビューまたは CDS テーブル関数の入力パラメータに割り当てるために使用されます。これにより、Open SQL での暗黙的なパラメータ渡しが可能になります。つまり、sy-langu の値は、WHERE 句で明示的に指定しなくても、CDS ビューに自動的に渡されます。これは、注釈付き CDS ビューをデータ ソースとして使用する CDS ビューにも適用されます。つまり、sy-langu の値は、ネストされた CDS ビュー (ビュー上のビュー) に伝播されます12。例:
次のコード スニペットは、@Environment.systemField: #LANGUAGE で注釈が付けられた入力パラメータ p_langu を持つ CDS ビュー ZI_FLIGHT_TEXTS を定義します。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_TEXTS を定義します。
#LANGUAGE as select from sflight left outer join scarr on sflight.carrid = scarr.carrid left outer join stext on scarr.carrid = stext.carrid { sflight.carrid, sflight.connid, sflight.fldate, scarr.carrname, stext.text as carrtext } where stext.langu = :p_langu 次のコード スニペットは、WHERE 句で p_langu の値を指定せずに、ABAP で CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。sy-langu の値は、CDS ビューに自動的に渡されます。
zi_flight_texts から carrid、connid、fldate、carrname、carrtext を選択して、テーブル @DATA(lt_flights) に追加します。
次のコード スニペットは、CDS ビュー ZI_FLIGHT_TEXTS を別の CDS ビュー ZI_FLIGHT_REPORT で使用する方法を示しています。sy-langu の値は、ネストされた CDS ビュー ZI_FLIGHT_TEXTS に自動的に渡されます。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_REPORT を定義します。
#LANGUAGE as select from zi_flight_texts(p_langu) { carrid, connid, fldate, carrname, carrtext, count(*) as Flight_count } group by carrid, connid, fldate, carrname, carrtext 注釈 @Environment.systemField: #LANGUAGE は、デフォルト値を独自の値で上書きする可能性を防ぐものではありません。ABAP または別の CDS ビューのいずれかで、WHERE 句の入力パラメータ p_langu に別の値を指定することは可能です。これにより、sy-langu の値が上書きされ、指定された値が CDS ビュー12 に渡されます。例:
次のコード スニペットは、WHERE 句で p_langu の値を指定して ABAP の CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。sy-langu の値の代わりに値 'E' が CDS ビューに渡されます。
carrid、connid、fldate、carrname、carrtext を zi_flight_texts から選択し、p_langu = 'E' を指定して、@DATA(lt_flights) テーブルに追加します。
次のコード スニペットは、WHERE 句で p_langu の値を指定して、別の CDS ビュー ZI_FLIGHT_REPORT の CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。ネストされた CDS ビュー ZI_FLIGHT_TEXTS には、sy-langu の値ではなく、値 'E' が渡されます。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_REPORT を定義します。
#LANGUAGE as select from zi_flight_texts(p_langu) { carrid, connid, fldate, carrname, carrtext, count(*) as Flight_count } where p_langu = 'E' group by carrid, connid, fldate, carrname, carrtext 参照: 1: ABAP CDS - param_annot - ABAP キーワード ドキュメント - SAP オンライン ヘルプ 2: ABAP CDS - session_variable - ABAP キーワード ドキュメント - SAP オンライン ヘルプ
注釈 @Environment.systemField: #LANGUAGE は、ABAP システム フィールド sy-langu を CDS ビューまたは CDS テーブル関数の入力パラメータに割り当てるために使用されます。これにより、Open SQL での暗黙的なパラメータ渡しが可能になります。つまり、sy-langu の値は、WHERE 句で明示的に指定しなくても、CDS ビューに自動的に渡されます。これは、注釈付き CDS ビューをデータ ソースとして使用する CDS ビューにも適用されます。つまり、sy-langu の値は、ネストされた CDS ビュー (ビュー上のビュー) に伝播されます12。例:
次のコード スニペットは、@Environment.systemField: #LANGUAGE で注釈が付けられた入力パラメータ p_langu を持つ CDS ビュー ZI_FLIGHT_TEXTS を定義します。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_TEXTS を定義します。
#LANGUAGE as select from sflight left outer join scarr on sflight.carrid = scarr.carrid left outer join stext on scarr.carrid = stext.carrid { sflight.carrid, sflight.connid, sflight.fldate, scarr.carrname, stext.text as carrtext } where stext.langu = :p_langu 次のコード スニペットは、WHERE 句で p_langu の値を指定せずに、ABAP で CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。sy-langu の値は、CDS ビューに自動的に渡されます。
zi_flight_texts から carrid、connid、fldate、carrname、carrtext を選択して、テーブル @DATA(lt_flights) に追加します。
次のコード スニペットは、CDS ビュー ZI_FLIGHT_TEXTS を別の CDS ビュー ZI_FLIGHT_REPORT で使用する方法を示しています。sy-langu の値は、ネストされた CDS ビュー ZI_FLIGHT_TEXTS に自動的に渡されます。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_REPORT を定義します。
#LANGUAGE as select from zi_flight_texts(p_langu) { carrid, connid, fldate, carrname, carrtext, count(*) as Flight_count } group by carrid, connid, fldate, carrname, carrtext 注釈 @Environment.systemField: #LANGUAGE は、デフォルト値を独自の値で上書きする可能性を防ぐものではありません。ABAP または別の CDS ビューのいずれかで、WHERE 句の入力パラメータ p_langu に別の値を指定することは可能です。これにより、sy-langu の値が上書きされ、指定された値が CDS ビュー12 に渡されます。例:
次のコード スニペットは、WHERE 句で p_langu の値を指定して ABAP の CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。sy-langu の値の代わりに値 'E' が CDS ビューに渡されます。
carrid、connid、fldate、carrname、carrtext を zi_flight_texts から選択し、p_langu = 'E' を指定して、@DATA(lt_flights) テーブルに追加します。
次のコード スニペットは、WHERE 句で p_langu の値を指定して、別の CDS ビュー ZI_FLIGHT_REPORT の CDS ビュー ZI_FLIGHT_TEXTS を使用する方法を示しています。ネストされた CDS ビュー ZI_FLIGHT_TEXTS には、sy-langu の値ではなく、値 'E' が渡されます。
パラメータ p_langu : syst_langu @<Environment.systemField: でビュー ZI_FLIGHT_REPORT を定義します。
#LANGUAGE as select from zi_flight_texts(p_langu) { carrid, connid, fldate, carrname, carrtext, count(*) as Flight_count } where p_langu = 'E' group by carrid, connid, fldate, carrname, carrtext 参照: 1: ABAP CDS - param_annot - ABAP キーワード ドキュメント - SAP オンライン ヘルプ 2: ABAP CDS - session_variable - ABAP キーワード ドキュメント - SAP オンライン ヘルプ
C_ABAPD_2309 試験問題 34
どのパターンで例外が発生しますか? 注: この質問には 3 つの正解があります。
正解: A,C,E
説明
例外が発生するパターンは、コンストラクター演算子 EXACT を使用してロスレス割り当てまたは計算を実行するが、その結果をデータ損失なしでターゲット データ型に変換できないパターンです。各パターンの説明は次のとおりです。
A: このパターンでは、計算 2 * 3 の結果が 6 であるため、整数部分を失わずに小数点 2 桁のパック数に割り当てることができないため、例外 CX_SY_CONVERSION_LOST が発生します。演算子 -U は、計算タイプ decfloat34 でロスレス計算を実行するために使用されます。
B: このパターンでは、部分文字列式 gco_string+5(5) の結果が '6789A' であり、データ損失なしで文字列に割り当てることができるため、例外は発生しません。演算子 EXACT # は、引数のデータ型を使用してロスレス割り当てを実行するために使用されます。
C: このパターンでは、部分文字列式 gco_string+5(6) の結果が '6789AB' であるため、最後の文字を失うことなく長さ 5 の文字フィールドに割り当てることができないため、例外 CX_SY_CONVERSION_LOST が発生します。演算子 EXACT は、ターゲット フィールドのデータ型を使用してロスレス割り当てを実行するために使用されます。
D: このパターンでは、計算 2 / 2 の結果が 1 であり、データ損失なしで小数点以下 3 桁のパック数に割り当てることができるため、例外は発生しません。演算子 -U は、計算タイプ decfloat34 でロスレス計算を実行するために使用されます。
E: このパターンでは、定数 gco_date に日付データ型の無効な値 '20331233' が含まれており、有効な日付に変換できないため、例外 CX_SY_CONVERSION_ERROR が発生します。
演算子 EXACT は、ターゲット フィールドのデータ型を使用してロスレス割り当てを実行するために使用されます。
参考資料: EXACT - ロスレス演算子 - ABAP キーワード ドキュメント、ロスレス割り当て - ABAP キーワード ドキュメント
例外が発生するパターンは、コンストラクター演算子 EXACT を使用してロスレス割り当てまたは計算を実行するが、その結果をデータ損失なしでターゲット データ型に変換できないパターンです。各パターンの説明は次のとおりです。
A: このパターンでは、計算 2 * 3 の結果が 6 であるため、整数部分を失わずに小数点 2 桁のパック数に割り当てることができないため、例外 CX_SY_CONVERSION_LOST が発生します。演算子 -U は、計算タイプ decfloat34 でロスレス計算を実行するために使用されます。
B: このパターンでは、部分文字列式 gco_string+5(5) の結果が '6789A' であり、データ損失なしで文字列に割り当てることができるため、例外は発生しません。演算子 EXACT # は、引数のデータ型を使用してロスレス割り当てを実行するために使用されます。
C: このパターンでは、部分文字列式 gco_string+5(6) の結果が '6789AB' であるため、最後の文字を失うことなく長さ 5 の文字フィールドに割り当てることができないため、例外 CX_SY_CONVERSION_LOST が発生します。演算子 EXACT は、ターゲット フィールドのデータ型を使用してロスレス割り当てを実行するために使用されます。
D: このパターンでは、計算 2 / 2 の結果が 1 であり、データ損失なしで小数点以下 3 桁のパック数に割り当てることができるため、例外は発生しません。演算子 -U は、計算タイプ decfloat34 でロスレス計算を実行するために使用されます。
E: このパターンでは、定数 gco_date に日付データ型の無効な値 '20331233' が含まれており、有効な日付に変換できないため、例外 CX_SY_CONVERSION_ERROR が発生します。
演算子 EXACT は、ターゲット フィールドのデータ型を使用してロスレス割り当てを実行するために使用されます。
参考資料: EXACT - ロスレス演算子 - ABAP キーワード ドキュメント、ロスレス割り当て - ABAP キーワード ドキュメント
C_ABAPD_2309 試験問題 35
内部テーブルへのアクセスが高速になるのは次のうちどれですか? 注: この質問には 3 つの正解があります。
正解: B,D,E
適切なテーブル タイプを使用し、テーブル キーを指定することにより、内部テーブルへのアクセスを最適化できます。
テーブル キーは、テーブル内の行を一意に識別し、テーブルの並べ替え順序を決定するフィールドのセットです。テーブル キーは、主キーまたはセカンダリ キーのいずれかになります。主キーはテーブル タイプとテーブル定義によって定義され、セカンダリ キーは KEY ステートメント 1 を使用してユーザーによって定義されます。
次の結果、内部テーブルへのアクセスが高速化されます。
* B. ソートされた内部テーブルで、主キーを完全に指定します。ソートされた内部テーブルは、テーブル定義の主キーによって定義される定義済みのソート順序を維持するテーブルタイプです。主キーは一意でも非一意でもかまいません。ソートされた内部テーブルには、
* 主キーまたはテーブル インデックスを使用します。主キーを使用したアクセスは、システムがバイナリ検索アルゴリズムを使用して行を検索できるため、テーブル インデックスを使用したアクセスよりも高速です。ただし、主キーは完全に指定する必要があります。つまり、主キーのすべてのフィールドが正しい順序で、ギャップなしで指定される必要があります2。
* D. ハッシュ内部テーブルで、主キーをギャップなしで左から部分的に指定します。ハッシュ内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、ハッシュ アルゴリズムを使用して行を保存およびアクセスします。ハッシュ内部テーブルの主キーは一意である必要があり、変更できません。ハッシュ内部テーブルには、テーブル インデックスではなく、主キーを使用してのみアクセスできます。主キーを使用したアクセスは非常に高速です。これは、システムがハッシュ アルゴリズムを使用して行の位置を直接計算できるためです。主キーはギャップなしで左から部分的に指定できます。つまり、主キーの一部のフィールドは、右端のフィールドであり、指定されたフィールド間にギャップがない限り省略できます。
* E. ハッシュ内部テーブルで、主キーを完全に指定します。ハッシュ内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、ハッシュ アルゴリズムを使用して行を保存およびアクセスします。ハッシュ内部テーブルの主キーは一意である必要があり、変更できません。ハッシュ内部テーブルには、テーブル インデックスではなく、主キーを使用してのみアクセスできます。主キーを使用したアクセスは非常に高速です。これは、システムがハッシュ アルゴリズムを使用して行の位置を直接計算できるためです。主キーは完全に指定できます。つまり、主キーのすべてのフィールドを正しい順序で指定する必要があります。
次の理由により、内部テーブルへのアクセスは高速化されません。
* A. ソートされた内部テーブルで、主キーを左から隙間なく部分的に指定します。ソートされた内部テーブルは、テーブル定義の主キーによって定義される定義済みのソート順序を維持するテーブル タイプです。主キーは一意でも非一意でもかまいません。ソートされた内部テーブルには、主キーまたはテーブル インデックスを使用してアクセスできます。主キーを使用したアクセスは、システムがバイナリ検索アルゴリズムを使用して行を検索できるため、テーブル インデックスを使用したアクセスよりも高速です。
ただし、主キーは完全に指定する必要があります。つまり、主キーのすべてのフィールドが正しい順序で、ギャップなしで指定される必要があります。主キーが左からギャップなしで部分的に指定されている場合、システムはバイナリ検索アルゴリズムを使用できず、より遅い線形検索を実行する必要があります2。
* C. 標準内部テーブルで、主キーを左から隙間なく部分的に指定します。標準内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、行の順次的な保存とアクセスを使用します。標準内部テーブルの主キーは標準キーであり、テーブル行のすべてのフィールドが定義順に構成されます。標準内部テーブルには、主キーまたはテーブル インデックスを使用してアクセスできます。主キーを使用したアクセスは、行を見つけるためにシステムが線形検索を実行する必要があるため、テーブル インデックスを使用したアクセスよりも遅くなります。
主キーは、ギャップなしで左から部分的に指定できますが、システムは依然として線形検索を実行する必要があるため、アクセス速度は向上しません。
参照: 1: 内部テーブル - 概要 - ABAP キーワード ドキュメント 2: ソートされたテーブル - ABAP キーワード ドキュメント : ハッシュ テーブル - ABAP キーワード ドキュメント : 標準テーブル - ABAP キーワード ドキュメント
テーブル キーは、テーブル内の行を一意に識別し、テーブルの並べ替え順序を決定するフィールドのセットです。テーブル キーは、主キーまたはセカンダリ キーのいずれかになります。主キーはテーブル タイプとテーブル定義によって定義され、セカンダリ キーは KEY ステートメント 1 を使用してユーザーによって定義されます。
次の結果、内部テーブルへのアクセスが高速化されます。
* B. ソートされた内部テーブルで、主キーを完全に指定します。ソートされた内部テーブルは、テーブル定義の主キーによって定義される定義済みのソート順序を維持するテーブルタイプです。主キーは一意でも非一意でもかまいません。ソートされた内部テーブルには、
* 主キーまたはテーブル インデックスを使用します。主キーを使用したアクセスは、システムがバイナリ検索アルゴリズムを使用して行を検索できるため、テーブル インデックスを使用したアクセスよりも高速です。ただし、主キーは完全に指定する必要があります。つまり、主キーのすべてのフィールドが正しい順序で、ギャップなしで指定される必要があります2。
* D. ハッシュ内部テーブルで、主キーをギャップなしで左から部分的に指定します。ハッシュ内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、ハッシュ アルゴリズムを使用して行を保存およびアクセスします。ハッシュ内部テーブルの主キーは一意である必要があり、変更できません。ハッシュ内部テーブルには、テーブル インデックスではなく、主キーを使用してのみアクセスできます。主キーを使用したアクセスは非常に高速です。これは、システムがハッシュ アルゴリズムを使用して行の位置を直接計算できるためです。主キーはギャップなしで左から部分的に指定できます。つまり、主キーの一部のフィールドは、右端のフィールドであり、指定されたフィールド間にギャップがない限り省略できます。
* E. ハッシュ内部テーブルで、主キーを完全に指定します。ハッシュ内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、ハッシュ アルゴリズムを使用して行を保存およびアクセスします。ハッシュ内部テーブルの主キーは一意である必要があり、変更できません。ハッシュ内部テーブルには、テーブル インデックスではなく、主キーを使用してのみアクセスできます。主キーを使用したアクセスは非常に高速です。これは、システムがハッシュ アルゴリズムを使用して行の位置を直接計算できるためです。主キーは完全に指定できます。つまり、主キーのすべてのフィールドを正しい順序で指定する必要があります。
次の理由により、内部テーブルへのアクセスは高速化されません。
* A. ソートされた内部テーブルで、主キーを左から隙間なく部分的に指定します。ソートされた内部テーブルは、テーブル定義の主キーによって定義される定義済みのソート順序を維持するテーブル タイプです。主キーは一意でも非一意でもかまいません。ソートされた内部テーブルには、主キーまたはテーブル インデックスを使用してアクセスできます。主キーを使用したアクセスは、システムがバイナリ検索アルゴリズムを使用して行を検索できるため、テーブル インデックスを使用したアクセスよりも高速です。
ただし、主キーは完全に指定する必要があります。つまり、主キーのすべてのフィールドが正しい順序で、ギャップなしで指定される必要があります。主キーが左からギャップなしで部分的に指定されている場合、システムはバイナリ検索アルゴリズムを使用できず、より遅い線形検索を実行する必要があります2。
* C. 標準内部テーブルで、主キーを左から隙間なく部分的に指定します。標準内部テーブルは、定義済みのソート順序を持たないテーブル タイプですが、行の順次的な保存とアクセスを使用します。標準内部テーブルの主キーは標準キーであり、テーブル行のすべてのフィールドが定義順に構成されます。標準内部テーブルには、主キーまたはテーブル インデックスを使用してアクセスできます。主キーを使用したアクセスは、行を見つけるためにシステムが線形検索を実行する必要があるため、テーブル インデックスを使用したアクセスよりも遅くなります。
主キーは、ギャップなしで左から部分的に指定できますが、システムは依然として線形検索を実行する必要があるため、アクセス速度は向上しません。
参照: 1: 内部テーブル - 概要 - ABAP キーワード ドキュメント 2: ソートされたテーブル - ABAP キーワード ドキュメント : ハッシュ テーブル - ABAP キーワード ドキュメント : 標準テーブル - ABAP キーワード ドキュメント
- 最新アップロード
- 105ECCouncil.312-50v13.v2026-09-04.q362
- 105Appian.ACD-201.v2026-09-04.q104
- 103Salesforce.Marketing-Cloud-Email-Specialist.v2026-09-04.q121
- 103Huawei.H12-821_V1.0-ENU.v2026-09-04.q683
- 157APEGS.NPPE.v2026-09-03.q79
- 217ASIS.ASIS-PSP.v2026-09-03.q195
- 150Microsoft.GH-300.v2026-09-03.q70
- 149Salesforce.AP-208.v2026-09-02.q62
- 172Fortinet.NSE7_FSN_AR-7.6.v2026-09-02.q99
- 135SAP.C_P2WBW_2505.v2026-09-01.q28
