SAP ABAP テーブルコントロールの例

⚡ スマートサマリー

SAP ABAPテーブルコントロールは、画面に組み込まれた画面上にスクロール可能なグリッドとして内部テーブルを表示します。 Painterこのページでは、その機能、CONTROLS宣言、カーソル処理、PBOループとPAIループ、および列属性について説明します。

  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ コア定義: テーブルコントロールは、デスクトップアプリケーションのグリッドのような外観と操作感でテーブルデータを表示する、改良されたステップループです。
  • 🧰 内蔵機能: スクロール、列のサイズ変更、列の並べ替え、行の選択、および保存された表示設定は、 SAPGUIフロントエンド。
  • 📜 単線ルール: ステップループ行は複数の画面行にまたがる場合があるが、テーブルコントロール行は常に1行に収まる必要がある。
  • 特選割️ 宣言: コントロール画面を使用してテーブルビューをタイプします画面要素をABAPプログラムにリンクします。
  • 🎯 カーソル処理: SET CURSORはカーソルをPBOの位置に配置し、GET CURSORはPAIの位置にあるフィールドと行を読み取ります。
  • 🔁 データ転送: LOOP AT … USING CONTROL は PBO で実行され、通常の LOOP AT は PAI で実行され、これらのループ内ではデータが画面と内部テーブルの間で移動します。
  • 🎨 動的属性: SCREEN テーブルと-cols 構造は、実行時に列の表示/非表示と書式を変更します。

SAP ABAP テーブルコントロール

テーブルコントロールとは何ですか SAP ABAP?

テーブルコントロールとステップループは、Screen 内の画面に追加する画面テーブル表示用のオブジェクトです。 Painter.

プログラミングの観点から見ると、テーブル コントロールとステップ ループはほぼ同じです。 テーブル コントロールは、デスクトップ アプリケーションのテーブルに関連付けられたルック アンド フィールでデータを表示する、単純に改良されたステップ ループです。

ABAPテーブルコントロールの特徴

テーブル コントロールを使用すると、ユーザーは次のことが可能になります。

  • 表を垂直方向および水平方向にスクロールします
  • 列の幅のサイズを変更する
  • フィールド内をスクロールします (フィールドの内容がフィールドよりも広い場合)
  • テーブルの行または列を選択します
  • 列の順序を変更する
  • 将来使用できるように現在の表示設定を保存します

テーブル コントロールは、テーブルを見やすく使いやすくする特別な書式設定機能 (一部は自動、一部はオプション) も提供します。 テーブル コントロールが提供するのは –

  • ユーザーがウィンドウのサイズを変更したときのテーブルの自動サイズ変更 (垂直および水平)
  • 行間および列間の区切り線 (垂直および水平)
  • すべての列の列ヘッダー フィールド

一般的に、テーブルコントロールが提供する機能の多くは、システムの SAPGUIフロントエンドなので、自分でプログラムする必要はありません。唯一の注目すべき例外は垂直スクロールです。.

例 (トランザクション TZ60)

SAP ABAP テーブルコントロール

上記のトランザクションTZ60は、列ヘッダー、区切り線、選択列を含むグリッドという最終結果を示しています。以前のステップループとの違いを以下にまとめます。

テーブルコントロールとステップループの比較

ステップループの特徴の一つは、テーブルの行が画面上で複数行にまたがることができる点です。一方、テーブルコントロールの行は常に1行に収まる必要があります(スクロールは可能ですが)。下の表は、これら2つの画面要素を比較したものです。

基準 テーブルコントロール ステップループ
行レイアウト 1行は常に1画面行です 1行が複数の画面行にまたがる場合があります
列の処理 列はユーザ​​ーがサイズ変更、並べ替え、非表示にすることができます。 画面上に定義された固定列レイアウト
スクローリング フロントエンドによる水平スクロール、PAIでプログラムされた垂直スクロール すべてABAPコードでプログラミングされています
宣言 コントロール…画面を使用したテーブルビューのタイプ プログラムには制御構造がありません
ディスプレイの設定 ユーザーは個人用のレイアウトを保存できます 無し

テーブルコントロールは現代的な要素であるため、このページの残りの部分はテーブルコントロールに関するプログラミングを行います。

テーブルコントロールの作成とプログラミング方法

テーブルコントロールには、画面要素、プログラム内の制御構造、そしてPBOとPAIの両方におけるループが必要です。以下のサブセクションでは、この順序で説明します。

支配権を宣言する

ABAP プログラムでテーブル コントロールを処理するには、次のステートメントを使用して、プログラムの宣言部分で各テーブル コントロールのコントロールを宣言する必要があります。

CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>

どこABAP プログラムの画面上のテーブル コントロールの名前です。 このコントロールにより、ABAP プログラムはテーブル コントロールの属性を読み取り、コントロールに影響を与えることができます。 テーブルの初期値がロードされる画面番号です。

カーソル位置の設定と読み取り

テーブル コントロールのカーソル位置は、次の方法で設定できます。

PBO では、テーブル コントロールの特定の行の特定のフィールドにカーソルを設定できます。

SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]

オプションの OFFSET オプションを使用すると、「カーソル位置の設定」で説明されているように、フィールドにカーソルのオフセットを入力できます。

PAIでは現在のカーソル位置を読み取ることができます。

GET CURSOR FIELD <f> LINE <lin> ...

「カーソル位置の確認」フィールドに記載されている情報に加えて、 カーソルが現在テーブル コントロールのどの行にあるかに関する情報が含まれます。 も使用できます

GET CURSOR LINE <lin>.

テーブルコントロールの行を特定するには、SY-SUBRC を使用します。SY-SUBRC を使用すると、カーソルがテーブルコントロールの行に配置されているかどうかを確認できます。

対応する内部テーブル行を読み込む

の対応する行を取得するには、 内部テーブル:

GET CURSOR line <lin>.

ind = <table_control>-top_line + <lin> - 1.

Read table <itab> index ind.

システム変数 stepl – ループ ... エンドループ内の現在のテーブル行インデックスが含まれます。 Loopc – テーブルに表示される行数が含まれます

画面にコントロールを作成する Painter

テーブル コントロールを作成するには

  1. 画面にテーブルコントロール要素を追加する
  2. テーブルコントロールに名前を付けます。ABAPプログラムでは、同じ名前の構造体を宣言します(コントロール) TABLEVIEW を画面上で使用する)
  3. フィールドを作成するには、「辞書/プログラムフィールド」機能を使用してください。
    • フィールドが必要な構造の名前を入力します。 (プログラムの辞書から選択したい場合は、関連するボタンをクリックしてください)。
    • フィールド リストで必要なフィールドを選択し、[OK] を選択します。
    • テーブルコントロール領域をクリックします

選択列が必要な場合は、属性の適切なチェックボックスをオンにして名前を付けます。 ABAPプログラム.

PBOループとPAIループのコーディング

PBO には次のステートメントが必要です

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

PAIには必ずあるはずです。

LOOP at <itab>.

ENDLOOP.

画面と内部テーブル間のデータ転送はループ内で行われます。内部テーブルにデータを格納するには、DESCRIBE TABLE を使用します。 LINES -lines は、コントロール内の行の総数を格納するために使用されます。FIELD ステートメントは、データ転送のタイミングを制御するために使用できます。

⚠️ 警告: PBOループでは、コントロールに「USING CONTROL」という名前を付ける必要があります。そうしないと、コントロールは行数を認識できず、垂直スクロールが機能しなくなります。

実行時に列属性を変更する

個々のセルの属性を変更するには、PBO の SCREEN テーブルを一時的に変更します。 CONTROLS ステートメントによって作成された構造体の属性を変更できます。

<cntrl>-fixed_cols etc are the attributes of the control

<cntrl>-cols-index etc are the attributes of the columns.

<cntrl>-cols-screen-invisible etc are the screen attributes of each column.

💡ヒント: ループオーバーPBO の -cols を使用して、2 番目の画面を作成するのではなく、特定のユーザー ロールに対して列を非表示または保護します。

よくあるご質問

フロントエンドは水平スクロールを処理しますが、垂直スクロールはPAIでコーディングされています。SY-UCOMMを評価してスクロール機能のコードを取得し、次のPBOが実行される前に制御構造のtop_lineフィールドを移動してください。

An ALVグリッド ソート、フィルタリング、合計、エクスポートといった機能をコード追加なしで提供するため、表示リストに適しています。画面に独自の入力ロジックや各セルの完全な制御が必要な場合は、テーブルコントロールが推奨されます。

SY-STEPL には、画面ループ内で現在処理されている行のインデックスが格納され、SY-LOOPC には、画面に表示されている行数が格納されます。これらの値は、コントロールの LOOP … ENDLOOP 内でのみ設定されます。

はい。ABAP開発ツールのAIアシスタントは、内部テーブルの説明からコントロール宣言、両方のスクリーンループ、およびスクロールロジックを作成します。生成されたフローロジックは、スクリーン上でテストする必要があります。 Painter.

AI分析ツールは、ダイナミックプログラミング画面のフローロジックを読み取り、フィールドと機能コードを一覧表示し、同等のFioriまたはALVベースのデザインを提案します。この提案により、近代化プロジェクトの分析フェーズが短縮されます。