トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

SAPのオブジェクト/汎用モジュール の変更点

Top/SAPのオブジェクト/汎用モジュール

[[汎用グループ>SAPのオブジェクト/汎用グループ]]の下位構造で、いわゆる[[関数>アドオン/関数]]。
[[汎用グループ>SAPのオブジェクト/汎用グループ]]の下位構造で、いわゆる[[関数>アドオン/関数]]の役割を果たす。

----
#contents
----

* 概要 [#ze3de1d0]
[[ABAP]]プログラムとは独立し個別の処理を[[汎用グループ>SAPのオブジェクト/汎用グループ]]に定義したもので、モジュール化の手段の一つ。
SE37で実装し、必ず汎用グループが必要。メインプログラムとのデータのやり取りについては、パラメータ及び例外を利用する。処理が終了すると、プログラムの制御はメインプログラムに戻る。
SE37で実装し、新規登録時には[[汎用グループ>SAPのオブジェクト/汎用グループ]]に紐づけが必要となる。

用途としては、下記の二つ。
メインプログラムとのデータのやり取りについてはパラメータ及び例外を利用し、処理が終了するとプログラム制御は呼び出し元のプログラムに戻る。

用途としては、下記が挙げられる。

** 関数として [#zb0c0b8b]
再利用可能な[[関数>アドオン/関数]]として定義する。
例外としてバッファの値を抜き取る系があるが、原則的には[[引数>アドオン/引数]]を受け取り[[戻り値>アドオン/戻り値]]を返す。

** 隔離目的 [#s2353830]
例えば[[Exit>SAPの拡張手段#b1976726]]や[[BADI>SAPの拡張手段/BAdI]]の中にコーディングし過ぎると、下記のトラブルがあるため、単に「隔離」という目的の元で実装する。

-可視性と保守性が非常に低下すること
[[BADI>SAPの拡張手段/BAdI]]etcの中に込み入ったコーディングをしてしまう((それ自体が良いか否かは別の議論))と、それだけでメンテが煩雑になり、またデグレのリスクも膨らんでしまう。
そのため、呼び出し箇所の[[CALL FUNCTION>ABAP/CALL FUNCTION]]宣言のみで済むため、こちらが良いかと思う。

-修正後の[[移送>ベーシス/移送]]で実行中ユーザが落ちてしまう
[[BADI>SAPの拡張手段/BAdI]]etcを直接修正して[[移送>ベーシス/移送]]すると、「現在のプログラムは変更されています」というメッセージの元、[[ショートダンプ>SAPの共通用語/ショートダンプ]]が発生してしまう。
せっかく入力した[[伝票>SAPの共通用語/伝票]]の内容が失われてしまったりと良いこと無しの現象なので、是非回避したいもの。

** SAP外部からのアクセス [#d4566ae5]
SAP外部からは、ダイレクトにSAPのプログラムやテーブルにアクセスするのではなく、そういった動きをする汎用モジュールを呼び出す=RFCにて行う。
汎用モジュール属性で「リモート可能モジュール」が選択されている必要がある。

* まとめ前のメモ [#ha319d6e]
-カウント機能?
Msg 番号 SMETRICS011:汎用モジュールコール回数をカウントする機能が作動していません
トランザクション SMET* の1つを実行しようとしましたが、汎用モジュールコールの回数の測定するモードになっていませんでした。
測定モードに切り換えるには、データ型グループの Type-pool SMET9 を変更して、設定を ON にします。
・・・らしい。
-IPメッセンジャー的な?
TH_POPUPで、メッセージをポップアップ表示して・・・ってのができるみたい。
面倒そうなのでフリーソフト使えって話ではあるが、プロジェクトとか会社的に禁止されてる場合に。
TH_POPUPで、メッセージをポップアップ表示することが可能。
いちいち面倒なのでIP Messengerなどのフリーソフトを使えって話ではあるが、イタズラには面白い。

-[[用途別の汎用モジュール]]


~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)