Zum Erzeugen von Diagrammen steht in .NET die Klasse System.Windows.Forms.DataVisualization.Chart zur Verfügung. Wir benutzen die Klasse zum Einblenden eines Diagramms "Auftragseingang" in Transaktion VD03 (Anzeige Kunden), Vertriebsbereichsdaten:
|
||
Die Implementierung besteht aus folgenden drei Schritten:
Für den ersten Teil reichen einige Scriptzeilen aus: // Reset variables if new transaction or new customer or not V[VD03_kunnr=&F[RF02D-KUNNR]] Set V[VD03_*] "" Set V[VD03_transactionid] "&V[_transactionid]" Set V[VD03_kunnr] "&F[RF02D-KUNNR]" endif if Q[transaction=VD03] and Q[Page=Verkauf]Set V[chartfilename] "&%[TEMP]\saleschart.&V[VD03_kunnr].png" // display chart? if V[VD03_display_chart=X] Box (7,86) (22,135) "Auftragseingang &V[year4] - &V[year0] in Tausend" Pushbutton (7,137) "x" size=(1,1) process="chart_close.txt" Image (8,87) "&V[chartfilename]" -noBuffer else Pushbutton (7,86) "@NF\QGrafik einblenden@Grafik Auftragseingang" process="chart_open.txt" endif endif
InputScript "chart_open.txt": // Generate chart ... // Display chart Return
InputScript "chart_close.txt": // Close chart Return
Damit kann der Benutzer das Diagramm über eine Drucktaste abrufen und danach wieder schließen:
Zur Datenbeschaffung verwenden wir den Funktionsbaustein /guixt/select. WIr lesen eine der Statistiktabellen des Vertriebsinformationssystems; entweder die SAP-Standardtabelle S001 oder aus Performancegründen eine Kopie der S001, in der die Materialnummer aus dem Schlüssel entfernt ist. Anschliessend rufen wir VB.NET auf zum Erzeugen des Diagramms: // Determine years Set V[year0] &V[today_y] Set V[year1] &V[year0] - 1 Set V[year2] &V[year0] - 2 Set V[year3] &V[year0] - 3 Set V[year4] &V[year0] - 4 // initialize sales figues Set V[sales1] 0 Set V[sales2] 0 Set V[sales3] 0 Set V[sales4] 0 // key values Set V[vkorg] "&F[RF02D-VKORG]" Set V[vtweg] "&F[RF02D-VTWEG]" Set V[spart] "&F[RF02D-SPART]" // leading zeros // search condition // read VIS statistics table S001 // Build sales figures label next CopyText fromText="r1" toString="spmon" line="&V[i]" if Q[ok]CopyText fromText="r2" toString="aenetwr" line="&V[i]" Set V[i] &V[i] + 1 Set V[year] &V[spmon](1-4) // year0 if V[year=&V[year0]] Set V[sales0] &V[sales0] + &V[aenetwr] goto next endif // year1 // year2 // year3 // year4 goto next endif
// in thousands Set V[sales0] &V[sales0] / 1000 decimals=0Set V[sales1] &V[sales1] / 1000 decimals=0 Set V[sales2] &V[sales2] / 1000 decimals=0 Set V[sales3] &V[sales3] / 1000 decimals=0 Set V[sales4] &V[sales4] / 1000 decimals=0 // generate chart Der VB.NET Routine übergeben wir dabei den Namen der zu erzeugenden Bilddatei. Die Daten für das Diagramm (Jahreszahlen und Auftragseingang) entnehmen wir direkt den GuiXT Variablen:
|