Was mache ich Hier falsch?

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

Was mache ich Hier falsch?

Beitrag von BjoernB (ForumUser / 3 / 0 / 0 ) »
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.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& 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:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& 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

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Was mache ich Hier falsch?

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Dein IF braucht ein ELSE-Zweig, da du sonst immer wieder die Daten an deine Tabelle hängst.

If vollstli is not initzial.
--> Liste ausgeben
else.
--> tabelle füllen
endif.

Thomas

PS: Schaue geglegentlich auch mal ion die Hilfe vom ABAP, das kann ganz hilfreich sein.

Re: Was mache ich Hier falsch?

Beitrag von BjoernB (ForumUser / 3 / 0 / 0 ) »
hmm ich glaube nicht das dies das ist was ich suche..

beidesgeht ja EIGTL.. Liste ausgeben und/oder tabelle mit Daten füllen..

ABER wenn ich den Code wie oben umstelle dann geht nichts mehr solange nicht das Feld tnummer ausgefüllt ist..

Was ich wissen möchte.. wie müsste ich Den Code umschreiben das alles in jeder Konstellation geht?

Sprich es soll unabhängig sein ob der Code ganz unten in der Mitte steht oder nicht.. (siehe mein Beispiel)

Wenn ich es mache wie im oberen Code dann geht wie gesagt nichts.. Liste ausgeben geht auch nur dann wenn ich das Feld tnummer fülle... dann allerdings wird halt auch ein Datensatz geschrieben... wenn ich den Code wie unten nehme kann ich entweder eine Liste anzeigen ODER Tabelle mit Daten füllen... das is ja noch OK.. sobald aber was drittes dazu kommt..
z.B. Ein Feld um Daten aus der Tabelle zu löschen... dann komme ich mit dem Code garnicht mehr klar... verstehst du was ich meine?

Re: Was mache ich Hier falsch?

Beitrag von BjoernB (ForumUser / 3 / 0 / 0 ) »
Man sagte mir u.a. das ich mir folgendes mal ansehen sollte:


SELECTION SCREEN.
INITIALIZATION.
AT SELECTION SCREEN.
START-OF-SELECTION.
END-OF-SELECTION.

Aber wie müsste der Code dann aussehen?

Leider ist mein Buch hier nicht all zu ergiebig... :(

Re: Was mache ich Hier falsch?

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
hallo BjoernB,

es geht darum dein Programm in Blöcke aufzuteilen die sinngemäß zusammenhängen, wie die Deklaration von Variablen, Definition des Selektionsbilds usw. Informationen zu START-OF-SELECTION, INITIALIZATION etc. bekommst du, indem du diese Wörter in ABAP eingibst, das Wort anklickst und F1 drückst. Eventuell hilft an diser Stelle auch die SAP-Online-Doku weiter wie z.B. diese Seite hier:

http://help.sap.com/saphelp_45b/helpdat ... ontent.htm

Es löst zwar dein Problem nicht, macht das Programm aber besser lesbar.

Gruss
Alexander
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Was mache ich Hier falsch?

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Was hast du dir denn für ein Buch gekauft??
Vielleicht war es nicht das richtige für den Einstieg.

Bücher findest du unter www.sap-press.de

Alternativ wäre sicherlich ein Lehrgang bei der SAP auch nicht das verkehrteste. Jenachdem wie weit du zum Schluss kommen möchtest mit dem was du da tust.

Thomas

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2238
Views
nutzung Feldsymbol - was mache ich falsch?!
von Thanatos82 » 10.10.2012 09:16 • Verfasst in ABAP® Core
2
Antw.
1767
Views
Was mache ich falsch? Werd Verrückt!
von sap_all » 15.02.2006 16:39 • Verfasst in ABAP® Core
1
Antw.
270
Views
2
Antw.
1977
Views
RCPDIRO1 falsch, was tun ?
von sapler » 12.10.2005 15:36 • Verfasst in Material Management & Produktionsplanung
1
Antw.
1772
Views
select falsch?
von barbara » 07.07.2006 10:38 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742