Hey Guys,
I want to create the dynamic where clause.
DATA: GI_WHERE(72) OCCURS 0 WITH HEADER LINE.
SELECT *
INTO TABLE GI_VBAK
FROM VBAK
WHERE (<b>GI_WHERE</b>).
In that where clause contain ranges.
for eg.
GI_WHERE = <b>'VBELN IN S_VBELN'</b>.
Thanks,
Suresh.
Message was edited by: Suresh Kumar
Yes...You can use a dynamic where clause for select options also.
for example
CONCATENATE 'KAPPL' '=' 'C_KAPPL' 'AND'
'KSCHL' 'IN' 'R_KSCHL' 'AND'
'VKORG IN P_VKORG' 'AND'
'VTWEG IN P_VTWEG' 'AND'
'SPART IN P_SPART' 'AND'
'KUNNR IN P_KUNNR' 'AND'
'MATNR IN P_MATNR' 'AND'
'DATBI >=' 'SY-DATUM' 'AND'
'DATAB <=' 'SY-DATUM' INTO GS_CONDITION-WHERE SEPARATED BY SPACE.
The above where clause worked fine in my program.
Regards,
Vara
Hi,
Check this example..
TYPE-POOLS: rsds.
TABLES: vbap.
SELECT-OPTIONS so_matnr FOR vbap-matnr.
DATA: itab_where(72) OCCURS 0 WITH HEADER LINE.
DATA: t_where TYPE rsds_twhere WITH HEADER LINE,
t_cedst TYPE STANDARD TABLE OF cedst,
s_cedst LIKE LINE OF t_cedst.
s_cedst-fnam = 'VBAP~MATNR'.
LOOP AT so_matnr.
MOVE-CORRESPONDING so_matnr TO s_cedst.
APPEND s_cedst TO t_cedst.
ENDLOOP.
CALL FUNCTION 'ASEL_CEDST_2_RANGE_WHERE'
EXPORTING
id_tabname = 'VBAP'
id_xwhere = 'X'
TABLES
it_cedst = t_cedst
et_where = t_where
EXCEPTIONS
selection_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE t_where INDEX 1.
itab_where[] = t_where-where_tab[].
SELECT SINGLE * FROM vbap
WHERE (itab_where).
IF sy-subrc = 0.
ENDIF.
Please let me know if it works..
Thanks,
Naren
Add a comment