PR

【ABAP】PUSHBUTTON(SELECTION-SCREEN命令)の実装を3分で

ABAP

本ページでは、ABAPのSELECTION-SCREEN命令を利用して選択画面上に「押しボタン」を実装する方法を解説します。

押しボタンとは、選択画面に存在する以下のようなボタンのこと。

SAP標準の画面の中には、実は結構多く存在しており、このボタンを設置することで値を入力する以外の様々な動きを画面上で実現することが可能になります。

検索ヘルプをトリガーする押しボタンの例
このページで学べる内容
  • SELECTION-SCREENの基本
  • PUSUBUTTONオプションの利用方法
    • 構文ルール
    • ボタンテキストの表示方法
    • ユーザーコマンドの基本
    • アイコンの表示方法()
  • PUSUBUTTONを利用したサンプルコード

ABAPエンジニアの中でも、意外と知られていない選択画面の実装方法です。是非、最後までご覧ください。

スポンサーリンク

SELECTION-SCRENNの基本

簡単なおさらいから。

SELECTION-SCREEN命令は、選択画面を作ったり、選択画面のレイアウトを変更したりする場合に利用されます。

この画面は、入力欄とチェック欄の2つのブロックに分かれていますが、これはSELECTION-SREEN命令で実装されています。

さらに詳しくしりたいかたは、SELECTION-SRENN命令をご覧ください。

PUSUBUTTONオプションの利用

SELECTION-SREEN命令で、PUSUBUTTONオプションを利用することで、選択画面上にボタンを設置することができます。

構文ルールは次の通り。

構文ルール
SELECTION-SCREEN PUSHBUTTON (テキスト) USER-COMMAND (ユーザーコマンド).

SELECTION-SREENに続けて、「PUSUBUTTON」と記述するだけでボタンが設置されます。

尚、この際(テキスト)の中に表示させたい文字列はテキストシンボル等で指定することも可能です。

   SELECTION-SCREEN PUSHBUTTON /1(30) TEXT-S00 USER-COMMAND CP01.
*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
SELECTION-SCREEN:
      PUSHBUTTON /1(40) BUTT001 USER-COMMAND BUT1,
      PUSHBUTTON /1(40) BUTT002 USER-COMMAND BUT2.

ユーザーコマンド:USER-COMMAND

PUSUBUTTONオプションを付けただけでは、実は押しボタンを作成しているだけで、押しボタンを押した際の挙動は全く定義されていません。

そこで、必要となるのがユーザーコマンド(USER-COMMAND)です。押しボタンにあらかじめ「ユーザーコマンド」を割り当てておき、別途このユーザーコマンドが起動されたときのコーディングを行っておく必要があります。

* プッシュボタン押下時の処理
CASE SY-UCOMM.
  WHEN 'BUT1'.
      MESSAGE E001(VL)
      WITH 'ボタン1が押されました'.
    ENDIF.

  WHEN 'BUT2'.
      MESSAGE E001(VL)
      WITH 'ボタン2が押されました'.
    ENDIF.
ENDCASE.

ボタンを押した際、割り当てたユーザーコマンドはシステム項目 "SY-UCOMM" に代入される仕組みです。CASE文などで、SY-UCOMMの値に応じた分岐を作成して、それに応じた処理をコーディングしておきます。

例えば押しボタンを押したときにポップアップ画面を表示させたり、別の入力画面を表示させたりと可能性は無限大です。

アイコンの付与 "ICON_CREATE"

押しボタンにはテキストだけでなく、アイコンを設定することが可能です。例えばこんな感じ。

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

実装方法は以下の通り。

*----------------------------------------------------------------------*
*   選択画面
*----------------------------------------------------------------------*

* プッシュボタン(抽出条件)
   SELECTION-SCREEN PUSHBUTTON /1(30) BTN001 USER-COMMAND BUT001.

* プッシュボタン(変更項目)
   SELECTION-SCREEN PUSHBUTTON /1(30) BTN002 USER-COMMAND BUT002.


*----------------------------------------------------------------------*
*   初期処理
*----------------------------------------------------------------------*
INITIALIZATION.

* アイコン(押しボタン)の付与

* ボタン1
CALL FUNCTION 'ICON_CREATE'
  EXPORTING
    NAME   = 'ICON_LOCKED'
    TEXT   = '抽出'
  IMPORTING
    RESULT = BTN001
  EXCEPTIONS
    OTHERS = 0.

* ボタン2
CALL FUNCTION 'ICON_CREATE'
  EXPORTING
    NAME   = 'ICON_LOCKED'
    TEXT   = '変更'
  IMPORTING
    RESULT = BTN002
  EXCEPTIONS
    OTHERS = 0.
結果
アイコン設定のポイント

アイコン設定は、SAP標準の汎用モジュール「ICON_CREATE」を利用します。

EXPORTINGのNAMEパラメータにはアイコン名を。TEXTパラメータには、ボタン上に表示させたいテキストを指定します。

汎用モジュールの基本的な使い方を知りたい方はこちらの記事をご覧ください。

尚、実装はイベント "INITIALIZATION" に記述します。それ以外の場所に記述した場合、アイコンもテキストも設定されませんので注意しましょう。

イベントって?という方はこちらの記事をチェック。

サンプルコード:PUSUBUTTONを利用した画面制御

今回解説・紹介した知識を組み合わせて作成したソースコードがこちらです。

*----------------------------------------------------------------------*
*   選択画面
*----------------------------------------------------------------------*

* プッシュボタン(抽出条件)
   SELECTION-SCREEN PUSHBUTTON /1(30) BTN001 USER-COMMAND BUT001.

* プッシュボタン(変更項目)
   SELECTION-SCREEN PUSHBUTTON /1(30) BTN002 USER-COMMAND BUT002.


*----------------------------------------------------------------------*
*   初期処理
*----------------------------------------------------------------------*
INITIALIZATION.

* アイコン(押しボタン)の付与

* ボタン1
CALL FUNCTION 'ICON_CREATE'
  EXPORTING
    NAME   = 'ICON_LOCKED'
    TEXT   = '抽出'
  IMPORTING
    RESULT = BTN001
  EXCEPTIONS
    OTHERS = 0.

* ボタン2
CALL FUNCTION 'ICON_CREATE'
  EXPORTING
    NAME   = 'ICON_LOCKED'
    TEXT   = '変更'
  IMPORTING
    RESULT = BTN002
  EXCEPTIONS
    OTHERS = 0.

*----------------------------------------------------------------------*
*   画面処理
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

* プッシュボタン押下時の処理
CASE SY-UCOMM.
  WHEN 'BUT1'.
      MESSAGE E001(VL)
      WITH 'ボタン1が押されました'.
    ENDIF.

  WHEN 'BUT2'.
      MESSAGE E001(VL)
      WITH 'ボタン2が押されました'.
    ENDIF.
ENDCASE.

ここのコードってどういう意味?という方は本ページを再度読み直してみましょう。

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. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

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

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