TYPES: BEGIN OF gst_speise,
carrid TYPE s_carr_id,
mealnumber TYPE s_mealnum,
mealtype TYPE s_mealtype,
text TYPE s_mealtext,
END OF gst_speise.
DATA gt_speisen TYPE STANDARD TABLE OF gst_speise WITH DEFAULT
KEY.

START-OF-SELECTION.
DATA lv_typ TYPE s_mealtype.

IF pa_vegi = abap_true. lv_typ = 'VE'.
ELSEIF pa_fisch = abap_true. lv_typ = 'FI'.
ELSEIF pa_meat = abap_true. lv_typ = 'FL'.
ENDIF.
SELECT m~carrid,
m~mealnumber,
m~mealtype,
t~text
FROM smeal AS m
LEFT OUTER JOIN smealt AS t
ON m~carrid = t~carrid
AND m~mealnumber = t~mealnumber
AND t~sprache = @pa_lang
WHERE m~carrid = @pa_carr
AND m~mealnumber IN @so_meal
AND ( @lv_typ IS INITIAL OR m~mealtype = @lv_typ )
INTO TABLE @gt_speisen.

IF sy-subrc <> 0.
MESSAGE 'Der Koch hat heute frei  keine Gerichte gefunden.' TYPE 'S'.
RETURN.
ENDIF.