Aufruf Suchhilfe mit Return

Benutzeroberflächen in SAP®-Systemen.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Aufruf Suchhilfe mit Return

Beitrag von lisieckic (ForumUser / 6 / 1 / 0 ) »
Hallo zusammen,

ich möchte im Eingabefeld für Materialnummern transaktionsunabhängig (MM03, MD04, CS02, ...) zwei Zusatzfunktionen einbinden

1) Eingabe einer alternativen Nummer aus einem Z-Feld der MARA und damit die Materialnummer ermitteln => gelöst per User-Exit (MGA00003 => EXIT_SAPLOMCV_001)

2) Eingabe dieser alternativen Nummer mit Wildcard "*" und Aufruf einer (eigenen) Suchhilfe für Material mit Vorbelegung des Suchfelds mit dem Wert aus dem Eingabefeld (MATNR), wobei der Aufruf der Suchhilfe zu dem Standardfeld (MATNR) in allen Transaktionen funktionieren soll, unabhängig vom Dynpro-Feldnamen und ohne F4 drücken zu müssen.

Schönes Wochenende
Christian Lisiecki

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


Re: Aufruf Suchhilfe mit Return

Beitrag von lisieckic (ForumUser / 6 / 1 / 0 ) »
Hallo zusammen,

ich habe jetzt eine halbwegs akzeptable Lösung gefunden, vielleicht kennt jemand noch einen Trick oder anderen Weg das zu verbessern:

1) der Exit speichert den Wert im Memory
2) Statt des eingegebenen Werts wird =9 (9 ist die Kurzwahl der gewünschten Suchhilfe in der Sammelsuchhilfe) übergeben.
3) jetzt muss man leider nochmals RETURN drücken; damit startet dann die Suchhilfe
4) die Suchhilfe hat wiederum einen Exit und prüft, ob ein Wert im Memory steht. Falls ja, wird dieser ausgelesen und in der Suchhilfe eingetragen. Das Memory wird dann gelöscht.

Verbesserungsmöglichkeiten
- Aufruf der Suchhilfe ohne zusätzlich RETURN zu drücken
- Aufruf der Trefferliste ohne RETURN zu drücken

User-Exit bei Materialnummerneingabe

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&  Include           ZXMG0U08
*&---------------------------------------------------------------------*

DATA:
  lv_identnr_last     TYPE zz_identnr,
  lv_identnr_next     TYPE zz_identnr,
  lv_matnr_last       TYPE matnr,
  lv_matnr_matchcode  TYPE matnr,
  lv_postfix          TYPE matnr.

* Materialnummer separat merken.
IF matnr EQ '.'.
  GET PARAMETER ID 'ZGROB_MATNR_LAST' FIELD matnr.
  SET PARAMETER ID 'ZGROB_MATNR_SAVE' FIELD matnr.
ENDIF.

IF matnr CN '0123456789 '.  " mit Leerzeichen!
  SELECT SINGLE matnr FROM mara
    INTO matnr
    WHERE matnr = matnr.
  CHECK sy-subrc NE 0.

* --- Suchhilfe aufrufen -----------------------------------------------
  IF matnr CA '*' OR matnr CA '+'.
    MOVE matnr TO lv_matnr_matchcode.
    REPLACE ALL OCCURRENCES OF '*' IN lv_matnr_matchcode WITH '%'.
    REPLACE ALL OCCURRENCES OF '+' IN lv_matnr_matchcode WITH '_'.
    SELECT COUNT(*) FROM mara
      WHERE zz_identnr LIKE lv_matnr_matchcode.
    CASE sy-dbcnt.
      WHEN 0.       " keine weitere Aktion notwendig

      WHEN 1.       " bei genau 1 Treffer Materialnummer übernehmen
        SELECT SINGLE matnr FROM mara
          INTO matnr
          WHERE zz_identnr LIKE lv_matnr_matchcode.

      WHEN OTHERS.  " Suchhilfe aufrufen
*       CONCATENATE '=7...' matnr INTO matnr.
        EXPORT matnr FROM matnr TO MEMORY ID 'ZGROB_MATNR_SHLP'.
        MOVE '=9' TO matnr.
    ENDCASE.

* --- Postfix mit gemerkter GROIB Identnummer verwenden ----------------
  ELSEIF matnr CS '#' OR matnr CS '.'.
    MOVE matnr TO lv_postfix.
    SHIFT lv_postfix BY sy-fdpos PLACES LEFT.
    SHIFT lv_postfix BY 1        PLACES LEFT.

    IF matnr CS '#'.
      GET PARAMETER ID 'ZGROB_MATNR_LAST' FIELD lv_matnr_last.
    ELSE.
      GET PARAMETER ID 'ZGROB_MATNR_SAVE' FIELD lv_matnr_last.
    ENDIF.

*   nicht CONVERSION_EXIT_MATN1_INPUT verwenden => Rekursion!
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input        = lv_matnr_last
      IMPORTING
        output       = lv_matnr_last
      EXCEPTIONS
        length_error = 1
        OTHERS       = 2.
    IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    SELECT SINGLE zz_identnr FROM mara
      INTO lv_identnr_last
      WHERE matnr = lv_matnr_last.
    CONCATENATE lv_identnr_last lv_postfix INTO lv_identnr_next.
    SELECT SINGLE matnr FROM mara
      INTO matnr
      WHERE zz_identnr = lv_identnr_next.

* --- GROB Identnummer auswerten ---------------------------------------
  ELSE.
    SELECT SINGLE matnr FROM mara
      INTO matnr
      WHERE zz_identnr = matnr.
    SET PARAMETER ID 'ZGROB_MATNR_LAST' FIELD matnr.
  ENDIF.

* --- nur Materialnummer merken ----------------------------------------
ELSE.
  SET PARAMETER ID 'ZGROB_MATNR_LAST' FIELD matnr.
ENDIF.
Suchhilfe-Exit

Code: Alles auswählen.

  IF CALLCONTROL-STEP = 'PRESEL'.
*   PERFORM PRESEL ..........

data: lv_matnr       type matnr,
      lv_zzidentnr   type zz_identnr,
      lv_value_exist type c,
      lt_selopt      type DDSHSELOPS WITH HEADER LINE.

      IMPORT matnr to lv_matnr from MEMORY ID 'ZGROB_MATNR_SHLP'.
      FREE MEMORY ID 'ZGROB_MATNR_SHLP'.

*     GET PARAMETER ID 'ZGROB_MATNR_SHLP' FIELD lv_zzidentnr.
      if lv_matnr is NOT INITIAL.
        move lv_matnr to lv_zzidentnr.
        APPEND LINES OF shlp-selopt to lt_selopt.
        LOOP AT lt_selopt
          WHERE shlpfield = 'ZZ_IDENTNR'.
          lv_value_exist = 'X'.
          EXIT.
        ENDLOOP.
        IF lv_value_exist IS INITIAL.
          CLEAR lt_selopt.
          lt_selopt-shlpname  = shlp-shlpname.
          lt_selopt-shlpfield = 'ZZ_IDENTNR'.
          lt_selopt-sign      = 'I'.
          lt_selopt-option    = 'CP'.
          lt_selopt-low = lv_zzidentnr.
          APPEND lt_selopt TO shlp-selopt.
        ENDIF.
      ENDIF.

    EXIT.
  ENDIF.

Grüße, Christian Lisiecki

Re: Aufruf Suchhilfe mit Return

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Ich habe nicht genau verstanden, was du meinst...
Du kannst aber eine Suchhilfe gleich mit "=9.alternative_materialnummer" aufrufen.
Wenn es zu der alternativen matnr genau eine MATNR gibt und in den Suchhilfe-Einstellungen eingestellt ist "Keine Trefferliste bei genau einem Ergebnis", dann wird sofort die MATNR übergeben.
"Alternative Matnr" muss dabei das erste Feld in der Suchhilfe "9" sein.

Re: Aufruf Suchhilfe mit Return

Beitrag von lisieckic (ForumUser / 6 / 1 / 0 ) »
Vorgehensweise im Detail mit der aktuelle Lösung:
1) MM03, MD04, ... aufrufen
2) im Feld Materialnummer wird nicht die Materialnummer sondern die Identnummer (alternative Materialnummer, MARA-Append) eingegeben
3) RETURN
4) Exit prüft wie angegeben
a) Eingabe = gültige Materialnummer => Verhalten wie ohne Exit :-)
b) Eingabe Identnummer ohne Matchcode => Konvertierung in Materialnummer und weiter
c) Eingabe Steuerzeichen '#' gefolgt von weiteren Zeichen (Postfix)
=> an die Identnummer der zuletzt verwendeten Materialnummer wird der Postfix angehängt, dann weiter wie 2)
=> ganz brauchbar um z.B. die Einzelteile einer Stückliste mit fortlaufenden Identnummern zu öffnen (#-1, #-2, …)
d) Eingabe von '.'
=> dauerhaftes Merken (Session) der letzten Materialnummer, danach verwendbar wie 3), d.h. Eingabe von . gefolgt von Postfix (.-1, .-2, …)
e) Eingabe Identnummer mit Matchcode ( '*' oder '+')
e1) falls genau 1 Treffer, wird die Materialnummer direkt ermittelt
e2) falls mehrere Treffer wird Suchhilfe geöffnet (Übergabe der Kurzwahl '=9' an Feld MATNR). Jetzt erscheint aber die Fehlermeldung, das '=9' keine gültige Materialnummer ist. Wenn man nochmals RETURN drückt, wird die Suchhilfe dann doch geöffnet. Problem ist wohl das der Exit NACH der Prüfung der Kurzwahl durchlaufen wird. In der geöffneten Suchhilfe wird dann das Feld vorbelegt. Das Feld könnte man nun mit '=9....NUMMER' direkt anspringen (4 Punkte = 4. Feld), aber das geht auch mit dem Exit gut. Nun muss man aber nochmals RETURN rücken um die Suche zu starten.

=> ich will beide RETURN vermeiden

Re: Aufruf Suchhilfe mit Return

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Der Sinn erschließt sich mir aber immer noch nicht...
Es wird bereits eine Materialnummer gefunden und dann wird "irgendwas" dran gehängt und es wird noch mal gesucht...?
Hast du noch mal ein Beispiel?

Re: Aufruf Suchhilfe mit Return

Beitrag von lisieckic (ForumUser / 6 / 1 / 0 ) »
Das mit dem Postfix ist für die Frage eigentlich nicht relevant. Das dient dem Anwender nur zur schnelleren Eingabe weiterer Materialnummern. Die Frage bezieht sich nur auf den Fall e2) d.h. es wird eine alternative Materialnummer mit Matchcode in das Feld MATNR eingegeben. Nun soll der Exit das Suchergbenis anzeigen ohne das der Anwender zweimal zusätzlich mit RETURN bestätigen muss (1. mal um die "Fehlermeldung" bei =9 zu bestätigen und das zweite mal um die Suchhilfe zu starten.

Wobei ich nichts gegen eine ganz andere Lösung habe.

Re: Aufruf Suchhilfe mit Return

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Schon mal den FuBa 'SAPGUI_SET_FUNCTIONCODE' versucht?

Baustein dort einsetzen wo Du das 'ENTER' von dem User erwartest.

Für 'ENTER' einfach ohne Parameter aufrufen, ansonsten eben die entsprechenden Functionscode übergeben.

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
lisieckic


Re: Aufruf Suchhilfe mit Return

Beitrag von lisieckic (ForumUser / 6 / 1 / 0 ) »
Habe nun den Funktionsbaustein eingebaut und damit das erste Return erfolgreich getilgt - die Fehlermeldung erscheint zwar noch kurz, dann öffnet sich aber sofort die Suchhilfe wie gewünscht. Danke für den Tipp.

Hat noch jemand einen Tipp, wie ich die Suchhilfe sofort starten lassen kann, d.h. bereits das Suchergebnis angezeigt bekomme ohne noch RETURN zu drücken. Ein zweiter Aufruf des Funktionsbausteins hat da leider nicht geholfen.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2118
Views
Problem mit Suchhilfe -> Return Taste simulieren
von jondahl11 » 24.04.2007 09:46 • Verfasst in ABAP® für Anfänger
1
Antw.
1967
Views
Return cl_object_map
von Papst BenR » 11.09.2014 16:54 • Verfasst in ABAP Objects®
4
Antw.
4199
Views
Return - Taste simulieren
von cschmoel » 23.08.2012 16:15 • Verfasst in ABAP® für Anfänger
2
Antw.
3938
Views
SAP und XML return - Arbeiten mit Google API
von JasonLief » 10.04.2012 13:46 • Verfasst in Web-Dynpro, BSP + BHTML
3
Antw.
2123
Views
SUBMIT AND RETURN Auswertung Selektionsbild
von almialmi » 02.06.2006 19:12 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 50 Minuten von rob_abc 4 / 26
Dialog-Container mit Toolbar/Status
vor 20 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 50 Minuten von rob_abc 4 / 26
Dialog-Container mit Toolbar/Status
vor 20 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