Текущее время: Вс, июл 27 2025, 09:14

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


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

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


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

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