ABAP開発には、SAP GUI上で動く従来型の環境と、Eclipseベースの新しい環境の2つがあります。どちらを使うかは、対象のシステムと開発する内容によって決まります。
2つの開発環境
| 観点 | SAP GUI(SE80など) | ADT(Eclipse) |
|---|---|---|
| 動作環境 | SAP GUI内 | Eclipseプラグイン |
| エディタ | ABAPエディタ | モダンなコードエディタ |
| 補完・リファクタリング | 限定的 | 充実している |
| 画面(Dynpro)開発 | 可能 | 不可(GUIが必要) |
| CDSビュー開発 | 不可 | 必須 |
| 複数システムの同時操作 | 困難 | 容易 |
| 対象 | ECC、S/4HANAオンプレミス | S/4HANA、BTP、Cloud |
新しい技術(CDSビュー、RAP、ABAP Cloud)はADTでしか開発できません。一方、従来型のDynpro画面はSAP GUIでしか作れません。実務では両方を使い分けることになります。
主要なトランザクション
| Tコード | 用途 |
|---|---|
| SE38 | ABAPエディタ(プログラムの作成・編集・実行) |
| SE80 | オブジェクトナビゲータ(統合開発環境) |
| SE11 | データディクショナリ(テーブル、データ要素の定義) |
| SE37 | 関数ビルダ(関数モジュールの作成) |
| SE24 | クラスビルダ(グローバルクラスの作成) |
| SE41 | メニューペインタ(画面のメニュー定義) |
| SE51 | スクリーンペインタ(Dynpro画面の作成) |
| SE93 | トランザクションコードの定義 |
| SE09 / SE10 | トランスポートオーガナイザ |
| SE16N | テーブルの内容表示 |
パッケージ
パッケージ(旧称:開発クラス)は、開発オブジェクトをまとめる単位です。すべての開発物は、いずれかのパッケージに属します。
パッケージは単なるフォルダではありません。トランスポート層と紐づいており、そのパッケージに属するオブジェクトがどのシステムへ移送されるかを決めます。
| パッケージ | 意味 |
|---|---|
| $TMP | ローカルオブジェクト。移送されない。一時的な検証用 |
| Z*/Y* | 顧客が作成する通常のパッケージ。移送対象 |
| それ以外 | SAP標準のパッケージ |
トランスポート
開発したものを開発機から品質保証機、本番機へ移す仕組みがトランスポートです。ABAPでは、オブジェクトを変更すると自動的にトランスポート要求への登録が求められます。
| 種類 | 内容 |
|---|---|
| ワークベンチ要求 | プログラム、テーブル定義など開発オブジェクト |
| カスタマイジング要求 | IMGで設定した内容。クライアント依存 |
トランスポート要求は、要求(Request)とタスク(Task)の2階層です。要求が移送の単位で、タスクは開発者ごとの作業単位です。開発者が自分のタスクをリリースし、すべてのタスクがリリースされてはじめて、要求をリリースできます。
名前空間
顧客が作成するオブジェクトの名前は、ZまたはYで始めるという規約があります。これはSAPが提供するオブジェクトとの衝突を防ぐためです。
SAPが将来リリースするオブジェクトがZやYで始まることはありません。したがって、この規約を守っている限り、バージョンアップで名前が衝突することはありません。
| 接頭辞 | 意味 |
|---|---|
| Z | 顧客開発(最も一般的) |
| Y | 顧客開発(Zとの使い分けは組織による) |
| /名前空間/ | SAPに登録した専用名前空間。パートナー企業などが使用 |
大規模な組織では、Zの後にさらに接頭辞を付ける命名規約を設けることが多くあります。「ZFI_」「ZMM_」のようにモジュールを示す、あるいは「ZR_」でレポート、「ZI_」でインタフェースを示す、といった規約です。