Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE37 - Построитель функций => Тема начата: Uukrul от Июль 10, 2008, 02:47:36 pm

Название: Функции преобразования для СПП-элементов
Отправлено: Uukrul от Июль 10, 2008, 02:47:36 pm
Традиционно СПП-элемент, непонятным образом фактически имеет два ключа, первое это текстовое представление (естественный ключ) с и именем POSID, доменом PS_POSID и длиной CHAR-24 и второе представление это уникальный код (синтетический ключ) с именем PSPNR, доменом PS_POSNR и длиной NUMC-8. Причем, второе представление является первичным ключем, а на первое построен уникальный индекс. Можно конечно обойтись и самому чтением таблички PRPS - СПП-элемент (элемент СтруктурПлана проекта) - ОсновнДанные, для преобразования первого во второе и наоборот, ну а можно воспользоваться двумя функциональными модулями:

Код: You are not allowed to view links. Register or Login
DATA: l_pspnr LIKE prps-pspnr,
      l_posid LIKE prps-posid.

l_posid = 'MY_ELEMENT'.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
     EXPORTING
          input     = l_posid
     IMPORTING
          output    = l_pspnr
     EXCEPTIONS
          not_found = 1
          OTHERS    = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

l_pspnr = '1'.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
     EXPORTING
          input  = l_pspnr
     IMPORTING
          output = l_posid.
В чем польза эти ФМ в отличии от просто чтения таблицы PRPS. Ну скажем так, не надо предварительной вызвать функциональный модуль CONVERSION_EXIT_ALPHA_INPUT для параметров перед использованием в SELECT, так как они это умеют делать сами. В  общем виде заворачиваем это дело в макрос и  успешно начинаем использовать.