Текущее время: Сб, авг 18 2018, 12:10

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, янв 30 2018, 17:05 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
Подскажите пожалуйста.
Есть две таблицы. Данные название столбцов там абсолютно одинаковое лишь значения местами отличаются.
Цитата:
TABLES: zppmrp5, zppmrp5_12.

первая на сегодняшний день, вторая zppmrp5_12 на 12 месяц.
Необходимо третья таблица zppmrp5_analitic, в которую данные будут собираться.
Code:
DATA:
      zppmrp5_analitic-MATNR_1 type zppmrpt-MATNR_1,
*ДСЕ
      zppmrp5_analitic-MATNR_2 type zppmrpt-MATNR_2,
*Узел
      zppmrp5_analitic-ARBPL_1 type zppmrpt-ARBPL_1,
*Цех изготовитель
      zppmrp5_analitic-ARBPL_2 type zppmrpt-ARBPL_2,
*Цех потребитель
      zppmrp5_analitic-GAMNG type zppmrpt-GAMNG,
*Нормативная потребность
      zppmrp5_analitic-GAMNGL type zppmrpt-GAMNG,
*Нормативная потребность LAST     
      zppmrp5_analitic-GAMNG_1 type zppmrpt-GAMNG_1,
*Подать в цех-потребитель(месяц)
      zppmrp5_analitic-GAMNG_1L type zppmrpt-GAMNG_1.
*Подать в цех-потребитель(месяц) LAST

Наши данные, но в таблице zppmrp5_analitic есть
ДСЕ УЗЕЛ а дальше данные за сегодня Норм. Потр. и за 12 месяц Норм. Потр.
также и с Подать в цех. потр за сегодня и за 12 месяц.
Как мне сказать этим таблицам, что куда направлять?
Code:
TABLES: zppmrp5, zppmrp5_12.
*lt_prev_month, lt_cur_month - прошлый и текущий месяц.
DATA it_zppmrp5 TYPE zppmrp5.
*zppmrp5_analitic  внутренняя таблица вывода
DATA zppmrp5_analitic TYPE zppmrp5.
DATA wa_zppmrp5 LIKE LINE OF it_zppmrp5.
DATA:
      zppmrp5_analitic-MATNR_1 type zppmrpt-MATNR_1,
*ДСЕ
      zppmrp5_analitic-MATNR_2 type zppmrpt-MATNR_2,
*Узел
      zppmrp5_analitic-ARBPL_1 type zppmrpt-ARBPL_1,
*Цех изготовитель
      zppmrp5_analitic-ARBPL_2 type zppmrpt-ARBPL_2,
*Цех потребитель
      zppmrp5_analitic-GAMNG type zppmrpt-GAMNG,
*Нормативная потребность
      zppmrp5_analitic-GAMNGL type zppmrpt-GAMNG,
*Нормативная потребность LAST     
      zppmrp5_analitic-GAMNG_1 type zppmrpt-GAMNG_1,
*Подать в цех-потребитель(месяц)
      zppmrp5_analitic-GAMNG_1L type zppmrpt-GAMNG_1.
*Подать в цех-потребитель(месяц) LAST

я описал таблицы и столбцы в них.
Дальше я начал с селекта, но здесь я понимаю, что мне нужно из zppmrp5 только выше перечисленные поля и чтобы они пошли в те поля, таблице zppmrp5_analitic, которые я ему задам (хотя в данном случае нас все устраивает и так если делать это через corresponding fields, если я правильно понял назначение) оно тогда скопирует туда лишь те поля, у которых алиас будет идентичным.
Цитата:
SELECT * FROM zppmrp5 INTO TABLE zppmrp5_analitic.

IF sy-subrc=0.
LOOP AT zppmrp5 INTO zppmrpm5_12.

ENDLOOP.
ENDIF.

Но вот со вторым селектом, который будет из zppmrp5_12 мне нужно чтобы данные поступили в поля
Code:
     
      zppmrp5_analitic-GAMNG_1L type zppmrpt-GAMNG_1
*Подать в цех-потребитель(месяц) LAST
     zppmrp5_analitic-GAMNGL type zppmrpt-GAMNG
*Нормативная потребность LAST

сложность есть в том, что ДСЕ - это таже деталь, может быть уже не нужна и на сегодняшний момент мы можем получить Null
также как и у нас может появится новая ДСЕ, которой в 12 месяце не было вовсе и тогда null должен появится в соответствующей позиции
Code:
zppmrp5_analitic-GAMNG type zppmrpt-GAMNG,
*Нормативная потребность
zppmrp5_analitic-GAMNG_1 type zppmrpt-GAMNG_1,
*Подать в цех-потребитель(месяц)

направьте пожалуйста


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
хотелось бы двигаться маленькими шажками, чтоб разобраться досконально.


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
Code:
ает и так если делать это через corresponding fields, если я правильно понял назначение) оно тогда скопирует туда лишь те поля, у которых алиас будет идентичным.


если имена внутренней таблицы не совпадают с именами прозрачной, а надо сделать corresponding, то можно воспользоваться переименованием полей в селекте:

пример:

Code:

DATA; begin of perdata occurs 0,
         pernr like pa0002-pernr,
         familia like pa0002-nachn,
         imya like pa0002-vorna,
END OF perdata.

SELECT pernr
            nachn AS familia
            vorna AS imya
               INTO CORRESPONDING FIELDS OF TABLE perdata
               FROM pa0002. 


Последний раз редактировалось Kuranov.Dmitry Вт, фев 06 2018, 11:31, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 11:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
у меня непонятки как с внутренней работать таблицей.
вот одна таблица, название столбцов совпадает.
вот вторая таблица, название столбцов совпадает.
я сделал третью и ввел название только те столбцы, которые мне необходимы, названия полей тут не совпадают, но описание (элемент данных) тот, что нужно.
Как я могу указать, куда вставлять данные из одной таблицы в другую?
через select where?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 11:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
в SELECT вы можете поменять название полей через оператор AS

синтаксис:

SELECT <db_column> AS <internal_table_column> INTO CORRESPONDING FIELDS OF TABLE <innternal_table>.

смотрите мой пример выше.

поле pernr - табельный номер совпадает в прозрачной таблице PA0002 и внутренней таблице perdata, остальные две колонки не совпадают.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 15:06 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
возник вопрос, могу ли я не делал 3юю таблицу, а обойтись внутренней и вывести ее тут же на экран?
p.s.: кол-во записей в каждой таблице - несколько миллионов

или все же как я выше и писал, слить данные в третью таблицу и выводить уже ее?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 15:09 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
sonics написал(а):
возник вопрос, могу ли я не делал 3юю таблицу, а обойтись внутренней и вывести ее тут же на экран?
p.s.: кол-во записей в каждой таблице - несколько миллионов

или все же как я выше и писал, слить данные в третью таблицу и выводить уже ее?


да, можете и даже нужно так.

Не очень понимаю вашу архитектуру, вы что используете прозрачные таблицы в качестве внутренних на проекте?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 16:00 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
у меня мало опыта и я не могу решить как правильно подойти к проекту.
две таблицы, по доменам и элементам - одинаковые, разница лишь в записях и количестве их. Одна за начало месяца, вторая за сегодняшний день.
по итогу вывести в третью таблицу или внутреннюю таблицу и отобразить на экране.
Смысл в том, чтобы посмотреть различие данных в одинаковых строках за разные числа.
Задача вроде простая, но не доходит как это сделать правильно :( мечусь уже не один день ...

по итогу
Деталь | потребность на месяц 100 | потребность на сегодня 80 |
примерно так должно выглядеть

только просто цифрами


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Вт, фев 06 2018, 16:47 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
sonics написал(а):
у меня мало опыта и я не могу решить как правильно подойти к проекту.
две таблицы, по доменам и элементам - одинаковые, разница лишь в записях и количестве их. Одна за начало месяца, вторая за сегодняшний день.
по итогу вывести в третью таблицу или внутреннюю таблицу и отобразить на экране.
Смысл в том, чтобы посмотреть различие данных в одинаковых строках за разные числа.
Задача вроде простая, но не доходит как это сделать правильно :( мечусь уже не один день ...

по итогу
Деталь | потребность на месяц 100 | потребность на сегодня 80 |
примерно так должно выглядеть

только просто цифрами


Code:
   DATA: BEGIN OF result_tab OCCURS 0,
              matnr LIKE zppmrp5-matnr,   " Код материала
              gamng_last like zppmrp5_12-gamng, " потребность  прошлого года
              gamng_today like zppmrp5-gamng, " потребность на сегодня
             END_OF result_tab.

   SELECT matnr gamng AS gamng_last INTO CORRESPONDING FIELDS OF TABLE  result_tab FROM zppmrp5_12.
   CLEAR result_tab. " почистим хедер таблицы( но не саму таблицу!!)
   SELECT matnr gaming AS gamng_today INTO CORRESPONDING FIELDS OF result_tab.
         COLLECT result_tab.
   ENDSELECT.

   LOOP AT result_tab.
        WRITE: / result_tab-matnr, result_tab-gamng_last, result_tab-gamng_today.
   ENDLOOP.



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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 302
Code:
TABLES: zppmrp5, zppmrp5_12.

DATA: BEGIN OF result_tab OCCURS 0,
              matnr LIKE zppmrp5-matnr,   " Код материала
              gamng_last like zppmrp5_12-gamng, " потребность  прошлого года
              gamng_today like zppmrp5-gamng, " потребность на сегодня
END OF result_tab.

  SELECT matnr gamng AS gamng_last INTO CORRESPONDING FIELDS OF TABLE  result_tab FROM zppmrp5_12.
   SELECT matnr gamng AS gamng_today INTO CORRESPONDING FIELDS OF TABLE result_tab FROM zppmrp5.
         COLLECT result_tab.
   ENDSELECT.
  ENDSELECT.
  LOOP AT result_tab.
        WRITE: / result_tab-matnr, result_tab-gamng_last, result_tab-gamng_today.
  ENDLOOP.

Почему то ругается на endselect.
как только их оба убрал, оно хотя бы ошибки перестало выбрасывать, но запуск подвис...
это же неправильно, без endselect.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Ср, фев 07 2018, 10:25 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
Цитата:
Почему то ругается на endselect.

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

Чем SELECT <field_list> INTO CORRESPONDING FIELDS OF <struc> отличается от SELECT <field_list> INTO CORRESPONDING FIELDS OF TABLE <tab> понимаете?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Ср, фев 07 2018, 10:57 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 193
Почитайте help или спросите у абаперов с опытом :wink:

З.Ы. кто то еще должен быть на проекте :D

Code:
SELECT rp~matnr rp~gamng AS gamng_today rp12~gamng AS gamng_last
    INTO CORRESPONDING FIELDS OF TABLE result_tab
     FROM zppmrp5 AS rp
     INNER JOIN zppmrp5_12 AS rp12 ON rp12~matnr = rp~matnr
                                .


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 328
Bimit написал(а):
Почитайте help или спросите у абаперов с опытом :wink:

З.Ы. кто то еще должен быть на проекте :D

Code:
SELECT rp~matnr rp~gamng AS gamng_today rp12~gamng AS gamng_last
    INTO CORRESPONDING FIELDS OF TABLE result_tab
     FROM zppmrp5 AS rp
     INNER JOIN zppmrp5_12 AS rp12 ON rp12~matnr = rp~matnr
                                .

немного не то что надо автору.

если материал есть в zppmrp5_12 но нет в zppmrp5 то rp~matnr не выберется и наоборот.

выберутся только те что есть в обоих таблицах.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Ср, фев 07 2018, 11:21 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 193
Это понятно, я примерно додумал что надо сделать, сравнить текущее состояние с предыдущим

Если материала нет на начало месяца, тогда это новый материал и принимаем предыдущее состояние равно 0, так в поле и будет


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Ср, фев 07 2018, 11:22 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 193
З.Ы. JOIN можно и перестроить как надо :wink:


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

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


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

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


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

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