FUNCTION ztranslate_to_num.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(I_NUM) TYPE ZTRANSLAT
*" REFERENCE(I_GZ) TYPE ZEXH
*" REFERENCE(I_WS) TYPE ZEXH
*" EXPORTING
*" REFERENCE(O_NUM) TYPE ZTRANSLAT
*"----------------------------------------------------------------------
DATA o_char TYPE string.
DATA j_char TYPE string.
DATA:m_char TYPE string,
n_char TYPE string.
DATA: lv_qs TYPE c,
lv_xs TYPE char20,
lv_zs TYPE ztranslat,
lv_jia TYPE ztranslat,
lv_jiac TYPE char20,
lv_jw TYPE i,
lv_dec TYPE ztranslat,
lv_de TYPE char20.
DATA:gv_xs TYPE ztranslat.
DATA l_ws TYPE i.
DATA l_gz TYPE i.
gv_xs = frac( i_num ).
lv_zs = trunc( i_num ).
DATA la TYPE zexh.
DATA lb TYPE zexh.
DATA li TYPE i.
DATA ln TYPE i.
DATA lm TYPE i.
DATA lzs1 TYPE string.
DATA lzs2 TYPE string.
DATA lzs3 TYPE string.
la = i_gz.
lb = i_ws.
CONDENSE la NO-GAPS.
CONDENSE lb NO-GAPS.
l_gz = la.
l_ws = lb.
IF l_ws = -1.
lzs1 = lv_zs.
SPLIT lzs1 AT '.' INTO lzs1 lzs2.
CONDENSE lzs1.
li = strlen( lzs1 ).
IF li = 1.
"lv_dec = lv_zs.
ELSE.
ln = li - 1.
lzs2 = lzs1+0(ln).
lzs3 = lzs1+ln(1).
lm = lzs3.
IF lm > la.
lm = 10.
ELSE.
lm = 0.
ENDIF.
lv_zs = lzs2 * 10 + lm.
ENDIF.
CLEAR:lv_dec.
ELSEIF l_ws = -2.
lzs1 = lv_zs.
SPLIT lzs1 AT '.' INTO lzs1 lzs2.
CONDENSE lzs1.
li = strlen( lzs1 ).
IF li <= 2.
"lv_dec = lv_zs.
ELSE.
ln = li - 2.
lzs2 = lzs1+0(ln).
lzs3 = lzs1+ln(1).
lm = lzs3.
IF lm > la.
lm = 100.
ELSE.
lm = 0.
ENDIF.
lv_zs = lzs2 * 100 + lm.
ENDIF.
CLEAR:lv_dec.
ELSE.
* IF l_gz = 0 AND l_ws = 0.
*
* j_char = i_num.
* SPLIT j_char AT '.' INTO m_char n_char.
* CONDENSE m_char NO-GAPS.
* o_num = m_char.
* ELSE.
WRITE gv_xs TO lv_xs NO-GROUPING.
CONDENSE lv_xs.
lv_jw = l_ws + 1.
l_ws = l_ws + 2.
lv_qs = lv_xs+l_ws(1).
lv_de = lv_xs+0(l_ws).
REPLACE ALL OCCURRENCES OF ',' IN lv_de WITH '.'.
lv_dec = lv_de.
lv_jiac = lv_jia.
CONDENSE lv_jiac.
IF lv_jw = '1'.
lv_jw = '0'.
ENDIF.
lv_jiac+lv_jw(1) = '1'.
REPLACE ALL OCCURRENCES OF ',' IN lv_jiac WITH '.'.
lv_jia = lv_jiac.
IF lv_qs > l_gz.
lv_dec = lv_dec + lv_jia.
ENDIF.
ENDIF.
o_num = lv_zs + lv_dec.
* CONDENSE o_num NO-GAPS.
* SHIFT o_num RIGHT DELETING TRAILING '0' .
* o_char = o_num.
* CONDENSE o_char NO-GAPS.
* SHIFT o_char RIGHT DELETING TRAILING '0' .
* o_num = o_char.
* ENDIF.
* SHIFT o_num RIGHT DELETING TRAILING '.' .
ENDFUNCTION.