Montag, 19. November 2012
17:13 Uhr
17:13 Uhr
Query Stammdatenvergleich Profit-Center und Auslesen von Textbestandteilen (Teilstring aus Variable)
Ausgangslage
Innerhalb der Profit-Center-Rechnung sind drei Arten von Profit-Center hinterlegt. Diese sind angelehnt an Kostenstellen geführt mit einen Buchstaben je Bereich.
Beispiel:
Kostenstelle 12345678
Profitcenter Bereich D: D12345678
Profitcenter Bereich L: L12345678
Profitcenter Bereich S: S12345678
Ziel ist es, dass das Feld Verantwortlicher innerhalb dieser drei Profit-Center identisch gepflegt ist.
Problem:
Angedacht ist eine Liste aller Profitcenter sortiert nach einer Kostenstelle. Problematisch ist dabei, dass den Profit-Center L* zwar eine Kostenstelle zugeordnet ist, den Bereichen D* und S* jedoch jeweils nur Innenaufträge zugewiesen sind. Entsprechend ist eine Auswertung anhand von Kostenstellen nicht möglich.
Lösung:
Da die Namenslogik vorgegeben ist (Bereich+Kostenstelle) kann jedoch mit Hilfe eines kundeneigenen Feldes innerhalb einer Query wie folgt vorgegangen werden.
Innerhalb der kundeneigener Felder in SAP Query ist es aber möglich auch mit Textfeldern Teile auszulesen. Hierbei können bei Textfeldern einzelne Bestandteile (Zeichenketten) ausgelesen werden. Bei bekannter Zeichenlänge kann hier der Textstring entsprechend ausgelesen werden. Im Beispiel könnte also die Kostenstelle ausgelesen werden, indem aus der Profit-Centernummer ab den 2. Zeichen alle Zeichen ausgelesen werden. Somit würde sowohl aus L12345678 als auch aus D12345678 die Kostenstelle 12345678 dargestellt werden.
Grundlage für die Auswertung von Profit-Center-Stammdaten sind die Tabellen CEPC und CEPCT.
Infoset definieren
Innerhalb der Transaktion SQ02 wird folgendes Infoset definiert. Hierfür wird als Datenquelle ein Tabellen-Join über Tabelle CEPC angelgt.
Es werden folgende Tabellen miteinander in Beziehung gesetzt:
Tabellen:
CEPC: Stammdatentabelle von Profit Centern
CEPCT: Profit-Center-Stammdaten Texte
Verknüpfungsbedingungen:
Die vorgeschlagenen Verknüpfungsbedingungen seitens SAP können direkt übernommen werden.
Damit sind alle Verknüpfungen der Tabellen erfolgt. Der Einfachheit halber können nun alle Feldgruppen/Datenfelder übernommen werden. Dieses hat den Vorteil, dass dieses Infoset auch für weitere Queries zur Verfügung steht. Alternativ könnte man auch nur die notwendigen Felder übernehmen. Innerhalb der Query können dann die Felder auch wieder eingeschränkt werden.
2.) Query definieren
Innerhalb der Query über das Infoset wird nun mit lokalen Feldern gearbeitet.
Hierzu gehen wir nicht in die Grundliste der Query (wo auch das Layoutdesign gepflegt wird) sondern innerhalb der Querypflege mit nächstes Bild (F6) auf die Feldauswahl der Query gewechselt.
Ü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:
Stammdatentabelle von Profit Centern
Profitcenter-> PCTR
Diese Kurzbezeichnung ist notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein eigens Feld mit einer Formel anlegen.
BEARBEITEN->LOKALES FELD->ANLEGEN
Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden.
Das lokale Feld hat folgende Eigenschaften:
Kurzbezeichnung KST
Feldbezeichnung Kostenstelle
Überschrift Kostenstelle
Unter Eigenschaften wird hier die gleiche Eigenschaften wie Feld PCTR
hinterlegt.
Unter Berechnungsvorschrift kommt nun folgende Formel:
PCTR[2:10]
Hierbei werden aus den Textfeld PCTR die Zeichen mit der Position 2 bis Position 10 (entspricht der maximalen Zeichenlänge des Feldes) ausgegeben.
Das erste Zeichen eines Textfeldes hat die Position 1, was in unseren Beispiel dann D,L oder S wäre.
In der Query kann nun dieses Feld verwendet werden um eine Sortierung der Stammdaten über die Kostenstelle zu erreichen.
Aufbau der Query
Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen Zugriff genommen bzw. in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.
Die Felder werden hier in der Reihenfolge angeben, wie diese dann auch in der Query ausgegeben werden sollen:
lokale Zusatzfelder
Kostenstelle (L) (kundeneigenes Feld)
Stammdatentabelle von Proftitcenter CEPC
PrCtr (L) CEPC-PRCTR
Profit-Center-Stammdaten Texte (CEPCT)
Kurztext (L) CEPCT-KTEXT
Langtext (L) CEPCT-LTEXT
Stammdatentabelle von Proftitcenter CEPC
Verantwortliche (L) CEPC-VERAK
Da alle Stammdaten kontrolliert werden sollen ist kein Selektionsfeld definiert.
Allerdings bietet sich an, über die Sortierfelder (durch Markieren der Sortierfeldbox und Ziehen des Feldes Kostenstelle (mit den Beispielwert) auf den entsprechenden Kasten) das Feld Kostenstelle direkt als Summierungsfeld zu verwenden. Hierdurch erscheinen die Profitcenter D12345678, L12345678 und S12345678 direkt unterinander.
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.
Innerhalb der Profit-Center-Rechnung sind drei Arten von Profit-Center hinterlegt. Diese sind angelehnt an Kostenstellen geführt mit einen Buchstaben je Bereich.
Beispiel:
Kostenstelle 12345678
Profitcenter Bereich D: D12345678
Profitcenter Bereich L: L12345678
Profitcenter Bereich S: S12345678
Ziel ist es, dass das Feld Verantwortlicher innerhalb dieser drei Profit-Center identisch gepflegt ist.
Problem:
Angedacht ist eine Liste aller Profitcenter sortiert nach einer Kostenstelle. Problematisch ist dabei, dass den Profit-Center L* zwar eine Kostenstelle zugeordnet ist, den Bereichen D* und S* jedoch jeweils nur Innenaufträge zugewiesen sind. Entsprechend ist eine Auswertung anhand von Kostenstellen nicht möglich.
Lösung:
Da die Namenslogik vorgegeben ist (Bereich+Kostenstelle) kann jedoch mit Hilfe eines kundeneigenen Feldes innerhalb einer Query wie folgt vorgegangen werden.
Innerhalb der kundeneigener Felder in SAP Query ist es aber möglich auch mit Textfeldern Teile auszulesen. Hierbei können bei Textfeldern einzelne Bestandteile (Zeichenketten) ausgelesen werden. Bei bekannter Zeichenlänge kann hier der Textstring entsprechend ausgelesen werden. Im Beispiel könnte also die Kostenstelle ausgelesen werden, indem aus der Profit-Centernummer ab den 2. Zeichen alle Zeichen ausgelesen werden. Somit würde sowohl aus L12345678 als auch aus D12345678 die Kostenstelle 12345678 dargestellt werden.
Grundlage für die Auswertung von Profit-Center-Stammdaten sind die Tabellen CEPC und CEPCT.
Infoset definieren
Innerhalb der Transaktion SQ02 wird folgendes Infoset definiert. Hierfür wird als Datenquelle ein Tabellen-Join über Tabelle CEPC angelgt.
Es werden folgende Tabellen miteinander in Beziehung gesetzt:
Tabellen:
CEPC: Stammdatentabelle von Profit Centern
CEPCT: Profit-Center-Stammdaten Texte
Verknüpfungsbedingungen:
Die vorgeschlagenen Verknüpfungsbedingungen seitens SAP können direkt übernommen werden.
Damit sind alle Verknüpfungen der Tabellen erfolgt. Der Einfachheit halber können nun alle Feldgruppen/Datenfelder übernommen werden. Dieses hat den Vorteil, dass dieses Infoset auch für weitere Queries zur Verfügung steht. Alternativ könnte man auch nur die notwendigen Felder übernehmen. Innerhalb der Query können dann die Felder auch wieder eingeschränkt werden.
2.) Query definieren
Innerhalb der Query über das Infoset wird nun mit lokalen Feldern gearbeitet.
Hierzu gehen wir nicht in die Grundliste der Query (wo auch das Layoutdesign gepflegt wird) sondern innerhalb der Querypflege mit nächstes Bild (F6) auf die Feldauswahl der Query gewechselt.
Ü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:
Stammdatentabelle von Profit Centern
Profitcenter-> PCTR
Diese Kurzbezeichnung ist notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein eigens Feld mit einer Formel anlegen.
Teilstring aus einen Textstring innerhalb einer Query auslesen
Dieses geht überBEARBEITEN->LOKALES FELD->ANLEGEN
Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden.
Das lokale Feld hat folgende Eigenschaften:
Kurzbezeichnung KST
Feldbezeichnung Kostenstelle
Überschrift Kostenstelle
Unter Eigenschaften wird hier die gleiche Eigenschaften wie Feld PCTR
hinterlegt.
Unter Berechnungsvorschrift kommt nun folgende Formel:
PCTR[2:10]
Hierbei werden aus den Textfeld PCTR die Zeichen mit der Position 2 bis Position 10 (entspricht der maximalen Zeichenlänge des Feldes) ausgegeben.
Das erste Zeichen eines Textfeldes hat die Position 1, was in unseren Beispiel dann D,L oder S wäre.
In der Query kann nun dieses Feld verwendet werden um eine Sortierung der Stammdaten über die Kostenstelle zu erreichen.
Aufbau der Query
Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen Zugriff genommen bzw. in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.
Die Felder werden hier in der Reihenfolge angeben, wie diese dann auch in der Query ausgegeben werden sollen:
lokale Zusatzfelder
Kostenstelle (L) (kundeneigenes Feld)
Stammdatentabelle von Proftitcenter CEPC
PrCtr (L) CEPC-PRCTR
Profit-Center-Stammdaten Texte (CEPCT)
Kurztext (L) CEPCT-KTEXT
Langtext (L) CEPCT-LTEXT
Stammdatentabelle von Proftitcenter CEPC
Verantwortliche (L) CEPC-VERAK
Da alle Stammdaten kontrolliert werden sollen ist kein Selektionsfeld definiert.
Allerdings bietet sich an, über die Sortierfelder (durch Markieren der Sortierfeldbox und Ziehen des Feldes Kostenstelle (mit den Beispielwert) auf den entsprechenden Kasten) das Feld Kostenstelle direkt als Summierungsfeld zu verwenden. Hierdurch erscheinen die Profitcenter D12345678, L12345678 und S12345678 direkt unterinander.
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.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Query Stammdatenvergleich Profit-Center und Auslesen von Textbestandteilen (Teilstring aus Variable)« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 19.11.2012, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=366 (Abgerufen am 7.11.2024)
3 Kommentare - Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn