Текущее время: Вт, авг 14 2018, 19:29

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


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


ВНИМАНИЕ!

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



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

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

Code:
  TYPES:

    BEGIN OF ty_result,
      matnr        TYPE mara-matnr,
      gamng_today  TYPE afko-gamng,
      gamng_last   TYPE afko-gamng,
    END OF ty_result.

  DATA: result_tab TYPE SORTED TABLE OF ty_result WITH UNIQUE KEY matnr,
        ls_result  TYPE ty_result.

  FIELD-SYMBOLS: <f_result> TYPE ty_result.

  SELECT matnr gamng AS gamng_today
    INTO CORRESPONDING FIELDS OF TABLE result_tab
     FROM zppmrp5
     .

  SELECT matnr gamng AS gamng_last
     FROM zppmrp5_12
     INTO ls_result.

    READ TABLE result_tab ASSIGNING <f_result> WITH TABLE KEY matnr = ls_result-matnr.
    IF sy-subrc = 0.
      <f_result>-gamng_last = ls_result-gamng_last.
    ELSE.
      INSERT ls_result INTO TABLE result_tab.
    ENDIF.

  ENDSELECT.


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

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

Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3


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

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

Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3


Его вариант будет чутка быстрее имхо.

Вопрос, что быстрее сработает, COLLECT или READ+INSERT?


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
пока что запуск проходит за 1 минуту 15 сек


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

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

Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3


Его вариант будет чутка быстрее имхо.

Вопрос, что быстрее сработает, COLLECT или READ+INSERT?


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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
он ищет по не числовым полям запись в таблице, и прибавляет теущую запись к ней. если не нашел, то вставляет новую запись.
Пример:
Code:
    DATA: BEGIN OF result occurs 0,
         id TYPE text5,
         sum TYPE i,
    END OF result.


result-id = 'A1'.
result-sum = 1.
COLLECT result. " (1)

result-id = 'A2'.
result-sum = 2.
COLLECT result. " (2)

result-id = 'A1'.
result-sum = 3.
COLLECT result. " (3)


в точке (1):
id sum
A1 1

в точке (2):
id sum
A1 4
A2 2

в точке (3):
id sum
A1 1
A2 2


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
А если я хочу перенести все эти данные на физическую таблицу, для дальнейшего анализа?
Code:
loop at result into gl_ZPPMRP5_analitics.
  gl_ZPPMRP5_analitics-data_create = sy-datum.
  insert into ZPPMRP5_analitics values gl_ZPPMRP5_analitics.
endloop.


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
Я обратил внимание, что это уже устаревшая конструкция, а как сейчас пишется объявление переменных?
BEGIN OF OCCURS 0
END OF .


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
sonics написал(а):
Я обратил внимание, что это уже устаревшая конструкция, а как сейчас пишется объявление переменных?
BEGIN OF OCCURS 0
END OF .


Это эквивалент:
Code:
TYPES: BEGIN OF gs_data,
           field1 TYPE text10,
          field2 TYPE text10,
         END OF gs_data.

DATA gt_data TYPE TABLE OF gs_data WITH HEADER LINE.


HEADER LINE уже вроде как устарел, так как нельзя в ОО контексте использовать.

так что так:

Code:
DATA: BEGIN OF gs_data,
           field1 TYPE text10,
          field2 TYPE text10,
         END OF gs_data.

DATA gt_data LIKE TABLE OF gs_data.


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
я поменял, теперь программа требует как раз свой OCCURS :(\
Цитата:
"GS_RESULT_TAB" is not an internal table - the "OCCURS n" specification

везде изменил на gs_result_tab
Code:
REPORT  zpd_sravn_mrp5.
TABLES: zppmrp5, zppmrp5_12.
DATA: BEGIN OF gs_result_tab,
  matnr_1 LIKE zppmrp5-matnr_1, "ДСЕ
  matnr LIKE zppmrp5-matnr, "изделие
  gamng_last LIKE zppmrp5_12-gamng, "потребность прошлого месяца
  gamng_today LIKE zppmrp5-gamng, "потребность на сегодня
END OF gs_result_tab.
DATA gt_result_tab LIKE TABLE OF gs_result_tab.

SELECT matnr matnr_1 gamng AS gamng_last INTO CORRESPONDING FIELDS OF TABLE gs_result_tab FROM zppmrp5_12.
SELECT matnr matnr_1 gamng AS gamng_today INTO CORRESPONDING FIELDS OF TABLE gs_result_tab FROM zppmrp5.
COLLECT gs_result_tab.

LOOP AT gs_result_tab.
  WRITE: / gs_result_tab-matnr, gs_result_tab-matnr_1, gs_result_tab-gamng_last, gs_result_tab-gamng_today.
ENDLOOP.
CALL SCREEN 1488.

INCLUDE zpd_sravn_mrp5_status_1488o01.

CONTROLS: zpd_sr_1488 TYPE TABLEVIEW USING SCREEN 1488.


MODULE zpd_sr_1488_change_tc_attr OUTPUT.
  DESCRIBE TABLE result_tab LINES zpd_sr_1488-lines.
ENDMODULE.                    "ZPD_SR_1488_CHANGE_TC_ATTR OUTPUT

INCLUDE zpd_sravn_mrp5_dataf01.

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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
Code:
DATA: BEGIN OF gs_result_tab,
  matnr_1 LIKE zppmrp5-matnr_1, "ДСЕ
  matnr LIKE zppmrp5-matnr, "изделие
  gamng_last LIKE zppmrp5_12-gamng, "потребность прошлого месяца
  gamng_today LIKE zppmrp5-gamng, "потребность на сегодня
END OF gs_result_tab.
DATA gt_result_tab LIKE TABLE OF gs_result_tab.

SELECT matnr matnr_1 gamng AS gamng_last INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_12.
SELECT matnr matnr_1 gamng AS gamng_today INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5.
COLLECT gt_result_tab.


gs_result_tab это структура.
gt_result_tab это таблица.

и зачем вам 2 селекта и коллект?

это отработает не так как вы ожидаете..
второй селект сотрет все что выбрал первый и вставит свои данные.


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
Kuranov.Dmitry написал(а):
Code:
DATA: BEGIN OF gs_result_tab,
  matnr_1 LIKE zppmrp5-matnr_1, "ДСЕ
  matnr LIKE zppmrp5-matnr, "изделие
  gamng_last LIKE zppmrp5_12-gamng, "потребность прошлого месяца
  gamng_today LIKE zppmrp5-gamng, "потребность на сегодня
END OF gs_result_tab.
DATA gt_result_tab LIKE TABLE OF gs_result_tab.

SELECT matnr matnr_1 gamng AS gamng_last INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_12.
SELECT matnr matnr_1 gamng AS gamng_today INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5.
COLLECT gt_result_tab.


gs_result_tab это структура.
gt_result_tab это таблица.

и зачем вам 2 селекта и коллект?

это отработает не так как вы ожидаете..
второй селект сотрет все что выбрал первый и вставит свои данные.


да, вы правы...
некоторые имена, которые не помещаются по кол-ву символов, переименовываются в !00000000135
а первый столбец данных gamng_last LIKE zppmrp5_12-gamng, "потребность прошлого месяца и вовсе с нулями выводится
ну что ж, попробую разобраться подробнее...


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
не совсем понимаю, для чего мы вообще держим у себя структуру и не работаем непосредственно с таблицей.
"GT_RESULT_TAB" is not a table with header line. и коллекции идут только с header line (это тоже устаревшая конструкция?)
видимо придется как-то по другому выкручиваться с этого вопроса :(


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
sap запретил использовать хедер лайн в классах.
Если вы классы не используете, то можете использовать эту конструкцию.


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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
Code:
REPORT  zpp_copydata_mrp5_vs_12.
TABLES: zppmrp5, zppmrp5_12, zpp_compare_zppm.
DATA wa_zppmpr5 TYPE zppmrp5.
DATA: BEGIN OF gt_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 gt_result_tab.

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

и все же, как эти две таблицы вывести в одну..


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

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


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

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


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

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