You are on page 1of 3

REPORT Z_CHANGE_QTY_TO_DECMALNOTATION. types: begin of t_tab, sample_value(30) type c, end of t_tab.

types: begin of t_number, text(30) type c, end of t_number. data: i_tab type standard table of t_tab, wa_tab type t_tab. data: g_dcpfm type usr01-dcpfm. data: g_whole(30) type c, g_decimal(30) type c, g_strlen type i, g_ndiv type i, g_nmod type i, g_delimiter type c, g_separator type c, name(30) type c. initialization. clear: g_dcpfm, g_whole, g_decimal, g_strlen, g_ndiv, g_nmod, g_delimiter, g_separator. selection-screen begin of block b1. *parameter: p_value(30) type c. select-options: s_value for name no intervals obligatory. selection-screen end of block b1. *At selection-screen Start-of-selection. select single dcpfm into g_dcpfm from usr01 where bname = sy-uname. if sy-subrc ne 0. g_dcpfm = space. "by default endif.

loop at s_value. split s_value-low at '.' into g_whole g_decimal. g_strlen = strlen( g_whole ). g_ndiv = g_strlen div 3. g_nmod = g_strlen mod 3. case p_dcpfm. when space. g_delimiter = '.'. g_separator = ','. perform change_quantity using g_delimiter

g_separator changing s_value-low. concatenate s_value-low g_decimal into s_value-low separated by g_separator. when 'X'. g_delimiter = ','. g_separator = '.'. perform change_quantity using g_delimiter g_separator changing s_value-low. concatenate s_value-low g_decimal into s_value-low separated by g_separator. when 'Y'. g_delimiter = space. g_separator = ','. perform change_quantity using g_delimiter g_separator changing s_value-low. concatenate s_value-low g_decimal into s_value-low separated by g_separator. when others. endcase. modify s_value. "from wa_tab. endloop. end-of-selection. WRITE: SY-UNAME. WRITE: G_DCPFM. loop at s_value. "into wa_tab. write: / s_value-low. endloop. form change_quantity using p_delimiter type c p_separator type c changing p_sample_value. data: li_number type standard table of t_number, lwa_number type t_number, l_flag type c. data: l_temp type i, l_previous type i, l_previous_text(30) type c. refresh: li_number. clear: lwa_number, l_previous, l_temp, l_flag, l_previous_text. * initially *

clear: lwa_number, l_temp. if not g_nmod is initial. lwa_number-text = g_whole(g_nmod). append lwa_number to li_number. l_temp = g_nmod. endif. clear: l_previous. do g_ndiv times. lwa_number-text = g_whole+l_temp(3). l_temp = l_previous + 3. l_previous = l_temp. append lwa_number to li_number. clear: lwa_number. enddo. clear: l_flag, l_previous_text. loop at li_number into lwa_number. if l_flag is initial. concatenate l_previous_text lwa_number-text into g_whole separated by p_delimiter. replace first occurrence of p_delimiter in g_whole with space. condense g_whole no-gaps. l_previous_text = g_whole. l_flag = 'X'. else. concatenate l_previous_text lwa_number-text into g_whole separated by p_delimiter. l_previous_text = g_whole. endif. p_sample_value = g_whole. endloop. endform.

You might also like