SAP ABAPレポートプログラミング

⚡ スマートサマリー

ABAPレポートプログラミングは、大量のデータを選択、処理、表示する実行可能なプログラムを構築します。 SAP データ。このページでは、レポートヘッダーの追加、選択画面、イベントシーケンス、書式設定コマンド、対話型リスト、および論理データベースについて説明します。

  • 📊 主な目的: レポート作成プログラムは、複数のテーブルからデータを読み込み、処理し、フォーマット、ダウンロード、またはメール送信が可能なリストとして表示します。
  • 🧾 プログラムタイプ: すべてのレポートは、アプリケーション領域に関連付けられ、イベントによって完全に駆動される、タイプ1の実行可能プログラムです。
  • 🏁 ヘッダーの追加: 標準ページ見出しなし、 LINE-サイズ、 LINE-COUNTとMESSAGE-IDは最初のREPORTステートメントに含める必要があります。
  • 特選割️ 選択画面: PARAMETERS は単一の値を受け入れ、SELECT-OPTIONS は値の範囲または値のセットを受け入れます。
  • 豪華<XNUMXxXNUMXF><XNUMXxXNUMXF><XNUMXxBXNUMX><XNUMXxBXNUMX>️ イベントシーケンス: プログラムのロード、初期化、選択画面、選択開始、選択終了は、固定された順序で実行されます。
  • 🖱️ インタラクティブなリスト: HIDEは選択された行のフィールド値を保存し、HOTSPOTはリストフィールドをセカンダリリストのクリック可能な要素に変換します。
  • 🗄️ 論理データベース: SE36で作成されたこれらの機能は、SELECT文をGETイベントに置き換え、中央認証チェックを追加します。

SAP ABAPレポートプログラミング

ABAPレポートプログラミングとは何ですか?

SAPABAPは、レポートプログラムとダイアログプログラムの2種類のプログラムをサポートしています。レポートプログラムは、大量のデータを表示する必要がある場合に使用されます。

レポートプログラムの目的・用途

  • これらは、複数のテーブルからデータを選択して処理してから表示する必要がある場合に使用されます。
  • レポートに特別な形式が求められる場合に使用します。
  • レポートをダウンロードする必要がある場合に使用します SAP Excel シートに配布します。
  • レポートを特定の人に郵送する必要がある場合に使用します。

レポートプログラムの注意事項

  • レポート プログラムは常に実行可能プログラムです。 プログラム タイプは常に 1 です。
  • すべてのレポート プログラムは、特定のアプリケーション タイプ (販売および流通、FI – CO など) に対応します。また、クロス アプリケーション (タイプ '*') にすることもできます。
  • レポート プログラミングはイベント駆動型プログラミングです。
  • レポート プログラムの最初の行は常に Report です。
  • リストの見出しまたはプログラムの名前を非表示にするには、次のオプションを追加します。 標準のページ見出しなし 使用されている。
  • 特定のレポートの行サイズは、次の追加を使用して設定できます。 線のサイズ。
  • 特定のページの行数は、次の加算を使用して設定できます。 行数 n(n1)。 N はページの行数、N1 はページ フッター用に予約されている行数です。
  • 情報やエラー メッセージを表示するには、次の追加を使用してプログラムにメッセージ クラスを追加します。 メッセージID 。 メッセージ クラスは SE91 で維持されます。

したがって、理想的なレポート プログラムは以下から始める必要があります。

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

レポートプログラムとダイアログプログラムの比較

どちらのプログラムタイプも同じシステム上で動作しますが、解決する問題は正反対です。レポートプログラムはデータを読み込んで表示するのに対し、ダイアログプログラムはユーザーが画面を通してデータを管理できるようにします。

基準 レポートプログラム 対話プログラム
プログラムの種類 タイプ1、実行可能ファイル タイプM、モジュールプール
によって開始されました プログラム名またはトランザクションコード 取引コードのみ
流量制御 初期化や選択開始などのイベント PBOおよびPAIモジュールを使用した画面フローロジック
ユーザー入力 生成された選択画面 Screenで設計されたスクリーン Painter
典型的な使用 大容量データの表示とダウンロード ビジネスデータの作成と変更

選択画面はレポートが入力データを収集する場所なので、次に説明します。

選択画面

「選択画面」とは、プログラムを実行する際の入力値を指定する画面のことです。

選択画面は通常、

  1. 技術パラメータ
  2. オプションを選択

構文

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

技術パラメータ

パラメータは動的な選択を行うのに役立ちます。 プログラムの XNUMX サイクルの実行に対して XNUMX つの値のみを収容できます。

構文

パラメータをデータ型として定義する

Parameters p_id(30) type c.

テーブルフィールドのようなパラメータを定義します。

Parameter p_id like <table name>-<field name>.

パラメータにはチェックボックスとラジオボタンを使用できます。

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

パラメータはリストボックスにすることができます。

Parameter p_id like <table name>-<field name> as listbox

商品詳細

選択オプションは、値の範囲または値のセットをプログラムに入力するために使用されます。

構文

select-options s_vbeln for vbak-vbeln.

選択画面

このスクリーンショットは、選択オプションによって生成される低位と高位の入力フィールド、および複数選択ボタンを示しています。

変数のような選択オプションを定義することもできます

select-options s_vbeln for vbak-vbeln no intervals no-extension

入力データが収集されると、プログラムは一連の固定されたイベントに反応する。

ABAPレポートプログラムのイベント

ABAP レポート プログラムは次のとおりです。 イベント駆動型プログラム。 レポート プログラム内のさまざまなイベントは次のとおりです。

プログラムのロード

  • タイプ 1、M、F、または S のプログラムをロードした後、内部セッションで関連イベントをトリガーします。
  • また、関連する処理ブロックもプログラムおよび内部セッションごとに XNUMX 回だけ実行されます。
  • 処理ブロック LOAD-OF-PROGRAM は、 ABAPプログラム ABAP オブジェクトのクラスに対するコンストラクターとしてのタイプ 1、M、F、または S の値

初期化。

  • このイベントは選択画面が表示される前に実行されます。
  • すべての値の初期化。
  • 選択画面でデフォルト設定されている値以外の別の値を割り当てることができます。
  • 実行時に選択画面にいくつかの値を入力できます。

選択画面にて。

  • イベントは、選択画面が処理されたとき ( PAI の最後) に処理されます。
  • 入力された値の検証とチェックはここで行われます

選択の開始。

  • ここで、プログラムはテーブルから値の選択を開始します。

選択終了。

  • すべてのデータが選択された後、このイベントはデータを画面に書き込みます。

インタラクティブなイベント

  • インタラクティブなレポート作成に使用されます。 基本リストから詳細リストを作成する場合に使用します。

💡ヒント: イベントキーワードを指定せずに記述されたステートメントは、デフォルトでSTART-OF-SELECTIONに属するため、イベントが欠落している場合でもレポートは実行されます。

例:シンプルなABAPレポートプログラム

以下のプログラムは、追加情報、選択画面、およびイベントを結合して、1つの作業レポートを作成します。選択画面で入力された番号に対応する販売注文ヘッダーをVBAKから読み込み、リストとして出力します。

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

注目すべき点が3つあります。INITIALIZATIONは、選択画面が表示される前に日付パラメータを設定します。AT SELECTION-SCREENは入力内容を検証し、クラスZSDからメッセージを生成します。HIDEは書き込まれた各行の順序番号を保存するため、ダブルクリックで二次リストを作成できます。二次リストについては次のセクションで説明します。

レポートの書式設定

ABAP を使用すると、レポートをユーザーの希望どおりにフォーマットできます。 たとえば、「代替行」は異なる色で表示され、「合計」行は黄色で表示される必要があります。

構文

Format Color n

Format Color n Intensified On

n さまざまな数字に対応する可能性がある

フォーマットに加えて他にも追加事項があることに注意してください

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

インタラクティブなレポートプログラミング

  • 対話型プログラミングを使用することで、ユーザーはデータの取得と表示を能動的に制御できます。
  • 非常に基本的なリストから詳細なリストを作成するために使用されます。
  • 詳細データは二次リストに書き込まれます。
  • XNUMX 番目のリストは、最初の画面を完全にオーバーレイすることも、新しい画面に表示することもできます。
  • 二次リスト自体を対話型にすることができます。
  • 最初のリストはトランザクションを呼び出すこともできます。
  • インタラクティブ プログラミングに関連するさまざまなイベントがあります。

対話型プログラミングに使用されるいくつかのコマンド

ホットスポット

レポートに表示されているデータ上でマウスをドラッグすると、カーソルが人差し指を伸ばした手の形に変わります。ホットスポットは、FORMAT ステートメントを使用して実現できます。

Syntax:      Format Hotspot On (Off).

隠す

このコマンドは、詳細なリストを取得するためにさらに処理を行うフィールドに基づいてフィールド名を保存するのに役立ちます。 これは、フィールドの WRITE ステートメントの直後に書き込まれます。 行が選択されると、後で使用できるように値が変数に自動的に入力されます。

Syntax:     Hide <field-name>.

多数のテーブルを読み込むレポートでは、SELECT文を以下に説明する論理データベースに置き換えることができます。

論理データベース

  • 「選択」クエリを使用する代わりに、論理データベースを使用してプログラムのデータを取得できます。
  • 論理データベースはトランザクションによって作成されます SE36
  • 論理データベースの名前の長さは最大 20 文字です。 名前空間プレフィックスで始まる場合があります。
  • データは別のプログラムによって選択されており、GET を使用してデータにアクセスできます。 データを作業領域に配置するコマンド。

通常の選択クエリと比較した論理データベースの利点。

  1. 入力が正しく、完全で、妥当かどうかを確認するためのチェック条件を提供します。
  2. データベースアクセスのための集中認証チェックが含まれています
  3. パフォーマンスの向上などの機能強化は、論理データベースを使用するすべてのレポートにすぐに適用されます。

注: 複雑さのため、論理データベースはほとんどの場合使用されません。

よくあるご質問

PARAMETERS は、単一の値を保持する入力フィールドを 1 つ作成します。SELECT-OPTIONS は、SIGN、OPTION、LOW、HIGH の各フィールドを持つ内部テーブルを作成するため、範囲指定、除外、複数選択に対応できます。

AT LINE-SELECTIONはダブルクリックまたはF2キーに反応し、AT USER-COMMANDはメニューからのファンクションコードに反応します。どちらもHIDEによって保存された値からセカンダリリストを作成します。

リストメニューには、従来のレポート作成用の「リスト」「保存」「ローカルファイル」のオプションがあります。また、プログラムから関数モジュールGUI_DOWNLOADを呼び出すことで、追加のコーディングなしにALVリストをスプレッドシートにエクスポートすることも可能です。

はい。ABAP開発ツールのAIアシスタントは、必要なリストの記述から、レポートヘッダー、SELECT-OPTIONS、およびイベントブロックを生成します。生成されたSELECT文についても、パフォーマンスレビューが必要です。

AIツールは、長いリストを要約し、異常値を強調表示し、データに関する質問に平易な言葉で回答します。このような分析機能を組み込むには、通常、従来のリストをALVまたはFioriベースの出力形式に移行する必要があります。