"Neue" Befehle im ABAP - wer verwendet diese

Getting started ... Alles für einen gelungenen Start.
186 Beiträge • Vorherige Seite 9 von 13 (current) Nächste
186 Beiträge Vorherige Seite 9 von 13 (current) Nächste

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
CHECK ist doch fast neu. Gibt es erst seit Release 4.2B.
Im ABAP3 ging das aber auch schon - hieß bloß nicht so.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
DeathAndPain hat geschrieben:
Das hat mich schon vor etlichen Jahren geärgert ("rufe einen Funktionsbaustein, dessen Namen in einer Variable steht" - und der irgendwo im Customizing gepflegt ist, und man darf sich dann auf die Suche begeben).
Gebe ich Dir recht, aber das kriegt man in aller Regel noch raus. Notfalls setzt man sich da einen Breakpoint hin, dann hat man den FB-Namen, oder man verfolgt zurück, wo der Variablenname herkommt. Das ist mit Debuggermitteln in aller Regel noch beherrschbar (jedenfalls wenn der Name nicht per IMPORT FROM MEMORY vom Himmel fällt, weil man nicht weiß, wann und von wem er ins Memory geschoben worden ist).
Auch das (IMPORT FROM MEMORY) hab ich schon erlebt. Der Punkt ist: Jedesmal, wenn ich suchen muss, verliere ich Zeit. Und dann schreibe ICH mir auf, wo es steht, dann kann es auch gleich der machen, der sich den Kram ausgedacht hat. Das sage ich jedem Neuling: Wenn du was suchen musst, was nicht offensichtlich ist: Kommentar ins Coding schreiben! (ohweh, ich wiederhole mich schon wieder)
DeathAndPain hat geschrieben:Funktionsbausteine mag ich sehr gerne, weil sie technisch gut implementiert sind. Übersichtliche Schnittstelle, die bei Pflege direkt einen exzellent lesbaren Kommentar am Anfang des Codes triggert (wodurch sie auch in Eclipse gut lesbar zur Verfügung steht), gute Dokumentationsmöglichkeiten für den Baustein und sogar für jeden einzelnen Parameter. Finde ich angenehmer zu handhaben als globale Klassen. Die haben ihre Berechtigung, sobald es komplexer wird, aber in vielen Fällen ist ein FB ausreichend und von der Handhabung besser verständlich.
Das Problem bei Funktionsbausteinen ist, dass die normale Syntaxprüfung die Typen der Schnittstelle nicht verprobt, das dumpt dann erst zur Laufzeit. Darin sehe ich einen erheblichen Vorteil einer Klasse (die sagt mir gleich, dass der übergebene Wert nicht zum Parameter passt), und das liegt daran, dass die Methodenschnittstelle ein Teil der Klassenschnittstelle ist.

Die Schnittstelle am Anfang des Codings ist insofern verwirrend, als dass man sie dort nicht pflegen kann, sie ist wirklich nur ein Kommentar. Anfängern muss man sowas oft sagen, sonst pflegen die im Editor vermeintlich die Schnittstelle und wundern sich ;)

Die Dokumentationsmöglichkeiten in Klassen sind etwas anders - insbesondere würde ich hier eher auf ABAP Doc setzen statt auf die SAPscript-gebundenen Dokus im SAP. Gerade weil die in Eclipse eben nicht mehr zur Verfügung stehen, ABAP Doc steht direkt im Coding.
DeathAndPain hat geschrieben:Was mich an FBs etwas stört, ist die Einbettung in Funktionsgruppen. Funktionsgruppen sollte es IMHO gar nicht geben. Die nehme ich als Versuch wahr, Funktionsbausteine zu einer Art statischer Pseudoklassen zusammenzufassen, wobei die globalen Variablen der Funktionsgruppe die privaten Attribute sind. Dadurch kann man einen Baustein aufrufen, und dessen Verhalten hängt eben nicht nur von seiner wohldefinierten Schnittstelle ab, sondern auch davon, was ein anderer Baustein derselben Funktionsgruppe vorher gemacht hat. Das verletzt für mich die Idee der strikten Kapselung, die Funktionsbausteine eigentlich so klar und schön macht.
Funktionsbausteine kapseln nicht strikt, und dass sie das nicht tun, ist kein Fehler, sondern Konzept. Was für Sauereien man da mit "Dirty Assigns" zum Beispiel machen kann, ist so praktisch wie grausig - gerade aus sicherheitstechnischen Aspekten (wobei in Sachen Sicherheit ohnehin noch viel zu tun ist im SAP). Gerade die von dir erwähnten vielen Abhängigkeiten in großen Funktionsgruppen sind oft sehr intransparent.
DeathAndPain hat geschrieben:Gerade auch der Begriff "Funktionsbaustein" suggeriert für mich, dass ich was reinschiebe und basierend darauf was rausbekomme, ohne dass das Ergebnis auch noch davon abhängt, was der Hund des Nachbarn gestern zu Mittag gegessen hat.
An Begrifflichkeiten darf man sich im SAP nicht aufhängen, gerade bei alten Sachen. Auch ein REPORT kann heute weitaus mehr als Reporting. Ich kann mir im DDIC auch "Tabellen" anzeigen, die aber keine Tabellen sind, sondern die DDIC-Repräsentanz von etwas, das auf der DB eine Tabelle sein kann. ;)
DeathAndPain hat geschrieben:Trotzdem wäre es mir lieber, wenn es Funktionsgruppen nicht gäbe und man sich dafür darauf verlassen könnte, dass ein FB für sein Ergebnis nur die Informationen nutzt, die man ihm als Parameter übergibt.
Ich sag mal vereinfachend: Wenn du wirklich kapseln willst, nimm Klassen, keine Funktionsgruppen. Aber das ist dann auch ein anderes Konzept. Ich kenne viele statische Klassen, die einfach angelegt wurden, damit der Entwickler sagen konnte "ich hab das in OO gemacht", ohne überhaupt erklären zu können, was ein Objekt überhaupt ist. Ich hab vor einigen Jahren mal einen zweiten Entwickler einstellen wollen und was mir da so in Vorstellungsgesprächen an gefährlichem Halbwissen gegenübersaß, war so schlimm, dass ich es lieber gelassen habe.
DeathAndPain hat geschrieben:Mal eine ganz andere Frage: Zu Release 7.52 soll es wieder interessante Neuerungen geben. Unter anderem soll es endlich möglich sein, auf Dynproebene zu debuggen
Das kommt JETZT? Wo der Fokus (sinnvollerweise) auf UI5 liegen soll? Wer hat sich das denn ausgedacht? Ich finde (und fand immer schon) Dynpros überaus anstrengend, weil sie ein recht "schräges" Konzept verfolgen (ja, jetzt werden wieder einige schreiben wollen, wie modern das doch sei....). Und wenn man dann einen Barcodescanner mit Display integrieren will, ist man nahe dran, den Verstand zu verlieren. Unter UI5 ist das Teil einfach ein Endgerät mit einem Browser, fertig.


Ralf

PS: Zum Thema 7.52 hab ich noch nicht viel gefunden, scheint aber in Arbeit zu sein, schreibt er.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von black_adept (Top Expert / 4135 / 131 / 956 ) »
DeathAndPain hat geschrieben:Funktionsbausteine mag ich sehr gerne, weil sie technisch gut implementiert sind. Übersichtliche Schnittstelle, die bei Pflege direkt einen exzellent lesbaren Kommentar am Anfang des Codes triggert (wodurch sie auch in Eclipse gut lesbar zur Verfügung steht),...
Wusstest du eigentlich, dass die SE24 auch Schnittstellenkommentare generiert, wodurch sie in Eclipse gut lesbar zur Verfügung stehen? Dumm nur, dass das m.W. von Eclipse selber nicht unterstützt wird.

Beispiel: (Leider hier im Forum mit nicht dargestellten eckigen Klammern - daher als Quote statt als Code
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZZZZZZ=>MYMETHOD
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_BUKRS TYPE BKPF-BUKRS
* | [--->] IV_GJAHR TYPE BKPF-GJAHR
* | [--->] IV_BELNR TYPE BKPF-BELNR
* | [<-()] RV_EINSENDER TYPE KUNNR
* | [!CX!] ZCX_UTILITIES
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD MYMETHOD.

was hier kommt ist eigentlich egal
ENDMETHOD.
Edit: Quelltext reduziert, da das Wichtige in den Kommentarzeilen steht.
Zuletzt geändert von black_adept am 14.09.2017 14:11, insgesamt 2-mal geändert.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
black_adept hat geschrieben:Wusstest du eigentlich, dass die SE24 auch Schnittstellenkommentare generiert, wodurch sie in Eclipse gut lesbar zur Verfügung stehen? Dumm nur, dass das m.W. von Eclipse selber nicht unterstützt wird.
Nur im Mouseover.....


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von DeathAndPain (Top Expert / 1978 / 264 / 418 ) »
Das Problem bei Funktionsbausteinen ist, dass die normale Syntaxprüfung die Typen der Schnittstelle nicht verprobt, das dumpt dann erst zur Laufzeit. Darin sehe ich einen erheblichen Vorteil einer Klasse
Von der Sache her bin ich bei Dir, nur bei der Gewichtung habe ich eine deutlich andere Meinung. Was soll an diesem Vorteil "erheblich" sein, wenn einen das System schon beim ersten Ausprobieren (ich sage bewusst nicht "Test", denn einen solchen braucht es dazu noch nicht mal) glasklar auf den Fehler hinweist? Wenn die Probleme alle nur solcherart wären, dann könnten wir froh und glücklich sein!

Spannend finde ich hingegen, dass ich in einem fremden Code gesehen habe, wie jemand einen an einen Funktionsbaustein übergebenen Parameter, der in der Tat nicht auf demselben Datenelement basiert hat, vorher passend mit CONV( ) konvertiert hat, und der Editor hat an der Stelle eine Warnung geworfen, dass dies ein überflüssiger Einsatz von CONV( ) sei!
Die Schnittstelle am Anfang des Codings ist insofern verwirrend, als dass man sie dort nicht pflegen kann, sie ist wirklich nur ein Kommentar. Anfängern muss man sowas oft sagen, sonst pflegen die im Editor vermeintlich die Schnittstelle und wundern sich
Also das finde ich erst recht trivial und kein Problem. Zumal sowohl die SE38 als auch Eclipse Kommentare deutlich als solche hervorheben. Anfänger mögen das lernen müssen, aber was zählt, ist die tägliche Arbeit, und da ist das exzellent handhabbar.
Funktionsbausteine kapseln nicht strikt, und dass sie das nicht tun, ist kein Fehler, sondern Konzept.
Ich weiß, Funktionsgruppen gibt es nicht aus Zufall. Ich finde dieses Konzept nur halt nicht gut und hätte es lieber gesehen, wenn man auf die Funktionsgruppen verzichtet und die Datenversorgung von Funktionsbausteinen auf deren Schnittstelle festgenagelt hätte.
Ich sag mal vereinfachend: Wenn du wirklich kapseln willst, nimm Klassen, keine Funktionsgruppen.
Ach, in bezug auf das, was ich an FBs kritisiert habe, machen Klassen genau den gleichen Mist. Bei einer Methode ist es auch nicht so, dass Du Dich darauf verlassen kannst, dass die Methode ihr Ergebnis allein auf dem aufbaut, was Du ihr als Parameter mitgibst. Was beim FB die funktionsgruppenglobalen Felder sind, sind bei der Klasse die privaten Attribute. Du rufst die Klasse, die verwurstet bei der Bearbeitung Deine Inputparameter mit dem, was andere, zuvor gerufene Methoden derselben Klasse ihr geheim hinterlassen haben, und am Ende bekommst Du gleichfalls ein Ergebnis, das Du nicht nachvollziehen kannst, weil Du nicht weißt, was alles bei seiner Ermittlung eingeflossen ist.

In diesem Sinne ist Klasse = Funktionsgruppe, privates Attribut = funktionsgruppenglobale Variable und Methode = Funktionsbaustein.

Ich weiß, diese Darstellung ist extrem ketzerisch, aber der Fakt ist, dass man eine aufrufbare Subroutine, die insofern leicht zu verstehen ist, als man sich darauf verlassen (!) kann, dass sie nur über ihr definiertes Interface ihre Daten bekommt, in ABAP OO genauso wenig bekommt wie bei herkömmlichen Funktionsbausteinen. Ich finde private Attribute extrem widersinnig. Ein Objekt muss nicht nach außen publizieren, mit welchen Befehlen es arbeitet, aber ich sehe keinen Sinn darin, dass es geheime Informationen aufbewahrt, die die Beschaffenheit des Objektes verschleiern.

Wenn Du der OO-Doktrin folgst, dann wirst Du jetzt argumentieren, dass diese Geheimhaltung wichtig ist, weil sonst die Moral leidet, da Programmierer dann nämlich in unerwünschter Weise von außen diese Attrribute lesen, anstatt brav Methoden zu verwenden und die Kapselung zu respektieren. Aber die in der realen Welt existierende Programmiermoral im Umgang mit OO ist doch sowieso am Boden, weil OO dem schlampig arbeitenden Programmierer nämlich zahllose Möglichkeiten bietet, katastrophalen Code zu erzeugen. Von daher setzt eine sinnvolle Nutzung von OO sowieso voraus, dass man die Disziplin und den Sachverstand hat, korrekt im Geiste von OO zu entwickeln, und wenn man das tut, dann muss man auch nicht mit Schikanen wie verborgenen Attributen "erzogen" werden, die es einem erschweren, das Programm nachzuvollziehen.

Dass es von der Performance her auch schlechter ist, eine GET-Methode aufzurufen anstatt einfach ein Attribut zu lesen, sei hier nur am Rande erwähnt.

Begrüßen würde ich eine komplett attributfreie Form von Klassen, bei der man auf einen Blick erkennen kann, dass es sich um eine attributfreie Klasse handelt. Für viele Zwecke würde die ausreichen, und beim Lesen würde man allein an der Tatsache, dass es sich um eine attributfreie Klasse handelt, erkennen können, dass sämtliche relevanten Informationen in der Schnittstelle stehen und könnte sich so manche Nachforschung im Code sparen. Für komplexere Zwecke, für die man Attribute zwingend braucht, könnte man dann ja immer noch auf die herkömmlichen Klassen zurückgreifen.
Das kommt JETZT? Wo der Fokus (sinnvollerweise) auf UI5 liegen soll? Wer hat sich das denn ausgedacht?
Ich staune auch, aber auf der anderen Seite finde ich es auch sehr angenehm, mit Elementen zu arbeiten, die komplett in der SAP-Welt beheimatet sind und ohne Browser auskommen. Jetzt zum Beispiel ärgere ich mich, dass seit einigen Wochen durch ein Update des Firefox ESR (betrifft aber genauso den normalen Firefox) im Solution Manager keine Checkboxen mehr anklickbar sind! Wenn ich mir also im Solman Transportaufträge für Änderungsdokumente beschaffen möchte, dann muss ich immer Customizing- und Workbench-Auftrag nehmen, auch wenn ich genau weiß, dass ich nur einen von beiden brauchen werde. Ich könnte auf einen anderen Browser umsteigen, aber dazu habe ich auch keine Lust, zumal der FF ja als voll unterstützt gilt. Die SAP zuckt zu dem Problem mit dem Schultern. All solch Gefaxe hätte man nicht, wenn der Solman im SAPGui laufen würde.

Wie unendlich viele zusätzliche Probleme hat man sich damit eingehandelt, dass UI5 und Fiori browserbasiert sind! Ständig ärgert man sich über falsche Darstellungen, und die Fehlersuche ist dann viel aufwendiger, als wenn man in der ABAP-Welt bleiben würde. Klar, Fiori ermöglicht vieles, was im SAPGui nicht geht, insbesondere hinsichtlich moderner Optik und Unterstützung unterschiedlicher Darstellungsgeräte (Smartphone etc.). Aber dennoch finde ich die Frage legitim, für welche Anwendungen man das tatsächlich benötigt, statt aus Hypegründen alles und seinen Hudn in den Browser transferieren zu wollen.

Sowas hat man auch immer, wenn man externe Systeme anbindet. FPM-Formulare und generell das ganze Adobe Interactive Forms-Geraffel sind auch erheblich schwerer zu warten als die perfekt in ABAP eingebetteten Smartforms. Man muss also kein steinzeitliches SAPscript mehr machen, um in ABAP schöne Formulare zu erstellen.
Unter UI5 ist das Teil einfach ein Endgerät mit einem Browser, fertig.
Und wenn dieses Endgerät aus irgendeinem Grund nicht funktioniert, dann legt man sich die Karten und betet, dass es einen Hinweis dazu gibt, weil man sich selbst nicht mehr helfen kann.
Wusstest du eigentlich, dass die SE24 auch Schnittstellenkommentare generiert, wodurch sie in Eclipse gut lesbar zur Verfügung stehen?
Ja, ich glaube, ich habe das mal gesehen. Rein subjektiv finde ich das Interface der SE37 aber angenehmer als das der SE24.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel


Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
DeathAndPain hat geschrieben:
Das Problem bei Funktionsbausteinen ist, dass die normale Syntaxprüfung die Typen der Schnittstelle nicht verprobt, das dumpt dann erst zur Laufzeit. Darin sehe ich einen erheblichen Vorteil einer Klasse
Von der Sache her bin ich bei Dir, nur bei der Gewichtung habe ich eine deutlich andere Meinung. Was soll an diesem Vorteil "erheblich" sein, wenn einen das System schon beim ersten Ausprobieren (ich sage bewusst nicht "Test", denn einen solchen braucht es dazu noch nicht mal) glasklar auf den Fehler hinweist?
Du schreibst ein Programm und rufst einen Funktionsbaustein auf, dabei vertust du dich beim Typen des Parameters. Aktivieren, Starten, BÄNG! Deinen Testfall hast du dann im Zweifel schon verschossen.

Du schreibst ein Programm und rufst eine Methode auf, dabei vertust du dich beim Typen des Parameters. Aktivieren, Fehlermeldung. So wie bei jedem anderen Syntaxfehler auch.

Wie attributfreie Klassen oder Funktionsgruppen funktionieren sollen, weiß ich allerdings nicht. Irgendwie musst du doch den Zustand speichern.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Der Ketzer hat sowas von Recht, de sollte Papst werden ;)

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
Daniel hat geschrieben:Der Ketzer hat sowas von Recht, de sollte Papst werden ;)
Ach, wer Ketzer ist und wer nicht und wer Papst werden sollte, das ist immer abhängig davon, mit wem man spricht und wann man das tut. Das ist hier nicht anders als anderswo. Nehmen wir die angeblich religiös anmutende Diskussion um die Ungarische Notation, die wir hier ja geführt haben. Die war von mir keineswegs religiös motiviert, sondern rein pragmatisch. Das zeigte sich in einem Gespräch, das ich neulich geführt habe:

Ich bin neulich gefragt worden:
Warum reitest du so auf der Ungarischen Notation herum? Lass uns das doch festlegen!
Meine Antwort war:
"Das ist einfach nicht wichtig genug. Du verschwendest viel Zeit drauf, in Programmierrichtlinien festzulegen und im System zu verproben, welches Präfix man unter welchen Umständen verwenden muss - aber das macht nix kaputt, wenn man davon abweicht. Deine ungleichen Feldnamen im DDIC für gleiche Inhalte* haben uns Dumps und schwer nachvollziehbare Schiefstände eingebracht, nach deren Ursache ich zwei Stunden gesucht habe - DAS macht was kaputt und DARUM ist DAS wichtig, und nicht die Frage der Präfixe vor lokalen Variablen".
Es ist also nicht so, dass ich das will, weil ich das will, sondern weil es in meinen Augen triftige Gründe dafür gibt, seinen Fokus auf andere Bereiche zu richten - Codingqualität definiere ich aus eben diesen Gründen anders als über Präfixe.

Würden Ketzer verbrannt, wäre ich schon vor vielen Jahren vom Autonomen Projektbereich der Uni Paderborn angezündet worden. Dass das unterlassen wurde, mag der eine oder andere heute vielleicht bedauern, die meisten finden es gut. :D

* Stichwort "Default Component Name"

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Bei der religiösen Diskussion ging es aber gar nicht um die Präfixe
(die ich für den größten Schwachsinn der Menschheitsgeschichte halte).

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
Daniel hat geschrieben:Bei der religiösen Diskussion ging es aber gar nicht um die Präfixe
(die ich für den größten Schwachsinn der Menschheitsgeschichte halte).
Doch, da wurde es mir auch unterstellt, wenn auch ausnahmsweise nicht von dir. Bei dir ist es OO - wir haben halt gänzlich voneinander abweichende Arten der Programmierung. Das ist ja auch OK, das Problem ist die fehlende Konsistenz. Einer (idealerweise beim Kunden) muss den Hut auf haben und sagen "SO machen wir das hier". Ein Teil wird auch nicht mal so und mal so in ein Auto eingebaut (je nachdem, wer gerade am Band steht), da gibt es definierte, detaillierte Qualitätskriterien. Da legt einer fest "SO wollen wir das hier haben" und jeder hält sich dran.

Dafür bedarf es eines Menschen, der für das Coding in seiner Gesamtheit verantwortlich ist.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von DeathAndPain (Top Expert / 1978 / 264 / 418 ) »
Wie attributfreie Klassen oder Funktionsgruppen funktionieren sollen, weiß ich allerdings nicht. Irgendwie musst du doch den Zustand speichern.
Nein, das ist ja der Witz, dass das gute Stück gar keinen Zustand haben soll! In vielen Fällen reicht das aus und macht den Code leichter verständlich bzw. überprüfbar.

Wenn ich zum Beispiel sage:

Code: Alles auswählen.

CALL FUNCTION 'GET_MATERIAL_TEXT'
  EXPORTING MATNR = MARA_MATNR
  IMPORTING MTEXT = TEXT_DES_MATERIALS.
dann soll mir der FB zum Material den Text liefern. Und da will ich sicher sein, dass er den nur anhand der von mir übermittelten MARA-MATNR ermittelt und nicht manchmal auf russisch, weil vorher jemand den Funktionsbaustein FOOL_THE_DEVELOPER aus derselben Funktionsgruppe aufgerufen und damit einen hier völlig unnützen Zustand in der Funktionsgruppe versteckt hat!

Zustände können nützlich sein, aber ich behaupte, dass man sie sogar bei der Mehrzahl der Funktionsbausteine nicht braucht. In dem Moment, in dem ich das beim Lesen des Funktionsbausteins syntaktisch zugesichert bekomme (etwa weil der FB einen Typ "stateless" hat), weiß ich schon mal, dass eine riesige Quelle von Fehlern und Unsicherheiten ausgeschlossen ist und ich mich allein auf das, was ich in der Schnittstelle sehe, verlassen kann. Zugleich vereinfacht sich das Testen des Bausteins dramatisch!

Gleiches gilt für statische Klassen.

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von ralf.wenzel (Top Expert / 3955 / 202 / 281 ) »
DeathAndPain hat geschrieben:Zustände können nützlich sein, aber ich behaupte, dass man sie sogar bei der Mehrzahl der Funktionsbausteine nicht braucht. In dem Moment, in dem ich das beim Lesen des Funktionsbausteins syntaktisch zugesichert bekomme (etwa weil der FB einen Typ "stateless" hat), weiß ich schon mal, dass eine riesige Quelle von Fehlern und Unsicherheiten ausgeschlossen ist und ich mich allein auf das, was ich in der Schnittstelle sehe, verlassen kann. Zugleich vereinfacht sich das Testen des Bausteins dramatisch!
Richtig. Wenn es einen statuslosen Typ gäbe (parallel zum jetzigen), könnte das für bestimmte Einsatzbereiche praktisch sein, davon hast du mich gerade überzeugt.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von DeathAndPain (Top Expert / 1978 / 264 / 418 ) »
Kommt ein bisschen spät, aber:
Daniel hat geschrieben:CHECK ist doch fast neu. Gibt es erst seit Release 4.2B.
Im ABAP3 ging das aber auch schon - hieß bloß nicht so.
Bist Du Dir da ganz sicher? Ich könnte schwören, dass ich CHECK von Anfang an benutzt habe, und das war Release 3.1i. Von dort aus haben wir damals direkt auf 4.7 upgegradet (ja, das ging und war offiziell supportet!), so dass ich ja sonst erst sehr spät mit dem CHECK hätte anfangen können. Und ich glaube, dass ich das wüsste, wenn ich so lange ohne ihn hätte auskommen müssen.

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Das Release 3.1I war doch schon R/3 ;)
In 4,2B gab es ABAP IV erstmalig ...
Davor war ABAP 3 - der nichts anderes als
ein Sammelsurium von Assembler-Macros
war. Später auch durch Sprachelemente
realisiert - aber weiterhin in Assembler
umgesetzt.

Re: "Neue" Befehle im ABAP - wer verwendet diese

Beitrag von DeathAndPain (Top Expert / 1978 / 264 / 418 ) »
Ich bin jetzt nicht ganz sicher, was Du mit "4,2B" meinst. Ich hätte gedacht, ein 4er-Release, das dann offensichtlich nach 3.1i gekommen wäre.

Auf der anderen Seite ist meine Erinnerung, dass nach 3.1i 4.0 und dann gleich 4.5 gekommen ist.

Wie dem auch sein mag, 3.1i war irgendwo um das Jahr 2000, ist also schon richtig lange her. Und zumindest seitdem gibt es den CHECK-Befehl.

Spannender finde ich da schon die Betrachtung der Syntax WITH HEADER LINE. Die gab es nämlich in 3.1i definitiv noch nicht; da ging nur OCCURS. Sie muss später gekommen sein, obgleich die SAP dann ja alsbald Kopfzeilen deprecated hat.

Vergleichbare Themen

2
Antw.
6485
Views
Alle ABAP Befehle online?
von MarkusW » 05.04.2007 08:22 • Verfasst in ABAP® für Anfänger
2
Antw.
1585
Views
ABAP Tabellen in SQL-Befehle exportieren
von cmalthaner » 15.08.2014 22:16 • Verfasst in ABAP® für Anfänger
4
Antw.
5991
Views
SQL Befehle direkt absetzen
von Nautilus » 21.03.2006 15:53 • Verfasst in Basis
3
Antw.
2088
Views
screen befehle in der Ablauflogik
von JohnLocklay » 22.11.2016 10:21 • Verfasst in ABAP® für Anfänger
5
Antw.
3968
Views
Wie kann ich in SAPSCRIPT HTML Befehle eingeben.?
von SAPDIDI2 » 18.07.2007 16:11 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

IBAN und BUT0BK
vor 3 Tagen von waltersen gelöst 10 / 11501
SAPGui 8.00 32 Bit vs 64 Bit
vor 5 Tagen von DeathAndPain 3 / 4453
Programm per Fremdtransport einspielen
vor 5 Tagen von IHe 3 / 3769
Splitter-AlV erscheint nicht
vor 5 Tagen von qyurryus 2 / 3765

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

IBAN und BUT0BK
vor 3 Tagen von waltersen gelöst 10 / 11501
SAPGui 8.00 32 Bit vs 64 Bit
vor 5 Tagen von DeathAndPain 3 / 4453
Programm per Fremdtransport einspielen
vor 5 Tagen von IHe 3 / 3769
Splitter-AlV erscheint nicht
vor 5 Tagen von qyurryus 2 / 3765