Inhalt


 

Der Bericht "Umsätze" gibt für die ausgewählten Kunden den Umsatz der letzten 5 Jahre aus.

Datenbeschaffung

Wir entnehmen die Statistikdaten für die Umsätze der SAP-Tabelle S001, die Teil des Vertriebsinformationssystems VIS ist.  Im Schlüssel dieser Standardtabelle ist die Artikelnummer enthalten, die wir nicht benötigen. Um weniger Sätze in der Datenbank lesen zu müssen, können Sie im VIS eine eigene Statistiktabelle, z.B."S950", definieren, die wie S001 aussieht aber die Artikelnummer nicht enthält, und die Umsätze dann daraus entnehmen.

Die Datenbeschaffung erfolgt über die CIS ABAP Schnittstelle:

VB.net
 ' Report Sales1
Public Function CreateReportSales1(ByVal keys _
     As Dictionary(Of String, String), _
ByVal id As String, _
ByVal customernumbers() As String, _
ByVal customernames() As String) As String


        ' We use CIS addon ABAP function to read the VIS statistics

        ' Clear input/output
        rfc_input.Clear()
        rfc_output.Clear()


        ' Build up input
        Dim s As addonsimplestring = DirectCast(rfc_input.AddNew(),_
                addonsimplestring)
        s.content = GetItem(keys, "VKORG")

        s = DirectCast(rfc_input.AddNew(), addonsimplestring)
        s.content = GetItem(keys, "VTWEG")

        s = DirectCast(rfc_input.AddNew(), addonsimplestring)
        s.content = GetItem(keys, "SPART")

        ' following parameters: customer numbers
        For Each cn As String In customernumbers
            s = DirectCast(rfc_input.AddNew(), addonsimplestring)
            s.content = cn
        Next

        ' Request data
        ic.RfcRequest("CISADDON.VIS01", "S", rfc_input, rfc_output, _
                           deferred:=True)

        ' execute all requests (one only in our case)
        ic.RfcExecuteDeferredCalls(rfcmessages)'

....



In der ABAP-Routine erhalten wir die Organisationsschlüssel VKORG, VTWEG, SPART und anschließend alle selektierten Kundennummern. Es ist nun aus Performance-Gründen wichtig, nicht pro Kundennummer einen separaten Select-Zugriff abzusetzen, sondern in einem einzigen Select alle Kundennummern anzufordern. Dazu nutzen wir die Option "for all entries in table" der ABAP Select-Anweisung. Die zentrale Stelle im ABAP-Coding ist die folgende
:
 

ABAP
data: begin of r1 occurs 10,
          kunnr  like s001-kunnr,
          spmon  like s001-spmon,
          umnetwr like s001-umnetwr,
          stwae   like  s001-stwae,
        end of r1.
  
  Select kunnr spmon umnetwr stwae
           from S001
             into corresponding fields of table r1
               for all entries in customers
              where kunnr = customers-kunnr
              and   vkorg = vkorg
              and   vtweg = vtweg
              and   spart = spart
              and   spmon GE spmon.

Bitte schauen Sie für die weiteren Details direkt in den mit CIS mobile ausgelieferten ABAP-Funktionsbaustein /GUIXT/CISADDON_INTERFACE.
 

Layout

Die Ausgabetabelle bauen wir in VB.NET als HTML-String auf, wobei über CSS die Angaben für Fonts, Abmessungen, Farben etc. gesetzt werden. Ein typischer Ausschnitt aus dem VB.NET Coding:
 
VB.net
 ' Buld up HTML output table
        Dim sb As New StringBuilder


... 
        'Title
        sb.Append("<div style='width:700px; font-size:12pt; 
        font-weight:bold; margin: 10px 0px 10px 5px; 
                  color:#606060;'>")
        AppendString(sb, ic.MessageText("REPORT_SALES_TITLE1")
        & year4 & " - " & year0 & ic.MessageText
                                      ("REPORT_SALES_TITLE2"))
        sb.Append("</div>")

        ' column headings
        sb.Append("<div class='colhead01' style='width:740px; 
             font-size:12px; margin-bottom:4px;'>")

        ' customer number
        sb.Append("<div class='colhead' style='float:left; 
              text-align:left; width:80px;'>")
        AppendString(sb, ic.MessageText("REPORT_SALES_COL1"))
        sb.Append("</div>")

        ' customer
        sb.Append("<div class='colhead' style='float:left; 
                text-align:left; width:190px; margin-right:4px;'>")
        AppendString(sb, ic.MessageText("REPORT_SALES_COL2"))
        sb.Append("</div>")


        ' year4
        sb.Append("<div class='colhead' style='float:left; 
                      text-align:right; width:80px;'>")
        sb.Append(year4.ToString)
        sb.Append("</div>")

        ' year3
        sb.Append("<div class='colhead' style='float:left; 
                       text-align:right; width:80px;'>")
        sb.Append(year3.ToString)
        sb.Append("</div>")
...


Zusatzparameter

Keine Zusatzparameter