Code: Alles auswählen.
DATA: BEGIN OF kunde_und_gesellschafter,
kunnr TYPE kunnr,
vbund TYPE rassc,
END OF kunde_und_gesellschafter.
SELECT kunnr, vbund FROM kna1
INTO CORRESPONDING FIELDS OF @kunde_und_gesellschafter
FOR ALL ENTRIES IN @gt_nast
WHERE kunnr = @gt_nast-parnr.
LOOP AT gt_nast ASSIGNING FIELD-SYMBOL(<nachricht>)
WHERE parnr = kunde_und_gesellschafter-kunnr.
<nachricht>-vbund = kunde_und_gesellschafter-vbund.
ENDLOOP.
ENDSELECT.
Code: Alles auswählen.
TYPES: BEGIN OF kunde_und_gesellschafter,
kunnr TYPE kunnr,
vbund TYPE rassc,
END OF kunde_und_gesellschafter.
DATA kunde_und_gesellschafter TYPE HASHED TABLE OF kunde_und_gesellschafter WITH UNIQUE KEY kunnr.
SELECT kunnr vbund INTO TABLE kunde_und_gesellschafter FROM kna1
FOR ALL ENTRIES IN gt_nast
WHERE kunnr = gt_nast-parnr.
LOOP AT gt_nast ASSIGNING FIELD-SYMBOL(<gt_nast>).
<gt_nast>-vbund = VALUE #( kunde_und_gesellschafter[ kunnr = <gt_nast>-parnr ]-vbund OPTIONAL ).
ENDLOOP.
FREE kunde_und_gesellschafter.
Das ist ein berechtigter Punkt.Im übrigen haut Dein Code nicht hin, weil dieselbe KUNNR bei mehreren Einträgen der gt_nast als Partner vorkommen könnte. Schon deshalb musst Du über die gt_nast loopen
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag (Insgesamt 2):
abuma • Thomas R.
Tatsächlich wird ja sogar angenommen, dass die Entropie im Universum laufend zunimmt, dass es sich dabei sogar um ein Naturgesetz handelt.So wie die Thermodynamik Entropie als chaotischen Energiezustand definiert, definiert Zilberfeld Entropie als Chaos im Coding.
Das trifft es nämlich ziemlich gut. Wer sich mit Thermodynamik ein bisschen auskennt, weiß das Entropie bei allen Umwandlungen von thermischer in mechanischer Energie entsteht (Verbrennungsmotoren usw.).
Ist das wirklich so, oder handelt es sich dabei nur um Werbemärchen? Wenn ich mir anschaue, was mein 17 Jahre alter Diesel verbraucht und was PS-gleiche Diesels heute verbrauchen, dann ist da nicht wirklich ein Unterschied. Wenn überhaupt, sind die Unterschiede marginal. Man kann nun mal nur begrenzt viel aus solch Verbrennung herausholen, und vor 20 Jahren hatte der Dieselmotor bereits viele Jahrzehnte Entwicklungszeit auf dem Buckel und war durchaus als ausgereift einzuschätzen.Wenn wir unsere Motoren von vor 20 Jahren mit den heutigen vergleichen, hat sich der Verbrauch pro PS um einiges reduziert und damit auch die erzeugte Entropie.
Zu großen Teilen hast Du recht, und gerade die neue 7.40-Syntax hilft hier sehr. Es gibt allerdings auch große Bereiche, in denen die Neuerungen ihre gewünschte Wirkung verfehlt haben oder sich sogar als kontraproduktiv erweisen. Ein gutes Beispiel ist ABAP OO. Die Idee ist, durch Kapselung und Abstraktion komplexe Codeprobleme beherrsch- und wartbar zu machen, und richtig eingesetzt ist dies auch möglich. ABAP OO ist aber so gestaltet, dass es auch erhebliche Nachteile gegenüber der klassischen prozeduralen Programmierung bietet, Nachteile, die meines Erachtens problemlos vermeidbar gewesen wären. Das fängt mit der erzwungenen Trennung von Definition und Implementation an, deren Rechtfertigung rein akademischer Natur ist und die in der Praxis lediglich bewirkt, dass man dort, wo eine Unterroutine ausprogrammiert ist, nicht mehr sieht, welche Parameter rein- und rausgehen (was bei einer klassischen Formroutine immer am Anfang steht). Das hat dazu geführt, dass in der SE24 mit hohem Aufwand eine optische Darstellung gebaut worden ist, bei der man die Parameter immer eingeblendet bekommt (für den Preis verschenkten Bildschirmplatzes). In Eclipse kann man dies nicht nutzen; da muss man immer am anderen Ende des Codes nachsehen, wie die Schnittstelle beschaffen ist.Genau das ist auch in der ABAP-Entwicklung zu beobachten. Es gibt einen rasanten technischen Fortschritt, der es uns ermöglicht, sauberer und nachhaltiger zu entwickeln und damit Herr über eine schnell wachsende Menge Codings zu bleiben und der uns dabei hilft, dass der Code nicht irgendwann zum einem reinen Chaos verkommt.
Code: Alles auswählen.
LOOP AT gt_nast ASSIGNING FIELD-SYMBOL(<gt_nast>).
<gt_nast>-vbund = VALUE #( kunde_und_gesellschafter[ kunnr = <gt_nast>-parnr ]-vbund OPTIONAL ).
ENDLOOP.
FREE kunde_und_gesellschafter.
Der Weg, wie man auf sowas kommt, besteht darin, dass Du Dir überlegst, was Du machen würdest, wenn Du der Computer wärst, Deine internen Tabellen auf einem Zettel zu stehen hättest und die von Dir gewünschte Tätigkeit händisch abwickeln würdest. Da weißt Du intuitiv, wie Du da rangehen würdest. Und genau das musst Du als ABAP-Befehle niederschreiben.Ich weiß zwar noch nicht so ganz, wie ich auf folgenden Teil hätte selber kommen sollen
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Sonne1234