Button einbinden

Getting started ... Alles für einen gelungenen Start.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

Button einbinden

Beitrag von reim95 (ForumUser / 53 / 0 / 1 ) »
Hallo Liebe Abap Freunde,

ich hab da mal eine Frage.
Wenn ich in einem Screen, Buttons einfüge, welche mir die ausgewählte Zahl in ein Feld schreiben soll, muss ich den Button im Coding wie angeben?

Im Anhang sieht man wie ich den Button definiert habe.

Das Coding habe ich so definiert:

Code: Alles auswählen.

 
IF ZHH01 EQ 'X'.
        zhhz = '1'.
      ENDIF.
und die Ausgabe so:

Code: Alles auswählen.

IF zhsz > 0.
        CONCATENATE zhgz '-' zhhz '-' zhsz  INTO zplatz.
      ELSE.
        CONCATENATE zhgz '-' zhsz  INTO zplatz.
      ENDIF.
Aber leider checke ich nicht wie der Button angesprochen werden soll damit er klickbar ist und die den Wert übergibt.

Bei den anderen habe ich das mit Auswahlknöpfe gelöst jedoch ist da immer einer in einer Gruppe ausgewählt und einer ist immer angedruckt.
Das soll aber variabel sein so das da auch nichts angedruckt sein muss.

Ich hoffe es ist halbwegs verständlich und ihr habt einen Tipp für mich.

Lg Manuel

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


Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
du musst den Funktionscode des Button auswerten. Diesen hast du in den Attributen in "FktCode" mit "ZHH01" angegeben. Der aktuelle Funktionscode wird in dem Feld übergeben, dass du im Dynpro bei der "Element list" unter dem Typ "OK" eingetragen hast.

Im PAI (Process After Input) musst du den Funktionscode (SY-UCOMM) auswerten. Beispielsweise:

Code: Alles auswählen.

CASE sy-ucomm.
  WHEN 'ZHH01'.
    zahl = 1.
  WHEN 'ZHH02'
    zahl = 2.
    ....
ENDCASE.
oder

Code: Alles auswählen.

if sy-ucomm(3) = 'ZHH'.
  zahl = sy-ucomm+3(2).
endif.

Re: Button einbinden

Beitrag von reim95 (ForumUser / 53 / 0 / 1 ) »
Vielen Dank, hat funktioniert, jetzt müsste ich nur noch hinbekommen das nur ein Kreuzfeld auswählbar ist und nicht alle. Denn bei Ankreuzfelder kann ich irgendwie die Gruppe nicht auswählen.

Und bei einer Abfrage würde mich interessieren warum er mir wenn "zhhz" Leer ist oder 0 ist trotzdem zwei Bindestriche macht ob wohl ich das als Else Angabe gemacht habe.

Code: Alles auswählen.

      IF zhsz > 0.
        CONCATENATE zhgz '-' zhhz '-' zhsz  INTO zplatz.
      ELSE.
        CONCATENATE zhgz '-' zhsz  INTO zplatz.
      ENDIF.
lg Manuel

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
reim95 hat geschrieben:
20.10.2021 13:34
Vielen Dank, hat funktioniert, jetzt müsste ich nur noch hinbekommen das nur ein Kreuzfeld auswählbar ist und nicht alle. Denn bei Ankreuzfelder kann ich irgendwie die Gruppe nicht auswählen.
Das sind dann "RADIOBUTTONs".

Re: Button einbinden

Beitrag von reim95 (ForumUser / 53 / 0 / 1 ) »
ja aber die habe ich extra nicht genommen, da einer immer vorausgewählt ist und ich dies aber variable benötige. Sprich entweder keiner oder nur einer von den 17.

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
SIEBZEHN??

Dann entweder eine Option "gar nix" oder eine Listbox.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain


Re: Button einbinden

Beitrag von a-dead-trousers (Top Expert / 4412 / 224 / 1184 ) »
reim95 hat geschrieben:
20.10.2021 13:34
Vielen Dank, hat funktioniert, jetzt müsste ich nur noch hinbekommen das nur ein Kreuzfeld auswählbar ist und nicht alle. Denn bei Ankreuzfelder kann ich irgendwie die Gruppe nicht auswählen.
Das geht nur "programmatisch":
Alle Ankreuzfelder benötigen einen Funktionscode.
Im PAI auf den jeweiligen Funktionscode des Ankreuzfeldes abfragen und wenn es den Wert 'X' hat alle anderen Ankreuzfelder (die zugehörigen Variablen) löschen.

Somit ist nur das zuletzt ausgewählte Ankreuzfelder ausgewählt und wenn man das auch noch wegklickt ist wieder keines ausgewählt.

Generell würde ich aber trotzdem eher der Empfehlung von Enno folgen.
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: Button einbinden

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Das geht nur "programmatisch"
Das halte ich für eine Falschmeldung.

Im Layout Editor des Screen Painters einen Rahmen um die Knöpfe ziehen, die eine Gruppe bilden sollen, und dann Menü Bearbeiten -> Gruppierung -> Auswahlknopfgruppe -> Definieren. Dann gehören alle Knöpfe zu derselben Gruppe, und immer nur einer von ihnen ist ausgewählt, so wie das bei Radiobuttons sein muss.

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
a-dead-trousers hat geschrieben:
20.10.2021 15:29
reim95 hat geschrieben:
20.10.2021 13:34
Vielen Dank, hat funktioniert, jetzt müsste ich nur noch hinbekommen das nur ein Kreuzfeld auswählbar ist und nicht alle. Denn bei Ankreuzfelder kann ich irgendwie die Gruppe nicht auswählen.
Das geht nur "programmatisch":
Ja. Gehen tut fast alles... 😁

Jedoch ist die Lösung aus mindestens zwei Gründen schlecht:
1. Aus Usersicht: wenn ankreuzfelder da sind, erwarte ich als Anwender nicht, dass sie sich wie RADIOBUTTONs verhalten.
2. Aus programmiersicht:
2a: du erzeugst unnötigen Quelltext und machst das Programm dadurch fehleranfälliger und schlechter wartbar.
2b: bei siebzehn ankreuzfeldern hast du entweder viel stumpfsinnigen Code (clear p_ak1, p_ak2...) Oder du bringst durch dynamische Zuweisungen unnötig Komplexität hinein.
2c: alles ist aufwändiger (=teurer) als direkt RADIOBUTTONs zu verwenden.

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
DeathAndPain hat geschrieben:
20.10.2021 18:54
Das geht nur "programmatisch"
Das halte ich für eine Falschmeldung.

Im Layout Editor des Screen Painters einen Rahmen um die Knöpfe ziehen, die eine Gruppe bilden sollen, und dann Menü Bearbeiten -> Gruppierung -> Auswahlknopfgruppe -> Definieren. Dann gehören alle Knöpfe zu derselben Gruppe, und immer nur einer von ihnen ist ausgewählt, so wie das bei Radiobuttons sein muss.
Genau: dann sind es RADIOBUTTONs und keine Ankreuzfelder.

Re: Button einbinden

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Ich habe den Fragesteller so verstanden, dass er Radiobuttons gemeint und nur das falsche Wort verwendet hat. Der Geist von Radiobuttons zieht sich konsistent durch alle seine Texte in diesem Thread.

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
Sehe ich auch so. Um so wichtiger zu wissen, was die Unterschiede sind.

Re: Button einbinden

Beitrag von a-dead-trousers (Top Expert / 4412 / 224 / 1184 ) »
ewx hat geschrieben:
20.10.2021 18:57
a-dead-trousers hat geschrieben:
20.10.2021 15:29
reim95 hat geschrieben:
20.10.2021 13:34
Vielen Dank, hat funktioniert, jetzt müsste ich nur noch hinbekommen das nur ein Kreuzfeld auswählbar ist und nicht alle. Denn bei Ankreuzfelder kann ich irgendwie die Gruppe nicht auswählen.
Das geht nur "programmatisch":
Ja. Gehen tut fast alles... 😁

Jedoch ist die Lösung aus mindestens zwei Gründen schlecht:
1. Aus Usersicht: wenn ankreuzfelder da sind, erwarte ich als Anwender nicht, dass sie sich wie RADIOBUTTONs verhalten.
2. Aus programmiersicht:
2a: du erzeugst unnötigen Quelltext und machst das Programm dadurch fehleranfälliger und schlechter wartbar.
2b: bei siebzehn ankreuzfeldern hast du entweder viel stumpfsinnigen Code (clear p_ak1, p_ak2...) Oder du bringst durch dynamische Zuweisungen unnötig Komplexität hinein.
2c: alles ist aufwändiger (=teurer) als direkt RADIOBUTTONs zu verwenden.
Ich hab nicht gesagt, dass es eine gute Lösung ist. 😉
Man kann sich aber mit einigen Tricks und Kniffen (Felder in Struktur und gleich benannt wie Funktionscode) etwas an der Komplexität/Redundanz rausnehmen.

Zur Usersicht:
Bei uns ist es leider so, dass die User der Meinung sind, dass sie "nichts" auswählen wollen und das soll auch durch "keine" Auswahl sichtbar sein. Ein Radiobutton wo "nichts ausgewählt" dabeisteht verwirrt sie schon viel zu sehr.
Und wie das so ist, wenn man einmal die Büchse der Pandora geöffnet hat und sich ein besonders lästiger User bis zum Vorstand durchgearbeitet hat, will es plötzlich jeder so haben *seufz*
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: Button einbinden

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Man könnte die Radiobuttons auch in einem zu klein definierten Subscreen anzeigen und der anfangs ausgewählte Radiobutton ist leider im nicht sichtbaren Bereich...
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Button einbinden

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
black_adept hat geschrieben:
20.10.2021 21:53
Man könnte die Radiobuttons auch in einem zu klein definierten Subscreen anzeigen und der anfangs ausgewählte Radiobutton ist leider im nicht sichtbaren Bereich...
Viel Spaß bei anderen Auflösungen, Themes undoder Schriftgrößen/ -arten... 🤢

Vergleichbare Themen

1
Antw.
1638
Views
neue button in ALV symbolleiste einbinden
von warup » 23.04.2013 12:09 • Verfasst in ABAP® für Anfänger
5
Antw.
4639
Views
Per Button klick ein symbol in den Button einfügen
von alex1986 » 03.08.2011 15:57 • Verfasst in ABAP® für Anfänger
1
Antw.
360
Views
statt Button F8 Button Close setzen
von HH_ABAP » 18.05.2023 21:16 • Verfasst in ABAP® für Anfänger
10
Antw.
3655
Views
Einbinden Logo
von christof » 10.02.2018 18:42 • Verfasst in ABAP® für Anfänger
4
Antw.
4028
Views
URL in Smartform einbinden?
von Yllana » 03.12.2007 16:31 • Verfasst in ABAP® Core

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.