Probleme beim in Vergleich.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Probleme beim in Vergleich.

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
Hallo,

ich hab eine Tabelle wo ich abspeicher welches Material in welchem Zeitrauch Produziert wird.
Der Benutzer soll einen Zeitraum auswählen können und somit "seine" Materialnummern bekommen. Ich wollte das mit Select-options machen. Doch irgendwie reagiert die "if"-Anweisung mit dem Vergleichsparameter "in" nicht so richtig, kann mir da jemand helfen.

Code: Alles auswählen.

  datum-sign   = 'I'.
  datum-option = 'BT'.
LOOP AT mat_tab.
        datum-low  = mat_tab-dat_fr.
        datum-high = mat_tab-dat_to.
        IF datum IN s_zeitr. "szeitr ist ein select-options
          COLLECT mat_tab-matnr INTO sel_mat_tab.
        ENDIF.
      ENDLOOP.
Danke und Gruss
dimes

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Dimes,

die Anweisung lautet:

Code: Alles auswählen.

IF <einzelwert> IN range_tab. "
Demnach müsste Deine Anfrage in etwa so aussehen:

Code: Alles auswählen.

LOOP AT mat_tab. 
  IF mat_tab-dat_fr IN s_zeitr AND "szeitr ist ein select-options 
     mat_tab-dat_to IN s_zeitr.
    COLLECT mat_tab-matnr INTO sel_mat_tab. 
  ENDIF. 
ENDLOOP.
* oder
LOOP AT mat_tab WHERE mat_tab-dat_fr IN s_zeitr  "szeitr ist ein select-options 
                AND   mat_tab-dat_to IN s_zeitr.
  COLLECT mat_tab-matnr INTO sel_mat_tab. 
ENDLOOP.
Wenn nur eine der beiden Datumwerte im Selektionsbereich sein brauchen, ist statt des AND ein OR zu benutzen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
oh man,
das hab ich irgendwie befürchtet,
da das bei mir ja keine einzelwerte sing sondern ein Datumsbereich, muss ich ja dann sowas machen:

Code: Alles auswählen.



  data: begin of matnr_tab occurs 1000,
        matnr type d,
        end of matnr_tab.

 loop at mat_tab.
        matnr_tab-matnr = mat_tab-dat_fr.
        do.
          if matnr_tab-matnr > mat_tab-dat_to.
            exit.
          endif.
          append matnr_tab.
          add 1 to matnr_tab-matnr.
        enddo.
          loop at matnr_tab where matnr in s_zeitr.
          collect mat_tab-matnr into sel_mat_tab.
          endloop.
     endloop.
oder gibts noch einen weiteren weg... der läuft hier sonst zu tode wenn er es so verarbeiten muss.

gruss dimes

Re: Probleme beim in Vergleich.

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
dimes hat geschrieben:

Code: Alles auswählen.

  datum-sign   = 'I'.
  datum-option = 'BT'.
LOOP AT mat_tab.
        datum-low  = mat_tab-dat_fr.
        datum-high = mat_tab-dat_to.
        IF datum IN s_zeitr. "szeitr ist ein select-options
          COLLECT mat_tab-matnr INTO sel_mat_tab.
        ENDIF.
      ENDLOOP.
Dir fehlt ein Append!
Du fühlst bei dir nur den Kopf der Tabelle, aber der "IN" prüft auf den Tabelleninhalt.

Code: Alles auswählen.

  datum-sign   = 'I'.
  datum-option = 'BT'.
LOOP AT mat_tab.
        refresh datum.  "das brauchst du noch
        datum-low  = mat_tab-dat_fr.
        datum-high = mat_tab-dat_to.
        append datum. " und das auch
        IF datum IN s_zeitr. "szeitr ist ein select-options
          COLLECT mat_tab-matnr INTO sel_mat_tab.
        ENDIF.
      ENDLOOP.

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
DeathGuardian hat geschrieben:
dimes hat geschrieben:
Dir fehlt ein Append!
Du fühlst bei dir nur den Kopf der Tabelle, aber der "IN" prüft auf den Tabelleninhalt.

Code: Alles auswählen.

  datum-sign   = 'I'.
  datum-option = 'BT'.
LOOP AT mat_tab.
        refresh datum.  "das brauchst du noch
        datum-low  = mat_tab-dat_fr.
        datum-high = mat_tab-dat_to.
        append datum. " und das auch
        IF datum IN s_zeitr. "szeitr ist ein select-options
          COLLECT mat_tab-matnr INTO sel_mat_tab.
        ENDIF.
      ENDLOOP.
ne ich glaub ereglam hat recht damit das die in anweisung einen einzelnen Wert Prüft und nicht so eine ranges Tabelle...

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2836
Views
Vergleich JSP / BSP
von Tserva » 07.11.2006 21:50 • Verfasst in Java & SAP®
5
Antw.
2340
Views
Vergleich ähnlich Like
von thomasxy » 28.11.2007 13:40 • Verfasst in ABAP® für Anfänger
2
Antw.
2059
Views
Vergleich von Datenelementen
von Senshi » 04.09.2007 12:38 • Verfasst in ABAP® für Anfänger
6
Antw.
4296
Views
string vergleich
von dimes » 22.05.2006 09:28 • Verfasst in ABAP® Core
2
Antw.
2238
Views
Tabellen-Vergleich FuBa ??
von gabo » 16.12.2007 19:03 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Feldwerte vergleichen
vor 10 Stunden von wreichelt 2 / 30
Workflow-Datenfluss mit Multi-Line-Container
vor 12 Stunden von ewx gelöst 2 / 93
Mahnung erstellen
vor 16 Stunden von Sebastian82 4 / 125
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 121

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

Feldwerte vergleichen
vor 10 Stunden von wreichelt 2 / 30
Workflow-Datenfluss mit Multi-Line-Container
vor 12 Stunden von ewx gelöst 2 / 93
Mahnung erstellen
vor 16 Stunden von Sebastian82 4 / 125
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 121

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 2 Tagen von Manfred K. 1 / 84
Export von Spools in XLSX
vor einer Woche von abapamateur 1 / 841
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 1448