Von ALV Grid MM03 aufrufen

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

Von ALV Grid MM03 aufrufen

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
hallo abapfreunde

ich habe eine ziemlich komplizierte Frage an euch, und zwar geht es um ALV Grid.
Ich habe ein Programm geschrieben, der die MARA Datenbank selektiert und anschliessend in ALV-Grid
ausgibt. Darunter werden Felder wie MATNR, ERSDA, ERNAM, LAEDA, usw. angezeigt. Wie bringe ich es fertig,
wenn ich auf MATNR klicke, der Transaktion MM03 aufgerufen wird. Dabei muss die Materialnummer mitgegeben werden,
damit der Benutzer nicht eingeben muss.
Wäre sehr sehr dankbar für eure Hilfe.

Vielen Dank kostonstyle

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


Beitrag von Matthias.Selle (ForumUser / 69 / 1 / 0 ) »
Hallo,

so geht es:

1) Klasse definieren

Code: Alles auswählen.

CLASS lcl_event_receiver DEFINITION.

  PUBLIC SECTION.
    METHODS:
    handle_double_click
        FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING  e_row.

  PRIVATE SECTION.

ENDCLASS.                    "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.    "#EC

  METHOD handle_double_click.

    READ TABLE gt_out INDEX e_row-index INTO gs_out.
    SET PARAMETER ID 'BES' FIELD gv_ebeln.
    CALL TRANSACTION 'ME22N'.

  ENDMETHOD.                           "handle_double_click

ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
2) Da noch den Parameter E_COLUMN bei EVENT double_click einbauen
und in der Methode handle_double_click verwenden.
3) Handle einbauen (direkt hinter dem set_table_for_first_display)

Code: Alles auswählen.

* event double_click initialisieren
    create object go_receiver.
    SET HANDLER go_receiver->handle_double_click FOR go_grid.
4) und natürlich vorher iinitialisieren:

Code: Alles auswählen.

  data:    go_receiver         TYPE REF TO lcl_event_receiver.
Viele Grüße
Matthias
Zuletzt geändert von Matthias.Selle am 20.08.2008 16:45, insgesamt 2-mal geändert.

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Kotonstyle,

es funktioniert zum Beispiel mit folgender Prozedur:

Code: Alles auswählen.

FORM user_commands USING i_ucomm TYPE syst-ucomm     "#EC CALLED by ALV
                         i_selfield TYPE slis_selfield.
  CONSTANTS:
    lc_tcode TYPE syst-tcode VALUE 'MM03'.
  DATA:
    lv_matnr TYPE mara-matnr.
  CASE i_ucomm.
    WHEN '&IC1'. "Double click
      IF i_selfield-fieldname = 'MATNR'.
        CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
          EXPORTING
            tcode  = lc_tcode
          EXCEPTIONS
            ok     = 0
            not_ok = 2
            OTHERS = 99.
        IF sy-subrc IS NOT INITIAL.
          MESSAGE e172(00) WITH lc_tcode.
        ELSE.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
            EXPORTING
              input        = i_selfield-value
            IMPORTING
              output       = lv_matnr
            EXCEPTIONS
              length_error = 1
              OTHERS       = 99.
          IF NOT sy-subrc IS INITIAL.
            MESSAGE i171(q3) WITH i_selfield-value.
          ELSE.
            SET PARAMETER ID 'MAT' FIELD lv_matnr.
            CALL TRANSACTION lc_tcode AND SKIP FIRST SCREEN.
          ENDIF.
        ENDIF.
      ENDIF.
    WHEN OTHERS.
*     NOP
  ENDCASE.
ENDFORM.                    "user_commands
Damit diese aufgerufen wird musst Du noch beim Aufruf von 'REUSE_ALV_GRID_DISPLAY' den Parameter 'i_callback_user_command' entsprechend setzen (s.u.).

Code: Alles auswählen.

* Displays the ALV grid
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_interface_check             = lv_check
*       I_BYPASSING_BUFFER            = ' '
*       I_BUFFER_ACTIVE               = ' '
        i_callback_program            = lv_repid
*       I_CALLBACK_PF_STATUS_SET      = ' '
        i_callback_user_command       = 'USER_COMMANDS'
*       I_CALLBACK_HTML_END_OF_LIST   = ' '
*       I_STRUCTURE_NAME              =
*       I_BACKGROUND_ID               = ' '
...
MfG
Thomas R.[/code]

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
danke für eure hilfe
ich werde es mal versuchen und mein coding hier auflisten.
danke abapfriends

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
noch eine frage, warum muss dieser befehl in pbo stehen, warum nicht in pai.
es ist logischer wenn der befehl in pai steht nicht?

Code: Alles auswählen.

* event double_click initialisieren 
    create object go_receiver. 
    SET HANDLER go_receiver->handle_double_click FOR go_grid.

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
kostonstyle hat geschrieben:noch eine frage, warum muss dieser befehl in pbo stehen, warum nicht in pai.
Neinn, den wenn ein Doppelklick im ALV ausgeführt wird, wird das Ereignis ausgelöst, aber nicht PAI durchlaufen. Wenn also nicht zu PBO dem Ereignis ein Verbraucher zugewiesen wird, wird das Ereignis "Doppelklick" ins leere laufen.
Gruß Hendrik

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
Ok, vielen dank

Beitrag von vman (ForumUser / 43 / 2 / 0 ) »
Hallo,

ich stehe jetzt im Prinzip vor demselben Problem; lediglich die Transaktion, die ich aufrufen muß ist eine andere, nämlich die VA03.
Es klappt alles außer der Übergabe des Parameters an die Transaktion, wenn ich im ALV-Grid auf die Belegnummer doppelklicke.
Gibt es da vielleicht einen Funktionsbaustein, der dort weiterhilft oder welche Möglichkeiten habe ich da noch?
Ich danke euch für eure Hilfe.

Gruß,

vman.

Beitrag von vman (ForumUser / 43 / 2 / 0 ) »
Ich habe die Lösung jetzt selbst gefunden, aber danke an alle, die meine Frage gelesen und evtl. darüber nachgedacht haben.

Gruß,

vman.

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »

Code: Alles auswählen.

set parameter id 'AUN' field belegnummerfeld
so sollte es klappen.

gruss kostonstyle

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
vman hat geschrieben:Ich habe die Lösung jetzt selbst gefunden, aber danke an alle, die meine Frage gelesen und evtl. darüber nachgedacht haben.
Danke dass du auch alle anderen wissen lässt, wie du es gelöst hast. :twisted: :twisted: :twisted:


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von vman (ForumUser / 43 / 2 / 0 ) »
Da kostonstyle den Lösungsweg gepostet hat (danke dafür), hielt ich es nicht für notwendig, ihn nochmal zu schreiben.
Sonst hätte ich mir sicher anhören müssen, dass Doppelpostings böse sind.
:wink:

SET PARAMETER ID 'AUN' FIELD i_selfield-value.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

ich hab ja nicht alles vom Coding gelesen.

Ich mache das mit dem Funktionsbaustein "MASTER_DATA" aus dem PM.

Der hat ein paar Customizing-Tabellen (T354x) im Bauch.

Nach HOT_SPOT oder DOUBLE_CLICK im ALV füllt man per CASE-Anweisung die entsprechende Struktur und ruft dann den Baustein 'MASTER_DATA' auf.

Der Baustein füllt ggf. die Memory-Parameter und ruft die hinterlegte Transaktion auf. Wenn Objekte fehlen, kann man die nachcustomizen.

Gruß
babap

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1928
Views
ALV-Grid mit Excel aufrufen - Fehlende Spalten
von Sven » 18.03.2006 15:29 • Verfasst in ABAP® Core
8
Antw.
2715
Views
Sichten MM03
von Gottschall » 06.11.2015 11:22 • Verfasst in ABAP® für Anfänger
2
Antw.
572
Views
MM03 Selektion
von il.ost » 10.05.2019 16:53 • Verfasst in ABAP® für Anfänger
7
Antw.
9102
Views
Mit MM03 Bilder einfügen
von MisterB » 11.02.2013 14:52 • Verfasst in Material Management & Produktionsplanung
3
Antw.
1600
Views
User exits für MM03
von Besi » 15.03.2005 12:00 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 12 Stunden von DeathAndPain gelöst 22 / 3144
Daten an Tabelle binden
vor 17 Stunden von Lukas Sanders 2 / 1033
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 606

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 12 Stunden von DeathAndPain gelöst 22 / 3144
Daten an Tabelle binden
vor 17 Stunden von Lukas Sanders 2 / 1033
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 606

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2605
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9193