Ich frage mich vor allem, ob es denn eine Möglichkeit gibt, weniger Variablen zu keklarieren und diese WHERE-Bedingung zu verkürzen?DATA: lt_status TYPE RANGE OF tab-status,
ls_status LIKE LINE OF lt_status.
DATA: lt_start TYPE RANGE OF tab-start,
ls_start LIKE LINE OF lt_start.
DATA: lt_end TYPE RANGE OF tab-end,
ls_end LIKE LINE OF lt_end.
ls_status-low = iv_status.
ls_status-sign = 'I'.
ls_status-option = 'EQ'.
APPEND ls_status TO lt_status.
IF iv_date_low IS NOT INITIAL AND iv_date_high IS NOT INITIAL.
ls_start-low = iv_date_low.
ls_start-sign = 'I'.
ls_start-option = 'GE'.
APPEND ls_start TO lt_start.
ls_end-low = iv_date_low.
ls_end-sign = 'I'.
ls_end-option = 'GE'.
APPEND ls_end TO lt_end.
ENDIF.
SELECT * FROM tab INTO TABLE gt_db_data_selected WHERE status IN lt_status
AND start IN lt_start
AND end IN lt_end.
Code: Alles auswählen.
define create_range.
types: tyr_&1 type range of &1.
data: lrt_&1 type tyr_&1.
field-symbols: <lrs_&1> type line of tyr_&1.
end-of-definition.
Code: Alles auswählen.
define append_range.
append initial line to ltr_&1 assigning <lrs_&1>.
<lrs_&1>-sign = 'I'.
<lrs_&1>-option = 'EQ'.
<lrs_&1>-low = &2.
end-of-definition.
Code: Alles auswählen.
create_range status.
create_range start.
create_range end.
append_range status iv_status.
IF iv_date_low IS NOT INITIAL AND iv_date_high IS NOT INITIAL.
append_range start iv_date_low.
append_range end iv_date_high.
ENDIF.
a-dead-trousers hat geschrieben:Code: Alles auswählen.
append_range status iv_status. append_range start iv_date_low. append_range end iv_date_high.
Code: Alles auswählen.
define create_range.
types: tyr_&1 type range of &1.
data: lrt_&1 type tyr_&1.
field-symbols: <lrs_&1> type line of tyr_&1.
end-of-definition.
define append_range.
append initial line to ltr_&1 assigning <lrs_&1>.
<lrs_&1>-sign = 'I'.
<lrs_&1>-option = 'EQ'.
<lrs_&1>-low = &2.
end-of-definition.
create_range status.
append_range status iv_status.
Code: Alles auswählen.
types: tyr_status type range of status.
data: lrt_status type tyr_status.
field-symbols: <lrs_status> type line of tyr_status.
append initial line to ltr_status assigning <lrs_status>.
<lrs_status>-sign = 'I'.
<lrs_status>-option = 'EQ'.
<lrs_status>-low = iv_status.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ABAP_User