ALV: F4-Hilfe

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Hallo,

ich habe ein ALV mit drei Spalten: MATNR, Partnernummer, Partnerrolle. Für MATNR und Partnerrolle benutze ich die Standardsuchhilfen. Für die Partnerrolle benötige ich nun eine Suchhilfe, die mir nicht alle definierten Partnerrollen anzeigt, sondern nur diejenigen, die dem im Feld Partnernummer angegebenen Geschäftspartner zugeordnet sind.

Mit anderen Worten: Wie greife ich auf den Wert des Feldes Partnernummer zu, wenn die F4-Hilfe zu Partnerrolle aufgerufen wird (oder wie kann ich das Problem sonst lösen)?

Vielen Dank im voraus,
Margolwes

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


Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Hoppla, es muß natürlich heißen: "Für MATNR und Partner[b]nummer[/b] benutze ich die Standardsuchhilfen."

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
Hi!

Schau dir mal meinen Beitrag zu http://www.abapforum.com/forum/viewtopi ... 4IF#p58962 an.
Dasselbe gilt auch für ALV Grid, nur musst du da nicht nur INTERFACE (F4FIELD) sondern auch SELOPT versorgen. Die Paramterverknüpfung zu einem Dynprofeld fällt natürlich auch weg.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Tut mir leid, ich blick's noch nicht so recht. Für die Partnerrolle gibt es eine Suchhilfe ZBUPA_ROLE, die ich auslese. Das Interface kann ich entsprechend vorbelegen, aber wie versorge ich SELOPT? So wie ich das verstehe, ist das ein Range, der konkrete Werte für LOW bzw. HIGH erwartet. Dazu müßte ich aber wissen, welcher Wert im Feld Partnernummer steht. Wie kann ich diesen Bezug herstellen? Außerdem: Wo mache ich das alles am besten. Im PBO zum Dynpro, das den Grid enthält?

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
hi!

Das kommt ins EVENTHANDLER zum ALV Grid für den Event ONF4 rein.
Da bekommst du auch einen Index mitgeliefert der genau angibt in welcher Zeile bzw. Spalte die F4 Hilfe gedrückt wurde.
Damit kannst du in deiner Tabelle nachlesen und hast dann alle benötigten Daten.

Die F4-Hilfe musst du für die benötigten Felder sowohl im Feldkatalog (LVC_S_FCAT-F4AVAILABL) als auch mit der Methode REGISTER_F4_FOR_FIELDS aktivieren.

lg
ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Hallo,

ich bin jetzt schonmal ein Stück weitergekommen, hänge aber trotzdem noch bei der Übernahme der Partnernummer. Das Szenario ist folgendes: Das ALV ist bei Aufruf noch völlig leer. Der Benutzer gibt dann die Materialnummer ein, dann die Partnernummer und soll dann über die F4-Hilfe zu den Partnerrollen nur diejenigen angezeigt bekommen, die der Partnernummer im GP-Stamm zugewiesen wurden.

Ich kann nun zwar die Zeile identifizieren, in der die F4-Hilfe zur Rolle aufgerufen wurde. Da aber die dem ALV zugrundeliegende Tabelle ja noch leer ist und durch die Eingabe ja erst gefüllt werden soll, kann ich die Partnernummer auch nicht auslesen.

Ich habe versucht, mit cl_gui_alv_grid->get_cell_data den Zellwert zur Partnernummer auszulesen, die Methode ist allerdings nicht public, sodass ich einen Fehler erhalte. Wie lesen ich daher einen noch nicht gespeicherten Wert in einem ALV aus?

Nochmals vielen Dank für eure Hilfe!

Viele Grüße
Margolwes

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
Du must höchstwahrscheinlich CHECK_CHANGED_DATA aufrufen. Dann wird der Inhalt des ALV wieder in die interne Tabelle zurückgeschrieben die du bei SET_TABLE_FOR_FIRST_DISPLAY übergeben hast.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Hallo,

das ergibt einen Dump, weil die Methode ja innerhalb des Eventhandlers zur F4-Hilfe aufgerufen wird und ich mich somit ja noch in der Datenbearbeitung befinde.

Viele Grüße
Margolwes

Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Huhu, hat noch jemand einen Tip? Wie lese ich im ALV die "Nachbarzelle" aus, wenn ich mich im Event ONF4 einer ALV-Zelle befinde? Muss doch irgendwie möglich sein?

Grüße, Margolwes

Re: ALV: F4-Hilfe

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Margolwes hat geschrieben: Ich habe versucht, mit cl_gui_alv_grid->get_cell_data den Zellwert zur Partnernummer auszulesen, die Methode ist allerdings nicht public, sodass ich einen Fehler erhalte. Wie lesen ich daher einen noch nicht gespeicherten Wert in einem ALV aus?
Hast du es mal mit CL_GUI_ALV_GRID->get_current_cell versucht?

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
Margolwes hat geschrieben:das ergibt einen Dump, weil die Methode ja innerhalb des Eventhandlers zur F4-Hilfe aufgerufen wird und ich mich somit ja noch in der Datenbearbeitung befinde.
Ach ja, Stimmt! Hatte das Problem auch schon mal. :(

Zu könntest versuchen den Event CL_GUI_ALV_GRID=>MC_EVT_MODIFIED mit zu CL_GUI_ALV_GRID=>REGISTER_EDIT_EVENT registrieren.
Dann sollte bei jeder Zellenänderung diese direkt in die ursprüngliche Datentabelle zurückgeschrieben werden.
Du musst nur aufpassen, dass du wirklich mit einer globalen Tabelle (in Programm/Klasse definiert) arbeitest und nicht mit eine Lokalen (in Form-Routine/Methode definiert)

Dann sollte bei F4 die benötigten Daten zur Verfügung stehen.

Falls das auch nicht hilft, versuch noch den CL_GUI_ALV_GRID=>MC_EVT_ENTER zu registrieren. Dann wirst du aber bemerken, dass die Eingabe-Funktionen nur sehr langsam und "verzögert" reagieren.

Mehr kann ich dir leider auch nicht weiterhelfen, da ich ein derartiges Problem bislang noch nicht hatte.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
km216 hat geschrieben:Hast du es mal mit CL_GUI_ALV_GRID->get_current_cell versucht?
Die liefert eigentlich nur die aktuelle ZellenPOSITION und nicht den INHALT. Oder hab ich da bislang was verwechselt? :|
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
http://help.sap.com/printdocu/core/Prin ... SRVALV.pdf Seite 72

CALL METHOD <Ref.var. auf CL_GUI_ALV_GRID>->get_current_cell
IMPORTING
E_ROW = <Var. vom Typ I>
E_VALUE = <Var. vom Typ C>
E_COL = <Var. vom Typ I>
ES_ROW_ID = <Struktur vom Typ LVC_S_ROW>
ES_COL_ID = <Struktur vom Typ LVC_S_COL>.

Kann es gerade nicht testen, daher weiß ich nicht, ob es funktioniert.

Re: ALV: F4-Hilfe

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
ah, stimmt, ja, genau.
Hab ich desshalb nie verwendet, da hier nur die aktuell ausgewählte Zelle zurückgegben wird.
Man müsste immer zuerst mit SET_CURRENT_CELL und danach mit GET_CURRENT_CELL arbeiten.
Außerdem ist hier dasselbe Problem wie bei DYNP_VALUES_READ, dass die Werte aus der Anzeige kommen und nicht den internen Werten entsprechen.
Bestes Beispiel sind Datumsfelder: 31.12.2011 statt 20111231.

Aber wenn meine Lösung mit den Events nicht funktioniert, wird nichts anderes übrig bleiben als SET_CURRENT_CELL/GET_CURRENT_CELL zu verwenden.

lg ADT

EDIT: Ich meinte natürlich die Methode SET_CURRENT_CELL_VIA_ID :P
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV: F4-Hilfe

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
a-dead-trousers hat geschrieben:Zu könntest versuchen den Event CL_GUI_ALV_GRID=>MC_EVT_MODIFIED mit zu CL_GUI_ALV_GRID=>REGISTER_EDIT_EVENT registrieren.
Dann sollte bei jeder Zellenänderung diese direkt in die ursprüngliche Datentabelle zurückgeschrieben werden.
Du musst nur aufpassen, dass du wirklich mit einer globalen Tabelle (in Programm/Klasse definiert) arbeitest und nicht mit eine Lokalen (in Form-Routine/Methode definiert)
1000 Dank! Das war's, klappt reibungslos! :D Aaaaber nun gibt es ein Folgeproblem. Hier mal der Code zur Behandlung der F4-Hilfe:

Code: Alles auswählen.

form handle_f4_2002 using  lv_row_no type lvc_s_roid.
  data: ls_gpzuord   type t_gpzuord
      , ls_shlp      type shlp_descr
      , ls_interface type line of shlp_descr-interface
      , ls_selopt    type line of shlp_descr-selopt
      , lt_return    type table of ddshretval
      .

  read table gt_gpzuord into ls_gpzuord index lv_row_no-row_id.

  call function 'F4IF_GET_SHLP_DESCR'
    exporting
      shlpname = 'ZBUPA_ROLE'
      shlptype = 'SH'
    importing
      shlp     = ls_shlp.

  loop at ls_shlp-interface into ls_interface where shlpfield eq 'PARTNER'.
    move: 'X'                    to ls_interface-f4field
        , 'GT_GPZUORD'           to ls_interface-valtabname
        , ls_interface-shlpfield to ls_interface-valfield
        .
    modify ls_shlp-interface from ls_interface.
  endloop.

  move: 'ZBUPA_ROLE'       to ls_selopt-shlpname
      , 'PARTNER'          to ls_selopt-shlpfield
      , 'I'                to ls_selopt-sign
      , 'EQ'               to ls_selopt-option
      , ls_gpzuord-partner to ls_selopt-low
      .
  append ls_selopt to ls_shlp-selopt.

  call function 'F4IF_START_VALUE_REQUEST'
    exporting
      shlp                = ls_shlp
*   DISPONLY            = ' '
*   MAXRECORDS          = 500
*   MULTISEL            = ' '
*   CUCOL               = SY-CUCOL
*   CUROW               = SY-CUROW
* IMPORTING
*   RC                  =
    tables
      return_values       = lt_return
  .
endform.                    " handle_f4_2002
Wie gesagt funktioniert die Vorbelegung der F4-Hilfe nun, d.h. die Selektion auf den Geschäftspartner funktioniert. Allerdings erscheint die gleiche Suchhilfe nun zweimal, einmal wie gewünscht mit der Vorbelegung und anschließend direkt noch einmal ohne Vorbelegung.

Viele Grüße
Margolwes

Vergleichbare Themen

0
Antw.
2325
Views
Hilfe...
von SAPDIDI2 » 13.07.2007 08:13 • Verfasst in ABAP® Core
3
Antw.
3768
Views
F4 Hilfe
von bohne » 29.11.2006 13:20 • Verfasst in ABAP® für Anfänger
0
Antw.
1683
Views
Hilfe für Übungsaufgabe
von Goldwing » 04.01.2011 13:21 • Verfasst in ABAP® für Anfänger
4
Antw.
16517
Views
F4 Hilfe Werteliste
von herr mb » 26.01.2011 10:14 • Verfasst in ABAP® für Anfänger
3
Antw.
2158
Views
F4-Hilfe positionieren
von TakerOne » 28.07.2014 10:06 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

FS-CD schnellstmöglich lernen
vor 17 Stunden von wreichelt 2 / 910
Banf anlegen
vor 6 Tagen von wreichelt 2 / 8257
Banf anlegen
vor einer Woche von Manfred K. 1 / 7890
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 23450
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 13122

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

FS-CD schnellstmöglich lernen
vor 17 Stunden von wreichelt 2 / 910
Banf anlegen
vor 6 Tagen von wreichelt 2 / 8257
Banf anlegen
vor einer Woche von Manfred K. 1 / 7890
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 23450
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 13122