Текущее время: Ср, апр 24 2024, 15:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: SELECT: ошибка (цель выборки не является таблицей)
СообщениеДобавлено: Ср, фев 20 2019, 08:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Добрый день.
Code:
  SELECT * FROM zuznospis_log INTO CORRESPONDING FIELDS OF TABLE lt_zuznospis_log_second
    WHERE matnr_izd = p_matnr AND node = '' AND charg IN (
    SELECT mseg~charg
    FROM mseg inner JOIN lt_zuznospis_log_second ON ( li_zuznospis_log_second~matrn = mseg~matnr )
    ).


ругается, что это не таблица.. как это можно исправить?
Цитата:
"LT_ZUZNOSPIS_LOG_SECOND" is not defined in the ABAP Dictionary as a table, projection view or database view.

я думал, что могу сделать два селекта в две Local Table и через loop и insert вставить все данные в lt_zuznospis_log_second, но может есть изящнее решение ? в пределах одного запроса?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 09:33 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
lt_zuznospis_log_second это прозрачная таблица? или внутренняя? судя по всему внутренняя
нельзя делать JOIN с внутренней таблицей, только прозрачную с прозрачной

от на это ругается:
Code:
SELECT mseg~charg
    FROM mseg inner JOIN lt_zuznospis_log_second

так делать нельзя


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 09:39 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
может вы это имели в виду?

Code:
SELECT * FROM zuznospis_log INTO CORRESPONDING FIELDS OF TABLE lt_zuznospis_log_second
    WHERE matnr_izd = p_matnr AND node = '' AND charg IN (
    SELECT mseg~charg
    FROM mseg inner JOIN [b]zuznospis_log[/b] ON ([b]zuznospis_log[/b]~matrn = mseg~matnr )
    ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 09:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
а если я сделаю две таблицы
lt_zuznospis_log_second_ONE type table of zuznospis_log
lt_zuznospis_log_second_TWO type table of zuznospis_log

сделаю два селекта, а потом через
loop и Insert вставлю всё в lt_zuznospis_log_secon ?

или вы можете посоветовать лучше сделать ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 09:45 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
а если я сделаю две таблицы
lt_zuznospis_log_second_ONE type table of zuznospis_log
lt_zuznospis_log_second_TWO type table of zuznospis_log

сделаю два селекта, а потом через
loop и Insert вставлю всё в lt_zuznospis_log_secon ?

или вы можете посоветовать лучше сделать ?


зачем две таблицы и луп чтобы слить два селекта в 1 таблицу?

Code:
DATA lt_zuznospis_log type table of zuznospis_log.


SELECT * INTO TABLE lt_zuznospis_log FROM  zuznospis_log WHERE <cond1>.

SELECT * APPENDING TABLE lt_zuznospis_log FROM  zuznospis_log WHERE <cond2>.



Первый селект выберет данные и вставит в таблицу lt_zuznospis_log,
второй селект допишет данные в хвост таблицы lt_zuznospis_log


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 11:02 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Code:
select * into table lt_zuznospis_log_second
    from zuznospis_log
    where matnr_izd = p_matnr AND node = ''.
  select charg
    APPENDING table lt_zuznospis_log_second
    from mseg where  mseg~matnr = p_matnr and mseg~aufnr = aufnr.


мы копируем все данные из таблицы log в lt log_second
где материал берется из введенных параметров на экране выбора и с пустым 'node'.

выбирается 2 материала, но с пустыми полем charge, их мы должны вытянуть из mseg

идем во второй селект и добавляем поле charg в таблице log_second
из таблицы mseg где совпадают matrn с введенным на экране выбора и совпадает с номером заказа aufnr в таблице log_second~aufnr.
как итог очень долгая обработка второго селекта и на экране мы видим два материала с пустыми charge (номер партии) и 36 пустых строк где все нули

проверил таблицу mseg - выбирается лишь 1 строка по этим критериям, может я где допустил ошибку ?
может он пытается добавить все строки, с которыми совпал matnr? не понимаю такого поведения :(

нашел в начале объявления переменных такие строки:
Code:
aufnr type aufnr,
      matnr  type matnr,

но я же не могу написать
Code:
from mseg where  mseg~matnr = p_matnr and mseg~aufnr = zuznospis_log_second~aufnr.

возможно они как и мешают адекватной работе ?
т.к. при двойном щелчке мыши я проваливаюсь в нужную таблицу, а на aufnr проваливается в объявление переменной.
Как быть в данном случае то ? :(
предполагаю, что в таком случае может имеет смысл положить aufnr в перменную и с ней тогда сравнивать после первого селекта ?
или же я снова костылики горожу?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 11:42 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
вы хотите прочитать данные из zuznospis_log, затем по этим данным сделать выборку из mseg прописав в существующие поля поле charg?

Code:
data: begin of mseg_buf occurs 0,
            matnr like mseg-matnr,
            aufnr like mseg-aufnr,
            charg llike mseg charg,
        end of mseg_buf.


select * into table lt_zuznospis_log_second
    from zuznospis_log
    where matnr_izd = p_matnr AND node = ''.

if lt_zuznospis_log_second[] is not initial,

select matnr aufnr charg into
    into table mseg_buf
    from mseg
    for all entries in lt_zuznospis_log_second
    where  mseg~matnr = p_matnr and mseg~aufnr = lt_zuznospis_log_second-aufnr.
   
  sort mseg_buf by matnr aufnr.

  loop lt_zuznospis_log_second assigning <ff>.
     READ mseg_buf WITH KEY matnr = <ff>-matnr aufnr = <ff>-aufnr BINARY SEARCH.
     IF sy-subrc = 0.
       <ff>-charg = mseg_buf-charg.
     ENDIF.
  ENDLOOP.
endif.


Долгая выборка так как mseg насколько я знаю здоровая, а поля matnr и aufnr не ключевые


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 13:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
а что такое <ff>?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 14:04 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
а что такое <ff>?

В угловых скобках филд символы пиштуся


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 14:28 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Kuranov.Dmitry написал(а):
В угловых скобках филд символы пиштуся

это я знаю)
но я не понимаю в данном примере запись, да и программа пишет, что не знает, что такое <ff>


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 14:39 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
ну так объявите его... нажмите F1 и почитайте о LOOP.. ASSIGNING


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 14:48 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Kuranov.Dmitry написал(а):
ну так объявите его... нажмите F1 и почитайте о LOOP.. ASSIGNING

Я сделал... Просто ранее с символами не имел отношений.
Спасибо, что помогаете постоянно :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Ср, фев 20 2019, 16:26 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
Kuranov.Dmitry написал(а):
ну так объявите его... нажмите F1 и почитайте о LOOP.. ASSIGNING

Я сделал... Просто ранее с символами не имел отношений.
Спасибо, что помогаете постоянно :(

Домашнее задание: переписать цикл без филдсимвола)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Чт, мар 07 2019, 11:29 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Code:
select * into table lt_zuznospis_log_second_2
  from zuznospis_log
  where matnr = lt_zuznospis_log_second~matnr and aufnr = lt_zuznospis_log_second~aufnr and charg = lt_zuznospis_log_second~charg.


Дмитрий! взываю к вам, не понимаю, почему ему не нравится
Цитата:
Wrong table name or table alias name table alias name
"LT_ZUZNOSPIS_LOG_SECOND". table alias name "LT_ZUZNOSPIS_LOG_SECOND".

элементарный же селект в табилцу, с переносом всех данных в локальную таблицу и на вывод на экран?!
что тут не так, черты бы побрал этот сап..


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Подскажите пожалуйста по select-у
СообщениеДобавлено: Чт, мар 07 2019, 11:31 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
lt_zuznospis_log_second это что такое?
я так понимаю внутренняя таблица?
Сап не умеет скрещивать так внутренние и прозрачные таблицы


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: UKY


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

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