Code: Alles auswählen.
TYPES: BEGIN OF zkn_schichten,
mandt TYPE zcm_shifts-mandt,
datum TYPE zcm_shifts-datum,
shiftstart TYPE zcm_shifts-shift_start,
shiftend TYPE zcm_shifts-shift_end,
END OF zkn_schichten.
DATA: gt_shifts TYPE STANDARD TABLE OF zkn_schichten,
gs_shifts TYPE zkn_schichten,
gs_zcm_shifts TYPE zcm_shifts.
SELECT zcm_shifts~mandt zcm_shifts~datum zcm_shifts~shift_start zcm_shifts~shift_end
FROM zcm_shifts INTO gs_zcm_shifts
WHERE pa_date = gs_shift-datum and pa_time BETWEEN gs_shifts-shiftstart and gs_shifts-shiftend.
APPEND gs_shifts TO gt_shifts.
ENDSELECT.
Code: Alles auswählen.
PARAMETERS:
pa_date TYPE sy-datum
pa_time TYPE sy-uzeit.
Folgende Benutzer bedankten sich beim Autor zzcpak für den Beitrag:
ichse18577
Code: Alles auswählen.
PARAMETERS: pa_date TYPE dats DEFAULT '20190103', "OBLIGATORY,
pa_time TYPE tims. " OBLIGATORY.
Code: Alles auswählen.
WHERE pa_date = gs_shift-datum and pa_time BETWEEN gs_shifts-shiftstart and gs_shifts-shiftend.
Folgende Benutzer bedankten sich beim Autor 4byte für den Beitrag:
ichse18577
Folgende Benutzer bedankten sich beim Autor deejey für den Beitrag:
ichse18577
Code: Alles auswählen.
SELECT * FROM zcm_shifts INTO gs_zcm_shifts
WHERE pa_date = zcm_shifts-datum AND pa_time BETWEEN zcm_shifts-shift_start AND zcm_shifts-shift_end.
APPEND gs_shifts TO gt_shifts.
ENDSELECT.
Code: Alles auswählen.
SELECT * "was soll selektiert werden?
FROM zcm_shifts "woher soll selektiert werden?
INTO gs_zcm_shifts "wohin soll das Ergebnis der Selektion geschrieben werden?
WHERE ... "jetzt kommt der spannende Teil
Schau dir diese und die weiterführenden Dinge mal an, z.b. auch sql_cond:Syntax
... [FOR ALL ENTRIES IN itab] WHERE sql_cond ...
Wirkung
Der Zusatz WHERE schränkt die Anzahl der Zeilen, die durch die Anweisung SELECT in die Ergebnismenge gestellt werden, durch einen logischen Ausdruck sql_cond ein. Der logische Ausdruck vergleicht den Inhalt von Spalten in der Datenbank mit dem Inhalt von Hostvariablen, Literalen oder mit dem Inhalt anderer Spalten. [...]
Wenn du das gelesen und verstanden hast, kommst du bestimmt selbst dahinter was der Fehler ist, dein Vergleich ist falsch du musst ihn wie folgt aufbauen:WHERE - sql_cond
Syntax
... { {operand1 {=|EQ|<>|NE|>|GT|<|LT|>=|GE|<=|LE}
{ operand2
| {[ALL|ANY|SOME] subquery} }}
| {operand [NOT] BETWEEN operand1 AND operand2}
| {operand1 [NOT] LIKE operand2 [ESCAPE esc]}
| {operand [NOT] IN (operand1, operand2 ...)}
| {operand [NOT] IN seltab}
| {operand IS [NOT] NULL}
| {(cond_syntax)}
| {EXISTS subquery}
| {operand [NOT] IN subquery} } ...
Wirkung
Die logischen Ausdrücke sql_cond in der WHERE-Bedingung sind ähnlich den allgemeinen logischen Ausdrücken für Kontrollanweisungen. Sie bestehen aus relationalen Ausdrücken mit Vergleichsoperatoren und mit Prädikatoperatoren. Zusätzlich können die logischen Ausdrücke einer WHERE-Bedingung dynamisch angegeben werden und es ist die Verwendung von Subqueries möglich. Mehrere relationale Ausdrücke einer WHERE-Bedingung können mit AND oder OR zu einem Ausdruck verknüpft werden. Ein logischer Ausdruck kann mit NOT negiert werden.
Für operand bzw. operand1 auf der linken Seite können angegeben werden:
Spalten der hinter FROM aufgeführten Datenquellen.
Beliebige SQL-Ausdrücke, was Literale, Hostvariablen und Hostausdrücke umfasst.
Code: Alles auswählen.
WHERE 1 2 3
Folgende Benutzer bedankten sich beim Autor schick für den Beitrag:
ichse18577
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ichse18577
Code: Alles auswählen.
TYPES: BEGIN OF zkn_schichten,
mandt TYPE zcm_shifts-mandt,
datum TYPE zcm_shifts-datum,
shiftstart TYPE zcm_shifts-shift_start,
shiftend TYPE zcm_shifts-shift_end,
END OF zkn_schichten.
DATA: gt_shifts TYPE STANDARD TABLE OF zkn_schichten,
gs_shifts TYPE zkn_schichten,
gs_zcm_shifts TYPE zcm_shifts.
PARAMETERS: pa_date TYPE dats DEFAULT '20190103', "OBLIGATORY,
pa_time TYPE tims. " OBLIGATORY.
**********************************************************************
SELECT * FROM zcm_shifts INTO gs_zcm_shifts
WHERE zcm_shifts~shift_start <= pa_time
AND zcm_shifts~shift_end >= pa_time
AND zcm_shifts~datum = pa_date.
APPEND gs_shifts TO gt_shifts.
ENDSELECT.
**********************************************************************
IF gt_shifts IS NOT INITIAL.
MESSAGE i003(YACM).
ELSE.
MESSAGE i002(YACM).
ENDIF.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ichse18577