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

Часовой пояс: 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 часа


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

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


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

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