In SAP Query kannst Du die Ausgabe mit ABAP bearbeiten. Generell ist SAP Query ein Tool, um einfach und schnell Daten aus verschiedenen Tabellen ohne ABAP-Programmierkenntnisse in einer Ausgabe anzuzeigen. Dabei hat man vor der Ausgabe die Möglichkeit, durch Selektionskriterien die Ausgabe einzuschränken nach den gewünschten Daten. Welche Felder als Selektionskriterien und Spalten in der Ausgabe mit aufgenommen werden kann man in der Transaktion SQ01 direkt in der SAP Query definieren.
In der Transaktion SQ02 kann man zusätzlichen ABAP-Code einfügen, um die Logik der SAP Query zu verändern. Bei Bedarf kann man auch die Ausgabe mit ABAP bearbeiten. In diesem Artikel zeige und erkläre ich Dir, wie das im Detail funktioniert.
SAP Query – Ausgabetabelle %G00[]
In SAP Query werden die Daten für die Ausgabe in der Tabelle %G00[] gehalten. Diese Tabelle wird automatisch zur Laufzeit generiert und enthält die Spalten, die in der Transaktion SQ01 in der Grundliste in der Ausgabe mit aufgenommen wurden.
SAP Query – Ausgabe mit ABAP bearbeiten
In der automatisch generierten Tabelle %G00[] kann die Ausgabe im ABAP-Code verändert werden. Will man dabei auf einzelne Spalten oder Attribute zugreifen, so muss zwingend „ASSIGN COMPONENT“ verwendet werden, da die Tabelle %G00[] erst zur Laufzeit die entsprechende Struktur bzw. die entsprechenden Spalten besitzt.
In diesem Beispiel werden im DATA-Abschnitt die notwendigen Variablen deklariert.
*---------------------------------------------------------------------- * Codingabschnitt - DATA *---------------------------------------------------------------------- DATA: str TYPE string, lv_spalte_ebeln TYPE c LENGTH 20. FIELD-SYMBOLS: <f_ebeln> TYPE any, <f_ebeln_v> TYPE any, <g00> TYPE table, <s_g00> TYPE any.
Im END-OF-SELECTION (nach Liste)-Abschnitt wird nun zuerst die Zeichenkette %G00[] dem Feldsymbol <g00> zugewiesen. Dieses Feldsymbol <g00> hat den Datentyp table, da erst zur Laufzeit der Datentyp und damit die genaue Tabelle bekannt ist.
*---------------------------------------------------------------------- * Codingabschnitt - END-OF-SELECTION (nach Liste) *---------------------------------------------------------------------- " %G00 - Tabelle für finale Ausgabe str = '%G00[]'. ASSIGN (str) TO <g00>. " Spalte für Auswertung zuweisen lv_spalte_ebeln = 'EKKO-EBELN'. ASSIGN lv_spalte_ebeln TO <f_ebeln>. IF <g00> IS ASSIGNED. LOOP AT <g00> ASSIGNING <s_g00>. ASSIGN COMPONENT <f_ebeln> OF STRUCTURE <s_g00> TO <f_ebeln_v>. " In <f_ebeln_v> ist nun der Wert in der Spalte EKKO-EBELN ENDLOOP. ENDIF.
Außerdem wird die genaue Bezeichnung der Spalte, die man in der Ausgabe bearbeiten möchte als Zeichenkette angegeben und der Variable lv_spalte_ebeln zugewiesen. Damit die Zeichenkette einfach bearbeitet werden kann, wird sie dem Feldsymbol <f_ebeln> zugewiesen.
Nun erfolgt die eigentliche Bearbeitung der Ausgabe im Feldsymbol <g00>, indem zuerst geprüft wird, ob das Feldsymbol korrekt erstellt wurde und Werte enthält. Zeile um Zeile wird durch „ASSIGN COMPONENT“ der Inhalt der gewünschten Spalte in eine Variable gespeichert, die man bei Bedarf nun verändern kann. In diesem Beispiel ist der tatsächliche Inhalt im Feldsymbol <f_ebeln_v> enthalten.
SAP Query – Zeilen einfügen oder löschen in Ausgabe
Möchte man nun in der finalen Ausgabe %G00[] noch weitere Zeilen einfügen, so kann man einfach INSERT verwenden. Man muss dabei darauf achten, dass wenn man <f_txz01_v> verändert, auch gleichzeitig die Zeile in der Ausgabetabelle %G00[] mit geändert wird. Dann kann man aber einfach die zu viel vorhandene Zeile mit DELETE wieder löschen.
" Wert in EKKO-TXZ01 in aktueller Zeile verändern <f_txz01_v> = 'ERP UP'. INSERT <s_g00> INTO <g00> INDEX 1. " Aktuelle Zeile löschen DELETE <g00>.
SAP Query – Duplikate entfernen
Durch die Ausgabetabelle %G00 kannst Du auch die Ausgabe mit ABAP so bearbeiten, dass die Duplikate entfernt werden.
Füge folgenden ABAP-Code im DATA-Abschnitt ein.
*---------------------------------------------------------------------- * Codeabschnitt - DATA *---------------------------------------------------------------------- DATA: str TYPE string. FIELD-SYMBOLS : <g00> TYPE table.
Füge folgenden ABAP-Code im END-OF-SELECTION (nach Liste)-Abschnitt ein.
*---------------------------------------------------------------------- * Codeabschnitt - END-OF-SELECTION (nach Liste) *---------------------------------------------------------------------- " %G00 - Ausgabe str = '%G00[]'. ASSIGN (str) TO <g00>. IF <g00> IS ASSIGNED. SORT <g00>. DELETE ADJACENT DUPLICATES FROM <g00>. ENDIF.
Über den Autor
Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.
ERP UP unterstützen
Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.