* Beispiel adaptiert von:
* http://www.tricktresor.de/blog/sap-und-bunte-bilder-cl_gui_html_viewer/
DATA: lv_s032 TYPE s032.
SELECT-OPTIONS: so_werks FOR lv_s032-werks.
START-OF-SELECTION.
* Alle Bestände je Werk aus der S032 summieren
SELECT werks, " Werk
SUM( wbwbest ) AS wbwbest " Summe Wert Bewerteter Bestand
INTO TABLE @DATA(it_data)
FROM s032
WHERE werks IN @so_werks
AND vrsio = '000'
GROUP BY werks.
* HTML-Code erzeugen
DATA(it_html) = VALUE html_table(
( |<html>| )
( | <head>| )
( | <script type="text/javascript" src="https://www.google.com/jsapi"></script>| )
( | <script type="text/javascript">| )
( | google.load("visualization", "1", \{packages:["corechart"]\});| )
( | google.setOnLoadCallback(drawChart);| )
( | function drawChart() \{| )
( | var data = google.visualization.arrayToDataTable([ ['Werk', 'Bestand'],| )
).
* Daten aus der iTab in den Code einfügen
DATA(lv_html) = ||.
LOOP AT it_data ASSIGNING FIELD-SYMBOL(<d>).
IF lv_html IS INITIAL.
lv_html = | ['{ <d>-werks }', { <d>-wbwbest }]|.
ELSE.
lv_html = | ,['{ <d>-werks }', { <d>-wbwbest }]|.
ENDIF.
APPEND lv_html TO it_html.
ENDLOOP.
* Code abschließen
it_html = VALUE html_table( BASE it_html
( | ]);| )
( | var options = \{title: 'Summe bewertete Bestände pro Werk'\};| )
( | var chart = new google.visualization.PieChart(document.getElementById('piechart'));| )
( | chart.draw(data, options);| )
( | \};| )
( | </script>| )
( | </head>| )
( | <body>| )
( | <div id="piechart" style="width: 900px; height: 500px;"></div>| )
( | </body>| )
( |</html>| )
).
* HTML-Viewer
DATA(o_html) = NEW cl_gui_html_viewer( parent = cl_gui_container=>default_screen ).
* URL zu HTML holen
DATA: lv_url TYPE swk_url.
o_html->load_data( IMPORTING
assigned_url = lv_url
CHANGING
data_table = it_html ).
* HTML anzeigen
o_html->show_url( url = lv_url ).
* leere Standard-Toolbar ausblenden
cl_abap_list_layout=>suppress_toolbar( ).
* Ausgabe von cl_gui_container=>default_screen erzwingen
WRITE: space.