deano Geschrieben 15. August 2007 Geschrieben 15. August 2007 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 Zitieren
Obi Geschrieben 16. August 2007 Geschrieben 16. August 2007 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 Zitieren
deano Geschrieben 17. August 2007 Autor Geschrieben 17. August 2007 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 Zitieren
Obi Geschrieben 17. August 2007 Geschrieben 17. August 2007 Ich glaube nicht das das so dynamisch geht an der Stelle, aber du könntest ja zwei Buttons anlegen und den einen unsichtbar machen und den anderen nicht. ABAP ist halt schon so ne Sache für sich Zitieren
aline234 Geschrieben 18. August 2007 Geschrieben 18. August 2007 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. Zitieren
deano Geschrieben 21. August 2007 Autor Geschrieben 21. August 2007 @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 Zitieren
Matze134 Geschrieben 22. August 2007 Geschrieben 22. August 2007 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 Zitieren
deano Geschrieben 24. August 2007 Autor Geschrieben 24. August 2007 @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 Zitieren
MAJOR_TOM Geschrieben 29. August 2007 Geschrieben 29. August 2007 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... Tom. Zitieren
Empfohlene Beiträge
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.