Текущее время: Пн, авг 04 2025, 15:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: FIELD-SYMBOLS. Динамическое описание данных.
СообщениеДобавлено: Вт, мар 18 2008, 09:34 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Здравствуйте!

Помогите, плз! Никак не получается вникнуть в эти FIELD-SYMBOLS.

Привожу пример моей программы.

Code:
DATA: BEGIN OF my_tab OCCURS 0,
      id TYPE i,
      name(50),
      END OF my_tab.


PERFORM myform CHANGING my_tab[].

FORM myform CHANGING rows TYPE table.

  FIELD-SYMBOLS: <fn>.
  data fname(60).

  fname = 'rows-id'.
  CONDENSE fname.
  ASSIGN (fname) TO <fn>.
  <fn> = '1'.

  fname = 'rows-name'.
  CONDENSE fname.
  ASSIGN (fname) TO <fn>.
  <fn> = 'qwerty'.

  append rows.
ENDFORM.


Надо, чтобы в форме myform заполнялась переданная ей туда табличка. В этом примере для уменьшения кода я использовал статическое присвоение полей (fname = 'rows-id'). В оригинальной программе алгоритм другой (использую sydes).

Ошибка возникает при проверке кода. Он пишет, что нельзя применить append к табличке rows у которой нет header line.
Как объявить wa нужной мне структуры и использовать его для заполнения таблицы?


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Ошибок много.
Во-первых, так таблицу в подпрограмму не передают.
Во-вторых, имена переменных должны быть заглавными буквами.
В-третьих, масло-масляное, т.е. данный assign ничем не отличается от прямого обращения к полям (rows-id) и запрещён, т.к. таблица не типизирована. Т.е. нужно использовать assign component.

Вам нужно передавать именно не типизированные таблицы?
Может лучше так:
Code:
TYPES: BEGIN OF t_my_tab,
      id TYPE i,
      name(50),
      END OF t_my_tab,
      tt_my_tab type table of t_my_tab
.
data: my_tab type tt_my_tab.

PERFORM myform CHANGING my_tab[].

FORM myform CHANGING rows TYPE tt_my_tab.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 18 2008, 09:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Form будет в include и передаваться будут таблицы заранее неизвестных типов ...


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Полтора года назад Вам уже всё объяснили:
http://sapboard.ru/forum/viewtopic.php?t=17508


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 18 2008, 10:14 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Тут описано как прочесть данные из передаваемой таблицы ...
А как ее заполнить?!


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Damager написал(а):
А как ее заполнить?!

Когда используется конструкция loop ... assiging <fs>, то <fs> ссылается непосредственно на строку таблицы, а не на её копию, как в случае с header line. Поэтому можно прямо в филд-символ присваивать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 18 2008, 10:41 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Damager написал(а):
Тут описано как прочесть данные из передаваемой таблицы ...
А как ее заполнить?!

Внимательно изучите последнее сообщение по указанной ранее ссылке - там есть всё что нужно.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 18 2008, 10:43 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Но таблица у меня пустая. Т.е. до loop надо еще строки пустые вставить ...
Например так ... insert initial line into table rows.

далее

Code:
loop at rows into <fs>.
  assign component 1 OF STRUCTURE <fs> TO <data>.
  <data> = 1.
  assign component 2 OF STRUCTURE <fs> TO <data>.
  <data> = 'name'.
endloop.


Так не срабатывает ... Через отладку видно, что заполняется и <data> и <fs>, но таблица не меняется ... :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 18 2008, 10:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Вместо into поставил assigning. Вроде как заработало ...
Спасибо за помощь! Буду дальше копаться ...


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

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


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

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


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

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