LoginSignup
1
2

More than 1 year has passed since last update.

【ABAP】システムログ(SM21)の出力方法(サンプルあり)

Last updated at Posted at 2022-06-21
アドオンプログラム実行時にシステムログを残したい場合の手順を説明します。

システムログ用メッセージの登録

システムログ専用のメッセージを登録します。

SE92を実行

トランザクションコード:SE92で登録できます。

今回はテスト用にメッセージを登録しますが、標準で用意されているメッセージを使うこともできます。

Messageボタン押下

image.png

メッセージ情報を入力

①システムログ番号の決定

メッセージエリア2桁と連番1桁がキー項目になり、エリアの先頭文字はYかZである必要があります。

2桁目、3桁目には0-9の10個の数値とA-Zの26個のアルファベットを入力できますが、通常のメッセージに比べて登録できるシステムログメッセージの数が少ないので使い方に注意してください。

②メッセージ決定

「Text」欄に定義してください。引数の指定については後述します。

③重要度の決定

メッセージの重要度やログ照会時に信号アイコンで表示するかを決定します。

ここで重要度を設定しておくと、SM21での照会時に重要度の高いログだけ表示することができます。
image.png
<参考>

SAPの名称領域(1桁目がY、Z以外)で登録しようとすると、オブジェクトキーの入力を求められます。
image.png

保存

保存してパッケージを割り当てます。
image.png
image.png

文書ボタンを押下してエラーの詳細な内容説明を入力(必要な場合のみ)

画面下の大きな枠の中にフリーの入力欄があるので、必要に応じて入力してください。
image.png
ワード形式の画面が表示されます。
image.png

内容説明を入力して有効化

入力が完了したら有効化ボタンを押して完了です。
image.png

プログラムでの実装方法

システムログ出力用のクラスが標準で用意されています。

「WRITE_ENTRY」メソッドでシステムログ出力ができます。

  CALL METHOD cl_syslog_writer=>write_entry
    EXPORTING
      iv_message_id = 'Y10'
      iv_param_a    = '引数a'
      iv_param_b    = '引数b'
*      iv_param_c    =
*      iv_param_d    =
*      iv_param_e    =
*      iv_param_f    =
*      iv_param_g    =
*      iv_param_h    =
*      iv_param_i    =
      .

SM21で見るとこんな感じです。

一覧画面でログの概要、詳細画面で詳細テキストまで確認できます。

<一覧>
image.png

<詳細>
image.png

補足 - メッセージの引数について

大文字/小文字の違い

この2つのメッセージの違いを見ていきましょう。

違いは引数の大文字/小文字だけです。
image.png
上のサンプルでは小文字の方を出力したので、こちらでは大文字の方を同じやり方で出してみます。

  CALL METHOD cl_syslog_writer=>write_entry
    EXPORTING
      iv_message_id = 'Y00'
      iv_param_a    = '引数A'
      iv_param_b    = '引数B'
*     iv_param_c    =
*     iv_param_d    =
*     iv_param_e    =
*     iv_param_f    =
*     iv_param_g    =
*     iv_param_h    =
*     iv_param_i    =
    .

SM21で見てみましょう。
image.png
引数が表示されませんね。

上で紹介したメソッドでは大文字の引数は表示されないのです。

大文字の引数を表示するためには別のメソッドを使用します。

  CALL METHOD cl_syslog_writer=>write_entry_with_words
    EXPORTING
      iv_message_id = 'Y00'
      iv_word1      = '引数A'
      iv_word2      = '引数B'
*      iv_word3      =
*      iv_word4      =
*      iv_word5      =
      .

上で紹介したクラスの別メソッド「WRITE_ENTRY_WITH_WORDS」を使えば大文字の引数を表示できます。

引数を指定できる数

2つのメソッドのパラメータを見れば気づくかもしれませんが、

  • WRITE_ENTRY(小文字引数用)・・・最大9個
  • WRITE_ENTRY_WITH_WORDS(大文字引数用)・・・最大5個

までが指定可能となります。

使い分けの基準はメソッドのパラメータ名から判断すると、

小文字引数の方はキー項目やエラー情報に必要なコード値を指定する、

大文字引数の方テキストを指定する、という具合になるでしょうか。

上記は一例ですが、プロジェクトでルールを決めて運用することが大切です。

まとめ

  • アドオンで登録できるシステムメッセージの数は多くはない
  • システムログを出力する部品は標準で用意されている
  • 引数は通常のメッセージより多く指定できる

システムログに出力する機会はそんなに多くないので、プロジェクト内に知っているメンバーが少なく、いざ使いたい場合に困ることがあります。

そんなときのお役に立てれば幸いです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2