Текущее время: Вс, май 05 2024, 13:27

Часовой пояс: 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
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
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 часа


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

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


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

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