Code: Alles auswählen.
SELECT fields FROM dbtab INTO itab WHERE x = y
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag (Insgesamt 3):
nickname8 • Icke0801 • 4byte
Nicht "wenn", sondern "falls", denn das habe ich nicht getan. Ich habe nicht von einem HANA-System, sondern nur von einer HANA-Datenbank gesprochen. Die kann man auch als ganz gewöhnliche relationale Datenbank nutzen, auch wenn man damit einiges verschenkt. Z.B. bei HCM geht es auch gar nicht anders, da HCM on HANA erst 2023 kommen soll.Und auch wenn er immer wieder behauptet, einem SELECT sei egal, ob ein konventionelles oder ein HANA-System angesprochen wird, wird das auch durch Wiederholung nicht richtiger. Wer sowas sagt, der hat sich die Dokumentationen und Anleitungen der SAP zu HANA noch nicht angesehen.
Womit man dann für jedes einzelne MARA-Feld, das man lesen möchte, effektiv wieder einen SELECT * macht wie in der guten alten Zeit...Mein Tipp: Fang damit an, solche Persistenzklassen zu bauen, in der du für jeden select eine Methode baust. Also eine Klasse für die MARA mit einer Methode read_from_matnr( ) - importing matnr returning mara, für die Selektion eines einzelnen MARA-Satzes anhand seiner MATNR.
Folgende Benutzer bedankten sich beim Autor ST22 für den Beitrag (Insgesamt 2):
ralf.wenzel • 4byte
Muss man nicht, da es auch anders geht. Aber es ist fast immer der sinnvollste Weg.
ralf.wenzel hat geschrieben: ↑20.05.2019 18:32Und der Vorteil der generischen Persistenzschicht ist, dass man die Persistenz komplett von der Geschäftslogik entkoppelt. Das heißt insbesondere auch, dass Änderungen in der Persistenz nicht zwangsläufig dazu führen, dass ich alle DB-Zugriffe anpassen muss. Im Grunde könnte man sogar Dateien hochladen über diese Persistenzschicht.
@Ralf: Leider hast du mit damit aber ein extrem ungünstiges Beispiel gebracht. Ich bin ja bei dir, wenn du eine Zwischenschicht einziehen willst um ein DAO zu generieren. Aber kann nicht so richtig nachvollziehen - wie D&P wahrscheinlich auch - was für Änderungen an der Persistenz geschehen müssten um mich zu zwingen größere DB-Zugriffsänderungen durchzuführen. Wann hat denn SAP irgendwann mal so etwas gemacht, dass ich auf die MARA ( oder irgend eine andere Standardtabelle ) nicht mehr lesend so zugreifen kann wie bisher.ralf.wenzel hat geschrieben: ↑21.05.2019 14:43Das Wort „Beispiel“ ist Dir geläufig? Ich schrieb: Wenn du einen MARA-Satz zur MATNR selektieren willst....
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain
Darum geht es ja gar nicht, es geht darum, dass viele mit Cluster-Tabellen gar nicht umgehen können - bei unserem Konzept muss man nichtmal wissen, was eine Clustertabelle ist. Man muss eigentlich überhaupt nicht wissen, was eine Tabelle ist und wie man darauf zugreift oder ob die Daten auf verschiedene Tabellen verteilt sind.black_adept hat geschrieben: ↑22.05.2019 09:50Und wenn es um Eigenentwicklungen geht: Ich kann mich nicht entsinnen, dass ich oder ein anderer Entwickler in den Umgebungen in denen ich Coding habe Clustertabellen für irgend etwas verwendet hat wo ich auf den Gedanken kommen könnte so etwas wie falsche SELECTs darauf auszuprobieren.
Also, wir haben hier ein agiles Projekt, wo sich die Tabellen in der Tat relativ häufig ändern. Zudem kann man schön Automatismen einbauen, die dann gleich für alle gelten (zum Beispiel das Füllen von "created_by..../updated_by...."-Feldern oder das Verhindern von Zugriffen mit leerer FOR ALL ENTRIES, Aufbauen einer zweiten DB-Verbindung für bestimmte Tabellen, um an der LUW vorbei Daten wegzuschreiben, etc.).black_adept hat geschrieben: ↑22.05.2019 09:50Und letztlich: Wenn ich auf die MARA zugreifen will schreibe ich normalerweise SELECT...FROM MARA. Du schreibst irgend eine Klassenbasierten Zugriff, der dann im Anschluss genau das Selbe macht. Die Wahrscheinlichkeit, dass SAP die MARA so ändert, dass ich jemals meine Selects anpassen müsste halte ich für mehr als unwahrscheinlich.
Und wie ein Aufruf eines klassenbasierten Zugriffs auf die MARA gegenüber einem direkten SELECT auf die MARA die Persistenz von der Geschäftslogik entkoppelt entzieht sich mir bei genauerem Nachdenken auch - zumindest wenn ich nur deine Erklärungen durchgehe.
SAP nennt so was BAPI.ralf.wenzel hat geschrieben: ↑22.05.2019 10:01Ich muss wissen: "Ich hätte gern die Labordaten zu folgenden Blutspendern: ... ". Wo die herkommen und wie die sich zusammensetzen, ist dabei völlig nebensächlich. Das ist insbesondere dann spannend, wenn dabei auf die DB eines fremden Systems zugegriffen wird, ohne dass der Entwickler, der die Daten bekommt, das überhaupt weiß.
Ihr entwickelt also eine robuste Schnittstelle auf eigene Tabellen, wo sich das eine oder andere noch ändern kann. Damit wird dann auch dein Entkopplungsargument klar. Aber dein Vorschlag an nickname8 zum Üben lief darauf hinaus eine Schnittstelle auf SAP-Standardtabelle MARA zu bauen. Das passt für mich einfach nicht gut zusammen...ralf.wenzel hat geschrieben: ↑22.05.2019 10:01Also, wir haben hier ein agiles Projekt, wo sich die Tabellen in der Tat relativ häufig ändern. Zudem kann man schön Automatismen einbauen, die dann gleich für alle gelten (zum Beispiel das ... )