ALV Navigationbutton

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

ALV Navigationbutton

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
Hallo,
ich habe ein Button im ALV eingefügt mit dem NavigationButton.
Dieser Button navigiert mich auch zur richtigne Transaktion (MIGO).

Ich möchte aber vordefinierte Werte im MIGO sehen wollen.

Kann man vielleicht ohne programmieren in der Einstellung vom ALV Navigationsbutton
das einstellen?

Muss ich wirklich dafür was programmieren?
Der Funktionsbaustein MIGO_DIALOG würde die vordefinierten Daten ausgeben.
Zusätzlich habe ich den BADI MB_MIGO_BADI gefunden. (Ich weiß aber noch nicht, welche Methode ich da wirklich verwenden soll).

Danke

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: ALV Navigationbutton

Beitrag von sap_enthusiast (ForumUser / 95 / 25 / 23 ) »
Du sollst entsprechende Handler-Methode benutzen.
Definition in lokaler Klasse:

Code: Alles auswählen.

METHODS:
      handle_user_command
                  FOR EVENT user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm.
In der Implementierung sollst ja dann auswerten und Werte dazulesen falls benötigt.
Kannst dann auch Popup rufen oder was auch immer nötig ist.

Entsprechende Instanszierung:

Code: Alles auswählen.

go_alv_grid = NEW #( i_parent = go_alv_container
                         i_appl_events = abap_true ).
Registrierung für Ereignis:

Code: Alles auswählen.

SET HANDLER go_event_receiver->handle_user_command FOR go_alv_grid.

Re: ALV Navigationbutton

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
sap_enthusiast hat geschrieben:
24.03.2022 11:31
Du sollst entsprechende Handler-Methode benutzen.
Definition in lokaler Klasse:

Code: Alles auswählen.

METHODS:
      handle_user_command
                  FOR EVENT user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm.
In der Implementierung sollst ja dann auswerten und Werte dazulesen falls benötigt.
Kannst dann auch Popup rufen oder was auch immer nötig ist.

Entsprechende Instanszierung:

Code: Alles auswählen.

go_alv_grid = NEW #( i_parent = go_alv_container
                         i_appl_events = abap_true ).
Registrierung für Ereignis:

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.

Jetzt möchte MIGO mit vordefinierten Werten befüllen.
Das heißt, in Transaktion1 selektiere ich eine Zeile => Dann klicke ich auf den neuen Button => MIGO öffnet sich, was fehlt sind die vordefinierten Daten.

Da möchte ich jetzt irgendwo eingreifen, um die Daten in MIGO zu setzen.

Re: ALV Navigationbutton

Beitrag von PeterPaletti (Specialist / 350 / 32 / 97 ) »
Jetzt 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.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ABAPlerv


Re: ALV Navigationbutton

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
PeterPaletti hat geschrieben:
25.03.2022 09:02
Jetzt 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.

Danke dir!!!! Unglaublich wie einfach das funktioniert!
Ich habe in einer Standardklasse eine implizite Erweiterung mir angelegt mit eigenen Klassen, hat zwar auch funktioniert,aber nicht so schön und einfach wie dein Vorschlag, dass der Button auch eine Klasse aufrufen kann.

Viel dazu gelernt! :) Danke dir.

Re: ALV Navigationbutton

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
Hat sich erledigt :)

Re: ALV Navigationbutton

Beitrag von PeterPaletti (Specialist / 350 / 32 / 97 ) »
Ich 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.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ABAPlerv


Re: ALV Navigationbutton

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
PeterPaletti hat geschrieben:
25.03.2022 14:35
Ich 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.
Vielen Dank!
Ich bin begeistert! haha

Einerseits auch etwas depremiert, weil ich mir da etwas schwerer getan habe, aber andererseits habe ich jetzt einiges neues gelernt, dass ich in der Zukunft nutzen kann.
Hoffentlich bin ich nach 2 Jahren besser in ABAP :)

Seite 1 von 1

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.