Текущее время: Ср, июл 23 2025, 13:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Динамическая таблица
СообщениеДобавлено: Сб, июн 09 2012, 09:55 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
Добрый день. Никак не могу разобраться с проблемой, надеюсь на вашу помощь.
Суть в следующем: из Экселя получаю список полей в RFC функцию в таблицу FIELDS. Но при попытке создания динамической таблицы с каталогом полей из таблицы FIELDS вылетает в дамп. При этом, если убрать строчки(помечены "@"), структура создается. В чем косяк?

Code:
DATA:
      tmp_str TYPE string,
      tmp_table TYPE TABLE OF string,
      tmp_value TYPE string,

      lv_table   TYPE REF TO DATA,
      lv_line    TYPE REF TO DATA,
      ls_lvc_cat TYPE lvc_s_fcat,
      lt_lvc_cat TYPE lvc_t_fcat,
      tmp_field_name TYPE string.

FIELD-SYMBOLS:
  <fs_table>      TYPE TABLE,
  <fs_line>       TYPE ANY,
  <fs_field>      TYPE ANY.


data : it_details type abap_compdescr_tab,
       wa_details type abap_compdescr.

data : ref_descr type ref to cl_abap_structdescr.

* Get the structure of the table.
ref_descr ?= cl_abap_typedescr=>describe_by_name('Z-ТАБЛИЦА').
it_details[] = ref_descr->components[].

** Создание каталога полей для входящей структуры

LOOP AT FIELDS INTO tmp_field_name.                 " @
  LOOP AT it_details INTO wa_details.

    IF wa_details-name = tmp_field_name.              " @
      CLEAR ls_lvc_cat.
      ls_lvc_cat-fieldname = wa_details-name .
      ls_lvc_cat-datatype = wa_details-type_kind.
      ls_lvc_cat-inttype = wa_details-type_kind.
      ls_lvc_cat-intlen = wa_details-length.
      ls_lvc_cat-decimals = wa_details-decimals.
      APPEND ls_lvc_cat to lt_lvc_cat .
    ENDIF.                                                              " @

  ENDLOOP.

ENDLOOP.                                                             " @


* Создание входящей структуры
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = lt_lvc_cat
  IMPORTING
    ep_table        = lv_table
  EXCEPTIONS
    generate_subpool_dir_full = 1
    OTHERS = 2.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая таблица
СообщениеДобавлено: Сб, июн 09 2012, 10:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
QValD написал(а):
В чем косяк?

Вот в этом:
Code:
DATA:
...
      tmp_field_name TYPE string.
...
LOOP AT FIELDS INTO tmp_field_name.                 " @

Как объявлена таблица FIELDS?
В дампе же все написано ;)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая таблица
СообщениеДобавлено: Сб, июн 09 2012, 10:17 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
Удав написал(а):
QValD написал(а):
В чем косяк?

Вот в этом:
Code:
DATA:
...
      tmp_field_name TYPE string.
...
LOOP AT FIELDS INTO tmp_field_name.                 " @

Как объявлена таблица FIELDS?

Таблица FIELDS объявлена LIKE TAB512

Удав написал(а):
В дампе же все написано ;)

Проблема в том, что это RFC функция и на выходе получаю я только SYSTEM_FAILURE

Да и как FIELDS может повлиять, если вылетает на методе create_dynamic_table, а FIELDS тут только для проверки имени и "упорядочивания" списка полей


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая таблица
СообщениеДобавлено: Сб, июн 09 2012, 10:51 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
Проблема разрешилась(было поле с повторяющимся именем). Спасибо за тычок в нужную сторону


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая таблица
СообщениеДобавлено: Сб, июн 09 2012, 11:12 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
QValD написал(а):
Проблема в том, что это RFC функция и на выходе получаю я только SYSTEM_FAILURE

Это в вызывающей системе. А в вызываемой надо смотреть ST22
Цитата:
Да и как FIELDS может повлиять, если вылетает на методе create_dynamic_table, а FIELDS тут только для проверки имени и "упорядочивания" списка полей

В исходном сообщении есть только про строки, помеченные @. Про то где и как вылетает нет ни слова.
Кстати, а что с регистром передаваемого? Может просто в результате lt_lvc_cat получается пустой?

_________________
"После" - не значит "вследствие"


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

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


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

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


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

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