Текущее время: Вс, июл 27 2025, 19:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Помогите связать 2 селекта
СообщениеДобавлено: Вт, янв 13 2009, 22:51 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, май 11 2007, 20:07
Сообщения: 138
Пол: Женский
Коллеги, помогите консультанту связать 2 селекта!
Необходимо отобрать список материалов однолитровой продукции, имеющих действующие варанты изготовления, и прнадлежащим заводу, указанному на экране выбора как параметр P_Plant.

Я написала 2 селекта. Первый вроде ничего, а во втором не знаю как привязаться к первому.

Испольуем 2 таблицы:
• MKAL – Production Versions of Material
• MARA – General Material Data

1.Query from table MKAL:

Select MATNR from MKAL
where MKAL-WERKS=P_Plant
and MKAL-BDATU>P_Date
and MKAL-ADATU<P_Date
and MKAL-MKSP=’’
and MKAL-MDV01=’PP-BOTL*’

2.Query from table MARA:

Select MAKTX from MARA
where MARA-MATNR=the results of previous select query (Query from table MKAL)
and MARA-MATNR=’*1*L*’


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Вт, янв 13 2009, 23:06 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, янв 07 2008, 20:51
Сообщения: 156
Пол: Мужской
Извините, неохота после трудового дня еще вьезжать в ваш код, но приведу пример со своей проги, думаю разберетесь :)

Code:
*до этого******** SELECT-OPTIONS: so_matnr for mara-matnr. " кажись так

DATA: gt_matnr LIKE mara OCCURS 100 WITH HEADER LINE.


START-OF-SELECTION.

   SELECT * APPENDING TABLE gt_matnr FROM mara
     WHERE matnr IN so_matnr AND mtart = 'ROH'.

  REFRESH so_matnr.
  CLEAR so_matnr.

  LOOP AT gt_matnr.
    so_matnr-sign   = 'I'.
    so_matnr-option = 'EQ'.
    so_matnr-low    = gt_matnr-matnr.
    APPEND so_matnr.
  ENDLOOP.


далее можно так:

Code:
  SELECT DISTINCT matnr
    APPENDING CORRESPONDING FIELDS OF TABLE gt_matnr
    FROM mara
    WHERE matnr IN so_matnr.



или попробуйте FOR ALL ENTRIES IN

извините влом сочинять .... типа так
Code:
SELECT * FROM SPFLI
  INTO TABLE T_SPFLI
  WHERE CITYFROM = 'FRANKFURT'
    AND CITYTO = 'NEW YORK'.
SELECT * FROM SFLIGHT AS F
    INTO SFLIGHT_WA
    FOR ALL ENTRIES IN T_SPFLI
    WHERE SEATSOCC < F~SEATSMAX
      AND CARRID = T_SPFLI-CARRID
      AND CONNID = T_SPFLI-CONNID
      AND FLDATE BETWEEN '19990101' AND '19990331'.
ENDSELECT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Вт, янв 13 2009, 23:40 
Ассистент
Ассистент

Зарегистрирован:
Вт, янв 10 2006, 15:12
Сообщения: 32
Откуда: Белгород
Пол: Мужской
Join пробовали?

Получится что-то вроде:
Code:
Select L~MATNR a~maktx
from MKAL as L
into corresponding fields of table <имя_вашей_внутренней_таблички>
inner join MARA as A on A~matnr = L~matnr
where L~WERKS=P_Plant
and L~BDATU>P_Date
and L~ADATU<P_Date
and L~MKSP=’’
and L~MDV01=’PP-BOTL*’
and L~MATNR=’*1*L*’.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Вт, янв 13 2009, 23:49 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
Code:
select mara~matnr
  from mkal
  join mara ON mkal~matnr = mara~matnr
  into table (lv_table)
  where mkal~werks = p_plant
      and mkal~BDATU > P_Date
      and MKAL~ADATU < P_Date
      and MKAL~MKSP = ’’
      and MKAL~MDV01 LIKE ’PP-BOTL%’
      and mara~matnr LIKE '%1%L%'.


А вообще плохой запрос получается. Долго работать будет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Ср, янв 14 2009, 06:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, май 11 2007, 20:07
Сообщения: 138
Пол: Женский
dian написал:
Join пробовали?

Получится что-то вроде:
Code:
Select L~MATNR a~maktx
from MKAL as L
into corresponding fields of table <имя_вашей_внутренней_таблички>
inner join MARA as A on A~matnr = L~matnr
where L~WERKS=P_Plant
and L~BDATU>P_Date
and L~ADATU<P_Date
and L~MKSP=’’
and L~MDV01=’PP-BOTL*’
and L~MATNR=’*1*L*’.


что такое "имя внутренней таблички"?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Ср, янв 14 2009, 08:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 09:33
Сообщения: 300
Откуда: Москва
Пол: Женский
это имя таблицы - куда все выбранные данные сложить, а потом вы с ней в программе можете что хотите делать: "хоть варить, хоть жарить" :lol:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Ср, янв 14 2009, 08:45 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
SQL в АБАБЕ немного отличается от SQL распространненых СУБД. Несущественно, но отличатся. Внутрення таблица - это таблица создающаяся на момент выполнения программы. Все данные, которыми вы оперируете в течении программы сохрняются либо в переменных либо, если вы работаете с табличными данными (как в этом случае), во внутренних таблицах.
Делая выборку из таблицы ABAB-словаря (прозрачной таблицы), результат должен сохраниться во внутреннюю таблицу


1.Query from table MKAL:

Select MATNR from MKAL into corresponding fields of table in_mkal
where MKAL-WERKS=P_Plant
and MKAL-BDATU>P_Date
and MKAL-ADATU<P_Date
and MKAL-MKSP=’’
and MKAL-MDV01=’PP-BOTL*’


2.Query from table MARA:

Select MAKTX from MARA INTO CORRESPONDING FIELDS OF TABLE in_mara
where MARA-MATNR=in_mkal-matnr
and MARA-MATNR=’*1*L*’

Вот так вот вы и свяжете два запроса.
Хотя у меня естьподозрения что запросы вы пишете не в ABAB'е ))

_________________
Если долго биться головой об стену, то вскоре в стене появится небольшое отверстие ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Помогите связать 2 селекта
СообщениеДобавлено: Ср, янв 14 2009, 09:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
MAKTX не в MARA, а в MAKT.

Запросы, как уже писали, лучше объединить, но для MAKT лучше использовать left join.

=’PP-BOTL*’ следует писать как LIKE 'PP-BOTL%'.

Вместо дефиса нужно использовать тильду: MKAL~MDV01.

В MKAL-BDATU>P_Date, наверное, нужно >=.

Ограничение MARA-MATNR=’*1*L*’ можно вставить в первый селект к MKAL: MKAL~MATNR like '%1%L%'.

По скорости, наверное, всё будет хорошо, т.к. будет использован индекс 1 по полю MDV01.


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

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


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

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


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

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