SAP Jobsuche bei DV-Treff
BjoernB
  • BjoernB
  • SAP Forum - Neuling Thema Starter
vor 15 Jahre
Hi Ihr,

da ich gerade etwas zeit habe versuche ich mir selbst etwas ABAP beizubringen 🙂 (Also nicht wundern über Fehler oder sonstiges geschreibe 🙂 )

Ich habe mir ein Buch gekauft und bin auch schon recht weit.. nun habe ich mich mal entschlossen selbst ein wenig zu basteln.. Herausgekommen ist das Programm das ich unten als CODE anhänge.


SPAN {

font-family: "Courier New";

font-size: 10pt;

color: #000000;

background: #FFFFFF;

}

.L0S31 {

font-style: italic;

color: #808080;

}

.L0S32 {

color: #3399FF;

}

.L0S33 {

color: #4DA619;

}

.L0S52 {

color: #0000FF;

SPAN {

font-family: "Courier New";

font-size: 10pt;

color: #000000;

background: #FFFFFF;

}

.L0S31 {

font-style: italic;

color: #808080;

}

.L0S32 {

color: #3399FF;

}

.L0S33 {

color: #4DA619;

}

.L0S52 {

color: #0000FF;

}
*&---------------------------------------------------------------------*
*& Report  Z_TEILNEHMERLISTE_EINFUEGEN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_TEILNEHMERLISTE_EINFUEGEN.

*Tabelle deklarieren
TABLES zteilnehmer02.

SELECTION-SCREEN BEGIN OF BLOCK teilnehmer WITH FRAME TITLE text-001.
*Eingabefelder deklarieren

PARAMETERS: nummer TYPE zteilnehmer02-tnummer,
            name   TYPE zteilnehmer02-tname LOWER CASE,
            gebdat TYPE zteilnehmer02-tgeburtsdatum LOWER CASE,
            geschl TYPE zteilnehmer02-tgeschlecht LOWER CASE,
            kurspr TYPE zteilnehmer02-tkurspreis LOWER CASE,
            waehru TYPE zteilnehmer02-twaehrung LOWER CASE,
            kfz    TYPE zteilnehmer02-zzkfztyp LOWER CASE,
            kursti TYPE zteilnehmer02-zzkurstitel LOWER CASE.
SELECTION-SCREEN END OF BLOCK teilnehmer.


*Workarea deklarieren die dann in die DB Tabelle zteilnehmer02 gechrieben wird
DATA: wa_teil LIKE zteilnehmer02.


*deklarieren der Felder
wa_teil-tnummer = nummer.
wa_teil-tname = name.
wa_teil-tgeburtsdatum = gebdat.
wa_teil-tgeschlecht = geschl.
wa_teil-tkurspreis = kurspr.
wa_teil-twaehrung = waehru.
wa_teil-zzkfztyp = kfz.
wa_teil-zzkurstitel = kursti.

*Daten werden nun aus der Workarea wa_teil in die Tabelle zteilnehmer02 geschrieben
INSERT INTO zteilnehmer02 VALUES wa_teil.

*Wenn das Feld tnummer leer ist dann mache nichts... AUSSER es ist oben die Checkbox vollstli angehackt.. dann zeige die komplette Liste
IF wa_teil-tnummer IS INITIAL.
  EXIT.
ENDIF.


*wenn Returncode irgendwas anderes als NULL dann gib Fehlermeldung aus und schreibe den Datensatz NICHT
IF sy-subrc NE 0.
  ROLLBACK WORK.
  WRITE: / 'Fehler beim anlegen des neuen Teilnehmer mit der Nummer', wa_teil-tnummer, '. Diese Nummer existiert bereits.'.
  ELSE.
*Wenn RC=0 dann gib folgende Meldung aus nachdem der Datensatz geschrieben wurde
  WRITE: / 'Neuer Teilnehmer mit Teilnehmernummer ', wa_teil-tnummer, 'eingetragen'.
ENDIF.



SELECTION-SCREEN BEGIN OF BLOCK anzeige WITH FRAME TITLE text-002.
  PARAMETERS vollstli AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK anzeige.

*Checkbox prüfen
IF NOT vollstli IS INITIAL.
* vollständigen Tabelleninhalt ausgeben
  SELECT * FROM zteilnehmer02.
    WRITE: / zteilnehmer02-tnummer,
             zteilnehmer02-tname,
             zteilnehmer02-tgeburtsdatum,
             zteilnehmer02-tgeschlecht,
             zteilnehmer02-tkurspreis,
             zteilnehmer02-twaehrung,
             zteilnehmer02-zzkfztyp,
             zteilnehmer02-zzkurstitel.
   ENDSELECT.
   SKIP.
ENDIF.



Wenn ich nun den Hacken bei vollstli setze und ausführe geht es nicht.. da ja vorher die Abfrage kam das wenn das erste Feld leer ist soll nichts geschehen..

Nun kann ich den Code ja abändern:

SPAN {

font-family: "Courier New";

font-size: 10pt;

color: #000000;

background: #FFFFFF;

}

.L0S31 {

font-style: italic;

color: #808080;

}

.L0S32 {

color: #3399FF;

}

.L0S33 {

color: #4DA619;

}

.L0S52 {

color: #0000FF;

}

*&---------------------------------------------------------------------*
*& Report  Z_TEILNEHMERLISTE_EINFUEGEN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_TEILNEHMERLISTE_EINFUEGEN.

*Tabelle deklarieren
TABLES zteilnehmer02.

SELECTION-SCREEN BEGIN OF BLOCK teilnehmer WITH FRAME TITLE text-001.
*Eingabefelder deklarieren

PARAMETERS: nummer TYPE zteilnehmer02-tnummer,
            name   TYPE zteilnehmer02-tname LOWER CASE,
            gebdat TYPE zteilnehmer02-tgeburtsdatum LOWER CASE,
            geschl TYPE zteilnehmer02-tgeschlecht LOWER CASE,
            kurspr TYPE zteilnehmer02-tkurspreis LOWER CASE,
            waehru TYPE zteilnehmer02-twaehrung LOWER CASE,
            kfz    TYPE zteilnehmer02-zzkfztyp LOWER CASE,
            kursti TYPE zteilnehmer02-zzkurstitel LOWER CASE.
SELECTION-SCREEN END OF BLOCK teilnehmer.




SELECTION-SCREEN BEGIN OF BLOCK anzeige WITH FRAME TITLE text-002.
  PARAMETERS vollstli AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK anzeige.

*Checkbox prüfen
IF NOT vollstli IS INITIAL.
* vollständigen Tabelleninhalt ausgeben
  SELECT * FROM zteilnehmer02.
    WRITE: / zteilnehmer02-tnummer,
             zteilnehmer02-tname,
             zteilnehmer02-tgeburtsdatum,
             zteilnehmer02-tgeschlecht,
             zteilnehmer02-tkurspreis,
             zteilnehmer02-twaehrung,
             zteilnehmer02-zzkfztyp,
             zteilnehmer02-zzkurstitel.
   ENDSELECT.
   SKIP.
ENDIF.


*Workarea deklarieren die dann in die DB Tabelle zteilnehmer02 gechrieben wird
DATA: wa_teil LIKE zteilnehmer02.


*deklarieren der Felder
wa_teil-tnummer = nummer.
wa_teil-tname = name.
wa_teil-tgeburtsdatum = gebdat.
wa_teil-tgeschlecht = geschl.
wa_teil-tkurspreis = kurspr.
wa_teil-twaehrung = waehru.
wa_teil-zzkfztyp = kfz.
wa_teil-zzkurstitel = kursti.

*Daten werden nun aus der Workarea wa_teil in die Tabelle zteilnehmer02 geschrieben
INSERT INTO zteilnehmer02 VALUES wa_teil.

*Wenn das Feld tnummer leer ist dann mache nichts... AUSSER es ist oben die Checkbox vollstli angehackt.. dann zeige die komplette Liste
IF wa_teil-tnummer IS INITIAL.
  EXIT.
ENDIF.


*wenn Returncode irgendwas anderes als NULL dann gib Fehlermeldung aus und schreibe den Datensatz NICHT
IF sy-subrc NE 0.
  ROLLBACK WORK.
  WRITE: / 'Fehler beim anlegen des neuen Teilnehmer mit der Nummer', wa_teil-tnummer, '. Diese Nummer existiert bereits.'.
  ELSE.
*Wenn RC=0 dann gib folgende Meldung aus nachdem der Datensatz geschrieben wurde
  WRITE: / 'Neuer Teilnehmer mit Teilnehmernummer ', wa_teil-tnummer, 'eingetragen'.
ENDIF.




Nun geht es auch das ich nur vollstli anhacken kann und ausführen kann.. aber das kann doch nicht richtig so sein? Mache ich irgendwo bei den deklarationen etwas falsch?
Bei so 2 Abfragen geht das ja noch.. sprich einmal Daten einfügen in die Tabelle oder mit dem Hacken den Inhalt der Tabelle ausgeben.. aber wenn ich noch etwas drittes hinzufügen möchte wirds schon schwer wegen dem : IF wa_teil-tnummer IS INITIAL

Kann mir hier jemand helfen?

Danke euch

Grüße
Bjoern
Padde85
vor 15 Jahre
was genau willst du erreichen?

Wenn du nicht willst, dass jemand den Report ausführen kann indem er nur den Haken setzt, mach einfach die anderen Felder auch als Pflichtfelder.
Oder zumindest die Felder, die du in der DB-Tabelle als Schlüsselfelder deklariert hast.

parameters:    bla blub type xyz obligatory,

...