【SAPが動画で学べる!】YouTubeチャンネル開設しました ▶ SAPラボチャンネルはコチラ

【SAP開発】BAdIの探し方と登録の仕方

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • 購買発注登録(T-CODE:ME21N)を例に、使える BAdI をパッケージと IMG の 2 通りで探せるようになる
  • T-CODE:SE19 で拡張実装・BAdI 実装・実装クラスを作り、有効化する手順が分かる
  • 作った拡張実装と実装クラスを削除する手順が分かる

BAdI(ビジネスアドイン)は、SAP の標準プログラムに独自の処理を足すための仕組みです。SAP のヘルプによると、BAdI は BAdI インタフェースなどから成り、利用者は BAdI 実装(主に実装クラス)を作って処理を足します。また、カスタマ Exit(ファンクションエキジット)に代わるものとされています。

この記事では、購買発注登録(T-CODE:ME21N)の BAdI を例に、次の 3 つを実際の画面で 1 画面ずつ解説します。対象は ABAP を学び始めた開発者の方です。

  • 使える BAdI を 探す方法を 2 通り(パッケージから探す、IMG から探す)
  • 見つけた BAdI に 実装を登録して有効化する手順
  • 作った実装を 削除する手順
レイナ

博士!購買発注を登録するときに、会社独自のチェックを足したいって言われました…。どこに処理を書けばいいんでしょう?

博士

うむ、SAP には BAdI という、標準の処理に独自の処理を足すための仕組みがあるぞい。今回は BAdI の探し方と、実装の作り方を説明していくぞい!

SAPフリーランスバンク SAPフリーランスバンク
  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COFIPP

【S/4HANA AMS体制Functional Lead】リモート可/R2R・P2D領域インシデント対応

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 運用・保守
作業内容:
グローバル企業のSAP S/4HANA AMS体制に...
COMMSD

【ECC6.0→S/4HANA再構築】東京・都内(出社)/SD・MM・CO ABAP開発・設計・テスト

月額単価
~1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori), テスト
作業内容:
SAP ECC6.0からS/4HANAへの大型再構築プ...
MMPPSD

【SAP S/4保守・運用(ABAP)】東京・田無(テレワーク併用)/インシデント対応・ABAP改修

月額単価
~1,000,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
作業内容:
SAP S/4の保守・運用フェーズに参画し、...
COFIMMPPSD

【SAP Public Cloud導入(組立製造業・多モジュール)】兵庫(リモート対応可)/MM・SD・FI・CO・PP

月額単価
~1,100,000円 / 月
稼働場所
兵庫県
業務領域
要件定義
作業内容:
組立製造業を対象としたSAP Public Clou...
MMSD

【S/4HANA導入支援(システムテスト・移行)】東京・リモート併用/移行支援

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
テスト
作業内容:
S/4HANA導入プロジェクトの移行フェーズ...
COFIMMSD

【S/4HANA導入支援】東京(リモート併用)/基本設計&実装

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
商社系のシステム再構築プロジェクトに...
SD

【S/4HANA新規導入支援(SDコンサルタント)】東京(リモート併用)/設計構築フェーズ

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
大手企業のS/4HANA新規導入プロジェクト...
COFI

【S/4HANA新規導入支援(原価チームリーダー)】東京駅・リモート併用

月額単価
~1,900,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
S/4HANA新規導入プロジェクトに参画し、...
FIPP

【S/4HANAコンサルティング(FI/PP)】兵庫・加古川(リモート併用)/結合テスト・キーユーザ教育

月額単価
~1,300,000円 / 月
稼働場所
兵庫県
業務領域
テスト, その他
作業内容:
組立製造業向けのS/4HANA導入プロジェク...
COFI

【商社向けパブクラ移行(FICOコンサル)】宮城・仙台(リモート併用)/要件定義+構築

月額単価
~1,100,000円 / 月
稼働場所
宮城県
業務領域
要件定義, 設計
作業内容:
総合商社向けのSAP PublicEdition移行案...
この記事のポイント

前提

  • 使うトランザクション: T-CODE:SE93、T-CODE:SE18、T-CODE:SPRO、T-CODE:SE19、T-CODE:SE24。
  • 作るもの: 拡張実装 ZLAB_EI_PO、BAdI 実装 ZLAB_BI_PO、実装クラス ZCL_LAB_PO_CUST。どれもローカルオブジェクトとして作ります。

BAdI の仕組み

最初に、画面に出てくる言葉の関係を押さえておきます。

言葉意味扱うトランザクション
BAdI 定義SAP が用意した拡張の口です。どのような処理(メソッド)を足せるかが決まっています(例: ME_PROCESS_PO_CUST)T-CODE:SE18(照会)
BAdI インタフェースBAdI 定義が持つメソッドの一覧です(例: IF_EX_ME_PROCESS_PO_CUST)T-CODE:SE18
拡張スポットBAdI 定義を入れておく入れ物ですT-CODE:SE18
拡張実装利用者が作る BAdI 実装を入れておく入れ物です(例: ZLAB_EI_PO)T-CODE:SE19
BAdI 実装拡張実装の中に作る、BAdI 定義に対する実装です(例: ZLAB_BI_PO)T-CODE:SE19
実装クラスBAdI 実装が使うクラスで、BAdI インタフェースのメソッドに処理を書きます(例: ZCL_LAB_PO_CUST)T-CODE:SE19、T-CODE:SE24

SAP のヘルプでは、次のように説明されています。

  • BAdI 実装は、主に BAdI 実装クラスから成り、拡張実装の中で管理されます。
  • BAdI には、拡張フレームワークに組み込まれた新しい BAdI と、それより前からある「クラシック BAdI」があります。新しい BAdI がクラシック BAdI を置き換えています。
  • 新しい BAdI の実装を作るときは、T-CODE:SE19 で「新規 BAdI」を選び、拡張スポットを指定します。

探し方1: トランザクションのパッケージから BAdI を探す

たとえば、購買発注を登録するときに、会社独自のチェックを足したいという要望を受けた場面を考えます。まず購買発注登録のプログラムとパッケージを調べ、そのパッケージに属する BAdI を一覧にします。

1. T-CODE:SE93 で購買発注登録のトランザクションを照会する

コマンドフィールドに SE93 と入力して Enter キーを押します。「トランザクション更新」画面でトランザクションコードを入力し、「照会」を押します。

T-CODE:SE93 でトランザクションコードを入力

画面の見方

  1. トランザクションコード: 調べたいトランザクションコードを入力します。
  2. 照会: トランザクションの定義を表示します。

この例では ME21N を入力します。

2. パッケージを確認する

「照会 レポートトランザクション」画面が開きます。

T-CODE:ME21N のパッケージとプログラム

画面の見方

  1. パッケージ: このトランザクションが属しているパッケージです。
  2. プログラム: トランザクションに割り当てられたプログラムの名前です。

この例では、パッケージは ME、プログラムは RM_MEPO_GUI です。次の手順でパッケージを使います。

3. T-CODE:SE18 の入力ヘルプを開く

コマンドフィールドに /nSE18 と入力して Enter キーを押します(/n を付けると、別のトランザクションの画面からでも移れます)。「BAdI ビルダ: 定義の第一画面」で「BAdI 名」を選び、入力欄で F4 キーを押します。

T-CODE:SE18 の BAdI 名の欄

画面の見方

  1. BAdI 名: BAdI の名前で照会するときに選びます。
  2. BAdI 名の入力欄: ここで F4 キーを押すと、BAdI を探す画面が開きます。

4. 検索条件の画面に切り替える

「リポジトリ情報システム: BAdI 検索」画面が開き、先に一覧が表示されます。条件を指定し直すため、「新規選択」を押します。

BAdI の一覧と新規選択ボタン

画面の見方

  1. 新規選択: 検索条件を入力する画面を開きます。

5. パッケージを指定して検索する

検索条件を入力する画面が開きます。

パッケージを指定して BAdI を検索

画面の見方

  1. 全部 / カーネルベース BAdI / クラシック BAdI: 探す BAdI の種類を選びます。
  2. パッケージ: BAdI が属するパッケージで絞り込みます。
  3. 実行: 条件に合う BAdI を一覧にします。

この例では「全部」のまま、パッケージに手順 2 で確認した ME を入力します。

6. 一覧から BAdI を探す

パッケージに属する BAdI が一覧で表示されます。

パッケージ ME の BAdI の一覧

画面の見方

  1. 該当数: 条件に合った BAdI の件数です。
  2. BAdI 定義の名称: BAdI の名前です。
  3. 拡張スポット: その BAdI が入っている拡張スポットの名前です。
  4. 検索: この一覧の中から文字を検索します。

この例では 165 件が表示されます。一覧が長いので、④の検索を使います。

7. 一覧の中で名前を検索する

一覧の検索画面

画面の見方

  1. 検索: 探す文字を入力します。
  2. 検索: 一覧の中を検索します。

この例では ME_PROCESS_PO と入力します。② を押すと、該当する行が表示されます。

ME_PROCESS_PO の検索結果

画面の見方

  1. 拡張スポットのある行: 拡張スポットの欄に名前が入っている BAdI です。
  2. 拡張スポットの無い行: 拡張スポットの欄が空の BAdI です。

この例では、ME_PROCESS_PO_CUST が 2 行表示されます。手順 5 の画面で「クラシック BAdI」を選んで検索すると、拡張スポットの無い②の行が表示されます。「カーネルベース BAdI」を選んで検索すると、拡張スポット ME_PROCESS_PO_CUST の付いた①の行が表示されます。この BAdI には、クラシック BAdI としての定義と、拡張スポットに入った BAdI としての定義の両方があります。

8. T-CODE:SE18 で BAdI を照会する

見つけた名前を「BAdI 名」に入力し、「照会」を押します。

T-CODE:SE18 で BAdI を照会

画面の見方

  1. BAdI 名: 照会する BAdI の名前です。
  2. 照会: BAdI の定義を表示します。

この例では ME_PROCESS_PO_CUST を入力します。

9. BAdI のプロパティを確認する

「ビジネスアドイン: 定義 ME_PROCESS_PO_CUST 照会」画面が開きます。

BAdI 定義のプロパティ

画面の見方

  1. 拡張スポットに移行済の BAdI: 拡張スポットの名前を表す項目です(F1 ヘルプでは「拡張スポット名 (ID)」)。
  2. 複数使用: BAdI 定義の複数使用の設定です。
  3. フィルタ依存: BAdI 定義がフィルタ値によって使い分けられるかの設定です。
  4. Interface: BAdI インタフェースとメソッドの一覧を表示するタブです。

この例では、拡張スポットに移行済の BAdI に ME_PROCESS_PO_CUST が入っています。「複数使用」には印が付き、「フィルタ依存」には印がありません。

SAP のヘルプによると、クラシック BAdI で複数使用でないものは、同時に有効にできる実装が 1 つだけです。新しい BAdI でも、単一使用の BAdI に有効な実装が 2 つあると、実行時にショートダンプになります。またフィルタ依存の BAdI では、実装ごとにフィルタ値を決めます。実装を作る前に、この 2 つを確かめておくとよいでしょう。

10. BAdI インタフェースとメソッドを確認する

「Interface」タブを開きます。

BAdI インタフェースとメソッド

画面の見方

  1. インタフェース名: この BAdI の BAdI インタフェースです。
  2. メソッドの一覧: 実装クラスで処理を書けるメソッドです。
  3. メソッドの行: メソッドの名前と、その内容説明です。
  4. サンプル実装クラス: サンプル実装クラスの名前です。

この例では、インタフェースは IF_EX_ME_PROCESS_PO_CUST です。メソッドには INITIALIZE・OPEN・PROCESS_HEADER・PROCESS_ITEM・CHECK・POST・CLOSE などが並びます。

探し方2: IMG(T-CODE:SPRO)から BAdI を探す

IMG(SAP カスタマイジングの導入ガイド)からも探せます。この BAdI は IMG にも項目があり、説明文(用途やメソッドの使い分け)も読めます。

1. IMG を検索する

コマンドフィールドに /nSPRO と入力して Enter キーを押し、「SAP 完全版 IMG」を押します。「IMG 照会」画面で、検索ボタン(虫めがね)を押します。

IMG の検索ボタン

画面の見方

  1. 検索: IMG の中を文字で検索します。

「構造内検索」画面が開きます。

IMG の構造内検索

画面の見方

  1. 検索語句: 探す文字を入力します。
  2. 続行: 検索を始めます。

この例では 購買発注の拡張処理 と入力します。

2. 検索結果から IMG の場所を開く

検索語句を含む IMG の項目が一覧で表示されます。

IMG の検索結果

画面の見方

  1. 領域: その項目が IMG のどの領域にあるかです。
  2. 該当箇所: 開く項目です。ダブルクリックすると、IMG のその場所に移動します。

この例では、「BAdI: 購買発注の拡張処理 (単一画面トランザクション)」が「製造委託」と「購買管理」の 2 か所に表示されます。ここでは「購買管理」の行をダブルクリックします。

IMG の BAdI の場所

画面の見方

  1. 購買管理におけるビジネスアドイン: 購買管理の BAdI がまとめられているフォルダです。
  2. BAdI: 購買発注の拡張処理 (単一画面トランザクション): 今回の BAdI の項目です。

②の行の左端には、アイコンが 2 つ並んでいます。左のアイコンを押すと説明文が、右のアイコンを押すと実装の一覧が開きます。

3. 説明文を読む

左のアイコンを押すと、「Performance Assistant」画面に説明文が表示されます。

IMG の説明文

画面の見方

  1. BAdI の名前と用途: 説明文の中で、この項目の BAdI 名と用途が書かれています。
  2. 影響するトランザクション: この BAdI で動きを変えられるトランザクションと BAPI です。
  3. 割り込めるステップ: BAdI のメソッドが、購買発注の処理のどのステップで使えるかです。

この例では、説明文に次のことが書かれています。

  • BAdI ME_PROCESS_PO_CUST により、Enjoy 購買発注のビジネスロジックを個別に拡張できる。
  • ダイアログトランザクション T-CODE:ME21N・T-CODE:ME22N・T-CODE:ME23N・T-CODE:ME29N と、BAPI BAPI_PO_CREATE1・BAPI_PO_CHANGE に影響する。
  • メソッドは、トランザクションの開始(INITIALIZE)、購買発注の開始(OPEN)、データのチェック(PROCESS_HEADER など)、項目選択、全体チェック(CHECK)、転記(POST)、作業終了(CLOSE)の各ステップに対応する。

「会社独自のチェックを足したい」という場面なら、全体チェックの CHECK を使うことが考えられます。説明文には、「BAdI メソッド CHECK の文書」のような、メソッドごとの文書へのリンクもあります。実装する前に読んでおくとよいでしょう。

4. 既存の実装を確認する

右のアイコンを押すと、「BAdI 実装」画面に、この BAdI の実装の一覧が表示されます。T-CODE:SE19 で作った実装は、この一覧に表示されないことがあります。既存の実装は、T-CODE:SE19 でも確かめるとよいでしょう。

BAdI の実装の一覧

画面の見方

  1. 有効 (IMG) / 有効 (実装): 有効かどうかを示す 2 つの列です。
  2. 拡張実装 / BAdI 実装: 実装の入れ物(拡張実装)と、BAdI 実装の名前です。
  3. 実装を登録: この画面にある「実装を登録」ボタンです。この記事では、実装は T-CODE:SE19 で作ります。

この例では、すでにいくつかの実装が並んでいます。

登録の仕方: T-CODE:SE19 で BAdI 実装を作って有効化する

ここからは、T-CODE:SE19 で ME_PROCESS_PO_CUST の実装を作り、CHECK メソッドに処理を書いて有効化します。

1. T-CODE:SE19 で実装の登録を始める

コマンドフィールドに /nSE19 と入力して Enter キーを押します。「BAdI ビルダ: 実装の第一画面」の下半分「実装の登録」で、BAdI の種類と拡張スポットを指定して「登録」を押します。

T-CODE:SE19 で実装の登録を始める

画面の見方

  1. 新規 BAdI: 拡張スポットに入った BAdI の実装を作るときに選びます。
  2. 拡張スポット: 実装する BAdI が入っている拡張スポットの名前です。
  3. 登録: 実装の登録を始めます。

この例では、拡張スポットに ME_PROCESS_PO_CUST を入力します。

2. 拡張実装を作る

「拡張実装の登録」画面が開きます。

拡張実装の名前とテキスト

画面の見方

  1. 拡張実装: 作る拡張実装の名前です。
  2. テキスト (短): 拡張実装の説明です。
  3. 複合拡張実装: 拡張実装をまとめる上位の拡張実装です。
  4. 拡張の登録: 拡張実装を作ります。

この例では、拡張実装を ZLAB_EI_PO、テキストを「購買発注の保存前チェック(学習用)」とし、複合拡張実装は空のまま進めます。

「オブジェクトディレクトリエントリ登録」画面が開くので、保存先を決めます。

拡張実装をローカルオブジェクトとして保存

画面の見方

  1. Object: 作るオブジェクトの種類です。
  2. ローカルオブジェクト: 保存先をローカルオブジェクトにします。

この例では、拡張実装のオブジェクトの種類は ENHO と表示されます。学習用なので「ローカルオブジェクト」を押します。

3. BAdI 実装と実装クラスの名前を決める

「拡張実装 ZLAB_EI_PO: BAdI 実装の登録」画面が開きます。

BAdI 実装の名前・実装クラス・BAdI 定義

画面の見方

  1. BAdI 実装: 作る BAdI 実装の名前です。
  2. 実装クラス: 処理を書くクラスの名前です。
  3. BAdI 定義: 実装する BAdI 定義を一覧から選びます。
  4. 続行: 入力した内容で BAdI 実装を作ります。

この例では、BAdI 実装を ZLAB_BI_PO、実装クラスを ZCL_LAB_PO_CUST、BAdI 定義を ME_PROCESS_PO_CUST とします。BAdI 定義を選ぶと、テキスト (短) に BAdI 定義の説明が入ります。

4. 実装クラスの作り方を選ぶ

「実装クラスの登録」画面が開きます。

実装クラスの作り方を選ぶ

画面の見方

  1. 選べる作り方: 空のクラスを作る、サンプルクラスをコピーする、「最終」として宣言されていないサンプルクラスから継承する、の 3 つです。この例のサンプル実装クラスは「最終」に印が付いているので、継承の作り方には使えません。
  2. サンプル実装クラス: サンプル実装クラスの名前です。
  3. 空のクラス: 中身の無いクラスを作ります。

この例では「空のクラス」を押します。続けて開く「オブジェクトディレクトリエントリ登録」画面でも、保存先を決めます。

実装クラスをローカルオブジェクトとして保存

画面の見方

  1. Object: 作るオブジェクトの種類です。
  2. ローカルオブジェクト: 保存先をローカルオブジェクトにします。

この例では、オブジェクトの種類は CLAS(クラス)と表示されます。

5. 拡張実装の画面を確認する

「拡張実装 ZLAB_EI_PO 変更」画面が開き、ステータスバーに「拡張実装が保存されました」と表示されます。

拡張実装の画面(有効化する前)

画面の見方

  1. 拡張実装のステータス: 拡張実装が有効化されているかどうかの表示です。
  2. BAdI 実装と実装クラス: 拡張実装に入っている BAdI 実装と、その実装クラスです。
  3. 有効な実装: BAdI 実装を有効にするかどうかの設定です。
  4. 実行時の動作: 今の設定で、実行時にこの実装が呼び出されるかどうかの表示です。

この例では、作った直後はステータスが「無効」で、「有効な実装」には印が付いています。実行時の動作には「この実装は呼び出されません」と表示されます。

SAP のヘルプでは、BAdI 実装を作るときに、実装を有効にするプロパティを選ぶよう案内されています。「有効な実装」に印が付いていることを確かめておくとよいでしょう。

6. 実装クラスのメソッドを開く

左のツリーで「実装クラス」を押すと、実装クラスとメソッドの一覧が表示されます。

実装クラスとメソッドの一覧

画面の見方

  1. 実装クラス: ツリーのこの行を押すと、右側に実装クラスの内容が表示されます。
  2. 実装クラスの名前: 手順 3 で決めたクラスです。
  3. 処理を書くメソッドの行: この行をダブルクリックすると、メソッドのソースが開きます。

メソッドにまだ処理が無いので、実装を作るかを聞かれます。「はい」を押します。

メソッドの実装を登録するか確認

画面の見方

  1. はい: メソッドの実装を作ります。

この例では「インタフェースメソッドがまだ実装されていません 実装を登録しますか」と表示されます。

7. メソッドに処理を書いて有効化する

「クラスビルダ クラス ZCL_LAB_PO_CUST 変更」画面で、メソッドのソースが開きます。

CHECK メソッドに処理を書く

画面の見方

  1. メソッド: 編集しているメソッドの名前です。
  2. 処理を書く場所: method と endmethod の間に処理を書きます。
  3. ステータス: メソッドが有効化されているかどうかの表示です。
  4. 有効化: 有効化します。

この例では、処理を書く場所を示すためにコメント 1 行だけを書いています。CHECK メソッドには、IM_HEADER・IM_HOLD・IM_PARK・CH_FAILED というパラメータがあり、CH_FAILED の内容説明は「エラー」です。パラメータの使い方は、IMG の説明文にある「BAdI メソッド CHECK の文書」で確かめてから処理を書くとよいでしょう。

有効化を押すと、有効化するオブジェクトを選ぶ画面が開きます。

有効化するオブジェクトを選ぶ

画面の見方

  1. 実装クラスの行: 今回作った実装クラスを構成するオブジェクトの行です。
  2. 続行: 印を付けたオブジェクトを有効化します。

この例では、ZCL_LAB_PO_CUST の行のほかにも、有効化されていないオブジェクトが一覧に並びます。今回作ったクラスの行だけに印を付けてから続行するとよいでしょう。

実装クラスが有効になった

画面の見方

  1. ステータス: メソッドが有効化されているかどうかの表示です。
  2. ステータスバー: 処理の結果を示すメッセージが表示されます。

この例では、ステータスが「有効」になり、ステータスバーに「オブジェクト有効化」と表示されます。画面の下には「Implementation missing for method …」という警告が並びます。これは、処理を書いていない他のメソッドについての警告です。

8. 拡張実装が有効になったことを確かめる

前画面ボタン(左上の「<」)で拡張実装の画面に戻ります。

拡張実装の画面(有効化した後)

画面の見方

  1. 拡張実装のステータス: 拡張実装が有効化されているかどうかの表示です。
  2. メソッドの一覧: 実装クラスのメソッドです。
  3. 警告の一覧: 有効化のときに出た警告です。
  4. 件数: メッセージの種類ごとの件数です。

この例では、拡張実装のステータスが「有効」になっています。警告の一覧の見出しには「警告: 24」と表示されます。

結果の確認

T-CODE:SE19 の上半分「実装の編集」で拡張実装を照会すると、実装が呼び出される状態になったかを確かめられます。

T-CODE:SE19 で拡張実装を照会

画面の見方

  1. 新規 BAdI: 拡張スポットに入った BAdI の実装を照会するときに選びます。
  2. 拡張実装: 照会する拡張実装の名前です。
  3. 照会: 拡張実装を表示します。
実装が呼び出される状態になった

画面の見方

  1. 拡張実装のステータス: 拡張実装が有効化されているかどうかの表示です。
  2. 有効な実装: BAdI 実装を有効にするかどうかの設定です。
  3. 実行時の動作: 実行時にこの実装が呼び出されるかどうかの表示です。

この例では、実行時の動作が、「登録の仕方」の手順 5 の「この実装は呼び出されません」から「この実装は呼び出されます」に変わっています。

後片付け: 拡張実装と実装クラスを削除する

学習やテストのために作った実装は、確かめ終わったら削除しておくとよいでしょう。ここでは、この記事で作った拡張実装と実装クラスを削除する手順を説明します。

1. 拡張実装を削除する

T-CODE:SE19 の「実装の編集」で拡張実装の名前を入力し、ツールバーの「実装削除」を押します。

拡張実装を削除する

画面の見方

  1. 拡張実装: 削除する拡張実装の名前です。
  2. 実装削除: 拡張実装を削除します。
拡張実装の削除の確認

画面の見方

  1. 実装: 削除する拡張実装の名前です。
  2. 続行: 削除します。
拡張実装が削除された

画面の見方

  1. ステータスバー: 処理の結果を示すメッセージが表示されます。

この例では「拡張実装 ZLAB_EI_PO が削除されました」と表示されます。

2. 実装クラスを削除する

この例では、拡張実装を削除した後も、実装クラス ZCL_LAB_PO_CUST が残ります。T-CODE:SE24 で削除します。

コマンドフィールドに /nSE24 と入力して Enter キーを押し、「クラスビルダ: 第一画面」でクラス名を入力します。ツールバー右端の「…」から「クラス/インタフェースの削除」を選びます。

実装クラスを削除する

画面の見方

  1. オブジェクトタイプ: 削除するクラスの名前です。
  2. クラス/インタフェースの削除: クラスを削除します。
クラスの削除の確認

画面の見方

  1. Yes: 削除します。
クラスが削除された

画面の見方

  1. ステータスバー: 処理の結果を示すメッセージが表示されます。

この例では「クラス ZCL_LAB_PO_CUST が削除されました」と表示されます。

動かないときに確かめること

  • 実装を作ったのに呼び出されない: T-CODE:SE19 で拡張実装を照会し、ステータスが「有効」か、「有効な実装」に印があるか、実行時の動作が「この実装は呼び出されます」になっているかを確かめましょう。
  • 同じ BAdI に別の実装がある: T-CODE:SE18 で「複数使用」の設定を確かめましょう。複数使用でない BAdI では、有効にできる実装は 1 つだけです(「探し方1」の手順 9)。
  • クラシック BAdI と拡張スポットに入った BAdI のどちらで作るか迷う: 「探し方1」の手順 7 の一覧の「拡張スポット」列や、T-CODE:SE18 のプロパティの「拡張スポットに移行済の BAdI」を確かめましょう。この記事の例では、その拡張スポットを T-CODE:SE19 の「新規 BAdI」に指定して実装を作っています。

まとめ

  • BAdI は、T-CODE:SE93 でパッケージを調べて T-CODE:SE18 の検索で探すか、IMG(T-CODE:SPRO)の検索で探します。IMG では、BAdI の説明文も読めます。
  • 実装は、T-CODE:SE19 で拡張実装・BAdI 実装・実装クラスを作り、メソッドに処理を書いて有効化します。
  • 不要になった実装は、T-CODE:SE19 で拡張実装を、T-CODE:SE24 で実装クラスを削除します。
レイナ

IMG からも BAdI を探せて、説明文まで読めるんですね!

博士

うむ。実装は T-CODE:SE19 で作り、実装クラスのメソッドに処理を書いて有効化するのじゃ。

  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COFIPP

【S/4HANA AMS体制Functional Lead】リモート可/R2R・P2D領域インシデント対応

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 運用・保守
作業内容:
グローバル企業のSAP S/4HANA AMS体制に...
COMMSD

【ECC6.0→S/4HANA再構築】東京・都内(出社)/SD・MM・CO ABAP開発・設計・テスト

月額単価
~1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori), テスト
作業内容:
SAP ECC6.0からS/4HANAへの大型再構築プ...
MMPPSD

【SAP S/4保守・運用(ABAP)】東京・田無(テレワーク併用)/インシデント対応・ABAP改修

月額単価
~1,000,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
作業内容:
SAP S/4の保守・運用フェーズに参画し、...
COFIMMPPSD

【SAP Public Cloud導入(組立製造業・多モジュール)】兵庫(リモート対応可)/MM・SD・FI・CO・PP

月額単価
~1,100,000円 / 月
稼働場所
兵庫県
業務領域
要件定義
作業内容:
組立製造業を対象としたSAP Public Clou...
MMSD

【S/4HANA導入支援(システムテスト・移行)】東京・リモート併用/移行支援

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
テスト
作業内容:
S/4HANA導入プロジェクトの移行フェーズ...
COFIMMSD

【S/4HANA導入支援】東京(リモート併用)/基本設計&実装

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
商社系のシステム再構築プロジェクトに...
SD

【S/4HANA新規導入支援(SDコンサルタント)】東京(リモート併用)/設計構築フェーズ

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
大手企業のS/4HANA新規導入プロジェクト...
COFI

【S/4HANA新規導入支援(原価チームリーダー)】東京駅・リモート併用

月額単価
~1,900,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
S/4HANA新規導入プロジェクトに参画し、...
FIPP

【S/4HANAコンサルティング(FI/PP)】兵庫・加古川(リモート併用)/結合テスト・キーユーザ教育

月額単価
~1,300,000円 / 月
稼働場所
兵庫県
業務領域
テスト, その他
作業内容:
組立製造業向けのS/4HANA導入プロジェク...
COFI

【商社向けパブクラ移行(FICOコンサル)】宮城・仙台(リモート併用)/要件定義+構築

月額単価
~1,100,000円 / 月
稼働場所
宮城県
業務領域
要件定義, 設計
作業内容:
総合商社向けのSAP PublicEdition移行案...

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

株式会社スプラッシュエンジニアリング(https://splash-eng.com/)の代表取締役。

新卒でSAPエンジニアとして働き始め、SAPエンジニア・コンサルタント歴は10年以上。
2015年にシステム開発会社である株式会社Luxyを創業し2021年にバイアウト。その後、受託開発会社の株式会社アガルートITパートナーズ代表取締役も兼任。
2024年にこれまでの会社の代表を退任し株式会社スプラッシュエンジニアリングを創業。

一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!

この記事のポイント