Calling SAP Hierarchy Graphics and Others, With Dialog 
The following ABAP program illustrates some of the function module calls discussed in the preceding topics.
PROGRAM G_HIER_2.
*-----------------------------------------------------------*
* *
*-----------------------------------------------------------*
* This Report starts the SAP Hierarchy system. *
* *
* It demonstrates several dialogs, depending on which PF key*
* is pressed. Each dialog starts one or more SAP Graphics *
* programs. Possible dialogs are: *
* PF10: Start SAP Hierarchy: Node selection opens text *
* window *
* PF11: Start SAP Hierarchy: Node selection opens 2nd HIER*
* window that displays a sub-tree of the hierarchy. *
* Node selection in the 2nd HIER window has no *
* effect. *
* PF12: Start SAP Hierarchy: Node selection opens a window*
* for SAP Business Graphics. *
* PF13: Start SAP Hierarchy: Node selection opens a window*
* for SAP Statistics. Selection of a curve point in *
* the statistics window opens a text window. *
* PF14: Start SAP Hierarchy: Node selection opens four *
* different windows: *
* 1. SAP Hierarchy, showing a sub-tree of the *
* hierarchy *
* 2. SAP Statistics *
* 3. SAP Business Graphics *
* 4. SAP Text Matrix *
* Selection of a curve point in the statistics *
* window opens a text window. *
* The description of each dialog is found with the code for *
* the individual PF keys (PF10-PF14). *
*-----------------------------------------------------------*
DATA: BEGIN OF HIER OCCURS 1,
ELKEY(11),
UEKEY(11),
ETEXT(20),
VAL1 TYPE P,
VAL2 TYPE P,
END OF HIER.
DATA: BEGIN OF PHIER OCCURS 1,
ELKEY(11),
UEKEY(11),
ETEXT(20),
END OF PHIER.
DATA: BEGIN OF BUSGDATA OCCURS 1,
ELKEY(11),
VAL1 TYPE P,
VAL2 TYPE P,
VAL3 TYPE P,
VAL4 TYPE P,
END OF BUSGDATA.
DATA: BEGIN OF MTEXT OCCURS 1,
TEXT(100),
END OF MTEXT.
DATA: RBUFF(64), M_TYP(1), RWNID(5), STAT_TYP.
DATA: INDEX LIKE SY-INDEX.
DATA: HIER1_STAT, HIER2_STAT.
DATA: TEMA_STAT, TEMA1_STAT.
DATA: STAT_STAT, BUSG_STAT..
DATA: NODE(64), KURVE(5), PUNKT(5).
DATA: BEGIN OF TCOL OCCURS 1,
TEXT(20),
END OF TCOL,
BEGIN OF GOPTS OCCURS 1,
C(20),
END OF GOPTS.
SET PF-STATUS 'GRAF'.
HIER-UEKEY = SPACE. "// Fill the data
HIER-ELKEY = '10000000001'.
HIER-ETEXT = 'El.1 - S1'.
HIER-VAL1 = 10.
HIER-VAL2 = 15.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 1234.
BUSGDATA-VAL2 = 2345.
BUSGDATA-VAL3 = 3456.
BUSGDATA-VAL4 = 4567.
APPEND BUSGDATA.
HIER-UEKEY = '10000000001'.
HIER-ELKEY = '11000000002'.
HIER-ETEXT = 'El.1 - S2'.
HIER-VAL1 = 20.
HIER-VAL2 = 25.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 3534.
BUSGDATA-VAL2 = 7845.
BUSGDATA-VAL3 = 1256.
BUSGDATA-VAL4 = 3467.
APPEND BUSGDATA.
HIER-UEKEY = '10000000001'.
HIER-ELKEY = '12000000002'.
HIER-ETEXT = 'El.2 - S2'.
HIER-VAL1 = 30.
HIER-VAL2 = 35.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 1734.
BUSGDATA-VAL2 = 2345.
BUSGDATA-VAL3 = 4256.
BUSGDATA-VAL4 = 3767.
APPEND BUSGDATA.
HIER-UEKEY = '10000000001'.
HIER-ELKEY = '13000000002'.
HIER-ETEXT = 'El.3 - S2'.
HIER-VAL1 = 40.
HIER-VAL2 = 45.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 8734.
BUSGDATA-VAL2 = 1345.
BUSGDATA-VAL3 = 5256.
BUSGDATA-VAL4 = 3767.
APPEND BUSGDATA.
HIER-UEKEY = '10000000001'.
HIER-ELKEY = '14000000002'.
HIER-ETEXT = 'El.4 - S2'.
HIER-VAL1 = 50.
HIER-VAL2 = 55.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 5890.
BUSGDATA-VAL2 = 3245.
BUSGDATA-VAL3 = 1786.
BUSGDATA-VAL4 = 3647.
APPEND BUSGDATA.
HIER-UEKEY = '11000000002'.
HIER-ELKEY = '11100000003'.
HIER-ETEXT = 'El.11 - S3'.
HIER-VAL1 = 60.
HIER-VAL2 = 65.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 2370.
BUSGDATA-VAL2 = 2845.
BUSGDATA-VAL3 = 1286.
BUSGDATA-VAL4 = 7311.
APPEND BUSGDATA.
HIER-UEKEY = '11000000002'.
HIER-ELKEY = '11200000003'.
HIER-ETEXT = 'El.12 - S3'.
HIER-VAL1 = 70.
HIER-VAL2 = 75.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 1210.
BUSGDATA-VAL2 = 2165.
BUSGDATA-VAL3 = 3290.
BUSGDATA-VAL4 = 1311.
APPEND BUSGDATA.
HIER-UEKEY = '11000000002'.
HIER-ELKEY = '11300000003'.
HIER-ETEXT = 'El.13 - S3'.
HIER-VAL1 = 80.
HIER-VAL2 = 85.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 4578.
BUSGDATA-VAL2 = 2789.
BUSGDATA-VAL3 = 5412.
BUSGDATA-VAL4 = 4678.
APPEND BUSGDATA.
HIER-UEKEY = '12000000002'.
HIER-ELKEY = '12100000003'.
HIER-ETEXT = 'El.21 - S3'.
HIER-VAL1 = 90.
HIER-VAL2 = 95.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 4782.
BUSGDATA-VAL2 = 3571.
BUSGDATA-VAL3 = 1672.
BUSGDATA-VAL4 = 2690.
APPEND BUSGDATA.
HIER-UEKEY = '12000000002'.
HIER-ELKEY = '12200000003'.
HIER-ETEXT = 'El.22 - S3'.
HIER-VAL1 = 18.
HIER-VAL2 = 24.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 3710.
BUSGDATA-VAL2 = 3125.
BUSGDATA-VAL3 = 5178.
BUSGDATA-VAL4 = 3730.
APPEND BUSGDATA.
HIER-UEKEY = '12200000003'.
HIER-ELKEY = '12210000004'.
HIER-ETEXT = 'El.221-S4'.
HIER-VAL1 = 37.
HIER-VAL2 = 45.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 2710.
BUSGDATA-VAL2 = 4125.
BUSGDATA-VAL3 = 1278.
BUSGDATA-VAL4 = 1730.
APPEND BUSGDATA.
HIER-UEKEY = '12200000003'.
HIER-ELKEY = '12220000004'.
HIER-ETEXT = 'El.222-S4'.
HIER-VAL1 = 67.
HIER-VAL2 = 72.
APPEND HIER.
BUSGDATA-ELKEY = HIER-ELKEY.
BUSGDATA-VAL1 = 2710.
BUSGDATA-VAL2 = 1125.
BUSGDATA-VAL3 = 4178.
BUSGDATA-VAL4 = 3570.
APPEND BUSGDATA.
SORT HIER.
LOOP AT HIER.
WRITE: / HIER-ELKEY,20 HIER-UEKEY,50 HIER-ETEXT.
ENDLOOP.
*-------------------------------------------------------------*
* PF10 *
* *
* Start up an SAP Hierarchy window *
* *
*-------------------------------------------------------------*
* When the user selects (clicks on) a node, a text window *
* appears. *
*-------------------------------------------------------------*
* The dialog ends when the SAP Hierarchy is closed by the *
* user. *
* Closing the text window will lead to a restart next time. *
*-------------------------------------------------------------*
AT PF10.
CLEAR HIER1_STAT.
TEMA_STAT = '2'. "// Start and do not
"// wait
DO.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
NLVAL = '2/1'
TTEXT = SY-TITLE
NDIMS = 4
SMODE = 2
VTXT1 = 'Display Criterion 1'
"// Criterion 1 has
VAL11 = 20 "// 2 threshold values
"// and
VAL12 = 50 "// 3 colors.
COL11 = 'DARKBLUE'
COL12 = 'DARKYELLOW'
COL13 = 'RED'
VTXT2 = 'Display Criterion 2'
"// Criterion 2 has
VAL21 = 30 "// 2 threshold values
"// and
VAL22 = 60 "// 3 colors.
COL21 = 'BLUE'
COL22 = 'YELLOW'
COL23 = 'BLACK'
NTEXT = 'WHITE'
STAT = HIER1_STAT
SUPER = 'X'
IMPORTING
NODES = HIER-ELKEY
M_TYP = M_TYP
TABLES
DATA = HIER.
HIER1_STAT = '4'. "// Next time, just wait
CASE M_TYP.
WHEN 'D'.
EXIT. "// Exit condition
WHEN ' '.
WHEN '0'.
"// From non-Hier window
"// It must be from text
"// window, and must
"// have been 'Q'.
TEMA_STAT = '2'. "// Restart TEMA next
"// time
WHEN 'Q'.
WHEN 'I'.
READ TABLE HIER WITH KEY HIER-ELKEY.
READ TABLE BUSGDATA WITH KEY HIER-ELKEY.
PERFORM DISPLAY_TEXT TABLES MTEXT USING HIER BUSGDATA.
CALL FUNCTION 'TEXT_MATRIX'
EXPORTING
TTEXT = 'Info Window'
RSIZE = '6'
CSIZE = '40'
STAT = TEMA_STAT
TABLES
DATA = MTEXT.
TEMA_STAT = '5'. "// Reload data next
"// time
ENDCASE.
ENDDO.
*-------------------------------------------------------------*
* PF11 *
* Start an SAP Hierarchy window. *
* *
* When the user clicks on a node, a second SAP Hierarchy *
* window is opened in which a sub-tree of the hierarchy is *
* displayed. *
* Clicking on nodes in the second window has no effect. *
*-------------------------------------------------------------*
* The dialog ends when the user closes the first SAP Hierarchy*
* window. If the user closes the second HIER window first, SAP*
* Hierarchy is re-started anew (in a second window) if the *
* user clicks on further hierarchy nodes. *
*-------------------------------------------------------------*
AT PF11.
CLEAR HIER1_STAT. "// Start and wait
HIER2_STAT = '2'. "// Start and do not
"// wait
DO.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
WINID = 'HIER1'
TTEXT = SY-TITLE
VTXT1 = 'Display Criterion 1'
"// Criterion 1 has
VAL11 = 20 "// 2 threshold values
VAL12 = 50 "// 3 colors
COL11 = 'DARKBLUE'
COL12 = 'DARKYELLOW'
COL13 = 'RED'
VTXT2 = 'Display Criterion 2'
"// Criterion 2 has no
STAT = HIER1_STAT "// threshold values
SMODE = 2
NTEXT = 'WHITE'
SUPER = 'X'
IMPORTING
NODES = HIER-ELKEY
M_TYP = M_TYP
RWNID = RWNID
TABLES
DATA = HIER.
HIER1_STAT = '4'.
CASE M_TYP.
WHEN 'D'.
EXIT.
WHEN '0'.
WHEN 'Q'. "// HIER2 has been
"// closed.
"// (Closing HIER1 would
"// produce a 'D'
"// message
"// due to using
"// SUPER.)
HIER2_STAT = '2'. "// Restart HIER2 next
"// time
WHEN 'I'. "// Msg. from an SAP
"// Hierarchy window
"// (HIER1
"// or HIER2)
IF RWNID EQ 'HIER1'.
PERFORM DISPLAY_NODES USING HIER-ELKEY.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
TTEXT = 'Partial Hierarchy Display'
SMODE = '2'
STAT = HIER2_STAT
WINID = 'HIER2'
TABLES
DATA = PHIER.
HIER2_STAT = '5'. "// Reload data next
"// time
ELSE.
"// Ignore any clicking
"// in HIER2 window
ENDIF.
ENDCASE.
ENDDO.
*-------------------------------------------------------------*
* PF12 *
* *
* Start an SAP Hierarchy window *
* *
*-------------------------------------------------------------*
* When the user clicks on a node, an SAP Business Graphics *
* window appears to display its data. *
*-------------------------------------------------------------*
* The dialog ends when the user closes the hierarchy window. *
* If the user closes the SAP Business Graphic windows first, *
* it cannot be opened again. That is, further selection of *
* nodes *
* (after closing a previous BUSG window) will not result in *
* new SAP Business Graphics windows being opened. *
*-------------------------------------------------------------*
AT PF12.
TCOL = 'Column 1'. APPEND TCOL.
TCOL = 'Column 2'. APPEND TCOL.
TCOL = 'Column 3'. APPEND TCOL.
TCOL = 'Column 4'. APPEND TCOL.
CLEAR HIER1_STAT.
BUSG_STAT = '2'. "// Start and do not
"// wait
DO.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
TTEXT = SY-TITLE
NDIMS = 4
SMODE = 2
VTXT1 = 'Display Criterion 1'
VAL11 = 20
VAL12 = 50
COL11 = 'DARKBLUE'
COL12 = 'DARKYELLOW'
COL13 = 'RED'
VTXT2 = 'Display Criterion 2'
NTEXT = 'WHITE'
STAT = HIER1_STAT
SUPER = 'X'
IMPORTING
NODES = HIER-ELKEY
M_TYP = M_TYP
TABLES
DATA = HIER.
HIER1_STAT = '4'. "// Next time wait
CASE M_TYP.
WHEN 'D'.
EXIT.
WHEN 'I'.
READ TABLE HIER WITH KEY HIER-ELKEY.
READ TABLE BUSGDATA WITH KEY HIER-ELKEY.
CALL FUNCTION 'GRAPH_MATRIX_2D'
EXPORTING
TITL = HIER-ETEXT
NROW = SY-TABIX
STAT = BUSG_STAT
TABLES
DATA = BUSGDATA
OPTS = GOPTS
TCOL = TCOL.
BUSG_STAT = '5'.
WHEN '0'. "// Must be from BUSG
"// Must be 'Q'
"// Do NOT restart BUSG
"// here.
ENDCASE.
ENDDO.
*-------------------------------------------------------------*
* PF13 *
* *
* Start an SAP Hierarchy window *
* *
*-------------------------------------------------------------*
* When the user clicks on a node, an SAP Statistics window *
* appears to display its data. If the user then clicks on a *
* point in a statistics curve, a text window appears. *
*-------------------------------------------------------------*
* The dialog ends when the user closes the hierarchy window. *
* If the user closes either the statistics or text window, the*
* corresponding program (Statistics or Text Matrix) is re- *
* started anew the next time the user clicks on nodes or *
* curve points. *
*-------------------------------------------------------------*
AT PF13.
DATA: BEGIN OF STATDATA OCCURS 1,
X TYPE P,
Y TYPE P,
END OF STATDATA.
CLEAR HIER1_STAT.
STAT_STAT = '2'. "// Start and do not
"// wait
TEMA_STAT = '2'. "// Start and do not
"// wait
DO.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
TTEXT = SY-TITLE
NDIMS = 4
SMODE = 2
VTXT1 = 'Display Criterion 1'
VAL11 = 20
VAL12 = 50
COL11 = 'DARKBLUE'
COL12 = 'DARKYELLOW'
COL13 = 'RED'
VTXT2 = 'Display Criterion 2'
NTEXT = 'WHITE'
STAT = HIER1_STAT
SUPER = 'X'
IMPORTING
NODES = NODE
RBUFF = RBUFF
RWNID = RWNID
M_TYP = M_TYP
TABLES
DATA = HIER.
HIER1_STAT = '4'. "// Next time wait
CASE M_TYP.
WHEN 'D'.
EXIT.
WHEN 'Q'.
WHEN ' '.
WHEN 'I'.
MOVE NODE TO HIER-ELKEY.
READ TABLE HIER WITH KEY HIER-ELKEY.
READ TABLE BUSGDATA WITH KEY HIER-ELKEY.
REFRESH GOPTS.
GOPTS = '$ 4'. APPEND GOPTS.
GOPTS = 'C_ART=1'. APPEND GOPTS.
GOPTS = 'CTYPE=3'. APPEND GOPTS.
GOPTS = 'COLOR=3'. APPEND GOPTS.
GOPTS = 'LTEXT=Monthly Salary'. APPEND GOPTS.
REFRESH STATDATA.
STATDATA-X = 1. STATDATA-Y = BUSGDATA-VAL1.
APPEND STATDATA.
STATDATA-X = 2. STATDATA-Y = BUSGDATA-VAL2.
APPEND STATDATA.
STATDATA-X = 3. STATDATA-Y = BUSGDATA-VAL3.
APPEND STATDATA.
STATDATA-X = 4. STATDATA-Y = BUSGDATA-VAL4.
APPEND STATDATA.
MOVE 'Additional Info: ' TO NODE.
WRITE HIER-ETEXT TO NODE+17(20).
CALL FUNCTION 'STAT_GRAPH'
EXPORTING
INFORM = 'X'
NOPOS = 'X'
STAT = STAT_STAT
TTEXT = NODE
TAXIS = 'Personnel'
SCALE = 'MAN'
XRNGU = 5
XTCKS = '6'
YRNGU = 10000
YTCKS = '11'
TABLES
DATA = STATDATA
OPTS = GOPTS.
STAT_STAT = '5'.
WHEN '0'. "// Some other window
IF RWNID(4) = 'STAT'. "// from Statistics
"// window
CALL FUNCTION 'STAT_GRAPH'
EXPORTING
STAT = 'R'
INBUF = RBUFF
IMPORTING
KURVE = KURVE
INDEX = PUNKT
M_TYP = STAT_TYP
TABLES
DATA = STATDATA "// Not used here
OPTS = GOPTS. "// Not used here
IF STAT_TYP = 'I'.
PERFORM DISPLAY_STAT TABLES MTEXT
USING KURVE PUNKT HIER-ETEXT
BUSGDATA.
CALL FUNCTION 'TEXT_MATRIX'
EXPORTING
TTEXT = 'Additional information window'
RSIZE = '4'
CSIZE = '30'
STAT = TEMA_STAT
TABLES
DATA = MTEXT.
TEMA_STAT = '5'. "// Reload data next
"// time
ELSE.
STAT_STAT = '2'. "// Restart STAT next
"// time
ENDIF.
ENDIF.
IF RWNID(4) = 'TEMA'. "// Msg comes text
"// window:
"// it must have been
"// 'Q'.
TEMA_STAT = '2'. "// Restart TEMA next
"// time
ENDIF.
ENDCASE.
ENDDO.
*-------------------------------------------------------------*
* PF14 *
* *
* Start up an SAP Hierarchy window. *
* *
*-------------------------------------------------------------*
* User selection of a hierarchy node results in the opening of*
* - an SAP Hierarchy window displaying a partial hierarchy *
* - an SAP Statistics window *
* - an SAP Business Graphics window *
* - an SAP Text Matrix (text) window *
* When the user selects a point in a Statistics window, an *
* additional text window is displayed. *
*-------------------------------------------------------------*
* The dialog ends when the first hierarchy window is closed. *
* Closing any other window (beside the first one) is *
* remembered: *
* if the corresponding programs are requested a second time, *
* they are started anew. *
*-------------------------------------------------------------*
AT PF14.
TCOL = 'Column 1'. APPEND TCOL.
TCOL = 'Column 2'. APPEND TCOL.
TCOL = 'Column 3'. APPEND TCOL.
TCOL = 'Column 4'. APPEND TCOL.
CLEAR HIER1_STAT. "// Start, send data and
"// wait
BUSG_STAT = '2'. "// Start and do not
"// wait
STAT_STAT = '2'. "// --"--
HIER2_STAT = '2'. "// --"--
TEMA_STAT = '2'. "// --"--
TEMA1_STAT = '2'. "// --"--
DO.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
TTEXT = SY-TITLE
NDIMS = 4
SMODE = 2
VTXT1 = 'Display Criterion 1'
VAL11 = 20
VAL12 = 50
COL11 = 'DARKBLUE'
COL12 = 'DARKYELLOW'
COL13 = 'RED'
VTXT2 = 'Display Criterion 2'
NTEXT = 'WHITE'
STAT = HIER1_STAT
SUPER = 'X'
WINID = 'HIER1'
IMPORTING
M_TYP = M_TYP
RBUFF = RBUFF
NODES = HIER-ELKEY
RWNID = RWNID
TABLES
DATA = HIER.
HIER1_STAT = '4'.
CASE M_TYP.
WHEN 'D'.
EXIT.
WHEN 'Q'. "// Must be from HIER2
"// (since quitting
"// HIER1
"// would cause a 'D'
"// because of using
"// SUPER)
HIER2_STAT = '2'. "// Restart next time
WHEN ' '.
WHEN 'I'.
IF RWNID(5) = 'HIER1'. "// Message from HIER1
MOVE HIER-ELKEY TO NODE.
READ TABLE HIER WITH KEY HIER-ELKEY.
READ TABLE BUSGDATA WITH KEY HIER-ELKEY.
REFRESH GOPTS.
CALL FUNCTION 'GRAPH_MATRIX_2D'
EXPORTING
TITL = HIER-ETEXT
NROW = SY-TABIX
STAT = BUSG_STAT
TABLES
DATA = BUSGDATA
OPTS = GOPTS
TCOL = TCOL.
BUSG_STAT = '5'.
PERFORM DISPLAY_TEXT TABLES MTEXT USING HIER
BUSGDATA.
CALL FUNCTION 'TEXT_MATRIX'
EXPORTING
TTEXT = 'Information window'
RSIZE = '6'
CSIZE = '30'
STAT = TEMA_STAT
TABLES
DATA = MTEXT.
TEMA_STAT = '5'. "// Reload data next
"// time
PERFORM DISPLAY_NODES USING HIER-ELKEY.
CALL FUNCTION 'GRAPH_HIERARCHY'
EXPORTING
TTEXT = 'Partial Hierarchy Display'
SMODE = '2'
STAT = HIER2_STAT
WINID = 'HIER2'
TABLES
DATA = PHIER.
HIER2_STAT = '5'. "// Reload data next
"// time
MOVE NODE TO HIER-ELKEY.
READ TABLE HIER WITH KEY HIER-ELKEY.
REFRESH GOPTS.
GOPTS = '$ 4'. APPEND GOPTS.
GOPTS = 'C_ART=1'. APPEND GOPTS.
GOPTS = 'CTYPE=3'. APPEND GOPTS.
GOPTS = 'COLOR=3'. APPEND GOPTS.
GOPTS = 'LTEXT=Monthly Salary'. APPEND GOPTS.
REFRESH STATDATA.
STATDATA-X = 1. STATDATA-Y = BUSGDATA-VAL1.
APPEND STATDATA.
STATDATA-X = 2. STATDATA-Y = BUSGDATA-VAL2.
APPEND STATDATA.
STATDATA-X = 3. STATDATA-Y = BUSGDATA-VAL3.
APPEND STATDATA.
STATDATA-X = 4. STATDATA-Y = BUSGDATA-VAL4.
APPEND STATDATA.
MOVE 'Additional Info: ' TO NODE.
WRITE HIER-ETEXT TO NODE+17(20).
CALL FUNCTION 'STAT_GRAPH'
EXPORTING
INFORM = 'X'
NOPOS = 'X'
STAT = STAT_STAT
TTEXT = NODE
TAXIS = 'Personnel'
SCALE = 'MAN'
XRNGU = 5
XTCKS = '6'
YRNGU = 10000
YTCKS = '11'
TABLES
DATA = STATDATA
OPTS = GOPTS.
STAT_STAT = '5'.
ELSE. "// Msg must be from
"// HIER2:
"// ignore it.
ENDIF.
WHEN '0'. "// From any non-HIER
"// window
IF RWNID(4) = 'STAT'. "// Msg is from STAT
"// window
CALL FUNCTION 'STAT_GRAPH' "// Reuse RBUFF to fill
EXPORTING "// STAT return
"// parameters
STAT = 'R'
INBUF = RBUFF
IMPORTING
KURVE = KURVE
INDEX = PUNKT
M_TYP = STAT_TYP
TABLES
DATA = STATDATA "// Not used here
OPTS = GOPTS. "// Not used here
IF STAT_TYP = 'I'.
PERFORM DISPLAY_STAT TABLES MTEXT
USING KURVE PUNKT HIER-ETEXT
BUSGDATA.
CALL FUNCTION 'TEXT_MATRIX'
EXPORTING
TTEXT = 'Statistics information window'
RSIZE = '4'
CSIZE = '30'
STAT = TEMA1_STAT
WINID = 'TEMA1'
TABLES
DATA = MTEXT.
TEMA1_STAT = '5'. "// Reload next time
ELSE. "// Must have been a 'Q'
STAT_STAT = '2'. "// Restart next time
ENDIF.
ENDIF.
IF RWNID(4) = 'BUSG'.
"// Must be a 'Q'
"// -message
BUSG_STAT = '2'. "// Restart BUSG next
"// time
ENDIF.
IF RWNID(4) = 'TEMA'.
"// Must be TEMA or
"// TEMA1
IF RWNID EQ 'TEMA1'. "// Restart TEMA1 next
"// time
TEMA1_STAT = '2'.
ELSE.
TEMA_STAT = '2'. "// Restart TEMA next
"// time
ENDIF.
ENDIF.
ENDCASE.
ENDDO.
*-------------------------------------------------------------*
* FORM DISPLAY_NODES *
*-------------------------------------------------------------*
FORM DISPLAY_NODES USING ELKEY.
FIELD-SYMBOLS: <1>,<2>.
DATA KEY(11).
DATA S.
MOVE ELKEY TO KEY. "//Save Key !
REFRESH PHIER.
LOOP AT HIER.
IF HIER-ELKEY GE KEY.
ASSIGN KEY+10(1) TO <1>.
ASSIGN HIER-ELKEY+10(1) TO <2>.
IF <2> LE <1> AND S NE SPACE. EXIT. ENDIF.
S = 'X'.
MOVE HIER TO PHIER.
MOVE HIER-ELKEY TO PHIER-ETEXT.
APPEND PHIER.
ENDIF.
ENDLOOP.
ENDFORM.
*-------------------------------------------------------------*
* FORM DISPLAY_TEXT *
*-------------------------------------------------------------*
FORM DISPLAY_TEXT TABLES MTEXT USING ETEXT EDATA.
DATA: BEGIN OF TEXT,
ELKEY(11),
UEKEY(11),
ETEXT(20),
VAL1 TYPE P,
VAL2 TYPE P,
END OF TEXT.
DATA: BEGIN OF DATA,
ELKEY(11),
VAL1 TYPE P,
VAL2 TYPE P,
VAL3 TYPE P,
VAL4 TYPE P,
END OF DATA.
DATA FELD(40).
MOVE ETEXT TO TEXT.
MOVE EDATA TO DATA.
REFRESH MTEXT.
MOVE: 'Element: ' TO FELD.
MOVE: TEXT-ELKEY TO FELD+14.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Parent Elem.: ' to FELD.
MOVE: TEXT-UEKEY TO FELD+14.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Label: ' TO FELD.
MOVE: TEXT-ETEXT TO FELD+14.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Value: ' TO FELD.
MOVE: TEXT-VAL1 TO FELD+14(10).
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Column 1: ' TO FELD.
MOVE: DATA-VAL1 TO FELD+14(10).
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Column 2: ' TO FELD.
MOVE: DATA-VAL2 TO FELD+14(10).
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Column 3: ' TO FELD.
MOVE: DATA-VAL3 TO FELD+14(10).
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Column 4: ' TO FELD.
MOVE: DATA-VAL4 TO FELD+14(10).
MOVE FELD TO MTEXT.
APPEND MTEXT.
ENDFORM.
*-------------------------------------------------------------*
* FORM DISPLAY_STAT *
*-------------------------------------------------------------*
FORM DISPLAY_STAT TABLES MTEXT USING KURVE PUNKT ETEXT EDATA.
DATA: BEGIN OF DATA,
ELKEY(11),
VAL1 TYPE P,
VAL2 TYPE P,
VAL3 TYPE P,
VAL4 TYPE P,
END OF DATA.
DATA FELD(40).
DATA PU_1.
MOVE EDATA TO DATA.
REFRESH MTEXT.
MOVE: 'Title......: ' TO FELD.
MOVE: ETEXT TO FELD+13.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Curve Nr...: ' TO FELD.
WRITE KURVE TO FELD+13.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Point Nr...: ' TO FELD.
WRITE PUNKT TO FELD+13.
MOVE FELD TO MTEXT.
APPEND MTEXT.
MOVE: 'Value......: ' TO FELD.
PU_1 = PUNKT.
CASE PU_1.
WHEN '1'.
WRITE DATA-VAL1 TO FELD+13(8).
WHEN '2'.
WRITE DATA-VAL2 TO FELD+13(8).
WHEN '3'.
WRITE DATA-VAL3 TO FELD+13(8).
WHEN '4'.
WRITE DATA-VAL4 TO FELD+13(8).
ENDCASE.
MOVE FELD TO MTEXT.
APPEND MTEXT.
ENDFORM.