!--a11y-->

タブストリップコントロールは、複数のページで構成される Dynpro オブジェクトです。各タブページには、タブ表題とページ領域があります。タブストリップコントロールが占める領域が小さすぎるために一部のタブ表題が表示されない場合、スクロールバーが表示されます。そのスクロールバーを使用すると、表示されていない表題にアクセスすることができます。また、すべてのタブ表題の一覧を表示するための押ボタンもあります。

タブストリップコントロールを使用すると、アプリケーションに属する一連の Dynpro を 1 つの Dynpro に挿入し、それらの間を簡単にナビゲートすることができます。タブストリップコントロールの推奨される使用法と人間工学に関する考慮事項については、『SAP スタイルガイド』の「タブストリップコントロール」セクションを参照してください。
技術的には、タブページは、タブ表題として表示される押ボタンが割り当てられている従属画面です。
タブストリップコントロールは、すべてのタブページのセットです。したがって、タブストリップコントロールには従属画面と同じ制限が適用されます。特に、タブストリップコントロール内のページ間を切り替える際に、GUI ステータスを変更することはできません。ただし、ページは Dynpro 環境に完全に統合されているので、バッチインプットに関する問題は発生しません。
Dynpro でタブストリップコントロールを使用するには、リリース 4.0 以上の SAPgui を使用している必要があります。また、そのオペレーティングシステムは、Motif 、Windows 95 、MacOS 、またはバージョン 3.51 以上の Windows NT でなければなりません。
タブストリップコントロールを登録するために必要な手順は次のとおりです。
...
1. Dynpro 上のタブ領域とタブ表題を定義します。
2. 従属画面領域を各タブ表題に割り当てます。
3. Dynpro 制御ロジックをプログラムします。
4. ABAP 処理ロジックをプログラムします。
その後、SAPgui とアプリケーションサーバのどちらでタブストリップコントロールを呼び出すかを決定する必要があります。SAPgui の場合は、各タブページに独自の従属画面があります。アプリケーションサーバの場合は、すべてのタブページによって共有される 1 つの従属画面領域があります。
タブストリップ領域とタブ表題の両方を画面レイアウトで定義します。
タブストリップ領域には、一意の名称と、位置、長さ、および高さがあります。また、ユーザがウィンドウのサイズを調整した際に、タブストリップ領域のサイズが垂直方向と水平方向のどちらに調整されるかを指定することもできます。領域でサイズ調整がサポートされている場合、その最小サイズを指定することができます。
タブストリップ領域を定義すると、すでに 2 つのタブ表題があります。タブ表題は、技術的には押ボタンとまったく同じです。追加のタブ表題を登録するには、タブ表題を含む行に押ボタンを登録すればよいだけです。タブ表題の属性は押ボタンと同じです。つまり、各タブ表題に、名称、テキスト、および機能コードがあります。また、タブ表題とともにアイコンや動的テキストを使用することもできます。
従属画面領域を各タブ表題に割り当てる必要があります。これを行うには、次の 2 つの方法があります。
別個の従属画面領域を各タブ表題に割り当て、タイプ P ( ローカル GUI 機能) を使用してタブ表題の機能コードを定義する必要があります。この場合 Dynpro 制御ロジックの PBO イベントで、すべての従属画面が呼び出されます。その結果、すべてのタブページが SAPgui にローカルに格納されることになります。
ユーザがタブ表題を選択すると、SAPgui 内でページングが行われます。この点では、タブストリップコントロールは 1 つの Dynpro のように動作します。特に、ユーザがタブ表題を選択しても PAI イベントはトリガされず、データは移送されません。これによってタブストリップコントロールのパフォーマンスが向上する一方、ユーザが PAI イベントをトリガすると、すべての従属画面についてすべての入力チェックが実行されるというマイナスの影響もあります。そのため、ユーザがあるタブページで作業している際に、別のページの未入力の必須項目に入力チェックがジャンプする可能性があります。
したがって、SAPgui でのローカルページングは、入力画面ではなく、データを表示する画面に最適です。
1 つの従属画面領域がすべてのタブ表題によって共有され、PBO イベントで呼び出されます。特定の機能タイプを使用しないで、個々のタブ表題に機能コードを定義します。ユーザがタブページを選択すると、PAI イベントがトリガされます。そのため、該当するタブページを有効化し、適切な従属画面を従属画面領域に割り当てるモジュールを制御ロジックに組み込む必要があります。
ユーザがタブ表題を選択するたびに PAI イベントがトリガされるので、この方法はアプリケーションサーバに負荷がかかりますが、実行される入力チェックが影響するのは現在のタブページのみです。
タブストリップ領域内に従属画面領域を作成します。スクリーンペインタで、1 つ以上のタブ表題を選択して従属画面領域を 1 つ以上のタブ表題に割り当てます。また、参照項目属性に従属画面領域の名称を入力することで、タブ表題属性で従属画面領域をタブ表題に割り当てることもできます。
文字モードスクリーンペインタの手順については、
タブストリップコントロールの登録を参照してください。
SAPgui でページングする場合は、タブ表題ごとに従属画面領域を登録します。アプリケーションサーバでページングする場合は、すべてのタブ表題を選択し、1 つの従属画面領域を登録します。従属画面領域がタブ領域の先頭行に重なってはいけません。ただし、タブ領域内では、複数の従属画面領域が重なってもかまいません。
メイン画面の制御ロジックで行わなければならないのは、適切な従属画面を呼び出すことだけです。Dynpro のフローと ABAP プログラムへのデータ移送は、通常の従属画面の場合と同じです。Dynpro 制御ロジックをプログラムし、タブストリップコントロールを呼び出す方法は、次の 2 つです。
SAPgui でページングする場合、従属画面領域ごとに従属画面を挿入する必要があります。
PROCESS BEFORE
OUTPUT.
...
CALL SUBSCREEN: <area1> INCLUDING [<prog1>]
<dynp1>,
<area
2> INCLUDING [<prog2>] <dynp2>,
<area
3> INCLUDING [<prog3>] <dynp3>,
...
...
PROCESS AFTER
INPUT.
...
CALL SUBSCREEN: <area1>,
<area
2>,
<area
3>,
...
...
アプリケーションサーバでページングする場合、1 つの従属画面領域について従属画面をセットします。
PROCESS BEFORE
OUTPUT.
...
CALL SUBSCREEN <area> INCLUDING [<prog>]
<dynp>.
...
PROCESS AFTER
INPUT.
...
CALL SUBSCREEN <area>.
...
ABAP プログラムでタブストリップコントロールを使用するには、次の命令を使用して、プログラムの宣言部分で各コントロールのコントロールを登録しておく必要があります。
CONTROLS <ctrl> TYPE TABSTRIP.
<ctrl> は、ABAP プログラムにおけるDynpro のタブストリップ領域の名称です。このコントロールによって、ABAP プログラムでタブストリップコントロールを使用することができるようになります。この命令によって、<ctrl> という名称の構造が宣言されます。プログラムに必要な構造コンポーネントとして、ACTIVETAB があります 。
キ PBO イベントでの使用
Dynpro が表示される前に、コントロールを使用して現在有効なタブページを設定します。そのためには、該当するタブ表題の機能コードをコンポーネント ACTIVETAB に割り当てます。
<ctrl>-ACTIVETAB = <fcode>.
SAPgui でページングする場合、Dynpro が表示される前に、一度これを行えばよいだけです。その結果、タブストリップコントロールが初期化されます。デフォルトの有効なタブページは第一ページです。その後、ユーザがタブ表題を選択したときに有効になるページが SAPgui 内で設定されます。
アプリケーションサーバでページングする場合、最初に Dynpro が表示される前とユーザが Dynpro を呼び出すたびに 、有効なページを割り当てる必要があります。同時に、必要な従属画面を設定する必要があります。
タブページを動的に非表示にするには、該当するタブ表題について、テーブル SCREEN の ACTIVE 項目を 0 に設定します。
キ PAI イベントでの使用
PAI イベントでは、Dynpro 上の最後の有効なタブ表題の機能コードが ACTIVETAB に格納されます。
SAPgui でページングする場合、これによって、ユーザが現在表示されるページをチェックすることができます。アプリケーションサーバでページングする場合、有効なタブページは ABAP プログラムによって制御されます。
OK_CODE 項目の動作は、ページング方法によって異なります。
キ SAPgui でのページング
SAPgui でページングする場合、ユーザがタブ表題を選択しても PAI イベントはトリガされず、OK_CODE 項目には値が書き込まれません。OK_CODE 項目には、GUI ステータスでのユーザアクションによって、あるいはユーザがタブストリップコントロール外または従属画面のいずれかで押ボタンを選択した場合にのみ値が書き込まれます。
キ アプリケーションサーバでのページング
アプリケーションサーバでページングする場合、ユーザがタブ表題を選択すると PAI イベントがトリガされ、該当する機能コードが OK_CODE 項目に書き込まれます。
タブストリップコントロールを呼び出すには、コントロールの ACTIVETAB コンポーネントに機能コードを割り当てる必要があります。
<ctrl>-ACTIVETAB = <ok_code>.
この命令によって、最後の有効なタブページの機能コードが新しいタブ表題の機能コードで上書きされます。同時に、適切な従属画面が従属画面領域に挿入されるようにしてください。
それ以外については、タブストリップコントロールは通常の従属画面のように ABAP プログラムで処理されます。つまり、従属画面の ABAP プログラムには、従属画面の制御ロジックから呼び出されるダイアログモジュールが含まれている必要があります。

SAPgui でページングが行われるタブストリップコントロール
REPORT DEMO_DYNPRO_TABSTRIP_LOCAL.
CONTROLS MYTABSTRIP TYPE TABSTRIP.
DATA: OK_CODE TYPE
SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
MYTABSTRIP-ACTIVETAB = 'PUSH2'.
CALL SCREEN 100.
MODULE STATUS_0100
OUTPUT.
SET PF-STATUS 'SCREEN_100'.
ENDMODULE.
MODULE CANCEL
INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE USER_COMMAND
INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
IF SAVE_OK
= 'OK'.
MESSAGE
I888(SABAPDOCU) WITH 'MYTABSTRIP-ACTIVETAB ='
MYTABSTRIP-ACTIVETAB.
ENDIF.
ENDMODULE.
Dynpro 100 の次画面 ( 静的に定義) は Dynpro 100 です。この Dynpro のレイアウトは次のとおりです。
この Dynpro には、3 つのタブ表題 PUSH1 、PUSH2 、および PUSH3 を含む MYTABSTRIP というタブストリップ領域があります。機能コードの名称は同じで、すべての機能タイプが P です。従属画面領域 SUB1 から SUB3 のいずれかが各タブ表題に割り当てられます。押ボタンには、名称 BUTTON と機能コード 'OK' が割り当てられています。
同じ ABAP プログラムに、110 から 130 の 3 つの従属画面があります。これらの従属画面はそれぞれ、従属画面領域にちょうど収まります。レイアウトは次のとおりです。
Dynpro 100 の Dynpro 制御ロジックは次のとおりです。
PROCESS BEFORE
OUTPUT.
MODULE STATUS_0100.
CALL SUBSCREEN: SUB1 INCLUDING SY-REPID '0110',
SUB2
INCLUDING SY-REPID '0120',
SUB3
INCLUDING SY-REPID '0130'.
PROCESS AFTER
INPUT.
MODULE CANCEL AT EXIT-COMMAND.
CALL SUBSCREEN: SUB1,
SUB2,
SUB3.
MODULE USER_COMMAND.
従属画面 110 から 130 の Dynpro 制御ロジックには、モジュールコールは含まれていません。
プログラムを実行すると、2 番目のタブページが有効な Dynpro が表示されます。これは、Dynpro が表示される前に、プログラムによって構造MYTABSTRIP の ACTIVETAB コンポーネントが PUSH2 に設定されるためです。ユーザは、PAI イベントをトリガしなくてもタブストリップコントロールを呼び出すことができます。3 つの従属画面のいずれかが、各タブページに挿入されます。
ユーザが続行を選択すると PAI イベントがトリガされ、情報メッセージに現在有効なページのタブ表題の機能コードが表示されます。

アプリケーションサーバでページングが行われるタブストリップコントロール
REPORT DEMO_DYNPRO_TABSTRIP_LOCAL.
CONTROLS MYTABSTRIP TYPE TABSTRIP.
DATA: OK_CODE TYPE
SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
DATA NUMBER TYPE SY-DYNNR.
MYTABSTRIP-ACTIVETAB =
'PUSH2'.
NUMBER =
'0120'.
CALL SCREEN 100.
MODULE STATUS_0100
OUTPUT.
SET PF-STATUS 'SCREEN_100'.
ENDMODULE.
MODULE CANCEL
INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE USER_COMMAND
INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
IF SAVE_OK
= 'OK'.
MESSAGE
I888(SABAPDOCU) WITH 'MYTABSTRIP-ACTIVETAB ='
MYTABSTRIP-ACTIVETAB.
ELSE.
MYTABSTRIP-ACTIVETAB
= SAVE_OK.
CASE
SAVE_OK.
WHEN
'PUSH1'.
NUMBER =
'0110'.
WHEN
'PUSH2'.
NUMBER =
'0120'.
WHEN
'PUSH3'.
NUMBER =
'0130'.
ENDCASE.
ENDIF.
ENDMODULE.
静的に定義されている Dynpro 100 の次画面は Dynpro 100 です。この Dynpro のレイアウトは上記の例と同じです。ただし、3 つのタブ表題の機能コードの機能タイプは < 空白> で、すべてのタブ表題が 1 つの従属画面領域 SUB を共有しています。
上記の例と同じ従属画面 110 から 130 が定義されています。
Dynpro 100 の Dynpro 制御ロジックは次のとおりです。
PROCESS BEFORE
OUTPUT.
MODULE STATUS_0100.
CALL SUBSCREEN SUB INCLUDING SY-REPID NUMBER.
PROCESS AFTER
INPUT.
MODULE CANCEL AT EXIT-COMMAND.
CALL SUBSCREEN SUB.
MODULE USER_COMMAND.
この例では、プログラムによって、PBO イベント時に従属画面領域 SUB に従属画面が動的に呼び出されます。
従属画面 110 から 130 の Dynpro 制御ロジックには、モジュールコールは含まれていません。
この例には上記の例と同じ機能がありますが、タブストリップコントロール内のページングはアプリケーションサーバに実装されています。ユーザがタブ表題を選択するたびに、OK_CODE 項目内の機能コードが構造 MYTABSTRIP の ACTIVETAB コンポーネントに割り当てられます。同時に、タブストリップコントロールの従属画面領域 SUB に表示される必要がある従属画面の Dynpro 番号が変数 NUMBER に書き込まれます。