Автор Тема: Проблема с AT NEW ... END AT.  (Прочитано 10576 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Проблема с AT NEW ... END AT.
« : Июнь 30, 2011, 09:08:39 am »
Здравствуйте...

Не могу понять почему код между "AT NEW ... " и "ENDAT" отрабатывает несмотря на то, что значение поля не менялось.
Код примерно следующий:
Код: You are not allowed to view links. Register or Login
...

SORT valtab BY ZWBGOSNUM ASCENDING.

LOOP AT valtab.
...
AT NEW ZWBGOSNUM.
...
ENDAT.
ENDLOOP.

Поле не уникальное и не ключевое. Наверное, тут могут быть какие-то нюансы. Подскажите, пожалуйста, в чём может быть дело.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проблема с AT NEW ... END AT.
« Ответ #1 : Июнь 30, 2011, 09:52:40 pm »
You are not allowed to view links. Register or Login
Поле не уникальное и не ключевое. Наверное, тут могут быть какие-то нюансы. Подскажите, пожалуйста, в чём может быть дело.
Если я правильно помню, то сортировка должна быть выполнена по этому полю перед циклом LOOP AT.... ENDLOOP.

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #2 : Июль 01, 2011, 05:26:19 am »
Я так и делаю... В отладчике посмотрел содержимое внутренней таблицы - всё корректно отсортировано. Тем не менее, "AT NEW" отрабатывает на каждой строчке.  :(

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проблема с AT NEW ... END AT.
« Ответ #3 : Июль 01, 2011, 08:57:56 am »
You are not allowed to view links. Register or Login
Я так и делаю... В отладчике посмотрел содержимое внутренней таблицы - всё корректно отсортировано. Тем не менее, "AT NEW" отрабатывает на каждой строчке.  :(
Давай пример кода и содержимое таблицы перед входом в цикл.. пяток записей, если это возможно.

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #4 : Июль 01, 2011, 09:52:44 am »
В общем, проблема решилась тем, что отказался от использования этого поля (гос. номер) и использовал внешний ключ (id ТС) который поместил в начало структуры, которую использую для вывода. Видимо, необходимо, чтобы поле стояло на первом месте.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #5 : Июль 01, 2011, 10:06:50 am »
You are not allowed to view links. Register or Login
В общем, проблема решилась тем, что отказался от использования этого поля (гос. номер) и использовал внешний ключ (id ТС) который поместил в начало структуры, которую использую для вывода. Видимо, необходимо, чтобы поле стояло на первом месте.
Похоже на то, вот цитата из HELP по F1:
Цитировать
Control levels are defined by the beginning or end of a group of lines with the same content in the component compi (where i = 1, 2, and so on) and in the components to the left of compi. The control breaks take place when the content of the component compi or another component to the left of compi changes.
Если хотя бы один из компонентов "левее" названного (включая его самого) меняется, то срабатывает...

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #6 : Июль 01, 2011, 10:37:28 am »
Спасибо... Буду приучать себя внимательно читать help  :)

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #7 : Июль 01, 2011, 11:09:01 am »
Если не секрет, какое действие выполняете на данном уровне контроля (AT NEW ... ENDAT)? Агрегируете суммы по ZWBGOSNUM?

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с AT NEW ... END AT.
« Ответ #8 : Июль 04, 2011, 05:17:39 am »
Да... я сначала считал прмежуточные суммы в переменную и выводил в exel-форму. Теперь делаю немного по-другому, по количеству строк определяю адрес последней ячейки и вывожу '=sum(R[1]C:R[' rcnt ']C)'.

Код: You are not allowed to view links. Register or Login
AT NEW zwbsrn. "zwbgosnum.

      copycell 8 1 8 13 i 1.
.....

      crnt = i.
      i = i + 1.

ENDAT.

.....

    i = i + 1.

AT END OF zwbsrn.
      rcnt = i - crnt - 1.

      CONCATENATE '=sum(R[1]C:R[' rcnt ']C)' INTO sumrcrg.
      CONCATENATE '=sum(R[1]C:R[' rcnt ']C)' INTO sumfuel.
      CONCATENATE '=sum(R[1]C:R[' rcnt ']C)' INTO sumnorm.
      CONCATENATE '=sum(R[1]C:R[' rcnt ']C)' INTO sumfact.

      putcell crnt 4 sumrcrg.
      putcell crnt 8 sumfuel.
      putcell crnt 9 sumnorm.
      putcell crnt 10 sumfact.

ENDAT.
« Последнее редактирование: Июль 04, 2011, 05:22:06 am от knopix »