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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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