Текущее время: Пт, июл 18 2025, 14:34

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка при вызове cl_abap_tabledescr=>create_with_keys
СообщениеДобавлено: Пт, сен 05 2014, 05:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Здравствуйте!

Пытаюсь динамически создать таблицу.
При вызове cl_abap_tabledescr=>create() все замечательно. Тип создается.

Но мне нужно, чтобы в таблице было два ключа, поэтому использую cl_abap_tabledescr=>create_with_keys
На нем вылетает ошибка: "No alias is permitted for standard tables and tables with default keys".

Вот не могу понять, где и какие псевдонимы ему не нравятся.

Исходный код:

Code:
data:
          lv_error_text            type string,
          lo_exception             type ref to cx_sy_table_creation,
          lt_linktab_keys          type abap_table_keydescr_tab,
          ls_linktab_key           type abap_table_keydescr,
          lt_outtab_keys           type abap_table_keydescr_tab,
          ls_key_descr             like line of lt_outtab_keys,
          ls_key_element         type abap_table_keycompdescr,
          lr_element_descr       type ref to cl_abap_elemdescr,
          lt_components           type abap_component_tab,
          ls_component            like line of lt_components,
          lr_linktab_line_type    type ref to cl_abap_structdescr,
          lr_outtab_line_type     type ref to cl_abap_structdescr,
          lr_outtab_type_descr  type ref to cl_abap_tabledescr.

    lr_outtab_type_descr  ?= cl_abap_tabledescr=>describe_by_data_ref( p_data_ref = mr_outtab ).
    lt_outtab_keys        = lr_outtab_type_descr->get_keys( ).
    mr_outtab_line_type   ?= lr_outtab_type_descr->get_table_line_type( ).

    get_plain_structure( exporting                                                                             <- Метод, который преобразует .Include в структуру
                                   ir_struct_handle   = mr_outtab_line_type
                         changing
                                   t_components       = lt_components ).

    lr_element_descr ?= cl_abap_elemdescr=>describe_by_name( 'TV_NODEKEY' ).
    ls_component-name = 'NODE_KEY'.
    ls_component-type = lr_element_descr.
    append ls_component to lt_components.

    ls_component-name = 'RELAT_NODE'.
    ls_component-type = lr_element_descr.
    append ls_component to lt_components.

    lr_element_descr ?= cl_abap_elemdescr=>describe_by_name( 'CHAR01' ).
    ls_component-name = 'NODE_TYPE'.
    ls_component-type = lr_element_descr.
    append ls_component to lt_components.

    read table lt_outtab_keys into ls_key_descr with key is_primary = 'X'.

    if sy-subrc = 0 or sy-subrc = 2.

      ls_linktab_key-name         = ITAB_KEY_NAME.
      ls_linktab_key-is_primary   = 'X'.
      ls_linktab_key-access_kind  = 'S'.
      ls_linktab_key-key_kind     = 'U'.

      loop at ls_key_descr-components into ls_key_element.

        append ls_key_element to ls_linktab_key-components.

      endloop.

      append ls_linktab_key to lt_linktab_keys.

    endif.

    lr_linktab_line_type  = cl_abap_structdescr=>create( p_components = lt_components ).

    try.

      mr_linktab_type_hndl  = cl_abap_tabledescr=>create_with_keys( p_line_type = lr_linktab_line_type p_keys = lt_linktab_keys ).

    catch cx_sy_table_creation into lo_exception.

      lv_error_text = lo_exception->get_text( ).

    endtry.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка при вызове cl_abap_tabledescr=>create_with_keys  Тема решена
СообщениеДобавлено: Пт, сен 05 2014, 06:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Проблема решена. Для первичного ключа имя не надо указывать.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB