2011 Mar 25 11:01 PM
Hi experts,
I have a work are which I need to convert all its contents to UPPER CASE.
is there a way i can do that without using TRANSLATE for every field in that work area??/
Thanks,
Abdul.
2011 Mar 26 9:27 AM
Like this
data CONTAINER(1000) type c.
"convert to char string
call method CL_ABAP_CONTAINER_UTILITIES =>FILL_CONTAINER_C
exporting IM_VALUE = "your_struct
importing EX_CONTAINER = CONTAINER.
"translate it all
translate container to upper case.
"convert back to structure
call method cl_abap_container_utilities=>read_container_c
exporting IM_CONTAINER = CONTAINER
importing EX_VALUE = "your_struct.
Regards
Marcin
Hi experts,
I have a work are which I need to convert all its contents to UPPER CASE.
is there a way i can do that without using TRANSLATE for every field in that work area??/
Thanks,
Abdul.
2011 Mar 26 8:24 AM
Hi Buddy,
I tried for only one field and please do yourself for remaining fields .
TYPES :BEGIN OF ls_tab1,
field TYPE char200,
END OF ls_tab1.
DATA it_tab1 TYPE STANDARD TABLE OF ls_tab1 INITIAL SIZE 0.
DATA lt_tab1 LIKE LINE OF it_tab1.
lt_tab1-field = 'This is my first program to convert lower case to upper case without using transalate syntax.....'.
APPEND lt_tab1 TO it_tab1.
READ TABLE it_tab1 INTO lt_tab1 INDEX 1
.
IF sy-subrc EQ 0.
WRITE lt_tab1-field COLOR 3.
ENDIF.
DATA :lv_counter TYPE i,
uccp TYPE i,
int TYPE i.
LOOP AT it_tab1 INTO lt_tab1 .
lv_counter = STRLEN( lt_tab1-field ).
WHILE int NE lv_counter.
IF lt_tab1+int(1) EQ 'a' OR lt_tab1+int(1) EQ 'b' OR lt_tab1+int(1) EQ 'c' OR lt_tab1+int(1) EQ 'd'
OR lt_tab1+int(1) EQ 'e' OR lt_tab1+int(1) EQ 'f' OR lt_tab1+int(1) EQ 'g' OR lt_tab1+int(1) EQ 'h'
OR lt_tab1+int(1) EQ 'i' OR lt_tab1+int(1) EQ 'j' OR lt_tab1+int(1) EQ'k' OR lt_tab1+int(1) EQ'l' OR lt_tab1+int(1) EQ 'm'
OR lt_tab1+int(1) EQ'n' OR lt_tab1+int(1) EQ 'o' OR lt_tab1+int(1) EQ 'p' OR lt_tab1+int(1) EQ 'q'
OR lt_tab1+int(1) EQ 'r' OR lt_tab1+int(1) EQ 's' OR lt_tab1+int(1) EQ 't' OR lt_tab1+int(1) EQ 'u'
OR lt_tab1+int(1) EQ 'v' OR lt_tab1+int(1) EQ 'w' OR lt_tab1+int(1) EQ 'x' OR lt_tab1+int(1) EQ 'y'
OR lt_tab1+int(1) EQ'z'.
CALL METHOD cl_abap_conv_out_ce=>uccpi
EXPORTING
char = lt_tab1+int(1)
RECEIVING
uccp = uccp.
IF uccp BETWEEN 97 AND 122.
uccp = ( uccp - 32 ) .
* TRY.
CALL METHOD cl_abap_conv_in_ce=>uccpi
EXPORTING
uccp = uccp
RECEIVING
char = lt_tab1-field+int(1).
ENDIF.
ENDIF.
int = int + 1 .
ENDWHILE.
MODIFY it_tab1 FROM lt_tab1 .
ENDLOOP.
write: 'After converting to upper case'.
READ TABLE it_tab1 INTO lt_tab1 INDEX 1
.
IF sy-subrc EQ 0.
WRITE lt_tab1-field COLOR 3.
ENDIF.
Please let me know further any issues .
Thanks
Surender
2011 Mar 26 9:27 AM
Like this
data CONTAINER(1000) type c.
"convert to char string
call method CL_ABAP_CONTAINER_UTILITIES =>FILL_CONTAINER_C
exporting IM_VALUE = "your_struct
importing EX_CONTAINER = CONTAINER.
"translate it all
translate container to upper case.
"convert back to structure
call method cl_abap_container_utilities=>read_container_c
exporting IM_CONTAINER = CONTAINER
importing EX_VALUE = "your_struct.
Regards
Marcin
2011 Mar 28 11:42 AM
Hi,
Work area itself is group of characters. So you dont have to take each and every field seperately to convert into upper case. Rather you can just specify like below. This will convert data in all fields of work area to upper case.
translate wa_data to upper case.
2011 Mar 28 2:36 PM
No ...It will not .
@OP- As Marcin said use that class/method if you are in unicode environment.
2011 Mar 29 5:48 PM
Thanks Marcin, your method worked with no issues and thanks everyoen for the quick respond.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |