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

Is there anyway to make this code simpler?

Former Member
0 Likes
954

st_char-char1 = iv_string+0(1).
st_char-char2 = iv_string+1(1).
st_char-char3 = iv_string+2(1).
st_char-char4 = iv_string+3(1).
st_char-char5 = iv_string+4(1).
st_char-char6 = iv_string+5(1).
st_char-char7 = iv_string+6(1).
st_char-char8 = iv_string+7(1).
st_char-char9 = iv_string+8(1).
st_char-char10 = iv_string+9(1).
st_char-char11 = iv_string+10(1).
st_char-char12 = iv_string+11(1).

I am think about using field symbols, but not tried a few ways, still not working.

Thanks in advance.

Fay

Edited by: Fay Wang on Oct 10, 2011 2:17 AM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
756

Follwoing could be a sample code for 3 fields:

TYPES: BEGIN OF lx_char,

char1 TYPE char1,

char2 TYPE char1,

Char3 TYPE char1,

END OF lx_char.

DATA: lv_counter TYPE int2,

lv_pos TYPE int2,

lv_count_char TYPE char2,

lv_field TYPE char5,

iv_string TYPE string,

st_char TYPE lx_char.

FIELD-SYMBOLS : <FS> TYPE ANY.

lv_counter = 0.

lv_pos = 0.

DO.

lv_counter = lv_counter + 1.

MOVE lv_counter TO lv_count_char.

CONCATENATE 'CHAR' lv_count_char INTO lv_field.

ASSIGN COMPONENT lv_field of STRUCTURE st_char TO <fs>.

IF sy-subrc EQ 0.

<fs> = iv_string+lv_pos(1).

lv_pos = lv_pos + 1.

ENDIF.

IF lv_counter GE 3.

EXIT.

ENDIF.

ENDDO.


st_char-char1 = iv_string+0(1).
st_char-char2 = iv_string+1(1).
st_char-char3 = iv_string+2(1).
st_char-char4 = iv_string+3(1).
st_char-char5 = iv_string+4(1).
st_char-char6 = iv_string+5(1).
st_char-char7 = iv_string+6(1).
st_char-char8 = iv_string+7(1).
st_char-char9 = iv_string+8(1).
st_char-char10 = iv_string+9(1).
st_char-char11 = iv_string+10(1).
st_char-char12 = iv_string+11(1).

I am think about using field symbols, but not tried a few ways, still not working.

Thanks in advance.

Fay

Edited by: Fay Wang on Oct 10, 2011 2:17 AM

4 REPLIES 4
Read only

Former Member
0 Likes
757

Follwoing could be a sample code for 3 fields:

TYPES: BEGIN OF lx_char,

char1 TYPE char1,

char2 TYPE char1,

Char3 TYPE char1,

END OF lx_char.

DATA: lv_counter TYPE int2,

lv_pos TYPE int2,

lv_count_char TYPE char2,

lv_field TYPE char5,

iv_string TYPE string,

st_char TYPE lx_char.

FIELD-SYMBOLS : <FS> TYPE ANY.

lv_counter = 0.

lv_pos = 0.

DO.

lv_counter = lv_counter + 1.

MOVE lv_counter TO lv_count_char.

CONCATENATE 'CHAR' lv_count_char INTO lv_field.

ASSIGN COMPONENT lv_field of STRUCTURE st_char TO <fs>.

IF sy-subrc EQ 0.

<fs> = iv_string+lv_pos(1).

lv_pos = lv_pos + 1.

ENDIF.

IF lv_counter GE 3.

EXIT.

ENDIF.

ENDDO.

Read only

Former Member
0 Likes
756

Thanks so much for your help, it works!

Read only

Former Member
0 Likes
756

Fay,

Field Symbols will work as explained, but if your logic/data is so much uniform, then simplest solution I can think of is as below:


data: BEGIN OF st_char,
char1 TYPE char1,
char2 TYPE char1,
Char3 TYPE char1,
END OF st_char.

data: iv_string TYPE string.

st_char = iv_string.        "this will automatically assign each single character in string to each field

Regards,

Diwakar

Read only

Former Member
0 Likes
756

Thanks very much! It works!

I did consider this before, but didn't work for some reason.