Deklarationen: Tabellarisch oder nicht?

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

Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Moin,

ganz blöde Frage: Schreibt ihr Deklarationen tabellarisch (so dass alle "TYPE" untereinander stehen)?

Ich mache das zwar so, weil ich es lesbarer finde - in anderen Sprachen ist das aber wohl reichlich unüblich und auch die SAP verabschiedet sich zunehmend davon. Außerdem stelle ich fest, dass das zu enorm langen Zeilen führt, wenn z. B. ein TYPE REF TO dabei ist und man dafür in den benachbarten Deklarationen auch Platz lässt, wenn da nix steht.

Ich schreibe normalerweise auch Vergleiche so (IFs mit AND oder OR), aber die tabellarische Form stößt da oft an ihre Grenzen, weil sie zu tierisch breiten Leerräumen führt....

Darum frag ich mal, was da so bei euch der Standard ist.


Ralf
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: Deklarationen: Tabellarisch oder nicht?

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ja, ich find's auch lesbarer.
Aber nicht zwingend alles auf einer Spalte aber innerhalb eines Blocks ein Muss bei mir:

Code: Alles auswählen.

    TYPES: BEGIN OF ty_resb,
             matnr TYPE matnr,
             maktx TYPE maktx,
             bdmng TYPE bdmng,
             enmng TYPE enmng,
             meins TYPE meins,
           END OF ty_resb,
           BEGIN OF ty_research,
             aufnr    TYPE co_aufnr,
             masch_nr TYPE zmasch,
             mbl      TYPE ty_resb,
             auf      TYPE ty_resb,
           END OF ty_research.
Wenn da ein längeres Wort in den Block rein kommt, werden auch alle anderen TYPE Anweisungen entsprechend nach rechts gerückt. </monk>

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das bedeutet, wenn einer der Zeilen mit TYPE REF TO deklariert, rücken alle Datentypen (was rechts neben TYPE steht) für alle Zeilen mit nach rechts?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo,
i.A. halte ich es wie Enno bei den TYPES.

Bei IF mit komplexer Abfragelogik schlagen alte PASCAL-Sitten bei mir wieder durch und ich sorge für Einrückungen auf Klammerebene:

Code: Alles auswählen.

IF ( ( Tarzan EQ Urwald or JANE EQ LONDON )
     AND
     ( Transportmittel EQ Ruderboot or Wind EQ NORDOST 
   )
  "Block 1
ELSE.  
  "Block 2
ENDIF.
MfG
Thomas R.

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
Ich schreibe es eben so. Ja, auch mit Platz für REF TO. Persönlich finde ich die Leerräume überhaupt nicht störend. Bei Methoden etc. mache ich es jeweils passend.

Eher schade das man den Pretty Printer nicht einfacher persönlich anpassen kann, sondern entweder jeweils selbst programmieren muss oder dieses Tool nutzt
http://www.hovitaga.com/Advanced-Pretty ... t-overview

( Dank an Ennos Tipp http://www.tricktresor.de/blog/hovitaga ... hancement/ )


Gruß, GTO
"Code lügt nicht ^^"

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
gtoXX hat geschrieben:Eher schade das man den Pretty Printer nicht einfacher persönlich anpassen kann

!!!

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ralf.wenzel hat geschrieben:
gtoXX hat geschrieben:Eher schade das man den Pretty Printer nicht einfacher persönlich anpassen kann

!!!

Ralf

Wenigstens gibt es die "Alt" - Blockfunktion. Hilfreich sind übrigens auch die Editor Code Vorlagen und Tastaturkürzel. Coding mal eben als auf Knopfdruck als HTML oder PDF exportieren kann nützlich sein.
"Code lügt nicht ^^"

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
gtoXX hat geschrieben:[Wenigstens gibt es die "Alt" - Blockfunktion. Hilfreich sind übrigens auch die Editor Code Vorlagen und Tastaturkürzel. Coding mal eben als auf Knopfdruck als HTML oder PDF exportieren kann nützlich sein.
Das ist ja nicht alles. Ich zum Beispiel rücke NIE innerhalb einer Anweisung ein, ich schreibe also nicht

Code: Alles auswählen.

SELECT * FROM MARA
    WHERE ....
    AND  ....
sondern

Code: Alles auswählen.

SELECT * 
FROM MARA
WHERE ....
AND  ....
Einrückungsebenen sollen mir anzeigen, wie viele IFs ich z. B. gerade aktiv habe. Innerhalb einer Anweisung einzurücken verfälscht diese Transparenz. So wie ich nicht gleichzeitig in zwei Stockwerken sein kann, kann eine Anweisung nicht in zwei Einrückungsebenen stehen.

Beim CASE macht mir der PP das kaputt, weil er die WHENs immer einrückt. Das ist insbesondere auch deshalb nicht gut, weil die Kommentare dann zu tief eingerückt stehen. In meinen Augen wäre es richtiger, wenn die WHENs in derselben Ebene wie das CASE stünden und nur unterhalb der WHENs wird eingerückt.

Das würde ich gern parametrisieren können....


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Thomas R. hat geschrieben:Bei IF mit komplexer Abfragelogik schlagen alte PASCAL-Sitten bei mir wieder durch und ich sorge für Einrückungen auf Klammerebene:

Code: Alles auswählen.

IF ( ( Tarzan EQ Urwald or JANE EQ LONDON )
     AND
     ( Transportmittel EQ Ruderboot or Wind EQ NORDOST 
   )
  "Block 1
ELSE.  
  "Block 2
ENDIF.
Hülfe, das sieht ja nach Zufall aus, wo da welche Klammer steht. Warum steht das AND alleine da und warum ist die eine schließende Klammer in einer eigenen Zeile und die andere nicht? Da fände ich besser:

Code: Alles auswählen.

IF  ( ( Tarzan EQ Urwald or JANE EQ LONDON )
AND ( Transportmittel EQ Ruderboot or Wind EQ NORDOST ).
  "Block 1
" irgendwelche Anweisungen

ELSE.  
  "Block 2
" andere Anweisungen

ENDIF.
oder (wenn es komplizierter wird) mit schließenden Klammern auf Höhe der öffnenden Klammer (mache ich bei Methodenaufrufen so, gerade bei Kettenaufrufen hilft das wirklich):

Code: Alles auswählen.

IF  ( ( 
        Tarzan EQ Urwald or JANE EQ LONDON 
      )
AND ( 
        Transportmittel EQ Ruderboot or Wind EQ NORDOST 
      )
    ).
  "Block 1
" irgendwelche Anweisungen

ELSE.  
  "Block 2
" andere Anweisungen

ENDIF.
Interessanterweise sind deine EQs und ORs nicht untereinander.....

Ralf *macht halt jeder anders ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:

Code: Alles auswählen.

SELECT * 
FROM MARA
WHERE ....
AND  ....
Igitt!!
das wird bei mir schön rechtsbündig ausgerichtet:

Code: Alles auswählen.

SELECT * 
  FROM MARA
   FOR ALLE ENTRIES
 INNER JOIN ...
 WHERE ....
   AND  ....

Ich bin aber auch weltweit der einzige, der das so macht, glaube ich... :D

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ralf.wenzel hat geschrieben:
gtoXX hat geschrieben:[Wenigstens gibt es die "Alt" - Blockfunktion. Hilfreich sind übrigens auch die Editor Code Vorlagen und Tastaturkürzel. Coding mal eben als auf Knopfdruck als HTML oder PDF exportieren kann nützlich sein.
Das ist ja nicht alles. Ich zum Beispiel rücke NIE innerhalb einer Anweisung ein, ich schreibe also nicht

Code: Alles auswählen.

SELECT * FROM MARA
    WHERE ....
    AND  ....
sondern

Code: Alles auswählen.

SELECT * 
FROM MARA
WHERE ....
AND  ....
Einrückungsebenen sollen mir anzeigen, wie viele IFs ich z. B. gerade aktiv habe. Innerhalb einer Anweisung einzurücken verfälscht diese Transparenz. So wie ich nicht gleichzeitig in zwei Stockwerken sein kann, kann eine Anweisung nicht in zwei Einrückungsebenen stehen.

Beim CASE macht mir der PP das kaputt, weil er die WHENs immer einrückt. Das ist insbesondere auch deshalb nicht gut, weil die Kommentare dann zu tief eingerückt stehen. In meinen Augen wäre es richtiger, wenn die WHENs in derselben Ebene wie das CASE stünden und nur unterhalb der WHENs wird eingerückt.

Das würde ich gern parametrisieren können....


Ralf
Beim Select mache ich das ebenso wie Enno. Die 1. Zeile ist für die Feldleiste reserviert in dem Fall * .

Ich kommentiere grundsätzlich mit " darüber oder darunter. Dann rückt er es entsprechend bündig ein.

Beim CASE sehe ich das nicht so. Die WHEN Anweisung gehört zum Verarbeitungsblock. Anders als ELSE, die den Verarbeitungsblock teilt.

Code: Alles auswählen.

  IF      A =
   AND    B =.

  ELSE.

  ENDIF.
Bei sehr tiefen IF-Anweisungen würde ich als allererstes die Logik prüfen. Oder schauen ob ein CASE es dann nicht besser strukturiert. Wobei so häufig ist das ja nun auch nicht.

Gruß gto
"Code lügt nicht ^^"

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Nein, bei WHEN und ELSEIF wird der "-Kommentar eben nicht korrekt eingerückt. Das ist ja das Problem.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ewx hat geschrieben:ja, ich find's auch lesbarer.
Aber nicht zwingend alles auf einer Spalte aber innerhalb eines Blocks ein Muss bei mir:

Code: Alles auswählen.

    TYPES: BEGIN OF ty_resb,
             matnr TYPE matnr,
             maktx TYPE maktx,
             bdmng TYPE bdmng,
             enmng TYPE enmng,
             meins TYPE meins,
           END OF ty_resb,
           BEGIN OF ty_research,
             aufnr    TYPE co_aufnr,
             masch_nr TYPE zmasch,
             mbl      TYPE ty_resb,
             auf      TYPE ty_resb,
           END OF ty_research.
Wenn da ein längeres Wort in den Block rein kommt, werden auch alle anderen TYPE Anweisungen entsprechend nach rechts gerückt. </monk>
Würde bei mir so aussehen ( immer 2 Tabs vor TYPE ) :

Code: Alles auswählen.

    TYPES:
      BEGIN OF ty_resb,
               matnr    TYPE  REF TO   matnr,
               maktx    TYPE           maktx,
               bdmng    TYPE           bdmng,
               enmng    TYPE           enmng,
               meins    TYPE           meins,
      END OF ty_resb,
           

Ein weiterer Vorteil : Blockmarkiert ist so mal schnell mit Copy&Paste eine programmlokale Teststruktur ins Dictionary kopiert.
"Code lügt nicht ^^"

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:Nein, bei WHEN und ELSEIF wird der "-Kommentar eben nicht korrekt eingerückt. Das ist ja das Problem.

Ralf

Code: Alles auswählen.

  "eins
  IF 1 = 2.
    "zwei
  ELSEIF 2 = 3.
    "drei
  ELSE.
    "vier
  ENDIF.
Finde ich schon ganz richtig so...!

Re: Deklarationen: Tabellarisch oder nicht?

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ralf.wenzel hat geschrieben:Nein, bei WHEN und ELSEIF wird der "-Kommentar eben nicht korrekt eingerückt. Das ist ja das Problem.

Ralf
Ja das stimmt leider. SAP sollte einfach wie bei Mustern, es für den Entwickler einstellbar machen :) und PP generell beim Sichern ausführen.
Und noch den Bug der Groß-/Kleinschreibung im Anzeigemodus beseitigen. Vielleicht dann mal in NW 10. ^^


Gruß gto
"Code lügt nicht ^^"

Vergleichbare Themen

4
Antw.
2525
Views
Textsymbole in Deklarationen
von SteJu » 02.06.2008 09:02 • Verfasst in ABAP® für Anfänger
17
Antw.
5055
Views
Grundsatzfrage: Deklarationen
von ralf.wenzel » 12.12.2013 21:51 • Verfasst in ABAP® Core
33
Antw.
3784
Views
Alle Deklarationen in FORM Routinen ermitteln
von Tron » 01.10.2019 11:26 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 3 Stunden von Bright4.5 3 / 1475
Regex in where
vor 5 Stunden von tar 6 / 140
Programm anlegen mit Vorlage
vor 20 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 20 Stunden von DeathAndPain 2 / 355

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

Daten an Tabelle binden
vor 3 Stunden von Bright4.5 3 / 1475
Regex in where
vor 5 Stunden von tar 6 / 140
Programm anlegen mit Vorlage
vor 20 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 20 Stunden von DeathAndPain 2 / 355

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 22 Stunden von snooga87 1 / 86
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821