Selection Screen bei Programmstart dynamisch generieren

Benutzeroberflächen in SAP Systemen.

Selection Screen bei Programmstart dynamisch generieren

Postby Lilly3943 » Tue Nov 17, 2009 10:34 am

Hallo zusammen,

ich habe folgende Ausgangssituation:
Es gibt eine Tabellen mit mehreren Einträgen, zu denen ich jeweils eine Check-Box anzeigen möchte. Diese Tabelle kann sich ändern - zur Laufzeit des Reports kann dies aber ignoriert werden.

Nun möchte ich beim Programmstart einen Selektionsbildschirm anzeigen, wo unter anderem halt auch für jeden Eintrag eine Checkbox vorhanden ist.

Einfach durchloopen und einen Parameters-Eintrag hinzufügen geht ja soweit ich weiß nicht.

Bei der Recherche kam immer wieder der Hinweis, dass man ja einzelne Oberflächen-Elemente auch ausblenden oder verändern kann.
Da ich aber jetzt nicht weiß, wieviele Einträge später mal vorhanden sind, kann ich ja schlecht 30 unsichtbare Dummy-Checkboxen erstellen, die ich dann ggf. richtig benenne und einblende.

Eine andere Möglichkeit die ich gefunden habe, ist es, zur Laufzeit eine Include-Programm zu erstellen, in welches ich den Selection Screen quasi reinschreibe und dann include. Auf der Sandbox funktionierte das auch, allerdings ist dies von Kundenseite nicht gewünscht, da es Probleme mit den Transporten und Unicode geben könnte.

Hat hier vllt. jemand noch eine andere Idee?
Lilly3943
..
..
 
Posts: 25
Joined: Sun Sep 12, 2004 4:50 pm

Postby ewx » Tue Nov 17, 2009 11:23 am

http://tricktresor.de/content/index.php ... 25&aID=402
Du kannst aber auch einfach ein ALV-Grid oder ein TableControl einbinden!! Es muss ja nicht mal auf dem SelScreen sein, sondern es könnte auch auf Anforderung (Drucktaste) ein popup mit diesen dynamischen Werten kommen.
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Ilja583 » Tue Nov 17, 2009 11:26 am

Wenn das Programm "nur" online laufen soll, kannst du z.B. ein eingabebereites ALV-Control an den Selektionsscreen anklemmen, in dem du für jedes dynamische erkannte Feld eine Zeile mit Beschriftung und Checkbox anzeigst.
Sowas sieht i.A. auch ganz nett aus und auf den typischen generierten Selektionsbildern ist mit den heutzutage benutzen Bildschirmen auch hinreichend Platz dafür.
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Lilly3943 » Tue Nov 17, 2009 11:39 am

Der Report soll sich vom Look-And-Feel an einem bereits existierendes Programm orientieren, in dem das ganze (ohne die Tabelle) hardgecoded ist. Ich möchte das allerdings dynamisch machen, damit man da nicht ewig im Code rumfrickeln muss, wenn sich einer der Einträge ändert.

Der Report wird nicht online, sondern über den "normalen" SapGUI aufgerufen.

Danke schonmal für eure Antworten. Ich werde direkt mal den Tipp aus dem Tricktresor ausprobieren. Das Beispiel-Programm sieht ja schonmal vielversprechend aus :)

Kleine Ergänzung noch: Ich habe mich mich in meinem Eingangspost unverständlich ausgedrückt. Es handelt sich um Radio-Buttons, nicht um normale Check-Boxen.
Lilly3943
..
..
 
Posts: 25
Joined: Sun Sep 12, 2004 4:50 pm

Postby ewx » Tue Nov 17, 2009 11:44 am

Replica hat geschrieben:Es handelt sich um Radio-Buttons, nicht um normale Check-Boxen.

Dann kannst du doch auch eine Listbox nehmen, das ist super einfach zu realisieren...
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Lilly3943 » Tue Nov 17, 2009 12:26 pm

ewx hat geschrieben:
Replica hat geschrieben:Es handelt sich um Radio-Buttons, nicht um normale Check-Boxen.

Dann kannst du doch auch eine Listbox nehmen, das ist super einfach zu realisieren...

Das stimmt natürlich. Das macht die Abfrage, welcher Eintrag ausgewählt wurde auch viel einfacher. Allerdings möchte der Kunde das lieber mit Radio-Buttons haben :roll:
Naja, werde nochmal mit ihm reden...

Danke für den Hinweis!
Lilly3943
..
..
 
Posts: 25
Joined: Sun Sep 12, 2004 4:50 pm

Postby Lilly3943 » Tue Nov 17, 2009 5:07 pm

Ich habe das ganze jetzt mal mit einer Listbox umgesetzt, aber immernoch ein Problem.

Ich habe das mit dem User-Command nicht so ganz verstanden und kann den ausgewählten Eintrag nicht auslesen.

Der Parameter ist wie folgt erstellt:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. PARAMETERS p_tlist TYPE tabname AS LISTBOX VISIBLE LENGTH 25 USER-COMMAND TLST.
GeSHi ©


Gefüllt mit:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  LOOP AT itab_tables.
  2.     VALUE-KEY = sy-tabix.
  3.     VALUE-TEXT = itab_tables-table.
  4.     APPEND VALUE TO LIST.
  5.  
  6.   CALL FUNCTION 'VRM_SET_VALUES'
  7.     EXPORTING
  8.       ID     = 'p_tlist'
  9.       VALUES = LIST.
GeSHi ©

Die Listbox ist auch korrekt gefüllt.

Die Fehlerbehandlung soll so laufen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ************************************************************************
  2. AT SELECTION-SCREEN ON p_tlist.
  3. ************************************************************************
  4.  
  5. *  p_tlist = itab_tables-table.
  6.  
  7.   IF p_tlist EQ space.
  8.     MESSAGE e081. "Fehlermeldung
  9.   ENDIF.
GeSHi ©


Wenn ich dort debugge, ist SY-UCOMM logischerweise auf 'TLST'.
Wie komme ich jetzt an den ausgewählten Inhalt von p_tlist?
Laut Debugger ist es leer...
Lilly3943
..
..
 
Posts: 25
Joined: Sun Sep 12, 2004 4:50 pm

Postby ewx » Tue Nov 17, 2009 8:10 pm

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA lt_values TYPE vrm_values.
  2. DATA ls_value  TYPE vrm_value.
  3.  
  4. PARAMETERS p_list AS LISTBOX VISIBLE LENGTH 50.
  5.  
  6.  
  7.   ls_value-key = '1'.
  8.   ls_value-text = 'Eins'.
  9.   APPEND ls_value TO lt_values.
  10.   ls_value-key = '2'.
  11.   ls_value-text = 'Zwei'.
  12.   APPEND ls_value TO lt_values.
  13.   ls_value-key = '3'.
  14.   ls_value-text = 'Drei'.
  15.   APPEND ls_value TO lt_values.
  16.  
  17.   CALL FUNCTION 'VRM_SET_VALUES'
  18.     EXPORTING
  19.       id     = 'P_LIST'
  20.       values = lt_values.
  21.  
GeSHi ©


In P_LIST steht dann einer der Werte space,1,2 oder 3...
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Silke1341 » Wed Nov 18, 2009 10:04 am

Replica hat geschrieben:...
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ...
  2.   CALL FUNCTION 'VRM_SET_VALUES'
  3.     EXPORTING
  4.       ID     = 'p_tlist'
  5.       VALUES = LIST.
GeSHi ©

...

möglicherweise geht es nicht, weil der Name des Feldes nicht groß geschrieben wurde!!!
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby ewx » Wed Nov 18, 2009 10:10 am

Doch. Der FB ist schlau... :-)
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   translate vrm_id to upper case.
  2.  
GeSHi ©
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Next

Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 2 guests