Sie sind auf Seite 1von 222

IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge

1. Legen Sie ein Paket zur Zuordnung ihrer Repository-Objekte an

---------- > Aktionen die Rituell sind<

> <

SE80 aufrufen + Ziehen Sie die Karte >Lokale Objekte<

> <

>Die Brillen-Ikone anklicken <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
2

Erweiterte Optionen + Pakete anklicken

Legen Sie ein Paket an

> <

>Anlegen-Ikone anklicken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
3

Enter

> <

>Anlegen-Ikone anklicken <

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
4

>Sichern-Ikone anklicken <

> <

>Enter-Ikone anklicken <

> <

> anklicken

2. Eröffnen Sie einen 2.Modus und sichten Sie die zu verarbeitende Tabelle

> <

>Oder Alt YE<

SE11 starten
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
5

> <

> <

>

<

>Erkennen Sie den Keyteil<


>Erkennen Sie die Spezialisierung gemäß der Datenmodellierungsgrundlagen<

T000
---- SCARR
--------------- SPFLI
------------------------ SFLIGHT

Eingabehilfe/Prüfung

3. Kopieren Sie die Tabellendefinition


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
6

> <

>Kopieren-Ikone anklicken <

> <

>Enter-Ikone anklicken <

> <

>Sichern-Ikone anklicken + Enter<

>
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
7
im 1.Modus refresh

<

>Menueeintrag wählen<

> <

>Wir verzichten hier auf das Protokoll<

4. Legen Sie ein Programm an das die Inhalte aus der Tabelle SBOOK übernimmt
(SE38)
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
8

> <

> < Ohne Top-Include

>

<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
9

>Sichern-Ikone anklicken <

>Enter-Ikone anklicken <

*
* ABAP-Anweisungen setzen sich aus
* Token (die kleinste sinngebende Einheit einer Programmiersprache )
* zusammen und werden durch einen Punkt (.) abgeschlossen.
* Die Token einer Anweisung müssen durch mindestens ein Leerzeichen getrenn
t werden
* Eine ABAP-Anweisung ist nicht auf eine Zeile des Quelltexts beschränkt
* und es wird nicht nach Groß- und Kleinschreibung unterschieden. *
* Das Zeichen * an der ersten Stelle einer Programmzeile definiert diese Ze
ile als
* Kommentarzeile. Der Inhalt einer Kommentarzeile ist beliebig
* und wird beim Generieren des Programms vom ABAP Compiler ignoriert.
*
* Das Zeichen " an einer beliebigen Stelle einer Programmzeile definiert de
n
* dahinter folgenden Inhalt der Zeile bis zum Zeilenende als Kommentar
* (Zeilenkommentar), der ebenfalls beim Generieren des Programms vom
* ABAP Compiler ignoriert wird. Ausnahmen von dieser Regel sind " in Zeiche
nliteralen
* =========================================================================
=============
*&---------------------------------------------------------------------*
*& Report ZSBOOK_INSERT_00
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*
* Die Anweisung REPORT muss nach der Auflösung eventueller Include-
Programme
* die erste Anweisung eines eigenständigen Programms sein und leitet ein
* ausführbares Programm ein.
* Der Name rep muss direkt angegeben werden
*
* Das Schlüsselwort REPORT kann in der Anweisung durch das Schlüsselwort
* PROGRAM ersetzt werden. In ausführbaren Programmen ist PROGRAM gleichbede
utend
* mit REPORT und kann mit dessen Zusätzen verwendet werden
* =========================================================================
======
*report zsbook_insert_00.
*
* Die Anweisung DATA deklariert eine Variable mit beliebigem Datentyp.
* Das deklarierte Datenobjekt ist innerhalb des aktuellen Kontextes
* ab dieser Stelle sichtbar.
* ===================================================================
data: wa_dd02l type dd02l.
*
* Definition der Tabellenart einer internen Tabelle.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
10
* Standardtabellen werden systemintern über einen Tabellenindex verwaltet.
* Neue Zeilen werden entweder an die Tabelle angehängt oder an
* bestimmten Positionen eingefügt.
* Einzelne Zeilen werden entweder über den Tabellenschlüssel oder den Index
identifiziert
* =========================================================================
==============
data: itab type standard table of sbook.
*
* Das Schlüsselwort SELECTION-SCREEN leitet Anweisungen zum Anlegen
* und Gestalten von Selektionsbildern ein
* Diese Anweisungen definieren einen Block mit dem Namen
* control auf dem aktuellen Selektionsbild. Der Name block muss direkt
* angegeben werden und darf maximal 20 Zeichen lang sein.

* Der Zusatz WITH FRAME bewirkt, dass ein Rahmen um einen


* nicht-leeren Block gezeichnet wird. Es können maximal fünf Blöcke
* mit Rahmen geschachtelt werden
* =================================================================
selection-screen begin of block control with frame.
*
* Deklaration eines Parameters para der Länge len.
* Parameter sind Komponenten eines Selektionsbilds,
* denen im ABAP-Programm ein globales elementares Datenobjekt
* und auf dem Selektionsbild ein Eingabefeld zugeordnet sind.
* Der Name des Parameters para darf maximal acht Zeichen enthalten
* ==================================================================
parameters: tab(20) default 'ZBOOK_00'. "Einzugebender Tabellennamen
selection-screen end of block control.
*
* SELECT ist eine Open-SQL-Anweisung zum Einlesen von Daten aus einer oder
* mehreren Datenbanktabellen in Datenobjekte
*
* Sie liest eine Ergebnismenge, deren Struktur in result bestimmt wird,
* aus den in source angegebenen Datenbanktabellen und weist die Daten
* der Ergebnismenge den in target angegebenen Datenobjekten zu.
* Mit dem Zusatz WHERE wird die Ergebnismenge eingeschränkt.
* =========================================================================
select single * from dd02l into wa_dd02l " Existenzprüfung zum eingegebene
n Tabellennamen
where tabname = tab.
*
* Rückgabewert vieler ABAP-Anweisungen. Im Allgemeinen bedeutet der Inhalt
0,
* dass die Anweisung problemlos ausgeführt wurde. Je nachdem, durch welche
Anweisung
* sy-subrc gesetzt wurde, kann im Fehlerfall aus dem entsprechenden Wert
* die Fehlerursache abgeleitet werden.
* sy-subrc Bedeutung
* 0 Die Anweisung SELECT setzt sy-subrc bei jeder Wertübergabe an ein ABAP-
Datenobjekt auf 0.
* Außerdem setzt SELECT sy-subrc vor dem Verlassen einer SELECT-Schleife
über ENDSELECT auf 0,
* wenn in der Schleife mindestens eine Zeile übergeben wurde.
* 4 Die Anweisung SELECT setzt sy-subrc auf 4, wenn die Ergebnismenge leer
ist,
* d.h. keine Daten auf der Datenbank gefunden wurden.
* =========================================================================
============
if sy-subrc <> 0.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
11
*
* Diese Anweisung unterbricht den Programmablauf und gibt entweder den Kurz
text
* einer in msg angegebenen Nachricht in der Anmeldesprache des aktuellen Be
nutzers
* oder einen in txt angegebenen beliebigen Text als Nachricht aus.
* Das genaue Verhalten der Anweisung MESSAGE, d.h. wie der Text angezeigt
* und wie der Programmablauf nach der Anweisung MESSAGE fortgesetzt wird,
* ist kontextabhängig und wird durch die Angabe eines Nachrichtentyps in
* msg oder txt festgelegt.
* Mit den Zusätzen message_options kann dieses Verhalten verändert
* und die Platzhalter in Nachrichten ersetzt werden.
* Alle Messages werden über die Tabelle T100 verwaltet --> Pflege über SM30
* Nachrichtenklasse 00
* =========================================================================
============
message e002(00). " Tabelle nicht da
* wrong table, please input correct value !
endif.
select * from sbook into table itab. " Inhalt zur Übergabe beschaffen
* where carrid = 'LH'.
*
* Die Anweisung INSERT fügt eine oder mehrere in source angegebene Zeilen
* in die in target angegebene Datenbanktabelle ein.
*
* sy-subrc Bedeutung
* 0 Es wurde mindestens eine Zeile eingefügt.
* 4 Es konnte mindestens eine Zeile nicht eingefügt werden,
* da bereits eine Zeile mit dem gleichen Primärschlüssel bzw.
* einem eindeutigen Sekundärindex in der Datenbanktabelle vorhanden ist.
* =======================================================================
insert (tab) from table itab accepting duplicate keys. " Inhalt übernehmen
*
* Diese Anweisung schreibt den Inhalt des Datenobjekts dobj in die aktuelle
Seite
* der aktuellen Liste im Listenpuffer. Für dobj sind alle flachen Datentype
n und
* der Datentyp string zulässig, wobei Strukturen wie ein Datenobjekt vom Ty
p c
* behandelt werden und in Unicode-Systemen zeichenartig sein müssen
* =========================================================================
=======
write: /,'INSERT RETURNCODE = ', sy-subrc.

Aktion
- Zeile Parameters anpassen
- Programm aktivieren
- Prugramm ausführen + debuggen
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
12

5. Aufbau der Favoriten

> <

>

<

>Enter-Ikone anklicken <

> <

> <

>Enter-Ikone anklicken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
13

6. Kontrollieren Sie die Inhalte über die Transaktion SE11

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
14

> <

>Bearbeiten –Button anklicken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
15

> <

>Datenbank löschen – Button <

> <

>Positiv quittieren <

>Datenbank anlegen – Button <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
16

> <

>Positiv quittieren <

>Zurück-Ikone anklicken < (2x)

> <

>Anzeigen-Button <

>Inhalt-Ikone anklicken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
17

> <

>Anzahl Einträge Button <

>Zurück-Ikone anklicken < (3x)

7. Repository-Objekt Favoriten hinzufügen

> <

> <

>Enter-Ikone anklicken <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
18

> <

>auf das relevante Programm doppelt klicken<

>Favoriten-Ikone anklicken <

> <

> <

>Erneuter Einstieg in die SE80 führt auf das relevante Programm<


>dann Programm erneut ausführen (Zange)<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
19
8. Select-Option integrieren und Ausgabeliste definieren

Programm kopieren

neuen Namen vergeben + kopieren

Alle Teile kopieren

als Favorit hinzufügen

SQL – Insert entfernen


Write – entfernen
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
20

Neue Select-Option übrt die Fluggesellschaft

select-options: so_carr for wa_itab-carrid.

Neue Data-Anweisung

wa_itab type zbook_00

SQL-Zugriff auf die neue Tabelle anpassen

select * from zbook_00 into table itab. " Inhalt zur Übergabe beschaffen

Neue Loop – Anweisung am Programmende

loop at itab into wa_itab.

endloop.

In die Loop-Anweisung positionieren


Dann

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
21

> <

>Enter-Ikone anklicken <

> <

>Ihre Tabelle einbinden + Auswahl-Ikone anklicken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
22

> <

Relevante Einträge anklicken

>Übernehmen – Ikone anklicken < (2x)

>Pretty Printer<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
23

> <

>Enter-Ikone anklicken <

>Button <

>Sichern-Ikone anklicken und testen<

9. Erweitern Sie ihr Programm


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
24

1.Block nach dem letzten Data-Statement

*
* Select-Option definieren (+ Table-Anweisung )
* Deklaration eines Selektionskriteriums selcrit für ein Datenobjekt dobj
* oder einen in name angegebenen Typ.
* Selektionskriterien sind Komponenten eines Selektionsbildes,
* denen im ABAP-Programm eine Selektionstabelle sowie auf dem Selektionsbild
* zwei Eingabefelder und eine Drucktaste für Mehrfachselektion zugeordnet sind.
* =============================================
select-options: so_carr for sbook-carrid.

2.Block Sql-Ersatz

select * from sbook into table itab


where carrid in so_carr.

Lösungsblock

*
* ABAP-Anweisungen setzen sich aus
* Token (die kleinste sinngebende Einheit einer Programmiersprache )
* zusammen und werden durch einen Punkt (.) abgeschlossen.
* Die Token einer Anweisung müssen durch mindestens ein Leerzeichen getrenn
t werden
* Eine ABAP-Anweisung ist nicht auf eine Zeile des Quelltexts beschränkt
* und es wird nicht nach Groß- und Kleinschreibung unterschieden. *
* Das Zeichen * an der ersten Stelle einer Programmzeile definiert diese Ze
ile als
* Kommentarzeile. Der Inhalt einer Kommentarzeile ist beliebig
* und wird beim Generieren des Programms vom ABAP Compiler ignoriert.
*
* Das Zeichen " an einer beliebigen Stelle einer Programmzeile definiert de
n
* dahinter folgenden Inhalt der Zeile bis zum Zeilenende als Kommentar
* (Zeilenkommentar), der ebenfalls beim Generieren des Programms vom
* ABAP Compiler ignoriert wird. Ausnahmen von dieser Regel sind " in Zeiche
nliteralen
* =========================================================================
=============
*&---------------------------------------------------------------------*
*& Report ZSBOOK_INSERT_00
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*
* Die Anweisung REPORT muss nach der Auflösung eventueller Include-
Programme
* die erste Anweisung eines eigenständigen Programms sein und leitet ein
* ausführbares Programm ein.
* Der Name rep muss direkt angegeben werden
*
* Das Schlüsselwort REPORT kann in der Anweisung durch das Schlüsselwort
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
25
* PROGRAM ersetzt werden. In ausführbaren Programmen ist PROGRAM gleichbede
utend
* mit REPORT und kann mit dessen Zusätzen verwendet werden
* =========================================================================
======
*report zsbook_insert_00.
*
* Die Anweisung DATA deklariert eine Variable mit beliebigem Datentyp.
* Das deklarierte Datenobjekt ist innerhalb des aktuellen Kontextes
* ab dieser Stelle sichtbar.
* ===================================================================
data: wa_dd02l type dd02l,
wa_itab type zbook_00.
*
* Definition der Tabellenart einer internen Tabelle.
* Standardtabellen werden systemintern über einen Tabellenindex verwaltet.
* Neue Zeilen werden entweder an die Tabelle angehängt oder an
* bestimmten Positionen eingefügt.
* Einzelne Zeilen werden entweder über den Tabellenschlüssel oder den Index
identifiziert
* =========================================================================
==============
data: itab type standard table of sbook.
*
* Das Schlüsselwort SELECTION-SCREEN leitet Anweisungen zum Anlegen
* und Gestalten von Selektionsbildern ein
* Diese Anweisungen definieren einen Block mit dem Namen
* control auf dem aktuellen Selektionsbild. Der Name block muss direkt
* angegeben werden und darf maximal 20 Zeichen lang sein.

* Der Zusatz WITH FRAME bewirkt, dass ein Rahmen um einen


* nicht-leeren Block gezeichnet wird. Es können maximal fünf Blöcke
* mit Rahmen geschachtelt werden
* =================================================================
selection-screen begin of block control with frame.
*
* Deklaration eines Parameters para der Länge len.
* Parameter sind Komponenten eines Selektionsbilds,
* denen im ABAP-Programm ein globales elementares Datenobjekt
* und auf dem Selektionsbild ein Eingabefeld zugeordnet sind.
* Der Name des Parameters para darf maximal acht Zeichen enthalten
* ==================================================================
parameters: tab(20) default 'ZBOOK_00'. "Einzugebender Tabellennamen
selection-screen end of block control.
*
* SELECT ist eine Open-SQL-Anweisung zum Einlesen von Daten aus einer oder
* mehreren Datenbanktabellen in Datenobjekte
*
* Sie liest eine Ergebnismenge, deren Struktur in result bestimmt wird,
* aus den in source angegebenen Datenbanktabellen und weist die Daten
* der Ergebnismenge den in target angegebenen Datenobjekten zu.
* Mit dem Zusatz WHERE wird die Ergebnismenge eingeschränkt.
* =========================================================================
select single * from dd02l into wa_dd02l " Existenzprüfung zum eingegebene
n Tabellennamen
where tabname = tab.
*
* Rückgabewert vieler ABAP-Anweisungen. Im Allgemeinen bedeutet der Inhalt
0,
* dass die Anweisung problemlos ausgeführt wurde. Je nachdem, durch welche
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
26
Anweisung
* sy-subrc gesetzt wurde, kann im Fehlerfall aus dem entsprechenden Wert
* die Fehlerursache abgeleitet werden.
* sy-subrc Bedeutung
* 0 Die Anweisung SELECT setzt sy-subrc bei jeder Wertübergabe an ein ABAP-
Datenobjekt auf 0.
* Außerdem setzt SELECT sy-subrc vor dem Verlassen einer SELECT-Schleife
über ENDSELECT auf 0,
* wenn in der Schleife mindestens eine Zeile übergeben wurde.
* 4 Die Anweisung SELECT setzt sy-subrc auf 4, wenn die Ergebnismenge leer
ist,
* d.h. keine Daten auf der Datenbank gefunden wurden.
* =========================================================================
============
if sy-subrc <> 0.
*
* Diese Anweisung unterbricht den Programmablauf und gibt entweder den Kurz
text
* einer in msg angegebenen Nachricht in der Anmeldesprache des aktuellen Be
nutzers
* oder einen in txt angegebenen beliebigen Text als Nachricht aus.
* Das genaue Verhalten der Anweisung MESSAGE, d.h. wie der Text angezeigt
* und wie der Programmablauf nach der Anweisung MESSAGE fortgesetzt wird,
* ist kontextabhängig und wird durch die Angabe eines Nachrichtentyps in
* msg oder txt festgelegt.
* Mit den Zusätzen message_options kann dieses Verhalten verändert
* und die Platzhalter in Nachrichten ersetzt werden.
* Alle Messages werden über die Tabelle T100 verwaltet --> Pflege über SM30
* Nachrichtenklasse 00
* =========================================================================
============
message e002(00). " Tabelle nicht da
* wrong table, please input correct value !
endif.
select * from zbook_00 into table itab. " Inhalt zur Übergabe beschaffen
loop at itab into wa_itab.
write: / wa_itab-carrid,
wa_itab-connid,
wa_itab-fldate,
wa_itab-bookid,
wa_itab-customid,
wa_itab-forcuram,
wa_itab-forcurkey.
endloop.

10. Selektionslabel definieren

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
27
>

<

> < aktivieren

11. Variante definieren

> <

>Variante sichern <

> <

>Variante sichern <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
28

> <

>Variante holen <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
29

> <

12. Kopfzeilenaufbau für ihre Liste

>

<

>Sichern , Erneut starten + Drucken <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
30

> <

>Enter-Ikone anklicken <

> <

> <

>Ikone <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
31

> <

Löschen all ihrer Spoolaufträge

Optimieren Sie ihr Programm

13. Kontrollieren Sie ihre Objekte über das Infosystem

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE84 - Infosystem

Object Navigator
ABAP-Dictionary
+ Domänen

>alle Selektionen<
>letzter Änderer > ihre Userid
>ausführen<

Object Navigator
ABAP-Dictionary
+ Datenelemente

>alle Selektionen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
32
>letzter Änderer > ihre Userid
>ausführen<

Object Navigator
ABAP-Dictionary
+ Datenbanktabellen

>alle Selektionen<
>letzter Änderer > ihre Userid
>ausführen

14. Aufbau von Testdaten

Sollten keine Testdaten vorhanden sein ist zum Testdatenaufbau notwendig folgendes
Programm zu starten

Transaktion : SA38
Programm : sapbc_data_generator

Aktion : ausführen oder F8 2 x betätigen

15. Auswahl des Debuggers


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
33
Vor dem Start des Debuggers muss der Benutzer entscheiden, ob er mit dem Klassischen oder
dem Neuen Debugger arbeiten will. Dazu muss er in der ABAP-Entwicklungsumgebung, also
zum Beispiel im ABAP-Editor (TransaktionSE38) oder im Object Navigator
(Transaktion SE80), unter

Hilfsmittel
 Einstellungen
 ABAP Editor
 Debuggingden

gewünschten Debuggertyp auswählen.

===================================================================
==============================
Mit der Einstellung "Session-Breakpoints sofort aktiv" werden auch bereits laufende
Transaktionen und Programme sofort mit den neu gesetzten Session-Breakpoints
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
34
synchronisiert. Damit kann man dann z.B. ein lang laufendes Programm unterbrechen und in
den Debugger zwingen, indem man in einem parallelen Externen Modus derselben Anmeldung
einen
Session-Breakpoint an der richtigen Stelle setzt. (Testen wir später)
===================================================================
==============================

16. Durchlaufen des Quelltextes

Mit dieser Option wird das Programm Anweisung für


Einzelschritt Anweisung ausgeführt. Diese Art der Ausführung bietet vor
allem die Möglichkeit, in andere Programmeinheiten zu
verzweigen.
Mit dieser Option wird ein Programm zeilenweise abgearbeitet.
Ausführen Alle Arbeitsschritte der aktuellen Zeile werden
zusammengefasst. Dabei werden aufgerufene
Programmeinheiten vollständig ausgeführt.
Der Debugger kehrt an die Position zurück, an der das
Return
aufrufende Programm wieder die Steuerung übernimmt. Diese
Option ist vorgesehen, um aus anderen Programmeinheiten
zurückzukehren.
Mit dieser Option wird das Programm bis zum nächsten
Weiter
Breakpoint abgearbeitet. Sind im nachfolgenden Quelltext keine
weiteren Breakpoints vorhanden, so wird der Debug-Modus
beendet und das Programm ausgeführt. .

17. Start des Debuggers

Der Neue Debugger wird genauso gestartet wie der klassische Debugger. Allerdings wird nach
jedem Start des Neuen Debuggers ein neuer Modus geöffnet, wobei höchstens sechs (ab EHP6
9) externe Modi je Benutzersitzung verfügbar sind. Falls beim Start des neuen Debuggers kein
weiterer externer Modus verfügbar ist, wird in der Statuszeile die Meldung Kein weiterer
externer Modus für den neuen ABAP Debugger verfügbar angezeigt und der Start im alten
Debugger gestartet. In diesem Fall müssen nicht mehr benötigte Modi geschlossen werden.

- Betten Sie folgenden Programmcode ials neues Programm ein

Programmname ; Z_select_spfli_XX XX = Gruppe


=================================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
35
tables: spfli.
data: lt_spfli type standard table of spfli.
data: wa_spfli like line of lt_spfli.
select-options: pa_carr for spfli-carrid.
select * from spfli into table lt_spfli
where carrid in pa_carr.
loop at lt_spfli into wa_spfli.
write: / wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto.
endloop.
=================================

Vorgehen

Transaktion : SE38
Programm : ; Z_select_spfli_XX
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
36

> <

> <> <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
37

> <> <

Zustand nach Einbinden des Quellcodes

Pflegen Sie der Optik wegen die Selektionstexte


Dokumentieren und optimieren Sie ihr Programm

===================================================================
Die Zeit, die der auf Eingabe wartende Neue Debugger aktiv ist, wird durch den
Profilparameter rdisp/max_debug_lazy_time begrenzt, der standardmässig auf 600 Sekunden
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
38
eingestellt ist. Nach Ablauf dieser Zeitspanne wird der Debugger-Prozess automatisch beendet
und die Kontrolle wieder an die Anwendung übergeben. Mit Hilfe der Transaktion RZ11 kann
der Systemadministrator den Wert dieses Parameters ändern, indem er die
Funktionen Ändern  Wert ändern aufruft.
===================================================================
========

> <> <

Startmöglichkeit 1
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
39
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
40

Ggf startet der Debugger in einer Routine die Sie nicht zuordnen können.
Passiert sehr oft bei Selektions-Options
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
41
Vorgehen :

weiter mit oder F8 bis zum Selektionsbild

/h - Debugger aktivieren dann > < oder F8

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
42

weiter mit oder F8 bis zur Liste


aus der Liste mit dem 2 x zurück

Startmöglichkeit 2

aus der ABAP-Editor Maske

Startmöglichkeit 3

aus dem ABAP Editor Einstieg

Debugger Breakpoint auf Zeile 18 .Dann Bedingung zuführen und testen


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
43

Breakpoints überspringen bis Zähler


Mit dieser speziellen Form von dynamischen Breakpoints können Sie Breakpoints überspringen
bis der gesetzte Zähler erreicht ist. Voraussetzung ist das das definierende Programm
im Debug-Modus ausgeführt wird

Setzten Sie einen Breakpoint in Zeile 18

Testen Sie

18. Tracen Sie ihre Application


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
44
Starten Sie die Transaktion ST05_OLD wenn vorhanden oder ST05

Wenn der Trace noch nicht eingeschaltet ist schalten Sie den Trace ein
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
45

Starten Sie Ihr Programm und führen es aus


Kontrollieren Sie ihren Tracelauf
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
46

Einschränken auf Ihren User und Anpassen der Endezeit

Klicken Sie das Fernglas an und suchen Sie die Tabelle SPFLI
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
47

Erkennen Sie die gelesenen Sätze


Erzeugen Sie einen Excecution-Plan

> <

wird datenbankspezifisch angezeigt


zurück mit dem grünen Pfeil

Schauen Sie sich die DDIC-Informationen an

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
48

Inhalt > < Ausführen > <


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
49

4 x mit dem grünen Pfeil zurück


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
50

Erkennen der Beziehung

19. Tracen Sie ihre Application im Debugger

- Select
- Loop

Starten Sie ihr Programm im Debug-Mode


Wählen Sie das neue Werkzeug Trace
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
51
Aktivieren Sie den SQL-Trace

Wickeln Sie nur die Datenbeschaffung ab

Stoppen Sie ihren Trace und lassen sich die Daten anzegen

Erkenne Sie ihren Zugriff


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
52
20. Optimieren Sie ihr Programm

types: begin of t_spfli,


carrid type spfli-carrid,
connid type spfli-connid,
cityfrom type spfli-cityfrom,
cityto type spfli-cityto,
end of t_spfli,
tt_spfli type standard table of t_spfli.
data: it_spfli type tt_spfli.
field-symbols: <it_spfli> type tt_spfli,
<is_spfli> type line of tt_spfli.
select-options: pa_carr for <is_spfli>-carrid.
assign it_spfli to <it_spfli>.
select * from spfli package size 1000
into corresponding fields of table <it_spfli>
where carrid in pa_carr.
endselect.
loop at <it_spfli> assigning <is_spfli>.
write: / <is_spfli>-carrid,
<is_spfli>-connid,
<is_spfli>-cityfrom,
<is_spfli>-cityto.
endloop.
message i000(zdaimlertest).

21. Legen Sie einen Programmrahmen über den Object Navigator an


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
53
SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
>ihr Paket<

>über die rechte Maustaste<

Enter-Taste zweimal betätigen

>sichern<
>sichern <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
54

>enter <x2
>aktivieren <
>enter <
>Objektliste anzeigen <
>rechte Maus Aktivierung<
>Favorit hinzufügen und positionieren<

ihr Programm über die rechte Maustaste aktivieren

Favoriten
+ Hinzufügen

Favoriten
+ Programme
+ + ihr relevantes

>Erkennen Sie den angelegten Rahmen<

22. Legen Sie ein Dynpro über den integrierten Screen Painter an
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
55

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
>ihr Programm<

>über die rechte Maustaste<

enter
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
56

>layout<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
57

Definieren Sie einen Rahmen

>Rahmenikone anklicken<
>über den Bildschirm ziehen<

Definieren Sie die Eingabeanwahl

Springen
+ Sekundaerfenster
+ + Dict/Programmfelder

Tabelle > z.B.: ZTB_PSTAMM_05


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
58

>Schlüsselfeld ZFEPERSNR05 markieren<


enter

>auf Ausgabefeld doppelt klicken<

>Suchhilfe eintragen<

>ZTB_PSTAMM_NACHNAME<

im Bild positionieren
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
59

Erkennen Sie die Feldbezeichnung des Eingabefeldes

Legen Sie eine Auswahlknopfgruppe mit den Funktionen


Update, Display an

> < anklicken und auf den Bildschirm ziehen


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
60

> < Felder benennen

> < anklicken

>aktivieren<
enter

>testen<
enter

23. Legen Sie Ablauflogik für ihr Dynpro an

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
>ihr Dynpro<

Karte ‚Ablauflogik’ ziehen


Den Befehl
---------------
PROCESS BEFORE OUTPUT.
module init.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
61
--------------
eingeben.

auf den Begriff ‚init’ doppelt klicken

(den Aufbau des Includenamen beachten)


enter x 2
>sichern<

Quellcode definieren
--------------
MODULE init OUTPUT.
display = 'X'.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
62
ENDMODULE.
--------------

>Pretty Printer<
>zurück< x 2

in das Top-Include klicken (doppelklick)


>Sichern<

eintragen
>aktivieren<

komplettes Programm aktivieren

24. Legen Sie einen Transaktionscode für ihren Modulpool an

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
>ihr Programm<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
63

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
64

> <
> <
> zurück bis Easy Access<
> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
65

> < doppeltklicken

>Suchhilfe testen<

> <

> <

25. Definieren Sie einen Ausgang aus ihrer Transaktion

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
66
>ihr Dynpro<
>ändern<

--------------
PROCESS AFTER INPUT.
module exit.
--------------

auf den Begriff ‚exit’ doppelt klicken.

enter x 2
>sichern<

module exit input.


set screen 0.
leave screen.
endmodule. " exit INPUT

Rufen Sie ihr Dynpro 100 im Änderungsmodus auf

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
67

> < Ankreuzfeld anklicken

> < Doppelt anklicken


> < eintragen

> <

> < ergänzen


> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
68

> <
>Beenden testen<

Definieren Sie im Module EXIT einen Breakpoint.

>erneuter testen<

Menuepfad
System
+++> Status testen
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
69

26. Definieren Sie die Datenbeschaffung in der PAI-Phase ihres Dynpros

SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator

Object Navigator
>Repository Browser<
>ihr Dynpro<
>ändern<

> < eintragen

auf > < doppeltklicken

> <
> x 2<
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
70

>cursor auf Leerzeile positionieren<


> < (ZTB_PSTAMM)

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
71

> <
> <

>im Top include<

> <
> <
>Transaktion testen<
>Pflegen Sie über SM30 ein paar Einträge<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
72

27. Fehlermeldung im Fehlerfall produzieren

>Anpassen wie oben<


>Ausstieg in der Commandoline mit /N<

28. Öffnen eines Feldes im Fehlerfall

>Testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
73

29. Öffnen mehrerer Felder im Fehlerfall

>Aktivieren + Testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
74

30. Arbeiten mit Chain-Input


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
75

31. Arbeiten mit Chain-Request

>

<

32. Definieren Sie den Ausgabebildschirm


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
76

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
77

>alle markieren<
> <

>Anpassen wie oben<


>aktivieren<
>zurück<

im 100er Dynpro
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
78

>Folgebild anpassen<

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
79
>

<
>Folgedynpro 200 setzen<
>alles aktivieren<
>testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
80
33. Steuern Sie ein optimales Beenden /Abbrechen / Zurück aus

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
81

>Pflegen wie oben<

>Pflegen wie oben<


>aktivieren<

>Ablauflogik im 100er Bild<

>aktivieren und testen<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
82

>Okcode Feld in b e i d e n D y n p r o s zuführen<

>Eingabe wird Muß<

>Modul Exit neu aufbauen<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
83

>Alle Function – Codes als Exit-Command definieren<

>200er Bild anpassen<


>Testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
84

34. Die Felder sind gemäß Modi zu behandeln


- Anzeigemodi = Felder protected
- Änderungsmodi = Felder eingebbar

> < eingeben


auf ;Feldsteuerung’ doppeltklicken

> <
> x 2<
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
85

><

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
86

35. Legen Sie ein Sperrobjekt zur aktualisierenden Tabelle an

> <

> <

>Primärtabelle angeben<
>Schreibsperre setzen<

Schreibsperre
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
87
Die gesperrten Daten können ausschließlich von einem Benutzer gelesen bzw. bearbeitet
werden. Sowohl die Anforderung einer weiteren Schreibsperre als auch einer Lesesperre
werden abgewiesen.
Lesesperre
Mehrere Benutzer können gleichzeitig lesend auf dieselben Daten zugreifen. Sobald ein Nutzer
jedoch die Daten bearbeitet, hat ein zweiter Benutzer keinen Zugang auf diese Daten. Die
Anforderungen weiterer Lesesperren werden akzeptiert, auch wenn diese von anderen
Benutzern kommen. Eine Schreibsperre wird abgewiesen.
erweiterte Schreibsperre
Während Schreibsperren mehrfach von der gleichen Transaktion angefordert und sukzessive
wieder abgebaut werden können, kann eine Erweiterte Schreibsperre auch von der gleichen
Transaktion nur ein einziges Mal angefordert werden. Jede weitere Anforderung einer Sperre
wird abgewiesen.

> <
> <

> <

><

> < einmal anklicken


> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
88

> <

> <

><

><

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
89

>Eintrag sichten<
in den 1.Modus wechseln

> x 3<

in den 2.Modus wechseln

> <

36. Bauen Sie die Sperrbausteine an optimaler Stelle in ihren Ablauf ein

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
90

> <

Doppelklick auf Sperren.

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
91

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
92

> <

Modul anlegen
Funktionsbaustein über Muster einbetten

> <

> < anklicken


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
93

> <

>alles aktivieren und mit sm12 testen<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
94

Integrieren Sie eine Kontrollabfrage in ihren ‚Abbrechen’ Vorgang

> <

Doppelklick auf POPUP_TO_CONFIRM.

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
95

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
96
><

>aktivieren<
>Anpassen,Aktivieren und Testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
97
Lagern Sie ihren zu aktualisierenden Datensatz in einer Work-Area zwischen und stellen
sie das Keyfeld generell als Ausgabe im 200er Bild ein

Im 200er Bild im Feld Personalnummer die Feldgruppe PRO(tect) definieren

> <

><
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
98

>im Lesemodul die Workarea übergeben<

<

<

>im TopInclude anpassen<


>testen der Zwischenlagerung<

Prüfen der Updaterelevanz

> < ergänzen

> < doppelt anklicken


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
99

> <
x 2<
> <

> < doppelt anklicken

> <
x 2<
> <

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
100
Update auf die Datenbank ohne Verbucher

> <
> <

Nur wenn gesichert wird soll geändert werden

> <

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
101
Definieren Sie einen Verbucherbaustein der ihren Datensatz verbucht

> <

> <
> >
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
102

> <

> <
> >

><

><
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
103

>

> <

><

><
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
104

> <

Integrieren Sie den Funktionsbaustein in ihren Ablauf

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
105

> <
> <

Setzen Sie beim Sichern ein CommitWork

>Entfernen Sie die Sichern-Abfrage<


> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
106

>ergänzen Sie den on Commit zusatz<

> <

> <
37. Grundlagen der Objektorientierung

>Doppelklick auf die markierte Zeile<

>zbeispiel1_00 00 = Gruppe anlegen<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
107

>sichern<
>lokales Objekt<

Betten Sie folgenden Codeblock ein

--------- Codeblock 1 -------------

*&---------------------------------------------------------------------*
*& Report ZBEISPIEL1_00
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZBEISPIEL1_00.

* Klassen sind Vorlagen für Objekte.


* Umgekehrt kann man auch den Typ eines Objekts als seine Klasse bezeichnen.
* Eine Klasse ist eine abstrakte Darstellung oder bildlich gesehen eine Bauanleitung
* für Objekte.
* Zur Beschreibung der Eigenschaften von Objekten enthalten Klassen Komponenten,
* welche den Zustand und das Verhalten von Objekten definieren.

* Lokale Klassen bestehen aus ABAP-Quelltext, der innerhalb der Anweisungen CLASS - EN
DCLASS
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
108
* eingeschlossen ist.
* Eine vollständige Klassendefinition besteht aus einem Deklarationsteil und falls erforderlic
h aus
* einem Implementationsteil.
* Der Deklarationsteil enthält die Deklaration aller Komponenten (Attribute, Methoden, Erei
gnisse)
* einer Klasse.
* Bei lokalen Klassen gehört der Deklarationsteil von Klassen zu den globalen Datendeklarat
ionen und
* sollte deshalb auch am Anfang des Programms stehen.
* Falls im Deklarationsteil einer Klasse Methoden deklariert werden, benötigt die Klasse auc
h einen
* Implementationsteil. Dieser besteht aus einem Anweisungsblock

CLASS counter DEFINITION.

* Public Section
*
* Alle im öffentlichen Abschnitt deklarierten Komponenten
* sind für alle Verwender sowie in den Methoden aller Erben
* und der Klasse selbst ansprechbar.
* Die öffentlichen Komponenten stellen die Schnittstelle
* der Klasse zu jedem Verwender dar.

PUBLIC SECTION.

* Methoden sind klasseninterne Prozeduren, die das Verhalten eines


* Objekts bestimmen.
* Sie haben Zugriff auf alle Attribute ihrer Klasse und können
* somit den Zustand eines Objekts verändern.
* Methoden haben eine Parameterschnittstelle, über die sie beim
* Aufruf mit Werten versorgt werden und über die sie Werte an
* den Aufrufer zurückgeben können.
* Die privaten Attribute einer Klasse können nur durch Methoden
* der gleichen Klasse geändert werden.

* Bezüglich Definition und Parameterübergabe ähneln Methoden


* den bisherigen Funktionsbausteinen.
* Eine Methode meth wird im Deklarationsteil einer Klasse deklariert
* und im teil der Klasse durch den Verarbeitungsblock

METHODS: set IMPORTING value(set_value) TYPE i,


increment,
get EXPORTING value(get_value) TYPE i.

* Private Section
*
* Alle im privaten Abschnitt deklarierten Komponenten sind nur
* in den Methoden der Klasse selbst ansprechbar und auch nicht
* für die Erben sichtbar.
* Die privaten Komponenten stellen somit keine Schnittstelle zu den
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
109
* Verwendern der Klasse dar.

PRIVATE SECTION.

DATA count TYPE i.


ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

DATA number TYPE i VALUE 5.

* Klassenreferenzen werden vollständig mit dem Zusatz


* ... TYPE REF TO class
* der TYPES- oder DATA-Anweisung definiert, wobei class eine Klasse bezeichnet.
* Eine Referenzvariable vom Typ Klassenreferenz heißt Klassenreferenzvariable
* oder ebenfalls kurz Klassenreferenz.

DATA cnt TYPE REF TO counter.

START-OF-SELECTION.

Break pwd.

* Die Anweisung CREATE OBJECT erzeugt eine Instanz einer Klasse bzw. ein Objekt
* und weist die Referenz auf das Objekt der Referenzvariablen oref zu.
* Direkt nach der Erzeugung des Objekts wird der Instanzkonstruktor
* der Klasse ausgeführt.

CREATE OBJECT cnt.

CALL METHOD cnt->set EXPORTING set_value = number.

DO 3 TIMES.
CALL METHOD cnt->increment.
ENDDO.

CALL METHOD cnt->get IMPORTING get_value = number.

WRITE number.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
110

Neue Schreibweise

CREATE OBJECT cnt.

cnt->set( EXPORTING set_value = number ).

DO 3 TIMES.
cnt->increment( ).
ENDDO.

cnt->get( IMPORTING get_value = number ).

WRITE number.

Debuggen Sie ihr Programm

Dann zurück zum Easy Access

38. Umsetzung der lokalen Klassen in globale Klassen

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
111
>

<

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
112

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
113

> <

> <

Attribute , Methoden und Paramter sichten und testen

Im Testprogramm Zeile anpassen und testen

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
114

39. Konstruktorenverwendung in einem neuen Programm zbeispiel2_00

--------- Codeblock 2 -------------

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS: constructor IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD constructor.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

DATA number TYPE i VALUE 5.


DATA cnt TYPE REF TO counter.

START-OF-SELECTION.

Break pwd.
CREATE OBJECT cnt EXPORTING set_value = number.

DO 3 TIMES.
CALL METHOD cnt->increment.
ENDDO.

CALL METHOD cnt->get IMPORTING get_value = number.

WRITE number.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
115

>anlegen<

40. Thema Vererbung


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
116

>sichern<
>lokales Objekt<

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PROTECTED SECTION.
DATA count TYPE i.
ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

CLASS counter_ten DEFINITION INHERITING FROM counter.


PUBLIC SECTION.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
117
METHODS increment REDEFINITION.
DATA count_ten(1) TYPE c.
ENDCLASS.

CLASS counter_ten IMPLEMENTATION.


METHOD increment.
DATA modulo TYPE i.
CALL METHOD super->increment.
WRITE / count.
modulo = count MOD 10.
IF modulo = 0.
count_ten = count_ten + 1.
WRITE count_ten.
ENDIF.
ENDMETHOD.
ENDCLASS.

DATA: count TYPE REF TO counter,


number TYPE i VALUE 5.

START-OF-SELECTION.

CREATE OBJECT count TYPE counter_ten.

CALL METHOD count->set EXPORTING set_value = number.

DO 20 TIMES.
CALL METHOD count->increment.
ENDDO.

41. Ereignisse
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
118

>anlegen<

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS increment_counter.
EVENTS critical_value EXPORTING value(excess) TYPE i.
PRIVATE SECTION.
DATA: count TYPE i,
threshold TYPE i VALUE 10.
ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD increment_counter.
DATA diff TYPE i.
ADD 1 TO count.
IF count > threshold.
diff = count - threshold.
RAISE EVENT critical_value EXPORTING excess = diff.
ENDIF.
ENDMETHOD.
ENDCLASS.

CLASS handler DEFINITION.


PUBLIC SECTION.
METHODS handle_excess FOR EVENT critical_value OF counter
IMPORTING excess.
ENDCLASS.

CLASS handler IMPLEMENTATION.


METHOD handle_excess.
WRITE: / 'Excess is', excess.
ENDMETHOD.
ENDCLASS.

DATA: r1 TYPE REF TO counter,


h1 TYPE REF TO handler.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
119
START-OF-SELECTION.

CREATE OBJECT: r1, h1.

* Mit diesem Zusatz werden die Ereignisbehandler der Liste handler1 handler2 ...
* für alle Objekte registriert, deren Ereignisse sie behandeln können.
* Das sind alle Objekte, deren Klassen gleich class oder Unterklasse von class sind
* bzw. das Interface intf direkt oder über eine Oberklasse implementieren.
* Diese Registrierung gilt auch für alle auslösenden Instanzen, die erst nach der Anweisung
SET HANDLER erzeugt werden

SET HANDLER h1->handle_excess FOR ALL INSTANCES.

DO 20 TIMES.
CALL METHOD r1->increment_counter.
ENDDO.

Interfaces

* Klassen, deren Objektinstanzen, und der Zugriff über Referenzvariablen bilden die Grundlage
von
* ABAP Objects. Allein mit diesen Mitteln ist es schon möglich typische Business-
Anwendungen mit
* Objekten wie Kunde, Auftrag, Position, Rechnung usw., zu modellieren und mit ABAP
Objects zu*
* implementieren.
* Es kommt aber oft vor, dass ähnliche Klassen eine gleichartige Funktionalität zur Verfügung
stellen müssen,
* die zwar unterschiedlich in den einzelnen Klassen kodiert ist, aber vom Benutzer mit der
gleichen Schnittstelle aufgerufen werden soll.
* Beispielsweise können wir uns die ähnlichen Klassen Sparkonto und Girokonto vorstellen,
die beide eine Methode zur Berechnung des Jahresabschlusses anbieten. Schnittstelle und
Name der Methode sind gleich, die eigentliche Implementierung ist jedoch unterschiedlich.
* Weiterhin möchte der Benutzer dieser Klassen, bzw. deren Instanzen, den Jahresabschluss für
alle Konten durchführen, ohne sich darum zu kümmern, welche Kontoart vorliegt.

INTERFACE status.
METHODS write.
ENDINTERFACE.

CLASS counter DEFINITION.


PUBLIC SECTION.
INTERFACES status.
METHODS increment.
PRIVATE SECTION.
DATA count TYPE i.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
120
ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD status~write.
WRITE: / 'Count in counter is', count.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
ENDCLASS.

CLASS bicycle DEFINITION.


PUBLIC SECTION.
INTERFACES status.
METHODS drive.
PRIVATE SECTION.
DATA speed TYPE i.
ENDCLASS.

CLASS bicycle IMPLEMENTATION.


METHOD status~write.
WRITE: / 'Speed of bicycle is', speed.
ENDMETHOD.
METHOD drive.
ADD 10 TO speed.
ENDMETHOD.
ENDCLASS.

DATA: count TYPE REF TO counter,


bike TYPE REF TO bicycle,
status TYPE REF TO status,
status_tab TYPE TABLE OF REF TO status.

START-OF-SELECTION.

CREATE OBJECT: count, bike.

DO 5 TIMES.
CALL METHOD: count->increment,
bike->drive.
ENDDO.

APPEND: count TO status_tab,


bike TO status_tab.

LOOP AT status_tab INTO status.


CALL METHOD status->write.
ENDLOOP.

Global umsetzen
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
121

42. Thema Pointer und Referenzen

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
122

CLASS counter IMPLEMENTATION.


METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter,
cnt_tab TYPE TABLE OF REF TO counter.

DATA number TYPE i.

START-OF-SELECTION.

CREATE OBJECT: cnt_1,


cnt_2.

MOVE cnt_2 TO cnt_3.

CLEAR cnt_2.

cnt_3 = cnt_1.

CLEAR cnt_3.

APPEND cnt_1 TO cnt_tab.

CREATE OBJECT: cnt_2,


cnt_3.

APPEND: cnt_2 TO cnt_tab,


cnt_3 TO cnt_tab.

CALL METHOD cnt_1->set EXPORTING set_value = 1.

CALL METHOD cnt_2->set EXPORTING set_value = 10.

CALL METHOD cnt_3->set EXPORTING set_value = 100.

DO 3 TIMES.
CALL METHOD: cnt_1->increment,
cnt_2->increment,
cnt_3->increment.
ENDDO.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
123

LOOP AT cnt_tab INTO cnt_1.


CALL METHOD cnt_1->get IMPORTING get_value = number.
WRITE / number.
ENDLOOP.

43. Legen Sie eine BadI-Schnittstelle an

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
124

> <

> <

> <

Karte > < ziehen

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
125

> <

> <

> <
> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
126

> <> <

> <
44. Kontrolle der Schnittstelle im Class builder

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
127

> <

>Kontrolle<

45. Legen Sie das Testprogramm an

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
128

> <

> <
´> <
> <

Coding einbetten --------

*&---------------------------------------------------------------------*
*& Report ZBADI_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZBADI_TEST .

tables: spfli.

data: wa_spfli type spfli,


it_spfli type table of spfli with key carrid connid.

*Initialise the object of the interface.

selection-screen begin of block b1.


select-options: s_carr for spfli-carrid.
selection-screen end of block b1.

start-of-selection.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
129
select * from spfli into corresponding fields of table it_spfli
where carrid in s_carr.

end-of-selection.
loop at it_spfli into wa_spfli.
write:/ wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-deptime,
wa_spfli-arrtime.

hide: wa_spfli-carrid, wa_spfli-connid.

endloop.

at line-selection.
check not wa_spfli-carrid is initial.
clear wa_spfli.

Coding Ende
Coding testen

Coding Block 2 einbetten ----------

*Initialise the object of the interface.


*data: exit_ref1 type ref to ZBADI_SPFLI_00.

get badi exit_ref1.


call badi exit_ref1->lineselection
EXPORTING
i_carrid = wa_spfli-carrid
i_connid = wa_spfli-connid.

Coding Ende vor clear wa_spfli.


Coding testen

46. Legen Sie eine Implementierung an


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
130

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
131

> <
> <

> < Doppelt anklicken

> <x2
> <

Methoden ABAP-Code

data : wa_flights type sflight,


it_flights type table of sflight.

format color col_heading.


write:/ 'Flight info of:', i_carrid, i_connid.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
132
format color col_normal.

select * from sflight


into corresponding fields of table it_flights
where carrid = i_carrid
and connid = i_connid.

loop at it_flights into wa_flights.


write:/ wa_flights-fldate,
wa_flights-planetype,
wa_flights-price currency wa_flights-currency,
wa_flights-seatsmax,
wa_flights-seatsocc.
endloop.

>aktivieren<
>Programm testen<

47. Legen Sie einen Schalter an


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
133
>SFW1<

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
134

> <

> <
> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
135

> <

> <

>Zeile markieren<
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
136

>Paket zuordnen<

> <
> <

48. Legen Sie eine Business Function an

>sfw2<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
137

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
138

> <

> <

Doppelklick auf die relevante Zeile

> <
> <
> x 3<

49. Steuern Sie den Badi als schaltbare Einheit


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
139

>Programmtest ohne Schalter<

> <

>umhängen des Repositoryobjektes<

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
140

> <

>Erneuter Programmtest< dann Schalter auf Stand-by<

><
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
141
>aktivieren<
>Testen der schaltbaren Einheit<

50. Ausnahmeklassen in der Objektorientierung

><

>anlegen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
142

>sichern<
>lokales Objekt<

Betten Sie folgenden Codeblock ein

--------- Codeblock 1 -------------

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.

CLASS counter IMPLEMENTATION.


METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
143
ENDCLASS.

DATA number TYPE i VALUE 5.


DATA cnt TYPE REF TO counter.

START-OF-SELECTION.

Break <ihr Username>


CREATE OBJECT cnt.

CALL METHOD cnt->set EXPORTING set_value = number.

DO 3 TIMES.
CALL METHOD cnt->increment.
ENDDO.

CALL METHOD cnt->get IMPORTING get_value = number.

WRITE number.

Debuggen Sie ihr Programm

51. Legen Sie eine globale Klasse an


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
144
><

>Zeile markieren<
>Importieren<
>lokales Objekt<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
145

>anzeigen<

>aktivieren<
>testen<

>Instanz<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
146

>ausführen<

>Ergebnis sichten<

Passen Sie ihr 1.Programm an


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
147

52. Ausnahme wenn beim addieren count > 10 ist

> <
>Doppelklick<

> <

> <

>

>Doppelklick auf die Ausnahme <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
148

> <

> <

> <

> < der Ausnahmeklasse , dann die Abwicklende

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
149

In der Abwickelnden

In der Ausnahmeklasse

> <

>

<

>aktivieren<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
150

TRY .
add 1 to count.
if count > 10.
RAISE EXCEPTION TYPE zcx_wert_groesser_10a
exporting count = count.
endif.
CATCH zcx_wert_groesser_10a into oref.
text = oref->get_text( ).
write text.
cleanup.
count = 0.
ENDTRY.

><

><

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
151
>

<

> <

>

<

>testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
152

Im Programm integrieren

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
153

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
154

53. Legen Sie ein Programm mit einer Write-Ausgabe an

> <

> <
> <

> <

>00 durch Gruppe ersetzen<

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
155

> <

> <

---------------- Coding Beginn ------------------------

report z_en_00.
write: / 'Zeile 1 Original'.
write: / 'Zeile 2 Original'.
write: / 'Zeile 3 Original'.

--------- Ende -------------------

> <
> <
> <

54. Legen Sie eine Enhancement-Section an

Diese Anweisungen machen einen Abschnitt des aktuellen Programms zu einer expliziten
Erweiterungsoption, wodurch er durch eine Quelltext-Erweiterung ersetzt werden kann. Bei
der Programmgenerierung ersetzt genau ein Quelltext-Plugin der zugeordneten
Erweiterungsimplementierung, dessen Schalter den Zustand stand-by oder an hat, diesen
Programmabschnitt. Falls einem Quelltext-Plugin kein Schalter zugeordnet ist, wird es wie mit
einem Schalter im Zustand an behandelt

--------- Coding Beginn ----------------------------------------------

REPORT Z_EN_00.
WRITE: / 'Zeile 1 Original'.
ENHANCEMENT-SECTION ZBLOCK1_00 SPOTS zspot_zu_zblock1_00.
WRITE: / 'Zeile 2 Original'.
END-ENHANCEMENT-SECTION:
WRITE: / 'Zeile 3 Original'.

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
156

>Erweiterungsspotbezeichnung eingeben<
>Zeile markieren<

> <
> <

55. Sichten Sie den angelegten Erweiterungsspot

>Doppelt anklicken<

> <

56. Ersetzen Sie die Enhancement-Section

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
157
>Cursor auf Enhancement Section<

> <

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
158

> <
> <
>Testen<

57. Erweitern Sie ihr Programm über implizite Erw.-Optionen

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
159

> <

>auf die Zeile mit dem Pfeil klicken<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
160

> <

> <

> <

> ^<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
161

> <
> <

58. Erweitern Sie ihr Programm durch Erweiterung des Erweiterungscodes

> <

> <> <

> <

> <

> x2<
> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
162

59. Zeichnen Sie eine Transaktion auf und definieren Sie daraus einen Funktionsbaustein
den Sie über Enhancement-Möglichk,eiten erweitern

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
163

> <

>enter<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
164

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
165

> <

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
166

im 1.Modus

> <

> <

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
167

> <

> <

60. Parametererweiterung Materialklasse (Warengruppe)

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
168

> <

> <

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
169
61. Integration eines Enhancement Spots

> <

> <

>Zeile markieren<
> <
> <
> < im Programm

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
170

> <

> <

> <
> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
171

> <
> <
> <

62. Betrachten Sie das Workflow-Interface

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
172

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
173
>

<
Die Methode BI_PERSISTENT~FIND_BY_LPOR wird von der SAP WebFlow Engine
aufgerufen, wenn eine persistent gespeicherte Darstellung eines Objektes in eine Instanz der
entsprechenden ABAP-Klasse umgewandelt werden soll.
Die Methode BI_PERSISTENT~LPOR ist das Gegenstück zur Methode
BI_PERSISTENT~FIND_BY_LPOR. Sie liefert die persistente Darstellung zu einer
vorhandenen Instanz eines ABAP-Objektes.
Die Methode BI_PERSISTENT~REFRESH wird von der SAP WebFlow Engine aufgerufen,
wenn das System sicherstellen muss, dass alle Werte des Objektes gültig sind bzw. genau mit
der persistenten Abbildung des Objektes übereinstimmen.
Die Methode BI_OBJECT~DEFAULT_ATTRIBUTE_VALUE liefert den Anzeigename des
Objektes.Wenn Sie die Methode in Ihrer Klasse nicht benötigen, sollten Sie eine “leere“
Implementierung (ohne weiteres Coding) vornehmen, um Programmfehler beim Systemaufruf
der Methode zu vermeiden.
Die Methode BI_OBJECT~EXECUTE_DEFAULT_METHOD ist die Standardmethode des
Objektes. Diese Methode wird ausgeführt, wenn z. B. im Business Workplace das Objekt
aufgerufen wird.
Mit Hilfe der Methode BI_OBJECT~RELEASE signalisiert das System, dass die Referenz auf
die Instanz nicht mehr benötigt wird. Die Referenz kann folglich aus der Instanzverwaltung
gelöscht werden. Nachdem die letzte Referenz aus der Instanzverwaltung gelöscht wurde,
kann der GARBAGE COLLECTOR den entsprechenden Speicherbereich freigeben.

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
174

==================================================================

63. Legen Sie eine globale Klasse an

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
175

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
176

> <
>

<

==================== Cut & Paste


MATNR Instance Attribute Public Type MARA-MATNR Materialnummer
====================

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
177

> <

> <

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
178

==================== Cut & Paste


**********************************************************************
* Das Schlüsselfeld des Objekts mit dem Importparameter füllen
matnr = im_matnr.
* Unsere Implementierung eines Existenz-Checks
select single * from mara into m_mara
where matnr = me->matnr.
if sy-subrc ne 0.
* Hier muss die Behandlung erfolgen, wenn das Material nicht auf der
* Datenbank vorhanden ist!
endif.
====================

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
179

Besonderheit
- Anpassen auf eigene Klasse

==================== Cut & Paste


types:
begin of t_instance,
matnr type mara-matnr,
instance type ref to zcl_00_mara,
end of t_instance .
types:
t_instances type standard table of t_instance .

====================

=========== Block 1:1 übernehmen

MATNR Instance Attribute Public Type MARA-MATNR Materialnummer


MST_INSTANCES Static Attribute Private Type T_INSTANCES Tabellen
Instanzen
M_POR Instance Attribute Private Type SIBFLPOR Lokale Persistente
Objektreferenz
M_MARA Instance Attribute Private Type MARAAllgemeine Materialdaten

Augenmerk
- static Attribute
- Private
- Typverwendung
- Besonderheit um eine Instanzverwaltung zu berücksichtigen muss ein das
Attribut M_POR vom Typ SIBLPOR angelegt werden.

=======================
class-data MST_INSTANCES type T_INSTANCES .
=====================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
180

Um die Instanzverwaltung zu implementieren wechseln Sie wieder auf


den Reiter Methoden und klicken Sie doppelt auf die Methode
BI_PERSISTENT~FIND_BY_LPOR und fügen Ihr Programmcoding hinzu.

><

=========================
**********************************************************************
* Datendeklaration
**********************************************************************
data: l_instance type ref to zcl_00_mara. "Referenz des eigenen Objekts
data: l_matnr type mara-matnr. "Materialnummer / Schlüssel
data: ls_instance type t_instance. "Verwaltung der Instanzen
**********************************************************************
* Programmlogik
**********************************************************************
* Überprüfung, ob bereits eine Lokale Persistente Objektrefererenz
* existiert
check lpor-instid is not initial.
* instid of import parameter LPOR is object key
l_matnr = lpor-instid.
* Gibt es bereits eine Instanz?
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
181
read table mst_instances with key matnr = l_matnr
into ls_instance.
* Wenn es noch keine Instanz gibt
if sy-subrc ne 0.
* Erzeugen des Objekts für die Instanzverwaltung
try.
create object l_instance
exporting
im_matnr = l_matnr.
catch cx_bo_error .
exit.
endtry.
* Anhängen der Instanzen
ls_instance-matnr = l_matnr.
ls_instance-instance = l_instance.
append ls_instance to mst_instances.
endif.
* Füllen des Rückgabewerts
result = ls_instance-instance.
endmethod. "BI_PERSISTENT~FIND_BY_LPOR

=======================================================
=

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
182

========================

*********************************************************************
*
* Programmlogik
*********************************************************************
*
* Erstellen der lokalen Persistenten Objektreferenz
m_por-catid = 'CL'.
m_por-typeid = 'ZCL_00_MARA'.
m_por-instid = me->matnr.
* Laden der Instanz in den Rückgabewert vom Typ SIBFLPOR
result = m_por.

==============================

>aktivieren und testen<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
183

> <

64. Erweitern Sie ihre globale Klasse


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
184

==============================

MATKL Instance Attribute Private Type MARA-MATKL


MTART Instance Attribute Public Type MARA-MTART
SPARTInstance Attribute Public Type MARA-SPART
BISMT Instance Attribute Public Type MARA-BISMT
ERNAM Instance Attribute Public Type MARA-ERNAM
DESCRIPTION Instance Attribute Public Type SYST-TITLE
EMAIL_ERNAM Instance Attribute Public Type AD_SMTPADR
================================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
185

=============================

**********************************************************************
* Programmlogik
**********************************************************************
* Ermitteln der Daten aus der MARA
select single * from mara into m_mara
where matnr = me->matnr.
* Zuweisen der Daten aus der Struktur in die Attribute
me->matkl = me->m_mara-matkl.
me->mtart = me->m_mara-mtart.
me->spart = me->m_mara-spart.
me->bismt = me->m_mara-bismt.
me->ernam = me->m_mara-ernam.

===================================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
186
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
187

======================
**********************************************************************
* Datendeklaration
**********************************************************************
data: l_matnr type mara-matnr, "Materialnummer
l_maktx type makt-maktx. "Materialkurztext
**********************************************************************
* Programmlogik
**********************************************************************
* Materialkurztext zum Material in lokale Variable schreiben
select single maktx from makt into l_maktx
where matnr = matnr
and spras = sy-langu.
* Führende Nullen bei interner Nummernvergabe löschen
l_matnr = matnr.
shift l_matnr left deleting leading '0'.
* Beschreibenden Text zusammensetzen
concatenate 'Material:'(001) l_matnr '-'(002) l_maktx into
description separated by space.

==========================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
188

====================

me->read_attributes( ).
me->set_description( ).

=========================

>aktivieren + test<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
189
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
190
============================

**********************************************************************
* Datendeklaration
**********************************************************************
data: lt_return type table of bapiret2,
lt_addsmtp type table of bapiadsmtp,
wa_addsmtp type bapiadsmtp.
**********************************************************************
* Programmlogik
**********************************************************************
* Ermitteln der E-Mail Adressen zum Erfasser
call function 'BAPI_USER_GET_DETAIL'
exporting
username = me->ernam
tables
return = lt_return
addsmtp = lt_addsmtp.
* Lesen der ersten E-Mail Adresse
read table lt_addsmtp index 1 into wa_addsmtp.
* Attribut ausgeben, wenn E-Mail Adresse gepflegt
if sy-subrc = 0.
me->email_ernam = wa_addsmtp-e_mail.
endif.

=============================

>aktivieren + testen<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
191
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
192

65. Erweitern Sie ihre globale Klasse um betriebswirtschaftliche Aktionen am Objekt


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
193
=================

**********************************************************************
* Programmlogik
**********************************************************************
* Überprüfung, ob das Material auf der Datenbank vorhanden ist
select single * from mara into m_mara
where matnr = me->matnr.
* Material nich vorhanden -> Ausnahme
if sy-subrc ne 0.
raise exception type cx_bo_error.
endif.
====================

================

**********************************************************************
* Das Schlüsselfeld des Objekts mit dem Importparameter füllen
matnr = im_matnr.
* Existenzcheck Methode aufrufen, Fehler abfangen
try.
call method me->existencecheck.
catch cx_bo_error.
exit.
endtry.
me->read_attributes( ).
me->set_description( ).

=====================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
194

========================

**********************************************************************
* Programmlogik
**********************************************************************
call function 'BAPI_MATERIAL_DISPLAY'
exporting
material = matnr
* MATERIAL_EVG =
importing
return = ex_return
.

============================

>aktivieren und test<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
195

> <

===================
**********************************************************************
* Programmlogik
**********************************************************************
try.
display( ).
catch cx_root.
endtry.
======================

>
<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
196

************************************************************************
* Programmlogik *
************************************************************************
set parameter id 'MAT' field matnr.
set parameter id 'MXX' field im_statm.
call transaction 'MM03' and skip first screen.

**********************************************************************
* Programmlogik
**********************************************************************
set parameter id 'MAT' field matnr.
call transaction 'MM02' and skip first screen.

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
197
>

<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
198

========================

**********************************************************************
* Programmlogik
**********************************************************************
call function 'BAPI_STANDARDMATERIAL_CREATE'
* EXPORTING
* NEWMATERIAL = ' '
* NEWMATERIAL_EVG =
importing
material = ex_matnr
* NEWMATERIAL =
return = ex_return
* MATERIAL_EVG =
* NEWMATERIAL_EVG =
.

============================

66. Workflow-Muster definieren

> <

><
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
199

<

<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
200
>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
201
>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
202

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
203
<

<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
204

> <

3 x zurück

>

<

Zurück x 2
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
205
Aktivieren
Testen

Über swel kontrollieren

>

<

67. Standardaufgabe definieren


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
206
>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
207

>
<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
208

68. Ereignisdefinition und Erzeugung

=============

*********************************************************************
* Programmlogik
**********************************************************************
call function 'BAPI_MATERIAL_DISPLAY'
exporting
material = matnr
* MATERIAL_EVG =
importing
return = ex_return
.
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
209
case ex_return-number.
when '000'. "Material wurde angezeigt
when '262'.
raise exception type cx_bo_error
exporting textid = 'Material nicht übergeben'.
when '305'.
raise exception type cx_bo_error
exporting textid = 'Material exsistiert nicht'.
when others.
raise exception type cx_bo_error
exporting textid = 'Anderer Fehler'.
endcase.
===================

=====================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
210
**********************************************************************
* Datendeklaration
**********************************************************************
data: l_event_container type ref to if_swf_ifs_parameter_container.
**********************************************************************
* Programmlogik
**********************************************************************
call function 'BAPI_STANDARDMATERIAL_CREATE'
* EXPORTING
* NEWMATERIAL = ' '
* NEWMATERIAL_EVG =
importing
material = ex_matnr
* NEWMATERIAL =
return = ex_return
* MATERIAL_EVG =
* NEWMATERIAL_EVG =
.
case ex_return-number.
when '356'. "Material wurde angelegt
try.
*--- get the event container that is used to transport the event
call method cl_swf_evt_event=>get_event_container
exporting
im_objcateg = 'CL'
im_objtype = 'ZCL_00_MARA'
im_event = 'CREATED'
receiving
re_reference = l_event_container.
*--- set the values of the parameters
call method l_event_container->set
exporting
name = 'ERNAM'
value = sy-uname.
*--- raise the event
call method cl_swf_evt_event=>raise
exporting
im_objcateg = 'CL'
im_objtype = 'ZCL_00_MARA'
im_event = 'CREATED'
im_objkey = ex_matnr
im_event_container = l_event_container.
*--- start the receivers (tRFC)
commit work.
catch cx_swf_evt_exception.
catch cx_swf_cnt_container.
endtry.
endcase.
==================================
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
211

> <

> <
>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
212
>

<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
213

> <

> <

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
214

> <

69. Wiederholung CL – Workflow Abwicklung

Überprüfen Sie ihre Klasse hinsichtlich der korrekten Methodenabwicklung

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
215

>Doppelklick<

> <

Die Methode Create muss ein Ereignis erzeugen


Testen der Methode Create + Display und Kontrolle über SWEL

70. Standardaufgabe definieren


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
216

> <

>Doppelklick<

- Aufgabentyp TS Standardaufgabe wählen und Ikone Anlegen drücken<


IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
217
>

<

>Sichern
>Synchrone Objektmethode
>Sichern
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
218

>

<

>Bearbeiterzuordnung pflegen

> <

>anlegen<

> <

>Benutzer<

> <
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
219

Ihr Benutzer

> <

>zurück

>
<

>Auslösende Ereignisse
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
220

>

<

>Aktivieren des Ereginisses und test<

> <

>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
221
>

<
IT Informatik für AL-KO - -Abap Grundlagen + Analysewerkzeuge
222