SAP Jobsuche bei DV-Treff
WinniB
  • WinniB
  • SAP Forum - Neuling Thema Starter
vor 15 Jahre
Mahlzeit zusammen,

ich habe ein kleines Problem, soll über gewisse Artikel den Einkaufspreis so wie das Preisdatum gültig ab und gültig bis in Tabellenform, besser gesagt mit einem Query herausfinden. Jetzt stellt sich das Problem die Tabellen zu finden und dann auch noch richtig zu Verknüpfen.

Einfach wäre da ein FuBa, daher wollte ich fragen ob irgend wer einen bereitliegen hat? Oder auch eine andere Idee hat das Problem zu lösen?

Danke!
Förderer

mazu
  • mazu
  • SAP Forum - Guru
vor 15 Jahre

Mahlzeit WinniB

Ein Query mit den Tabellen EINA und EINE würde doch das Problem lösen.

Mit dem FuBa kann ich auch nicht dienen .

Viele Grüsse mazu


Wenn dir kalt is, geh in eine Ecke, da sind meist 90°

VIAC App Säule 3a Konto und nutze Vorteil-Code:

Code: uRVPvPa

 

WinniB
  • WinniB
  • SAP Forum - Neuling Thema Starter
vor 15 Jahre
Mahlzeit Mazu,

tja leider löst es das Problem insofern nicht, da das Preisdatum "gültig bis" zwar vorhanden ist aber das "gültig ab" in diesen Tabellen nicht vorkommt und das brauche ich auch. Oder hab ich irgendwas übersehen?

mfg
wreichelt
vor 15 Jahre

Hallo WinniB,

du brauchst die A017, dort steht dann das "gültig ab" drinnen.

Gruß Wolfgang

WinniB
  • WinniB
  • SAP Forum - Neuling Thema Starter
vor 15 Jahre
Hallo Wolfgang,

Danke erstmal. Das hab ich auch schon versucht, allerdings bekam ich beim einfügen der Tabelle "A017" folgende Meldung: "Die Tabelle A017 kann nicht in einem Join verwendet werden".

mfg WinniB
andros
vor 15 Jahre
Hallo winnie,

wir hatten vor einiger Zeit das gleiche Problem.

Wir haben danach die benötigten Tabellen über das Flag (in transparente Tabelle umwandeln) in den technischen Einstellungen umgestellt, und seither funktioniert es.
Wir haben keine Informationen über ein nachteiliges Verhalten finden können, ausser das eine transparente Tabelle wohl etwas mehr Platz benötigt.
Wie die Umstellung im Einzelnen ablief weiss ich leider auch nicht mehr. Ist schon ein paar Jahre her.
Gruss

Andreas

-----------------------------------

www.ZLex.de
vor 15 Jahre

Hallo Winnie,

folgender Tabellen-Join im InfoSet funktioniert bei mehrern Kunden von mir sehr erfolgreich:

- EINA Einkaufsinfosatz - allgemeine Daten

- EINE Einkaufsinfosatz - Einkaufsorganisationsdaten

- A017 Materialinfosatz (werksspezifisch)

- KONP Konditionen (Position)

- KONM Konditionen (Mengenstaffel 1-dimensional)

- MARA Allgemeine Materialdaten

Als Ausgangstabelle wird diee EINA verwendet, da hier mit den Feldern EINA-MATNR Materialnummer und EINA-LIFNR Kontonummer des Lieferanten die Selektion schön eingegrenzt werden kann. Weiterhin verwende ich zum selektieren noch EINA-INFNR Nummer des Einkaufsinfosatzes sowie EINA-LOEKZ Einkaufsinfo allgemeine Daten zum Löschen vorgemerkt.

An die EINA joine ich dann sowohl die EINE als auch die A017. Aus der EINE nehme ich dann EINE-INFNR Nummer des Einkaufsinfosatzes. Um die Performance zu steigern mappe ich dann noch die EINA mit der A017 über die Felder EINA-LIFNR zu  A017-LIFNR sowie EINA-MATNR zu A017-MATNR.

Achtung: Bei den automatisch gernierten Verknüpfungsbedingungen zwischen den Tabellen EINE und A017 werden vier Felder vorgeschlagen und zwar:

- EINE-EKORG zu A017-EKORG Einkaufsorganisation

- EINE-WERKS zu A017-WERKS Werk

- EINE-ESOKZ zu A017-ESOKZ Typ des Einkaufsinfosatzes und

- EINE-ERDAT Datum, an dem der Satz hinzugefügt wurde zu A017-DATBI Gültigkeitsende des Konditionssatzes

Die letzte Verknüpfung musst Du dann entfernen, ansonsten werden keine Einträge gefunden.

Die Verknüpfung zwischen den Tabellen A017 und der Tabelle KONP erfolgt über die Felder

A017-KAPPL zu KONP-KAPPL Applikation und A017-KNUMH zu KONP-KNUMH wieder einwandfrei.

Aus der Mara hole ich dann noch allgemeine Infos wie zum Beispiel die Warengruppe MARA-MATKL hinzu.

Die Vorschlagsverknüpfung zwischen EINE und A017 kommt zustande, da das Feld EINE-ERDAT und A017-DATBI

im Data Dictionary (SE11) die gleiche Domäne verwenden. Das Datenelement ist zwar unterschiedlich, jedoch beinhalten

beide Felder die Domäne "DATUM" - und diese Domäne ist als Datentyp DATS Länge 8 Dezimalstellen 0 bei beiden Feldern

gleich definiert. Die Vorschlagsverknüpfung wird vom InfoSet automatisch aufgrund der Domänen erzeugt.

 

Achtung: Sind zum Einkaufsinfosatz in der SAP Transaktion ME11 Staffeln angelegt, dann benötigst Du noch die

Tablle KONM. Jedoch findest Du in der Tabelle nur Einträge, wenn es auch Staffeln gibt. Auch dies klappt jedoch

immer hervorragend über die beiden Felder KONP-KNUMH zu KONM-KNUMH Konditionssatz sowie KONP-KOPOS

zu KONM-KOPOS Laufende Nummer der Kondition. Als Lösung einfah die Verknüpfung zwischen KONP und KONM

als left outer join definieren.

Im SAP Query Transaktion SQ01 belege ich dann noch die Selektionsvariante vor. Hier schließe ich gezielt gelöschte

Einkaufsinfosätze bei der Selektion bereits aus:

- EINA-LOEKZ  Einkaufsinfo allgemeine Daten zum Löschen vorgemerkt

- EINE-LOEKZ  Einkaufsinfo Einkaufsorgdaten zum Löschen vorgemerkt

- KONP-LOEVM_KO  Löschkennzeichen für die Konditionsposition 

Die drei Felder sind in der Selektionsvariante negativ susgegrenzt. Zusätzlich habe ich für den Anwender die Felder in

der Variante über "Felder ausblenden" nicht sofort sichtbar gemacht. Weiterhin habe ich für die anderen Selektionsfelder

in der Variante GPA ausschalten markiert, somit werden die Felder nicht immer aufgrund der SET-GET-Funktion vorbelegt.

 

So hoffe Du kannst nun die Materialpreise selektieren

 

 

 

 


Viel Erfolg

Stephan Kaleske

Autor: Query-Reporting mit SAP ERP

http://rcm-de.amazon.de/e/cm?t=wwwzlexde-21&o=3&p=8&l=as1&asins=3836214334&fc1=000000&IS2=1 <1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr ]

WinniB
  • WinniB
  • SAP Forum - Neuling Thema Starter
vor 15 Jahre
Hallo zusammen,

he super DANKE erstmal für die Hilfestellungen, ich werd mal schauen was ich umsetzten kann!

mfg Winni

pushover
vor 15 Jahre

Hallo Stephan,

Deine Erläuterungen bzgl. Query ist ja sehr ausführlich. Leider lässt sich bei uns (Release ECC 60 SAP_APPL 600 0014 SAPKH60014 Logistik und Rechnungswesen) lässt sich die Tabelle A017 nicht im Join verwenden. Es wird folgende Fehlermeldung ausgegeben.

Die Tabelle A017 kann nicht in einem Join verwendet werden

Meldungsnr. AQ501

Diagnose

1. Die ausgewählte Tabelle kann nicht mit Hilfe von SELECT-Anweisungen gelesen werden (z.B. weil es sich nur um eine Struktur ohne Datenbanktabelle handelt). Diese Tabelle kann deshalb auch nicht innerhalb eines Tabellen-Joins gelesen werden.

2. Die ausgewählte Tabelle ist eine Pool- oder eine Clustertabelle. Solche Tabellen dürfen nicht in einem Tabellen-Join verwendet werden.

Welches Release habt Ihr?

Für kurzes Feedback vorab vielen Dank.

Gruß pushover


SAP ECC60

Anwendungsbetreuer FI/CO

www.ZLex.de
vor 15 Jahre

Hallo pushover,

 

hier der aktuelle SAP Release-Stand über den Menüpfad System --> Status:

Softwarekomponente Release Level Höchste Support Package Kurzbeschreibung der Softwarekomponente

- SAP_APPL 600 0012 SAPKH60012 Logistik und Rechnungswesen

- SAP_HR 600 0045 SAPKE60045 Personalwirtschaft

- SAP_ABA 700 0019 SAPKA70019 Anwendungsübergreifende Komponente

- SAP_BASIS 700 0019 SAPKB70019 SAP Basiskomponente

- ST-PI      - SAP Solution Tools Plug-In

- PI_BASIS SAPKIPYM09 Basis Plug-In (PI_BASIS) 2006_1_700

- SAP_BW SAPKW70020 SAP NetWeaver BI 7.0

- SAP_AP SAPKNA7016 SAP Application Platform

 

Hab zusätzlich noch im Data Browser (SE16N) die Tabelle anggeschaut.

In der Tabelle DD02L SAP Tabellen sind für die A017 folgende Einträge vorhanden:

Feldname Wert Technischer Feldname Wert unkonvertiert

- Tabellenname A017 TABNAME A017
- Aktivierungsstand A AS4LOCAL A
- Version 0000 AS4VERS 0000
- Tabellenart TRANSP TABCLASS TRANSP

Tatsächlich im Rahmen der  Performance-Verbesserung wurde der Hinweis 856193 umgesetzt.

SELECTs auf Pooltabellen dauern sehr lange. Im SQL Trace (Transaktion ST05) sieht man, dass SQL-Platzhalter nicht nur am Ende des LIKE-Musters vorkommen.

Beispiel:
  SELECT * FROM KAPOL
    WHERE
        "TABNAME" = 'A017'
  AND  "VARKEY" LIKE '450M ZBR%0000012690LSE20A700         2   2   0%'
   ORDER BY "TABNAME" , "VARKEY"

Weitere Begriffe Pool, ATAB

Ursache und Voraussetzungen
Pool-Tabellen sind Konstrukte, die mehrere "logische" Tabellen in einer Datenbanktabelle bündeln. Jeder Zeile in einer logischen Pooltabelle entspricht eine Zeile in der Datenbanktabelle. Die Datenbanktabelle hat als Schlüssel den Tabellennamen der logischen Tabelle sowie den konkatenierten Schlüssel der logischen Tabelle in Spalte VARKEY. Die Daten befinden sich in der LONG RAW/BLOB Spalte VARDATA.
In Transaktion SE11 findet man in den Tabelleneigenschaften von logischen Pooltabellen die zugehörige Datenbanktabelle (Tabellenpool). Zu einem Tabellenpool kann mann alle logischen Pooltabellen mittels des Verwendungsnachweises in Transaktion SE11 finden.
Beispiele für Tabellenpools sind ATAB und KAPOL. In Pool ATAB liegen zum Beispiel Tabellen TCP00, TCP01, TCP02. Im Pool KPOL liegt zum Beispiel Tabelle A017.
Im ABAP greift die Anwendung via Open SQL auf die logischen Tabellen zu (im obigen Beispiel auf Tabelle A017), die Datenbankschnittstelle übersetzt die Anweisungen zu Statements für die Datenbanktabelle (KAPOL im Beispiel) - nur diese Datenbank-Statements sind im SQL Trace zu sehen.
Für den Zugriff auf logische Pooltabellen steht nicht der volle Open SQL Sprachumfang zur Verfügung. Für diesen Hinweis ist insbesondere wichtig, dass der ESCAPE-Zusatz beim LIKE nicht unterstützt wird.

Bei Zugriffen mit unvollständig spezifiertem logischen Schlüssel muss die Poolschnittstelle ein LIKE für Spalte VARKEY erzeugen. Dabei werden unter Umständen zu viele Sätze gelesen. Ein spezielles Modul in der Datenbankschnittstelle (die Postselektion) filtert die zu viel von der Datenbank gelesenen Sätze heraus.

Wenn nun bei unvollständig spezifiziertem logischem Schlüssel Daten in einem Schlüsselfeld selektiert werden sollen, die SQL-Platzhalter enthalten, so werden von der Datenbank unter Umständen sehr viel zu viele Daten gelesen, d.h. die die Ausführung des Statements dauert sehr lange, obwohl u.U. nur sehr wenige Sätze zurückgeliefert werden. Das geschieht auch dann, wenn beim SELECT auf die logische Tabelle in der WHERE Bedingung die Schlüsselspalte mit dem SQL Platzhalter mit einer Gleichheitsbedingung angegeben wurde (LOG_KEY1 = 'AB%C'). Dadurch, dass die Poolschnittstelle ein LIKE generieren muss, werten die Datenbanken den Platzhalter aus.

Lösung
Wenn möglich, sollten in den Schlüsseln von Pooltabellen mit sehr vielen Einträgen keine SQL-Platzhalter vorkommen.
Um herauszufinden, ob solche Platzhalter bereits im logischen Schlüssel von Pooltabllen vorkommen, müssen Sie Spalte VARKEY der physischen Pooltabelle prüfen, z.B.:
  SELECT TABNAME, VARKEY  FROM KAPOL WHERE
       TABNAME = 'A017'
   AND VARKEY LIKE '%#%%' ESCAPE '#'

Wenn es sich nicht vermeiden lässt, die Platzhalter in Schlüsselfeldern von sehr großen logischen Pooltabellen zu verwenden, und es dadurch zu Performaceproblemen kommt, empfehlen wir, die Pool-Tabelle in eine transparente Tabelle umzusetzen. Allerdings benötigt die Umsetzung bei einer großen Tabelle mit vielen Millionen Einträgen auch einige Zeit und sollte gut geplant sein sowie im Testsystem geprobt werden.

Habe in der Transaktion SE14 Utilities für Dictionary-Tabellen geschaut es wurden Änderungen vorgenommen. In dem Zusammenhang ist vielleicht noch der Hinweis 91335 interessant ME21 Performance Konditionstabelle A017 A018.

Ja, sorry, Lob an die Basis! Denke jedoch es handelt sich hier sogar um eine Modifikation. Ob Ihr diese Änderung auch wünscht, solltest Du mit der Basis abstimmen.


 

 


Viel Erfolg

Stephan Kaleske

Autor: Query-Reporting mit SAP ERP

http://rcm-de.amazon.de/e/cm?t=wwwzlexde-21&o=3&p=8&l=as1&asins=3836214334&fc1=000000&IS2=1 <1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr ]

pushover
vor 15 Jahre

Hallo Stephan,

vielen Dank für das schnelle Feedback. Wir werden auf keinen Fall die Tabelle als Transparente Tabelle umsetzen. Was passiert bei erneutem Releasewechsel oder Update? Ist mir zu heiß. Werden dann halt per Coding (entsprechend OSS-HW) in der Query die jeweiligen Daten lesen.

Gruß pushover


SAP ECC60

Anwendungsbetreuer FI/CO

downhillflo
vor 15 Jahre

Hallo Stephan,

vielen Dank für Deine ausführliche und verständliche Beschreibung. Ich baue gerade die Struktur unserer Infosätze inkl. Gültigkeiten, Staffeln, Zu- und Abschläge in einer Access DB nach für ca. 8000 A und B-Materialien nach. Ziel soll es sein den Preis der A und B-Materialien zu 2 verschiedenen Zeitpunkten zu vergleichen, z.b. 31.12.2008 und 01.01.2009. Nachdem ich in Access alle Daten in eine Tabelle zusammengefahren habe, habe ich die Tabelle in Excel importiert und bin mit verschiedenen Formeln auf ein brauchbares Ergebnis gekommen.

Nun meine Frage: Wir möchten das zukünftig für alle Materialien machen, d.h. mehrere Hunderttausend. Welche Datenbank eignet sich hierfür? Gut wäre, wenn möglichst wenig Programmieraufwand nötig wäre. Denke Access stößt bald an seine Grenzen. 

Danke schon mal.

Grüße,

Florian