SAP ABAP テーブルコントロールの例
テーブルコントロールとステップループは、Screen 内の画面に追加する画面テーブル表示用のオブジェクトです。 Painter.
プログラミングの観点から見ると、テーブル コントロールとステップ ループはほぼ同じです。 テーブル コントロールは、デスクトップ アプリケーションのテーブルに関連付けられたルック アンド フィールでデータを表示する、単純に改良されたステップ ループです。
ABAPテーブルコントロールの特徴
テーブル コントロールを使用すると、ユーザーは次のことが可能になります。
- 表を垂直方向および水平方向にスクロールします
- 列の幅のサイズを変更する
- フィールド内をスクロールします (フィールドの内容がフィールドよりも広い場合)
- テーブルの行または列を選択します
- 列の順序を変更する
- 将来使用できるように現在の表示設定を保存します
テーブル コントロールは、テーブルを見やすく使いやすくする特別な書式設定機能 (一部は自動、一部はオプション) も提供します。 テーブル コントロールが提供するのは –
- ユーザーがウィンドウのサイズを変更したときのテーブルの自動サイズ変更 (垂直および水平)
- 行間および列間の区切り線 (垂直および水平)
- すべての列の列ヘッダー フィールド
ステップ ループの特徴の XNUMX つは、テーブルの行が画面上で複数行にまたがることができることです。 一方、テーブル コントロールの行は常に XNUMX 行に含まれている必要があります (スクロールは可能ですが)。
一般的に、テーブルコントロールが提供する機能の多くは、システムの SAPGUIフロントエンドなので、自分でプログラムする必要はありません。唯一の注目すべき例外は垂直スクロールです。.
例 (トランザクション TZ60)
構文
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.