Application Development and Automation 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: 
Read only

String Operation

Former Member
0 Likes
1,094

Hi Experts,

My requirement is that to Diaplay Name like

Feroz Mehta if the input given is FEROZ MEHTA or feroz mehta.

I am using the Standard Function Module

STRING_UPPER_LOWER_CASE

But the out put which I am getting is FerozMehta, I am getting no space between the two names.

Can you please advice me how to get the desire output.

Thanks in Advance.

Regards,

Iff

7 REPLIES 7
Read only

Former Member
0 Likes
1,011

try like this


data : text(30) value 'feroz mehta',
       first(15),
       last(15).

split text at space into first last.

CALL FUNCTION 'STRING_UPPER_LOWER_CASE'
  EXPORTING
    DELIMITER       = space
    STRING1         = first
 IMPORTING
   STRING          = first
* EXCEPTIONS
*   NOT_VALID       = 1
*   TOO_LONG        = 2
*   TOO_SMALL       = 3
*   OTHERS          = 4
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'STRING_UPPER_LOWER_CASE'
  EXPORTING
    DELIMITER       = space
    STRING1         = last
 IMPORTING
   STRING          = last
* EXCEPTIONS
*   NOT_VALID       = 1
*   TOO_LONG        = 2
*   TOO_SMALL       = 3
*   OTHERS          = 4
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

clear text.
concatenate first last into text separated by space.

write : / text.

regards

shiba dutta

Read only

0 Likes
1,011

use belwo piece of code and provide any name at selection screen, it wil change it to sentence case (as per ur requirement), just copy n paste this code.



REPORT  ZGILL2                                  .

data: len type i,
      len1 type i.


PARAMETER: name(35).

data: var1(35),
      var2(35).
data count type i.
count = 1.
shift name left deleting leading space.
do 35 times.
if var2 = space and count ne 1.
   exit.
endif.
count = count + 1.
split name+len1 at SPACE into
      var1 var2.
len = strlen( var1 ).
translate var1 to lower case.
translate var1(1) to upper case.
if not len eq 0.
name+len1(len) = var1.
endif.
len1 = len1 + len + 1.
clear: var1, len.
enddo.
write: name.

Read only

S0025444845
Active Participant
0 Likes
1,011

Hi,

in FM

two import parameters are there one is string and one delimeter

YOU are passing only sring not delimeter

do like this

pass ' ' in delimeter

CALL FUNCTION 'STRING_UPPER_LOWER_CASE'

EXPORTING

delimiter = ' '

string1 =

IMPORTING

STRING =

regards,

sudha

rewrd points if useful

  • EXCEPTIONS

  • NOT_VALID = 1

  • TOO_LONG = 2

  • TOO_SMALL = 3

  • OTHERS = 4

Read only

Former Member
0 Likes
1,011

Hi IFF,

You can use the FM <b>SWA_STRING_TO_UPPERCASE</b> when caliing the FM set the parameter PRESERVE_EXISTING_CAPITALS to blank.

Regards

Arun

Read only

Former Member
0 Likes
1,011

HI,

just execute this code and see

parameters:text(20).

DATA:LEN(2) TYPE N.

DATA:NUMB(2) TYPE N,M(2) TYPE N.

NUMB = 0.

LEN = STRLEN( TEXT ).

LEN = LEN - 1.

TRANSLATE TEXT+1(LEN) TO LOWER CASE.

DO LEN TIMES.

IF TEXT+NUMB(1) = SPACE."SEARCHING FOR SPACES AND MAKING NEXT CHAR CAPITAL

M = NUMB + 1.

TRANSLATE TEXT+M(1) TO UPPER CASE.

ENDIF.

NUMB = NUMB + 1.

ENDDO.

write:/ text.

rgds,

bharat

Read only

Former Member
0 Likes
1,011

Have you tried Fucntion Module: SWA_STRING_TO_UPPERCASE.

(be sure to un-check import parameter PRESERVE_EXISTING_CAPITALS.

Here is documentation on the function module:

        • Given a string, translate the first character of each alphapecical

        • substring to upper case. Every non-alphabetical character

        • is interpreted as a separator. Every alphabetical character that

        • immediately follows a separator is converted to upper case. The

        • first character is always converted to upper case.

        • Examples:

        • 'abcde' -> 'Abcde'

        • 'abc_001_def(xyz)->name01attr' -> 'Abc_001_Def->Name01Attr'

Read only

0 Likes
1,011

Hi jay,

forget it - can't be run under newer releases (not unicode-capable).

I'd try:


FORM ucase .
  DATA:
    lv_string TYPE text80 VALUE 'osama bin ladn',
    lt_string TYPE TABLE OF text80 WITH HEADER LINE.
  SPLIT lv_string AT space INTO TABLE lt_string.
  CLEAR lv_string.
  LOOP AT  lt_string.
    TRANSLATE lt_string(1) TO UPPER CASE.
    IF sy-tabix = 1.
* avaoid preceding space in result
      lv_string = lt_string.
    ELSE.
      CONCATENATE lv_string lt_string INTO lv_string SEPARATED BY space.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " ucase

Excuse political incorrectness - it works.