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

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

Last-modified: 2014-10-27 (月) 19:44:48 (3462d)
Top > SAPのオブジェクト > 汎用モジュール


汎用グループの下位構造で、いわゆる関数の役割を果たす。



概要

ABAPプログラムとは独立し個別の処理を汎用グループに定義したもので、モジュール化の手段の一つ。
SE37で実装し、新規登録時には汎用グループに紐づけが必要となる。

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

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

関数として

再利用可能な関数として定義する。
例外としてバッファの値を抜き取る系があるが、原則的には引数を受け取り戻り値を返す。

隔離目的

例えばExitBADIの中にコーディングし過ぎると、下記のトラブルがあるため、単に「隔離」という目的の元で実装する。

  • 可視性と保守性が非常に低下すること
    BADIetcの中に込み入ったコーディングをしてしまう*1と、それだけでメンテが煩雑になり、またデグレのリスクも膨らんでしまう。
    そのため、呼び出し箇所のCALL FUNCTION宣言のみで済むため、こちらが良いかと思う。
  • 修正後の移送で実行中ユーザが落ちてしまう
    BADIetcを直接修正して移送すると、「現在のプログラムは変更されています」というメッセージの元、ショートダンプが発生してしまう。
    せっかく入力した伝票の内容が失われてしまったりと良いこと無しの現象なので、是非回避したいもの。

SAP外部からのアクセス

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

まとめ前のメモ

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




【スポンサードリンク】
  





コメントはありません。 Comments/SAPのオブジェクト/汎用モジュール?

お名前:

*1 それ自体が良いか否かは別の議論