Текущее время: Пт, мар 29 2024, 09:26

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
можно код в студию :wink:


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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Bimit написал(а):
можно код в студию :wink:

Code:
*&---------------------------------------------------------------------*
*& Report  ZPP_COPYDATA_MRP5_VS_12
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zpp_copydata_mrp5_vs_12.
TABLES: zppmrp5, zppmrp5_12, zpp_compare_zppm.
*DATA wa_zppmpr5 TYPE zppmrp5.
DATA: BEGIN OF gs_result_tab,
  matnr LIKE zppmrp5-matnr, "Изделие
  WERKS LIKE zppmrp5-WERKS, "Завод
  matnr_1 LIKE zppmrp5-matnr_1, "ДСЕ
  matnr_2 LIKE zppmrp5-matnr_2, "УЗЕЛ
  arbpl_1 LIKE zppmrp5-arbpl_1, "Цех изготовитель
  arbpl_2 LIKE zppmrp5-arbpl_2, "Цех потребитель
  gamng LIKE zppmrp5-gamng, "Нормативная потребность
  gamng_L LIKE zppmrp5_12-gamng, "Нормативная потребность за прошедший период
  gamng_1 LIKE zppmrp5-gamng_1, "Подать в цех-потребитель(месяц)
  gamng_1_L LIKE zppmrp5_12-gamng_1, "Подать в цех-потребитель(месяц) за прошедший период
END OF gs_result_tab.
DATA gt_result_tab LIKE STANDARD TABLE OF gs_result_tab.

* Собираем данные из первой таблицы БД
SELECT matnr matnr_1 matnr_2 AS gamng_L gamng_1_L INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_12.
* Добавляем данные из второй таблицы БД
SELECT matnr matnr_1 matnr_2 AS gamng gamng_1 APPENDING CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5.


LOOP AT gt_result_tab INTO gs_result_tab.
        WRITE:/ gs_result_tab-matnr, gs_result_tab-matnr_1, gs_result_tab-matnr_2, gs_result_tab-matnr_2,
                 gs_result_tab-gamng_L, gs_result_tab-gamng_1_L, gs_result_tab-gamng, gs_result_tab-gamng_1.
ENDLOOP.

*SELECT matnr werks matnr_1 matnr_2 arbpl_1 arbpl_2 gamng gamng_1
*  FROM zppmrp5 INNER JOIN zpp_compare_zppm
*  ON zppmrp5-mantr = zpp_compare_zppm-zppmrp5 and
*     zppmrp5-werks = zpp_compare_zppm-werks and
*     zppmrp5-matnr_1 = zpp_compare_zppm_matnr_1 and
*     zppmrp5-matnr_2 = zpp_compare_zppm_matnr_2 and
*     zppmrp5-gamng = zpp_compare_zppm_gamng and
*     zppmrp5-gamng_1 = zpp_compare_zppm_gamng_1.
*
*  FROM zppmrp5_12 INNER JOIN zpp_compare_zppm
*  ON zppmrp5_12-mantr = zpp_compare_zppm-zppmrp5 and
*     zppmrp5_12-werks = zpp_compare_zppm-werks and
*     zppmrp5_12-matnr_1 = zpp_compare_zppm_matnr_1 and
*     zppmrp5_12-matnr_2 = zpp_compare_zppm_matnr_2 and
*     zppmrp5_12-gamng = zpp_compare_zppm-gamng_L and
*     zppmrp5_12-gamng_1_l = zpp_compare_zppm-gamng_1_l.
*ENDSELECT.

*объдиняем таблицы (два варианта)
*select ...
*form (table)
*where ...

*второй вариант
*select ...
*form (table) inner join (table2)
*on table-line = table2-line
*where

ну сразу после того, как это заработает, буду ALV GRID подключать и выводить на экран... но сначала бы заставить ее вообще работать :(


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

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
вот тут поправьте

Code:
* Собираем данные из первой таблицы БД
***SELECT matnr matnr_1 matnr_2 AS gamng_L gamng_1_L INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_12.
* Добавляем данные из второй таблицы БД
***SELECT matnr matnr_1 matnr_2 AS gamng gamng_1 APPENDING CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5.

* Собираем данные из первой таблицы БД
SELECT matnr matnr_1 matnr_2  gamng AS gamng_L gamng_1 AS gamng_1_L INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_12.
* Добавляем данные из второй таблицы БД
SELECT matnr matnr_1 matnr_2 gamng gamng_1 APPENDING CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5.




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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
грубо говоря, теперь можно просто делать insert через loop в мою таблицу ZPP_COMPARE_ZPPM все содержимое gs_result_tab?


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

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
нет, так как у вас дублирующие записи по материалу, необходимо их суммировать

З.Ы.

нужно так, сортировать таблицу по материалу

и сделать COLLECT в таблицу для вывода на экран

Code:
* Сортируем таблицу по материалу
SORT gt_result_tab BY matnr.

* Считаем кол-во по материалу
LOOP AT gt_result_tab INTO gs_result_tab.   
COLLECT gs_result_tab INTO ZPP_COMPARE_ZPPM.
ENDLOOP.

CLEAR: gt_result_tab[].

LOOP AT ZPP_COMPARE_ZPPM INTO gs_result_tab.
        WRITE:/ gs_result_tab-matnr, gs_result_tab-matnr_1, gs_result_tab-matnr_2,
                 gs_result_tab-gamng_L, gs_result_tab-gamng_1_L, gs_result_tab-gamng, gs_result_tab-gamng_1.
ENDLOOP.



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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Вот снова я сталкиваюсь с одной и той же проблемой
Цитата:
"ZPP_COMPARE_ZPPM" is not an internal table - the "OCCURS n"

не могли бы вы пояснить мне суть ?
в прошлый раз мы создали структуру таблицы gs_result_tab и объявили
DATA gt_result_tab LIKE STANDARD TABLE OF gs_result_tab.
что таблица gt имеет структуру gs.
теперь же мы имеем таблицу полноценную-физическую)


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

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
Если вы хотите заполнить таблицу БД (ZPP_COMPARE_ZPPM) только зачем?

В алв выводите gt_result_tab_alv которую необходимо объявить и суммировать данные по материалу таблицы gt_result_tab


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

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
Code:
* Сортируем таблицу по материалу
SORT gt_result_tab BY matnr.

* Считаем кол-во по материалу
DATA: gt_result_tab_alv LIKE TABLE OF gs_result_tab.
LOOP AT gt_result_tab INTO gs_result_tab.   
COLLECT gs_result_tab INTO gt_result_tab_alv.
ENDLOOP.

CLEAR: gt_result_tab[].

LOOP AT gt_result_tab_alv INTO gs_result_tab.
        WRITE:/ gs_result_tab-matnr, gs_result_tab-matnr_1, gs_result_tab-matnr_2,
                 gs_result_tab-gamng_L, gs_result_tab-gamng_1_L, gs_result_tab-gamng, gs_result_tab-gamng_1.
ENDLOOP.



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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Bimit написал(а):
Если вы хотите заполнить таблицу БД (ZPP_COMPARE_ZPPM) только зачем?

В алв выводите gt_result_tab_alv которую необходимо объявить и суммировать данные по материалу таблицы gt_result_tab


потому, что в каждой из таблиц, с которыми я работаю - по полтора миллиона строк
и программа выполняется около 5-10 минут.... и данных там, в несколько раз больше, чем я просматриваю.

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


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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Bimit написал(а):
Code:
* Сортируем таблицу по материалу
SORT gt_result_tab BY matnr.

* Считаем кол-во по материалу
DATA: gt_result_tab_alv LIKE TABLE OF gs_result_tab.
LOOP AT gt_result_tab INTO gs_result_tab.   
COLLECT gs_result_tab INTO gt_result_tab_alv.
ENDLOOP.

CLEAR: gt_result_tab[].

LOOP AT gt_result_tab_alv INTO gs_result_tab.
        WRITE:/ gs_result_tab-matnr, gs_result_tab-matnr_1, gs_result_tab-matnr_2,
                 gs_result_tab-gamng_L, gs_result_tab-gamng_1_L, gs_result_tab-gamng, gs_result_tab-gamng_1.
ENDLOOP.


я вижу предпосылки к выводу на alv :)


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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
и вот ошибка :(
Цитата:
exception condition no_fieldcatalog_available raised sap
?
не могу понять, что здесь не так и как с этим бороться . . .


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение из двух таблиц и вывод на экран
СообщениеДобавлено: Пт, мар 23 2018, 12:38 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
и вот ошибка :(
Цитата:
exception condition no_fieldcatalog_available raised sap
?
не могу понять, что здесь не так и как с этим бороться . . .

Fieldcatalog укажи правильный.
АЛВ не знает какие столбцы ему рисовать


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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
запутался..
создал структуру нужную мне
объявил
Цитата:
DATA: gt_result_tab TYPE TABLE OF zpp_result_tab_mpr5vs12.

и убрал
Code:
*DATA: BEGIN OF gs_result_tab,
*  matnr LIKE zppmrp5-matnr, "Изделие
*  WERKS LIKE zppmrp5-WERKS, "Завод
*  matnr_1 LIKE zppmrp5-matnr_1, "ДСЕ
*  matnr_2 LIKE zppmrp5-matnr_2, "УЗЕЛ
*  arbpl_1 LIKE zppmrp5-arbpl_1, "Цех изготовитель
*  arbpl_2 LIKE zppmrp5-arbpl_2, "Цех потребитель
*  gamng LIKE zppmrp5-gamng, "Нормативная потребность
*  gamng_L LIKE zppmrp5_12-gamng, "Нормативная потребность за прошедший период
*  gamng_1 LIKE zppmrp5-gamng_1, "Подать в цех-потребитель(месяц)
*  gamng_1_L LIKE zppmrp5_12-gamng_1, "Подать в цех-потребитель(месяц) за прошедший период
*END OF gs_result_tab.

Поменял
Цитата:
DATA gs_result_tab LIKE STANDARD TABLE OF gt_result_tab.

было наоборот gt и gs
Стало ругаться на
Code:
* Считаем кол-во по материалу
DATA: gt_result_tab_alv LIKE TABLE OF gs_result_tab.
LOOP AT gt_result_tab INTO gs_result_tab.
  COLLECT gs_result_tab INTO gt_result_tab_alv.
ENDLOOP.

Цитата:
"GS_RESULT_TAB" cannot be converted to the line type of "GT_RESULT_TAB".

Цитата:
You can only use COLLECT command in a table if all of its non-key fields are numeric (type i, p, or f)

gs не может конвертироваться в тип gt? почему?
или gt теперь стала у нас TYPE OF TABLE, а не TABLE...
как тут можно переписать подругому ?


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

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
Смотрим строку
LOOP AT gt_result_tab INTO gs_result_tab.

какие типы данных должны иметь gt_result_tab и gs_result_tab?
и какие у вас?

на первый вопрос вы найдете ответ в хелпе по оператору LOOP
на второй вопрос у себя в коде


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

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
как я понял, нам gs_result_tab не нужна как таковая.
теперь за нее выступает физическая структура DATA: gt_result_tab TYPE TABLE OF zpp_result_tab_mpr5vs12.
я так понимаю, что gt у нас таблица со структурой от zpp.
т. е. сама zpp_result_tab_mpr5vs12, но к ней в loop я тоже не могу обратиться. Значит мне нужно сделать gs структуры zpp? и тогда работать с ней и выводить на alv?
я правильно понял?
Цитата:
loop at таблица1 into структура этой таблицы

endloop


Последний раз редактировалось sonics Пт, мар 23 2018, 16:45, всего редактировалось 1 раз.

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

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


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

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


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

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