Andreas Unkelbach
Werbung


Montag, 19. November 2012
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.

Teilstring aus einen Textstring innerhalb einer Query auslesen

Dieses geht über

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:

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 Rezenssionen und Bestellmöglichkeit zu finden.
Espresso Tutorial - die digitale SAP Bibliothek

Tags: Query CO

3 Kommentare - - SAP

Artikel datenschutzfreundlich teilen

🌎 Facebook 🌎 Twitter 🌎 Google
Diesen und weitere Texte von finden Sie auf http://www.andreas-unkelbach.de


Kommentare

xdyrnrbhbcr am 12.10.2014 um 08:07 Uhr
Meine Rettung!


S. am 5.10.2018 um 11:33 Uhr
Hallo Andreas,

wie kann ich innerhalb der Query mit einem lokalen Feld aus einem Datumsfeld "01.01.2018" ein Periode/Jahr-Feld "01.2018" machen? Habe zunächst versucht, aus einem Monats- und einem Jahresfeld eine Verknüpfung zum machen, aber egal, wie ich den Punkt in der Mitte darstelle, z.B. . zwischen den Feldern, SAP akzeptiert es nicht. Dann habe ich aus dem Datumsfeld ein Textfeld gemacht, um anschließend mit [n1:n10] zu experimentieren, geht aber auch nicht, es kommt nie 01.2018 dabei heraus. Wäre toll, wenn Du einen Tipp hättest, wie 1. so ein Perioden/Jahr-Feld erstellt werden kann und 2. wie zwei Felder verknüpft werden können mittel lokalem Feld. Vielen Dank im Voraus.
Viele Grüße
S.


Andreas Unkelbach Homepage am 5.10.2018 um 11:42 Uhr
Hallo S.,

hier sollte per Zusatzfeldcoding und über den Funktionsbaustein DATE_TO_PERIOD_CONVERT das gewünschte Ergebnis erzielt werden können.

Ein Zusatzfeldcoding ist im Infoset zu ergänzen. Einige Beispiele dazu habe ich in der Anleitung zur Erstellung mit Query (siehe Ende des Artikels erläutert).

Bisher habe ich eher im Artikel "Umgang mit lokalen Datumsfeldern in Queries" auf https://www.andreas-unkelbach.de/blog/?go=show&id=353 mich mit Datumsfeldern bemüht.


Sofern nur mit der Grundliste (Query) und nicht per Coding im Infoset gearbeitet werden soll würde ich nach einer Verknüpfung von Textfeldern schauen. Statt der ABAP Anweisung CONCENTATE die Elemente MONAT "." und JAHR als einen zusammengefügten Text erstellen. Sollten hier auch andere Möglichkeiten des Verknüpfen von Strings gegeben sein.

Auf die Schnelle ist dieses nur ein kurzer Lösungsansatz, aber ggf. hilft dieses schon weiter.

Viele Grüße
Andreas Unkelbach


Auch kommentieren?


Beim Versenden eines Kommentars wird mir ihre IP mitgeteilt. Diese wird jedoch nicht dauerhaft gespeichert; die angegebene E-Mail wird nicht veröffentlicht: beim Versenden als "Normaler Kommentar" ist die Angabe eines Namen erforderlich, gerne kann hier auch ein Pseudonyme oder anonyme Angaben gemacht werden (siehe auch Kommentare und Beiträge in der Datenschutzerklärung).

Eine Rückmeldung ist entweder per Schnellkommentar oder (weiter unten) als normalen Kommentar möglich. Eine persönliche Rückmeldung (gerne auch Fragen zum Thema) würde mich sehr freuen.

Schnellkommentar (Kurzes Feedback, ausführliche Kommentare bitte unten als normaler Kommentar)

Name (sofern kein Name angegeben wird erscheint Anonym):



Ich nutze zum Schutz vor Spam-Kommentaren (reine Werbeeinträge) eine Wortliste, so dass diese Kommentare nicht veröffentlicht werden. Sollte ihr Kommentar nicht direkt veröffentlicht werden, kann dieses an einen entsprechenden Filter liegen.

Im Zweifel besteht auch immer die Möglichkeit eine Mail zu schreiben oder die sozialen Medien zu nutzen. Meine Kontaktdaten finden Sie auf »Über mich«. Ansonsten antworte ich tatsächlich sehr gerne auf Kommentare und freue mich auf einen spannenden Austausch.

Normaler Kommentar

Name:

E-Mail (wird nicht veröffentlicht und ist nicht erforderlich):

Homepage:

Kommentar:





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




Werbung



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

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter Google+

»Schnelleinstieg ins SAP Controlling (CO)« und »Berichtswesen im SAP ® ERP Controlling«
Privates

Kaffeekasse 📖 Wunschliste