Добрый день!
Появилась необходимость вывести прописью количество в граммах 6 знаков до запятой, 6 после. Должно работать наподобие ФМ SPELL_AMOUNT, только добавлять слова целых, стотысячных и т.д. Поделитесь кто сталкивался пожалуйста.

Заранее благодарен!
в общем сам соорудил (за отсутствие оптимизации прошу не пинать):
PROGRAM z_spell_quant.
DATA
: l_num_whole(13)
, l_num_integr(6)
, l_num_frac(6)
, l_frac_exist(1)
, l_str_integr TYPE string
, l_str_frac TYPE string
, l_str_both TYPE string
.
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-010.
PARAMETERS: p_kol TYPE oiuh_dec15_6 OBLIGATORY DEFAULT '123456.123456'.
SELECTION-SCREEN END OF BLOCK 1.
PERFORM prepare USING p_kol CHANGING l_num_whole l_num_integr l_num_frac.
IF l_num_frac = '' OR l_num_frac = '0'.
l_frac_exist = ''.
ELSE.
l_frac_exist = 'X'.
ENDIF.
PERFORM integral_part USING l_num_integr l_frac_exist CHANGING l_str_integr.
PERFORM fractional_part USING l_num_frac l_frac_exist CHANGING l_str_frac.
CONCATENATE l_str_integr l_str_frac INTO l_str_frac SEPARATED BY space.
WRITE: / 'ИТОГО:', l_str_frac.
"определяем целые
*&---------------------------------------------------------------------*
*& Form prepare
*&---------------------------------------------------------------------*
FORM prepare USING p_kol TYPE oiuh_dec15_6
CHANGING p_whole
p_integer
p_frac.
p_whole = p_kol.
CONDENSE p_whole.
SPLIT p_whole AT '.' INTO: p_integer p_frac.
IF p_frac+1(5) = '00000'.
p_frac = p_frac(1).
ENDIF.
IF p_frac+2(4) = '0000'.
p_frac = p_frac(2).
ENDIF.
IF p_frac+3(3) = '000'.
p_frac = p_frac(3).
ENDIF.
IF p_frac+4(2) = '00'.
p_frac = p_frac(4).
ENDIF.
IF p_frac+5(1) = '0'.
p_frac = p_frac(5).
ENDIF.
ENDFORM. " FORM1
*&---------------------------------------------------------------------*
*& Form INTEGRAL_PART
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_L_STR_DC_1 text
* -->P_L_STR_DC_2 text
* <--P_L_STR_INTEGR text
*----------------------------------------------------------------------*
FORM integral_part USING p_integer
p_frac_exist
CHANGING p_str_integr.
DATA
: l_spell TYPE spell
, i TYPE i
, j TYPE i
.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = p_integer
IMPORTING
in_words = l_spell.
p_str_integr = l_spell-word.
CHECK: p_frac_exist = 'X'.
i = STRLEN( p_str_integr ).
j = i - 3.
IF p_str_integr+j(3) = 'дин'.
CONCATENATE p_str_integr(j) 'дна целая' INTO p_str_integr.
ELSEIF p_str_integr+j(3) = 'два'.
CONCATENATE p_str_integr(j) 'две целых' INTO p_str_integr.
ELSEIF p_str_integr = 'Два'.
CONCATENATE p_str_integr(j) 'Две целых' INTO p_str_integr.
ELSE.
CONCATENATE p_str_integr 'целых' INTO p_str_integr SEPARATED BY space.
ENDIF.
ENDFORM. " INTEGRAL_PART
*&---------------------------------------------------------------------*
*& Form FRACTIONAL_PART
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_L_STR_DC_2 text
* -->P_L_FRAC_EXIST text
* <--P_L_STR_FRAC text
*----------------------------------------------------------------------*
FORM fractional_part USING p_num_frac
p_frac_exist
CHANGING p_str_frac.
DATA
: l_spell TYPE spell
, i TYPE i
, j TYPE i
, k TYPE i
, l_str_razryad_1(14)
, l_str_razryad_2(14)
.
CHECK: p_frac_exist = 'X'.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = p_num_frac
IMPORTING
in_words = l_spell.
p_str_frac = l_spell-word.
TRANSLATE p_str_frac TO LOWER CASE.
i = STRLEN( p_str_frac ).
k = STRLEN( p_num_frac ).
CASE k.
WHEN '1'.
l_str_razryad_1 = 'десятых'.
l_str_razryad_2 = 'десятая'.
WHEN '2'.
l_str_razryad_1 = 'сотых'.
l_str_razryad_2 = 'сотая'.
WHEN '3'.
l_str_razryad_1 = 'тысячных'.
l_str_razryad_2 = 'тысячная'.
WHEN '4'.
l_str_razryad_1 = 'десятитысячных'.
l_str_razryad_2 = 'десятитысячная'.
WHEN '5'.
l_str_razryad_1 = 'стотысячных'.
l_str_razryad_2 = 'стотысячная'.
WHEN '6'.
l_str_razryad_1 = 'миллионных'.
l_str_razryad_2 = 'миллионная'.
ENDCASE.
j = i - 3.
IF p_str_frac+j(3) = 'дин'.
CONCATENATE p_str_frac(j) 'дна' INTO p_str_frac.
CONCATENATE p_str_frac l_str_razryad_2 INTO p_str_frac SEPARATED BY space.
ELSEIF p_str_frac+j(3) = 'два'.
CONCATENATE p_str_frac(j) 'две' INTO p_str_frac.
CONCATENATE p_str_frac l_str_razryad_1 INTO p_str_frac SEPARATED BY space.
ELSE.
CONCATENATE p_str_frac l_str_razryad_1 INTO p_str_frac SEPARATED BY space.
ENDIF.
ENDFORM. " FRACTIONAL_PART