Benutzerauswahl auf Eintrag in DB prüfen - Pop-Up wenn ja

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Benutzerauswahl auf Eintrag in DB prüfen - Pop-Up wenn ja

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
Hi Commu,

ich bräuchte ein wenig Hilfe bei der Formulierung einer Syntax die nachfolgendes können soll.

Ich habe eine WebDynpro. In einer der Views kann der Benutzer 3 verschiedene Daten aus 3 verschiedenen Dropdowns selektieren und speichern (funktioniert auch alles). Nun möchte ich aber ungültige Benutzereingaben mit einem Hinweisfenster abfangen, das dem Benutzer entweder die Möglichkeit bietet einen kurzen Text in das Fenster zu schreiben(Begründet die Eingabe) und die Daten dann doch noch speichern kann, und das klassische abbrechen, sodass die Eingabe korrigiert werden kann. Abgefangen werden soll der Benutzer, wenn die in den 3 DD's ausgewählten Daten, bereits in meiner Datenbank existieren.

Ein kleiner Pseudocode um zu zeigen was ich meine:
IF Dropdown 1 Auswahl = in DB
und Dropdown 2 Auswahl = in DB
und Dropdown 3 Auswahl = in DB // also einen DB Eintrag der dieselben Daten wie die Auswahl hat
DANN pop-up fenster
ANSONSTEN normal weiter machen

Code: Alles auswählen.

SELECT SINGLE *
    FROM zdb_bcm
        WHERE fachbereich = lv_fachbereich AND "Wenn Fachbereich ausgewählt wurde, der schon in DB existiert
          szenario = lv_szenario AND "Wenn Szenario ausgewählt wurde, der schon in DB existiert
          testart = lv_testart. "Wenn Testart ausgewählt wurde, der schon in DB existiert

IF sy-subrc = 0.
Pop-up Fenster
ELSE.
//weiter wie gehabt
ENDIF.
Bin ich auf dem richtigen Weg?

Ich nehme an das Pop-Up-Fenster muss ich zunächst erzeugen und dann im Code deklarieren oder wie gehe ich hier vor ?

Vielen Dank schonmal im voraus!

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


Re: Benutzerauswahl auf Eintrag in DB prüfen - Pop-Up wenn j

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

ja die Abfrage ist so schon korrekt, wage aber zu beweifeln das du ohne "INTO" das aktiviert bekommst. ;)

Wenn dann das Popup geöffnet werden soll, musst du vor ab ein eigenes View dafür anlegen. Diesen View kannst du dann in einem neuen WINDOW auf kleiner Größe ändern.
Im folgenden Coding siehst du wie der Aufruf eines weiteren Window in der Web Dynpro erzeugt wird:

Code: Alles auswählen.

  DATA lo_window_manager TYPE REF TO if_wd_window_manager.
  DATA lo_api_component  TYPE REF TO if_wd_component.
  DATA lo_window         TYPE REF TO if_wd_window.

  lo_api_component  = wd_comp_controller->wd_get_api( ).
  lo_window_manager = lo_api_component->get_window_manager( ).
  lo_window         = lo_window_manager->create_window(
                     window_name            = 'W_NEW_WINDOW'
                     title                  = 'Irgendwas'
                    close_in_any_case      = abap_false
                     message_display_mode   = if_wd_window=>co_msg_display_mode_selected
*                         close_button           = abap_true
                     button_kind            = if_wd_window=>co_buttons_okcancel
                     message_type           = if_wd_window=>co_msg_type_none
*                         default_button         = if_wd_window=>co_button_ok
                     ).

    wd_comp_controller->go_window = lo_window.
    lo_window->open( ).
Das Window muss natürlich mit der View verbunden sein. :)
Gruß,
der Matze

Re: Benutzerauswahl auf Eintrag in DB prüfen - Pop-Up wenn j

Beitrag von vcelik (ForumUser / 22 / 7 / 0 ) »
Ich habe zwar verstanden wie ich jetzt ein Popup aufrufen kann. Was ich noch nicht ganz verstehe ist, wie ich dieses Fenster anpassen kann.

Ich habe ja beschrieben, dass ich ein Textfeld brauche ( das ausgefüllt werden muss, bevor die Einst. übernommen werden können). Wie realisiere ich das?

Was macht eigentlich :

Code: Alles auswählen.

wd_comp_controller->go_window = lo_window.
?

Ich habs mal mit dem Code probiert, allerdings passiert da nichts :D

Code: Alles auswählen.

DATA lo_window_manager TYPE REF TO if_wd_window_manager.
  DATA lo_api_component  TYPE REF TO if_wd_component.
  DATA lo_window         TYPE REF TO if_wd_window.

  lo_api_component  = wd_comp_controller->wd_get_api( ).
  lo_window_manager = lo_api_component->get_window_manager( ).

  CALL METHOD lo_window_manager->create_window
                     EXPORTING
                     window_name            = 'Z_BCM_WAPP_POPUP'
                     title                  = 'Hinweis!'
                     close_in_any_case      = abap_false
                     message_display_mode   = if_wd_window=>co_msg_display_mode_selected
*                         close_button           = abap_true
                     button_kind            = if_wd_window=>co_buttons_okcancel
                     message_type           = if_wd_window=>co_msg_type_none
                     RECEIVING
                     window = lo_window.
*                         default_button         = if_wd_window=>co_button_ok

  SELECT SINGLE *
    FROM zdb_bcm
    INTO ls_zdb_bcm_dmy
    WHERE fachbereich = lv_fachbereich AND "Wenn Fachbereich ausgewählt wurde, der schon in DB existiert
        szenario = lv_szenario AND "Wenn Szenario ausgewählt wurde, der schon in DB existiert
        testart = lv_testart. "Wenn Testart ausgewählt wurde, der schon in DB existiert
    ENDSELECT.

    IF sy-subrc = 0.
      lo_window->open( ).
    ENDIF.
WAs mache ich falsch?

UPDATE: Habe gemekrt, dass das ENDSELECT da nicht hingehört, jetzt passts fürs erste, also sobald ein eintrag nicht exisitiert speichert er wie gewohnt ab. Wenn doch dann öffnet er das Popupfenster.

Jetzt nurnoch die Frage wie oben, wie bekomme ich das Textfeld (Pflicht mind. 20 CHARS) hin und kann trotzdem speichern auch wenn der eintrag existiert?

Re: Benutzerauswahl auf Eintrag in DB prüfen - Pop-Up wenn j

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

Web Dynpro ist ne Weile her. ich meine aber das

Code: Alles auswählen.

wd_comp_controller->go_window = lo_window.
dafür sorgt, dass das Popup das aktuelle Fenster ist auf dem der Fokus der WebDynpro liegt.

Hast du denn eine View für das Window angelegt und diese miteinander verknüpft? In dem View kannst du dann ja alles gestalten wie du möchtest mit einem Textfeld. Und für deine Speichern oder Abbrechen Thematik kannst du wunderbar die Inbound-Outbound-Plugs nutzen. Wenn speichern betätigt wird, dann wird ein Outbound-Plug gefeuert, der im Inbound-Plug der Ausgangsview das speichern inklusive des Zusatztextes antriggert. Wenn abbrechen geklickt wird, dann schießt du einen anderen Outbound-Plug auf einen Inbound-Plug der für das Abbrechen sorgt.
Gruß,
der Matze

Seite 1 von 1

Vergleichbare Themen

5
Antw.
23555
Views
Prüfen ob Eintrag in DB Tabelle schon vorhanden
von clinke » 10.10.2006 08:56 • Verfasst in ABAP® für Anfänger
3
Antw.
616
Views
Eintrag an Datenbanktabelle anfügen
von L0w-RiDer » 06.08.2019 16:33 • Verfasst in ABAP® für Anfänger
2
Antw.
1710
Views
Neuer Eintrag im IT 2o1o
von mamba » 27.08.2007 16:57 • Verfasst in Human Resources
4
Antw.
7891
Views
Neues Eintrag im SPRO
von natallin » 24.04.2008 13:32 • Verfasst in SAP - Allgemeines
6
Antw.
10597
Views
Suchhilfe mit Eintrag in mehreren Feldern
von mawi » 21.05.2007 13:18 • Verfasst in Dialogprogrammierung

Über diesen Beitrag


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

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.