Текущее время: Чт, июн 21 2018, 23:43

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


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


ВНИМАНИЕ!

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



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

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


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 280
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, 11:25 
Специалист
Специалист

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

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, 11:38 
Старший специалист
Старший специалист

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


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

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

З.Ы.

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

и сделать 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, 12:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 280
Вот снова я сталкиваюсь с одной и той же проблемой
Цитата:
"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, 12:38 
Специалист
Специалист

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

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


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

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 192
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, 12:50 
Старший специалист
Старший специалист

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

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


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

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


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 280
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, 13:04 
Старший специалист
Старший специалист

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


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

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

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


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

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

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

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

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


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 280
как я понял, нам 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, 17:45, всего редактировалось 1 раз.

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

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


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

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


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

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