Suchhilfe dynamisch anbinden

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

Suchhilfe dynamisch anbinden

Beitrag von Kowalski (ForumUser / 6 / 0 / 0 ) »
Hallo,
auf einem Selektionsbildschirm habe ich 2 Parameterfelder p_rolle und p_partner.
p_rolle ist eine Listbox mit 2 Werten, Kunden und Lieferanten.
Abhängig von der Auswahl soll an p_partner eine entsprechende Suchhilfe gebunden werden.
Die beiden Suchhilfen sind im Dictonary angelegt.

Wie realisiert man sowas?

Danke und Gruß
André

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


Re: Suchhilfe dynamisch anbinden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich wuerde drei Paramter anlegen:

P_Rolle, P_Kunde mit Suchehilfe fuer Kunde, P_Liefer mit Suchhilfe fuer Lieferant.

Je nach dem was in P_Rolle ausgewaehlt wurde wuerde ich P_Kunde einblenden und P_Lieferant ausblenden, oder umgekehrt.

Re: Suchhilfe dynamisch anbinden

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Das geht mit einer Handvoll Codingzeilen bei AT-SELECTION-SCREEN ON VALUE-REQUEST FOR .....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Suchhilfe dynamisch anbinden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ralf.wenzel hat geschrieben:Das geht mit einer Handvoll Codingzeilen bei AT-SELECTION-SCREEN ON VALUE-REQUEST FOR .....
Hast Du mal ein Beispiel?

Re: Suchhilfe dynamisch anbinden

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
IF P_ROLLE = wasauchimmerkundeist
Suchhilfe für Kunde anzeigen
ELSE.
Suchhilfe für Lieferant anzeigen
ENDIF.

Für die Anzeige einer Suchhilfe gibt es einen FB der SAP. Da ich schon Feierabend habe....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Suchhilfe dynamisch anbinden

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ADT delivers:

F4IF_GET_SHLP_DESCR zum Auslesen einer bestehenden Suchhilfe.
F4IF_START_VALUE_REQUEST zum Anzeigen.

Man kann auch zur Laufzeit selbst eine Suchhilfe erstellen bzw. eine vorhandene an die eigenen Bedürfnisse anpassen und dann Aufrufen lassen.
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: Suchhilfe dynamisch anbinden

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

ich gehe jetzt mal davon aus, das die Aufgabenstellung soweit klar ist.

Egal welchen genannten Lösungsansatz ich versuche zu benutzen, am Ende scheitere ich immer an gewissen Umständen.

Der Lösungsansatz von Unit605 - wie bekomme ich es denn hin, das beim welchseln der Rolle, der Selektionsbildschirm aktuallisiert wird.
Ich habe kein AT SELECTION SCREEN Ereignis gefunden, welches das bewerkstelligt.

Bei dem Lösungsansatz mit dem VALUE-REQUEST FOR zerhaut es mir die Einträge in der Listbox :(

Gruß
André

Re: Suchhilfe dynamisch anbinden

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo André,

1. Lösungsansatz: P_ROLLE mit Listbox
Dann im Ereignis AT-SELECTION-SCREEN ON VALUE-REQUEST FOR P_PARTNER:
- mit Funktionsbaustein DYNP_VALUES_READ den ausgewählten Wert von P_ROLLE auslesen
- entsprechende Suchhilfe für P_Partner selbst programmieren oder mit F4IF_INT_TABLE_VALUE_REQUEST' anbieten

2. Lösungsansatz: P_ROLLE durch eine Radio-Button-Group mit zwei Feldern für Lieferant und Kunde ersetzen
- jedes Feld mit einem Dummy User-Command besetzen, damit immer PAI durchlaufen wird
- entsprechende Suchhilfe für P_Partner gemäß den zwei Feldern realisieren

Gruß dele

Re: Suchhilfe dynamisch anbinden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Kowalski hat geschrieben: Der Lösungsansatz von Unit605 - wie bekomme ich es denn hin, das beim welchseln der Rolle, der Selektionsbildschirm aktuallisiert wird.
Ich habe kein AT SELECTION SCREEN Ereignis gefunden, welches das bewerkstelligt.
André
AT SELECTION-SCREEN OUTPUT.

Program wird aufgerufen mit Vorbelegung Kunde, Parameter Kunde ist sichtbar, Parameter Lieferrant ist nicht sichtbar.
Wird auf Lieferrant in der Listbox geandert, setze Parameter Kunde auf nicht sichtbar und Parameter Lieferrant auf sichtbar.

Zeig mal Dein bisheriges Coding vom Screen mit der Listbox.

Re: Suchhilfe dynamisch anbinden

Beitrag von JHM (Top Expert / 1188 / 1 / 195 ) »
Kowalski hat geschrieben:Bei dem Lösungsansatz mit dem VALUE-REQUEST FOR zerhaut es mir die Einträge in der Listbox :(
in etwa so:

Code: Alles auswählen.

REPORT  ztest_sel.
* Für Listbox
TYPE-POOLS vrm.
DATA: gw_value TYPE vrm_value,
      gt_values TYPE vrm_values.

TYPES: BEGIN OF t_key,
          fieldname TYPE fieldname,
          position  TYPE tabfdpos,
        END   OF t_key.

**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_list TYPE c AS LISTBOX
                          VISIBLE LENGTH 20
                          DEFAULT 'K'
                          USER-COMMAND push. "damit die Auswahl immer bei PHR zur verfügung steht
PARAMETERS: p_dktor TYPE kunnr.
SELECTION-SCREEN END OF BLOCK b1.
**********************************************************************

INITIALIZATION.
* Listbox mit Tabellen füllen
  gw_value-key  = 'K'.
  gw_value-text = 'Kunde'.
  APPEND gw_value TO gt_values.

  gw_value-key  = 'L'.
  gw_value-text = 'Lieferant'.
  APPEND gw_value TO gt_values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_LIST'
      values          = gt_values
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dktor.
  DATA ls_shlp TYPE shlp_descr.
  DATA lt_return_values TYPE TABLE OF ddshretval.
  DATA ls_interface TYPE ddshiface.
  FIELD-SYMBOLS <ls_return_values> TYPE ddshretval.
* Je nach eingebenen Wert
  CASE p_list.
    WHEN 'K'.
*     Die Beschreibung der Suchhilfe Kunde besorgen
      CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
        EXPORTING
          shlpname = 'C_KUNNR'
        IMPORTING
          shlp     = ls_shlp.

*     Rückgabefeld markieren.
      ls_interface-valtabname = 'X'.
      ls_interface-valfield   = 'X'.
      MODIFY ls_shlp-interface FROM ls_interface
                            TRANSPORTING valtabname valfield
                            WHERE shlpfield = 'KUNNR'.

    WHEN 'L'.
*     Die Beschreibung der Suchhilfe Lieferant besorgen
      CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
        EXPORTING
          shlpname = 'KRED_C'
        IMPORTING
          shlp     = ls_shlp.

*     Rückgabefeld markieren.
      ls_interface-valtabname = 'X'.
      ls_interface-valfield   = 'X'.
      MODIFY ls_shlp-interface FROM ls_interface
                            TRANSPORTING valtabname valfield
                            WHERE shlpfield = 'LIFNR'.
    WHEN OTHERS.
  ENDCASE.

* Den F4-Ablauf starten
  CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
    EXPORTING
      shlp          = ls_shlp
    TABLES
      return_values = lt_return_values.

  READ TABLE lt_return_values ASSIGNING <ls_return_values> INDEX 1.

  p_dktor = <ls_return_values>-fieldval.
Gruß Hendrik

Re: Suchhilfe dynamisch anbinden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich dachte mehr an so eine Loesung (den Teil fuer die Listbox habe ich mir von JHM ausgeliehen):

Code: Alles auswählen.

REPORT  ztest_sel.
*    * Für Listbox
TYPE-POOLS vrm.
DATA: gw_value TYPE vrm_value,
      gt_values TYPE vrm_values.

TYPES: BEGIN OF t_key,
          fieldname TYPE fieldname,
          position  TYPE tabfdpos,
        END   OF t_key.

*    **********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_list TYPE c AS LISTBOX
                          VISIBLE LENGTH 20
                          DEFAULT 'D'
                          USER-COMMAND push. "damit die Auswahl immer bei PHR zur verfügung steht
PARAMETERS: p_debi TYPE kna1-kunnr MATCHCODE OBJECT debi MODIF ID D.
PARAMETERS: p_kred TYPE lfa1-lifnr MATCHCODE OBJECT kred_c MODIF ID K.
SELECTION-SCREEN END OF BLOCK b1.
*    **********************************************************************

INITIALIZATION.
*    * Listbox mit Tabellen füllen
  gw_value-key  = 'D'.
  gw_value-text = 'Debitor'.
  APPEND gw_value TO gt_values.

  gw_value-key  = 'K'.
  gw_value-text = 'Kreditor'.
  APPEND gw_value TO gt_values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_LIST'
      values          = gt_values
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

AT SELECTION-SCREEN OUTPUT.
  loop at screen.
    if screen-group1 = p_list.
      screen-invisible = 0.
    else.
      if screen-group1 ne p_list and screen-group1 is not initial.
        screen-invisible = 1.
      endif.
    endif.
    modify screen.
  endloop.

Re: Suchhilfe dynamisch anbinden

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

vielen Dank für eure Hilfe.
Der Code von JHM hat mir weitergeholfen - genau so wollte ich es haben. Danke.

Mit der Lösung von Unit605 hätte ich auch leben können. Natürlich ist diese nicht so elegant
wie die von JHM, aber den Zwecke hätte sie auch erfüllt. Was mich dabei jedoch noch stört,
ist das die Laufzeitkomprimierung beim ausblenden nicht greift. Die Lücke die entsteht ist
unschön - bekämme man das auch noch irgendwie in den Griff?

Gruß
André

Re: Suchhilfe dynamisch anbinden

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo André,

in Unit605s Coding noch folgende Zeile einfügen, dann klappt's auch mit der Laufzeitkomprimierung:

Code: Alles auswählen.

      IF screen-group1 NE p_list AND screen-group1 IS NOT INITIAL.
        screen-invisible = 1.
        screen-input = 0." Das hier fehlte noch
      ENDIF.

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Suchhilfe dynamisch anbinden

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Und gleich wieder etwas gelernt. Ich hatte mich eben schon gewundert, warum das Fehlen von "Screen-input = 0" nicht dazu geführt hatte, dass das Feld als Passwortfeld angezeigt wird.
Das scheint damit zusammen zu hängen, dass ein Matchcode-object mitgegeben wurde.

Code: Alles auswählen.

REPORT.

PARAMETERS: p_kred  TYPE lfa1-lifnr MATCHCODE OBJECT kred_c.
PARAMETERS: p_kred2 TYPE lfa1-lifnr.


AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    screen-invisible = 1.
    MODIFY SCREEN.
  ENDLOOP.
Kann mich nicht erinnern in irgendeiner Doku gesehen zu haben, dass "MATCHCODE OBJECT nnn" dazu führt, dass ein Passwortfeld ( Screen-input = 1, Screen-invisible = 1 ) nicht angezeigt wird. *sigh*
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Suchhilfe dynamisch anbinden

Beitrag von shapoc (ForumUser / 52 / 3 / 0 ) »
Hallo,

sorry dass ich das Topic nochmal hochhole, aber ich habe exakt das besagte Problem und komme mit der vorgeschlagenen Lösung nicht ganz zum Ziel.

Ich möchte die von JHM vorgeschlagene Lösung umsetzen, aber beim Event 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR werks.' kann ich keine Unterscheidung machen, ob in einem anderen Parameter (matnr) etwas eingetragen wurde.

Hier mal mein bisheriger Quellcode:

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF BLOCK stl WITH FRAME TITLE text-001.
PARAMETERS: matnr TYPE mara-matnr OBLIGATORY.
PARAMETERS: werks TYPE marc-werks OBLIGATORY.
PARAMETERS: stlan TYPE mast-stlan.
PARAMETERS: stlal TYPE mast-stlal.
SELECTION-SCREEN END OF BLOCK stl.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR werks.

  DATA ls_shlp TYPE shlp_descr.
  DATA lt_return_values TYPE TABLE OF ddshretval.
  DATA ls_interface TYPE ddshiface.
  FIELD-SYMBOLS <ls_return_values> TYPE ddshretval.

  CLEAR ls_shlp.

  CASE matnr.

    WHEN ''.
      CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
        EXPORTING
          shlpname = 'H_WERKS_MATNR'"'H_T001W_C'
          shlptype = 'SH'
        IMPORTING
          shlp     = ls_shlp.


    WHEN OTHERS.
                                                            "S_MAT1
      CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
        EXPORTING
          shlpname = 'H_WERKS_MATNR'
          shlptype = 'SH'
        IMPORTING
          shlp     = ls_shlp.

  ENDCASE.

* Rückgabefeld markieren.
  ls_interface-valtabname = 'X'.
  ls_interface-valfield   = 'X'.
  MODIFY ls_shlp-interface FROM ls_interface
                        TRANSPORTING valtabname valfield
                        WHERE shlpfield = 'WERKS'.

  CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
    EXPORTING
      shlp          = ls_shlp
    TABLES
      return_values = lt_return_values.

  READ TABLE lt_return_values ASSIGNING <ls_return_values> INDEX 1.
Es wird immer die erste Suchhilfe angezeigt, unabhängig davon was im Parameterfeld 'matnr' eingegeben wurde oder ob es leer ist.
Ich habe es auch mit einer IF-Abfrage probiert, ohne Erfolg :-(

Kann mir jemand einen Tipp geben, was ich übersehen habe?

Vergleichbare Themen

9
Antw.
15840
Views
Suchhilfe an Select-Option anbinden
von vman » 03.09.2008 13:29 • Verfasst in ABAP® für Anfänger
0
Antw.
1454
Views
Expressdienst DPD anbinden
von sylvile » 31.07.2008 15:29 • Verfasst in Sales and Distribution
3
Antw.
1091
Views
Tool an SAP anbinden, API etc.
von jensschladitz » 06.02.2019 20:45 • Verfasst in ABAP® Core
2
Antw.
6172
Views
CRM 4.0 System anbinden
von lemmy123 » 01.10.2005 21:33 • Verfasst in Enterprise Portal
15
Antw.
11280
Views
Auftragspapiere an GOS anbinden
von schusterd » 30.01.2015 15:09 • Verfasst in Material Management & Produktionsplanung

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140