Checkbox für mehrere Unterprogramme

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Checkbox für mehrere Unterprogramme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Hallo Leute,

habe 4 Unterprgramme welche ich in Checkboxen in einem Selektionsbild auswählen kann und welche dann ausgeführt werden. Nun will ich alle 4 Programme in einer Checkkbox starten. Ich kann natürlich für alle 4 immer Perform Anweisung schreiben, habe allerdings noch weitere Programme die immer zusätzlich ablaufen als zum Beispiel Zeitdauer-Messung. Da ich nicht erklären kann, hier der Code:

Code: Alles auswählen.

*Auswahloptionen
SELECT-OPTIONS: so_matnr FOR <vbap_fields>-matnr.
PARAMETERS: p_fall1 AS CHECKBOX,
            p_fall2 AS CHECKBOX,
            p_fall3 AS CHECKBOX,
            p_fall4 AS CHECKBOX,
            p_alle AS CHECKBOX.




**********Bedingung für Auswählbare Fälle*********
IF p_alle = 'X'.
  WRITE: / 'Alle Fälle werden angezeigt'.
  PERFORM startzeit.
  PERFORM fall1.
  PERFORM endzeit.
  PERFORM ausgabe.
  PERFORM startzeit.
  PERFORM fall2.
  PERFORM endzeit.
  PERFORM ausgabe.
  PERFORM startzeit.
  PERFORM fall3.
  PERFORM endzeit.
  PERFORM ausgabe.
  PERFORM startzeit.
  PERFORM fall4.
  PERFORM endzeit.
  PERFORM ausgabe.
ENDIF.

IF p_fall1 = 'X'.
  WRITE: / 'Fall1 = SELECT-Anweisung'.
  PERFORM startzeit.
  PERFORM fall1.
  PERFORM endzeit.
  PERFORM ausgabe.
ENDIF.

IF p_fall2 = 'X'.
  WRITE: / 'Fall2 = JOIN-Anweisung'.
  PERFORM startzeit.
  PERFORM fall2.
  PERFORM endzeit.
  PERFORM ausgabe.
ENDIF.

IF p_fall3 = 'X'.
  WRITE: / 'Fall3 = Geschachtelter LOOP'.
  PERFORM startzeit.
  PERFORM fall3.
  PERFORM endzeit.
  PERFORM ausgabe.
ENDIF.

IF p_fall4 = 'X'.
  WRITE: / 'Fall4 = READ-Anweisung'.
  PERFORM startzeit.
  PERFORM fall4.
  PERFORM endzeit.
  PERFORM ausgabe.
ENDIF.
Die Obere IF-Anweisung sorgt jetzt dafür dass alle Unterprogramme ausgeführt werden, jedoch mit viel Code. Die direkte Frage also, wie wird das verinfacht?

Danke im Vorraus

Grüße Patryk

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


Re: Checkbox für mehrere Unterprogramme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin Patryk,

ich gehe mal davon aus, dass die einzelnen Programme auch als einzelne Programme bestehen bleiben sollen?
Dann hast du, meiner Ansicht nach 2 Möglichkeiten:
1. Du schreibst ein kleines Extra-Programm, in dem nur die Perform-Anweisungen stehen. Dann brauchst du nur noch das Extra-Programm aufrufen und dann läuft alles weitere danach gesondert ab.
2. Du setzt den jeweiligen Perform-Befehl zum Sprung ins nächste Programm ans Ende des jeweiligen Vorgänger-Programms. Dies hat jedoch nur dann Sinn, wenn die Programme nicht auch einzeln ausführbar sein sollen.

Ich hoffe, die Ideen helfen dir ein bissl weiter. :)
Gruß,
der Matze

Re: Checkbox für mehrere Unterprogramme

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
hi!

Code: Alles auswählen.

* Ausgabe Titel
case 'X'.
  when p_alle.
    ...
  when p_fall1.
    ...
  when p_fall2.
    ...
  when p_fall3.
    ...
endcase.
*Ausführen von den Unterprgrammen
case 'X'.
  when p_alle or p_fall1.
    ...
endcase.
case 'X'.
  when p_alle or p_fall2.
    ...
endcase.
case 'X'.
  when p_alle or p_fall4.
    ...
endcase.
Damit passt die Reihenfolge für P_ALLE und die Einzelausführung klappt auch.

Ich verwende bei sowas gerne die CASE-Anweisung um die Anzahl der zu schreibenden Variablen zu minimieren und so mögliche Fehler durch falsch geschriebene Namen zu verringern. Man kann aber auch IFs verwenden.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Checkbox für mehrere Unterprogramme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Danke für die Anatworten.
@ Thanatos82, durch ein weiteres Unterprogramm lässt sich dies bestimmt lösen, jedoch spart mir das im Endeffekt keinen Code ein.
@ a-dead-trousers, das habe ich noch nciht ganz verstanden(habe noch nie mit CASE gearbeitet), aber letztendlich schreibe ich die Anweisungen doch auch alle weider einzeln.
Ich hätte gedacht, dass lässt sich mit einer Variablen, welche dann die Fälle annimmt lösen oder so ähnlich...

Re: Checkbox für mehrere Unterprogramme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

ADT's Lösung ist natürlich auch möglich.
Schreiben musst du die Befehle so oder so alle einmal, sonst kannste die Programme ja nicht aufrufen.
Die Case-Anweisung fragt eine Variable ab, dies geht z.b. auch mit Zahlen, also das du je Radiobutton eine Zahl mit übergibst an diese Variable. Und je nachdem welche Zahl in der Variable ankommt, wir der jeweilge WHEN-Block ausgeführt, in dem du dann die Programm aufrufen kannst, die du aufrufen möchtest.
Gruß,
der Matze

Re: Checkbox für mehrere Unterprogramme

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
Hier das Ganze nochmal komplett wie ich es machen würde (der Einfachheit halber mit IF)

Code: Alles auswählen.

* Überschrift
if p_alle eq 'X'.
  WRITE: / 'Alle Fälle werden angezeigt'.
elseif p_fall1 eq 'X'.
  WRITE: / 'Fall1 = SELECT-Anweisung'.
elseif p_fall2 eq 'X'.
  WRITE: / 'Fall2 = JOIN-Anweisung'.
elseif p_fall3 eq 'X'.
  WRITE: / 'Fall3 = Geschachtelter LOOP'.
elseif p_fall4 eq 'X'.
  WRITE: / 'Fall4 = READ-Anweisung'.
endif.
* Ausgabe
if p_alle eq 'X' or p_fall1 eq 'X'.
  PERFORM startzeit.
  PERFORM fall1.
  PERFORM endzeit.
  PERFORM ausgabe.
endif.
if p_alle eq 'X' or p_fall2 eq 'X'.
  PERFORM startzeit.
  PERFORM fall2.
  PERFORM endzeit.
  PERFORM ausgabe.
endif.
if p_alle eq 'X' or p_fall3 eq 'X'.
  PERFORM startzeit.
  PERFORM fall3.
  PERFORM endzeit.
  PERFORM ausgabe.
endif.
if p_alle eq 'X' or p_fall4 eq 'X'.
  PERFORM startzeit.
  PERFORM fall4.
  PERFORM endzeit.
  PERFORM ausgabe.
endif.
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Checkbox für mehrere Unterprogramme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Danke für die Hilfe, hat mich voran gebracht!

Gruß Patryk

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1626
Views
Unterprogramme
von KleinerEisbaer » 05.09.2007 13:30 • Verfasst in ABAP® für Anfänger
13
Antw.
11731
Views
ALV und CHECKBOX
von Nadine_2706 » 06.09.2011 14:25 • Verfasst in ABAP® für Anfänger
3
Antw.
3017
Views
Checkbox
von MG1993 » 04.08.2014 16:08 • Verfasst in ABAP® für Anfänger
4
Antw.
3005
Views
Checkbox
von lisa » 12.09.2008 13:41 • Verfasst in ABAP® für Anfänger
4
Antw.
6411
Views
ALV Grid mit Checkbox
von lisa » 15.09.2008 10:42 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

BAPI zur ABSO?
Gestern von msfox 1 / 251
Materialstammerweiterung: Neuer Reiter
vor 6 Tagen von DeathAndPain gelöst 4 / 890
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46562
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4440

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.

Aktuelle Forenbeiträge

BAPI zur ABSO?
Gestern von msfox 1 / 251
Materialstammerweiterung: Neuer Reiter
vor 6 Tagen von DeathAndPain gelöst 4 / 890
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46562
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4440