Falsches Resultat nach Select

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

Falsches Resultat nach Select

Beitrag von Bugfix13 (ForumUser / 97 / 17 / 5 ) »
Hallo Zusammen

Ich habe folgende Ausgangslage. Ich möchte von einer Tabelle alle Kontakte auslesen, welche dem folgenden Statement entsprechen:
*@examplefirma*. Also alle Kontakte mit der Email-Adresse der Firma "Examplefirma".

Dies funktioniert auch einwandfrei mit dem folgenden Code:

Code: Alles auswählen.

SELECT persnumber addrnumber smtp_addr
      FROM adr6
      INTO (wa_contact-prsnr, wa_contact-adrnr, wa_contact-smtp_addr)
      WHERE flgdefault = 'X'
        AND smtp_srch IN so_mail.
      APPEND wa_contact TO ta_contacts.
    ENDSELECT.
so_mail sieht folgendermassen aus:
Zeile SIGN LOW HIGH
1 I *@examplefirma*

soweit sogut. Nun kommt mein Problem. Möchte ich nun das gleiche abfragen aber mit dem Statement: *@examplefirma.de
funktioniert alles nicht mehr.

so_mail sieht dann so aus:
Zeile SIGN LOW HIGH
1 I *@examplefirma.de

Warum geht das nicht? Bzw. warum bekomme ich ein unterschiedliches Resultat im Vergleich zum ersten Statement??
Danke für die Hilfe.

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


Re: Falsches Resultat nach Select

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Bugfix13 hat geschrieben: so_mail sieht folgendermassen aus:
Zeile SIGN LOW HIGH
1 I *@examplefirma*
Ich gehe davon aus, das SO_MAIL eine Select-Option ist und somit auch eine RANGE-Tabelle.

Ich vermisse in Deiner SO_MAIL das Feld OPTIONS, da ich nur SIGN, LOW und HIGH sehe.

Re: Falsches Resultat nach Select

Beitrag von Bugfix13 (ForumUser / 97 / 17 / 5 ) »
Hallo

Ja genau es ist ein select-option. sorry, das feld option hab ich vergessen.

Bei beiden enthält es den wert "CP"

Re: Falsches Resultat nach Select

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich wuerde erst einmal "flgdefault = 'X'" aus der WHERE-Klausel entfernen und sehen was als Ergebnis kommt.

Bist Du sicher, dass die Firma die Endung .DE benutzt und nicht .COM????

Re: Falsches Resultat nach Select

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

na hat es denn auch Einträge die dazu passen würden - also *@examplefirma.de in der Tabelle ? Was bringt die SE16 dazu ?

Gruss
thanks Jens

Re: Falsches Resultat nach Select

Beitrag von Bugfix13 (ForumUser / 97 / 17 / 5 ) »
Also wenn ich die Tabelle mit se16 anschaue stimmt. Alles.

Es sind 240 Einträge die angezeigt werden müssten. Im ersten Fall werden diese ja auch angezeigt aber wenn im Low drinnen nur einen Stern ist funktioniert es nicht mehr. Wenn man das Selectoption der Tabelle mit se16n also auf dem standardmässigen weg füllt dann bringt es die richtigen Einträge, nur über den code-weg geht es nicht.

Das mit dem flgdefault macht für mich keinen sinn, da es ja im ersten fall mit *@examplefirma* ja auch funktioniert, also müsste es bei *@examplefirma.de ja auch funktioniere, ich ändere ja nur das low im so_mail..

Re: Falsches Resultat nach Select

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
ähh, wieso suchst du in deiner WHERE-Klausel über das Feld SMTP_SRCH und nicht über SMTP_ADDR. SMTP_SRCH ist glaube ich eher für Suchhilfen gedacht. Da dieses Feld nur 20 Zeichen lang ist, enhält es möglicherweise nicht die komplette Mail-Adresse. Wenn du direkt über Feld SMTP_ADDR suchst, sollte es gehen.

Code: Alles auswählen.

SELECT persnumber addrnumber smtp_addr
  FROM adr6
  INTO (wa_contact-prsnr, wa_contact-adrnr, wa_contact-smtp_addr)
  WHERE flgdefault = 'X'
  AND smtp_addr IN so_mail.
  APPEND wa_contact TO ta_contacts.
ENDSELECT.

Re: Falsches Resultat nach Select

Beitrag von Bugfix13 (ForumUser / 97 / 17 / 5 ) »
Mit dem parameter SMTP_ADDR geht gar nichts mehr. Die sterne können nicht übersetzt werden. auch im selektionsbild mit se16 funktioniert es über smtp_addr nicht.

Re: Falsches Resultat nach Select

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
bei mir klappt es wunderbar. Denk daran, dass die Mailadresse Groß-/Kleinschreibung unterscheidet.
Hier ein funktionierendes Beispiel:

Code: Alles auswählen.

DATA: gv_adr TYPE adr6-smtp_addr.

SELECT-OPTIONS: so_mail FOR gv_adr.

DATA: wa_contact TYPE adr6,
      it_contacts TYPE STANDARD TABLE OF adr6.

SELECT persnumber addrnumber smtp_addr
  FROM adr6
  INTO (wa_contact-persnumber, wa_contact-addrnumber, wa_contact-smtp_addr)
  WHERE flgdefault = 'X'
  AND   smtp_addr IN so_mail.
  WRITE: / wa_contact.
ENDSELECT.

Re: Falsches Resultat nach Select

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich kann gar nicht richtig erkennen, was jetzt genau in den Felder von SO_MAIL drinsteht.

Wieso soll in LOW ein "'"' stehen und in HIGH "@examplefirma.de"?

Re: Falsches Resultat nach Select

Beitrag von Bugfix13 (ForumUser / 97 / 17 / 5 ) »
Also deine Variante funktioniert bei mir nur, wenn ich das von Hand an der Tabelle mache. Da funktioniert es nun mit dem Feld smtp_addr anstatt smtp_srch. Ich bekomme die gleichen resultate egal wie ich die Sterne setze.

Im Code jedoch bekomme ich jetzt gar kein ergebnis mehr mit der variante, smtp_srch mit smtp_addr zu ersetzen.

Liegt das eventuell daran, dass bei mir das Feld so_mail nicht als select-option deklariert ist sonders so:

Code: Alles auswählen.

TYPES: BEGIN OF r_so_mail,
           sign(1)    TYPE c,
           option(2)  TYPE c,
           low        LIKE adr6-smtp_addr,
           high       LIKE adr6-smtp_addr,
          END OF r_so_mail.

Re: Falsches Resultat nach Select

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
zeig doch einfach mal, wie du SO_MAIL füllst.
hier noch mal ein kurzes Beispiel mit r_so_mail.

Code: Alles auswählen.

TYPES:
  BEGIN OF r_so_mail,
    sign(1)    TYPE c,
    option(2)  TYPE c,
    low        LIKE adr6-smtp_addr,
    high       LIKE adr6-smtp_addr,
  END OF r_so_mail.

DATA: wa_contact TYPE adr6,
      wa_mail TYPE r_so_mail,
      so_mail TYPE STANDARD TABLE OF r_so_mail.

wa_mail-sign = 'I'.
wa_mail-option = 'CP'.
wa_mail-low = '*@examplefirma.de'.
APPEND wa_mail TO so_mail.

SELECT persnumber addrnumber smtp_addr
  FROM adr6
  INTO (wa_contact-persnumber, wa_contact-addrnumber, wa_contact-smtp_addr)
  WHERE flgdefault = 'X'
  AND   smtp_addr IN so_mail.
  WRITE: / wa_contact.
ENDSELECT.

Re: Falsches Resultat nach Select

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
Hallo Bugfix,

du hast dir aber auch eine nette Aufgabe ausgesucht.

In der Tabelle ADR6 steht die Emailadresse im Feld SMTP_ADDR. Dort allerdings wird nach Groß- und Kleinschreibung unterschieden.
Weiterhin gibt es das Feld SMTP_SRCH, welches die ersten 20 Stellen der STMP_ADDR enthält, aber in Großbuchstaben konvertiert.

Bei dir ist es jetzt wahrscheinlich so, dass bei einer recht kurzen adresse we zB. stefan@examplefirma.de in der SMTP_SRCH folgendes steht: STEFAN@EXAMPLEFIRMA. Das sind die ersten 20 Stellen der Email.
Damit wird dann auch klar warum bei dir die erste Abfrage gut durchläuft wohingegen die zweite scheitert.
Was du tatsächlich machen solltest wäre eine Abfrage auf das Feld SMTP_ADDR, wobei du Groß- und Kleinschreibung ignorierst. Das ist aber leider mit den Open-SQL-Mitteln von ABAP nicht möglich - hier müsstest du via EXEC-SQL vorgehen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Falsches Resultat nach Select

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
versteh ich nicht. Wozu natives SQL? ABAP-SQL reicht doch vollkommen aus, wie o.g. Beispiele zeigen, sofern die RANGE korrekt gefüllt ist, egal ob als SELECT-OPTION oder handgemacht.

Re: Falsches Resultat nach Select

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
zzcpak hat geschrieben:versteh ich nicht. Wozu natives SQL? ABAP-SQL reicht doch vollkommen aus, wie o.g. Beispiele zeigen, sofern die RANGE korrekt gefüllt ist, egal ob als SELECT-OPTION oder handgemacht.
Nein - tut es in diesem besonderen Fall nicht.
Emailadressen sind üblicherweise etwas länger. z.B. black.adept@MeineTolleFirma.de
Wenn du jetzt alle Leute mit der Domäne MeineTolleFirma.de suchen willst kannst du nicht über die SMTP_SRCH gehen, da der Teil bis zum @ einfach zu lang.
In dem obigen Beispiel wäre das BLACK.ADEPT@MEINETOL . Da es aber auch eine 2. Domain MeineTolleFirma2 geben könnte reicht damit das SMTP_SRCH einfach nicht aus.
Wenn du hingegen über die SMTP_ADDR gehen willst musst du darauf hoffen, dass diejenigen die die Emailadressen pflegen auch immer schon MeineTolleFirma.de schreiben und nicht meinetollefirma.de oder MEINEtolleFIRMA.de oder MeineTolleFirma.DE Daher hilft hier nur der Weg über EXEC-SQL, der die Groß- und Kleinschreibung der Emailaddy vernachlässigen kann.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

2
Antw.
1749
Views
falsches Format
von Mrs. Hilflos » 10.05.2004 18:18 • Verfasst in ABAP Objects®
1
Antw.
179
Views
SMEN_BUFFC - falsches menu_level
von defaultuser » 14.09.2023 10:15 • Verfasst in ABAP® für Anfänger
4
Antw.
876
Views
Falsches Layout bei Submit Program
von BMWi801 » 19.01.2021 15:58 • Verfasst in ABAP® Core
3
Antw.
2593
Views
CALL TRANSACTION -> falsches DYNPRO
von formcraft » 12.04.2016 13:57 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.