トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

SAPのオブジェクト/汎用モジュール のバックアップ(No.1)


汎用グループの下位構造で、いわゆる関数

概要

ABAPプログラムとは独立し個別の処理を汎用グループに定義したもので、モジュール化の手段の一つ。 SE37で実装し、必ず汎用グループが必要。メインプログラムとのデータのやり取りについては、パラメータ及び例外を利用する。処理が終了すると、プログラムの制御はメインプログラムに戻る。

用途としては、下記の二つ。

関数として

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

隔離目的

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

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

まとめ前のメモ

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




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

お名前:

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