オブジェクトの概要
ここでいうオブジェクトとは実体のあるものを指し、当レポートにおいてはデータベース系・プログラム系・その他について解説する。
一方、オブジェクトではないものとは簡単に言うと、実体がないものである。
例えば、レコードとはテーブルというオブジェクトに入っているのである。そのため、テーブル(オブジェクト)が存在しない限り、存在し得ない。
他にも、オブジェクトではない例としてメモリ上に存在するデータがあり、メモリは短期記憶であるため、PCを切ったら消えてしまう。
オブジェクトは広い解釈があるようだが、とりあえずは形があるものがオブジェクトという認識で良いだろう。
SAPのオブジェクト
データベース系
➀-1. テーブル
データの格納場所
SAPのテーブルは3段構造になっている。
項目>データエレメント>ドメイン
項目
テーブルの列。切り口
(キー項目:データを一意に区別するための項目)
データエレメント
テーブル項目に割り当てる意味属性。
データ型→ドメインor 組込型or参照先データ型or組込型への参照
他の特性→検索ヘルプ:選択画面でデータの抽出を行う際、どのような値を入れるべきかサポートしてくれる機能
項目ラベル→ALVなどで表示される項目のテキスト
以上の内容をデータエレメントでは定義する。
ドメイン
定義域。テーブル項目に割り当てる技術属性。データ型と項目の長さ。
<特記事項>
- 一つのドメインに対して、複数のデータエレメントへの紐付けが可能
- 様々な紐づけパターンを可能にするためテーブルは3段構造になっている
➀-2. ビュー
テーブルとテーブルを結合させたオブジェクト
ビュー項目:各テーブルに存在する項目のうち使用するものだけを並べたもの
データエレメント・ドメインに関してはテーブルの説明と同様のため、省略。
<特記事項>
- SQLでプログラミングを行う時のために、データを抜くためのビューが存在する
- 外部結合が不可能(SAPクエリとは異なる)
➀-3. CDSビュー
プログラミング可能なビュー。(S/4 HANAより登場)
ビュー項目・データエレメント・ドメインに関してはビュー同様のため省略。
<特記事項>
- データを抽出する時点で、プログラミング可能
- 加工したデータを使いまわすことが可能
- 外部結合が可能
プログラム系
➁-1. 一般的なプログラム
SAPでの開発のほとんどは、レポート・バッチインプット・Dynproによるものである。
当レポートにおいては、レポートプログラム・Dynpro・インクルードを解説する。
レポートプログラム
データを出力・表示させることを目的としたプログラム
プログラムタイプ:実行可能なプログラム
<特記事項>
- 選択画面と実行画面を持つ
- レポートプログラムはさらに3つに分類する事ができる(さらに3種類に分けられることを把握して欲しい)
Dynpro
レポートプログラムでは不可能な、複雑な画面を組み込むことが可能なプログラム(対話型の画面を作ることが可能)
プログラムタイプ:モジュールプール
以下は両者の違いを簡単にまとめたものである。
自動生成 | 複雑な画面 | 画面 | |
レポートプログラム | 可能 | 不可能。自動生成されるという便利な反面、複雑な動きを組み込むことは不可能 | 画面を作らない |
Dynpro | 不可能。画面の実装を自ら行う必要がある | 可能 | SAPで使用する画面を作る |
インクルード
プログラムを部品のように扱う事が可能なプログラム
プログラミングタイプ:インクルード
<特記事項>
- 複数のプログラムを使いまわす事が可能
- プログラムの量が多くなってしまった際に切りだすことが可能
➁-2. 関数的なプログラム
汎用モジュール
SAP標準機能であり、インプットに対して何らかの処理を行い、アウトプットを生み出す機能(Excel の関数のようなものもの)
ABAPクラス
汎用モジュールには存在しないものがあれば追加。汎用モジュールの親戚の位置づけ。
汎用モジュールとほぼ同義。
<特記事項>
- 汎用モジュールはSAP標準に10万個くらい存在する。そのため、既に汎用モジュールで用意されている機能を追加開発する事態は避けるべきである
➁-3.標準拡張
BAdi
再利用可能かつ、ロジック・メニュー及び、Dynproの拡張可能。今までの拡張機能のデメリットを改善した拡張機能。
ユーザExit
SAP標準のプログラム内に用意されていて、ユーザ固有のロジックを組み込むことが可能なサブルーチン
カスタマExit
SAP標準のプログラム内に用意されていて、ユーザ固有のロジックを組み込むことが可能な汎用モジュール
チェック/代入
SAP標準の会計機能に+αで動きをつけたい時に使用する拡張機能
その他
➂-1. SAPクエリ
テーブルとテーブルを結合し表示可能にしたオブジェクト
<特記事項>
- 選択画面と、実行画面の2段階構造(ビューとはこの点が異なる)
➂-2. インフォセット
クエリに表示させるテーブル結合や、取り扱うテーブル項目を設定したオブジェクト
➂-3. ユーザグループ
クエリを利用する者をユーザ単位、もしくはモジュール単位で区別したオブジェクト(権限制御)
➂-4. バリアント(クライアント依存)
項目に値を埋め込む、非表示にする設定をプログラミングなしで設定可能なオブジェクト
<特記事項>
- バリアントは、用途別に複数の種類存在する
システムバリアント(クライアント非依存)
バリアントの種類の一つ。
<特記事項>
- システムバリアントは、最終変更者か登録者しか変更を行う事ができない
- クライアント非依存のため、どのクライアントからでもアクセス可能
➂-5. ALVレイアウト
表に存在する項目の並び、ソート順序などを保存したオブジェクト
➂-6. トランザクションコード
機能を呼び出すためのショートカットキー
まとめ
当レポートで紹介したオブジェクトはあくまでも代表的なものである。
以前に、オブジェクトの変更なり作成などの作業を行った事があっても、それはあくまでその時の条件でその作業を行っただけであり、対象のオブジェクトのすべての使い方を理解したわけではない。いわば、仮置きの状態である。
仮置きの理解ですべてを理解したとは思わずに違う使い方や作り方を覚え、仮置きをアップデートしていくことが大事である。
これから、一年以内にオブジェクトを作成、変更、問題点を洗い出す作業を行う事が想定されるが、作業に時間がかかってでも自分で出来るようにならないと駄目である。

コメント