ABAP認定試験対策①

ABAP認定試験(C_TAW12_750
SAP Certified Development Associate – ABAP with SAP NetWeaver 7.50)について、
対策として勉強した内容を記載。
※合格を保証するものではありません。

出題範囲

試験の出題範囲は以下の通り。
・ABAP Programming
・ABAP Dictionary
・Data Types and Data Objects
・Classical User Interfaces
・SQL Statements including Update Strategies
・Enhancements and Modifications
・ABAP Objects
・Web Dynpro for ABAP
・SAP NetWeaver Overview
・Internal Tables
・ABAP Tools

対策

■CASTについて
 CASTは変数の型を変換できる命令。以下の書き方で使用可能。
 ・CAST ( 変数名 AS 変換したい型 )

■汎用モジュールで複数の例外が同時に発生した場合
 ・汎用モジュールで複数の例外が同時に発生するように値を渡した場合、
  最初の例外発生時に処理は終了し、それ以降の処理は行われない。

■BADIの実装順番について
 BADIを実装するには上から順に
  ①拡張スポットを作成
  ②BADI定義の作成
  ③BADIインターフェースの作成
 が必要。

■暗黙的拡張について
 暗黙的拡張はBADIの一種
 特定のルールのもと、プログラム中に拡張ロジックを追加することが可能
 (標準、アドオン関係なく)
 ロジックの追加はプログラムに直接書き込むのではなく、
  拡張する位置を指定
     ↓
  その場所に別オブジェクトへのリンクを作る
     ↓
  別オブジェクトに格納したい内容を書く
 つまり、既存ロジックの置き換えなどはできない

■不完全な事前定義型について
 ジェネリックデータ型のこと。
 以下のものが当てはまる。

型の名前型の説明
any任意のデータ型
any table任意のテーブルカテゴリを持つ内部テーブル
cテキストフィールド
clikeテキストのフラット構造
csequenceテキストのような構造(c、string)
data任意のデータ型
decfloat10進浮動小数点数(decfloat16、decfloat34)
hashed tableハッシュテーブル
index tableインデックステーブル
n一般的な長さの数値テキスト
numeric数値((b、s)、i、 int8、p、decfloat16、decfloat34、f)
object任意のオブジェクトタイプ(継承階層のルートクラス)
pパック数
simple文字のようなフラットコンポーネントのみを含む構造化タイプを含む基本データ型
sorted tableソートされたテーブル
standard table標準テーブル
table標準テーブル
xバイト
xsequenceバイト的な(x、xstring)

■FINDの使い方
 FINDは指定した文字などを検索する命令だ。
 指定した文字の位置を返す際の使用方法は以下の通り。

 結果を格納する変数= FIND(VAL = 検索対象
              SUB = 検索する文字
              OCC = 何個めを返すか
             CASE = 大文字小文字の区別をするかどうか
                 ( ‘X’の場合、大文字と小文字を区別する)
 ↓の場合、RESULTには6が返ってくる(2つ目のAの始まる位置が返る)
  result = find( val= ‘abapABAP’ sub = ‘A’ occ = 2 case = ‘X’).

■チェックテーブル
 あるテーブルの項目(非キー項目)が別のテーブルのキー項目の場合、
 その項目がキー項目になっているテーブル→チェックテーブルと呼び、
 キー項目になっていない→外部キーテーブルと呼ぶ。
 チェックテーブルが存在する項目は値が問題ないかチェックテーブルでチェックされる。
 作り方の順番はトランザクションコードSE11で、
  ①外部キーテーブルになるテーブルを作成
  ②チェックテーブルになるテーブルを作成
  ③①で作成したテーブルでチェックさせたい項目を選択し、外部キーボタンを押す
 チェックしたい項目は外部キーテーブルとチェックテーブルそれぞれで同じデータエレメントである必要があるので注意

■ビューの結合について
 ビューで使用される結合方法はそれぞれ以下の通り。
  ・DBビュー→内部結合
  ・投影ビュー→結合することはできない
  ・メンテナンスビュー→外部結合
  ・ヘルプビュー→外部結合

■シングルトンについて
 シングルトンはクラスの単一のインスタンスのみが存在する状態。
 実現方法は以下の通り。
 ・クラスの定義→PRIVATEで行う
 ・属性→静的属性とする
 ・メソッド→静的メソッドとして定義

■フックメソッドについて
 以下のものが存在
 ・WDDOINIT
 ・WDDOEXIT

■コードインスペクタについて
 リポジトリオブジェクトをチェックするためのツール
 チェック単位はオブジェクト個別orオブジェクトセットで可能
 チェックできる内容はパフォーマンス、セキュリティ、構文チェック、命名規則チェックなど
 設定する必要があるものは以下の通り
 ・チェックバリアント
   チェックの設定を定義
   グローバルとローカルが存在し、グローバルは全ユーザー、
   ローカルは作成したユーザのみ使用することが可能だ。
   作成する際にユーザ名を「DEFAULT」にすることで
   グローバルバリアントとして扱われる
 ・オブジェクトセット
   開発オブジェクトを複数まとめたもの チェックの対象オブジェクト
 ・インスペクション
   チェックバリアントとオブジェクトセットの組み合わせ

■String Templeteについて 
 ・リテラルの埋め込み
 ・式の埋め込み
 ・文字の制御
 を行うことが可能
 |(半角パイプ)で区切って使用することができる。
 例えば
  DATA(Ztest) = |test|.
 とした場合、「Ztest」の中身は「test」というテキストになる。

■Parametersの値の取得方法
 Dynproを使用するプログラムの場合、PAI内でMOVE TOを使用することで
 確実にほかの変数に渡すことが可能だ。

■Parameters初期値の上書き方法
 INITIALIZATIONで上書きすることが多い

■レポートプログラムのイベント
 以下のようなものが存在

・INITIALIZATIONLOAD-OF PROGRAMの直後に実行 画面表示前なので初期値の上書きなどが可能
・START-OF-SELECTION選択画面の後に表示される なにもイベントを書かないとすべてこのイベントの中という扱いになる
・GETDCテーブル名を続けて書いて使用 論理データベースで使用可能
・GET テーブル名 LATEGET後に呼ばれる GETしたとき最後に何をするか指定することが可能になる
・END-OF-SELECTION論理データベースを使用する場合、取得と出力を分けるために必要なイベント 論理データベースを使用しない場合、可読性を上げるためのもの
・SELECTION-SCREEN 選択画面から実行されたときに実行される 入力地の確認などが可能 ここで判定、入力値が正しくなければメッセージを出力、なども可能
・SELECTION-SCREEN OUTPUTPBOで呼ばれる 画面が表示される前 デフォルト値の設定もここで可能
・SELECTION-SCREEN ON 項目名PAIで呼ばれる 入力値の検証が可能 エラーまたは警告の場合、再入力が可能
・SELECTION-SCREEN ON END OF 項目名(SO)SOの値がすべて渡された後に呼ばれる 複数の値の入力チェックが可能
・SELECTION-SCREEN ON BLOCKブロックが作れる
・SELECTION-SCREEN ON RADIO BUTTON GROUPラジオボタン作れる
・AT SELECTION-SCREENほかのSELECTION*SCREEN系イベントがすべて終わった後に実行される このイベントでエラーとかが出るとすべての項目が再び入力可能になる
・SELECTION-SCREEN ON HELP REQUEST FOR 項目名F1ヘルプを呼び出す用
・SELECTION-SCREEN ON VALUE REQUEST FOR 項目名F4ヘルプを呼び出す用
・SELECTION-SCREEN ON EXIT COMMAND戻るボタンなど押したときの動作を設定
・TOP-OF-PAGEヘッダの設定
・TOP-OF-PAGE DURING LINE-SELECTION詳細一覧ごとに呼び出される
・END-OF-PAGEフッター
・AT USER-COMMANDツールバー押す
・AT LINE-SELECTIONダブルクリック
・SCREENSCREEN PAINTERで設定する用

■選択画面で入力された値のチェックについて
 AT SELECTION-SCREENで行う 
 このイベント内で入力値に対してメッセージの出力なども可能

■インスタンス化の方法
 TYPE REF TOでオブジェクトを作成
 そのオブジェクトを指定してCREATE OBJECTでインスタンス化する

■固定小数点演算をさせる方法について
 計算に使用する変数の型をFやP DECIMALS ~などにする
 以下の例では固定小数点演算が可能
  DATA: RESULT TYPE F,
     C TYPE F.
  RESULT = 11 / 10 – C
  DATA: RESULT TYPE P DECIMALS 2,
     C TYPE F.
  RESULT = 11 / 10 – C

■クラスでダブルクリックに反応させるようなイベントの作成方法
 以下のものが必要
  ・SET HANDLER
  ・ハンドラークラス
  ・イベントハンドラーメソッド

■イベントが呼び出されないときの確認方法
 ・イベントハンドラーメソッドが登録されていることを確認 
 ・イベントハンドラーメソッドの実装部分に正しいロジックがあることを確認
 ・RAISE EVENTにブレークポイントを置いてイベントが呼び出されることを確認

■モジュール化する理由
 ・コードの再利用性向上
 ・コードの冗長性軽減
 ・保守時の工数削減

■String TempleteやChaining Operatorなど新しい命令を使用する理由
 ・構文がコンパクトになる
 ・中間変数の数を減らすことができる

■レポートプログラムなどでイベントを宣言しない場合
 START-OF-SELECTIONの中という扱いになる

■サブクラスがアクセスできるスーパークラスのコンポーネント
 ・PUBLICセクションのもの
 ・Protectedセクションのもの

■静的メソッドがアクセスできるコンポーネント
 ・静的属性
 ・静的メソッド

■ドメインを使用する理由
 ドメインはデータエレメントの技術属性を設定するもの
 値の範囲を設定することも可能

■ロールバックさせる方法
 以下の3つで可能
 ・ROLLBACK WORK
 ・MESSAGE TYPE A
 ・MESSAGE TYPE X

■ALVで特定のプログラミングをしないでユーザーが使用できる機能
 以下の機能を使用可能
 ・行をダブルクリックして詳細を表示する
 ・任意の列でデータを並べ替える
 ・データのフィルタリング

■画面を作ることができるプログラムの種類
 ・実行可能プログラム
 ・モジュールプール
 ・汎用グループ

■OPEN SQLを使用するメリット
 ・構文チェックをすることができる
 ・すべての標準SQLコマンドを使用することができる

■ポストメソッドを使用してSAP標準グローバルクラスを拡張する際のパラメーター
 元のSAP標準メソッドにEXPORTパラメーターが存在する場合、
 ポストメソッドには同名のCHANGINGパラメーターが必要

■クラシックBADIの検索方法
 ・クラス:CL_EXITHANDLERのGET_INSTANCEメソッドにブレークポイントを置く
 ・SE84でパッケージ名を検索する

■NEW BADIの検索方法
 ・GET BADIを検索
 ・CALL BADIを検索

■メニューEXITについて
 メニューEXITはすべて「+」から始まる名称となる

■サブクラスでREDEFINITIONする場合にしないといけないこと
 ・メソッドを再定義する場合、その可視性は変更することができない
 ・スーパークラスにコンストラクターが存在する場合、サブクラスの実装部分で
  サブクラスのコンストラクターメソッド内で最初にスーパークラスの
  コンストラクターをインスタンス化、
  その次にサブクラスのコンストラクターをインスタンス化する必要がある

■SELECT処理でのデータ格納順番について
 SELECTではINTO CORRESPONDINGを使用しない場合、
 テーブル/構造の左から順に格納される

■テーブルのバッファリングタイプについて
 読み込み回数は多いけど件数が少ない、変更されることも少ない場合は
 フルバッファリングを行う

■ロックの失敗について
 返ってくるエラーは次の2つ
  ・Foreign_Lock
  ・System_Failure

■セカンダリインデックスについて
 以下の点に注意が必要
  ・インデックスは常に一意
  ・頻繁に使用される項目はインデックスの先頭にある必要がある

■インスタンスコンストラクターについて
 インスタンスコンストラクターは
  ・INPORT
  ・例外
 のみ設定することが可能

■テキストシンボルを利用するメリット
 ・多言語対応が簡単
 ・保守が簡単

■モディフィケーション調整について
 モディフィケーション後に実施する必要がある機能は以下の2つ
  ・トランザクションコード:SPAU
  ・トランザクションコード:SPDD

■SE80とデバッガの両方で行うことができること
 任意の行にブレークポイントを置くことは両方で可能

■コンストラクターについて
 ・静的コンストラクターは名前がCLASS_CONSTRUCTOR固定、
  インスタンスコンストラクターは名前がCONSTRUCTOR固定
 ・静的コンストラクターはPARAMETERを持つことはできない
 ・インスタンスコンストラクターはINPORTパラメータと例外だけ持つことが可能
 ・サブクラスで作成したコンストラクターは実装時に
  最初にスーパークラスのコンストラクターを呼ぶ必要がある

■PAIでの入力チェックなどのエラー時の動き
 PAIでエラーを発生させた場合、以下のような動きになる
 ・CHAIN-ENDCHAIN内
  →そのCHAIN内の項目のみ再入力可能な状態で再度選択画面が表示される
 ・CHAIN-ENDCHAIN外
  →エラーを発生させた際にFIELDで指定した項目のみ
   再入力可能な状態で再度選択画面が表示される

■グローバルデータ型
 システム内どこからでもアクセスできるデータ型
 以下の3つで定義することが可能
  ・グローバルインターフェース内
  ・ABAPディクショナリ内
  ・グローバルクラス内

■従属画面を作るときのルール
 ・従属画面に「OK」タイプのフィールドを含めることはできない
 ・従属画面にAT EXIT-COMMANDモジュールを含めることはできない

コメント

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