Grundsatzfrage: Deklarationen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Hi,

ich hab mal wieder eines meiner grundsätzlichen Themen: Was ist der bessere Weg / welchen Weg geht ihr?

Variante 1: Direkte Deklaration

Code: Alles auswählen.

data: 
  returntab type standard table of bapiret2.
Variante 2: "Frei Schnauze" ;)

Code: Alles auswählen.

types:
  returnln type bapiret2.
data:
  returntab type standard table of returnln.
Variante 3: Komplette Retypisierung

Code: Alles auswählen.

types:
  returnln type bapiret2,
  returntab type standard table of returnln.
data:
  messages type returntab.
Hintergrund meiner Frage: In der SE80 habe ich streng Variante 3 gewählt, weil ich so in einem Programm auf einen Rutsch einen Typen austauschen kann, inklusive aller Deklarationen in Unterprogrammen bzw. Methoden. Ich halte es auch für die sauberste und stringenteste Variante. Ist halt ein wenig mehr Klickerei, wenn man sich nen Typen angucken will. In Eclipse hat dieses Verfahren einen wesentlichen Nachteil: F2 zeigt dann nur noch "messages type returntab" an, die Komponenten kriege ich so nicht so sehen, F2 wird so praktisch unnütz.

Variante 1 zeigt mir überall per F2 die Komponenten an, aber schon für einen Form-/Methodenaufruf brauche ich einen Tabellentypen (den ich wg. F2 aber nicht konsequent überall einsetze). Für BAPIRET2 gibt es einen, für viele andere Strukturen aber nicht.

Ich bin mir nicht ganz schlüssig, welcher Nachteil schwerer wirkt.... Ich hoffe daher, von euren Erfahrungen profitieren zu können.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Grundsatzfrage: Deklarationen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich persoenlich nehme dafuer immer:

Code: Alles auswählen.

    data:        returntab type bapiret2_T.

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Moin,

aus meinem Posting ging hervor, dass ich die Fälle meinte, wo es KEINEN Tabellentypem habe.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ralf.wenzel hat geschrieben:Moin,

aus meinem Posting ging hervor, dass ich die Fälle meinte, wo es KEINEN Tabellentypem habe.

Nein, ging aus Deinen Postings nicht hervor. Ausserdem kann man auch Tabellentypen selber anlegen.

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Kein Kommentar.

Vllt kann jmd. anderes ja auf die eigentlich gestellte Frage Bezug nehmen
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
hi!

Zu bapiret2 gibts eigentlich IMMER einen Tabellentyp im DDIC.

Zur Beantwortung der Frage:
Das kommt darauf an. :wink:

Wenn ich den Typ mehrmals brauchen würde, würde ich

Code: Alles auswählen.

types tt_returntab type standard table of bapiret2 with default key. "<-- Vollständige Syntax.
verwenden.

Wenn ich es nur für eine einzige (lokale) Variable brauchen würde, würde ich

Code: Alles auswählen.

data lt_returntab type standard table of bapiret2 with default key.
verwenden.

Aber ich persönlich verwend immer

Code: Alles auswählen.

data lt_returntab type BAPIRETTAB.
--> Ist in SAP_BASIS beheimatet und damit auf jedem System verfügbar.

Den bapiret2 nochmal als eigenen Typ "returnln" zu definieren halte ich für unnötig.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
a-dead-trousers hat geschrieben:Den bapiret2 nochmal als eigenen Typ "returnln" zu definieren halte ich für unnötig.
Solange, bis du das erste Mal in der Situation warst, in einem großen Programm einen Typen komplett auszutauschen ;)

Ich weiß, dass das Beispiel schlecht war, weil es einen Tabellentypen zu BAPIRET2 in jedem System gibt. Aber es gibt eben auch Strukturen, bei denen das nicht der Fall ist. Da stellt sich die Frage: Leg ich den im DDIC an oder im Programm? Und wenn im Programm: Mit welcher der drei Varianten?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
Hallo Ralf,

eine "richtige" Antwort wird es da wohl nicht geben.
Hier die Version die ich im allgemeinen Verwende, wenn der Strukturtyp im DDIC vorhanden ist ( abgesehen davon dass ich halt andere Namenskonventionen einhalten würde )

Code: Alles auswählen.

TYPES returntab   TYPE STANDARD TABLE OF bapiret2 WITH NON-UNIQUE DEFAULT KEY.

DATA: messages    TYPE returntab,
      one_message LIKE LINE OF messages.
"oder
      one_message TYPE LINE OF returntab.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Moin,

"type line of" wird eigentlich viel zu wenig verwendet, wie ich finde. So sieht man direkt, dass es als Workarea für eine Tabelle gedacht ist - auch bei Feldsymbolen eine durchaus sinnvolle Sache.

Frage direkt: Ist "with non unique default key" nicht eh der Standard und kann weggelassen werden bei einer standard table?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
ralf.wenzel hat geschrieben:Ist "with non unique default key" nicht eh der Standard und kann weggelassen werden bei einer standard table?
Jein!
Du darfst es weglassen, aber dann ist es kein vollständig definierter Tabellentyp.
http://help.sap.com/saphelp_470/helpdat ... ontent.htm
http://help.sap.com/saphelp_470/helpdat ... ontent.htm

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Grundsatzfrage: Deklarationen

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
ralf.wenzel hat geschrieben:Frage direkt: Ist "with non unique default key" nicht eh der Standard und kann weggelassen werden bei einer standard table?
Du kannst das auch problemlos weglassen. Ich habe mir halt nur angewöhnt bei Tabellentypdefinitionen immer den Schlüssel und UNIQUE/NON-UNIQUE mit anzugeben. Kostet nicht wirklich Zeit da die Autovervollständigung ja fast alles vorschlägt und jemand der sich nicht so tief in ABAP auskennt dass er alle impliziten Automatismen kennt, kann besser lesen was genau definiert wird.
Ist halt so ähnlich wie

Code: Alles auswählen.

DATA my_char(1) TYPE c.   
vs. 
DATA my_char.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Das ist ein gutes Argument. Ich arbeite zunehmend mit Java-Entwicklern zusammen....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
ralf.wenzel hat geschrieben:In Eclipse hat dieses Verfahren einen wesentlichen Nachteil: F2 zeigt dann nur noch "messages type returntab" an...
ralf.wenzel hat geschrieben:"type line of" wird eigentlich viel zu wenig verwendet, wie ich finde...
Wenn du in so modernen Systemen arbeitest, dass du Eclipse verwenden kannst wäre für dich doch auch die neue Inline-Deklaration als weitere Alternative möglich mit impliziter Typzuweisung.

Code: Alles auswählen.

LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
...
ENDLOOP.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Grundsatzfrage: Deklarationen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Das widerspricht den SAP-Programmierregeln*, die u. a. besagen, dass Deklarationen am Anfang der Routine stehen sollen ;)


Gruß

Ralf

*ABAP-Programmierrichtlinien, in der englischen Version mit dem viel treffenderen Namen Official ABAP Programming Guidelines
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Grundsatzfrage: Deklarationen

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
So offiziell und/oder aktuell können diese Richtlinien dann ja nicht sein, wenn SAP dieses Konstrukt mit 7.40 eingeführt hat ( einige Jahre nach dem Erscheinen des Buchs )
http://scn.sap.com/community/abap/blog/ ... clarations
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

4
Antw.
2582
Views
Textsymbole in Deklarationen
von SteJu » 02.06.2008 09:02 • Verfasst in ABAP® für Anfänger
68
Antw.
16807
Views
Deklarationen: Tabellarisch oder nicht?
von ralf.wenzel » 28.03.2017 10:34 • Verfasst in ABAP® Core
33
Antw.
3908
Views
Alle Deklarationen in FORM Routinen ermitteln
von Tron » 01.10.2019 11:26 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

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

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 317
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 911
MS-Word als Editor
letzen Monat von tekko 1 / 4415