Текущее время: Пн, июн 10 2024, 20:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Выборка данных из таблицы  Тема решена
СообщениеДобавлено: Пн, ноя 16 2020, 18:47 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Коллеги, подскажите пожалуйста, как в данный код добавить выборку с условиями, куда внедрить код с условиями, что если таблица с полем пустая, то необходимо все равно идти дальше с выборкой, если есть записи, то выводить, у меня сейчас получается, что отчет только по данному признаку смотрит остальные вообще не выбираются.
Я добавил в отчет новые поля для выборки
Таблица TPRIT поля которые мне нужны были BEZEI, LPRIO
Code:
*       Selection start from Inquiry
*       Выборка начинается с Запроса
*----------------------------------------------------------------------*
FORM select_from_inquiry.
  DATA:
    ls_out LIKE LINE OF gt_out.
  FIELD-SYMBOLS:
    <ls_out> LIKE LINE OF gt_out.
* Select inquiry data:
  SELECT t1~vbeln  AS inq_vbeln
         t1~posnr  AS inq_posnr
         t2~vkorg  AS inq_vkorg
         t2~vtweg  AS inq_vtweg
         t2~spart  AS inq_spart
         t2~vkgrp  AS inq_vkgrp
         t2~vkbur  AS inq_vkbur
         t2~kunnr  AS inq_kunnr
         t3~name1  AS inq_name1
         t1~matnr  AS inq_matnr
         t1~arktx  AS inq_arktx
         t1~kwmeng AS inq_kwmeng
         t1~vrkme  AS inq_vrkme
         t1~netpr  AS inq_netpr
         t1~waerk  AS inq_waerk
         t4~kursk  AS inq_kursk
         t2~audat  AS inq_audat
         t2~zuonr  AS inq_zuonr
         t2~bstnk  AS inq_bstnk
         t2~objnr  AS inq_objnr_nod
         t1~abgru  AS inq_abgru
         t4~zterm  AS inq_zterm
         t1~LPRIO  AS inq_LPRIO " Приоритет поставки
         t0~BEZEI  AS inq_BEZEI " Имя приоритета поставки
    FROM vbap AS t1
    JOIN vbak AS t2
       ON t2~vbeln = t1~vbeln
    JOIN kna1 AS t3
       ON t3~kunnr = t2~kunnr
    JOIN vbkd AS t4
       ON t4~vbeln = t1~vbeln
    INNER JOIN TPRIT AS t0 " Имя приоритета поставки
       ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки
      AND t0~LPRIO = t1~LPRIO " Приоритет поставки
        INTO CORRESPONDING FIELDS OF TABLE gt_out
    WHERE t2~auart IN gt_auart
      AND t1~vbeln IN s_inq_no
      AND t1~matnr IN s_inq_mt
      AND t2~kunnr IN s_inq_kn
      AND t2~bstnk IN s_inq_bs
      AND t2~audat IN s_inq_au
      AND t2~vkorg IN s_vkorg
      AND t2~vtweg IN s_vtweg
      AND t2~spart IN s_spart
      AND t2~vkgrp IN s_vkgrp
      AND t2~vkbur IN s_vkbur
      " AND t1~LPRIO IN s_inq_lp " Приоритет поставки
      AND t0~BEZEI IN s_inq_be " Имя приоритета поставки
      AND t0~spras = sy-langu.  " Имя приоритета поставки
  CHECK NOT gt_out IS INITIAL.

  TYPES:
    BEGIN OF lty_sales,
      vbelv       TYPE vbfa-vbelv,
      posnv       TYPE vbfa-posnv,
      so_vbeln    TYPE vbfa-vbeln,
      so_posnr    TYPE vbfa-posnn,
      so_kunnr    TYPE vbak-kunnr,
      so_name1    TYPE kna1-name1,
      so_matnr    TYPE vbap-matnr,
      so_arktx    TYPE vbap-arktx,
      so_kwmeng   TYPE vbap-kwmeng,
      so_vrkme    TYPE vbap-vrkme,
      so_netpr    TYPE vbap-netpr,
      so_waerk    TYPE vbap-waerk,
      so_kursk    TYPE vbkd-kursk,
      so_audat    TYPE vbak-audat,
      so_bstnk    TYPE vbak-bstnk,
      so_prod_grp TYPE vbak-zzprod_grp_code,
      so_bstkd    TYPE bstkd,
      so_LPRIO    TYPE vbap-LPRIO, " Приоритет поставки
      so_BEZEI    TYPE TPRIT-BEZEI, " Имя приоритета поставки
    END   OF lty_sales.
  DATA:
    lt_sales TYPE SORTED TABLE OF lty_sales
      WITH NON-UNIQUE KEY vbelv posnv.
  FIELD-SYMBOLS:
    <ls_sales> LIKE LINE OF lt_sales.
* Select Sales order data:
  SELECT t1~vbelv
         t1~posnv
         t1~vbeln  AS so_vbeln
         t1~posnn  AS so_posnr
         t2~kunnr  AS so_kunnr
         t4~name1  AS so_name1
         t3~matnr  AS so_matnr
         t3~arktx  AS so_arktx
         t3~kwmeng AS so_kwmeng
         t3~vrkme  AS so_vrkme
         t3~netpr  AS so_netpr
         t3~waerk  AS so_waerk
         t5~kursk  AS so_kursk
         t2~audat  AS so_audat
         t2~bstnk  AS so_bstnk
         t2~zzprod_grp_code AS so_prod_grp
         t5~bstkd  AS so_bstkd
         t3~LPRIO  AS so_LPRIO " Приоритет поставки
         t0~BEZEI  AS so_BEZEI " Имя приоритета поставки
    FROM vbfa AS t1
    JOIN vbak AS t2
       ON t2~vbeln = t1~vbeln
    JOIN vbap AS t3
       ON t3~vbeln = t1~vbeln
      AND t3~posnr = t1~posnn
    JOIN kna1 AS t4
       ON t4~kunnr = t2~kunnr
    JOIN vbkd AS t5
       ON t5~vbeln = t2~vbeln
    JOIN TPRIT AS t0 " Имя приоритета поставки
       ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки
    INTO TABLE lt_sales
    FOR ALL ENTRIES IN gt_out
    WHERE t1~vbelv = gt_out-inq_vbeln
      AND t1~posnv = gt_out-inq_posnr
      AND t3~LPRIO = gt_out-inq_LPRIO " Приоритет поставки
      AND t1~vbtyp_n EQ gc_c
      AND t1~rfmng > 0.

  TYPES:
    BEGIN OF lty_delivery,
      vbelv         TYPE vbfa-vbelv,
      posnv         TYPE vbfa-posnv,
      dlv_vbeln     TYPE vbfa-vbeln,
      dlv_posnr     TYPE vbfa-posnn,
      dlv_lgort     TYPE lips-lgort,
      dlv_matnr     TYPE lips-matnr,
      dlv_arktx     TYPE lips-arktx,
      dlv_lfimg     TYPE lips-lfimg,
      dlv_vrkme     TYPE lips-vrkme,
      dlv_kodat     TYPE likp-kodat,
      dlv_wadat_ist TYPE likp-wadat_ist,
    END   OF lty_delivery.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 07:42 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
LEFT JOIN ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 09:00 
Специалист
Специалист

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 09:22 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
если ставлю LEFT JOIN то ошибка возникает в селекте
The elements in the "SELECT LIST" list must be separated using commas.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 12:16 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
Таблицу, в которой может не быть записей, нужно присоединять через OUTER JOIN.
Если в примере в такой таблицей является TPRIT, то ее следует присоединять через LEFT OUTER JOIN.

PS. Вот это условие что значит?
ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 13:37 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Ну это название приоритета, оно тоже находится в данной таблице.
Я поставил
Code:
    LEFT OUTER JOIN TPRIT AS t0 " Имя приоритета поставки
       "ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки
       ON t0~LPRIO = t1~LPRIO " Приоритет поставки


Но программа ругается все равно, пишет, что The elements in the "SELECT LIST" list must be separated using commas.
Что нужно сделать?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Вт, ноя 17 2020, 13:46 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Просит разделить Элементы в списке «SELECT LIST» запятыми, хотя раньше их не было.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Ср, ноя 18 2020, 03:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
riki11 написал:
Ну это название приоритета, оно тоже находится в данной таблице.
Я поставил
Code:
    LEFT OUTER JOIN TPRIT AS t0 " Имя приоритета поставки
       "ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки
       ON t0~LPRIO = t1~LPRIO " Приоритет поставки


Но программа ругается все равно, пишет, что The elements in the "SELECT LIST" list must be separated using commas.
Что нужно сделать?

Это САПа намекает, что в старом синтаксисе нельзя использовать дополнительные условия во WHERE для таблиц с LEFT JOIN:
Code:
      AND t0~BEZEI IN s_inq_be " Имя приоритета поставки
      AND t0~spras = sy-langu.  " Имя приоритета поставки

Зато в новом синтаксисе можно, поэтому нужно оформить запрос в соответствии с ним - имена полей через запятую, а имена переменных с префиксом @, INTO перенести в конец.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Ср, ноя 18 2020, 06:53 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
riki11 написал:
Я поставил
Code:
    LEFT OUTER JOIN TPRIT AS t0 " Имя приоритета поставки
       "ON t0~BEZEI = t0~BEZEI " Имя приоритета поставки
       ON t0~LPRIO = t1~LPRIO " Приоритет поставки


В этом месте нужно прописать связь двух таблиц. Какой смысл в прописывании условия по полю t0~BEZEI на "самого себя", оно всегда равно truе. Возможно, там где-то должно стоять t?
Просто, если поле BEZEI действительно часть соединений таблиц, то в таком виде вы получите декартово соединение по этому полю (все со всеми).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка данных из таблицы
СообщениеДобавлено: Ср, ноя 18 2020, 07:25 
Специалист
Специалист

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

Code:
    LEFT JOIN TPRIT AS t0 " Имя приоритета поставки
       ON t0~LPRIO = t1~LPRIO " Приоритет поставки
      AND t0~spras = sy-langu  " Имя приоритета поставки

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


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

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


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

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


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

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