Текущее время: Пт, июл 25 2025, 05:11

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


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

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


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

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