Inhalt


 

Der Bericht "Reklamationen" zeigt für die auswählten Kunden die Reklamationen der letzten 30 Tage. Der Zeitraum kann vom Benutzer variiert werden.

 

Datenbeschaffung

Die Datenbeschaffung erfolgt über die CIS ABAP Schnittstelle analog dem Beispiel Umsätze.
 
VB.NET
' Report complaints
      Public Function CreateReportComplaints _
              (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 complaints
  
          ' Clear input/output
          rfc_input.Clear()
          rfc_output.Clear()
  
          ' Report options
  
          ' Option 0: days
          Dim maxdays As String
  
          maxdays = GetItem(keys, "COMPLAINTS.OPTION.0")
          If maxdays = "" Then
              maxdays = "30"
              InsertItem(keys, "COMPLAINTS.OPTION.0", maxdays)
          End If
  
  
          ' 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")
  
          s = DirectCast(rfc_input.AddNew(), addonsimplestring)
          s.content = maxdays
  
  
          ' 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.CUSTOMER_COMPLAINTS", "S", _
                                rfc_input, rfc_output)



In der ABAP-Routine erhalten wir die Organisationsschlüssel VKORG, VTWEG, SPART,  die Anzahl Tage für den Zeitraum der Reklamationen und anschließend alle selektierten Kundennummern. Wir lesen die Reklamationen aus Tabelle VIQMEL und anschliessend pro Reklamation die Artikelbezeichnung:

 

ABAP
form customer_complaints tables reqparm resparm  
                          changing   rc type c   msg type c.
  
    data: wa(8000).
    data: vkorg like s001-vkorg,
          vtweg like s001-vtweg,
          spart like s001-spart,
          days(12).
  
  
  * complaints during past n days
    data:
        qmdat type D.
  
  
    Read Table reqparm index 1 into vkorg.
    Read Table reqparm index 2 into vtweg.
    Read Table reqparm index 3 into spart.
    Read Table reqparm index 4 into days.
  
    qmdat = sy-datum - days.
  
  * Customer numbers
    data: begin of customers occurs 10,
            kunnr like kna1-kunnr,
          end of customers.
  
    Data: k type i value 5.
    Read Table reqparm index k into customers-kunnr.
    While sy-subrc EQ 0.
      Append customers.
  
      k = k + 1.
      Read Table reqparm index k into customers-kunnr.
    Endwhile.
  
  * no customers?
    if   customers[] is initial.
      exit.
    endif.
  
  
  * Result table
    data: begin of r occurs 10,
            kunum  like viqmel-kunum,
            qmnum  like viqmel-qmnum,
            qmdat  like viqmel-qmdat,
            matnr  like viqmel-matnr,
            ls_kdauf  like viqmel-ls_kdauf,
            qmtxt  like viqmel-qmtxt,
            qmdab  like viqmel-qmdab,
          end of r.
  
  
    Select *
             from viqmel
               into corresponding fields of table r
                 for all entries in customers
                where kunum = customers-kunnr
                and   vkorg = vkorg
                and   vtweg = vtweg
                and   spart = spart
                and   qmart EQ 'Q1'
                and   qmdat GE qmdat.
  
  
    Sort r by qmdat ascending.
    Loop at r.
  
  * MAKT
      Select single * from makt 
                   where matnr = r-matnr and spras = sy-langu.
      if sy-subrc NE 0.
        clear makt.
      Endif.
  
  * output result
  
      Concatenate
          r-qmdat
          r-qmnum
          r-kunum
          r-matnr
          makt-maktx
          r-ls_kdauf
          r-qmtxt
          r-qmdab
             into wa 
              separated by cl_abap_char_utilities=>horizontal_tab.
  
      Append wa to resparm.
  
    Endloop.
  Endform.

Layout

Die Ausgabetabelle bauen wir in VB.NET wieder als HTML-String auf analog dem Beispiel Umsätze. Als kleine Besonderheit verwenden wir unterschiedlichen Farben für abgeschlossene und offene Reklamationen.
 
Ein typischer Ausschnitt aus dem VB.NET Coding:
 
VB.NET
' Option 0: days
          Dim maxdays As String
  
          maxdays = GetItem(keys, "COMPLAINTS.OPTION.0")
          If maxdays = "" Then
              maxdays = "30"
              InsertItem(keys, "COMPLAINTS.OPTION.0", maxdays)
          End If


Zusatzparameter

Zunächst werden die Reklamationen der letzten 30 Tage angezeigt. Der Benutzer kann dann einen anderen Zeitraum wählen (60 Tage / 90 Tage / 1 Jahr / Alle).

Die Anzahl der Tage steht als COMPLAINTS.OPTION.0 im übergebenen Dictionary "keys" zur Verfügung. Am Angang ist die Option leer und wir setzen den Default-Wert "30".

Das VB.NET Coding dazu sieht wie folgt aus:

VB.NET
' Option 0: days
          Dim maxdays As String
  
          maxdays = GetItem(keys, "COMPLAINTS.OPTION.0")
          If maxdays = "" Then
              maxdays = "30"
              InsertItem(keys, "COMPLAINTS.OPTION.0", maxdays)
          End If

Zur Darstellung der Berichtsoptionen dient die HTML-Seite "COMPLAINTSSALES2.OTPIONS.HTML". Sie liegt im Verzeichnis config/reports/views.DE (deutsche Version). Falls Sie weitere Sprachen unterstützen, entsprechend in confgi/reports/views.XX, z.B. config/reports/views.EN für Englisch und config/reports/views.FR für Französisch.

Die HTML-Seite ist im Prinzip beliebig. Für die Optionen können Sie Eingabefelder , Drop-Down Felder nutzen. Die Verbindung zur jeweiligen Option wird über die HTML-Id d  'OPTION.0', 'OPTION.1',... des jeweiligen Elements hergestellt.

In unserem Fall sieht es wie folgt aus:

HTML

Bitte beachten Sie:

  • CSS-Style-Angaben werden erst unterhalb des Tags beachtet, da das HTML-Coding in die Anzeige des Berichts kopiert wird.
     
  • Die Taste zum erneuten Aufruf des Berichts nach Eingabe neuer Optionen wird von CIS mobile automatisch eingeblendet