ALV Grid: F4 Hilfe ruft data_changed

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

ALV Grid: F4 Hilfe ruft data_changed

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Hallo zusammen,

ich habe hier ein editierbares ALV Grid mit interessanten Verhalten. Wenn man die F4 Hilfe von Materialnummer aufruft, wird, aus welchem Grund auch immer, data_changed gerufen. Das passt mir leider überhaupt nicht, deshalb frage ich, was ich tun könnte. Es passiert nur bei MatNr, nicht bei anderen Spalten, die ebenfalls F4 Hilfen haben. Es handelt sich um die Standard F4 Hilfe.
Ich habe herausgefunden, dass ich da anscheinend nicht die Einzige bin, hier hat jemand genaus das gleiche Phänomen: https://answers.sap.com/questions/56181 ... ing-o.html

Kann jemand helfen?

Code: Alles auswählen.

CLASS cl_event_handler DEFINITION.

  PUBLIC SECTION.

    ...

    METHODS handle_data_changed_param                         " Prüfungen bei Datenänderung auf Dynpro 2000
    FOR EVENT data_changed OF cl_gui_alv_grid
    IMPORTING er_data_changed.

    ...

ENDCLASS.                    "cl_event_handler DEFINITION

Code: Alles auswählen.

METHOD handle_data_changed_param.

    DATA: ls_cell         TYPE lvc_s_modi.

*   Über verifizierte geänderte Zeilen loopen (die Zeilen, deren Werte mit ihren Datentypen kompatibel sind)
    LOOP AT er_data_changed->mt_good_cells INTO ls_cell.

        ... " Prüfungen

    ENDLOOP.

  ENDMETHOD.                    "handle_data_changed_param
Fieldcat von MatNR (wo Problem auftaucht) und Menge (wo Problem NICHT auftaucht)

Code: Alles auswählen.

  wa_fcat-tabname = 'T_SELEKTION'.
  wa_fcat-fieldname = 'MATNR'.
  wa_fcat-col_pos = '1'.
  wa_fcat-outputlen = '12'.
  wa_fcat-scrtext_s = 'Material'.
  wa_fcat-scrtext_m = 'Material'.
  wa_fcat-scrtext_l = 'Material'.
  wa_fcat-reptext = 'Material'.
  wa_fcat-ref_table = 'EKPO'.
  APPEND wa_fcat TO gt_fcat_param.
  CLEAR wa_fcat.

  wa_fcat-tabname = 'T_SELEKTION'.
  wa_fcat-fieldname = 'MENGE'.
  wa_fcat-col_pos = '2'.
  wa_fcat-no_zero = 'X'.
  wa_fcat-outputlen = '8'.
  wa_fcat-scrtext_s = 'Menge'.
  wa_fcat-scrtext_m = 'Menge'.
  wa_fcat-scrtext_l = 'Menge'.
  wa_fcat-reptext = 'Menge'.
  wa_fcat-ref_table = 'EKPO'.
  APPEND wa_fcat TO gt_fcat_param.

Code: Alles auswählen.

* Tabellentypen
TYPES: BEGIN OF ty_selektion,

  matnr TYPE matnr,   " EKPO - Materialnummer
  ...
  menge TYPE bstmg,   " EKPO - Menge

END OF ty_selektion.

* interne Tabellen
DATA: t_selektion TYPE STANDARD TABLE OF ty_selektion.
Alv-Aufbau

Code: Alles auswählen.

FORM alv_param_init.

  DATA: ls_layout  TYPE lvc_s_layo,
*        lt_exclude TYPE ui_functions,
*        ls_exclude TYPE ui_func,
        ls_variant TYPE disvariant.

* nur ausführen, wenn das ALV noch nicht existiert (notwendig, falls man vom Folgedynpro zurückklickt)
  IF go_cont_param IS INITIAL.

*   Dynpro Status zuordnen
    SET PF-STATUS 'STATUS'.

*   Custom Container erstellen
    CREATE OBJECT go_cont_param
      EXPORTING
        container_name = 'PARAM_2000'.

*   Grid dem Container zuordnen
    CREATE OBJECT go_grid_param
      EXPORTING
        i_parent = go_cont_param.

*   Event Handlers erstellen
    CREATE OBJECT go_event_handler.
    SET HANDLER go_event_handler->handle_toolbar_param          FOR go_grid_param.
    SET HANDLER go_event_handler->handle_context_menu_param     FOR go_grid_param.
    SET HANDLER go_event_handler->handle_data_changed_param     FOR go_grid_param.
*    SET HANDLER go_event_handler->handle_user_command           FOR go_grid_param.

*   Titel
    ls_layout-grid_title = 'XYZ'.

*   Mehrfachselektionen
    ls_layout-sel_mode = 'A'.

*   Alle Spalten editierbar machen
    ls_layout-edit = 'X'.

*   Layout-Variante des Users laden
    ls_variant-report   = sy-repid.
    ls_variant-username = sy-uname.

*   Fieldcatalogue erstellen
    PERFORM fcat_param_erstellen.

*   Grid erstellen
    CALL METHOD go_grid_param->set_table_for_first_display
      EXPORTING
        is_layout            = ls_layout
        is_variant           = ls_variant
*        it_toolbar_excluding = ls_exclude
        i_save               = 'A'
      CHANGING
        it_fieldcatalog      = gt_fcat_param
        it_outtab            = t_selektion.

*   Editierbare Zeilen aktivieren
    CALL METHOD go_grid_param->set_ready_for_input
      EXPORTING
        i_ready_for_input = 1.

*   Enter als Möglichkeit registrieren, data_changed zu rufen
    CALL METHOD go_grid_param->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.

  ENDIF.

ENDFORM.                    "alv_param_init
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

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


Re: ALV Grid: F4 Hilfe ruft data_changed

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi,
das Verhalten kenne ich, dazu gibt es aber eine Abhilfe, im data_changed event gibt es noch Parameter dafür:

E_ONF4 TYPE CHAR1
E_ONF4_BEFORE TYPE CHAR1
E_ONF4_AFTER TYPE CHAR1

ich glaube. ist E_ONF4 = 'X' kommt der Aufruf aus dem F4 Handler, finde gerade die Stelle nicht, wo ich das benutzt habe

Grüße Edwin

Folgende Benutzer bedankten sich beim Autor edwin für den Beitrag:
Legxis


Re: ALV Grid: F4 Hilfe ruft data_changed

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Danke edwin, da hast du recht, es sind E_ONF4 und E_ONF4_BEFORE gekennzeichnet. Jetzt frage ich mich allerdings, wie ich meine Probleme mit diesem Wissen lösen kann.

Ich habe das Problem, dass die Eingabe, die ich über F4 Hilfe tätige nicht übernommen wird. Data_changed wird nur vor dem F4 Aufruf gerufen, danach passiert nichts und das Feld bleibt leer
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: ALV Grid: F4 Hilfe ruft data_changed

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi,
das ist komisch, ich habe hier ein Grid mit Standard F4 Hilfen und Felder mit eigener F4 Hilfe,
bei allen (editierbaren Feldern) wird bei F4 DATA_CHANGED 2 mal aufgerufen :

Standard F4
1. HDL_CHANGED : e_onf4 = 'X' und e_onf4_before = 'X'
-- F4 Bild - Eintrag wir ausgewählt ->
2. HDL_CHANGED : e_onf4 = 'X' und e_onf4_after = 'X' e_onf4_before = ''
jetzt steht in ..->mt_good_cells[1] - der ausgewählte Wert

eigene F4 mit eigebenem Handler
1. HDL_CHANGED : e_onf4 = 'X' und e_onf4_before = 'X'
--eigenes F4 Bild - Eintrag wir ausgewählt
2. HDL_ONF4 -hier wird der Eintrag noch geprüft und weiter verarbeitet und ein refresh durchgeführt
er_event_data->m_event_handled = 'X'.

3. HDL_CHANGED : e_onf4 = 'A' und e_onf4_after = ' ' e_onf4_before = ''
kein Eintrag in ..->mt_good_cells -

und es funktioniert

/Edwin

Folgende Benutzer bedankten sich beim Autor edwin für den Beitrag:
Legxis


Re: ALV Grid: F4 Hilfe ruft data_changed

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Problem ist jetzt gelöst.

Einerseits kann man es lösen, indem man den Feldkatalog mit einer Struktur aufbaut, anstatt manuell. Dann ist aber die Frage, wieso das dann funktioniert.
Also habe mir ein anderes Programm mit ALV und MATNR angeschaut (wenn auch nicht editierbar) und den dort vorhandenen Fieldkatalog nachgebaut, abgesehen davon, dass ich nicht die Struktur als ref_table verwendete. Das hat nicht funktioniert. Dann habe ich aber statt EKPO MARA ausprobiert und voilà.

Code: Alles auswählen.

wa_fcat-ref_table = 'MARA'.      " NICHT EKPO
Danke nochmal für deine Hilfe Edwin =)
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Seite 1 von 1

Vergleichbare Themen

0
Antw.
2291
Views
DATA-CHANGED-PROTOCOL vom ALV-Grid manipulieren
von Frog » 27.05.2008 21:31 • Verfasst in ABAP Objects®
1
Antw.
10159
Views
Getting the displayed data from an ALV Grid.
von Meurant » 22.11.2005 03:55 • Verfasst in Development Related
5
Antw.
4241
Views
Position der F4-Hilfe im ALV-Grid
von mfromg » 12.04.2017 10:38 • Verfasst in Dialogprogrammierung
1
Antw.
4535
Views
ALV GRID (OO) F4-Hilfe auf Zellenebene
von Cysco » 06.03.2006 10:07 • Verfasst in ABAP Objects®
0
Antw.
2325
Views
ALV-GRID F4 Hilfe FB (F4IF_START_VALUE_REQUEST)
von axel.mohnen » 12.10.2005 13:11 • Verfasst in ABAP Objects®

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor einer Stunde von rob_abc 4 / 29
Dialog-Container mit Toolbar/Status
vor 21 Stunden von tar gelöst 19 / 2087
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

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

Zeilenumbrüche ersetzen
vor einer Stunde von rob_abc 4 / 29
Dialog-Container mit Toolbar/Status
vor 21 Stunden von tar gelöst 19 / 2087
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 506
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2143
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8739