PR

【ABAP】検索ヘルプExitとは?仕組みとコーディング方法を3分で解説

ABAP

検索ヘルプExitについて仕組みと利用方法を3分で解説します。

検索ヘルプExitとは、標準の検索ヘルプの動きに何らかの処理を追加したり、標準の動きを変えたりすることができるようにした拡張方法です。

このページでは検索ヘルプの基本から検索ヘルプExitのコーディング方法までを簡単にご説明します。

このページで学べる内容
  • 検索ヘルプExitとは?
  • 検索ヘルプExitのプログラム構成
  • 検索ヘルプExitのコーディング例

SAPエンジニアを目指す方であれば頭に入れておきたいSAP基本知識の1つです。是非最後までご覧ください。

スポンサーリンク

検索ヘルプとは?

前提となる「検索ヘルプ」について。

検索ヘルプとは、選択画面の各項目に値を入力する際に、値入力をアシストしてくれる機能のこと。

検索ヘルプ,SAP

標準の検索ヘルプではできないこと

標準の検索ヘルプの設定だけでは、単に対象のデータを取得する動きしか指定できません。

したがって、例えば「取得したデータから特定条件に当てはまるレコードのみを表示する」「取得したデータを加工して表示する」といった特殊な要件を実現することができないのです。

そのために用意されたのが、検索ヘルプExitです。

検索ヘルプExitとは?

検索ヘルプExitの実態は汎用モジュールです。汎用モジュールを作成し、この汎用モジュールを検索ヘルプに紐づけることによって、データ加工・データ表示に追加の処理を加えるイメージです。

SAP 検索ヘルプExit

赤枠内に、作成した汎用モジュールを入力するだけなので検索ヘルプExitの紐づけ自体は簡単。

本質的には、この汎用モジュールをどのように作成するか?さえ理解すれば検索ヘルプExitの理解はおおよそOKと言えるでしょう。ここで、検索ヘルプExitの作り方を詳しく解説します。

検索ヘルプExitの作成方法

検索ヘルプExitを作成する際には、基本的にSAPが用意したサンプル「F4IF_SHLP_EXIT_EXAMPLE」を基にしていきます。

SAP標準の検索ヘルプからどのようなパラメータが渡されているかは完全にブラックボックスなので、自分で一から汎用モジュールを定義することはほぼ不可能。サンプルをフォーマットに必要なコーディングを行うのが定石です。

検索ヘルプExitのプログラム構成

早速、サンプル「F4IF_SHLP_EXIT_EXAMPLE」の中身をのぞいてみます。大まかに以下の4ステップで構成されます。

*1
  IF CALLCONTROL-STEP = 'SELONE'.
    PERFORM SELONE .........
  ENDIF.

*2
  IF CALLCONTROL-STEP = 'PRESEL'.
    PERFORM PRESEL ..........
  ENDIF.

*3
  IF CALLCONTROL-STEP = 'SELECT'.
    PERFORM STEP_SELECT TABLES RECORD_TAB SHLP_TAB
                        CHANGING SHLP CALLCONTROL RC.
    IF RC = 0.
      CALLCONTROL-STEP = 'DISP'.
    ELSE.
      CALLCONTROL-STEP = 'EXIT'.
    ENDIF.
    EXIT. "Don't process STEP DISP additionally in this call.
  ENDIF.

*4
  IF CALLCONTROL-STEP = 'DISP'.
    PERFORM AUTHORITY_CHECK TABLES RECORD_TAB SHLP_TAB
                           CHANGING SHLP CALLCONTROL.
  ENDIF.

CALLCONTROL-STEP」というのが肝で、このステップ(プログラム中のイベントのようなものとご理解ください)ごとに処理を追加していきます。

CALLCONTROL-STEP = 'SELONE'

'SELONE' ステップは、複合検索ヘルプの場合にのみ呼び出されるステップで、複合検索ヘルプから基本検索ヘルプを呼び出すタイミングを表します。

インクルードされた基本検索ヘルプのうち特定の検索ヘルプを表示させたい場合に利用するのが一般的です。特に何もしたくない場合は、以下のように処理をスキップさせます。

*1
  IF CALLCONTROL-STEP = 'SELONE'.
*    PERFORM SELONE .........
     EXIT.
  ENDIF.

CALLCONTROL-STEP = 'PRESEL'

'PRESEL' ステップは、SELECT(データ抽出)が始まる前を表します。

画面に入力された内容をチェックしたい場合などはこのステップ内にコーディングしていきます。

CALLCONTROL-STEP = 'SELECT'

'SELECT' ステップはその名の通りデータ抽出時(SELECT実行時)に訪れます。取得したデータを一部変更したい場合などにこのステップにコーディングすることが一般的です。

IF CALLCONTROL-STEP = 'SELECT'.
  IF shlp-shlpname = 'BUPAA' OR
     shlp-shlpname = 'BUPAA_VERS'.
     PERFORM search_partner_addr
       TABLES
         record_tab
         shlp_tab
       CHANGING
         shlp
         callcontrol
         rc.
  ENDIF.
ENDIF.

CALLCONTROL-STEP = 'DISP'

’DISP’ ステップは取得したデータを表示するタイミングです。主にこのステップでは、例えば権限に応じて表示・非表示の制御を行いたい場合などに利用することができます。

IF CALLCONTROL-STEP = 'DISP'
  PERFORM AUTHORITY_CHECK.

尚、検索ヘルプに検索ヘルプExitを設定することは、実は結構稀です。SAP導入時の方針にもよりますが、基本的には「SAPの動きに合わせて業務も変えていく」のが昨今の潮流です。ですが、その中でも検索ヘルプに権限チェックを付けたい!という要求は未だ根強いため、’DISP’ ステップで権限チェックを行っている会社は一定数存在するようです。

逆に言えば、検索ヘルプに〇〇という結果が出てこない!というような問い合わせを受けた場合は、この'DISP' ステップ周辺を調査してみることをおすすめします。

検索ヘルプExitの注意点

最後に検索ヘルプExitを利用する場合の注意点について。

検索ヘルプExitは "Exit" という名前ではありますが、標準の検索ヘルプに検索ヘルプExitを紐づける行為はモディフィケーション扱いです。

画像に alt 属性が指定されていません。ファイル名: image-54-1024x441.png

Exit という名称に惑わされ、チェック・代入などと同じ拡張(Enhancemnet)と同等であると勘違いをする方もいらっしゃいますが、この点だけ注意が必要。SAPをバージョンアップする場合は、紐づけた検索ヘルプExitの設定は消失してしまう点を考慮し適切な管理が求められます。

SAP/ABAPを1から勉強したい方は

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPBASISSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました