Andreas Unkelbach
Logo Andreas Unkelbach Blog

Andreas Unkelbach Blog

ISSN 2701-6242

Artikel über Controlling und Berichtswesen mit SAP, insbesondere im Bereich des Hochschulcontrolling, aber auch zu anderen oft it-nahen Themen.


Werbung
Schnelleinstieg in das Controlling (CO) mit SAP S/4HANA (📖)

Für 29,95 € direkt bestellen

Oder bei Amazon ** Oder bei Autorenwelt



Freitag, 19. Dezember 2014
15:00 Uhr

Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE

Bisher wurden schon einige Stammdaten der CO Innenaufträge und der PSM-FM Fonds miteinander in Verbindung gesetzt. Bei der Definition der Variablen innerhalb des ABAP Coding ist dabei darauf zu achten, dass diese innerhalb der Zusatzfelder auch entsprechend bei den einzelnen Variablen nicht mehrfach ausgewertet werden. Daher habe ich im Folgenden noch einmal die einzelnen schon im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck" erwähnten Zusatzfelder an dieser Stelle noch einmal aufgeführt und im Coding ein wenig angepasst.

Das grundsätzliche Infoset zur Auswertung von Innenaufträgen ist in folgender Darstellung bereits im entsprechenden Artikel erläutert.

Infoset Verknüpfung AUFK und CSKS bzw. CEPC zur Darstellung Innenauftrag, verantwortliche Kostenstelle und Profit-Center
Neben den schon erwähnten Feld Finanzierungszweck aus den Stammdaten des Fonds sind auch weitere Felder noch über ein Zusatzfeld und dahinter liegenden Coding zu ermitteln.

Alle hier aufgeführten Coding befinden sich im Codeabschnitt 1. Für die Merkmale der Klassifizierung ist der Codeabschnitt 3 verwendet worden und wird im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM".

In den Folgenden Beispielen wird davon ausgegangen dass sich die PSM-FM Stammdaten alle im Finanzkreis FIK befinden.

Die einzelnen Zusatzfelder werden als erstes mit ihren Verweis auf die Eigenschaften des jeweilige Tabellenfeld definiert. Danach folgt eingerückt das zugehörige ABAP-Coding zum Zusatzfeld.

Zusatzfeld: Ist ein Fond zum Innennauftrag vorhanden?

Es wird das Zusatzfeld FONDS angelegt um in der Tabelle FMFINCODE nach einen mit identischer Nummer zum Innenauftrag angelegten Fond im Modul PSM-FM zu suchen.

FONDS like FMFINCODE-FINCODE.
Das entsprechende Coding zum Zusatzfeld sieht wie folgt aus:

DATA: l_fincode TYPE FMFINCODE-FINCODE.
DATA: l_aufnr TYPE aufk-aufnr.
l_aufnr = aufk-aufnr.
SHIFT l_aufnr BY 4 PLACES LEFT.
l_fincode = l_aufnr.
SELECT SINGLE FINCODE FROM FMFINCODE INTO l_fincode
       WHERE fikrs = 'FIK'
         AND FINCODE = l_fincode.
IF sy-subrc <> 0.
  CLEAR fonds.
ELSE.
  fonds = l_fincode.
ENDIF.

Zusatzfeld: Bezeichnung des Fond

Sofern ein passender Fond gefunden wurde soll auch die Bezeichnung des Fond mit ausgewertet werden. Hierzu soll das Feld BEZEICH aus der Tabelle FMFINT ausgewertet werden.

BEZEICHNUNG  Like FMFINT-BEZEICH
Das entsprechende Coding sieht dabei wie folgt aus:

DATA: l_bezeich TYPE fmfint-bezeich.
DATA: l_fincodebezeichnung Type FMFINCODE-FINCODE.
DATA: l_aufnrbezeichnung TYPE aufk-aufnr.
l_aufnrbezeichnung = aufk-aufnr.
SHIFT l_aufnrbezeichnung BY 4 PLACES LEFT.
l_fincodebezeichnung = l_aufnrbezeichnung.
SELECT SINGLE bezeich FROM fmfint INTO l_bezeich
       WHERE fikrs = 'FIK'
         AND fincode = l_fincodebezeichnung.
IF sy-subrc <> 0.
  CLEAR bezeichnung.
ELSE.
  bezeichnung = l_bezeich.
ENDIF.

Zusatzfeld: Gültigkeit des Fond

Neben Arbeitsbeginn und Arbeitsende soll auch die Gültigkeit des Fonds ausgewertet werden.
Hierzu sollen die beiden Felder DATAB und DATBIS der Tabelle FMFINCODE ausgewertet werden. Entsprechend sind hier zwei Zusatzfelder angelegt worden.

DATUM_AB  Like FMFINCODE-datab
Das entsprechende Coding lautet:

DATA: l_datab TYPE FMFINCODE-datab.

DATA: l_fincodedatab Type FMFINCODE-FINCODE.
DATA: l_aufnrdatab TYPE aufk-aufnr.
l_aufnrdatab = aufk-aufnr.
SHIFT l_aufnrdatab BY 4 PLACES LEFT.
l_fincodedatab = l_aufnrdatab.
SELECT SINGLE datab FROM FMFINCODE INTO l_datab
       WHERE fikrs = 'FIK'
         AND FINCODE = l_fincodedatab.
IF sy-subrc <> 0.
  CLEAR datum_ab.
ELSE.
  datum_ab = l_datab.
ENDIF.

DATUM_BIS Like FMFINCODE-datbis
Das entsprechende Coding lautet:

DATA: l_datbis TYPE FMFINCODE-datbis.
DATA: l_fincodedatbis Type FMFINCODE-FINCODE.
DATA: l_aufnrdatbis TYPE aufk-aufnr.
l_aufnrdatbis = aufk-aufnr.
SHIFT l_aufnrdatbis BY 4 PLACES LEFT.
l_fincodedatbis = l_aufnrdatbis.
SELECT SINGLE datbis FROM FMFINCODE INTO l_datbis
       WHERE fikrs = 'FIK'
         AND FINCODE = l_fincodedatbis.
IF sy-subrc <> 0.
  CLEAR datum_bis.
ELSE.
  datum_bis = l_datbis.
ENDIF.

Zusatzfeld: Fondsart

Innerhalb des Haushaltsmanagement können einzelne Fonds einer Fondart zugewiesen werden, die dann für Reportingzwecke verwendet werden können.
Hierzu soll das Tabellenfeld TYPE in der Tabelle FMFINCODE ausgewertet werden.

FONDSART   Like FMFINCODE-TYPE
Das Coding lautet dabei wie folgt:

DATA: l_type TYPE FMFINCODE-TYPE.
DATA: l_fincodefondsart Type FMFINCODE-FINCODE.
DATA: l_aufnrfondsart TYPE aufk-aufnr.
l_aufnrfondsart = aufk-aufnr.
SHIFT l_aufnrfondsart BY 4 PLACES LEFT.
l_fincodefondsart = l_aufnrfondsart.
SELECT SINGLE type FROM FMFINCODE INTO l_type
       WHERE fikrs = 'FIK'
         AND FINCODE = l_fincodefondsart.
IF sy-subrc <> 0.
  CLEAR fondsart.
ELSE.
  fondsart = l_type.
ENDIF.

Zusatzfeld: Budgetprofil

Über das Budegtprofil lassen sich verschiedene Budgetsteuerungen (bspw. Unterscheidung Jahresbudget, Gesamtbudget oder auch Zeithorizonte) festlegen. Die Customizing-Einstellungen sind im Artikel "Budgetprofil klassische Budgetierung" und die Budgetierung an sich im Artikel "SAP PSM-FM klassische Budgetierung mit unterschiedlichen Budgetversionen" näher vorgestellt. Innerhalb des Infosets soll jedoch nur das zugeordnete Budgetprofil zum jeweiligen Fond mit ausgegeben werden. Dieses ist im Tabellenfeld PROFIL der Tabelle FMFINCODE gespeichert.
Entsprechend wurde folgendes Zusatzfeld angelegt:

BUDGETPROFIL   Like FMFINCODE-PROFIL
Das dahinter liegende Coding hat dabei folgenden Aufbau:

DATA: l_profil TYPE FMFINCODE-PROFIL.
DATA: l_fincodebudgetprofil TYPE FMFINCODE-FINCODE.
DATA: l_aufnrbudgetprofil TYPE aufk-aufnr.
l_aufnrbudgetprofil = aufk-aufnr.
SHIFT l_aufnrbudgetprofil BY 4 PLACES LEFT.
l_fincodebudgetprofil = l_aufnrbudgetprofil.
SELECT SINGLE profil FROM FMFINCODE INTO l_profil
       WHERE fikrs = 'FIK'
         AND FINCODE = l_fincodebudgetprofil.
IF sy-subrc <> 0.
  CLEAR budgetprofil.
ELSE.
  budgetprofil = l_profil.
ENDIF.

Soweit wären hier alle relevanten Stammdaten der Transaktion FM5S (Fond anzeigen) aufgeführt. Eine Erweiterung der Stammdaten um einzelne Merkmale der Klassifizierung ist im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" ausführlich beschrieben. Hier sind die einzelnen Zusatzfelder (für die Merkmale der Klassifizierung innerhalb des Abschnit 3 zu hinterlegen, da diese sich auf das Zusatzfeld OBJNFOND im Abschnitt 2 bezieht.

OBJNFOND   like  AUSP-OBJEK

CONCATENATE  'FIK ' FONDS INTO OBJNFOND RESPECTING BLANKS.

Die einzelnen Merkmale aus der Tabelle AUSP müssen dann jedoch noch über die Tabelle CABN anhand des Felds ATINN ausgewertet werden. Dieses ist aber im entsprechenden Artikel wesentlich ausführlivher erläutert.

Hinweis: Query Stammdaten CO Innenauftrag PSM-FM Fond

Dieser Artikel ist Teil einer Serie um Stammdaten von CO Innenaufträgen und PSM-FM Fonds miteinander zu verknüpfen.
  1. "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen"
  2. "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer"
  3. "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM"
  4. "Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE"
Insbesondere was die Auswertung von PSM Stammdaten anbelangt (so eben auch Klasifizierung oder Finanzierungszweck) dürfte der Artikel "SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement" noch eine Menge Potential beschreiben und teilweise auch eine etwas einfachere Variante anbieten. Ein tatsächlich umfangreiches Beispiel ist in der Artikelserie unter "Query über COEP, AUFK und FMFINCODE für Einzelposten Istkosten Innnenauftrag mit Stammdaten aus CO und PSM-FM sowie Spalten für Ertrag und Aufwand - Erster Teil Infoset als Datengrundlage" zu finden.


 

Hinweis:

Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
Werbung
Aktuelles von Andreas Unkelbach

unkelbach.link/et.reportpainter/

unkelbach.link/et.migrationscockpit/

Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Freitag, 12. Dezember 2014
14:21 Uhr

SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM

Neben den einzelnen Stammdaten besteht auch die Möglichkeit weitere Informationen zu einen Objekt im Wege der Klassifizierung anzulegen um hier über die reinen Stammdaten hinaus noch weitere Informationen zu einzelnen Kontierungsobjekten zu hinterlegen.
Problematisch ist nur, dass die Merkmale der Klassifizierung nicht in einer Stammdatenliste direkt mit aufgeführt werden können. Entsprechend naheliegend ist es diese ebenfalls in einer Query neben verschiedenen anderen Stammdaten auszuwerten.

Exkurs: Klassensystem

Das Klassensystem ermöglicht es innerhalb einer Klasse verschiedene Merkmale zusammenzufassen und diese dann an Stammdaten als weitere Felder zu pflegen.

Innerhalb PSM-FM ist dieses bspw. für die Klassen 042 Fonds, 041 Finanzstelle oder auch 043 Finanzpositionen möglich. Sobald eine Klasse entsprechend angelegt ist, kann die Klassifizierung am jeweiligen Objekt gepflegt werden.

Die Klassifizierung kann auch im Controlling beispielsweise für die Klassenart 013 Controlling: Aufträge gepflegt werden. Hierzu ist es jedoch erforderlich, dass in der Auftragsart (Transaktion KOT2_OPA) bei den Steuerkennzeichen die Klassifizierung aktiviert wurde.

CT04 Merkmalverwaltung

Über die Merkmalverwaltung (Transaktion CT04) können einzelne Merkmale definiert werden. Diese können entweder einwertig oder mehrwertig sein und in den Basisdaten auch als erforderlich markiert werden. Im Reiter Werte können auch schon entsprechende Vorschlagswerte festgelegt werden. Hierbei ist zu beachten, dass die Spalte Merkmalswert dann auch der eigentliche Wert des Merkmals enthält und die Bezeichnung eine passende Beschreibung dazu enthält. Andernfalls handelt es sich beim Merkmal um ein Freitextfeld. Innerhalb der Registerkarte Einschränkungen kann dass Merkmal auf eine bestimmte Klassenart (bspw. 042 Fonds) eingeschränkt werden und nur in dieser Klasse verwendet werden.

CL02 Klassenverwaltung

Über die Klassenverwaltung (Transaktion CL02) können mehrere Merkmale zu einer Klasse zusammengefasst werden und einer bestimmten Klassenart bspw. 042 für Fonds oder 013 für Innnenaufträge zugeordnet werden.

Merkmale pflegen

Über die Schaltfläche Klassifizierung in der Stammdatenpflege (egal ob nun KO02 für Innenaufträge oder FM5U für Fonds) können die einzelnen Merkmale gepflegt werden.

Suche über Klassifizierung

Über eine Stammdatenliste (bspw. Transaktion S_KI4_38000039 für die alphabetische Lsite Fonds) kann über den Knopf Klassifizierung über die entsprechende Klasse und der Klassenart (es besteht somit auch die Möglichkeit für eine Klassenart bspw. Fonds mehrere Klassen anzulegen) entsprechende Objekte in Klassen zu suchen. Im Ergebnis erhält man eine Liste die dann alle entsprechenden übereinstimmende Objekte, die dann als Selektion in die Stammdatenliste übernommen werden können. Alternativ können Sie auch über die Transaktion CL30N eine entsprechende Suche starten.

Alle Funktionen zur Klassifizierung sind innerhalb des SAP Menü unter Anwendungsübergreifende Komponenten > Klassensystem zu finden.

Technisch betrachtet sind die einzelnen Merkmalswerte in der Tabelle AUSP  "Ausprägungswerte der Sachmerkmale" hinterlegt. Sofern Sie die Zuordnung der einzelnen Merkmale zu den einzelnen Klassenarten auswerten wollen, können Sie hier die Tabelle TCLA "Klassenarten" über die Tabelle INOB "Zuordnung einer internen Nummer zu einem bel. Objekt" über das Feld "KLART" miteinander verknüpfen.

Ausgangslage:
In unseren Fall möchten wir jedoch die bestehende Stammdatenliste aus Innenaufträge und entsprechende Fonds (wie im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck" um bestimmte Merkmale aus der Klassifzierung erweitern.

Zur Erinnerung nocheinmal das Infoset aus den vorherigen Artikel
Darstellung Infoset über die Tabellen AUFK, FMFINCODE sowie Zusatztabellen



Bisher haben wir in dieser Query den Finanzierungszweck aus PSM, die Laufzeit aus CO sowie das Sperrkenzeichen und die aus den Kostenstellen abgeleitete Lehreinheit gelistet.

Innerhalb der Tabelle AUSP werden die Kontierungsobjekte (zum Beispiel ein Fond) im Feld OBJEK (Schlüssel des zu klassifizierenden Objektes) gespeichert. Daneben kann die Auswahl auch über das Feld KLART (Klassenart) auf Merkmale der Klassenart 042 eingeschränkt werden.

Problematisch am Aufbau des Feldes OBJEK ist jedoch, dass hier für Fonds der Finankreis gefolgt von der Nummer des Fonds als Identifikator gilt. Dieses hat den Nachteil, dass sofern der Finanzkreis weniger als vier Zeichen enthält hier ein entsprechendes Leerzeichen eingefügt wird.

Als Beispiel wäre das Projekt 40210001 im Buchungskreis FIK als "FIK 40210001" in dieser Tabelle gespeichert.

Wo die Objektnummer im Innenauftrag noch in der Tabelle AUFK im Feld OBJNR gespeichert ist (OR000040210001) befindet sich in der Tabelle FMFINCODE kein entsprechendes Feld.

Hierzu müsste als Feld die Nummer des Fonds mit den Finanzkreis und einen Leerzeichen verbunden werden.

Zusatzfeld Fond aus Innenauftrag ableiten

Das bereits angelegte Infoset soll um zwei weitere Zusatzfelder erweitert werden. In der Pflege des Infosets innerhalb der Transaktion SQ02 (Pflege des Infosets)  kann über die Schaltfläche Zusätze (F5) bzw. über  SPRINGEN-> ZUSÄTZE ZUM KNOTEN eigene Felder definiert werden.

Hierzu kann im Register Zusätze die Schaltfläche Anlegen ausgewählt werden. Es erscheint eine Maske in der der Name des Zusatzfeldes angegeben werden soll (im folgenden Beispiel FONDS)  und die Art der Zusatzinformation.

Um hier die Nummer des Fond zu erhalten, soll ein Zusatzfeld mit den Namen FONDS angelegt werden.

Dieses hat folgende Eigenschaften: Langtext und Überschrift haben beide Fonds erhalten. Die Formatangabe wurde über LIKE-Referenz idenitsch zum Feld
AUFK-AUFNR gehalten. Damit entspricht dieses Feld den Formatangaben in der Tabelle AUFK (Typ C (Character) Länge 012 Ausgabenlänge 012). Damit ist das Feld angelegt, hat jedoch nur eine Datendefinition aber noch keine eigene Daten, da hier ja keine Selektion hinterlegt ist.

Nachdem ein Feld jedoch angelegt ist kann über die Schaltfläche "Coding zum Zusatz" ein passendes ABAP Coding für das Feld hinterlegt werden über das wiederum eine Datenbankabfrage erfolgen kann. Dieses Coding entspricht auch den ABAP Code, den ich von einen Kollegen zur Verfügung gestellt bekommen habe. Das Coding für das Feld FONDS  sieht dabei wie folgt aus (wobei statt KRK natürlich Ihr Kostenrechnungskreis im Coding hinterlegt sein sollte):

DATA: l_fincode1 TYPE FMFINCODE-FINCODE.
DATA: l_aufnr TYPE aufk-aufnr.
l_aufnr = aufk-aufnr.
* Verschieben des gespeicherten Wertes in der Tabelle AUFK um 4 Zeichen
* HINTERGRUND:
* Das Fekd AUFK-AUFNR hat insgesamt 12 Zeichen.
* Die achtstellige Auftragsnummer wird mit 0000 aufgefüllt
* Durch die Verschiebung ist die Auftragsnummer direkt in der
* lokalen Variable gepseichert.
Somit sind die führenden Nullen entfernt

SHIFT l_aufnr BY 4 PLACES LEFT.
l_fincode1 = l_aufnr.

* Durch die Abfrage der Tabelle FINCODE wird die Nummer nur ausgegeben, wenn
* auch tatsächlich ein Fond angelegt ist.
SELECT SINGLE FINCODE FROM FMFINCODE INTO l_fincode1
       WHERE fikrs = 'KRK'
         AND FINCODE = l_fincode1.
IF sy-subrc <> 0.
  CLEAR fonds.
ELSE.
  fonds = l_fincode1.
ENDIF.

Auch diese Query geht davon aus, dass die Nummer des Innenauftrages und des Fonds identisch sind.

ACHTUNG: Länge der Auftragsnummer / Fondcode ist entscheidend!

Sollten die Auftragsnummern bspw. siebenstellig sind, ist hier natürlich mittels

SHIFT l_aufnr BY 5 PLACES LEFT.

das Coding entsprechend anzupassen.

Per ABAP zwei Strings mit Leerzeichen verknüpfen

Nun haben wir also die Nummer des Fonds (sofern ein entsprechender Fond passend zum Innenauftrag angelegt worden ist im Feld FONDS angelegt. Dieses muss nun mit "FIK " verknüpft werden.

Die Abap Anweisung

CONCATENATE altenstring neuenstring INTO altenstring.

 verkettet getrennte Zeichenfolgen zu einer Zeichenfolge. Hier wäre nun eine Verkettung des Finanzkreises  'FIK ' mit anschliessenden Leerzeichen und des Fonds denkbar. Allerdings werden Leerzeichen innerhalb der Strings ignoriert. Bei Werten des Typs C (Character) besteht aber die Möglichkeit diese Anweisung um den Parameter RESPECTING BLANKS zu erweitern. Dieses ist nur bei Zeichenketten auch Leerzeichen berücksichtigt werden. Ohne diesen Parameter werden Leerzeichen (Zeichen 32 im ASCII Code) einfach entfernt.

Zusatzfeld OBJNFOND aus Fond ableiten

(Finanzkreis und Fond verknüpfen entsprechend AUSP-OBJEK)

Entpsprechend wird ein weiteres Zusatzfeld angelegt. Dieses Feld erhält die Bezeichnung OBJNFOND und per LIKE die gleichen Eigenschaften wie das Feld AUSP-OBJEK.

Darüberhinaus wird im Feld "Reihenfolge des Codeabschnittes" statt wie bisher automatisch eine 1 eine 2 eingetragen. Hierdurch wird das Coding zum Feld OBJFOND nach erfolgreicher Wertzuweisung für das Feld FONDS durchgeführt.

Nachdem ein Feld angelegt ist kann über die Schaltfläche "Coding zum Zusatz" ein passendes ABAP Coding für das Feld hinterlegt werden um das Zusatzfeld FONDS mit den Finanzkreis zu verknüpfen.

Hierzu ist folgende kurze Codezeile erforderlich:

CONCATENATE  'FIK ' FONDS INTO OBJNFOND RESPECTING BLANKS.

Nun ist im Zusatzfeld OBJNFOND der entsprechende Fond entsprechend der Objektnummer im Tabellenfeld AUSP-OBJEK gespeichert.

Nun können die einzelnen Merkmale (bzw. deren Werte) als Zusatzfeld im Infoset angelegt werden. Als Selektionskriterium kann nun die Merkmalsnummer und die Klassenart verwandt werden.

Welche Merkmale sind vorhanden?

Die einzelnen Merkmale sind in der Tabelle CABN hinterlegt und werden über das Feld ATINN mit der Tabelle AUSP mit entsprechenden Inhalten verknüpft.
Entsprechend ist es Möglich für jedes Merkmal ein eigenes Zusatzfeld anhand der Merkmalsnummer (ATINN) zu erstellen.Die entsprechenden Einzelmerkmale können hierbei bspw. mit der Transaktion SE16 und der Auswertung der Tabelle CABN betrachtet werden.

Eines dieser Merkmale könnte dann unter anderen das Merkmal FBINSTITUT für die Angabe des dem Fond zugeordneten Kürzel des Fachbereichs beziehungsweise das Kürzel eines zentralen Institutes oder EInrichtung sein. Alternativ könnte auch die betroffene Branche oder eine ausführlichere Zuordnung für die Bilanz sein (bspw. Unterscheidung nach Auftragsforschung, Dienstleistung, ...).

Merkmalswert aus Klassifizierung von Fonds auswerten


Für unser Beispiel nehmen wir an, dass das Merkmal Branche gepflegt ist und die Interne Merkmalsnummer (Feld ATINN) folgenden Wert hat 0000000001. Nun kann ein weiteres Zusatzfeld mit der Bezeichnung Branche angelegt werden.

Dieses erhält über die LIKE-Referenz die gleichen Eigenschaften wie das Tabellenfeld AUSP-ATWRT (hier ist der Merkmalswert gespeichert).
Beachten Sie, dass der Langtext später in der Query als Feldname genutzt wird und die Überschrift dann als Überschrift für die Spalte genutzt wird. Der technische Name steht dahingehend den Query-Erstellenden nicht zur Verfügung. Dennoch kann es sinnvoll sein den Langtext und den technischen Namen identisch zu halten, insbesondere wenn später noch Anpassungen erforderlich sein sollten.

Darüberhinaus wird im Feld Reihenfolge des Codeabschnitts 3 eingetragen, so dass als erstes das Feld FONDS danach OBJNFOND und abschließend die einzelnen Merkmalsfelder definiert werden können.

Das entsprechende Coding zum Feld würde dann wie folgt lauten:

DATA: L_BRANCHE type AUSP-ATWRT.
SELECT SINGLE ATWRT INTO L_BRANCHE FROM AUSP
 WHERE OBJEK = OBJNFOND AND ATINN ='0000000001' AND KLART = '042'.
 IF sy-subrc <> 0.
  CLEAR BRANCHE.
ELSE.
  BRANCHE = L_BRANCHE.
ENDIF.

Entsprechend kann auch für jedes weitere Merkmal verfahren werden.
Hierbei muss jedoch darauf geachtet werden, dass jedes Feld einzeln mit der entsprechenden ATINN gepflegt werden muss.

Wie bereits erwähnt kann in der Tabelle CABN die ATINN für die einzelnen Merkmale entnommen werden. Es bietet sich daher an in einen zweiten Modus über die Transaktion SE16 sich die Merkmale aus der Tabelle CABN ausgeben zu lassen.

Nachdem alle Felder erfasst sind, können diese in einer entsprechenden Feldgruppe (bspw. PSM-FM Stammdaten) eingefügt werden und damit für eine Query verwendet werden.

Dieses kann einen entsprechend hohen Aufwand verursachen insbesondere dann wenn weitere Merkmale hinzukommen.

Zusatzfelder in Query verwenden

Nun stehen die einzelnen Zusatzfelder (oder Merkmale) als eigene Felder im Infoset zur Verfügung und können so in eine Query eingebunden werden. Da das gesamte Infoset jedoch als Basis die Tabelle AUFK hat und anhand der Innenaufträge eine Selektion der einzelnen Datensätze erfolgt ist es leider nicht möglich über die Merkmale der Klassifizierung eine entsprechende Abfrage zu erstellen. Hier müsste der umgekehrte Weg über die Tabelle AUSP und Verknüpfung FMFINCODE mit AUFK gegangen werden, was jedoch den Nachteil hat, dass reine CO-Innnenaufträge in einer Auswertung nicht mehr ausgewiesen wären.

Query Stammdatenliste Innnenaufträge und verknüpfte Fonds sowie Merkmale aus Klassifizierung

Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen (bzw. Zusatzfelder) des Infosets Zugriff genommen beziehungsweise in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.

Die Felder werden hier in der Reihenfolge angegeben, wie diese dann auch in der Query ausgegeben werden sollen:


Auftragsstammdaten AUFK
Auftragsart (S) AUFK-AUART
Auftragsnummer (L,S) AUFK-AUFNR
Kurztext (L) AUFK-KTEXT
Verantwortliche Kostenstelle (L,S) AUFK-KOSTV
Kostenstellentexte CSKT
Beschreibung (L) CSKT-KTEXT
Auftragsstammdaten AUFK
Profitcenter (L,S)
AUFK-PRCTR
Profit-Center-Stammdaten Texte (CEPCT)
Allgemeine Bezeichnung (L) CEPCT-KTEXT
Zusatzfelder (die im Infoset angelegt wurden)
Finanzierungszweck (L,S)  FINUSE
Auftragsstammdaten AUFK
Arbeitsbeginn (L,S) AUFK-USER7
Arbeitsende (L) AUFK-USER8
Antragssteller (L) AUFK-USER0
Verantwortlicher (L) AUFK-USER2
Abteilung (L) AUFK-USER6
Externe Auftragsnummer (L) AUFK-AUFEX
Zusatzfelder (die im Infoset angelegt wurden)
Gesperrt (L)  GESPERRT
lokale Zusatzfelder

Lehreinheit  (L) 


Das Feld Lehreinheit wurde dabei aus der verantwortlichen Kostenstelle des Innenauftrages abgeleitet (siehe Artikel "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer".
Nun können die einzelnen Merkmale der Klassifizierung als Listenfelder übernommen werden. Diese sind als Datenfelder unterhalb der Zusatzfelder zu finden und wurden wie beschrieben im Infoset definiert. Als Beispiel wären hier folgende Merkmale bzw. entsprechende Felder denkbar.

Zusatzfelder
Branche (L)
FB/Institut (L)
Geldgeber (L)
Dienstleistung (L)
Auftragsforschung (L)
UST-Pflicht (L)
VoKoR (L)
...

Das Zusatzfeld OBJNFOND muss nicht extra in der Grundliste der Query eingefügt werden, da darauf aus den einzelnen Merkmalen referenziert wird.

Insgesamt könnten damit wesentlich umfangreiche Stammdatenanforderungen aus SAP erfüllt werden. Im Gesamtergebnis kann hier nun aber eine Stammdatenliste zur Verfügung gestellt werden, die einzelne Daten aus den CO-Innenauftrag, Fond des Haushaltsmanagements (PSM-FM) und zusätzlich noch aus der Klassifizierung und das Sperrkennzeichen beinhaltet. Hierdurch ist eine mühsame Ausgabe über die Stammdatenliste der Innenaufträge (Transaktion KOK5), der Klassensuche (Transaktion CL30N) oder der alphabetischen Liste der Fonds (Transaktion S_KI4_38000039) nicht mehr zwingend erforderlich. Zumal die Klassifizierung in der Hauptsache als weiteres Selektionskriterium für eine Stammdatenliste und einzelnen Aufruf der entsprechende Fonds oder direkt im Stammsatz des jeweiligen Kontierungsobjektes genutzt wurde.

Wie schon beschrieben ist es leider nur möglich die Klassifizierungsmerkmale als Listenfelder und nicht als Selektionsfelder zu verwenden. Dennoch können so auch tiefergehende Informationen zum einzelnen Objekt mit ausgegeben werden.

ACHTUNG: Sonderfall Inkonsistenz bei Merkmalspflege

Die nun erstellte Query verhält sich in Bezug auf einen Sachverhalt abweichend zum SAP System. Sofern in der Merkmalspflege (Transaktion CT04) bestimmte Merkmale fest hinterlegt sind (und nicht die Funktion zusätzliche Werte aktiviert wurde um ein Freitextfeld zu ermöglichen) kann es bei Änderung der Merkmale dazu kommen, dass in der Query ein ehemals gepflegter Merkmalswert ausgewertet wird, wohingehend in der Stammdatenklassifizierung das Merkmal ohne Wert angezeigt wird und statt dessen die Schaltfläche Inkonsistenzen (mit Warnglocke) angezeigt wird.Sofern man auf diese Schaltfläche drückt, wird der nicht mehr gültige Wert als Ladefehler beziehungsweise Wertekonflikt ausgegeben.

Nehmen wir als Beisspiel das Merkmal BRANCHE. Bisher wurden viele Projekte der Branche IKT = Informations und Kommunikationstechnik zugeordnet. Künftig wird dieser Wert jedoch gelöscht und statt dessen die beiden Werte IT = Informationstechnik und KT = Kommunikationstechnik gepflegt.
Bei alten Projekten (Fonds) wird daher in der Transaktion FM5S beziehungsweise in der Klassifizierung ein Wertekonflikt ausgegeben und das Feld wird ohne Wert angezeigt, wohingehend in der Query noch der alte Wert IKT beim Projekt 40210001 ausgegeben wird, da dieser Fond in der Klassifizierung damals das zulässige Merkmal IKT zugewiesen bekam. Daher sollte beim Ändern der Werte eines Merkmals auch immer darauf geachtet werden, ob vorhandene Klassifizierungen ggf. angepasst werden sollten. Dieses sollte aber kein Problem der Query sondern des Stammdatenmanagement sein.

Hinweis: Query Stammdaten CO Innenauftrag PSM-FM Fond

Dieser Artikel ist Teil einer Serie um Stammdaten von CO Innenaufträgen und PSM-FM Fonds miteinander zu verknüpfen.
  1. "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen"
  2. "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer"
  3. "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM"
  4. "Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE"

Insbesondere was die Auswertung von PSM Stammdaten anbelangt (so eben auch Klasifizierung oder Finanzierungszweck) dürfte der Artikel "SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement" noch eine Menge Potential beschreiben und teilweise auch eine etwas einfachere Variante anbieten.

NACHTRAG: Merkmale der Klassifizierung durch Zusatztabelle

Seit 2014 ist auch wieder ein wenig Zeit vergangen, so dass ich zwischenzeitlich ebenfalls eine Erleichterung bei der Auswertung der Merkmale der Klassifizierung im Artikel "Query über COEP, AUFK und FMFINCODE für Einzelposten Istkosten Innnenauftrag mit Stammdaten aus CO und PSM-FM sowie Spalten für Ertrag und Aufwand - Erster Teil Infoset als Datengrundlage" innerhabl des Abschnitt "Merkmal aus Klassifizierung mit auswerten" durch das Zusatzfeld ZAUFNR kann nciht nur FMFINCOE als Zusatztabelle eingebunden werden sondern auch die Verknüpfung zwischen Fond und Klassifizierungsmerkmale ist dank CONCATENATE   wesentlich einfacher. Daher möchte ich ausdrücklich auch diese Methode empfehlen. ;-)


 

Hinweis:

Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
Werbung

Steuersoftware für das Steuerjahr 2024

Lexware TAXMAN 2025 (für das Steuerjahr 2024)

WISO Steuer 2025 (für Steuerjahr 2024)


* Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Freitag, 28. November 2014
21:18 Uhr

Grundlagen Kurzeinführung und Handbuch SAP Query

SAP Query ist ein Werkzeug in SAP welches das Auslesen und auch Anlysieren von Tabellen im ERP System ermöglicht. Die Query ist dabei vergleichbar mit einer Abfrage innerhalb Access. Da ich unter den Tag Query schon einige Query vorgestellt habe soll dieser Artikel eine kurze eher allgemein gehaltene Einführung ins Thema geben und somit eine Grundlage bzw. ein Kurzhandbuch für die Erstellung von Queries darstellen.

Ergänzend dazu habe ich im Buch »Berichtswesen im SAP®-Controlling« (ISBN: 978-3960127406 *) und im Rahmen meiner Vorträge als Dozent im Rahmen "Berichtswesen mit SAP Controlling" mit Schwerpunkt auf Hochschulcontrolling und Hochschulberichtswesen ein entsprechendes Tagesseminar angeboten.

Hier sollen dennoch die Grundlagen (und etwas mehr) im folgenden Text erläutert werden. Am Ende dieses Artikel sind weitere Literatur- und Bloghinweise veröffentlicht.

Da der Artikel doch recht umfangreich ist, habe ich hier ein kurzes Inhaltsverzeichnis eingefügt, so dass auf die relevanten Abschnitte gesprungen werden kann.


1. Grundeinstellungen / Berechtigungen

Bei der Erstellung von Query und damit eine Auswertung von Datenbanktabellen sollte auch das Thema Berechtigungen nicht aussen vor gelassen werden.



1.1. Allgemeiner Tabellenschutz

Da bei der Erstellung von Query direkt in Datenbanken gelesen wird, sind zur Erstellung entsprechende Berechtigungen erforderlich. Zum Anzeigen einer Tabelle wird die Auswertungstransaktion und die Tabellenansichtberechtigung über das Berechtigungsobjekt S_TABU_DIS geprüft. Hierbei wird im Berechtigungsfeld Aktivität 03 (=Ansicht) und eine der Tabelle zugeordneten Berechtigungsgruppe geprüft. Die Zuordnung von Tabellen zu Berechtigungsgruppen erfolgt mandantenunabhängig über die Transaktion SE54 (Speicherort der Einstellungen ist dann die Tabelle TDDAT Pflegebereiche für Tabellen).
Hier kann auch über die Berechtigungsgruppe oder die Tabelle nach den entsprechenden Werten gesucht werden. So ist bspw. die Tabelle GLPCA der Berechtigungsgruppe KA (=CO:Anwendungstabelle) zugewiesen.



1.2. Berechtigungsrollen für Query

Sofern auch Anwender Query ausführen sollen, sollte sich hier vorab schon Gedanken um ein passendes Berechtigungskonzept gemacht werden. Hierzu sind im Artikel "SAP Query: Berechtigung (organisatorisch und technisch)" schon einige Anmerkungen gemacht worden.
Da es in diesen Artikel um die Grundlagen zur Erstellung einer Abfrage und das entsprechende Umfeld geht werden hier weiter gehende Berechtigungen vorgestellt.

Berechtigungsobjekt S_TCODE

Hier werden die einzelnen Transaktionscodes zum Arbeiten mit einer Query beschrieben.
Für das Ausführen einer Query ist folgende Transaktion gedacht:

  • SQ00 SAP Query: Queries starten

Für die Pflege und Erstellung sollten noch folgende Transaktionen hinterlegt werden:

  • SE12 ABAP Dictionary Anzeige
  • SE36 Logical Database Builder
  • SQ01 SAP Query: Queries pflegen
  • SQ02 SAP Query: InfoSet pflegen
  • SQ03 SAP Query: Benutzergruppenpflege

Weitere relevante Berechtigungsobjekte sind S_DEVELOP, S_TABU_DIS und S_QUERY. Dieses sollten gemeinsam mit der SAP Basis mit passenden Berechtigungswerten versehen werden.
Sofern auch ABAP Coding im Infoset hinterlegt werden soll, ist der Objekttyp PROG im Berechtigungsobjekt S_DEVELOP und 'AQ*' für OBJNAME erforderlich. Andernfalls ist ein Coding hier nicht möglich. Dieses gilt dann auch für einen Import von Query per Upload in ein anderes System.
Für die Ausführung von Query sollte im Berechtigungsobjekt S_DEVELOP die Aktivität 03 und ggf. Objekttyp LDB ausreichend sein. Für die Erstellung von Query sollten ggf. weitere Aktivitäten und Objekttypen hinterlegt werden (weitreichende Berechtigung wären die Aktivitäten 01,02,03,06,07)

Weitere Objekttypen im Berechtigungsobjekt S_DEVELOP sind:

  • DOMA: Domänen
  • DTEL: Datenelemente
  • ENQU: Sperrobjekte
  • INDX: Sekundärindices*
  • MCID: Matchcode-ID*
  • MCOB: Matchcode-Objekte*
  • SHLP: Suchhilfen
  • SQLT: Pool/Clustertabellen*
  • SQTT: Technische Einstellungen Tabellenpool
  • STRU: Strukturen
  • TABL: Transparente Tabellen*
  • TABT: technische Einstellung zu Tabellen
  • TTYP: Tabellentypen
  • TYPE: Typgruppen
  • VIEW: Views*
  • VIET: Viewtypen
  • LDBA: Logische Datenbank

sowie die einzelnen Aktivitäten. Für eine reine Ansicht der Query (bzw. Ausführen) sollte die Aktivität 03 für den Objekttyp LDBA ausreichen, wenn auch logische Datenbanken mitausgewertet werden sollen.

Je nach Aufstellung kann es sinnvoll sein zwei Rollen anzulegen. Eine für die Ausführung von Query bspw. QUERY-EXECUTE und eine für die Pflege bspw. QUERY-CREATE. Bei der Zuordnung des Berechtigungsobjektes S_QUERY ist jedoch zu beachten, dass ein Benutzer, der die Berechtigung für das Berechtigungsobjekt S_QUERY mit den beiden Aktivitäten 02 Ändern und 23 Pflegen besitzt, alle Queries aller Benutzergruppen zugreifen kann.
Daher sollte in der Rolle zum Ausführen einer Query dieses Berechtigungsobjekt ohne Berechtigungsfeldwerte hinterlegt werden, da andernfalls die Steuerung über die Benutzergruppen problematisch ist. Auf diese gehen wir im Folgenden ein.



1.3. Transaktion für Query zuweisen

Im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" ist eine Möglichkeit beschrieben, wie die erstellte Query später dann als Transaktion für Infouser zur Verfügung gestellt werden kann. Wobei auch im Artikel "SAP Query als kundeneigene Transaktion mit Berechtigungen für Tabellenberechtigungsgruppe, Tabellen und Reporttransaktion vergeben" dieses inklusive der Berechtigungsobjekte beschrieben ist.
 



2. Benutzergruppe anlegen (Transaktion SQ03)

Neben der Berechtigungssteuerung über das Berechtigungsobjekt S_QUERY gibt es auch die Möglichkeit Berechtigungen zur Pflege und Zugriff auf Query über Benutzergruppen zuzuordnen. Starten Sie hierzu die Transaktion SQ03.

Sofern Sie zum ersten Mal diese Transaktion aufgerufen haben, sollten Sie über UMFELD->ARBEITSBEREICH auf den Standardbereich (mandantenabhängig) wechseln. Alternativ kann dieses über einen Benutzerparamter im Userstamm festgelegt werden. Dieses geht im SAP Menü unter (System->Benutzervorgaben->Eigene Daten oder direkt über die Transaktion SU3. Hier kann im Reiter Parameter sowohl der Arbeitsbereich als auch ggf. die Benutzergruppe per Benutzerparameter hinterlegt werden. Für den mandantenabhängigen Arbeitsbereich wird hierzu der Parameter AQW ohne Wert angelegt, so dass Sie hier nicht jedes Mal aufs Neue den Arbeitsbereich wechseln müssen.

Bedeutung Arbeitsbereich:

Wesentlicher Unterschied des Arbeitsbereich ist, dass im Standardbereich alle angelegten Objekte je Mandant (mandantenabhängig) abgespeichert sind, während der globale Arbeitsbereich mandantenübergreifend und somit systemweit (mandantenunabhänig) zur Verfügung stehen.

Der globale Arbeitsbereich ist dafür ans Transportsystem angebunden während der Standardbereich davon unabhängig ist.


In das Feld Benutzergruppe können Sie eine entsprechende Benutzergruppe mit der Schaltfläche ANLEGEN erstellen. Hierzu können Sie eine Beschreibung der Gruppe ergänzen. Ein Beispiel wäre die Benutzergruppe AGCO. Über die Schaltfläche "Benutzer und Infosets zuordnen" können Sie dann entsprechende SAP Benutzer (und später auch Infosets) der Gruppe zuordnen. Ergänzend zum Benutzer kann über das Ankreuzfeld neben den Benutzernamen die Änderungsberechtigung über das Berechtigungsobjekt S_QUERY entzogen werden. Benutzer die gar keine Berechtigung zum Ändern haben bekommen auch diese Funktion entsprechend als nicht pflegbar angezeigt.

Dieses bedeutet, dass Benutzer, die generell keine Query ändern, pflegen dürfen über die Benutzergruppe bestimmte Queries zugeordnet bekommen dürfen. Darüber hinaus kann Usern die Berechtigung zur Pflege von Queries trotz vorhandener Berechtigungen im Berechtigungsobjekt S_QUERY entzogen werden kann.

Generell hat ein Benutzer mit Zuordnung des  Berechtigungsobjekt S_QUERY mit den beiden Berechtigungsfeldwerten Ändern und Pflegen die Berechtigung auf jede Query zuzugreifen, ohne dass dieser in einer entsprechenden Benutzergruppe zugeordnet ist. Je nach Berchtigungskonzept kann dieses zum Beispiel für alle Keyuser in diesen Bereich gelten. Um nun nur eine Query auszurollen, kann es daher sinnvoll sein, diese wie im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" beschrieben in den Berechtigungsrollen als eigene Transaktion zu hinterlegen.
 



3. Datenherkunft finden

Die Hauptaufgabe zur Erstellung von SAP Query ist die Identifikation der relevanten Datenbanktabellen. Hier können im SAP System die Datenfelder mit der F1 Hilfe angezeigt werden. Hierzu wird im Hilfetext auf die Technischen Informationen geklickt und unter den Feld-Daten sind im Idealfall auch die Tabelle und der Feldname der Tabelle mit aufgeführt.
Alternativ kann auch mit der Transaktion SE12 nach passenden Tabellen für die Auswertung gesucht werden. Eigentlich ist diese Transaktion für die Anzeige der Tabellenstruktur gedacht. Über die Werthilfe (F4) können aber auch vorhandene Tabellen durchsucht werden. Hier kann dann entweder anhand der Schaltfläche Infosystem nach Tabellennamen und Kurzbezeichnung gesucht werden oder über die Schaltfläche SAP Anwendung innerhalb der einzelnen SAP Module und Komponenten gesucht werden. Neben den einfachen Fall einer direkt lesbaren transparenten Tabelle (zum Beispiel für Innenaufträge die Tabelle AUFK) gibt es auch sogenannte Clustertabellen. Innerhalb eines Cluster werden Felder anderer Tabellen komprimiert in einer einzelnen Spalte gespeichert. Hierdurch ist eine Verwendung von Cluster-Tabellen ebenso wie Pool-Tabellen nicht in Joins möglich. Clustertabellen sammeln hierdurch mehrere Einzeltabellen in einer Tabelle und haben den Nachteil, dass diese nicht direkt ausgewertet werden können. Hierzu bietet sich dann die Verwendung einer logischen Datenbank an.

Logische Datenbanken
enthalten schon Verknüpfungen und können direkt als Grundlage für ein Infoset verwendet werden. Dieses hat den Vorteil, dass man nicht selbst erst einzelne Tabellenverknüpfungen erstellen muss. Die Struktur einer logischen Datenbank kann in der Transaktion SE36 eingesehen werden.
Im Bereich HCM wären dieses bspw. PNP oder PCH während innerhalb des Rechnungswesen ggf. die Datenbanken ADA für die Anlegenbuchhaltung und BRF für FI Belege interessant sind.


Im Artikel "Tabellen hinter Transaktionscode oder ABAP Programm über eine SAP Query ermitteln" ist eine Möglichkeit beschrieben durch die anhand eines Transaktioncode die hinter diesen Programm genutzten Tabellen ausgegeben werden. Hier sind dann bspw. für die Transaktion KO03 (Innenauftrag anzeigen) auch alle relevanten Tabellen für die Stammdaten des Innenauftrages gelistet.

Daneben gibt es natürlich auch die Möglichkeit der Recherche im Netz nach entsprechenden Tabellen. So bietet die Seite sap-community.de unter "Verzeichnis SAP Tabellen"  eine kleine Zusammenstellung von verschiedenen häufig genutzten Tabellen bspw. aus den Bereichen FI, CO oder anderen Komponenten von SAP an. In Form einer MindMap ist dieses auch auf der Seite eberstein.de zu finden (siehe auch "Mindmapping und Sketchnotes im Beruf nutzen für Brainstorming oder Mind Mapping mit XMIND")



4. Infoset anlegen (Transaktion SQ02)

Durch das Anlegen eines Infosets kann die Bezeichnung und die Art der Datenherkunft (Datenquelle) festgelegt werden. In der Regel können Sie hier drei Varianten häufig nutzen:

Tabellen-Join über Tabelle
Hier kann eine Haupttabelle gepflegt werden und diese mit anderen Tabellen verknüpft werden. Hierzu muss eine entsprechende Verknüpfung zwischen zwei übereinstimmende Felder gestaltet werden (Join).

Direktes Lesen der Tabelle
Hier kann direkt eine Tabelle ausgelesen. Dieses kann sinnvoll sein, wenn nicht die Transaktion SE16 (Tabelle anzeigen) sondern tatsächlich nur eine direkte Tabelle ausgelesen werden soll.

Logische Datenbank
Innerhalb einer logischen Datenbank liefert SAP schon passende Tabellenstrukturen zu wichtigen Datenobjekten. Entsprechende Verknüpfungen sind hier schon hinterlegt. Beispiele für logische Datenbanken sind bspw. ADA (Anlagendatenbank) oder BRF (BELEGDATENBANK).

Wird eine Tabelle direkt gelesen erfolgt im Folgeschirm gleich die Frage, ob alle Tabellenfelder in eine Feldgruppe übernommen werden sollen. Die Datenfelder innerhalb einer Feldgruppe stehen dann später als Auswertungsobjekte zur Verfügung. Daher kann es sinnvoll sein hier direkt alle aufnehmen auszuwählen. Alternativ könnten hier auch einzelne Felder in das Infoset aufgenommen werden.

Sofern ein Tabellen-Join über eine Tabelle gebildet werden soll, erscheint im Folgebild die Tabelle mit ihren einzelnen Feldern und es kann im Menü unter BEARBEITEN->TABELLE EINFÜGEN eine weitere Tabelle eingefügt werden. SAP schlägt automatisch eine Verknüpfung zwischen den beiden Tabellen vor. Hierbei werden als Vorschlag automatisch Verknüpfungslinien zwischen einzelnen Feldern gezogen. Diese können markiert werden und über die rechte Maustaste gelöscht werden.

Unterschied inner join und left outer join

Daneben gibt es die Möglichkeit die Art der Verknüpfung über die Option left outer join umzustellen. Im Standard werden hier „inner join“ angelegt (1:1 Beziehungen) definiert und als einfache Linie dargestellt. Es ist aber auch möglich „left outer join“ anzulegen (1:n Beziehungen). Hierzu müssen Sie nur mit der rechten Maustaste die Art der Verknüpfung ändern.
Beim Inner Join müssen die Felder beider verknüpften Tabellen exakt übereinstimmen, andernfalls wird kein Ergebnis ausgegeben.

Dahingehend wird beim Left Outer Join immer die "linke" Tabelle ausgegeben und diese mit den übereinstimmenden Feldern der rechten Tabelle kombiniert. Hierbei wird die linke Tabelle immer mit ausgegeben und für jeden Treffer in der rechten Tabelle wird das entsprechende Feld erneut wiederholt, sofern in der rechten Tabelle mehr als eine Übereinstimmung gefunden wurde (daher der Vergleich mit der aus Access bekannten 1:N Beziehung).

Sofern Sie weitere Felder miteinander verknüpfen wollen können sie diese Felder zwischen den einzelnen Tabellen hin und her ziehen. Markieren Sie hierzu das Feld der Tabelle und ziehen Sie es auf ein passendes Tabellenfeld. Über die Schaltfläche Verknüpfungsbedingungen prüfen (F9) können Sie sehen, ob diese Verknüpfung auch gültig ist.
Eine Dokumentation von Tabellenbeziehungen (nicht nur für SAP Query) habe ich im Artikel "Graphische Darstellung von Tabellenverknüpfungen bspw. bei Query" beschrieben. Dieses kann bspw. für externe Dokumentationen genutzt werden oder wenn nur die Schlüsselfelder und nicht die gesamten Tabellenbeziehungen als Screenshot aus SAP dokumentiert werden sollen.
 

ACHTUNG:
Eine gültige Verknüpfung ist nur möglich, wenn die beiden Felder in ihren Eigenschaften übereinstimmen. Stimmen die Felder in ihren Eigenschaften nicht überein muss per Coding eine Übereinsteimmung erfolgen. Diese Variante ist im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck" ausführlicher beschrieben.

Nachdem Sie die Verknüpfungen definiert haben können Sie über die Schaltfläche Infoset zur Pflege des Infosets zurückkehren. Auch hier bekommen Sie eine Rückfrage, welche Tabellenfelder als Vorbelegung von Feldgruppen verwendet werden sollen. Auch hier empfiehlt sich die Option "alle Tabellenfelder aufnehmen", da dadurch spätere Berichtsanforderungen wesentlich leichter übernommen werden können. Alternativ besteht die Möglichkeit auch selbst Feldgruppen und passende Felder zu erstellen. Nach erfolgreicher Pflege kann das Infoset gespeichert und generiert werden.
Danach sollten Sie das Infoset über die Schaltfläche Zuordnung zu Rollen/Benutzergruppen einer Benutzergruppe bspw. AGCO zuordnen in der Sie später auch die Query erstellen möchten.



4.1. Erweiterung des Infosets durch Zusatztabellen oder Zusatzfelder

Neben einer reinen Auswertung von einzelnen Tabellen (oder der Auswertung von Verknüpfungen / Infosets) kann innerhalb einer Query auch mit Zusatzfeldern oder Zusatztabellen gearbeitet werden. Hierdurch können in eine Query auch Tabellen verknüpft werden die nicht direkt innerhalb eines Join verknüpft werden können, da noch ein weiteres Selektionsmerkmal wie bspw. der Buchungskreis erforderlich ist. Ein entsprechendes Beispiel ist im Artikel "Query über IBAN und Stammdaten Kreditor oder Debitor (Zusatztabellen in SAP Query)" beschrieben. Darüberhinaus besteht auch die Möglichkeit Zusatzfelder, wie bereits oben erwähnt per ABAP Coding zu ergänzen. Hier ist im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" ein recht umfangreiches Beispiel gegeben in dem die Merkmale der Klassifizierung aus der Tabelle AUSP ausgewertet werden.

Insbesondere was die Auswertung von PSM Stammdaten anbelangt dürfte der Artikel "SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement" ein schönes Beispiel für die Verwenudng einer Zusatztabelle mit ABAP Coding sein.

Diese Zusatzfelder können dann ebenfalls entweder in einer eigenen Feldgruppe oder einer bestehenden Feldgruppe übernommen werden (so als wären diese in einer Tabelle vorhanden) und im Query Painter bzw. bei der Erstellung der Query aus den Zusatzfeldern (meistens recht weit unten) ebenfalls übernommen werden.



4.2. ABAP Coding

Gerade bei der Anlage von Zusatzfeldern mit Coding ist auch der Umgang mit ABAP hilfreich. Hier zeigt der Artikel "Syntaxhevorhebung im ABAP Editor durch neuen Frontend Editor (Quelltext-Modus)" ein in meinen Augen sehr hilfreiche Ergänzung des Editors. Gerade durch Syntaxhervorhebung dürfte dieses einige Erleichterungen anbieten. Das umfangreichste Beispiel für ABAP Coding bei Zusatzfeldern ist sicherlich die Artikelserie zur CO Einzelpostenliste mit Ergänzung der Stammdaten aus CO-Innenauftrag und PSM-FM Fond  die in folgenden Artikeln  beschrieben ist: "Query über COEP, AUFK und FMFINCODE für Einzelposten Istkosten Innnenauftrag mit Stammdaten aus CO und PSM-FM sowie Spalten für Ertrag und Aufwand - Erster Teil Infoset als Datengrundlage" (Definition eines Infoset mit entsprechenden Zusatzfeldern und Einbindung der Tabelle FMFINCODE als Zusatztabelle zu AUFK, ferner wird hier durch Coding aus der verantwortlichen Kostenstelle über eine Wenn-Funktion die zugeordnete Lehreinheit ermittelt).

Teilweise kann hier auch einfacher ABAP Code wie WRITE zum Umwandeln von Werten hilfreich sein. Im Artikel "ABAP Anweisung WRITE zum Umwandeln von Variablen und Werten wie FLOAT (Gleitpunktzahl, Fließkommazahl)" ist darauf eingegangen.
 



4.3. Alias Tabellen und Quickview

Normalerweise lässt sich eine Tabelle nur einmal im Infoset verwenden. Eine Möglichkeit hier mit Alias-Tabellen zu arbeiten ist auch im Artikel "Tabellen doppelt im Infoset nutzen und Quickview in Query umwandeln" erläutert.

Ebenso ist hier die Bedeutung von Quickview (Transaktion SQVI) mit Vor- und Nachteilen dargestellt.



5. Query anlegen (SQ01)

Rufen Sie zur Erstellung einer Query die Transaktion SQ01 auf. Ggf. sollten Sie in die passende Benutzergruppe über die Schaltfläche Bengruppe wechseln (Umsch+F7) wechseln und nun eine entsprechende Query anlegen. Beachten Sie hier, dass Sie auch hier im mandantenabhängigen Bereich arbeiten.
Nachdem Sie einen Namen für die Query gewählt haben und auf die Schaltfläche Anlegen gewechselt müssen SIe definieren, welches Infoset als Grundlage für die Query verwendet werden soll. Nun können Sie einen Titel für die Query sowie entsprechende Bemerkungen festlegen. Der einfachste Weg der Gestaltung ist nun der Wechsel über die Schaltfläche "Grundliste". Über die Grundliste können dann die anzuzeigenden Felder des Infosets ausgegeben werden. Sie können im Layoutdesign aus den einzelnen Feldgruppen die einzelnen Felder als Listenfelder (die werden in der Query dann ausgegeben) und Selektionsfelder (diese müssen beim Aufruf der Query gefüllt werden und stellen die Abfragekriterien dar). Über die Schaltfläche Testen kann die entsprechende Query gestestet werden.

Reihenfolge Selektionsfelder bei Query ändern

Nun erscheint auch direkt die Selektionsmaske der Query. Sofern Sie die Reihenfolge der Selektionsfelder später ändern möchten, ist dieses über SPRINGEN->FELDAUSWAHL->SELEKTIONEN durch die Spalte Nr. innerhalb der Transaktion SQ01 (Einstiegsbild) möglich, wodurch die Reihenfolge auf dem Selektionsbild durch Nummern zwischen 1 und 90 festgelegt werden. Hier kann es sinnvoll sein, in fünfer Schritten die Nummern festzulegen, so dass eine Umsortierung problemlos möglich ist.

Andernfalls kann die Grundliste gesichert und beim Verlassen der Query diese auch generiert werden. Sofern Sie als Ausgabeform SAP List Viewer gewählt haben (das ist im Standard der Fall) erhalten Sie beim Start der Query eine ALV Liste und können hier die üblichen Sortierungen, Filterungen oder auch Ausblendungen vornehmen.



6. Berichtszuordnung zu Query (Bericht-Bericht-Schnittstelle)

Je nach Auswertung kann es hilfreich sein auch direkt eine entsprechende Absprungtranssaktion zu definieren. Hierzu kann innerhalb der Pflege der Query über SPRINGEN->Berichtszuordnung über das +Zeile einfügen weiere Query eingefügt werden. Sinnvoller ist es hier oft statt einer Query über anderer Berichtstyp die Funktion TR Transaktion zu wählen. Somit können zu ausgewerteten Stammdaten (zum Beispiel einer Kreditoren-Stammdaten-Liste). entsprechende Bewegungsdaten oder weitere Informationen aufgerufen werden. Ein Beispiel ist hier im Artikel "Query über IBAN und Stammdaten Kreditor oder Debitor" beschrieben in der zu den Kreditoren auch gleichzeitig auf die Transaktion FBL1N für eine Einzelpostenliste gesprungen werden kann. Ein anderes Beispiel wäre der Aufruf einer Anlage mit der Transaktion AS03 oder die Pflegetransaktion von Stammdaten wie KS02 für Kostenstellen ändern.
Wichtig ist dabei, dass in der Grundliste auch alle notwendigen Felder für diesen Bericht mit ausgegeben werden, so dass diese mit übergegeben werden können. So wäre für die Beleganzeige (FB03) auch der Buchungskreis recht hilfreich :-)
 



7. Query um lokale Felder erweitern

Neben der reinen Auswertung von einzelnen Tabellenfeldern kann innerhalb der Query auch die Ergebnisse verarbeitet werden. Um einzelne Felder weiter zu bearbeiten können Sie über SPRINGEN->FELDAUSWAHL->FELDAUSWAHL über die Funktion BEARBEITEN->KURZBEZEICHNUNGEN ->EINSCHALTEN einzelne Felder eine Kurzbezeichnung zuordnen.

Diese Kurzbezeichnungen sind notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein lokaes Feld mit einer Formel anlegen. Dieses geht über
BEARBEITEN->LOKALES FELD->ANLEGEN.
Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden. Elegant wäre es natürlich, wenn wir im Infoset eine entsprechende leere Feldgruppe definiert hätten, es geht aber auch ohne.

Für dieses Feld werden dann entsprechende Eigenschaften festgelegt und über eine Berechnungsvorschrift kann auf andere Felder Zugriff genommen werden.



7.1. Per Formel Teilstring aus Variablen auslösen in Query

Im Artikel "Query Stammdatenvergleich Profit-Center und Auslesen von Textbestandteilen (Teilstring aus Variable)" wird als Beispiel die Möglichkeit beschrieben bestimmte Textbestandteile aus einen Feld auszuwerten.



7.2. Ikonen / Ampelfunktionen abhängig vom Wert ausgeben in Query

Daneben gibt es die Möglichkeit über IKONE  eine Ampelfunktion für bestimmte Werte zu hinterlegen (Beispiele sind in den Artikeln "Query Stammdaten CO Kontrolle Verantwortliche" oder "Abgleich Belege in CO auf Profit-Center mit zeitabhängigen Stammdaten der Anlagenbuchhaltung bei Investitionen" zu finden).



7.3. Mehrere Datenfelder in Query summieren

Daneben können aber auch eche Berechnungen durchgeführt werden. Diese ist im Artikel "CO Planeinzelposten Objekt und Partnerobjekt auswerten / Mehrere Felder summieren" beschrieben. Alternativ sind natürlich auch andere Berechnungen (Prozent, Summen oder andere Berechnungen möglich.



7.4. Umgang mit Datum in Query

Der Umgang mit Datumsfeldern in SAP Query ist ein wenig komplizierter. Für einfache Berechnungen dürfte aber folgender Artikel eine gute Anlaufstelle bieten "Umgang mit lokalen Datumsfeldern in Queries". Sofern Sie komplexere Berechnungen (bspw. Abstand zwischen zwei Terminen) berechnen wollen werden Sie  jedoch nicht um die Verwendung eines Zusatzfeldes im Infoset und eines entsprechenden ABAP Codes herumkommen.

Hier wurde auf sap-community.de im Beitrag "Anzahl von Tagen zwischen 2 Daten" eine passende Lösung vorgestellt.

Hierzu werden beide zu vergleichenden Datumsfelder (DATUM1 und DATUM2) mit Type DATS als Variablen definiert und aus den jeweiligen Tabellen innerhalb des Infosets mit einer Wertzuweisung gefüllt.

Danach wird das Zielfeld (AbstandTage) als TYPE P definiert und über die Formel "ABSTANDTAGE = DATUM1 - DATUM2." errechnet. Damit wäre im Infoset auch ein entsprechende Berechnung mit Datumswerten möglich. Inwieweit dieses auch über eine Formel innerhalb der Query möglich ist bin ich mir nicht sicher, aber vielleicht hilft dieser Ansatz ja schon weiter. Hierbei könnte die Variable DATUM1 natürlich auch als SYDATUM definiert werden, so dass heir der Abstand zum aktuellen Systemdatum errechnet wird.



7.5. Zeichenkette eines Feldes nach einen Wert durchsuchen

Eine weitere Möglichkeit per Coding besteht auch in der Durchsuchung eines Feldes nach einen bestimmten Zeichen. Dieses ist auf sap-community.de im Beitrag " Query, Zeichenkette durchsuchen und Ausgabe als lokales Feld?" erläutert.

Hierzu wird folgendes Coding  im Zusatzfeld ZFELDSUCHE für das zu analysierenden Feld (im Beispiel PRUEFFELD)  nach Suchstring hinterlegt.

FIND 'SUCHSTRING' IN prueffeld.
IF sy-subrc = 0.
ZFELDSUCHE = 'J'.
ELSE.
ZFELDSUCHE = 'N'.
ENDIF.

Daneben sind natürlich noch viele andere Möglichkeiten dank ABAP Coding möglich, aber auch einfache Abfragen und Formeln dürften viel Auswertungsarbeit abnehmen.



7.6 Parameter und Variablen in SAP Query

Teilweise sind Auswertungen auch abhängig vom Inhalt einer übergegebenen Variable. Auf das Thema "Eingabe auf Selektionsfeld" bei lokalen Feldern in der Query oder Abgrenzungsparameter bin ich im Artikel "Grundlagen SAP Query Variablen über Selektionsfelder mit Werten füllen Eingabe auf Selektionsbild oder Abgrenzungsparameter" eingegangen.

 



8. Query und Infoset per Upload/Download transportieren

Hier gibt es in der Infosetpflege (Transaktion SQ02) die Möglichkeit der Nutzung eines SAP Query Transporttool. Hier können Benutzergruppen, Infoset, Infoset und Query aber auch nur Queries auf unterschiedliche Weise transportiert werden. Besonders interessant ist hierbei die Option des Download bzw. Upload als Transportvariante.

Damit ist es möglich Query, Benutzergruppen, Infosets per Dateisystem zwischen SAP Systemen bspw. Entwicklung, Qualitätssicherung/Test und Produktivsystem auch unabhängig eines Transportauftrages zu übertragen.

In das SAP Query Transporttool gelangt man über die Transaktion SQ02 und hier über das "LKW" Symbol (Transporte STRG F5). Nun wir der Report RSAQR3TR gestartet und von hier kann ein Transport bzw. Download gestartet werden. Alternativ kann der Transport auch direkt über die Transaktion SA38 gestartet werden.


Neben der Auswahl der Transportaktion Download für Export und Upload für Import können im Abschnitt Transport von Infosets und Queries entsprechende Infosets und Query (auch per Mehrfachauswahl) selektiert werden. Es besteht auch die Möglichkeit nur Query ohne Infoset zu übertragen.

Hier gibt es keine Wertauswahlhilfe (F4), so dass hier die exakten Namen eingetragen werden müssen. Vorteilhaft ist hier eine sprechende Namenskonvention. Als Importoption lassen wir REPLACE stehen.

Beachten Sie, dass auch die Zuordnung zu einer Benutzergruppe entsprechend hinterlegt ist, so dass diese ebenfalls im System in dem die Query importiert wird, festgehalten werden sollte.

Der Nachteil des Transport über Datei (Download/Upload) ist dass hier der Transport von Varianten von Queries ebenso wie Layout-Varianten nur beim Export/Import/Kopieren möglich ist. Durch Export und Import werden (im Gegensatz zum Download/Upload) keine Datei erzeugt sondern ein echter Transportauftrag.

Die Funktion Kopieren ermöglicht es die Query vom Standardbereich in den globalen Bereich zu kopieren (und natürlich auch umgekehrt). Je nach Komplexität der einzelnen Varianten kann daher auch ein klassischer Transportauftrag statt Austausch per Datei hilfreich sein.

Im Artikel "Transport von InfoSet mit ABAP-Coding und Query per Transportauftrag" bin ich etwas ausführlicher auf das Transportsystem von SAP Query mit ABAP Coding auf Basis einer Mailanfrage eingegangen.

An dieser Stelle verweise ich auch gerne auf notwendige Nacharbeiten nach Support Package oder EHP Einspielung in meinen Artikel "LOAD_PROGRAMM_NOT_FOUND Programm AQCS oder AQZZ bei Aufruf Query per Reporttransaktion - SAP Query nachgenerieren lassen".

 



9. Selektionsvariante und Layoutvarianten

Wird eine Query ausgeführt kann bei der Selektion der notwendigen Daten (Selektionsbild) über "Als Variante sichern..." (Disketten/SpeichernSymbol in der zweiten Symbolleiste oder über Strg+S) die getroffene Auswahl (bspw. bestimmte Zeiträume oder Selektionen gespeichert werden. Hier habe ich mir angewohnt für immer wieder notwenige Datenfelder diese durch eine Variante mit der Bezeichnung ALLGEMEIN vorzubelegen. Diese Variante kann in der Pflege der Query (SQ01) beim Ändern im Einstiegsbild über Spezielle Atttribute als Standardvariante hinterlegt werden, so dass diese auch wenn keine Variante gewählt wurde automatisch mit ausgeführt wird. Ferner kann hier die Option "Ausführen nur mit Variante" gewählt werden, so dass auf jeden Fall eine Variante gewählt werden muss).



9.1. Geschützte Varianten (Selektion und Layout)

Ferner können Varianten auch geschützt werden, so dass in der Regel nur der Autor der Variante diese wieder ändern kann. Im Artikel "Geschützte Selektionsvarianten entsperren" ist allerdings eine Möglichkeit beschrieben diesen Schutz zu entfernen.

Daneben kann in der Ausgabeliste (ALV) der Query ebenfalls eine Layoutvariante erstellt werden, so dass bestimmte Zwischensummen gebildet oder einzelne Spalten ausgeblendet werden. Auch diese Layoutvariante könnte in der Variante zur Query fest hinterlegt werden.



9.2. SAP Query nur ausführen (Berechtigung)

Ein weiterer Aspekt wäre noch auf welche Weise die einzelnen Berichte den Infousern zur Verfügung gestellt werden. Unter 1.3. hatte ich schon darauf verwiesen, dass die Möglichkeit besteht für eine Query eine eigene Transaktion zur Verfügung zu stellen. Auf diese Weise muss die Query nicht über die Transaktion SQ00 (oder über die Transaktionen FQUS, FQUD oder FQUK in der Finanzbuchhaltung bzw. PQAH im HCM) ausgeführt werden sondern können auch im Menü zur Verfügung gestellt werden. Eine ausführlichere Beschreibung hierzu ist im Artikel "Benutzereigene SAP Menüs (Favoriten, Benutzermenü, Bereichsmenü)" zu finden. Dieses Thema ist ausführlicher auch im Artikel "Berechtigungen zur Ausführung von SAP Query (Transaktion SQ00 oder eigene Z/Y Transaktion) und Einbindung im Berechtigungskonzept und Berichtswesen" behandelt worden.
 



10. Beispiele für Query

Bisher erstellte Query sind unter den Tag Query hier ebenso wie diese Einführung als Artikel zu finden. Daneben sind sowohl im Amazon Partnershop (siehe Onlineshop) als auch bei den Buchempfehlungen  einige Literaturempfehlungen zum Thema zu finden.

Insbesondere das Buch "Praxishandbuch SAP Query-Reporting (SAP PRESS) Von Stephan Kaleske, Karin Bädekerl, Heinz Forsthuber" ist hier sicherlich empfehlenswert.

Daneben bin ich aber auch von Martin Peto und Katrin Klewinghaus " Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" begeistert und finde, dass sich beide sehr gut ergänzen. Gerade da Sie unterschiedliche Schwerpunkte setzen.



11. Ausführliche Literaturempfehlungen

Wie bereits erwähnt haben Martin Peto und Katrin Klewinghaus zum Thema SAP Query auch folgendes Buch geschrieben.

Reporting im SAP - Finanzwesen
Themen sind unter anderen
  • SAP-Informationssysteme im Überblick
  • Standard-Reporting mit SAP List Viewer (ALV)
  • Einsatzmöglichkeiten und Grenzen des SAP QuickViewers
  • Aufbau von SAP Queries mit Praxisbeispiel

Sollte sich noch jemand für das angesprochene Buch interessieren, so ist dieses auch auf meiner Unterseite zum Buch  "Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" beschrieben und kann hier auch bestellt werden.

Daneben kann ich aber auch das Buch von Stephan Kaleske (bzw. in der neuen Auflage auch von Karin Bädekerl, Heinz Forsthuber empfehlen.

Praxishandbuch SAP Query-Reporting

ISBN: 978-3836218405 *

Eine ausführlichere Beschreibung dieses Buch ist auf der Seite "Praxishandbuch SAP Query-Reporting" zu finden.

Auch von mir selbst wird das Thema in meinem Buch »Berichtswesen im SAP®-Controlling« behandelt.

Berichtswesen in SAP Controlling

ISBN: 978-3960127406 *

Eine ausführliche Beschreibung ist unter Buchempfehlungen unter Berichtswesen im SAP®-Controlling (SAP Modul CO; internes Berichtswesen) zu finden.

Auch an anderer Stelle im Netz sind Einführungen rund um das Thema SAP Query zu finden. Als Beispiel mag ich hier gerne auf zwei Artikel von thinkdoforward.de verweisen: "SAP-Querys – Datenanalyse einfach." und "SAP SQVI – diese Tipps solltest du dir nicht entgehen lassen.". Gerade das Thema Quickview habe ich bei mir etwas außen vor gelassen aber auch dieses Tool hat durchaus auch Vorzüge.
 

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
Werbung

Steuersoftware für das Steuerjahr 2024

Lexware TAXMAN 2025 (für das Steuerjahr 2024)

WISO Steuer 2025 (für Steuerjahr 2024)


* Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Donnerstag, 6. November 2014
06:25 Uhr

Query über IBAN und Stammdaten Kreditor oder Debitor (Zusatztabellen in SAP Query)

Ausgangslage
Zur Vermeidung von mehrfach angelegten Kreditoren / Debitoren soll ein Abgleich über die IBAN erfolgen, ob ein entsprechender Stammdatensatz hier schon angelegt worden ist. Da zwischenzeitlich IBAN eingeführt ist (siehe Artikel "IBAN in der Stammdatenpflege generieren (SEPA)") sollte in jeden Kreditor / Debitor das Feld IBAN gepflegt sein.

Da im Standard keine Auswertung über die Stammdaten der Debitoren- / Kreditoren-Rechnung möglich ist, bietet sich hier eine entsprechende Query an.

Tabellen identifizieren

Leider ist das Feld IBAN nicht in den Stammdatentabellen der Kreditoren und Debitoren vorhanden. Hierfür wird in SAP die Tabelle TIBAN angelegt, die zu den "vorhandenen" Bankverbindungsdaten auch die entsprechende IBAN hinterlegt hat.

Die Zahlungsverkehrsdaten sind in den Tabellen LFBK "Lieferantenstamm (Bankverbindungen)" für Kreditoren und KNBK "Kundenstamm (Bankverbindungen)" für Debitoren hinterlegt.

Bei der Definition eines Infosets funktioniert jedoch keine direkte Definition eines Tabellenjoins über die Tabellen LFBK und TIBAN. Es werden hier nur drei Verknüpfungen vorgeschlagen, es sind jedoch vier erforderlich um eine eindeutige Auswertung zu treffen.

Eine Verknüpfung der Felder BANKS, BANKL und BKONT funktioniert zwischen LFBK und TIBAN. Jedoch ist das Feld BANKN (Bankkontonummer) in der Tabelle LFBK als Char mit 18 Zeichen und in der Tabelle TIBAN mit Char 35 Zeichen definiert. daher wird eine Verknüpfung mit der Fehlermeldung "Illegale Join-Bedingung" abgelehnt.


Daher ist hier der Umweg über die Zusatztabelle erforderlich.

Infoset anlegen

Innerhalb der Transaktion SQ02 wird folgendes Infoset definiert. Hierfür wird als Datenquelle ein Tabellen-Join über Tabelle LFBK   (bzw. KNBK) angelgt.

1. Stammdaten

Innerhalb des Infosets IBAN-KREDITOR nehmen wir als Datenquelle einen Tabellen-Join über die Tabelle LFBK und ergänzen in der Join Definition über BEARBEITEN->TABELLE EINFÜGEN die Tabelle LFA1  "Lieferantenstamm (allgemeiner Teil)". Die vorgeschlagene Verknüpfung über das Feld LIFNR lassen wir bestehen. Danach wechseln wir über die Schaltfläche Infoset und lassen alle Felder der beiden Tabellen in Feldgruppen anlegen.

Für das Infoset IBAN-DEBITOR verknüpfen wir die beiden Tabellen KNBK und die Tabelle KNA1 wie vorgeschlagen über das Feld
KUNNR. Auch hier werden alle Felder in eine Feldgruppe übernommen.

Danach haben wir zwei Feldgruppen mit der Bankverbindung und den allgemeinen Stammdaten (Anschrift) der Kreditoren bzw. Debitoren.

Erweiterung des Infoset über Zusatztabelle TIBAN

Über die Schaltfläche Zusätze (F5) bzw.  über  SPRINGEN-> ZUSÄTZE ZUM KNOTEN  innerhalb der Transaktion SQ02 (Pflege des Infosets) kann nun eine Zusatztabelle eingefügt werden. Hierzu kann im Register Zusätze die Schaltfläche Anlegen ausgewählt werden.
Hierzu tragen wir die den Namen TIBAN  und als Art der Zusatzinformation Zusatztabelle ein. Nun erfolgt eine Abfrage über SELECT SINGLE * FROM TIBAN WHERE ...
in der mehrere Bedingungen erfüllt sein sollen.

Diese habe ich für beide Infosets in folgender Tabelle erläutert.

 
Bedingung INFOSET IBAN-KREDITOR INFOSET IBAN-DEBITOR
Verknüpfungsbedingungen Zusatztabelle TIBAN
WHERE BANKS = LFBK-BANKS KNBK-BANKS
AND BANKL= LFBK-BANKL KNBK-BANKL
AND BANKN= LFBK-BANKN KNBK-BANKN
AND BKONT= LFBK-BKONT KNBK-BKONT

Aus Performancegründen kann hier noch das Feld "intern puffern" angekreuzt werden, wodurch diese Tabelle gepuffert wird und somit bei häufiger Abfrage einer IBAN die Daten schneller gefunden werden können.Der Nachteil ist dann jedoch der gesteigerte Speicherbedarf, da für die Zusatztabelle eine neue interne Tabelle angelegt wird.

Wichtig ist, dass das Feld IBAN aus der Tabelle TIBAN ebenfalls ein einer Feldgruppe innerhalb des Infosets mit aufgenommen werden muss. In der Query ist dieses in der entsprechenden Feldgruppe des Infosets vorhanden.

Vergessen Sie nicht das Infoset dann einer entsprechenden Benutzergruppe über die Schaltfläche "Zuordnung zu Rollen/Benutzergruppe" zuzuordnen, da dieses Infoset andernfalls nicht für eine Query verwendet werden kann.

Hintergrund: Aufbau IBAN

Eine Verknüpfung der Felder BANKN  (Bankkontonummer) war in der Definition des Infosets nicht möglich (Fehlermeldung illegale Verknüpfung). Hintergrund ist, dass das Feld LFBK-BANKN mit 18 Zeichen (Typ Char) und in der TIBAN-BANKN mit 35 Zeichen definiert ist. Alledings werden bei einer Verknüpfung über die Zusatztabelle dann einfach die fehlenden Zeichen aufgefüllt, so dass eine Verknüpfung zwischen LFBK, KNBK und TIBAN hergestellt werden kann. Da sich die IBAN aus einer Kombination von Ländercode, Prüfziffer, Bankleitzahl und Kontonummer zusammensetzt, kann auch nur durch die Verknüpfung aller vier Felder eine eindeutige Zuordnung der Bankverbindung zur IBAN gefunden werden. Dies wird an folgenden Beispiel deutlich:
 
Deutsche IBAN (immer 22 Stellen)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
DE Prüfsumme Bankleitzahl Kontonummer
 Zur weiteren Beschreibung des IBAN AUfbaus siehe Wikipedia: Zusammensetzung IBAN
 

Query Suche IBAN über Kreditor oder Debitor

Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen  des Infosets Zugriff genommen beziehungsweise in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.

Die Felder werden hier in der Reihenfolge angegeben, wie diese dann auch in der Query ausgegeben werden sollen:


Auch hier sind wiederum zwei Query anzulegen:
 
Feld Query Kreditor Query Debitor
Query Suche über IBAN nach Kreditor/Debitor
IBAN TIBAN-IBAN (L,S) TIBAN-IBAN (L,S)
Kontonummer des Lieferanten bzw. Kreditors
Debitorennummer
LFBK-LIFNR (L,S)
 
KNBK-KUNNR (L,S)
 
Name 1 LFA1-NAME1 (L) KNA1-NAME1 (L)
Postleitzahl LFA1-PSTLZ (L) KNA1-PSTLZ (L)
Ort LFA1-ORT01 (L) KNA1-ORT01 (L)
Bankschlüssel (BLZ) LFBK-BANKL (L) KNBK-BANKL (L)
Bankkontonummer LFBK-BANKN (L) KNBK-BANKN (L)

Damit ist eine entsprechende Suche möglich.Natürlich können im Bedarfsfall auch noch weitere Datenfelder mit in die Query eingepflegt werden.

Je nach Bedarf können natürlich auch weitere Felder als Listen- oder Selektionsfelder verwendet werden. Hierdurch ist auch ein vollständiges Kreditorenverzeichnis oder Debitorenverzeichnis als ALV Liste (Tabelle) möglich. Gerade beim Export nach Excel ist dieses ein erheblicher Unterschied zu den Standardtransaktionen S_ALR_87012086 (Kreditorenverzeichnis) und S_ALR_87012179 (Debitorenverzeichnis). Insbesondere da in einer Query auch Suchen über Felder möglich sind, die in der freien Abgrenzung nicht aufgeführt sind (als Beispiel ist dieses hier ja anhand der IBAN erläutert).

Ein Vorteil der Suche über die IBAN besteht auch durch die Möglichkeit der Platzhalter. So kann über eine Suche nach AT* (Ländercode Österreich) oder CH* (Ländercode Schweiz) nach allen Kreditoren/Debitoren mit einer österreichischen oder schweizerischen Bankverbindung gesucht werden.

Berichtszuordnung FK03, FBL1N bzw. FD03, FBL5N

Innerhalb der Querypflege (SQ01) kann nun noch über SPRINGEN->BERICHTSZUORDNUNG  über den Punkt Zeile hinzufügen (+) mittels anderer Berichtstyp eine Transaktion als Absprungtransaktion von der Query hinzugefügt werden. Hier bieten sich die Transaktionen FK03 - Kreditor anzeigen bzw. FD03 - Debitor anzeigen an. Eine weitere ebenfalls sinnvolle Zuordnung wären auch die Transaktionen FBL1N - Kreditoren Konto Posten anzeigen und FBL5N - Debitoren Konto Posten anzeigen. Hierdurch können nicht nur weitere Stammdaten angezeigt werden sondern auch die Einzelposten zum Kreditor / Debitor angezeigt werden.

Basis: SE93 kundeneigene Transaktion anlegen und Query transportieren


Wie im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" beschrieben kann dann noch eine kundeneigene Transaktion zum Beispiel ZIBANK und ZIBAND für diese Query angelegt werden. Ansonsten kann die Query, wie im Artikel "Transport von SAP Queries (DL/UL)" beschrieben als Datei zwischen SAP Systemen ausgetauscht werden.

Hinweis 2016 Tabellenänderungen im Rahmen S/4 HANA Finance

Mit der Einführung von S/4 HANA haben sich verschiedene Tabellen im Bereich Finance ebenfalls verändert. So befindet sich die Angabe der IBAN nicht mehr in der Tabelle TIBAN, sondern im Feld IBAN der Tabelle FCLM_BAM_AMD.

Weitere Tabellenänderungen sind im OSS Hinweis  1976487  festgehalten und sollten beim Wechsel nach HANA ebenfalls berücksichtigt werden. Vielen Dank für den Hinweis im Beitrag "Re: Stammdaten Kreditor anzeigen inklusive IBAN als Report" auf fico-forum.de an Alferd (advor180).

 

Hinweis

Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
Werbung
Schnelleinstieg in das Controlling (CO) mit SAP S/4HANA (📖)

Für 29,95 € direkt bestellen

Oder bei Amazon ** Oder bei Autorenwelt

Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Montag, 3. November 2014
19:41 Uhr

Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer

Wie im Artikel "ABAP Coding im Zusatzfeld für SAP Query" beschrieben wird eine Query bestehend aus Stammdaten zu CO (Innenaufträgen) und PSM-FM (Fonds inklusive Finanzierungszweck) erstellt.

Zur Erinnerung die Query besteht aus folgenden Feldern (basierend auf das Infoset im oben verlinkten Artikel).

Query Stammdatenliste Innnenaufträge und verknüpfte Fonds

Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen (bzw. Zusatzfelder) des Infosets Zugriff genommen beziehungsweise in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.

Die Felder werden hier in der Reihenfolge angegeben, wie diese dann auch in der Query ausgegeben werden sollen:


Auftragsstammdaten AUFK
Auftragsart (S) AUFK-AUART
Auftragsnummer (L,S) AUFK-AUFNR
Kurztext (L) AUFK-KTEXT
Verantwortliche Kostenstelle (L,S) AUFK-KOSTV
Kostenstellentexte CSKT
Beschreibung (L) CSKT-KTEXT
Auftragsstammdaten AUFK
Profitcenter (L,S)
AUFK-PRCTR
Profit-Center-Stammdaten Texte (CEPCT)
Allgemeine Bezeichnung (L) CEPCT-KTEXT
Zusatzfelder (die im Infoset angelegt wurden)
Finanzierungszweck (L,S)  FINUSE
Auftragsstammdaten AUFK
Arbeitsbeginn (L,S) AUFK-USER7
Arbeitsende (L) AUFK-USER8
Antragssteller (L) AUFK-USER0
Verantwortlicher (L) AUFK-USER2
Abteilung (L) AUFK-USER6
Externe Auftragsnummer (L) AUFK-AUFEX
Zusatzfelder (die im Infoset angelegt wurden)
Gesperrt (L)  GESPERRT
lokale Zusatzfelder

Lehreinheit  (L) 

Lokale Zusatzfeld Lehreinheit


Eine weitere Anforderung ist die Angabe der zugeordneten Lehreinheit zum Projekt. Diese soll sich aus der verantwortlichen Kostenstelle ableiten. Für die einzelnen Fachbereiche ist die Lehreinheit aus den ersten vier Ziffern der Kostenstelle ersichtlich. Teilweise gibt es jedoch einzelne Kostenstellen die einer anderen Lehreinheit zuzuordnen sind. Bei diesen soll das Feld Teletexnummer der Kostenstelle gepflegt werden. Neben den Fachbereichen sollen aber auch einzelne Einrichtungen ebenfalls einer Lehreinheit zugeordnet werden. Da es relativ mühsam wäre diese Information bei jeder Kostenstelle (oder im Innenauftrag) festzuhalten werden über die Funktionalität lokale Felder die einzelnen Fälle der Lehreinheit berechnet oder alternativ die verantwortliche Kostenstelle ausgegeben:

Hierzu gehen wir nicht in die Grundliste der Query (wo auch das Layoutdesign gepflegt wird) sondern wechseln innerhalb der Querypflege mit nächstes Bild (F6) auf die Feldauswahl der Query. Sofern wir uns noch in der Layoutpflege befinden kann über Zurück dorthin gewechselt werden.

Über
BEARBEITEN->KURZBEZEICHNUNG
kann für die einzelnen Felder eine Kurzbezeichnung eingestellt werden.
Nun werden rechts neben den Datenfeldern Eingabefelder für die Kurzbezeichnung angegeben. Hier erhalten nun folgende Felder eine Kurzbezeichnung:

Bei den Auftragsstammdaten:

Auftragsnummer -> AUFNR
Verantwortliche Kostenstelle -> KOSTV

Bei dem Kostenstellenstammsatz:
Teletexnummer -> TELETEX

Diese Kurzbezeichnung sind notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein eiegens Feld mit einer Formel anlegen.
Dieses geht über
BEARBEITEN->LOKALES FELD->ANLEGEN

Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden. Elegant wäre es natürlich, wenn wir im Infoset eine entsprechende leere Feldgruppe definiert hätten, es geht aber auch ohne.

Da sich die Lehreinheit aus der Kostenstelle berechnet sollten die folgenden Felder in der Feldgruppe Kostenstellenstammdaten angelegt werden.

1. Feld Lehreinheit aus Kostenstelle berechnen

Kurzbezeichnung KS_LE
Feldbezeichnung Lehreinheit_Kostenstelle
Überschrift LE Zuordnung Kostenstelle
Als Feldeigenschaften definieren wir die gleichen Eigenschaften wie TELETEX.

Danach legen wir eine Berechnungsvorschrift an. Dazu klicken wir auf "KOMPLEXE BERECHNUNG". Nun können wir drei Bedingungen und eine sonstige Alternative angeben.
Dieses nutzen wir wie folgt:

Bedingung
KOSTV => 10000  AND KOSTV <=19999  AND TELETEX = ''
Wobei 10000 bis 19999 für das Intervall der Kostenstellen der Fachbereiche steht. Ist also das Feld Teletex nicht gefüllt werden die ersten vier Stellen der Kostenstelle genommen.
Formel
KOSTV[3:6]*1

Bedingung
TELETEX <> ''
Formel
TELETEX

Sofern das Feld Teletexnummer gefüllt ist wird dieses in jeden Fall als Lehreinheit ausgewiesen.

Sonst:
KOSTV[3:10]*1

2. Feld Lehreinheit für bestimmte Bereiche berechnen

Das nächste lokale Feld bezieht sich dann auf bestimmte Bereiche, die ebenfalls einer Lehreinheit zugeordnet sind.
Kurzbezeichnung
BE_LE
Feldbezeichnung Lehreinheit_BE
Überschrift LE Zuordnung BE
Als Feldeigenschaften definieren wir die gleichen Eigenschaften wie KS_LE

Als Formeln können hier dann bestimmte Intervalle oder auch Einzelwerte einen Wert zugewiesen werden .

Beispiel:
Bedingung
KOSTV = 30815  AND TELETEX = ''
Formel
'LE 4321'

Sonst
''

3. Feld Lehreinheit


Das letzte lokale Feld bezieht sich dann auf die vorherigen Felder

Kurzbezeichnung
LE
Feldbezeichnung Lehreinheit
Überschrift Lehreinheit (virtuell)
Als Feldeigenschaften definieren wir die gleichen Eigenschaften wie TELETEX

Bedingung
BE_LE <> ''
Formel
BE_LE

Sonst
KS_LE

Alternativ könnten hier natürlich noch weitere Formeln hinterlegt werden.

Das Feld LE für die virtuelle Lehreinheit wird dann in der Query aufgenommen. Zur Kontrolle können natürlich auch das Feld Teletexnummer der verantwortlichen Kostenstelle ebenso wie die beiden Hilfsfelder KS_LE und  BE_LE übernommen werden.

Pflegeaufwand der virtuellen Lehreinheit

Insgesamt reduziert dieses den Pflegeaufwand zur Darstellung der virtuellen Lehreinheiten auf Kostenstellen deren Zuordnung zu einer Lehreinheit abweichend zur in der Kostenstellen verschlüsselten Nummerierung ist. Insbesondere zeigt sich hier auch der Vorteil eines sprechenden Schlüssel bei Stammdaten im Controlling.

Hinweis: Query Stammdaten CO Innenauftrag PSM-FM Fond

Dieser Artikel ist Teil einer Serie um Stammdaten von CO Innenaufträgen und PSM-FM Fonds miteinander zu verknüpfen.
  1. "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen"
  2. "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer"
  3. "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM"
  4. "Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE"
Grundsätzlich ist die Erweiterung einer Query über die verantwortliche Kostenstelle und die Bestimmung der Lehreinheit im Fachbereich durch Auslesen der Kostenstelle mit lokalen Zusatzfeldern ein Weg, der jedoch den Nachteil hat, dass in jeder Query erneut eine solche Prüfung zu ergänzen wäre. Eine elegantere Lösung ist es daher schon im Infoset die "virtuelle" Lehreinheit zu ermitteln. Die dahinter liegende Methode inclusive Coding ist im Artikel "Query über COEP, AUFK und FMFINCODE für Einzelposten Istkosten Innnenauftrag mit Stammdaten aus CO und PSM-FM sowie Spalten für Ertrag und Aufwand - Erster Teil Infoset als Datengrundlage" ausführlich beschrieben und gleichzeitig ein gutes Beispiel dafür, wie sich Query weiter entwickeln kann.


 

Hinweis:

Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
Werbung
Aktuelles von Andreas Unkelbach

unkelbach.link/et.reportpainter/

unkelbach.link/et.migrationscockpit/

Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


<< Frühere Einträge Spätere Einträge >>



* Amazon Partnerlink/Affiliatelinks/Werbelinks
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Hinauf






Logo Andreas-Unkelbach.de
Andreas Unkelbach Blog
ISSN 2701-6242

© 2004 - 2026 Andreas Unkelbach
Gießener Straße 75,35396 Gießen,Germany
andreas.unkelbach@posteo.de

UStID-Nr: DE348450326 - Kleinunternehmer im Sinne von § 19 Abs. 1 UStG

Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Linkedin Bluesky

Facebook Mastodon

Amazon Autorenwelt Librarything

Buchempfehlung
Controlling mit SAP S/4HANA – Customizing Kostenstellenrechnung

29,95 € Amazon* Autorenwelt

Espresso Tutorials

unkelbach.link/et.reportpainter/

unkelbach.link/et.migrationscockpit/

Privates

Kaffeekasse 📖 Wunschliste