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

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


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

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


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

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