2008 Mar 24 5:24 AM
Hi All,
i have a problem in select statement. i have a name field in my selection screen, i am using name field to comapre string in my select statement, but i am not getting the resule can anyone suggest me on this . please find my code below,s_name1 is my select option name.
IF s_name1-low IS NOT INITIAL.
LOOP AT S_NAME1.
CONCATENATE s_name1-low '%' INTO s_name1-low.
TRANSLATE s_name1-low TO UPPER CASE.
s_name1-option = 'CP'.
MODIFY s_name1.
ENDLOOP.
ENDIF.
SELECT lifnr land1 name1 ort01 ort02 pfach pstl2 pstlz regio stras
erdat ernam ktokk loevm sperr sperm sperz nodel
INTO (gs_vendor-vendor_num, gs_vendor-land1, gs_vendor-name,
gs_vendor-ort01, gs_vendor-ort02, gs_vendor-pfach,
gs_vendor-pstl2, gs_vendor-pstlz, gs_vendor-regio,
gs_vendor-stras, gs_vendor-created_on, gs_vendor-created_by,
gs_vendor-account_gp, gs_vendor-deletion_flag,
gs_vendor-central_post, gs_vendor-ctr_purch_block,
gs_vendor-payment_block, gs_vendor-central_deletion)
FROM lfa1
WHERE lifnr IN s_lifnr
AND name1 LIKE s_name1
Start of Change G9007789 03/12/2008 - D01K946651
Additional selection criteria added for City and Region
AND ort01 IN s_ort01
AND regio IN s_regio
End of Change G9007789 03/12/2008 - D01K946651
AND ktokk IN s_ktokk
AND ( ktokk NE 'ZHMT' AND ktokk NE 'ZTER' ).
APPEND gs_vendor TO gt_vendor.
CLEAR gs_vendor.
ENDSELECT.
2008 Mar 24 5:31 AM
Hi Abinash,
Instead of name1 LIKE s_name1 use name1 IN s_name1
Please reward if useful
Thanks Arjun
2008 Mar 24 5:32 AM
HI,
For Ex,
SELECT-OPTIONS:P_VBELN FOR VBRK-VBELN NO INTERVALS.
The text will be,
%_P_VBELN_%_APP_%-TEXT
NOT
%_P_VBELN-LOW_%_APP_%-TEXT
Reward if helpful.
Regards,
Kumar
2008 Mar 24 5:34 AM
Hi,
Try replacing '%' by '*'......
SAP Docu for LIKE
Notes
The use of the wildcard characters "_" and "%" corresponds to the standard of SQL. In the rest of ABAP, the wildcard characters "+" and " * " are used in similar logical expressions, in particular when selection tables are used.
2008 Mar 24 5:36 AM
Hi,
Have you checked whether you have given proper events.
Check this code below.
AT selection screen output. "Change here
IF s_name1-low IS NOT INITIAL.
LOOP AT S_NAME1.
CONCATENATE s_name1-low '%' INTO s_name1-low.
TRANSLATE s_name1-low TO UPPER CASE.
s_name1-option = 'CP'.
MODIFY s_name1.
ENDLOOP.
ENDIF.
Start-of-Selection. " change here
SELECT lifnr land1 name1 ort01 ort02 pfach pstl2 pstlz regio stras
erdat ernam ktokk loevm sperr sperm sperz nodel
INTO (gs_vendor-vendor_num, gs_vendor-land1, gs_vendor-name,
gs_vendor-ort01, gs_vendor-ort02, gs_vendor-pfach,
gs_vendor-pstl2, gs_vendor-pstlz, gs_vendor-regio,
gs_vendor-stras, gs_vendor-created_on, gs_vendor-created_by,
gs_vendor-account_gp, gs_vendor-deletion_flag,
gs_vendor-central_post, gs_vendor-ctr_purch_block,
gs_vendor-payment_block, gs_vendor-central_deletion)
FROM lfa1
WHERE lifnr IN s_lifnr
AND name1 LIKE s_name1
Start of Change G9007789 03/12/2008 - D01K946651
Additional selection criteria added for City and Region
AND ort01 IN s_ort01
AND regio IN s_regio
End of Change G9007789 03/12/2008 - D01K946651
AND ktokk IN s_ktokk
AND ( ktokk NE 'ZHMT' AND ktokk NE 'ZTER' ).
APPEND gs_vendor TO gt_vendor.
CLEAR gs_vendor.
ENDSELECT.
Reward if helpful.
Regards.
2008 Mar 24 5:38 AM
Hi,
Did you get any error in your program?
IF NOT s_name1-low IS INITIAL.
LOOP AT S_NAME1.
CONCATENATE s_name1-low '%' INTO s_name1-low.
TRANSLATE s_name1-low TO UPPER CASE.
s_name1-option = 'CP'.
s_name1-sign = 'I'.
MODIFY s_name1.
ENDLOOP.
ENDIF.
First Change your code like below which increase the performance.
SELECT lifnr land1 name1 ort01 ort02 pfach pstl2 pstlz regio stras
erdat ernam ktokk loevm sperr sperm sperz nodel
INTO CORRESPONDING FIELDS OF TABLE gs_vendor
FROM lfa1
WHERE lifnr IN s_lifnr
AND name1 LIKE s_name1
AND ort01 IN s_ort01
AND regio IN s_regio
AND ktokk IN s_ktokk
AND ( ktokk NE 'ZHMT' AND ktokk NE 'ZTER' ).
Now try
2008 Mar 24 6:32 AM
2008 Mar 24 6:33 AM
Hi,
your statement :
CONCATENATE s_name1-low '%' INTO s_name1-low.
makes a string "s_name1-low" with value as "verma" into
verma% but not 'verma%'.
the string should be with in single quotes not as verma% but instead in the form 'verma%'.
please make changes accordingly and see how it worked or still you are facing issues on this..
Thanks,
Vishnu.