三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
登場人物紹介
三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
この記事を読むメリット
アドオン設計を担当することになったんだけど、そもそもABAPで何ができるのかあまり知らないわ…。
ABAPにはさまざまな機能がありますが、ABAPでのアドオン開発知識が乏しいとアドオン設計するにも実現可能性が分からないまま設計を行ってしまい精度の低い設計になってしまいがちです。
ここではアドオン設計者が知っておくべき最低限のABAP知識をABAPプログラムを用いずに解説します!
新着のSAPフリーランス案件
【FI】
S/4HANAへのバージョンアップ支援(Jrコンサル可)
【PP】
メーカー向けSAP移行プロジェクト支援
【MM】
【SD】
製造業向けロジ領域の運用保守支援
【BASIS】
【MM】
【SD】
製造業向け運用保守支援支援
【CO】
【FI】
【MM】
【PP】
【SD】
大手メーカー社向けSAP導入支援
【FI】
商社向け基幹システムバージョン支援
【FI】
SAP運用業務支援
【FI】
SAP導入プロジェクト支援
【FI】
光学機器 S/4HANA導入テスト支援
【CO】
一般消費財メーカーS/4 HANAバージョンアップ
アドオンプログラムの目的は様々ですが、アドオンプログラムで達成できることとして大きく分けて以下のような事項が挙げられます。
アドオンプログラムは手動実行・JOB実行(バックグラウンドでの実行)をすることができます。
アドオンテーブルレコードの登録・更新・削除が可能で、ABAPプログラムでSQLを用いてテーブル更新を行います。
様々な用途が考えられますが、移行用にcsvをアップロードして一括登録することが可能です。
SAPに登録されているデータを取得・整形し、他システムへの連携ファイルを出力するような機能を作成することもできます。
マスタの更新や伝票の作成を行うことが可能です。
標準テーブルのレコードはアドオンテーブルと違い、直接変更しないことが推奨されいるためSQLでの更新は行いません。
バッチインプットと呼ばれるプログラム内でトランザクションを実行する方法や、BAPIと呼ばれる汎用モジュールを用いた方法でマスタ更新や伝票の作成を行います。
取得したデータや計算結果などを一覧で表示することが可能です。
表示形式としてはALV(Excelのようなセル形式)や帳票のような形式で表示させることや、JOB実行(バックグラウンドで実行)して帳票をスプールに出力することも可能です。
処理した結果を用いて他のプログラムを呼び出すということが可能です。
EXITやBAdIといった機能を用いれば、標準機能の途中でプログラムを書くことが可能な”穴”にコードを記述することができます。
例えば伝票作成時の”穴”にある項目の値を編集するようなロジックを記述できたりします。
基本的にABAPプログラムでは、主に以下の処理の順序で処理を記述します。
イベントブロックについては別記事で解説予定じゃ!
標準で準備されているシステム項目を用いることができます。
例えばユーザIDやシステム日付などの固定値や、プログラム内で処理した結果が反映される項目などが準備されています。詳しくは以下を参照ください!
SAPではメッセージを登録させておくことができ、共通メッセージをそれぞれの機能から呼び出すことが可能です。
メッセージはT-CODE:SE91にて管理されています。
機能毎に表現がバラバラにならないようチームメンバーと擦り合わせて設定することが必要となります。
選択画面では処理する条件などを選択項目として定義することができます。
選択項目は単一選択と範囲選択の定義が可能となります。
以下は単一選択と範囲選択の定義の表示例です。
ABAPプログラムでは一般的なDBテーブル同様、複数の項目を持った横並びのレコードを複数行持つデータ持つことができ、それを内部テーブルと呼びます。
内部テーブルのイメージ
内部テーブルに対して以下のような処理をすることができます。
内部テーブルを、ある項目で昇順もしくは降順にすることができます。
内部テーブルを1行ずつ読み込み、処理をすることができます。
読み込む際に条件を指定することも可能です。例えば、上図の内部テーブルの例だと数量が11以上のレコードのみ読み込んでいくと2,4行目のみが順番に読み込まれます。
内部テーブルから特定のレコードを読み込むことで、特定のレコードに対して処理をすることができます。内部テーブルからの読み込みパターンは以下の2つです。
内部テーブルの行数を読み込むことができます。
内部テーブルのレコードを更新することができます。更新パターンは主に以下の2つです。
RANGEテーブルを用いることで意図したテーブルのレコードを取得したり、意図したデータを条件指定して処理をすることができます。
RANGEテーブルについては別記事を準備予定じゃ!
繰り返し処理は内部テーブルを用いなくとも利用可能です。
どういう条件を満たした場合に繰り返し処理を終了するかも指定する必要があります。
「この項目の値が〇〇の時に××の処理をする」といった条件分岐をすることができます。
機能をまたいで共通の処理が必要になることがあります。
そんな時は汎用モジュールを作成し、共通部品として利用することが可能です。
汎用モジュールはどういう仕様(IMPORT/EXPORTパラメータや処理の内容)にすればよいか、チームとしっかり調整することが必要です。
ABAPプログラムの中でSQLを用いてアドオンテーブルのレコードを登録・更新・削除をすることができます。
更新できなかった場合にどういったログを残すのかも設計の範疇です。
標準のマスタの更新や伝票の作成をすることができます。
標準のテーブルは直接SQLで更新することは推奨されていないため、バッチインプットやBAPIを使用する必要があります。
実行が終わった際にエラーが発生したレコードのリカバリ方法をどうするかが設計のポイントとなります。
SAPのトランザクションコードを直接実行して登録していくような動作をABAPプログラムで再現して実行することでマスタ更新や伝票の作成をすることができます。
デメリットとしてはBAPIより処理速度が遅いことや、バージョンアップをした際にプログラム名や項目名が変わる可能性もあるので注意。(バージョンアップする際は要テスト)
BAPIとは標準で準備されている汎用モジュールの一種で、標準データの取得や更新をすることができます。BAPIは汎用モジュールなのでT-CODE:SE37で確認することができ、汎用モジュール名は”BAPI_”から始まります。
ちなみに、BAPIにはデータ更新だけではなくデータ取得するだけのものも準備されています。
処理実行の画面上でボタンを配置し、そのボタンが押下されたら他の処理を実施するということも可能です。
例えば、
選択画面で条件指定→ALVで一覧を表示→ALVで選択したレコードに対して処理を実施
といったことも可能となります。
ABAPでできることのイメージが湧きました!
まだ自信は無いですが、いくつか機能を設計すれば慣れそうな気がします!
よりABAPのことを知りたければ、以下を参照するのじゃ。
今後もABAPのノウハウを更新していくぞい!
新着のSAPフリーランス案件
【FI】
S/4HANAへのバージョンアップ支援(Jrコンサル可)
【PP】
メーカー向けSAP移行プロジェクト支援
【MM】
【SD】
製造業向けロジ領域の運用保守支援
【BASIS】
【MM】
【SD】
製造業向け運用保守支援支援
【CO】
【FI】
【MM】
【PP】
【SD】
大手メーカー社向けSAP導入支援
【FI】
商社向け基幹システムバージョン支援
【FI】
SAP運用業務支援
【FI】
SAP導入プロジェクト支援
【FI】
光学機器 S/4HANA導入テスト支援
【CO】
一般消費財メーカーS/4 HANAバージョンアップ
SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!
SAPラボのライターの特徴
・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!
SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。
募集要項
・SAP導入や運用保守プロジェクトへの参画経験1年以上
ご応募/お問合せ先
info@sap-labo.com
少しでもご興味ある方、ぜひお気軽にご連絡下さい!
株式会社Luxy(https://luxy-inc.com/company_info/)と株式会社アガルートITパートナーズ(https://agaroot-itp.com/about/)の代表取締役。
新卒でSAPエンジニアとして働き始める。副業で事業を開始したのち、2015年に独立しシステム開発会社を設立。SAPの案件に従事しつつシステム開発事業を成長させ、2021年に会社をバイアウト。その後も創業会社とグループ会社で代表を兼任。
SAPエンジニア・コンサルタント歴は10年以上。
一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!