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

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


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

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


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

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