CT-Professional_100 + Help …

Das interaktive Lernsystem für ABAP® verbindet Theorie und Praxis durch eine Echtzeitkopplung an das SAP®-System oder dem ‘CT-Debug_Simulator’.

Kurs 2: Erweiterung von Sprachumfang und Anwendung

Dieser Fortsetzungskurs besteht aus einer Auswahl von ABAP®-Befehlen, die Ihnen schon in der Anfangsphase (gemeinsam mit Kurs 1) die Gelegenheit bieten, auch größere Reports zu programmieren. Auch innerhalb der Sprache ABAP® genügt es, zunächst wenige Befehle zu kennen um bereits leichte Programmieranforderungen der Fachbereiche realisieren zu können. Voraussetzung allerdings ist, daß diese Sprachelemente auch wirklich verstanden und beherrscht werden.

Wieviel Lerninformationen stehen im Kurs 2 zur Verfügung ?

Der Kurs 2 besteht aus ca. 1940 Textabschnitten mit insgesamt ca. 8500 Zeilen, insgesamt sind 77 Formal- und Beispiel-Reports enthalten. Die Reportbeispiele werden durch ca. 250 Overlay-Zeichnungen innerhalb der Syntaxerläuterungen und während der Debugging-Session zusätzlich illustriert. Die Einzelthemen des Info-Trees sind nachfolgend als Fließtext aufgelistet. Überwiegend sind dies die Überschriften zu den einzelnen Textelementen, sie geben einen Überblick über den Umfang und die Detailstruktur der Wissensbereiche.

Die Aufzählung der einzelnen Tree-Infos soll einen Eindruck über den Umfang und den Themenkreis der jeweiligen Kurse vermitteln. Natürlich sind diese Informationen im Kurs durch den INFO-Tree sauber geordnet. Die Bearbeitungsreihenfolge der Einzelthemen können Sie bestimmen. Sie entscheiden, ob Sie Reihenfolge anhand eines von uns vorgeschlagenen

  • “roten Faden oder learning path” vornehmen oder
  • in einen anderen Lernmodus verzweigen oder
  • im Direktzugriff einzelne Kursbereiche aufrufen oder
  • Textbausteine anzeigen lassen oder
  • auf Reportbeispiele zugreifen oder
  • den CT-DEBUG_Simulator einsetzen.

Eine detaillierte Aufzählung des Kursinhalts Wir haben die wesentlichen Inhalte des Info-Trees je Kursus nachfolgend als Fließtext angelistet, überwiegend sind dies die Überschriften zu den einzelnen Textelementen. Bitte beachten Sie den Umfang des jeweiligen Kurses (… zeigen Sie uns etwas Vergleichbares).

Die Aufzählung der einzelnen Tree-Infos soll einen Eindruck über den Umfang und den Themenkreis der jeweiligen Kurse vermitteln. Natürlich sind diese Informationen im Kurs durch den INFO-Tree hierarchisch geordnet.

Fließtext:

PEND LINES OF itab1 – Syntaxbeschreibung, Anwendungshinweise . Kopiert wird an das Tabellenende von itab2 . Die Tabellenkopfzeile wird nicht benutzt . Gleiche Datenstruktur erforderlich . Weglassen der Angabe des VON/BIS-Bereiches . Die Befehlsvariationen . APPEND LINES OF itab1 FROM ind1 TO itab2 . APPEND LINES OF itab1 TO ind2 TO itab2 . APPEND LINES OF itab1 TO itab2 . APPEND LINES OF itab1 FROM ind1 TO ind2 TO itab2 . Die verschiedenen Variationen von “APPEND LINES …” . Der aktuelle Tabellenindex SY-TABIX . Der Inhalt von SY-TABIX bezieht sich auf … Die Indexvariablen “ind1” und “ind2” . Index = 0 . Index zu groß . Index negativ . Index nicht numerisch . Index-VON größer als Index-BIS . Die Selektion von Tabellenzeilen in einer Loop-Schleife . Allgemeine Informationen . S0360000 : COLLECT itab – Hinzufügen einer neuen Tabellenzeile . Verändern von Tabellenzeilen (Addition) . Schlüsselfelder beim “COLLECT” . Datenfelder beim “COLLECT” . Hinweis . COLLECT itab (Syntax) . COLLECT nur im Zusammenhang mit anderen Befehlen . COLLECT work1 INTO itab (ab 3.0 ) . Die Wirkungsweise des “COLLECT itab”. . Vergleichen der “Suchfelder” (Argumentfelder) . Das Ergebnis: Übereinstimmende Zeile gefunden oder nicht . Keine Übereinstimmung der nichtnumerischen Datenfelder . Übereinstimmung der nichtnumerischen Datenfelder . Der grundsätzliche Unterschied von “COLLECT” und “APPEND” . Der “APPEND” erweitert immer die Tabelle . Der “COLLECT” erweitert nur, wenn das Argument … . “COLLECT” verändert auch vorhandene … . Die “OCCURS-Angabe”, der Pagingbereich und der … . OCCURS-Angabe wird intern angepaßt . Warum ist die Anzahl der Tabellenzeilen … Sequentielle Verarbeitung von Tabellenzeilen . Allgemeine Anwendungsbereiche für “COLLECT” . Auszüge oder Verdichtungen aus vorhandenen Tabellen . Vergleich der Argumentfelder . Bildung von Teilmengen durch Zusatzschlüssel . Wenn nicht alle Kopfzeilen berücksichtigt werden sollen … . Mit dem “COLLECT” wird addiert (auch Subtraktion ist … . Addition . Subtraktion . “COLLECT” in Verbindung mit einer als Parameter … COLLECT und Unterprogramme . Jeder “COLLECT” nimmt das, was in der Kopfzeile … COLLECT und CLEAR . Alternativen zum “COLLECT” . Befehle für die Bearbeitung von Summierungen in internen Tabellen . Große Tabellen und großes Datenvolumen mit COLLECT bearbeiten? . Allgemeine Einschätzung . Eine erste Alternative zum “COLLECT” . Zuerst Sammeln der Daten in Tabelle-1 . Sortieren der Tabelle-1 . Die Tabelle-1 wird verdichtet in Tabelle-2 . Auch der altbewährte Vergleich kann helfen . Nicht nur Addition möglich . Eine weitere Alternative zum “COLLECT” . Sortierter Aufbau mit gleichzeitiger Summierung . Tabellenzeile ist noch nicht vorhanden . Tabellenzeile ist bereits vorhanden . Ein Beispiel-Report aus der Praxis DELETE-Befehl (ein Überblick) . Die Kurzbeschreibung . Tabellenzeilen aus einer externen Tabelle . Tabellenzeilen aus einer programminternen Tabelle . Dateien auf der Festplatte des Servers … . Cluster aus einer IMPORT/EXPORT-Tabelle . Quellcode von Reports oder Programmen . Bildschirmmasken . Je nach Anwendungsbereich gilt eine spezielle . “gelöscht wird nur einmal …” . Was wird gelöscht, und wer gibt die Daten frei ? . Die Themen des Fachbereiches … . Welches Arbeitsgebiet ist für die zu löschenden Daten … . Liegt das Einverständnis/Auftrag des Verantwortlichen vor? . Kann das zu löschende Datenvolumen rekonstruiert werden? . Handelt es sich um ein großes zu löschendes Datenvolumen? . Ist die Dialogverfügbarkeit eingeschränkt? . Sollte ein Batchjob für das Löschen eingesetzt werden? . Die Anwendungsprogrammierung … . Testläufe vorhanden? . Optimale Auswahlbedingungen? . Sind nur Schlüsselfelder in der WHERE-Bedingung verwendet ? . Entspricht die Reihenfolge der Schlüsselfelder der … . Wurden komplexe WHERE-Bedingungen vermieden? . Liegen entsprechende Berechtigungscodes (in Produktion) vor? . Werden falsche Parametereingaben “abgefangen”? . Erfolgt eine ausreichende Protokollierung der . … Das Operating … . Liegt für die aktuelle Löschaktion eine Genehmigung vor? . Sind Restoremöglichkeiten vorgesehen? . Besteht eine Einschränkung der Dialogverfügbarkeit während … . Sind Löschprotokolle an den Fachbereich zu versenden? . Die verschiedenen Arten von “DELETE …” . DELETE = Löschen externer Tabellenzeilen (Datenbankinhalt) . DELETE FROM etab WHERE bedingung . DELETE FROM etab CLIENT SPECIFIED WHERE . DELETE etab . DELETE (name_etab) (ab 3.0) . DELETE etab FROM TABLE itab . DELETE (name_etab) FROM TABLE itab (ab 3.0) . DELETE etab VERSION name . DELETE FROM DATABASE etab(xx) ID key . DELETE FROM DATABASE etab(xx) CLIENT y ID key . DELETE = Löschen interner Tabellenzeilen . DELETE itab INDEX num . DELETE itab FROM num1 TO num2 (ab 3.0) . DELETE itab WHERE bedingung (ab 3.0) . DELETE itab . DELETE = Löschen von Programmen (Reports) . DELETE REPORT name . DELETE TEXTPOOL name . DELETE DYNPRO name . DELETE = Löschen von externen Datenbeständen . DELETE DATASET name . Auch “OPEN” kann einen Datenbestand löschen . Schreibberechtigung . Dateinamen sind vollständig anzugeben … . Die Verwendungshäufigkeit von “DELETE …” in der Praxis . DELETE von externen Tabellenzeilen (Datenbank) . Das “Urheberrecht” bei unbeabsichtigten Löschungen … . DELETE – ein Befehl der Beachtung verdient … . Die Häufigkeit von “DELETE externe Tabellenzeilen” . Die Tabellen für das Customizing … . Die kundeneigenen Tabellen … . DELETE von internen Tabellenzeilen . DELETE von Datasets . DELETE – Programmelemente DELETE ADJACENT DUPLICATES … – Tabellenzeilen löschen . Die Kurzbeschreibung . Nur hintereinanderliegende Sätze werden geprüft . DELETE ADJACENT DUPLICATES FROM itab COMPARING v1 v2 v3 … . DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS . DELETE ADJACENT DUPLICATES FROM itab (ab 3.0) . DELETE ADJACENT DUPLICATES FROM itab COMPARING v1 v2 … (ab 3.0) . Der Vergleich von Teilinhalten aus v1 v2 … . DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS (ab 3.0) . Ergänzende Hinweise zum Befehl “DELETE ADJACENT DUPLICATES FROM itab …” . Die Sortierung ist entscheidend . Der “DELETE ADJACENT …” – ein interner Schleifenbefehl . Die Anzahl der gelöschten Tabellenzeilen . Der Returncode SY-SUBRC . Die relative Adressierung bei “DELETE … COMPARING v1” . Die dynamische Zuordnung der Vergleichsfelder . Laufzeitfehler bei falscher dynamischer Feldangabe . REPORT-DELETE-ADJACENT-DUPLICATES REPORT-DEL-ADJ-DUPL-COMPARING REPORT-DEL-ADJ-DUPL-COMPARING FORM DELETE-ADJACENT-COMP-All . DELETE itab FROM … TO …WHERE – Löschen mit Auswahl DELETE itab FROM ind1 WHERE bedingung . DELETE itab TO ind2 WHERE bedingung . DELETE itab WHERE bedingung (ab 3.0) . DELETE itab FROM ind1 TO ind2 WHERE bedingung (ab 3.0) . Ergänzende Hinweise … . Überschaubare WHERE-Bedingungen verwenden . Kein Schleifenbefehl, jedoch systeminterne Schleifenanwendung . Die Anzahl der gelöschten Tabellensätze . Beide Indexangaben können gemeinsam verwendet werden . Wenn die Indexangabe “FROM ind1 …” fehlt . Wenn die Indexangabe “TO ind2 …” fehlt . Indexangabe als Literal oder innerhalb einer Variablen . Gültige Indexangaben . Ungültige Indexangaben . REPORT-INDEX-WHERE DO … ENDDO – Der Schleifenbefehl . DO … weitere Befehle … ENDDO (Syntaxerläuterung) . Das Verlassen der Endlosschleife . Weitere Befehle in der DO-Schleife . ENDDO . Sprachelemente mit vergleichbarer Wirkung . DO n1 TIMES . WHILE bedingung … ENDWHILE (als Alternative zum DO – ENDDO) . WHILE log-bedingung – ENDWHILE . ENDWHILE . CONTINUE oder CHECK log-ausdruck . Die WHILE-Schleife mit “VARY vx FROM v1 NEXT v2”. . Das Verlassen der WHILE-Schleife . Anwendungshinweise zum Schleifenbefehl “DO …. ENDDO” . Der Zusammenhang der Schlüsselworte “DO” und “ENDDO” . Das Verlassen der Schleife mit “EXIT” . Die Bedingungsabfrage für den Befehl “EXIT” . Endlosschleife, Programmabbruch . Die verschiedenen Unterbrechungsebenen von “EXIT” . Der Befehl “EXIT” in Schleifen . Der Befehl “EXIT” in einem Unterprogramm . Der Befehl nicht in einer Schleife oder FORM . Die weiteren Unterbrechungsmöglichkeiten . “REJECT” . “STOP” . “LEAVE” . Der Befehl “CONTINUE” beginnt einen neuen Schleifendurchlauf (ab 3.0) . Der Befehl “CHECK … ” ändert die Bearbeitungsreihenfolge . Die Kombination von “CHECK” und “EXIT” . Geschachtelte Schleifen . Weitere Schleifenbefehle . LOOP – ENDLOOP . WHILE – ENDWHILE . SELECT – ENDSELECT . UPLOAD – ENDUPLOAD . Der Schleifenzähler SY-INDEX . Häufige Anwendungsbereiche von “DO – ENDDO” . Das Lesen von externen Datenbeständen . Die Bearbeitung von Strings . Die Prüfung von Feldinhalten auf formelle Richtigkeit . Häufige Befehle innerhalb von DO-Schleifen . MOVE bzw. Zuweisungen (v2 = v1) . IF-Befehle, CASE/WHEN, . READ DATASET, SHIFT, ASSIGN, PERFORM . Die Bewertung des Sprachelements “DO …. ENDDO” für die Praxis . Anwendungsfreundliche Konstruktion . Was vermieden werden sollte . Kleiner TIP . BREAK-POINT innerhalb DO … ENDDO . Besondere Hinweise für die Anwendung von “DO … ENDDO” . Der genaue Zeitpunkt des Ausstiegs . Die Anwendungsmöglichkeiten von “DO – ENDDO” in . Allgemeine Informationen . Die Do-Schleife . Den gesamten Inhalt der internen Tabelle anzeigen . Mit “EXIT” die Schleife verlassen . Mit “REJECT” die Schleife verlassen . REPORT-KLEINE-FALLE REPORT- REIHENFOLGE- AENDERN . REPORT- GESCHACHTELTE- SCHLEIFE . AUFBAU-ITAB1 . Die äußere Schleife . Die innere Schleife . Ein kleiner Fehler . REPORT-INTERNE-TABELLE Die Systemfelder SY-INDEX und SY-TABIX . REPORT-STRING-PRUEFEN TRENNEN-STRING . REPORT-ZEICHEN-ERSETZEN ERSETZEN-ZEICHEN . ERSETZEN-BLANKS . REPORT-ZEICHEN-ENTFERNEN FUEHRENDE-BLANKS-ERSETZEN . ANZAHL-ZIFFERN DO n TIMES VARYING v1 NEXT v2 DO n TIMES VARYING v1 NEXT v2 – Feld für Feld . DO n TIMES . VARYING y FROM v1 NEXT v2 . Weitere Verarbeitungsbefehle innerhalb … . ENDDO . Besonderheiten des Workfeldes . Das Sendefeld kann verändert werden . Ein größeres Workfeld kann zu Fehlern führen . FROM v1 . NEXT v2 . Weitere Bearbeitungsbefehle . ENDDO . Allgemeine Hinweise zur Anwendung von … . Die Befehlsausführung in der Programmschleife . Der Befehlszusammenhang . Die Hauptaufgabe des Befehls . Die Arten des Sendefeldes . Feldleisten . Tabellenkopfzeilen . Variablen (Einzelfelder) . Die Bearbeitung der verschiedenen Feldarten . Die Einzelfelder einer Feldleiste bearbeiten . Eine kleine Erläuterung zum Beispiel . Ausschnitte eines Einzelfeldes bearbeiten . Die Abstimmung der Einflußfaktoren bei dem Einsatz . Die Angabe der richtigen Feldlänge und die Anzahl der Schleifen . Als kleiner Merker: . Wenn die Schleifenvariable zu klein ist . Wenn die Schleifenvariable zu groß ist . Die Länge des Sendefeldes . Wenn das Sendefeld zu klein ist . Wenn das Sendefeld zu groß ist . Die Länge des Empfangsfeldes (” … VARYING y …”) . Wenn das Empfangsfeld zu klein ist . Wenn das Empfangsfeld zu groß ist . Beginn und Ende des kopierten Bereiches . Die Länge des Kopierstrings . Verändern der Schleifenbearbeitung mit “CHECK” . Schleifenbefehle überspringen mit “CONTINUE” (ab 3.0) . Verändern der Schleifenvariablen . Wert der Variablen oder die Zahl 0 . Hauptsächliche Anwendungsbereiche . Aufbau von internen Tabellen (APPEND) . Zuweisungen zu Feldsymbolen (ASSIGN) . Entscheidungen (IF, ENDIF) . Fallprüfungen (CASE, WHEN) . Verzweigungen (PERFORM) . Stringbearbeitung (SHIFT, REPLACE, …) . FORM/ENDFORM . INPUT, SET SCREEN, … . DATA, TABLES, PARAMETER, … . SELECT/ENDSELECT, LOOP/ENDLOOP, … . Mehrere VARYING-Angaben in einer DO-Anweisung . Mehrere VARYING-Anweisungen in einem DO-Befehl . Schreibweise bei mehreren Kopierstrings . Ein Beispiel: . Eine kleine Erläuterung zum Beispiel . Geschachtelte Schleifen . Weitere Wiederholkonstruktionen . LOOP/ENDLOOP, . WHILE/ENDWHILE, . SELECT/ENDSELECT, . UPLOAD/ENDUPLOAD. . EXIT in geschachtelten Schleifen . Schleifenzähler SY-INDEX . Systemfeld SY-INDEX . Geschachtelte Schleifen . Zusätzlich erlaubt: “EXIT” . Einige Anwendungsmöglichkeiten in Report-Beispielen . REPORT- VARYING- SUMMEN1 AUFBAU-IT1 . Die innere DO-Schleife . Die äußere DO-Schleife . REPORT- SUMMEN- PRUEFEN REPORT- FELDLEISTE- VERAENDERN DO-VARYING USING WORKFELD . Das erste Feld . Hinweise zur Fehlerbereinigung . REPORT-EINZELFELD-SCHNIPPSELN REPORT-FELDLEISTE-RUECKWAERTS REPORT-FELDLEISTE-TEILWEISE Anwendungsfreundliche Konstruktion . Was sollte vermieden werden ? . Kleine TIP´s . Nach wie vor gilt: . Lösungen mit mehr als 2 Kopierstrings sorgfältig … . Denken Sie auch an die Möglichkeit, das Sendefeld … . Feldzuweisungen über ASSIGN können Problemlösungen … . Bei der relativen Adressierung des Sendefeldes . Die Nachteile des Befehls ? . Kein allgemeiner, wesentlicher Nachteil . Fehlerquellen . Schleifenvariable zu groß . Sendefeld zu klein . Empfangsfeld zu klein . Länge der Kopie (Offset) zu groß DO n TIMES – begrenzte DO-Schleife . Die allgemeine Wirkungsweise des Befehls . Der allgemeiner Befehlsablauf . Der Befehlszusammenhang von “DO n TIMES” und … . Unterschied von “beenden” und “abbrechen” … . Zählschleife (“DO n TIMES … ENDDO”) . Unbedingte Schleife (“DO … ENDDO”) . Verändern der Bearbeitungsreihenfolge in der Schleife (“CHECK”) . Verändern der Schleifenvariablen . Wert der Variablen oder die Zahl 0 . Die Konvertierungsregeln sind zu beachten . Hauptsächliche Anwendungsbereiche . Zuweisungen (AFELD = BFELD) . Feldsymbole (ASSIGN) . Entscheidungen (IF, ENDIF) . Fallprüfungen (CASE, WHEN) . Verzweigungen (PERFORM) . Stringbearbeitung (SHIFT, REPLACE, …) . Seltene bzw. unzulässige Befehle innerhalb von “DO x TIMES” . FORM – ENDFORM . MODULE . DATA, TABLES, PARAMETER, … . SELECT – ENDSELECT . LOOP – ENDLOOP . Geschachtelte Schleifen . Weitere Wiederholkonstruktionen . LOOP … ENDLOOP . WHILE … ENDWHILE . SELECT …. ENDSELECT . UPLOAD …. ENDUPLOAD . EXIT in geschachtelten Schleifen . Der Schleifenzähler SY-INDEX . Das Systemfeld SY-INDEX (Type I) . Geschachtelte Schleifen . Zusätzlich erlaubt: “EXIT” . Die Begrenzung der Schleifendurchläufe “DO n TIMES” . Anwendungsmöglichkeiten in Report-Beispielen . Allgemeine Informationen . REPORT-GESCHACHTELT-ANZEIGEN Die 1. Schleife . Die 2. Schleife . Die 3. Schleife . REPORT-ZEIGEN-SY-INDEX SCHLEIFENEBENE USING SZAEHLER EBENE . REPORT-DRUCKROUTINE-MAX ZEICHEN-DRUCKEN USING parameter . REPORT-INTERAKTIVE-LISTE Auswahl aus der Listebene 1 . Weitere Listebenen auswählen . REPORT-DO-MIT-SHIFT READ TABLE itab – Lesen von Tabellenzeilen . Allgemeine Informationen zum Thema Tabellenverarbeitung . Der Befehl “READ TABLE itab” in seiner Wirkungsweise. . Die Syntaxbeschreibung des Befehls . READ TABLE itab WITH KEY arg; Lesen von Tabellenzeilen . Lesen direkt interne Tabelle mit Schlüssel; . READ TABLE itab WITH KEY arg; … COMPARING, . “READ TABLE itab {INTO wb} WITH KEY arg BINARY SEARCH” . Der Suchschlüssel . BINARY SEARCH . Die Länge des Schlüsselfeldes . Die relative Adressierung des Schlüsselfeldes . Ein Hinweis . Das Suchargument wird linksbündig verwendet . Das linksbündige Suchargument und “… BINARY SEARCH” . Doppelter Suchschlüssel in der Tabelle . Nachselektion bei ” … BINARY SEARCH” . Die Systemfelder SY-SUBRC und SY-TABIX . Sequentielles Suchen (kein “BINARY SEARCH”) . Gesuchter Satz gefunden . Gesuchter Satz nicht gefunden . Suchen mit ” … BINARY SEARCH” . Gesuchter Satz gefunden . Satz nicht gefunden – Suchschlüssel kleiner . Satz nicht gefunden – Suchschlüssel größer . Anwendungsmöglichkeiten in Report-Beispielen . Der “READ TABLE itab” in Report-Beispielen . Die Beispielprogramme . READ TABLE itab “READ TABLE itab {INTO wa} WITH KEY = arg1 {BINARY SEARCH}” . Die Länge von “keyfield” . Das Argument als Direktwert . BINARY SEARCH . READ TABLE itab INTO wb … . “READ TABLE itab WITH KEY tfield1 = arg1 tfield2 = arg2 … . Das Argument als Direktwert oder Variable . Konvertierungen . INTO wb (Ab 3.0) . BINARY SEARCH . Die relative Adressierung des Schlüsselfeldes . Das Suchargument wird linksbündig verwendet . Runde Klammern nur wenn das Schlüsselfeld indirekt genannt wird . SY-SUBRC = Prüfung des Suchergebnisses . BINARY SEARCH . SY-SUBRC und SY-TABIX bei Anwendung von “BINARY SEARCH” . Mehrfacher Suchbegriff in dem Datenbestand . Anwendungsmöglichkeiten in Report-Beispielen . Der Befehl “READ TABLE itab WITH KEY …” in der Anwendung . Die Beispielprogramme . Beispiel-Report-C-Feld READ TABLE IT1 WITH KEY CFELD1 = ‘XYZ’. . READ TABLE IT1 WITH KEY CFELD1 = V1. . READ TABLE IT1 WITH KEY CFELD1 = ‘YZ’ INDEX1 = 24. . READ TABLE IT1 WITH KEY CFELD1+1(4) = ‘KLMN’. . READ TABLE IT1 WITH KEY (V1) = ‘UVWXZ’. . READ TABLE IT1 WITH KEY (V1) = ‘EFGHI’. . Beispiel-Report-DIV-Felder FORM FILL2-IT1 . FORM DISPLAY-IT1. . FORM READ-KEY-FIELD-CN. . FORM READ-KEY-FIELD-CNIP. . FORM READ-KEY-FIELD-C-OFFS-N. . FORM READ-KEY-INDIREKT. . FORM READ-KEY-INDIREKT-AND-C. . FORM READ-KEY-IN-WORKAREA. . Beispiel-Report-KEY-ALL READ TABLE itab INDEX n – Indexzugriff . INTO wb . Allgemeine Anwendungshinweise . Die erste Tabellenzeile lesen . Klare Anweisungen formulieren . Die letzte Tabellenzeile lesen . Der Umfang einer Tabelle kann sich ändern . Über den Index eine Tabelle rückwärts lesen . Zunächst das Tabellenende bestimmen . Das Systemfeld SY-TABIX . Anwendungsmöglichkeiten in Report-Beispielen . Report-INDEX-DIVERSE . Report-INDEX-ZUFALL . Report-SUCHEN-ALTERNATIV . Report-INDEX-DIVERSE Report-INDEX-ZUFALL Report-SUCHEN-ALTERNATIV Anwendung der Leseroutine in der Praxis SELECT-Befehl – die verschiedenen Befehlsklauseln . Der allgemeine Befehlsaufbau von “SELECT …” . SELECT command tfx {destination} FROM source {WHERE . SELECT command tfx (SELECT-Klausel) . SELECT { SINGLE { FOR UPDATE } . DISTINCT } * SELECT { SINGLE { FOR UPDATE } . DISTINCT } tfn SELECT { SINGLE { FOR UPDATE } . DISTINCT } tf1 AS af1 SELECT { SINGLE { FOR UPDATE } . DISTINCT } stat-func SELECT { SINGLE { FOR UPDATE } . DISTINCT } (itab) {INTO destination}(INTO-Klausel) . Workbereich {destination} als Feldleiste . SELECT … INTO wb … . SELECT … INTO CORRESPONDING FIELD OF wb … . SELECT … INTO (v1, v2, …) . Workbereich {destination} als interne Tabelle . SELECT … INTO TABLE itab {PACKAGE SIZE n} … . SELECT … INTO CORRESPONDING FIELD OF TABLE itab {PACKAGE SIZE n} . SELECT … APPENDING TABLE itab {PACKAGE SIZE n} . SELECT … APPENDING CORRENSPONDING FIELDS OF TABLE itab {PACKAGE SIZE n} . FROM source (FROM-Klausel) . SELECT … FROM etab . SELECT … FROM etab CLIENT SPECIFIED … . SELECT … FROM etab BYPASSING BUFFER … . SELECT … FROM etab UP TO n ROWS … . SELECT … FROM (etab_name) . SELECT … FROM (etab_name) CLIENT SPECIFIED … . SELECT … FROM (etab_name) BYPASSING BUFFER … . SELECT … FROM (etab_name) UP TO n ROWS … . {WHERE condition}(WHERE-Klausel) . Die WHERE-Klausel mit statischen Elementen . Logische Operatoren . SELECT … WHERE tf1 lgop lv2 . BOOL-Operatoren . SELECT … WHERE NOT condition . SELECT … WHERE con1 AND cond2 . SELECT … WHERE con1 OR cond2 . Stringoperatoren . SELECT … WHERE tf1 LIKE lv2 . SELECT … WHERE tf1 IS NULL . LOOP AT itab WHERE itf1 strOp v2/lit . Range-Operatoren (Bereichsoperatoren) . SELECT … WHERE tf1 IN (lv2, lv3, …) . SELECT … WHERE tf1 BETWEEN lv2 AND lv3 . WHERE-Klauseln mit dynamischen Elementen . SELECT … WHERE (itab1) . SELECT … WHERE cond AND (itab1) . SELECT … WHERE tf1 IN itab2 . SELECT … FOR ALL ENTRIES IN itab1 WHERE cond . {GROUP BY tfn}(GROUP-Klausel) . SELECT … GROUP BY tf1, tf2 … . SELECT … GROUP BY (itab1) . {ORDER BY … }(Sequence-Klausel) . SELECT … ORDER BY PRIMARY KEY . SELECT … ORDER BY tf1, tf2 … . SELECT … ORDER BY (itab1) . Allgemeine Anwendungshinweise zum SELECT-Befehl . Ein formelles Beispiel: . “SELECT * FROM etab … ENDSELECT.” (Syntax) . SELECT * . FROM etab. . Weitere Befehle in der SELECT-Schleife . Die Schachtelung von SELECT-Befehlen ist erlaubt . ENDSELECT . Der Befehl “SELECT” als allgemeiner Lesebefehl … . Das Datenbankprogramm und die verwalteten Daten . Eigene SQL-Sprache des Datenbankverwaltungsprogramms . Die ABAP/4® Datenbankbefehle . COMMIT WORK . DELETE . INSERT . MODIFY . ROLLBACK WORK . SELECT . UPDATE . Die Interpretation der Datenbankbefehle . Die verschiedenen Tabellenarten (Übersicht) . Transparente Tabellen . Pool-Tabellen . Cluster-Tabellen . Import/Export-Tabellen (Cluster) . Der SELECT-Befehl – ein mächtiges und vielseitiges Softwarewerkzeug . Der Grundbefehl “SELECT * FROM etab … ENDSELECT” . Das Verlassen der Schleife . Die Auswahl der zu lesenden Tabellenzeilen . Die Ergänzungen zum Grundbefehl “SELECT …” . “SELECT * FROM etab WHERE bedingung … ENDSELECT.” . “SELECT * FROM etab ORDER BY PRIMARY KEY … ENDSELECT.” . “SELECT * FROM etab ORDER BY v1 v2 vn … ENDSELECT.” . “SELECT * FROM etab INTO xtab … ENDSELECT.” . “SELECT * FROM etab BYPASSING BUFFER … ENDSELECT.” . “SELECT * FROM etab UP TO n ROWS … ENDSELECT.” . “SELECT * FROM etab CLIENT SPECIFIED … ENDSELECT.” . Die formellen Voraussetzungen für den Einsatz von “SELECT” . Die externe Tabelle muß im Data-Dictionary vorhanden sein . Editorkommando “SHOW etab” . Die externe Tabelle muß allgemein im Report unter “TABLES name” genannt sein . Mandantentabellen und “SELECT” . Allgemeiner Hinweis für die Tabellenbearbeitung . Mandantenabhängige Tabellenverarbeitung . Mandantenunabhängige Tabellen . Lesen von Tabellenzeilen mit oder ohne Update . Keine Berechtigungsprüfungen beim Lesen mit “SELECT” . Auswirkung einer fehlenden Berechtigungsprüfung . “AUTHORITY-CHECK” . Fehlerhafte Berechtigungsprüfung WHERE-Klausel – allgemeiner Überblick . Ein Überblick über die verschiedenen WHERE-Bedingungen . Die weiteren Operanden und Operatoren in . Kurzbeschreibungen der Wirkungsweise von . Ein gesondertes Thema bildet der … . Die WHERE-Klausel (allgemeine Beschreibung) . Der Grundbefehl: “SELECT command {INTO destination} FROM source {WHERE cond} . Die verschiedenen Klauseln des SELECT-Befehls . SELECT-Klausel . INTO-Klausel . FROM-Klausel . WHERE-Klausel . GROUP-Klausel . ORDER-Klausel . Die WHERE-Klausel in unterschiedlichen Befehlen . SELECT … WHERE condition . UPDATE etab SET tf1 … WHERE condition … . DELETE FROM etab WHERE condition … . OPEN CURSOR cf1 FOR SELECT … WHERE condition . LOOP at itab WHERE condition . Der gezielte Einsatz der WHERE-Klausel – Voraussetzung für Optimierungen . Der Umfang der WHERE-Klausel . WHERE-Klauseln mit statischen Elementen . Die logischen Operatoren in WHERE-Bedingungen . SELECT … WHERE tf1 logop v2/lit … . Die booleschen Operatoren in WHERE-Bedingungen . SELECT … logBed1 AND logBed2 … . SELECT … logBed1 OR logBed2 … . SELECT … NOT bedingung … . SELECT … logBed1 AND ( LogBed2 OR LogBed2 ) . Stringoperatoren . SELECT … WHERE tf1 LIKE v2/lit . SELECT … WHERE tf1 IS NULL . LOOP AT itab WHERE itf1 strOp v2/lit . Range-Operatoren (Bereichsoperatoren) . SELECT … WHERE tf1 IN (v2, lit…) . SELECT … WHERE tf1 BETWEEN v2/lit AND v3/lit . WHERE-Klauseln mit dynamischen Elementen . SELECT … WHERE (itab) . SELECT … WHERE logBed AND (itab) . SELECT … WHERE tf1 IN itab . SELECT … FOR ALL ENTRIES in vtab WHERE logBedingung . Das Fehlen der WHERE-Klausel in den Selektions-Befehlen . SELECT … . DELETE . UPDATE . OPEN CURSOR … . Die Aufgaben der WHERE-Klausel . SELECT * FROM etab WHERE bedingung . DELETE FROM etab WHERE bedingung . Kurzkommentar Beispiel . UPDATE etab … WHERE bedingung . Kurzkommentar Beispiel . LOOP AT itab WHERE bedingung . Kurzkommentar Beispiel . Mehrere Einzelbedingungen werden zu einer Gesamtbedingung verknüpft . WHERE-Bedingungen in “SELECT”, “UPDATE”, “DELETE” . WHERE-Bedingungen in “LOOP AT itab” . AND-Verknüpfung . OR-Verknüpfung . NOT-Funktion . Der Feldtyp des Vergleichswertes (… WHERE tfeld eq lv2) . Keine relative Adressierung bei externen Tabellen . Externe Tabellen . Interne Tabellen . Die Primärschlüsselfelder (= schneller Zugriff) . Primärschlüssel nicht vollständig in WHERE-Klausel genannt . Die Tabellenfelder des Funktionsteils . Die Reihenfolge der WHERE-Felder ist wesentlich . Wenn die WHERE-Klausel in dem SELECT-Befehl fehlt . Auf das Selektionsvolumen achten . ORDER BY PRIMARY KEY . ORDER BY tf1 tf2 tfx . Externe Tabellenarten und die verschiedenen . Andere externe Tabellenarten . Interne Tabellenbearbeitung . Die meisten Stringoperatoren gelten auch für … . Relative Adressierung nur in “LOOP … WHERE …” . Interne Tabellen mit “WHERE …” bearbeiten . Allgemeine Arbeitsweise im “LOOP AT itab …” . Laufzeiten verringern – einsparen