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

Decimal Notation Program as Per User Setting

Embed Size (px)

Citation preview

Page 1: Decimal Notation Program as Per User Setting

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-screenStart-of-selection.

select single dcpfminto g_dcpfmfrom usr01where bname = sy-uname.if sy-subrc ne 0. g_dcpfm = space. "by defaultendif.

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

Page 2: Decimal Notation Program as Per User Setting

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 *

Page 3: Decimal Notation Program as Per User Setting

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.