Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Posten Sie hier Tutorials & Cookbooks.

Postby Merle2604 » Fri Oct 22, 2004 4:39 pm

Hallo,

da ist mein Beitrag, wie man kann mit Varianten arbeiten. Man muss sich ein Parameter P_VARI auf dem Selectionscreen vorstellen, über den wird Anzeigevariante gesteuert (z.B. für Jobs). Danach ein Beitrag für USER_COMMAND.

Wichtige Bemerkung: Einzellne Teile sind aus verschiedenen Programmen geholt, also ist möglich, dass man konnte es besser schreiben. Hauptsache, das Programm funktioniert problemlos.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  2.       EXPORTING
  3.          i_callback_program          = alv_repid
  4.          i_callback_user_command     = 'USER_COMMAND'
  5.          is_layout                   = alv_layout
  6.          it_fieldcat                 = alv_fieldcat
  7.          i_default                   = 'X'
  8.          i_save                      = alv_save
  9.          is_variant                  = variante
  10.  
GeSHi ©


Mit diesem Code man kann eine Standardvariante suchen und Namen in ein Parameter auf dem Selektionscreen füllen:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  
  2.   variant_save = 'A'.
  3.   clear variante.
  4.   variante-report = sy-repid.
  5. * Default-Variante holen:
  6.   def_variante = variante.
  7.  
  8.   call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
  9.        exporting
  10.             i_save     = variant_save
  11.        changing
  12.             cs_variant = def_variante
  13.        exceptions
  14.             not_found  = 2.
  15.   if sy-subrc = 0.
  16.     p_vari = def_variante-variant.
  17.   endif.
  18.  
GeSHi ©


So man kann über die F4 Taste eine Variante suchen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   call function 'REUSE_ALV_VARIANT_F4'
  2.        exporting
  3.             is_variant          = variante
  4.             i_save              = variant_save
  5. *           it_default_fieldcat =
  6.        importing
  7.             e_exit              = variant_exit
  8.             es_variant          = def_variante
  9.        exceptions
  10.             not_found = 2.
  11.   if sy-subrc = 2.
  12.     message id sy-msgid type 'S' number sy-msgno
  13.             with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  14.   else.
  15.     if variant_exit = space.
  16.       p_vari = def_variante-variant.
  17.     endif.
  18.   endif.
  19.  
GeSHi ©


Und so wird die Variante an den GRID vergeben:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   if not p_vari is initial.
  2.     move variante to def_variante.
  3.     move p_vari to def_variante-variant.
  4.  
  5.     call function 'REUSE_ALV_VARIANT_EXISTENCE'
  6.          exporting
  7.               i_save     = variant_save
  8.          changing
  9.               cs_variant = def_variante.
  10.     variante = def_variante.
  11.   else.
  12.     clear variante.
  13.     variante-report = sy-repid.
  14.   endif.
  15.  
GeSHi ©


Und so man kann ablesen, was User gedrückt hat:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. form user_command using r_ucomm like sy-ucomm
  2.                         rs_selfield type slis_selfield.
  3.  
  4.   if r_ucomm = '&IC1'. "Doppelklick im Feld
  5.  
  6.     IF rs_selfield-value = ''.
  7.  
  8.       MESSAGE s398(00) WITH text-005 rs_selfield-fieldname '' ''.
  9. * da wird nur Meldung ausgegeben, an welches Feld ist geklopft.
  10.  
  11.     ELSE.
  12.  
  13.     fld = rs_selfield-fieldname.
  14.     inx = rs_selfield-tabindex.
  15.  
  16.     case fld.
  17.       when 'EBELN'.
  18.         set parameter id 'BES' field rs_selfield-value.
  19.         call transaction 'ME22' and skip first screen.
  20.  
  21. ...
  22.  
GeSHi ©

Man kann über
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. I_CALLBACK_PF_STATUS_SET
GeSHi ©
analog zu USER_COMMAND ein eigenen PF_Status einsetzen und OK_CODE ablesen und reagieren.

Das war's von mir dazu.

Gruß

Kotelna
Merle2604
..
..
 
Posts: 23
Joined: Fri Oct 22, 2004 4:06 pm

Reuse_ALV_...

Postby Thies2933 » Thu Jun 23, 2005 11:32 am

Ich habe ein JAVAScript gebaut, das Dir das Coding generiert:

http://www.list-editor.de/JAVASCRIPTS/J ... popup.html

Läuft evtl. nur im MS-IE.
Zunächst den Button "DEMO" betätigen, der erklärt alles.

Grüsse Mario
Thies2933
.
.
 
Posts: 1
Joined: Thu Jun 23, 2005 11:32 am

Postby Ilja583 » Thu Jun 23, 2005 1:58 pm

Hallo Mario,

warum denn nach JavaScript ausweichen. Das wäre doch mal eine Gelegenheit ein eigenes interaktives Muster für den Editor anzulegen.
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Re: Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Postby Tarek1391 » Fri Nov 18, 2005 3:01 pm

Hallo Allerseits,

der hierbeschriebene Punkt 3 des Titelthemas bereitet mir einige Kopfschmerzen.
Ich habe eine kleine Auswertung über Kunden erstellt und die Tabellen:
KNA1, KNVK, KNVP und PA0002, die ich gern als ALV GRID ausgeben möchte (siehe Quellcode)

3. Keine ddic Struktur für i_structure_name? Kein Problem für den 'REUSE_ALV_FIELDCATALOG_MERGE'

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  2.     EXPORTING
  3.       i_program_name        = sy-repid
  4.       i_internal_tabname    = 'SRESULT'
  5. *      i_structure_name
  6. *      i_client_never_display
  7.       i_inclname            = 'ZMADDOGTOP'
  8.     CHANGING
  9.       ct_fieldcat            = lt_fieldcat
  10.     EXCEPTIONS
  11.       inconsistent_interface = 1
  12.       program_error          = 2
  13.       OTHERS                 = 3.
  14.   IF sy-subrc <> 0.
  15. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  16. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  17.   ENDIF.
GeSHi ©



(Parameter i_program_name): Programmnamen
(Parameter i_inclname): Includenamen
(Parameter i_internal_tabname): Name des lokalen Datentypen

Nun zu meinen Fragen:
1. Was ist unter Includenamen zu verstehen? Hier wird dies leider nicht näher aufgeführt.
2. Entspricht der lokale Datentyp meiner internen Tabelle (also der Datenquelle)?

Über Tips zum gescheiten Einbau der hier vorgestellten Lösung wäre ich sehr dankbar.

Falk
Tarek1391
...
...
 
Posts: 132
Joined: Fri Nov 18, 2005 3:01 pm

Postby Silke1341 » Fri Nov 18, 2005 4:37 pm

Bitte keine Fragen in diesem Thread stellen.
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Emre397 » Thu Nov 24, 2005 9:01 pm

Dann ergreife ich aber doch die Chance und beantworte diese Frage gleich mit:

(Parameter i_program_name): Programmnamen - Wenn man einen report anlegt, so ist der name den man beim Anlegen angibt hier anzugeben,

(Parameter i_inclname): Includenamen - Paradebeispiel ist ein Report mit Topinclude. Der Name des Topincludes muß hier angegeben werden.

(Parameter i_internal_tabname): Name des lokalen Datentypen - Das ist der name des lokalen Datentyps der in dem, unter i_inclname angegebenen includes, definiert wurde.

Gruß und viel spaß noch!!!
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Previous

Return to Tutorials & Cookbooks

Who is online

Users browsing this forum: No registered users and 3 guests

cron