Текущее время: Вс, сен 23 2018, 01:40

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 305
Подскажите пожалуйста.
Есть две таблицы. Данные название столбцов там абсолютно одинаковое лишь значения местами отличаются.
Цитата:
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
Сообщения: 305
хотелось бы двигаться маленькими шажками, чтоб разобраться досконально.


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 337
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
Сообщения: 305
у меня непонятки как с внутренней работать таблицей.
вот одна таблица, название столбцов совпадает.
вот вторая таблица, название столбцов совпадает.
я сделал третью и ввел название только те столбцы, которые мне необходимы, названия полей тут не совпадают, но описание (элемент данных) тот, что нужно.
Как я могу указать, куда вставлять данные из одной таблицы в другую?
через select where?


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 337
в 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
Сообщения: 305
возник вопрос, могу ли я не делал 3юю таблицу, а обойтись внутренней и вывести ее тут же на экран?
p.s.: кол-во записей в каждой таблице - несколько миллионов

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


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

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

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


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

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


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

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

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

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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 337
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
Сообщения: 305
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
Сообщения: 337
Цитата:
Почему то ругается на 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
Сообщения: 337
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 часа


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

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


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

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