kann mir jemand bei folgendem Problem auf die Sprünge helfen:
Ich habe ein Dynpro (Mitglied), das in einem Subscreen z. B. 9 Ansprechpartner des Mitglieds auflistet.
Wenn ich nun im Subscreen scrolle (weil nur Platz für 5 Zeilen in der Anzeige sind) und z. B. die Einträge 7 - 9 vor mir sehe und schließlich den Cursor in den 9. stelle, steht aber trotzdem in CRS_LINE der Wert 3 (3. sichtbare Zeile) -> was dazu führt, dass bei einem Doppelklick der 3. Anprechpartner angezeigt wird und nicht der 9.
Der Aufruf zur Ermittlung des Anprechpartners und dem Ausführen der "Doppelklick"-Funktionalität (in diesem Fall Aufruf der Transaktion VAP3 im eigenen FuBa) passiert im PAI meines Dynpros:
FORM sapmf02d_vap3_call.
FIELD-SYMBOLS: <ls_knvk> TYPE fknvk,
<lt_knvk> TYPE table,
<l_line> TYPE i.
ASSIGN ('(SAPMF02D)CRS_LINE') TO <l_line>.
CHECK sy-subrc = 0 AND NOT <l_line> IS INITIAL.
ASSIGN ('(SAPMF02D)XKNVK[]') TO <lt_knvk>.
READ TABLE <lt_knvk> ASSIGNING <ls_knvk>
INDEX <l_line>.
CALL FUNCTION 'Z_NW_VAP3_START'
EXPORTING
i_parnr = <ls_knvk>-parnr.
ENDFORM. "sapmf02d_vap3_call
Was ich bräuchte, wäre zumindest die Info, OB gescrollt wurde bzw. welche Zeile von allen (und nicht nur der sichtbaren) ausgewählt worden ist.
du hast eine Erweiterung programmiert und greifst dir mittels dirty assign irgendwelche Daten aus dem Speicher.
Da solltest du einfach das Rahmenprogramm durchlesen und herausfinden wo SAP aus der geklickten Zeile den Index in der Tabelle berechnet und holst dir dann ( wahrscheinlich wieder über dirty assign ) die zugehörigen Daten und programmierst einfach das nach, was SAP selber auch macht.
Vermutlich eine Variable die TOP_LINE oder so ähnlich heißt, da die aktuelle Cursorposition CRS_LINE (=CURSOR LINE) lautet.
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.