Текущее время: Вс, июн 24 2018, 15:16

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


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


ВНИМАНИЕ!

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



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

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

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
Сообщения: 282
Программу запустил, конечно ее нужно еще много дорабатывать, но все же спасибо Дмитрию за такой хороший старт.
От этого я уже могу отталкиваться.

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


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

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

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


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

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


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

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


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

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

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


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

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


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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 307
он ищет по не числовым полям запись в таблице, и прибавляет теущую запись к ней. если не нашел, то вставляет новую запись.
Пример:
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
Сообщения: 282
А если я хочу перенести все эти данные на физическую таблицу, для дальнейшего анализа?
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
Сообщения: 282
Я обратил внимание, что это уже устаревшая конструкция, а как сейчас пишется объявление переменных?
BEGIN OF OCCURS 0
END OF .


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 307
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
Сообщения: 282
я поменял, теперь программа требует как раз свой 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
Сообщения: 307
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
Сообщения: 282
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
Сообщения: 282
не совсем понимаю, для чего мы вообще держим у себя структуру и не работаем непосредственно с таблицей.
"GT_RESULT_TAB" is not a table with header line. и коллекции идут только с header line (это тоже устаревшая конструкция?)
видимо придется как-то по другому выкручиваться с этого вопроса :(


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

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


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

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


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

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


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

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