7. 複数トランザクションの統合
GuiXTを使用すると、特定のプロセスに関連するすべてのフィールドと機能を1つの画面でユーザーに提供できるため、効率的な作業が可能になります。追加的ナビゲーション手順は必要なく、複雑な画面を回避する必要もありません。
例題として、プラント保全(トランザクションIW21)の故障レポートの簡易作成を実装します。
設備の故障レポートを高速入力するためのGuiXT画面
※手順
- 高速エントリを提供する場所を定義します。(対応トランザクションの初期画面等)
プロセスが単純化されたバージョンが常に十分であるとは限らないため、「シンプル+高速」と「標準」を切り替えるオプションを用意することをお勧めします。
- SAPトランザクションを使用するときに必要なすべてのエントリを収集し、GuiXTを使用して独自の入力画面を実装します。
- 「Enter」および「Check」機能を実装します。 エントリを確認したり、テキストを追加したりするには、データベースを読む必要があります。
- 「保存」機能を実装します。 InputScriptとして、またはBAPIを呼び出して(次のチュートリアルを参照)。 「保存」にはチェックも含める必要があるため、「チェック」または「保存」のパラメーターで呼び出されるインクルードまたは一般的なInputScriptを使用することをお勧めします。
Part 1
トランザクションIW21の初期画面では、プッシュボタンとして高速入力モードを提供しています。
ユーザーは高速入力から、SAP標準に切り替えることができます。
GuiXT Script:
if Q[Transaction=IW21]
if V[iw21_simple]
// Button to switch to standard
Pushbutton (toolbar) “To SAP standard notification” process=“iw21_simple_off.txt”
// Remove standard button
del P[Notification]
// Remove existing input fields
del (0,0) (10,100)
// here then the fast entry
Title “Simple malfunction report”
else
Pushbutton (toolbar) “Simple malfunction report” process=“iw21_simple_on.txt”
endif
endif
with
// iw21_simple_on.txt
Set V[iw21_simple] “X”
Return
// iw21_simple_off.txt
Set V[iw21_simple] “”
Return
Part 2(高速入力のUI)
GuiXTで必要な入力フィールドを実装します。
// Group boxes around everything
Box (1,3) (18,100)
// Equipment
InputField (2,6) “Equipment” (2,32) size=18 _
name=“iw21_equnr” -required searchhelp=“EQUIR”
// Equipment text
Text (2,54) “&V[iw21_eqktx]”
// short text
InputField (4,6) “Fault description” (4,32) size=40 _
name=“iw21_qmtxt” -required
// Longtext
TextBox (5,5.6) (10.5,75.6) name=“iw21_longtext”
// Start of fault
// Set default, current date and time
if not V[iw21_ausvn]
Set V[iw21_ausvn] “&V[today_user]”
Set V[iw21_auztv] “&V[today_h:00]”
endif
InputField (12,6) “Fault start date” (12,24) -date _
name=“iw21_ausvn”
// Fault start time
// build up time dropdown 00:00;00:15; …
if not text[iw21_time_dropdown]
include “build_iw21_time_dropdown.txt”
endif
Text (12,36) “Time” -label size=10
DropDownList (12,46) “iw21_time_dropdown” width=10 refer=“V[iw21_auztv]”
// Priority
// Default priority 2=High
if not V[iw21_priok]
Set V[iw21_priok] “2”
endif
Set text[iw21_priority_dropdown] “1=Very high;2=High;3=Medium;4=Low”
Text (14,6) “Priority” -label size=18
DropDownList (14,24) “iw21_priority_dropdown” width=20 refer=“V[iw21_priok]” -nosort
※装置番号の長さ指定サイズ= 18は、F1->技術情報->データ要素から取得できます。
同様に、F1->技術情報を選択して、検索ヘルプの名前を表示します。
「EQUI」は、集合検索ヘルプ(トランザクションSE11)です。 一括検索ヘルプではなく、一括検索ヘルプの代わりに、最も適切な「EQUIR」を選択し、searchhelp=“EQUIR”を指定しただけです。
DropDownListは、優先度と時間を入力するために使用されます。
ロングテキストの入力は、TextBoxを利用して行われます。
Part 3(機能「チェック」)
ユーザーが「Enter」 あるいは 「Check」プッシュボタンを押すと、システムはまず、ショートテキストが入力されたかどうか等、いくつかの妥当性チェックを実行します。 入力された値でIW21トランザクションを試行的に実行することにより、さらにチェックが実行されます。 エントリを保存する代わりに、システムは高速入力画面に戻ります。 「保存」にも同じ手順が必要なため、「チェック」と「保存」に同じInputScriptを使用し、Parameterを使用して「チェック」または「保存」モードを選択します(Part 4のInputScript)。
On Enter process=“iw21_simple_save.txt
using MODE = “C”
Pushbutton (16,6) “Check” size=(2,18) process=“iw21_simple_save.txt”
using MODE = “C”
Pushbutton (16,31) “Save” size=(2,18) process=“iw21_simple_save.txt”
using MODE = “S”
Part 4(「保存」機能)
「保存」では、「チェック」と同じInputScriptを開始します。 IW21スクリプトでは、最後にF11を押します。 入力データがリセットされ、高速入力画面に戻ります。
// —————————————————–
// IW21 Fast malfunction entry (check/save)
// File “iw21_simple_save.txt”
// —————————————————–
Parameter MODE // C=Check S=Save
// Plausibility checks
// Equipment specified?
if not V[iw21_equnr]
SetCursor V[iw21_equnr]
Return “E: Please enter the equipment number” -statusline
endif
// Short text specified?
if not V[iw21_qmtxt]
SetCursor V[iw21_qmtxt]
Return “E: Please enter a short text” -statusline
endif
// Date specified?
if not V[iw21_ausvn]
SetCursor V[iw21_ausvn]
Return “E: Please emter the date” -statusline
endif
// Date format correct?
CheckDate “&V[iw21_ausvn]”
if not Q[ok]
SetCursor V[iw21_ausvn]
Return “E: Please check the date -statusline
endif
// —————————-
// Create notification via IW21
// —————————-
Set F[Notification type] “M2”
Enter
Screen SAPLIQS0.7200
Set F[Equipment] “&V[iw21_equnr]”
Set F[Description] “&V[iw21_qmtxt]”
Set F[Malfunct.start] “&V[iw21_ausvn]”
Set F[VIQMEL-AUZTV] “&V[iw21_auztv]”
CopyText fromText=“iw21_longtext” toScreen=X[TEXT]
Enter onError=continue
// Error occurred
Message “&V[_lasterror]” -statusline
Enter “/niw21”
// End InputScript
Leave
Screen SAPLIQS0.7200
// Set equipment text
Set V[iw21_eqktx] “&F[RIWO1-EQTXT]”
// Check only? then retuen now
if U[MODE=C]
Message “S: Input data checked” -statusline
Enter “/niw21”
// End InputScript
Leave
endif
Enter “=10\TAB02” // Termine+Priorität
// Set priority
Screen SAPLIQS0.7200
Set F[Priorität] “&V[iw21_priok]”
Enter
// Change priority -> popup “Specify new dates?”
Screen SAPLSPO1.0500
Enter “=OPT1” // Yes
Screen SAPLIQS0.7200
// Save
Enter /11 onError=continue
// Error occured
Message “&V[_lasterror]” -statusline
Enter “/niw21”
// End InputScript
Leave
// now we are back on IW21 start
Screen SAPLIQS0.0100
// Sucess message
Message “S: &V[_message]” -statusline
// Reset input data
Clear V[iw21_*]
Clear text[iw21_longtext]
// Stay on malfunction entry screen
Set V[iw21_simple] “X”
// Recall transaction
Enter “/niw21”
完全を期すため、時間選択のincludeスクリプトを作成します。
// Build long text with times (per quarter of an hour) for dropdown
Clear text[iw21_time_dropdown]
Set V[k] 0
label next_hour
Set V[hh] &V[k] + 100
Set V[hh] “&V[hh](2-3)”
Set V[time] “&V[hh]:00”
copytext fromString=“time” toText=“iw21_time_dropdown” -appendline
Set V[time] “&V[hh]:15”
copytext fromString=“time” toText=“iw21_time_dropdown” -appendline
Set V[time] “&V[hh]:30”
copytext fromString=“time” toText=“iw21_time_dropdown” -appendline
Set V[time] “&V[hh]:45”
copytext fromString=“time” toText=“iw21_time_dropdown” -appendline
Set V[k] &V[k] + 1
if V[k<24]
goto next_hour
endif