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

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

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

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

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

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

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

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

ステップ ループの特徴の XNUMX つは、テーブルの行が画面上で複数行にまたがることができることです。 一方、テーブル コントロールの行は常に XNUMX 行に含まれている必要があります (スクロールは可能ですが)。

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

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

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

構文

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 を使用すると、カーソルがテーブル コントロールの行に配置されているかどうかを確認できます。

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

GET CURSOR line <lin>.

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

Read table <itab> index ind.

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

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

1.テーブル コントロール要素を画面に追加します。

2.テーブルコントロールに名前を付けます。 ABAP プログラムでは、同じ構造体を宣言します ( CONTROLS 画面を使用した TABLEVIEW タイプ)

3.フィールドを作成するには、辞書/プログラムフィールド機能に移動します。

  • フィールドが必要な構造の名前を入力します。 (プログラムの辞書から選択したい場合は、関連するボタンをクリックしてください)。
  • フィールド リストで必要なフィールドを選択し、[OK] を選択します。
  • テーブルコントロール領域をクリックします

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

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

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

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

LOOP at <itab>.

ENDLOOP.

画面と内部テーブルの間でデータ転送が行われるのはループ内です。内部テーブルにデータを設定するときは、DESCRIBE TABLE を使用します。 ライン-lines、コントロール内の総行数を保存します。FIELD ステートメントを使用して、データ転送がいつ行われるかを制御できます。

個々のセルの属性を変更するには、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.