Текущее время: Чт, июл 24 2025, 02:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 11:55 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 23 2010, 07:26
Сообщения: 18
Пол: Мужской
Друзия как можна через цикл суммировать следущию сумму:

Z_table_sum-TSL_t_sum =
z_table_t_coll-TSL01_t + z_table_t_coll-TSL02_t +
z_table_t_coll-TSL03_t + z_table_t_coll-TSL04_t +
z_table_t_coll-TSL05_t + z_table_t_coll-TSL06_t +
z_table_t_coll-TSL07_t + z_table_t_coll-TSL08_t +
z_table_t_coll-TSL09_t + z_table_t_coll-TSL10_t +
z_table_t_coll-TSL11_t + z_table_t_coll-TSL12_t +
z_table_t_coll-TSL13_t + z_table_t_coll-TSL14_t +
z_table_t_coll-TSL15_t + z_table_t_coll-TSL16_t.

Мне говорили можно спользовать field-symbols:. Но не заню как его спользовать :oops: . Можте помочь?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 12:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Баке написал:
Друзия как можна через цикл суммировать следущию сумму:

Z_table_sum-TSL_t_sum =
z_table_t_coll-TSL01_t + z_table_t_coll-TSL02_t +
z_table_t_coll-TSL03_t + z_table_t_coll-TSL04_t +
z_table_t_coll-TSL05_t + z_table_t_coll-TSL06_t +
z_table_t_coll-TSL07_t + z_table_t_coll-TSL08_t +
z_table_t_coll-TSL09_t + z_table_t_coll-TSL10_t +
z_table_t_coll-TSL11_t + z_table_t_coll-TSL12_t +
z_table_t_coll-TSL13_t + z_table_t_coll-TSL14_t +
z_table_t_coll-TSL15_t + z_table_t_coll-TSL16_t.

Мне говорили можно спользовать field-symbols:. Но не заню как его спользовать :oops: . Можте помочь?


Для таких операций у САП есть специальная конструкция DO ... VARYING ... Посмотрите HELP.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 12:12 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
Баке написал:
Друзия как можна через цикл суммировать следущию сумму:

Z_table_sum-TSL_t_sum =
z_table_t_coll-TSL01_t + z_table_t_coll-TSL02_t +
z_table_t_coll-TSL03_t + z_table_t_coll-TSL04_t +
z_table_t_coll-TSL05_t + z_table_t_coll-TSL06_t +
z_table_t_coll-TSL07_t + z_table_t_coll-TSL08_t +
z_table_t_coll-TSL09_t + z_table_t_coll-TSL10_t +
z_table_t_coll-TSL11_t + z_table_t_coll-TSL12_t +
z_table_t_coll-TSL13_t + z_table_t_coll-TSL14_t +
z_table_t_coll-TSL15_t + z_table_t_coll-TSL16_t.

Мне говорили можно спользовать field-symbols:. Но не заню как его спользовать :oops: . Можте помочь?


конструкция ASSIGN COMPONENT .. OF STRUCTURE ...

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 14:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 23 2010, 07:26
Сообщения: 18
Пол: Мужской
всеравно не смог сделать. Можте показать как его (ASSIGN COMPONENT .. OF STRUCTURE ...) спользавать. Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 14:53 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Зачем мудрить, Parazit же все написал.
Хелпом попробуйте воспользоваться.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 14:55 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Баке написал:
всеравно не смог сделать. Можте показать как его (ASSIGN COMPONENT .. OF STRUCTURE ...) спользавать. Спасибо.


F1 по ASSIGN, там все написано, с примерами. Попробуйте сделать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 15:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Parazit написал:
...
Для таких операций у САП есть специальная конструкция DO ... VARYING ... Посмотрите HELP.


Примерно так:
Code:
Data: w_Sum like Z_table_sum-TSL_t_sum.
DO 16 TIMES
  VARYING w_Sum
  FROM z_table_t_coll-TSL01_t
  NEXT z_table_t_coll-TSL02_t.
 
  Z_table_sum-TSL_t_sum = Z_table_sum-TSL_t_sum + w_Sum.
ENDDO.

При условии, что поля в структуре следуют по порядку от z_table_t_coll-TSL01_t до z_table_t_coll-TSL16_t

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 15:39 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Цитата:
Note
: Instead of the addition VARYING, the statement ASSIGN should be used in the loop with the addition INCREMENT.


_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 17:22 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Я делал так:
Цитата:

FIELD-SYMBOLS: <field> type any.
monat_last = 12
do monat_last times.
concatenate 'T_RPSCO_wa-WLP' monat_curr into field.
ASSIGN (field) to <field>.
ZOCHR_BASE_PRODUCT_BEGIN = ZOCHR_BASE_PRODUCT_BEGIN + <field>.
monat_curr = monat_curr + 1.
enddo.
endif.


Не знаю, насколько это оптимально с точки зрения производительности, но работает

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пт, фев 26 2010, 18:26 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
пример упомянутой конструкции
Code:
field-symbols: <gfs_col> type any.
do 16 times.
   assign component sy-index of structure z_table_t_coll to <gfs_col>.
   
   check <gfs_col> is assigned.

   z_table_sum-tsl_t_sum = z_table_sum-tsl_t_sum + <gfs_col>.

   unassign <gfs_col>.
enddo.

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Сб, фев 27 2010, 16:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Лирическое отступление:
Работая в старых версиях системы всегда использовал для этой задачи ADD. С переходом на новую систему стал использовать как рекомендуется ASSIGN ... INCREMENT. На днях пришлось выполнять оптимизацию одной из задач. Делал тест производительности, и был очень удивлен увидев, что старый вариант с ADD примерно в 10 раз быстрее чем вариант с ASSIGN. Собственно возник вопрос: а что тогда использовать в классах? вызов через ФМ или подпрограммы из пула? Так ведь тогда время на их вызов будет тратится.
Есть какие-нибудь еще мысли?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Сб, фев 27 2010, 16:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Массовый вызов методов намного дольше выполняется, чем вызов такого же количества подпрограмм или ФМ. По крайней мере в R/3 4.6/4.7.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Сб, фев 27 2010, 16:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Удав: в ЕСС 6.0 объекты точно быстрее ФМ. Если верить se30, то и ФМ и подпрограммы медленнее.
Посмотрел версию 4.7: там тоже сап рекомендует использовать их.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пн, мар 01 2010, 06:44 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 23 2010, 07:26
Сообщения: 18
Пол: Мужской
Всем большой спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как можна суммировать?
СообщениеДобавлено: Пн, мар 01 2010, 09:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Кодер написал(а):
Посмотрел версию 4.7: там тоже сап рекомендует использовать их.

SAP много чего рекомендует :)
А на практике в 4.7 пришлось поменять вызов метода на вызов ФМ для экстрактора BW ;)

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

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


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

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


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

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