CONVERSION_EXIT_ALPHA_INPUT

Автор Uukrul, Липень 04, 2008, 03:05:51 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Uukrul

Ну очень полезная функция о которой очень часто начинающие абаперы или не знают или забывают, а уж внутренний код у данного ФМ какой, мощный, но главное полезный:

function conversion_exit_alpha_input.
*"----------------------------------------------------------------------
*"Lokale Schnittstelle:
*"       IMPORTING
*"             INPUT
*"       EXPORTING
*"             OUTPUT
*"----------------------------------------------------------------------
                                                                       
  call 'CONVERSION_EXIT_ALPHA_INPUT'  id 'INPUT'  field input
                                      id 'OUTPUT' field output.
                                                                       
endfunction.

Суть данной функции в том, что она производит конвертацию внешнего представления значения во внутреннее. В общем виде это выглядит следующим образом, допустим у вас есть номер документа ММ, стандартная длина такого номера 10 символов. При настройке интервалов например, нумерация была выбрана как 0100000000 по 01999999999, при вводе документов и просмотре вы можете указать 1000000000 и система выведет вам к примеру первый документ, однако если вы решите выбрать этот документ в запросе вида:
SELECT * FROM MKPF  WHERE mblnr = '1000000000'...
то получите sy-subrc = 4, типа такого документа нет в базе, а потому что нужно было выбирать документ по номеру '0100000000', т.е. добавить ведущий ноль. Так вот, чтобы не заниматься геморроем с определением сколько там впереди нулей и надо их добавлять или не надо и существует функция CONVERSION_EXIT_ALPHA_INPUT.  Вызов очень прост, плюс входящий параметр может быть любого типа и отличаться от выходного, например после проводки документа используя CALL TRANSACTION 'XXX', часто номер проведенного документа записывается в одном из   полей sy-msgv*, правильным способом будет его чтение используя следующую конструкцию

DATA: l_mblnr like mseg-mblnr.

            call function 'CONVERSION_EXIT_ALPHA_INPUT'
                 exporting
                      input  = sy-msgv1
                 importing
                      output = l_mblnr.


В принципе, для упрощения вызова данного ФМ, рекомендуется делать макрос:

DEFINE ext_to_int.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
       exporting
            input  = &1
       importing
            output = &2.
END-OF-DEFINITION.


И затем по коду делать вызовы вида:

ext_to_int: lt_screen_5-kostl goodsmvt_item-costcenter,
            lt_screen_5-konto goodsmvt_item-gl_account.