Текущее время: Сб, июл 26 2025, 04:25

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: передача динамической переменной в форму, для обозначения поля в структуре.
СообщениеДобавлено: Чт, окт 20 2011, 13:17 
Ассистент
Ассистент

Зарегистрирован:
Пт, дек 19 2008, 06:58
Сообщения: 34
Откуда: Уфа
Пол: Женский
Здравствуйте, обитатели форума.
Помогите, пожалуйста.
Хочу написать форму, которую буду использовать для заполнения однотипных полей таблицы. В блоке USING хочу указать поле структурки, которой будет присвоено вычисленное значение. Вот краткий код, (красным выделено то, как я хочу, но не получается. если вместо красного ставить четкое значение код отрабатывает корректно) может так будет понятней:

PERFORM sum USING '0000000433' 'gs_data-compens'.
PERFORM sum USING '0000000435' 'gs_data-effect'.
..........................................................
..........................................................
FORM sum USING i_atinn value(_i_field) TYPE fieldname.

SELECT werka poper SUM( atflv ) AS l_count
INTO CORRESPONDING FIELDS OF TABLE gt_c_data
FROM ausp AS a INNER JOIN zrp_info_s_table AS t ON a~objek = t~objek
WHERE atinn = i_atinn AND
poper IN s_poper AND
werka IN s_bukrs
GROUP BY werka poper. "получаем маленькую табличку с нужными результатами

FIELD-SYMBOLS <fs_count> TYPE g_data_count_type.

LOOP AT gt_c_data ASSIGNING <fs_count>. " перекладываем в поле <compens> общей, большой таблички, по уже имеющимся строкам с БЕ и периодами
CLEAR gs_data.
MOVE-CORRESPONDING <fs_count> TO gs_data.
(_i_field) = <fs_count>-l_count. " тут я хочу динамически назначать поле структуры gs_data, т.к. при разных значениях i_atinn будут заполняться разные поля этой структуры.
COLLECT gs_data INTO gt_data.
ENDLOOP.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: передача динамической переменной в форму, для обозначения поля в структуре.
СообщениеДобавлено: Чт, окт 20 2011, 14:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, фев 15 2011, 15:02
Сообщения: 122
Можно передавать как строку с именем поля, а внутри формы уже делать ASSIGN к нужному полю структуры

_________________
Поздравляю тебя, Шарик, ты - балбес!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: передача динамической переменной в форму, для обозначения поля в структуре.
СообщениеДобавлено: Чт, окт 20 2011, 14:17 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
panna, вы не совсем верно представляете себе механизм передачи и адресации данных.

В вашем примере вы присваиваете значение локальной переменной внутри формы. 8051core дал вам правильный совет. Передавайте в форму структуру gs_data и пользуйтесь оператором ASSIGN для адресации нужного поля по имени _i_field.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: передача динамической переменной в форму, для обозначения поля в структуре.
СообщениеДобавлено: Чт, окт 20 2011, 14:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Обычно это делается так:
Code:
ASSIGN (_i_field) TO <FS>.
IF sy-subrc = 0.
  <FS> =  <fs_count>-l_count.
ENDIF.


Но в общем случае имеест смысл задуматься - может имеет смысл связать признак классификации с именем поля (например назвать поле по имени признака):
таблица lt_char_map
ATINN ATNAM
0000000433 COMPENS
0000000435 EFFECT
Code:
SELECT a~atnam t~werka t~poper SUM( a~atflv )
INTO CORRESPONDING FIELDS OF TABLE gt_c_data
FROM ausp AS a
INNER JOIN zrp_info_s_table AS t ON a~objek = t~objek
FOR ALL ENTRIES IN lt_char_map
WHERE a~atinn = lt_char_map~atinn AND
      t~poper IN s_poper AND
     t~werka IN s_bukrs
GROUP BY a~atnam t~werka t~poper. "получаем маленькую табличку с нужными результатами

LOOP AT gt_c_data ASSIGNING <fs_count>. " перекладываем в поле <compens> общей, большой таблички, по уже имеющимся строкам с БЕ и периодами
  CLEAR gs_data.
  MOVE-CORRESPONDING <fs_count> TO gs_data.
  ASSIGN COMPONENT <fs_count>-ATNAM OF STRUCTURE gs_data TO <FS>.
  IF sy-subrc = 0.
    <FS> =  <fs_count>-l_count.
  ENDIF.
  COLLECT gs_data INTO gt_data.
ENDLOOP.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: передача динамической переменной в форму, для обозначения поля в структуре.
СообщениеДобавлено: Пт, окт 21 2011, 08:57 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Для вашего примера думаю лучше использовать макрос.


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

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


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

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


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

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