Текущее время: Чт, май 15 2025, 21:53

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: create_dynamic_table стыдно, но все же...
СообщениеДобавлено: Пн, сен 26 2005, 13:06 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 04 2004, 12:01
Сообщения: 68
Откуда: 4.6С
бодрого времени суток всем!

перечитал форум, счастие было близко, но...
создаю динамически внутреннюю таблицу через
cl_alv_table_create=>create_dynamic_table, каталог полей беру из словарной таблицы и т.д. и т.п. как было описано неоднократно на форуме. Но если в таблице содержится поле типа I или F, то таблица получается выравненной и в результате несовпадение длины словарной таблицы и динамически созданной на величину выравнивания, что приводит к дампу при селектах или попытке модифаить словарную таблицу. Подскажите, кто сталкивался, это как-нить лечиться или прийдется ждать 4.7?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 27 2005, 09:17 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 04 2004, 12:01
Сообщения: 68
Откуда: 4.6С
нашел на http://sap.ittoolbox.com/code/d.asp?a=s&d=3038

Note: tables with alignment are not supported (example: MARA)

пришлося через присвоение типов сделать и, соответсвенно, в цикле модифаить записи словарной таблицы.

Code:
     DATA ref_table TYPE REF TO data.
     DATA ref_wa    TYPE REF TO data.
     DATA l_fieldname(5) VALUE '......'.

     FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
     FIELD-SYMBOLS <wa>    TYPE ANY.
     FIELD-SYMBOLS <wa2>   TYPE ANY.
     FIELD-SYMBOLS <field> TYPE ANY.

     CALL METHOD create_table
      EXPORTING tabname = tabname
      IMPORTING table   = ref_table.

     ASSIGN  ref_table->* TO <table>.
     CREATE DATA ref_wa TYPE (tabname).
     ASSIGN ref_wa->* TO <wa2>.

     SELECT * FROM (tabname)
      INTO CORRESPONDING FIELDS OF TABLE <table>.
       WHERE ....

     IF ( sy-subrc EQ 0 ).
       LOOP AT <table> ASSIGNING <wa>.
         ASSIGN COMPONENT l_fieldname OF STRUCTURE <wa> TO <field>.
         <field> = .....
         <wa2> = <wa>.                         
         MODIFY (tabname) FROM <wa2>.
       ENDLOOP.
     ENDIF.


модифаить напрямую
Code:
MODIFY (tabname) FROM TABLE <table>.

и из <wa>
Code:
MODIFY (tabname) FROM <wa>.

отказывается...вываливается, самка сабаки, в дамп. говорит, что несоппадают длины таблиц.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 27 2005, 13:14 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
имхо в приведенном примере можно обойтись
CREATE DATA ref_table TYPE TABLE OF (tabname).

cl_alv_table_create=>create_dynamic_table нужен когда таблицы нет в словаре и у него есть довольно серьеэное ограничение - в программе можно создавать не более 36 таблиц.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 27 2005, 13:28 
Гость
Boger написал(а):
имхо в приведенном примере можно обойтись
CREATE DATA ref_table TYPE TABLE OF (tabname).

cl_alv_table_create=>create_dynamic_table нужен когда таблицы нет в словаре и у него есть довольно серьеэное ограничение - в программе можно создавать не более 36 таблиц.


версия 4.6,
а конструкция CREATE DATA ref_table TYPE TABLE OF (tabname). работает только начиная с версии 4.7.

36 таблиц мне не надоть, с 3-мя бы разобраться ;)


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 27 2005, 18:11 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
если повторные вызовы идут, 36 не так уж и много ;)


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

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


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

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


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

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