Code: Alles auswählen.
METHODS:
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
Code: Alles auswählen.
go_alv_grid = NEW #( i_parent = go_alv_container
i_appl_events = abap_true ).
Code: Alles auswählen.
SET HANDLER go_event_receiver->handle_user_command FOR go_alv_grid.
Ich hätte noch dazu erwähnen sollen, dass ich von einer Standardtransaktion ein Button dazugegeben habe mit Hilfe von ALV Navigationsbutton. Also dafür musste man nicht programmieren.sap_enthusiast hat geschrieben: ↑24.03.2022 11:31Du sollst entsprechende Handler-Methode benutzen.
Definition in lokaler Klasse:In der Implementierung sollst ja dann auswerten und Werte dazulesen falls benötigt.Code: Alles auswählen.
METHODS: handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm.
Kannst dann auch Popup rufen oder was auch immer nötig ist.
Entsprechende Instanszierung:Registrierung für Ereignis:Code: Alles auswählen.
go_alv_grid = NEW #( i_parent = go_alv_container i_appl_events = abap_true ).
Code: Alles auswählen.
SET HANDLER go_event_receiver->handle_user_command FOR go_alv_grid.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ABAPlerv
PeterPaletti hat geschrieben: ↑25.03.2022 09:02Jetzt habe ich endlich verstanden, was du meinst. Man lernt halt nie aus.
Es gibt in einigen Standard-Transaktionen zum ALV-Grid einen vom Entwickler vorgesehen Navigationsbutton, der so konfiguriert werden kann, dass man damit zum Beispiel in eine andere Transaktion abspringen kann.
Und so von so einer Transaktion willst du über die Konfiguration in die MIGO abspringen und dabei Daten aus dem Grid mitnehmen, um die MIGO vorzubelegen.
Meines Erachtens müsste das mit einem Klassenaufruf gehen.
Bei der Konfiguration des Navigationsbuttons die Option „Klassenaufruf“ wählen, und dann eine selbst programmierte Klasse eintragen, die das Interface IF_NAVIGATION_PROFILE mit der Methode USER_COMMAND implementiert. In der Methode müsstest du das Grid ausschlachten, welche Zeile gewählt wurde, und den Funktionsbaustein MIGO_DIALOG aufrufen und mit den gewünschten Daten vorbelegen.
Code: Alles auswählen.
DATA:
lo_alv_grid TYPE REF TO cl_gui_alv_grid,
lt_rows TYPE lvc_t_row,
lv_kunnr TYPE vbak-kunnr.
FIELD-SYMBOLS:
<table> TYPE table,
<field> TYPE any.
ASSIGN id_table->* TO <table>.
TRY.
lo_alv_grid ?= io_alv.
CATCH cx_sy_move_cast_error.
ENDTRY.
IF NOT lo_alv_grid IS INITIAL.
CALL METHOD lo_alv_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CHECK lines( lt_rows ) = 1.
READ TABLE lt_rows ASSIGNING FIELD-SYMBOL(<ls_row>) INDEX 1.
CHECK sy-subrc EQ 0.
READ TABLE <table> ASSIGNING FIELD-SYMBOL(<line>) INDEX <ls_row>-index.
CHECK sy-subrc EQ 0.
ASSIGN COMPONENT 'KDAUF' OF STRUCTURE <line> TO <field>.
CHECK sy-subrc EQ 0.
IF NOT <field> IS INITIAL.
SELECT SINGLE kunnr FROM vbak INTO lv_kunnr WHERE vbeln = <field>.
CHECK sy-subrc EQ 0.
SET PARAMETER ID 'KUN' FIELD lv_kunnr.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ABAPlerv
Vielen Dank!PeterPaletti hat geschrieben: ↑25.03.2022 14:35Ich habe es mal an der Transaktion MDVP ausprobiert, da springe ich über den Kundenauftrag in den Debitor.Code: Alles auswählen.
DATA: lo_alv_grid TYPE REF TO cl_gui_alv_grid, lt_rows TYPE lvc_t_row, lv_kunnr TYPE vbak-kunnr. FIELD-SYMBOLS: <table> TYPE table, <field> TYPE any. ASSIGN id_table->* TO <table>. TRY. lo_alv_grid ?= io_alv. CATCH cx_sy_move_cast_error. ENDTRY. IF NOT lo_alv_grid IS INITIAL. CALL METHOD lo_alv_grid->get_selected_rows IMPORTING et_index_rows = lt_rows. CHECK lines( lt_rows ) = 1. READ TABLE lt_rows ASSIGNING FIELD-SYMBOL(<ls_row>) INDEX 1. CHECK sy-subrc EQ 0. READ TABLE <table> ASSIGNING FIELD-SYMBOL(<line>) INDEX <ls_row>-index. CHECK sy-subrc EQ 0. ASSIGN COMPONENT 'KDAUF' OF STRUCTURE <line> TO <field>. CHECK sy-subrc EQ 0. IF NOT <field> IS INITIAL. SELECT SINGLE kunnr FROM vbak INTO lv_kunnr WHERE vbeln = <field>. CHECK sy-subrc EQ 0. SET PARAMETER ID 'KUN' FIELD lv_kunnr. CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN. ENDIF. ENDIF.