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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 05:38 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Parazit написал:
Сергей Королев написал:
Показательно, кстати, что во многих случаях в саповских текстах не используется AT NEW, AT END, там, где, казалось бы, можно было их использовать.
Пользуюсь иногда таким приемом, как создание вторичного индекса к внутренней таблице:
Code:
Data:
* сама таблица
  Begin of it_TAB occurs 0,
    Key1,
    Key2,
    Data,
  End of it_TAB .

*  вторичный индекс
  Begin of it_IDX occurs 0,
    Key2,
    tabix type sy-tabix,
  End of it_IDX.

.......

  Loop at it_TAB.
    Move-corresponding: it_TAB to it_IDX.
    it_IDX-tabix = sy-tabix.
    Append it_IDX.
  EndLoop.

  Sort it_TAB by Key1.
  Sort it_IDX by Key2.

*  цикл по таблице it_TAB с сортировкой и группировкой по ключу Key2
  Loop at it_IDX.
    Read table it_TAB index it_IDX-tabix.

    At new Key2.
.....

а как же в этом случае использовать оператор sum , или еще в третью таблицу collect-ом все насобирывать :?:

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 05:46 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Ich Will написал:
Я встречал талантов которые писали
1. отчет одним куском начиная с loop и..... пару тысяч строк... endloop.
2. тоже самое тока в ФМ
3. тоже самое тока в отдельном include
4. программа в несколько тысяч строк написана одними макросами(!)
5. перформы по 500 строк ....
6. программа начинается с CASE идет .... 500 строк... ENDCASE
и.т.д.....

Жуть...!


А такое видели:
select
куча операторов
select
куча операторов
select
вывод не экран
endselect.
куча операторов
endselect.
endselect.

а такое:
select * from bseg
where kunnr = 'anything'. - работает годы

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 08:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
artyom написал:
а как же в этом случае использовать оператор sum , или еще в третью таблицу collect-ом все насобирывать :?:
Хы, вот именно вчера такую фигню и пришлось делать:
Code:
* сама таблица
  Begin of it_TAB occurs 0,
    Key1,
    Key2,
    Data,
    Summ type BSEG-DMBTR,
  End of it_TAB .

* вторичный индекс 
  Begin of it_IDX occurs 0,
    Key2,
    tabix type sy-tabix,
    Summ type BSEG-DMBTR,
  End of it_IDX.
.......
  Loop at it_IDX.
    Read table it_TAB index it_IDX-tabix.

    At new Key2.
      Sum.
      it_TAB-Summ = it_IDX-Summ.
.....

Благо, что всего одна сумма нужна была...
Понятно, что все это изврат, ибо сам САП изврат! ;) Могли бы уж хотя бы вторичные индексы к внутренним таблицам сделать, блин...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 10:53 
Гость
artyom написал:
Раз уж всех не оставил равнодушными мой топик про at new ... и т.д., не могу оставаться в стороне.
Дело в том, что SAP сделал эти операторы единственно правильным методом. Вообще кто-нибудь может сказать хоть одно неудобство, кроме того что таблица должна иметь определенныю структуру.

Я заметил два больших неудобства:
1 - кривизна при совместном использовании "loop at ... where ..." и "at ..."
2 - при выполнении "at new field1" недоступны значения полей таблицы, описанных после поля field1


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:06 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Anonymous написал(а):
artyom написал:
Раз уж всех не оставил равнодушными мой топик про at new ... и т.д., не могу оставаться в стороне.
Дело в том, что SAP сделал эти операторы единственно правильным методом. Вообще кто-нибудь может сказать хоть одно неудобство, кроме того что таблица должна иметь определенныю структуру.

Я заметил два больших неудобства:
1 - кривизна при совместном использовании "loop at ... where ..." и "at ..."
2 - при выполнении "at new field1" недоступны значения полей таблицы, описанных после поля field1


1. Да такое есть, но тут надо понимать, что есть вещи которые могут конфликтовать друг с дугом.

2. А вот это наоборот большой плюс

Например

Материал Количество склад

at end of материал
write "итого по", материал, склад.


я бы такого прграммиста сразу бы уволил, но вот добрый сап взял да прикрыл его :) склад не выведется.
А иначе бы вывелся последний....

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
artyom написал:
Anonymous написал(а):
Я заметил два больших неудобства:
1 - кривизна при совместном использовании "loop at ... where ..." и "at ..."
2 - при выполнении "at new field1" недоступны значения полей таблицы, описанных после поля field1


1. Да такое есть, но тут надо понимать, что есть вещи которые могут конфликтовать друг с дугом.
Зачем понимать то, что можно было бы и не понимать? В любом случае кривизны не должно быть, либо должно корректно работать, либо такая конструкция вообще должна быть недопустима на уровне синтаксиса.
artyom написал:
2. А вот это наоборот большой плюс

Например

Материал Количество склад

at end of материал
write "итого по", материал, склад.

я бы такого прграммиста сразу бы уволил, но вот добрый сап взял да прикрыл его :) склад не выведется.
А иначе бы вывелся последний....
А я бы уволил программиста САП, который это придумал. Я бы еще понял звездочки после выполнения агрегации Sum (аналогия с group by в Select), но просто At new не его "собачье дело". Таких "добрых дядей" мы в 17-м штыками... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:24 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
artyom написал:
2. А вот это наоборот большой плюс

Например

Материал Количество склад

at end of материал
write "итого по", материал, склад.

я бы такого прграммиста сразу бы уволил, но вот добрый сап взял да прикрыл его :) склад не выведется.
А иначе бы вывелся последний....
А я бы уволил программиста САП, который это придумал. Я бы еще понял звездочки после выполнения агрегации Sum (аналогия с group by в Select), но просто At new не его "собачье дело". Таких "добрых дядей" мы в 17-м штыками... ;)[/quote]

Про At new тот же пример, но при этом выведется первый склад, уволю :twisted:

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:36 
Гость
И чего спорить. Операторы IF и тд. есть во всех языках.
Если ими нормально пользоваться, то появляется некий универсализм, понимания кода и разработки прог.
А всякие типа AT NEW.. AT END - это фитчи опред. языка. Как быть при переходе на java или другой язык?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:42 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Anonymous написал(а):
И чего спорить. Операторы IF и тд. есть во всех языках.
Если ими нормально пользоваться, то появляется некий универсализм, понимания кода и разработки прог.
А всякие типа AT NEW.. AT END - это фитчи опред. языка. Как быть при переходе на java или другой язык?


в Яве или другом языке будут свои фичи, так их тоже не использовать? Нужно знать особенности используемого языка, и если вам это удобно - применять их. А то получится 'на любом языке он мог писать как на фортране'

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
artyom написал:
Про At new тот же пример, но при этом выведется первый склад, уволю :twisted:
Это дело хозяйское, надо вывести - выведем, не надо - не выведем. Кривизны тут никакой нет, поэтому не САПовское это дело.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 11:57 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Anonymous написал(а):
2 - при выполнении "at new field1" недоступны значения полей таблицы, описанных после поля field1


Что мешает сделать переприсвоение перед оператором at new?:

Code:
data: begin of i_tab occurs 0,
         a,
         b,
         c,
      end of i_tab.

...
loop at i_tab.
   wa_tab = i_tab.
   at new a.
*    Здесь в wa_tab все необх.значения (без всяких звездочек :))
      ...
   endat.

endloop.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 12:28 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
А можно ещё использовать конструкцию LOOP AT ... ASSIGNING ... . Тогда никаких звёздочек не может быть по определению. Однако в этом случае надо быть внимательным, чтобы случайно не изменить содержимое таблицы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 14 2005, 14:05 
Гость
Я был инициатором развития темы про at ...
))))

Цитата:

Цитата:
Вы бы посмотрели какие я выдумывал конструкции, когда не знал операторов

at end of...
at new ...
и т.д.


Не такие уж они и "хорошие" эти операторы.
Помню наткнулся на такую ситуацию с at new ... , которую отлавливал долгенько. Правда вот забыл в чем там дело было, но для себя решил польоваться ими поаккуратнее.



Смотрю тема то горячая )))
Из всего прочитанного понял, что нужно внимательнее пользоваться инструментами, которые используешь.
Раз сделали фитчю со звездочками значит не с просто.

Просто нужно быть внимательнее ))))))))


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: как не надо
СообщениеДобавлено: Пт, дек 05 2008, 12:28 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Code:
if  ( sy-tcode+0(10) = 'Z_BUYPRICE' and sy-cprog+0(10) = 'Z_BUYPRICE' )
or ( sy-tcode = 'SE38'              and sy-cprog+0(11) = 'Z_BUYPRICE2' )
or ( sy-tcode = 'SEU_INT'           and sy-cprog+0(11) = 'Z_BUYPRICE2' ) " SE80
or ( sy-tcode+0(4) = 'Z_IZ'         and sy-cprog+0(4) = 'Z_IZ' )
or ( sy-tcode = 'SE38'              and sy-cprog+0(4) = 'Z_IZ' )
or ( sy-tcode = 'SEU_INT'           and sy-cprog+0(4) = 'Z_IZ' )         " SE80
or ( sy-tcode+0(9) = 'Z_REPREIS'    and sy-cprog+0(9) = 'Z_REPREIS' )
or ( sy-tcode = 'SE38'              and sy-cprog+0(9) = 'Z_REPREIS' )
or ( sy-tcode = 'SEU_INT'           and sy-cprog+0(9) = 'Z_REPREIS' )    " SE80
.
...


Ну вот как такое может в голову придти!
Ух, зла не хватает. Убивал бы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как не надо
СообщениеДобавлено: Пт, дек 05 2008, 12:32 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Rokhay написал:
Code:
...


Ну вот как такое может в голову придти!
Ух, зла не хватает. Убивал бы.
Подсмотрели где то в стандарте.

_________________
"После" - не значит "вследствие"


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

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


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

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


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

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