diverse Fragen zu ABAP

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

diverse Fragen zu ABAP

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Guten Tag,

ich hätte ein paar Fragen, welche ich mir nicht wirklich beantworten kann. Daher frage ich hier um Rat.

1. Woran liegt es bei folgendem ABAP-Report, dass Eingaben in den automatisch vorgeschalteten Selektionsbildschirm die Ausgabe nicht einschränken?

Typ Ausführbares Programm
Status Testprogramm
Anwendung Anwendungsübergreifend
Berechtigungsgruppe leer
Logische Datenbank KDF
Selektionsbildschirm leer
Unicodeüberprüfungen ✓ Festpunktarithmetik ✓

Code: Alles auswählen.

REPORT Test...
NODES LFA1.
SELECT * FROM LFA1.
WRITE / LFA1-LIFNR.
ENDSELECT.
2. Wozu dienen die Anweisungen CHECK NOT <Datenobjekt> IS INITIAL und CLEAR <Datenobjekt> im Kontext von Verzweigungslisten und HIDE-Bereich?

3. Warum ist die Reihenfolge sämtlicher GET und GET LATE Ereignisblöcke im Programm unerheblich, mit welchem Konstrukt der prozeduralen Programmierung ist es zu vergleichen?

4. Sie haben für verschiedene Oberflächenelemente in der Oberfläche ihres Programms Oberflächentexte angelegt. Woran kann es liegen, dass die Oberflächentexte nicht angezeigt werden, wenn das Programm ausgeführt wird?

Vielen Dank im Voraus!


Re: diverse Fragen zu ABAP

Beitrag von jocoder (Specialist / 231 / 3 / 67 ) »
Du vermischt hier einige Themen.

1. Dieser Anweisungsblock ist entkoppelt von der logischen Datenbank. Auch in einem Report ohne Bezug zur einer logischen Datenbank wird dieser immer alle Lieferantennummer ausgeben.

Code: Alles auswählen.

REPORT Test...
NODES LFA1.
SELECT * FROM LFA1.
WRITE / LFA1-LIFNR.
ENDSELECT.
Selektionsoptionen auf dem Selektionsbild müssen explizit in die SELECT-Anweisung aufgenommen werden

Code: Alles auswählen.

REPORT Test...
TABLES LFA1.
SELECT-OPTIONS: vendors FOR lfa1-lifnr.

SELECT * FROM LFA1 WHERE lifnr IN vendors.
  WRITE / LFA1-LIFNR.
ENDSELECT.
2. CHECK NOT <Datenobjekt> IS INITIAL verlässt den aktuellen Anweisungsblock, wenn die Bedingung nicht erfüllt wurde. CLEAR <Datenobjekt> setzt das Datenobjekt auf Initialzustand zurück.

3. GET und GET LATE Blöcke sind Ereignisbehandler der logischen Datenbank. Wenn die logische Datenbank KDF bespielsweise ein Tabelleneintrag aus der LFA1 bereitstellt, steht dieser im GET Ereignis zur Verfügung. Nachdem der letzte Datensatz aus einem Knoten von der logischen Datenbank bereitgestellt wurde, ruft das Programm das GET LATE-Ereignis auf. Die Reihenfolge im Source-Code ist nicht weiter relevant für das Prozessieren der Ereignisbehandler, da die logische Datenbank diese Ereignisbehandler in der richtigen Reihenfolge aufruft. Vergleichbar sind GET und GET LATE Ereignisbehandler mit einem PERFORM (um in der prozeduralen Welt zu bleiben).

Code: Alles auswählen.

" Anstatt GET-Ereignisbehandler
FORM handle_lfa1 USING vendor TYPE lfa1.
   WRITE: vendor-lifnr. NEW-LINE.
ENDFORM.

FORM handle_lfa1_late USING last_vendor TYPE lfa1.
  WRITE: 'Listenende'.
ENDFORM.

START-OF-SELECTION.
  DATA vendor TYPE lfa1.
  SELECT * FROM lfa1 INTO vendor WHERE lifnr IN vendors.
     PERFORM handle_lfa1 USING vendor.
  ENDSELECT.
  PERFORM handle_lfa1_late USING vendor.
Dasselbe kann mit der logischen Datenbank wie folgt realisiert werden (diese lagert die SELECT-Anweisungen nur in ein separates Programm aus):

Code: Alles auswählen.

GET lfa1.
  WRITE lfa1-lifnr. NEW-LINE.

GET lfa1 LATE.
  WRITE 'Listenende'.
Das Konzept der logischen Datenbank gilt inzwischen als veraltet, da es nur im prozeduralen ABAP vernüftig verwendet werden kann. Eine Alternative sind Views oder CDS-Views.
4. Das kommt darauf wo die Oberflächentexte definiert sind. Wenn diese im einem Dynpro definiert sind, so muss dieses erst aufgerufen werden.
Dynproaufruf Dynpro-Nr 9000

Code: Alles auswählen.

CALL SCREEN 9000.

Re: diverse Fragen zu ABAP

Beitrag von a-dead-trousers (Top Expert / 3618 / 125 / 942 ) »
ad 4)
a) Wenn es um GUI-Titel geht, sind diese in der sog. CUA zu einem Programm defninert und werden mit SET TITLEBAR zur Anzeige gebracht. Meist passiert das im Zuge eines Dynpros (siehe Antwort von jcoder) indem man aus der Ablauflogik heraus ein "Modul" im Programm aufruft das diese Anweisung enthällt.
b) Wenn es um Textsymbole geht, sind diese im sog. Textpool definiert. Der Zugriff darauf erfolgt meist per Name (TEXT-...) wobei hier, wenn der Name nicht gefunden wird, kein Fehler ausgegeben wird, sondern es bleibt einfach leer.

Für beides gilt: Ist das Teilobjekt nicht aktiviert, wird auch nichts bzw. nur das ausgegeben was schon mal aktiviert war.

EDIT:
Ich hab mir gerade die Fragen auch noch mal durchgelesen. Für mich klingt das verdächtig nach Angaben die aus einem Test bzw. einer Testaufgabe stammen.
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.07
Basis: 7.40

Re: diverse Fragen zu ABAP

Beitrag von DeathAndPain (Top Expert / 1500 / 165 / 337 ) »
Sehe ich auch so. Was erschreckend ist, dass heute noch Testaufgaben gestellt werden, die sich auf das olle Geraffel mit den logischen Datenbanken beziehen.

ad 2.: Im HIDE-Bereich ist in der Variablen der Wert des Feldes drin, das der Benutzer angeklickt hat, damit man im Programm erkennen kann, was er angeklickt hat. Er kann aber auch gar keinen Hide-Bereich angeklickt haben, sondern was anderes gemacht haben, beispielsweise auf eine Schaltfläche (Drucktaste) geklickt. Dann ist die HIDE-Variable leer. Der CHECK prüft dies, damit keine HIDE-Behandlung durchgeführt wird, wenn keine HIDE-Fläche geklickt worden ist.

Aber HIDE-Bereiche sind auch uralter Kram aus der Zeit vor den ALVs, als man komplexe Ausgabelisten noch mit WRITE gebaut hat. Das ist locker 15 Jahre her, dass ich das das letzte Mal gebraucht habe. Ich staune, dass ich das noch weiß.

ad 4.: Es könnte auch einfach sein, dass der Benutzer mit einer anderen Sprache angemeldet ist als derjenigen, in der der Text hinterlegt ist. Wenn der Text nicht in seine Sprache übersetzt ist, sieht er nix.
jocoder hat geschrieben:Das Konzept der logischen Datenbank gilt inzwischen als veraltet, da es nur im prozeduralen ABAP vernüftig verwendet werden kann.
Diese Begründung halte ich für unvollständig. Schon in Release 3.1 waren logische Datenbanken nicht mehr attraktiv, da ihre Performance unterirdisch ist. Wenn man auf die Schnelle was zusammenhacken möchte, mögen sie mal nutzbar sein, aber ein ordentliches Programm sollte man performanter mit Daten versorgen.

Re: diverse Fragen zu ABAP

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Vielen Dank für die Antworten. Es handelt sich hier tatsächlich um typische Testaufgaben.

Kennt sich jemand von euch mit PLM/PDM-Systemen aus, da hätte ich auch noch zwei Fragen dazu.

Seite 1 von 1

Aktuelle Forenbeiträge

Report in ein Programm integrieren
vor 2 Stunden von jocoder 2 / 23
SAP Logon Theme ermitteln
vor 4 Stunden von PeterPaletti 1 / 18

Vergleichbare Themen

Diverse kl. Fragen
von defsteph » 17.11.2005 10:23
Diverse Fragen zu Oberflächentexten
von Kudert777 » 14.07.2020 17:56
ABAP/SAP Newcomer/Fragen
von ABeginner » 11.04.2013 10:23
ABAP Lückentext wirft fragen auf...
von nico_ » 30.03.2012 10:46
Fragen FuBaus ABAP Neuling
von .fetox » 03.03.2009 10:07