REUSE_ALV_GRID_DISPLAY_LVC

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

REUSE_ALV_GRID_DISPLAY_LVC

Postby Logan3964 » Fri Nov 25, 2005 11:59 am

Hallo miteinander.

Weil noch nie im Forum darüber zu lesen war!!

Eine Alternative zum
REUSE_ALV_GRID_DISPLAY
ist der
REUSE_ALV_GRID_DISPLAY_LVC.

Oder anders gesagt: REUSE_ALV_GRID_DISPLAY ist OUT -
REUSE_ALV_GRID_DISPLAY_LVC ist IN :wink:

Der Einbau ist gleich dem 'normalen' ALV.
Er unterscheidet sich lediglich geringfügig in den Namen der Parameter (zB it_fieldcat = it_fieldcat_lvc) und in den Namen in den Strukturen.
Es ist aber leicht nachzuvollziehen, welcher Name des REUSE_ALV_GRID_DISPLAY dem des REUSE_ALV_GRID_DISPLAY_LVC entspricht.


Der REUSE_ALV_GRID_DISPLAY_LVC kann aber einige Sachen mehr (welche hier im Forum bereits (auch von mir) gefragt wurden, und es dazu keine Lösung gab).
Er kommt dem OO-Alv von der Funktionalität wesentlich näher.

*) im Feldkatalog besitz er zusätzlich:
SELTEXT= Spaltenbezeichner für Dialogfunktionen
Damit kann man die Text im Dialog 'Layout ändern..' einstellen.

*) er kennt das Ereignis: DATA_CHANGED
allerdings darf man es nicht über den FuBau REUSE_ALV_EVENTS_GET ermitteln, sondern es ihm sozusagen auf's Auge drücken.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Event 'DATA_CHANGED' registrieren
  2.   wa_events_lvc-name = 'DATA_CHANGED'.
  3.   wa_events_lvc-form = 'DO_DATA_CHANGED'.
  4.   APPEND wa_events_lvc TO it_events_lvc.
  5.  
GeSHi ©


Damit reagiert er (wie der OO-Alv) auf verlassen der Zelle mit ENTER.
Wird noch der Parameter
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Grid-Settings einstellen
  2.   wa_grid_settings_lvc-edt_cll_cb = 'X'.
  3.  
GeSHi ©

gesetzt, reagiert er auf das verlassen der Zelle

Die registrierte FORM für's Event muß folgendermaßen ausschauen
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FORM do_data_changed USING data_changed TYPE REF TO
  2.                                         cl_alv_changed_data_protocol.
  3.  
GeSHi ©


hier lassen sich Zellwerte lesen und ändern.
zB. Zelle in Spalte 1 wird gändert. Zelle in Spalte 3 ist: Spalte 1 * Spalte 2.
Spalte 1 lesen, Spalte2 lesen, rechen und in Spalte 3 schreiben. Das Ergebnis steht nach verlassen der Zelle 1 automatisch in Zelle 3



Wenn sich jemand mal damit beschäftigen will, beantworte ich gerne (soweit mir möglich) konkrete Fragen dazu.

mfg
Richard
Logan3964
...
...
 
Posts: 386
Joined: Wed Jul 07, 2004 1:53 pm

Postby Ardian3178 » Tue Feb 05, 2008 9:55 pm

Hallo RiffRaff,
habe gerade deinen Tipp bez. REUSE_ALV_GRIDDISPLAY_LVC und dem EVENT
DATA_CHANGED ausprobiert.
Es ist in der Tat so, dass bei der Veränderung eines Feldes die FORM ROUTINE DO_DATA_CHANGED angesprungen wird.
Wenn ich jedoch mit einem LOOP über die gesamte ALV-Tabelle gehe, sind die Änderungen noch nicht in dieser abgespeichert.
Wie komme ich an dieser Stelle zu dem geänderten Feldinhalt ?

Hoffe du kannst mir helfen, bin bez. ALV blutiger Anfänger !
Ardian3178
.
.
 
Posts: 1
Joined: Tue Feb 05, 2008 9:55 pm

Postby Logan3964 » Wed Feb 06, 2008 1:39 pm

hallo,

ist ein Auszug aus einem ABAP von mir:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *----------------------------------------------------------------------*
  2. *       FORM DO_DATA_CHANGED
  3. *----------------------------------------------------------------------*
  4. *       Auf Dateneingabe reagieren
  5. *       !!! Dynamischer Aufruf vom ALV. Keine Parameterübergabe
  6. *       !!! ==> direkter Zugriff auf benötigte Werte des Hauptprogramms
  7. *----------------------------------------------------------------------*
  8. *  -->
  9. *  <--
  10. *----------------------------------------------------------------------*
  11. FORM do_data_changed USING data_changed TYPE REF TO
  12.                                         cl_alv_changed_data_protocol.
  13.  
  14.   DATA: wa_alv TYPE          lin_output_alv_lvc.
  15.  
  16.   DATA: wa_mod_cell TYPE lvc_s_modi.
  17.   DATA: h_check_int TYPE i.                              
  18.  
  19. * wenn keine Datenänderung => FORM verlassen
  20.   CHECK NOT data_changed->mt_mod_cells IS INITIAL.
  21.  
  22. * Eingabe auf Integer prüfen                              
  23.   READ TABLE data_changed->mt_mod_cells INTO wa_mod_cell  
  24.                            INDEX 1 TRANSPORTING value.    
  25.   CATCH SYSTEM-EXCEPTIONS convt_no_number = 901.          
  26.     COMPUTE h_check_int = wa_mod_cell-value.              
  27.   ENDCATCH.                                                
  28.   IF sy-subrc <> 0.                                      
  29.     EXIT.                                                  
  30.   ENDIF.                                                  
  31.  
  32. * geänderte Zeile ermitteln
  33.   READ TABLE data_changed->mt_mod_cells INTO wa_mod_cell
  34.                                         INDEX 1 TRANSPORTING row_id.
  35.  
  36. * Werte der einzelnen Spalten holen
  37.   CALL METHOD data_changed->get_cell_value
  38.                EXPORTING i_row_id    = wa_mod_cell-row_id
  39.                          i_fieldname = 'EKORG'
  40.                IMPORTING e_value     = wa_alv-ekorg.
  41.   CALL METHOD data_changed->get_cell_value
  42.                EXPORTING i_row_id    = wa_mod_cell-row_id
  43.                          i_fieldname = 'PVERH'
  44.                IMPORTING e_value     = wa_alv-pverh.
  45.   CALL METHOD data_changed->get_cell_value
  46.                EXPORTING i_row_id    = wa_mod_cell-row_id
  47.                          i_fieldname = 'PROQU'
  48.                IMPORTING e_value     = wa_alv-proqu.
  49.   CALL METHOD data_changed->get_cell_value
  50.                EXPORTING i_row_id    = wa_mod_cell-row_id
  51.                          i_fieldname = 'LIETR'
  52.                IMPORTING e_value     = wa_alv-lietr.
  53.   CALL METHOD data_changed->get_cell_value
  54.                EXPORTING i_row_id    = wa_mod_cell-row_id
  55.                          i_fieldname = 'SERVI'
  56.                IMPORTING e_value     = wa_alv-servi.
  57.  
  58. * Berechnung
  59.   PERFORM set_ges_pkt CHANGING wa_alv.
  60.  
  61. * neuen Wert in die Zeile schreiben
  62.   CALL METHOD data_changed->modify_cell
  63.               EXPORTING i_row_id    = wa_mod_cell-row_id
  64.                         i_fieldname = 'GESPKT'
  65.                         i_value     = wa_alv-gespkt.
  66.  
  67. ENDFORM.                                                "DO_DATA_CHANGED
  68.  
GeSHi ©


mfg
richard
Logan3964
...
...
 
Posts: 386
Joined: Wed Jul 07, 2004 1:53 pm

Postby Mark4068 » Tue Sep 09, 2008 1:45 pm

Hi RiffRaff,

ich habs bei dem "alten" ALV auch gebraucht, um mitzubekommen, ob etwas geändert wurde. Habs im User_command-event wie folgt gelöst:
***************************
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

DATA: ref1 TYPE REF TO cl_gui_alv_grid.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.

CALL METHOD ref1->check_changed_data.

CASE r_ucomm.
when '...'.

endcase.
***************************
somit wird die aktuelle Anzeigetabelle mit den neuen Eingabewerten refreshed und ich habe alle neuen Werte im Zugriff.

Grüsse
Stefan
Mark4068
...
...
 
Posts: 111
Joined: Tue Sep 02, 2008 12:13 pm

Postby Liam876 » Mon Oct 19, 2009 2:34 pm

Hallo RiffRaff,

kann man mit dem favorisierten REUSE_ALV_GRID_DISPLAY_LVC auch einen Druckknopf erzeugen, der dann anscheinend mit dem Ereignis BUTTON_CLICK weiterverarbeitet wird.
Mit REUSE_ALV_GRID_DISPLAY habe ich dies nicht geschafft

Vielen Dank für eine Antwort und viele Grüße
Claudia
Liam876
..
..
 
Posts: 23
Joined: Tue Mar 31, 2009 4:18 pm

Postby Josie2243 » Mon Oct 19, 2009 3:16 pm

Claudia hat geschrieben:kann man mit dem favorisierten REUSE_ALV_GRID_DISPLAY_LVC auch einen Druckknopf erzeugen, der dann anscheinend mit dem Ereignis BUTTON_CLICK weiterverarbeitet wird.


Das BUTTON_CLICK Ergeigniss kann nicht vom LVC abgefangen werden.
Im Include LSLVC_FULLSCREENF01 Form EVENTS_GET kann man sich alle Ereignisse, die der LVC an das rufende Programm zurück gibt, anschauen.
Josie2243
....
....
 
Posts: 908
Joined: Wed Feb 15, 2006 4:05 pm


Return to Tips + Tricks & FAQs

Who is online

Users browsing this forum: No registered users and 10 guests