gelöst Ausgewähltes / aktives CUSTOM CONTROL bei F2-Tastendruck


Benutzeroberflächen in SAP®-Systemen.

Moderatoren: Jan, Steff

gelöst Ausgewähltes / aktives CUSTOM CONTROL bei F2-Tastendruck

Beitragvon Gokar » 07.03.2018, 17:34

Hallo in die Runde,

ich habe aktuell leider ein Problem mit dem F2-Tastendruck (der Doppelklick ist hier nicht das Problem, der funktioniert).

Kennt jemand eine Möglichkeit, zum Zeitpunkt PAI (process-after-input) festzustellen, ob ein bzw. welches Custom Control zum Zeitpunkt des F2-Tastendrucks ausgewählt / aktiv ist?

Die Anweisungen GET CURSOR FIELD und GET CURSOR LINE funktionieren ja leider nicht für Custom Controls, sondern nur für Dynprofelder und Tablecontrolls.

***

Hier noch eine kurze Hintergrundbeschreibung:

- Das betroffene Dynpro beinhaltet mehrere ALV-Grid-Elemente, jeweils über ein Custom Control eingebunden, als auch simple Dynpro-Textfelder.
- In den ALV-Grid-Elementen kann eine Zeile ausgewählt werden, daraufhin werden die Dynpro-Textfelder entsprechend mit den zur ausgewählen Zeile gehörenden Daten versorgt. Hierzu wurden jeweils die Events DOUBLE_CLICK und ON_LINK_CLICK der Klasse CL_SALV_EVENTS_TABLE registriert und mit Logik versorgt.
- Einige Dynpro-Textfelder sind doppelklicksensitiv (bspw. zum Absprung in eine Transaktion). Im zugehörigen GUI-Status wurde daher dem F2-Tastendruck der dazu übliche Funktionscode 'PICK' zugeordnet.
- Zur Bestimmung auf welches Dynpro-Textfeld geklickt wurde, wird die Anweisung GET CURSOR FIELD verwendet.

- Ohne die Zuordnung eines Funktionscodes zur F2-Taste über den GUI-Status wird beim Drücken der F2-Taste im ALV-Grid normalerweise automatisch das Ereignis DOUBLE_CLICK ausgelöst (natürlich nur sofern registriert, etc.). Im Anschluss erfolgt der Aufruf der PAI-Logik des Dynpros.
- Nach der Zuordnung des Funktionscodes 'PICK' wird das Ereignis DOUBLE_CLICK beim Drücken der F2-Taste im ALV-Grid nicht mehr ausgelöst. Stattdessen wird direkt die PAI-Logik mit SY-UCOMM = 'PICK' prozessiert.

***

Danke vorab für Ideen und Anregungen.

Mfg
Gokar
ForumUser
 
Beiträge: 8
Registriert: 26.10.2012, 15:13
Dank erhalten: 0 mal
Ich bin: Personalberater/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Ausgewähltes / aktives CUSTOM CONTROL bei F2-Tastendruck

Beitragvon a-dead-trousers » 08.03.2018, 07:27

Mit CL_GUI_CONTROL=>GET_FOCUS ist es möglich, analog zu GET CURSOR, das aktuell ausgewählte GUI-Control abzufragen.
Ich weiß aber nicht ob dir das bei bei deinem F2 vs. Doppelklick Problem weiterhilft.

Ich hatte ein ähnliches Problem mit der F4 Taste. Da musste ich dann eine Wrapper-OCX um das Original SAP Control schreiben, damit dort die F4-Taste abgefangen wurde und nicht an den GUI weitergeleitet wird.
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.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Gokar
a-dead-trousers
Top Expert
 
Beiträge: 2996
Registriert: 07.02.2011, 13:40
Dank erhalten: 743 mal
Ich bin: Entwickler/in

Re: Ausgewähltes / aktives CUSTOM CONTROL bei F2-Tastendruck

Beitragvon Gokar » 08.03.2018, 14:00

Danke für den Tipp!

Ich habe jetzt zum Zeitpunkt PAI wenn das User-command 'PICK' übergeben wurde und durch die Anweisung GET CURSOR kein Feld ermittelt werden konnte, mittels der Methode cl_gui_control=>get_focus( ) ein Objekt vom Typ cl_gui_control zurückgeliefert bekommen und dessen Attribut cl_gui_control->parent einem Objekt vom Typ cl_gui_custom_container zugewiesen. Daraufhin konnte ich über die Methode cl_gui_custom_container->get_name( ) den Namen des Custom-Containers ermitteln.

Zur Info noch rudimentäre Test-Coding...

Code: Alles auswählen
FORM test_get_custom_container_name.
  DATA: ir_gui_control TYPE REF TO cl_gui_control.
  DATA: ir_gui_custom_container TYPE REF TO cl_gui_custom_container.
  DATA: iv_name TYPE string.
  DATA: iv_string TYPE string.
**********************************************************************
  CALL METHOD cl_gui_control=>get_focus
    IMPORTING
      control           = ir_gui_control
    EXCEPTIONS
      cntl_error        = 1
      cntl_system_error = 2
      OTHERS            = 3.
  IF sy-subrc <> 0.
    RETURN.
  ENDIF.
*--------------------------------------------------------------------*
  IF ir_gui_control->parent IS NOT INITIAL.
    ir_gui_custom_container ?= ir_gui_control->parent.
  ENDIF.
  IF ir_gui_custom_container IS INITIAL.
    RETURN.
  ENDIF.
*--------------------------------------------------------------------*
  iv_name = ir_gui_custom_container->get_name( ).
  IF iv_name IS INITIAL.
    RETURN.
  ENDIF.
*--------------------------------------------------------------------*
  CONCATENATE 'Name des aktiven Custom-Containers:' iv_name INTO iv_string SEPARATED BY space.
  MESSAGE iv_string TYPE 'S'.
ENDFORM.
Gokar
ForumUser
 
Beiträge: 8
Registriert: 26.10.2012, 15:13
Dank erhalten: 0 mal
Ich bin: Personalberater/in


Zurück zu Dialogprogrammierung

  Aktuelle Beiträge   
gelöst Nachricht nach Beendigung der Verbuchung
vor 4 Stunden von ewx 2 Antw.
BCS sendet Mails immer als express?
vor 4 Stunden von Legxis 2 Antw.
Zuordnung in Grid (Screen)
vor 9 Stunden von HH_ABAP 0 Antw.
FBL3N ---> FB60
vor 9 Stunden von HH_ABAP 2 Antw.
Klasse zum lesen der Adressdaten
vor 9 Stunden von AdrianSchm 2 Antw.

  Ähnliche Beiträge beta
Custom Control ausblenden
19.11.2007, 08:19 von ST22 1 Antw.
Problem mit Checkbox in Custom Control
13.03.2006, 14:48 von Andreas G 1 Antw.
gelöst Image auf Custom Control des Dynpros anbringen
14.10.2015, 06:11 von pitty 2 Antw.
gelöst SALV Tabelle in Dynpro Custom Control Bereich
15.12.2016, 13:14 von Mustafapmk0 3 Antw.
Bei Subscreen oder Custom-Control zur Laufzeit Göße ändern
26.08.2004, 13:17 von black_adept 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder