SAP開発者の必須知識「よく使う汎用モジュール」まとめ
INDEX LINK
はじめに
ABAPerになって間もないころは、汎用モジュールの知識が不足しているので開発効率がなかなか上がらないと思います。
そこで今回は、開発効率の向上に役立つ「頻出の汎用モジュール」を紹介します。
汎用モジュールを知っていれば調査や設計の手間が大きく減りますし、コーディングも楽になりますよ。
1.SAP開発者がよく使う汎用モジュール4つ
開発初心者向けに、頻出の汎用モジュールを紹介します。
1-1.プログラム側での権限のチェックで必須「AUTHORITY_CHECK」
まず、ABAPerなら誰もが知っているであろう「権限チェック」に関する汎用モジュールです。
一般的にアドオンの機能では、トランザクションコードに権限ロールを割り当てるなどして権限を制御します。
しかし、稀にこの方法が効かないことがあります。
例えば同じトランザクションコード内で複数の権限制御をしなくてはならないようなケースです。
レポートプログラムなどは、単一の部門・部署のみが使用するわけではありません。
経理部門と在庫購買の部門が同じレポートを確認するといったケースはよくあります。
このとき、経理と在庫購買のユーザーに対して、お互いに関係のないデータは確認できないように権限の制御が必要です。
しかしトランザクションコードもプログラムも1本…となれば権限チェックが煩雑になります。
権限ロールを新設してトランザクションコードを分けてもよいのですが、権限ロールの新設がユーザー側の事情で不可能ということもあります。
この場合はプログラム側で権限の制御を行わなくてはなりません。
この時に活躍するのが「AUTHORITY_CHECK」です。
AUTHORITY_CHECKでは、実行ユーザーの情報、権限オブジェクト、チェックしたいアクティビティー(例:照会や更新)といったパラメータを渡すことで、権限の有無を自動でチェックしてくれます。
開発者は返ってきた値をもとに表示項目のコントロールを実装すれば良いというわけです。
1-2.番号範囲の割り当てで必須「NUMBER_GET_NEXT」
SAPでは伝票番号の採番を標準で行っています。
しかし、伝票番号を別途保存し、何かのプログラムで使いたい場合や標準とは別に採番を行いたい場合には、「NUMBER_GET_NEXT」を使うと便利です。
NUMBER_GET_NEXTでは、番号範囲オブジェクト名(OBJECT)と番号範囲番号(NR_RANGE_NR)をパラメータとして使用します。
さらに必要に応じて、サブオブジェクト(SUBOBJECT)や会計年度終了値(TOYEAR)の設定も可能です。
一度に複数の番号を採番する場合には、番号数(QUANTITY)に必要な数を設定すると良いでしょう。
ちなみに単純な番号情報の取得は「NUMBER_GET_INFO」を、チェックは「NUMBER_CHECK」という汎用モジュールで実行可能です。
1-3.意外とよく使う会計期間チェック「FI_PERIOD_CHECK」
会計伝票まわりのアドオン機能を追加した場合、転記を含むテストなどで「会計期間」を触ることがあると思います。
転記日付の会計期間がオープンでなければ転記処理自体ができませんし、クローズの状態で転記するとエラーが出てしまいます。
テスト環境ならば手動で確認しながら調整すれば回避は可能です。
しかし、本番環境で常時動作するアドオンプログラムではそうもいきません。
このとき、あらかじめ会計期間のオープン状況をチェックできるのが「FI_PERIOD_CHECK」です。
プログラム内部にFI_PERIOD_CHECKを設置しておけば、転記処理などを行う前に会計期間をチェックできるので、エラーを防止しつつ会計期間の変更を促すことができます。
会計関連のアドオン開発では非常によく使いますので、使いこなせるようにしておきましょう。
ちなみに会計期間の「日付」を知りたいときは、「BAPI_COAREA_GETPERIODLIMITS」を使うことで取得できます。
初日と末日のチェックですが、こちらも併せて覚えておきましょう。
1-4.ファイル名、パス取得系
最後に紹介するのはファイル名やパスの取得に関する汎用モジュールです。
ファイル操作が含まれるアドオンでは、ファイル名やパス取得の処理をよく使います。
特に完全ファイル名の取得や物理パスの取得などは頻出ですね。
以下の汎用モジュールを覚えておきましょう。
・論理ファイルから物理ファイルパスを取得する「FILE_GET_NAME」
サーバー上でのファイル連携などでは、論理ファイルを割り当ててファイルパスを指定します。
ただし、アドオンプログラム上では論理ファイルに紐づく物理ファイルパスを取得しなくてはなりません。
このとき使用するのが「FILE_GET_NAME」です。
・ファイル名と論理パスから完全ファイル名を取得「FILE_GET_NAME_USING_PATH」
さらにファイルパスだけではなくファイル名も必要な場合は、「FILE_GET_NAME_USING_PATH」を使用します。
この汎用モジュールでは完全ファイル名を取得できるので、前述の「FILE_GET_NAME」の結果(つまり物理ファイルパス)と結合することで、対象ファイルのフルパスが完成します。
・フルパスからディレクトリとファイル名を分割「TRINT_SPLIT_FILE_AND_PATH」
フルパスのうち、ディレクトリとファイル名を分割して処理したい場合に使用します。
ファイル操作では非常によく使う汎用モジュールです。
まとめ
今回は、開発者がよく使う汎用モジュールを紹介しました。
いずれも非常によく使うものですから、必ず覚えておきましょう。
汎用モジュールの知識=ステップアップの必須スキルと言っても過言ではないくらいです。
特にABAPer1~3年目は汎用モジュールにできるだけたくさん触れて、開発の効率化を目指してみてください。