Текущее время: Чт, мар 28 2024, 22:11

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Ср, сен 01 2021, 09:17 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Добрый день.

Дорогие абаперы, подскажите, пожалуйста, как объединить строки по полю MARD-LABST.
Вот мой код (см.ниже), но информация сейчас выходит на каждую строку по каждому складу, как объединить строки по полю MARD-LABST, отсекая склады, только общий LABST. Не использовал MBEW-LBKUM, так как задача была использовать только конкретные склады, их штук 10, остальные не нужны, их там порядка 30 (кладовки, временные и т.д).

Code:
  SELECT  eban~bnfpo, eban~txz01,
          eban~matnr, eban~menge,  eban~meins,
          eban~flief, eban~idnlf,  eban~lfdat,
          eban~lgort, t001l~lgobe, eban~preis,
          eban~waers, eban~werks, MBEW~LBKUM,
          mard~LABST
    INTO CORRESPONDING FIELDS OF TABLE @mt_outtab
    FROM eban
    LEFT OUTER JOIN eina ON eina~infnr = eban~infnr
    LEFT OUTER JOIN t001l ON t001l~werks EQ eban~werks AND
                               t001l~lgort EQ eban~lgort
    LEFT OUTER JOIN MBEW  ON MBEW~matnr EQ eban~matnr AND
                               MBEW~BWKEY EQ eban~werks
    LEFT OUTER JOIN mard  ON mard~matnr EQ eban~matnr AND
                               mard~werks EQ eban~werks

  WHERE eban~banfn = @mv_banfn
      AND eban~loekz <> 'X'
      AND mard~LABST <> ' '
      AND mard~lgort <> 'КR84'
      AND mard~lgort <> 'RC50'
      AND mard~lgort <> 'RC51'.

  IF sy-subrc <> 0.
    MESSAGE e044(1e) RAISING data_not_found.
  ENDIF.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Ср, сен 01 2021, 10:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Непонятно, что значит "объединить"?
так-то - берете и группируете по LABST (group by) с суммированием нужных полей. Если при этом нужно учесть как-то символьные поля, то тогда: сперва выборка из таблы без group by, потом в цикле объединяете так, как вам нужно

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Ср, сен 01 2021, 11:30 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Объединить в смысле строки с разными LGORT по MATNR в одну по общему LABST, чтобы он запас брал в одну строку с количеством по всем складам, а он сейчас мне выводит запасы по строчкам с разбивкой по складам.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Ср, сен 01 2021, 11:52 
Специалист
Специалист

Зарегистрирован:
Вт, дек 30 2008, 18:10
Сообщения: 171
Пол: Мужской
В предыдущем сообщении тебе ответили: group by matnr, labst.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Ср, сен 01 2021, 12:22 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Добавил group, но выходит ошибка
Имя столбца "MATNR" двойственное ABAP/4 Open SQL statement.
Code:
  WHERE eban~banfn = @mv_banfn
      AND eban~loekz <> 'X'
      AND mard~LABST <> ' '
      AND mard~lgort <> 'КR84'
      AND mard~lgort <> 'RC50'
      AND mard~lgort <> 'RC51'
group by matnr, labst.

Что не так сделал?

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST  Тема решена
СообщениеДобавлено: Ср, сен 01 2021, 14:39 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1578
Откуда: Москва, Минск
Пол: Мужской
1) В запросе укажи SUM( mard~labst ) вместо mard~labst

2) В GROUP BY перечисли все выбранные поля:

eban~bnfpo, eban~txz01,
eban~matnr, eban~menge, eban~meins,
eban~flief, eban~idnlf, eban~lfdat,
eban~lgort, t001l~lgobe, eban~preis,
eban~waers, eban~werks, MBEW~LBKUM

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Чт, сен 02 2021, 14:17 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
DED_MOROZ все сделал вроде как написано, но программа выдает все равно ошибку
Функции агрегации без псевдонима не имеют соответствующих полей. without alias names do not have a corresponding field.
Code:
  SELECT eban~bnfpo, eban~txz01,
          eban~matnr, eban~menge,  eban~meins,
          eban~flief, eban~idnlf,  eban~lfdat,
          eban~lgort, t001l~lgobe, eban~preis,
          eban~waers, eban~werks, MBEW~LBKUM, sum( mard~labst )
      INTO CORRESPONDING FIELDS OF TABLE @mt_outtab
    FROM eban
    LEFT OUTER JOIN eina ON eina~infnr = eban~infnr
    LEFT OUTER JOIN t001l ON t001l~werks EQ eban~werks AND
                               t001l~lgort EQ eban~lgort
    LEFT OUTER JOIN MBEW  ON MBEW~matnr EQ eban~matnr AND
                               MBEW~BWKEY EQ eban~werks
    LEFT OUTER JOIN mard  ON mard~matnr EQ eban~matnr AND
                               mard~werks EQ eban~werks
  WHERE eban~banfn = @mv_banfn
      AND eban~loekz <> 'X'
      AND mard~LABST <> ' '
      AND mard~lgort <> 'КR84'
      AND mard~lgort <> 'RC50'
      AND mard~lgort <> 'RC51'
      group by eban~bnfpo, eban~txz01,
eban~matnr, eban~menge, eban~meins,
eban~flief, eban~idnlf, eban~lfdat,
eban~lgort, t001l~lgobe, eban~preis,
eban~waers, eban~werks, mard~labst, MBEW~LBKUM.
  IF sy-subrc <> 0.
    MESSAGE e044(1e) RAISING data_not_found.
  ENDIF.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Чт, сен 02 2021, 14:27 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Все получилось, спасибо большое, только добавил sum( mard~labst ) AS labst и ошибка ушла, только теперь позиции заявки в разброс, видимо нужно сортировку поставить

Code:
  SELECT eban~bnfpo, eban~txz01,
          eban~matnr, eban~menge,  eban~meins,
          eban~flief, eban~idnlf,  eban~lfdat,
          eban~lgort, t001l~lgobe, eban~preis,
          eban~waers, eban~werks, MBEW~LBKUM, sum( mard~labst ) AS labst
      INTO CORRESPONDING FIELDS OF TABLE @mt_outtab
    FROM eban
    LEFT OUTER JOIN eina ON eina~infnr = eban~infnr
    LEFT OUTER JOIN t001l ON t001l~werks EQ eban~werks AND
                               t001l~lgort EQ eban~lgort
    LEFT OUTER JOIN MBEW  ON MBEW~matnr EQ eban~matnr AND
                               MBEW~BWKEY EQ eban~werks
    LEFT OUTER JOIN mard  ON mard~matnr EQ eban~matnr AND
                               mard~werks EQ eban~werks
  WHERE eban~banfn = @mv_banfn
      AND eban~loekz <> 'X'
      AND mard~LABST <> ' '
      AND mard~lgort <> 'КR84'
      AND mard~lgort <> 'RC50'
      AND mard~lgort <> 'RC51'
      group by eban~bnfpo, eban~txz01,
          eban~matnr, eban~menge,  eban~meins,
          eban~flief, eban~idnlf,  eban~lfdat,
          eban~lgort, t001l~lgobe, eban~preis,
          eban~waers, eban~werks, MBEW~LBKUM.
  IF sy-subrc <> 0.
    MESSAGE e044(1e) RAISING data_not_found.
  ENDIF.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Чт, сен 23 2021, 23:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
А зачем вы left join везде указываете? :?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объединить строки по полю MARD-LABST
СообщениеДобавлено: Пн, сен 27 2021, 10:11 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Я не большой спец в ABAP и уже в готовую программу врезался (пришлось), поэтому почему так сделали, не могу сказать. :?

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

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


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

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


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

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