Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

string compare in select statement

Former Member
0 Kudos
3,387

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.

7 REPLIES 7

Former Member
0 Kudos
241

Hi Abinash,

Instead of name1 LIKE s_name1 use name1 IN s_name1

Please reward if useful

Thanks Arjun

former_member708410
Contributor
0 Kudos
241

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

Former Member
0 Kudos
241

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.

Former Member
0 Kudos
241

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.

Former Member
0 Kudos
241

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

Former Member
0 Kudos
241

Thanks All,

Former Member
0 Kudos
241

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.