Zum Inhalt springen

ABAP: Pushbutton


deano

Empfohlene Beiträge

ich hab da auch mal ne frage:

ich habe ein programm erstellt und dazu einen dynpro 0100.

auf diesem habe ich pushbuttons. diese buttons möchte ich aber im zeitpunkt before output noch ändern. z.b. die caption (also der text der auf dem knopf steht). wie komme ich da ran?

ich hab in alter c++ manier einfach mal

SC0100_B_REST1->Text

versucht. aber das tut nich :(

in der abap hilfe find ich nix...wahrscheinlich weil ich andere begriffe verwende, als sap dafür benutzt? :upps

ich bin für jeden vorschlag dankbar :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, du kannst mal versuchen einen Loop über die Tabelle Screen zumachen. Das ist die Tabelle wo alle Bildschirm-Elemente drin stehen.

Müsste ungefähr so aussehen:


loop at screen.

  if screen-name = SC0100_B_REST1.

    "Verarbeitung

  endif.

endloop.

Ich weiß aber nicht genau ob es in der Screen-Tabelle ein Feld für den Text gibt.

Gruß

Obi

Link zu diesem Kommentar
Auf anderen Seiten teilen

jo das funzt :)

zumindest kann ich die nun unsichtbar etc. machen. aber die aufschrift kann ich nicht ändern :(

kann ich im before output durch ne methode noch elemente hinzufügen?

dann würde ich die halt immer löschen und neu erzeugen mit den namen die ich brauche :upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

also da ich selber noch neu in dem gebiet bin weiß ich jetz nich genau ob es geht was ich mir grade denke ;)

aber es gibt da ein tool namens GuiXT, mit dem man dynpros anpassen kann. ich hab da auf arbeit mal kurz mit rumgespielt und da kann man eben alle elemente des dynpros anpassen (unsichtbar, neue erstellen, position wechseln, ...). alle meine links und infos dazu liegen jetz gerade fein sortiert auf arbeit rum, also vielleicht googelst du mal nach GuiXT und guckst dir das mal an, ob dir das bei deinem problem vielleicht was nutzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@aline:

ich muss die buttons während der laufzeit des programms ändern können. der screenpainter reicht mir zum modeln eigentlich schon :)

@Obi:

hm. danke trotzdem. da wird mir wahrscheinlich nur die lösung via alv grid bleiben. hatte gedacht, mit buttons wäre es einfacher... :upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wuerde da genauso wie oben angemerkt vorgehen. Erzeuge einfach Mehrere Buttons im Screen Painter und schalte die jeweiligen Buttons waehrend der Laufzeit auf Sichtbar oder nicht Sichtbar.

Eine zweite Variant waere, einfach ein zweites Dynpro anlegen was genauso aussieht und auf dem du einen Button einrichtest. Zur Laufzeit brauchst du dann nict die Aufschrift der Dynpros aendern sondern einfach das andere Dynpro mit Call Screen rufen.

Mir persoenlich faellt im Moment keine dynamische Loesung ein!

Gruss,

Matze

Link zu diesem Kommentar
Auf anderen Seiten teilen

@matze: ich weiß erst zur laufzeit, welche aufschrift die buttons haben sollen *g

aber zur vollständigkeit des threads:

ich habe jetzt eine alv grid liste erstellt mit einem event handler. der event handler speichert mir den doppelt angeklickten datensatz in eine struktur die ich dann auslesen kann (hab da ein schlüsselfeld mit einer ID drin). auf deutsch: ich krieg nur einen datensatz der itab und kann da dann rauslesen wo ich stehe. so hangel ich mich dann von screen zu screen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Deano,

das funktioniert wie folgend beschrieben. (Bitte beachten: Diese Lösung ist von SAP nicht freigegeben, könnte also in späteren Releases nicht mehr funktionieren!)

Voraussetzung damit der folgende Quellcode funktioniert:

Ein Report mit einem Dynpro 0100 mit zwei Pushbuttons.

Pushbutton 1: Beschriftung beliebig, Name = BTN1

Pushbutton 2: Beschriftung beliebig, Name beliebig, Funktionscode = CHG

Natürlich noch den ok_code anlegen und einen pf-status, damit du das Programm auch wieder verlassen kannst :)

REPORT  ztest_dynpro.


DATA: ok_code TYPE sy-ucomm,

      textvar TYPE char10 VALUE 'Test',

      change  TYPE char1 VALUE space,

      h    TYPE d020s,

      f    LIKE d021s OCCURS 0 WITH HEADER LINE,

      e    LIKE d022s OCCURS 0 WITH HEADER LINE,

      m    LIKE d023s OCCURS 0 WITH HEADER LINE.


MODULE status_0100 OUTPUT.

  SET PF-STATUS '0100'.

ENDMODULE.                 " STATUS_0100  OUTPUT


MODULE user_command_0100 INPUT.

  CASE ok_code.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CHG'.

      PERFORM change_text.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT


*&---------------------------------------------------------------------*

*&      Form  change_text

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM change_text.


  DATA: txt TYPE char10.

  IF change = 'X'.

    change = space.

    txt = 'Test 1'.

  ELSE.

    change = 'X'.

    txt = 'Test 2'.

  ENDIF.

  IMPORT DYNPRO h f e m ID 'ZTEST_DYNPRO                            0100'. 

* Leerzeichen beachten! ^^                                   

  LOOP AT f WHERE fnam = 'BTN1'.

    f-stxt = txt.

    MODIFY f.

  ENDLOOP.

  GENERATE DYNPRO h f e m

    ID 'ZTEST_DYNPRO                            0100'

    MESSAGE sy-msgv1 LINE sy-msgv2 WORD sy-msgv3.

  EXPORT DYNPRO h f e m ID 'ZTEST_DYNPRO                            0100'.

ENDFORM.                    "change_text


START-OF-SELECTION.


  CALL SCREEN '0100'.

Viel Spaß beim ausprobieren... :D

Tom.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...