【SAPが動画で学べる!】YouTubeチャンネル開設しました ▶ SAPラボチャンネルはコチラ

【SAP ABAP】基本構文:メッセージ、サブルーチン、プログラム呼出し、try-catch(MESSGE・PERFORM・SUBMIT・TRY-CATCH)

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • ABAPプログラミングにおいて、MESSAGE命令・PERFORM命令・SUBMIT命令・TRY-CATCH構文の書き方を理解できるようになります。

これまでABAPの様々な構文を紹介してきましたが、ここではまとめてMESSAGE命令・PERFORM命令・SUBMIT命令・TRY-CATCH構文の使い方や書き方について解説していきます!

SAPフリーランスバンク SAPフリーランスバンク
  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COMMPPSD

【製造・流通/S/4HANA新規導入(全モジュール)】23区内(ハイブリッド)/基本設計フェーズ推進

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
大規模なS/4HANA新規導入プロジェクトに...
COFI

【IT・製造/S/4HANA稼働後支援(FI/CO)】品川区(リモート併用)/障害対応・保守支援

月額単価
1,300,000円 / 月
稼働場所
東京都
業務領域
運用・保守
作業内容:
S/4HANAの本番稼働を迎えた直後の、非常...
MMSD

【商社・製造/S/4HANA新規導入(SD/MM)】東京・関西(ハイブリッド)/仕入先直送スキーム構築

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
大規模なS/4HANA新規導入プロジェクトに...
COFIMMPPSD

【IT・製造/S/4HANA新規導入(ABAP)】東京駅(ハイブリッド)/移行ツール設計・開発

月額単価
1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
エンタープライズ企業向けの大規模なS/4...
MM

【製造・流通/S/4HANA新規導入(MM)】東京駅(ハイブリッド)/購買管理基本設計・アドオン検討

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
エンタープライズ企業向けの大規模なS/4...
MM

【製造・流通/S/4HANA新規導入(MM)】東京・関西(リモート併用)/購買管理コンサルティング

月額単価
2,000,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
大手企業におけるS/4HANAの新規導入プロ...
FI

【エネルギー業界/S/4HANA導入支援(連結会計)】都内・リモート/連結決算プロセスのシステム化推進

月額単価
1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, その他
作業内容:
エネルギー業界の大手企業における、S/4...
CO

【製造・管理会計/SAP COコンサル(CO-PC/PA)】都内・関西・リモート/要件定義およびCRP推進

月額単価
2,000,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
SAP S/4HANAの導入または刷新プロジェク...
COFIMMPPSD

【IT・コンサル/GROW with SAP(Public Edition)】都内・リモート/クラウドネイティブな設計・開発

月額単価
1,700,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
最新のクラウドERPソリューションである...
MMSD

【食品業界/S/4HANAシステム刷新(SD/MM/Logistics)】品川・リモート/SCM領域の構想策定および要件定義

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
大手食品メーカーにおける、S/4HANAを中...
この記事のポイント

MESSAGE命令

メッセージは、プログラムからユーザーに情報を伝える重要な手段の一つです。主な使用場面として、以下が挙げられます。

  • ユーザーが無効な入力を行った際の通知
  • エラーや警告などの情報提供

メッセージクラスとは

メッセージを効率的に管理するために「メッセージクラス」が利用されます。これにより、複数のメッセージを一元管理し、システム全体で共有可能になります。

  • 特徴:
    • メッセージクラスには一意のIDが割り当てられます。
    • 1つのメッセージクラスには最大1,000件のメッセージを格納可能です。

メッセージの登録方法

  1. メッセージクラスの作成
    • T-CODE:SE91(メッセージメンテナンス)で新しいメッセージクラスを作成。
      SE91(メッセージクラスの登録)
  2. メッセージの登録
    • 必要なテキストを登録。プレースホルダ(例: &1, &2)を使って動的な内容も設定可能。

MESSAGE命令

プログラム内でMESSAGE命令を使ってメッセージを表示します。

基本の構文
 MESSAGE <メッセージタイプ> <メッセージ番号> <メッセージクラス>.

使用例
MESSAGE S001(ZMSG).  "ステータスメッセージを表示

このプログラムでは、メッセージクラスZMSGのメッセージ番号001を表示しています。タイプはステータス(S)です。

実行結果

以下がABAPプログラムを実行した際の画面下に出るメッセージ表示です。
ABAP、MESSEGE

メッセージタイプ一覧

上記で出てきたメッセージタイプの一覧を表にしました。MESSAGE命令を使う上では必須の知識なので動かして覚えていきましょう!

メッセージタイプ説明挙動
A強制終了処理が強制終了されます。
Eエラー選択画面での入力エラー時で使用した際、選択画面で誤った値を入力した場合にエラーが表示されます。再度選択画面に値を入力しなおし再実行可能です。
メイン処理(START-OF-SELECTION内)で使用すると処理が強制終了されます。
Iインフォメーション処理が中断されポップアップが表示されます。ENTER押下後に処理はそのまま続行されます。
Sステータス設定したメッセージが表示されるのみで処理に影響を与えません。
主に進行状況を表示させたり、処理が成功した旨のメッセージを表示する際に使用します。
W警告ユーザーに警告(黄色のビックリマーク)でメッセージが表示されますが、処理は続行可能です。
X例外(プログラム終了)ショートダンプされるため致命的なエラーが発生したことを通知したい時に使用します。T-CODE:ST22にてショートダンプ時の断面を確認することが可能です。
メッセージタイプ

オプション:DISPLAY LIKE

メッセージタイプに関係なく、指定したアイコンの表示をすることが可能です。
例えばメイン処理内でメッセージタイプ”E”の表示をさせたいが処理を止めたくない場合に、以下のようにメッセージタイプ”S”を指定しDISPLAY LINEに”E”設定することで解決します。

使用例
MESSAGE S002(ZMSG) DISPLAY LIKE 'E'.  " エラーアイコンを表示

このプログラムでは、ステータス(S)のメッセージをエラー(E)アイコンで表示します。

実行結果

以下がABAPプログラムを実行した際の画面下に出るメッセージ表示です。

ABAP、MESSEGE

オプション:WITH(プレースホルダへの値の挿入)

メッセージ内のプレースホルダに値を動的に挿入します。

使用例
MESSAGE E003(ZMSG) WITH '田中太郎' '管理者権限'.  " プレースホルダに変数値を挿入

このプログラムでは、登録したメッセージの&1に「田中太郎」、&2に「管理者権限」が挿入されます。

実行結果

ABAP、MESSEGE

PERFORM命令(FORM命令)

PERFORM命令(FORM命令)は「サブルーチン」や「関数」とも呼ばれ、プログラム内で共通処理としてまとめ、必要な場面で呼び出せる機能です。

  • 利点
    • 再利用性:同じ処理を複数箇所で活用可能
    • 構造化:プログラムを整理しやすくなる
    • 効率化:コードの重複を減らし、管理が容易に

サブルーチンの基本構造

サブルーチンはFORMブロックとして定義し、PERFORM命令で呼び出します。

基本の構文
●サブルーチンの定義
 FROM <サブルーチン名>.
  ” 実行する処理を記述
 ENDFROM.

●サブルーチンの呼び出し
 PEFROM <サブルーチン名>.

使用例
START-OF-SELECTION.
  PERFORM display_message.

FORM display_message.
  WRITE: / 'これはサブルーチンから出力されたメッセージです。'.
ENDFORM.

このプログラムでは、サブルーチンdisplay_messageを呼び出し、指定のメッセージを画面に出力します。

実行結果

ABAP、FORM

パラメータを使用したサブルーチン

サブルーチンでは引数を用いることで、処理を動的に変更できます。

  • USING: 呼び出し元から値を受け取るためのパラメータ。
  • CHANGING: 呼び出し元とサブルーチン間で値を共有するためのパラメータ。
  • テーブルパラメータ: 内部テーブルを渡す。

USINGパラメータの例

使用例
START-OF-SELECTION.
  PERFORM display_message USING 'こんにちは、世界!'.

FORM display_message USING text TYPE string.
  WRITE: / text.
ENDFORM.

このプログラムでは、サブルーチンに文字列「こんにちは、世界!」を渡し、画面に出力します。

実行結果

ABAP、FORM

CHANGINGパラメータの例

使用例
DATA: lv_number TYPE i VALUE 5.

START-OF-SELECTION.
  PERFORM double_number CHANGING lv_number.
  WRITE: / '結果:', lv_number.

FORM double_number CHANGING number TYPE i.
  number = number * 2.
ENDFORM.

このプログラムでは、CHANGINGパラメータを使い、数値を2倍にして結果を返します。

実行結果

ABAP、FORM

USINGとCHANGINGを組み合わせる

使用例
DATA: lv_base TYPE i VALUE 3,
      lv_result TYPE i.

START-OF-SELECTION.
  PERFORM calculate_power USING lv_base
                       CHANGING lv_result.
  WRITE: / '3の3乗は:', lv_result.

FORM calculate_power USING base TYPE i
                  CHANGING result TYPE i.
  result = base ** 3.
ENDFORM.

このプログラムでは、USINGで基数を渡し、CHANGINGで結果を呼び出し元に返しています。このサブルーチンは、渡された基数を3乗した結果を計算します。

実行結果

ABAP、FORM

サブルーチンを使う上での注意点

1、引数の型を明示する
引数の型をしっかり指定し、意図しないデータ型のエラーを防ぎます。

2、可読性を重視する
サブルーチンの名前や引数は、処理内容が明確にわかるように命名しましょう。

SUBMIT命令

SUBMIT命令は、ABAPプログラムから他のABAPプログラムを呼び出して実行するためのコマンドです。プログラム間でデータを連携したり、バッチ処理を実行する際に便利です。

基本の構文
 SUBMIT <プログラム名> [WITH <条件>] AND RETURN.

<プログラム名>: 実行するABAPプログラム名
WITH: 実行時に渡すパラメータを指定
AND RETURN: 呼び出し元のプログラムに戻る

パラメータを渡す

呼び出し先プログラムにパラメータを渡すことができます。

使用例

●呼び出し元プログラム(Z_CALL_PROGRAM)

REPORT z_call_program.

PARAMETERS: p_name TYPE string DEFAULT 'John'.

START-OF-SELECTION.
  " SUBMITで別プログラムを呼び出し
  SUBMIT z_target_program WITH p_name = p_name AND RETURN.

●呼び出し先プログラム(Z_TARGET_PROGRAM)

REPORT z_target_program.

PARAMETERS: p_name TYPE string.

START-OF-SELECTION.
  WRITE: / '呼び出し元から渡された名前:', p_name.

このプログラムでは、Z_CALL_PROGRAMがZ_TARGET_PROGRAMを呼び出し、パラメータp_nameを渡します。呼び出し先では、その値を受け取って画面に出力します。

実行結果

ABAP、サブミット、SUBMIT

データを連携する(内部テーブル)

SUBMITとスプーリングを組み合わせて、実行結果を取得できます。

使用例

●呼び出し元プログラム(Z_CALL_TABLE_PROGRAM)

REPORT z_call_table_program.

DATA: lt_list TYPE TABLE OF abaplist, " スプールデータを格納
      lt_output TYPE TABLE OF char10, " 実行結果を保持
      lv_text TYPE char10.

START-OF-SELECTION.
  " SUBMITでプログラムを呼び出し、スプールに出力
  SUBMIT z_target_table_program EXPORTING LIST TO MEMORY AND RETURN.

  " スプールリストを取得
  CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
      listobject = lt_list
    EXCEPTIONS
      others = 1.

  " スプールリストをテキスト形式に変換
  CALL FUNCTION 'LIST_TO_ASCI'
    TABLES
      listobject = lt_list
      listasci   = lt_output
    EXCEPTIONS
      others = 1.

  " 結果を表示
  LOOP AT lt_output INTO lv_text.
    WRITE: / lv_text.
  ENDLOOP.

●呼び出し先プログラム(Z_TARGET_TABLE_PROGRAM)

REPORT z_target_table_program.

DATA: lt_data TYPE TABLE OF char10.

START-OF-SELECTION.
  " サンプルデータ作成
  APPEND 'データ1' TO lt_data.
  APPEND 'データ2' TO lt_data.
  APPEND 'データ3' TO lt_data.

  " データを出力
  LOOP AT lt_data INTO DATA(lv_row).
    WRITE: / lv_row.
  ENDLOOP.

このプログラムでは、SUBMITを使用してZ_TARGET_TABLE_PROGRAMを呼び出し、結果をスプールに出力します。呼び出し元プログラムでスプールを取得し、テキスト形式に変換して表示します。Z_TARGET_TABLE_PROGRAMは内部テーブルlt_dataのデータを画面に出力するシンプルなプログラムです。

実行結果

ABAP、サブミット、SUBMIT

TRY-CATCH構文

TRY-CATCH構文は、プログラム内で発生する例外(エラー)をキャッチし、適切な処理を行うための仕組みです。たとえば、ファイル読み込み時にエラーが発生しても、ショートダンプを回避し、エラー内容をログに記録したり、代替処理を実行することが可能です。

基本の構文
 TRY.
  ” エラーが発生する可能性のある処理
 CATCH <例外クラス>.
  ” エラーが発生した際の処理
 ENDTRY.

TRY: エラーが発生する可能性のある処理を記述
CATCH: 発生したエラーをキャッチし、対応する処理を記述

    ※CATCHブロックを複数設けることで、異なる種類の例外を別々に処理が可能
ENDTRY: ブロックの終了

使用例
DATA: lv_result TYPE i.

TRY.
  lv_result = 10 / 0. " ゼロ除算でエラー発生
CATCH cx_sy_arithmetic_error.
  WRITE: / '計算エラーが発生しました。'.
ENDTRY.

このプログラムでは、ゼロ除算エラーをキャッチし、計算エラーの通知メッセージを表示します。

実行結果

ABAP、try-catch

例外クラスとは?

例外クラスは、ABAPで発生するエラーの種類を定義したクラスです。

SAPが提供する標準例外クラスの例:

  • cx_sy_arithmetic_error: 計算関連のエラー。
  • cx_sy_no_authority: 権限不足によるエラー。
  • cx_sy_open_sql_error: データベース関連のエラー。

まとめ

ABAPを用いたメッセージ、サブルーチン、プログラム呼出し、try-catchの基本構文の解説は以上です!

他の構文についても解説しているのでぜひ確認してみてくださいね!

  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COMMPPSD

【製造・流通/S/4HANA新規導入(全モジュール)】23区内(ハイブリッド)/基本設計フェーズ推進

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
大規模なS/4HANA新規導入プロジェクトに...
COFI

【IT・製造/S/4HANA稼働後支援(FI/CO)】品川区(リモート併用)/障害対応・保守支援

月額単価
1,300,000円 / 月
稼働場所
東京都
業務領域
運用・保守
作業内容:
S/4HANAの本番稼働を迎えた直後の、非常...
MMSD

【商社・製造/S/4HANA新規導入(SD/MM)】東京・関西(ハイブリッド)/仕入先直送スキーム構築

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
大規模なS/4HANA新規導入プロジェクトに...
COFIMMPPSD

【IT・製造/S/4HANA新規導入(ABAP)】東京駅(ハイブリッド)/移行ツール設計・開発

月額単価
1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
エンタープライズ企業向けの大規模なS/4...
MM

【製造・流通/S/4HANA新規導入(MM)】東京駅(ハイブリッド)/購買管理基本設計・アドオン検討

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
エンタープライズ企業向けの大規模なS/4...
MM

【製造・流通/S/4HANA新規導入(MM)】東京・関西(リモート併用)/購買管理コンサルティング

月額単価
2,000,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
大手企業におけるS/4HANAの新規導入プロ...
FI

【エネルギー業界/S/4HANA導入支援(連結会計)】都内・リモート/連結決算プロセスのシステム化推進

月額単価
1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, その他
作業内容:
エネルギー業界の大手企業における、S/4...
CO

【製造・管理会計/SAP COコンサル(CO-PC/PA)】都内・関西・リモート/要件定義およびCRP推進

月額単価
2,000,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
SAP S/4HANAの導入または刷新プロジェク...
COFIMMPPSD

【IT・コンサル/GROW with SAP(Public Edition)】都内・リモート/クラウドネイティブな設計・開発

月額単価
1,700,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
最新のクラウドERPソリューションである...
MMSD

【食品業界/S/4HANAシステム刷新(SD/MM/Logistics)】品川・リモート/SCM領域の構想策定および要件定義

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
大手食品メーカーにおける、S/4HANAを中...

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。

この記事のポイント