Code: Alles auswählen.
CLASS: lcl_handler IMPLEMENTATION.
METHOD on_double_click.
READ TABLE it_out INTO wa_out INDEX i_selfield-tabindex.
SET PARAMETER ID 'MAT' FIELD wa_out-matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDMETHOD.
ENDCLASS.
Code: Alles auswählen.
CLASS lcl_event_handle IMPLEMENTATION.
* Methode für Hotspotclick
METHOD on_hotspot_click.
* Display component lines
CASE column.
WHEN 'BELNR'.
PERFORM display_fi_document
USING row.
WHEN 'EBELN'.
PERFORM display_purchase_order
USING row.
Aber nicht automatisch; Das muss extra deklariert werden!4byte hat geschrieben:Hallo Chopper,
die Methode braucht das Event : FOR EVENT double_click OF cl_salv_events_table in der Methodendefinition.
Dann bekommst du als Importparameter die Row und Column
Code: Alles auswählen.
METHOD on_double_click.
i_selfield TYPE slis_selfield.
Code: Alles auswählen.
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_link_click
FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
Code: Alles auswählen.
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_link_click.
READ TABLE gt_auswertung INTO wa_auswertung INDEX row.
IF sy-subrc = 0.
CASE column.
...
WHEN 'MATNR'.
IF wa_auswertung-matnr IS NOT INITIAL.
SET PARAMETER ID 'MAT' FIELD wa_auswertung-matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
...
ENDCASE.
ENDIF.
ENDMETHOD.
ENDCLASS.
Code: Alles auswählen.
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_double_click
FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_link_click.
READ TABLE it_output INTO wa_output INDEX row.
SET PARAMETER ID: 'CV1' FIELD wa_output-doknr,
'CV2' FIELD wa_output-dokar.
gw_bdcdata-program = 'SAPLCV110'.
gw_bdcdata-dynpro = '100'.
gw_bdcdata-dynbegin = 'X'.
APPEND gw_bdcdata TO gt_bdcdata.
CALL TRANSACTION 'CV03N' USING gt_bdcdata MODE 'E'.
ENDMETHOD.
ENDCLASS.
In etwas moderneren Systemen ist das "unscheinbare Böppel-Icon" sogar beschriftet. Nur durch die Beschriftung habe ich es letztens selber erst entdeckt und dann auf einem älteren System gesehen, dass es wohl schon länger vorhanden ist. Für diejenigen, die nicht wissen was ewx meint: Und noch ein Hinweis: Der Böppel übenimmt nicht das "SENDER"-Attributewx hat geschrieben:In der SE24 im Editor ist das im Methoden-Tab das kleine unscheinbare blaue Böppel-Icon, dass die Eventparameter übernimmt.
Ja ich hab den Importingparameter vergessen anzugebenewx hat geschrieben: Aber nicht automatisch; Das muss extra deklariert werden!
In der SE24 im Editor ist das im Methoden-Tab das kleine unscheinbare blaue Böppel-Icon, dass die Eventparameter übernimmt.
Ansonsten in der Methodendefinition die Code-Vervollständigung nutzen; da zeigt der Editor die möglichen Parameter an.
Code: Alles auswählen.
DATA: gr_events TYPE REF TO lcl_handler.
DATA: lr_events TYPE REF TO cl_salv_events_table.
CREATE OBJECT gr_events.
SET HANDLER gr_events->on_double_click FOR lr_events.
Also vor dem set table for first Display? Dann gibt er mir die Fehlermeldung aus, dass die Referenz auf das Behandlerobjekt nicht NULL sein darf.4byte hat geschrieben:Ich erzeuge das Objekt an der Stelle, an der ich auch das ALV erzeuge.
Code: Alles auswählen.
IF lr_events IS NOT INITIAL.
SET HANDLER gr_events->on_double_click FOR lr_events.
CREATE OBJECT gr_events.
ENDIF.
Code: Alles auswählen.
io_alv->set_table_for_first_display( .... ) ....
Code: Alles auswählen.
io_alv->set_table_for_first_display( )
Code: Alles auswählen.
SET HANDLER double_click FOR io_alv