Автор Тема: CONVERSION_EXIT_ALPHA_INPUT  (Прочитано 9171 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
CONVERSION_EXIT_ALPHA_INPUT
« : Июль 04, 2008, 03:05:51 pm »
Ну очень полезная функция о которой очень часто начинающие абаперы или не знают или забывают, а уж внутренний код у данного ФМ какой, мощный, но главное полезный:
Код: You are not allowed to view links. Register or Login
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 и система выведет вам к примеру первый документ, однако если вы решите выбрать этот документ в запросе вида:
Код: You are not allowed to view links. Register or Login
SELECT * FROM MKPF  WHERE mblnr = '1000000000'...то получите sy-subrc = 4, типа такого документа нет в базе, а потому что нужно было выбирать документ по номеру '0100000000', т.е. добавить ведущий ноль. Так вот, чтобы не заниматься геморроем с определением сколько там впереди нулей и надо их добавлять или не надо и существует функция CONVERSION_EXIT_ALPHA_INPUT.  Вызов очень прост, плюс входящий параметр может быть любого типа и отличаться от выходного, например после проводки документа используя CALL TRANSACTION 'XXX', часто номер проведенного документа записывается в одном из   полей sy-msgv*, правильным способом будет его чтение используя следующую конструкцию
Код: You are not allowed to view links. Register or Login
DATA: l_mblnr like mseg-mblnr.

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

В принципе, для упрощения вызова данного ФМ, рекомендуется делать макрос:
Код: You are not allowed to view links. Register or Login
DEFINE ext_to_int.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
       exporting
            input  = &1
       importing
            output = &2.
END-OF-DEFINITION.

И затем по коду делать вызовы вида:
Код: You are not allowed to view links. Register or Login
ext_to_int: lt_screen_5-kostl goodsmvt_item-costcenter,
            lt_screen_5-konto goodsmvt_item-gl_account.