Zeilenausgabe unterdrücken

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

Zeilenausgabe unterdrücken

Beitrag von ServantOfSonata (ForumUser / 40 / 12 / 0 ) »
Folgendes Problem:

Wie in meinem anderen Threat beschrieben versuche ich durch mehrere Tabellen hindurch Strings zu vergleichen um am Ende die Treffer in eine Ergebnistabelle zu vereinen. Die ersten beiden Tabellen, die ich vergleiche bestehen aus mehreren Spalten (im Beispiel itab1 = 3 Spalten, itab2 = 2 Spalten), die miteinander abgeglichen werden.

Da ich erst mal mit internen Tabellen arbeite habe ich Dummydaten reingeladen und das Ergebnis ist auch insofern korrekt. Die itab1-spalte1 ist immer gefüllt. Mein Problem dabei ist, dass wenn itab1-spalte2 oder itab1-spalte3 UND eine oder beide Spalten der itab2 leer sind, diese in der Ausgabe auch mit auftauchen, da in dem Fall der Treffer von zwei leeren Spalten aufgeführt wird mit den Operatorenvergleich.

Code: Alles auswählen.

LOOP AT itab1.
    LOOP AT itab2.
        IF itab2-name1 CP itab1-begriff1 OR itab2-name2 CP itab1-begriff1
            OR itab2-name1 CP itab1-begriff2 OR itab2-name2 CP itab1-begriff2
            OR itab2-name1 CP itab1-begriff3 OR itab2-name2 CP itab1-begriff3.
                MOVE-CORRESPONDING itab1 TO erg_tab.
                MOVE-CORRESPONDING itab2 TO erg_tab.     
                WRITE: /5 erg_tab-name4, erg_tab-name5.
                APPEND erg_tab.
        ENDIF.        
    ENDLOOP.
ENDLOOP.
In dem Fall sieht die Ausgabe so aus...:
begriff1;begriff2;begriff3;name1;name2
Aral;' ';' ';Harald;Schuster
Aral;' ';' ';Claudia Schumann;' '

Hier dürfte die zweite Zeile nicht angezeigt werden.

Mein Ansatz wäre auf durch eine IF-Abfrage auf leere Felder zu prüfen, dafür bräuchte ich aber irgendwie eine Mehrfachbedingung die ich nicht realisiert kriege :?

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


Re: Zeilenausgabe unterdrücken

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hallo,

wenn du es nicht mit einem großen logischen Block hinbekommst ( was aber durchaus möglich wäre ), dann teile das Ganze doch einfach in mehrere aufeinanderfolgende IF-Abfragen aus. Macht das Ganze wahrscheinlich auch deutlich lesbarer. Du könntest z.B. nach itab1-begriffN aussplitten.

Code: Alles auswählen.

IF itab-begriffN <> space 
   AND (    itab2-name1 CS itab-begriffN 
         OR itab2-name2 CS itab-begriffN )
...
ENDIF

P.S.
ServantOfSonata hat geschrieben:...
Wie in meinem anderen Threat beschrieben ...
http://translate.google.de/#en/de/threat

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeilenausgabe unterdrücken

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ServantOfSonata hat geschrieben:Mein Ansatz wäre auf durch eine IF-Abfrage auf leere Felder zu prüfen, dafür bräuchte ich aber irgendwie eine Mehrfachbedingung die ich nicht realisiert kriege :?

Code: Alles auswählen.

LOOP AT itab1.
    LOOP AT itab2.
        IF     ( itab2-name1 CP itab1-begriff1 AND itab2-name1 IS NOT INITIAL AND itab1-begriff1 IS NOT INITIAL )
            OR ( itab2-name2 CP itab1-begriff1 AND itab2-name2 IS NOT INITIAL AND itab1-begriff1 IS NOT INITIAL )
            OR ( itab2-name1 CP itab1-begriff2 AND itab2-name1 IS NOT INITIAL AND itab1-begriff2 IS NOT INITIAL )
            OR ( itab2-name2 CP itab1-begriff2 AND itab2-name2 IS NOT INITIAL AND itab1-begriff2 IS NOT INITIAL )
            OR ( itab2-name1 CP itab1-begriff3 AND itab2-name1 IS NOT INITIAL AND itab1-begriff3 IS NOT INITIAL )
            OR ( itab2-name2 CP itab1-begriff3 AND itab2-name2 IS NOT INITIAL AND itab1-begriff3 IS NOT INITIAL ).
                MOVE-CORRESPONDING itab1 TO erg_tab.
                MOVE-CORRESPONDING itab2 TO erg_tab.     
                WRITE: /5 erg_tab-name4, erg_tab-name5.
                APPEND erg_tab.
        ENDIF.        
    ENDLOOP.
ENDLOOP.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
ServantOfSonata

Gruß Hendrik

Re: Zeilenausgabe unterdrücken

Beitrag von ServantOfSonata (ForumUser / 40 / 12 / 0 ) »
black_adept hat geschrieben: P.S.
ServantOfSonata hat geschrieben:...
Wie in meinem anderen Threat beschrieben ...
http://translate.google.de/#en/de/threat
Ähem... ja... ich wollte euch nicht bedrohen :) ... Danke für die Verbesserung.

Und danke an euch beiden für die Antworten. Auf die Ausdrucksweise mit IS NOT INITIAL wäre ich glaube ich auch nicht so schnell gekommen. :)

Re: Zeilenausgabe unterdrücken

Beitrag von ServantOfSonata (ForumUser / 40 / 12 / 0 ) »
Noch eine Frage dazu:

Kann man es irgendwie arrangieren, dass bei einem weiteren Stringvergleich von internen Tabellen das "inverse" Ergebnis ausgibt. Ich habe schon mehrere Ansätze versucht, komme allerdings hier auch auf keinen grünen Zweig. Hinter die Logik für die Operatoren um genau das Ergebnis auszugeben bin ich noch nicht gekommen.

Theoretisch würde man das Ergebnis dann auch aus der internen Tabelle löschen können, das funktioniert jedoch leider auch nicht mit der DELETE-Anweisung so wie ich mir das vorstelle.

Ich hab hier mal zwei Ansätze um mit dem verschiedenen Operatoren zu arbeiten. Der erste Block zeigt die Daten mit denen die Tabellen gefüllt werden.


Füllen der Tabellen:

Code: Alles auswählen.

DATA:   BEGIN OF nb OCCURS 10,
            name1(20)   TYPE c,
            name2(20)   TYPE c,
        END OF nb.


DATA:   BEGIN OF neg_list OCCURS 10,
            name(20)    TYPE c,
            begriff1(20)   TYPE c,
        END OF neg_list.



neg_list-name = 'Audi'.
neg_list-begriff1 = '*Claudia*'.
APPEND neg_list.
neg_list-name = 'Aral'.
neg_list-begriff1 = '*Harald*'.
APPEND neg_list.


*Füllen der internen Tabelle "nb"
nb-name1 = 'Audi'.
nb-name2 = 'AG'.
APPEND nb.
nb-name1 = 'Claudia Mustermann'.
nb-name2 = 'Tankstelle'.
APPEND nb.
nb-name1 = 'Aral'.
nb-name2 = 'AG'.
APPEND nb.
nb-name1 = 'Harald Meier'.
nb-name2 = 'Versicherungen'.
APPEND nb.
nb-name1 = 'ABC'.
nb-name2 = 'AG'.
APPEND nb.
1. Variante: (Hier wird werden ja quasi die Tabellen aneinander geschrieben, nur jeweils ein Datensatz fliegt raus. Da "Claudia" demnach dennoch bei Aral auftaucht und "Harald" bei Audi bringt mir das im Endeffekt nicht viel)

Code: Alles auswählen.

LOOP AT neg_list.
  LOOP AT nb.
    IF ( nb-name1 NP neg_list-begriff1 AND nb-name1 IS NOT INITIAL  )
      AND ( nb-name2 NP neg_list-begriff1 AND nb-name2 IS NOT INITIAL  ).
           WRITE: /5 neg_list, nb.
        ENDIF.
  ENDLOOP.
ENDLOOP.
  • Ausgabe: Audi | *Claudia* | Audi| AG
    Audi | *Claudia* | Aral | AG
    Audi | *Claudia* | Harald Meier | Versicherungen
    Audi | *Claudia* | ABC| AG
    Aral | *Harald* | Audi| AG
    Aral | *Harald* | Claudia Mustermann | Tankstelle
    Aral | *Harald* | Aral | AG
    Aral | *Harald* | ABC| AG


2. Variante: (Hier krieg ich durch die Logik genau die beiden Zeilen angezeigt die rausfliegen sollen)

Code: Alles auswählen.

LOOP AT neg_list.
  LOOP AT nb.
    IF ( nb-name1 CP neg_list-begriff1 AND nb-name1 IS NOT INITIAL  )
      OR ( nb-name2 CP neg_list-begriff1 AND nb-name2 IS NOT INITIAL  ).
           WRITE: /5 neg_list, nb.
        ENDIF.
  ENDLOOP.
ENDLOOP.
  • Ausgabe: Audi | *Claudia* | Claudia Mustermann | Tankstelle
    Aral | *Harald* | Harald Meier | Versicherungen

Vielleicht habt ihr zumindest den Ansatz mit welchem der beiden man weiterarbeiten kann, ohne das ich mich da in die falsche Richtung dann bewege.

Viele Grüße
Chris

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1439
Views
Transaktion SFP - Farbige Zeilenausgabe einer Tabelle
von Stahle71 » 14.06.2016 09:17 • Verfasst in ABAP® für Anfänger
4
Antw.
3875
Views
Nachricht unterdrücken
von RainerW » 30.03.2015 11:39 • Verfasst in Sales and Distribution
4
Antw.
6271
Views
Gruppierung im ALV unterdrücken
von smidi » 05.10.2007 09:07 • Verfasst in ABAP® Core
3
Antw.
3832
Views
Submit Messages unterdrücken
von ABAP-Azubi » 19.09.2014 09:37 • Verfasst in ABAP® für Anfänger
4
Antw.
2934
Views
BAPI_PO_CREATE1 - Nachrichten unterdrücken?
von ralf.wenzel » 22.02.2013 09:24 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 2 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 9 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 9 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 11 Stunden von snooga87 1 / 83

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

Regex in where
vor 2 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 9 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 9 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 11 Stunden von snooga87 1 / 83

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 11 Stunden von snooga87 1 / 83
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3260
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821