SAPфорум.RU https://sapboard.ru/forum/ |
|
Заполнение из двух таблиц и вывод на экран https://sapboard.ru/forum/viewtopic.php?f=13&t=96005 |
Страница 2 из 6 |
Автор: | Bimit [ Ср, фев 07 2018, 11:16 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
Если конечно надо все данные, то можно так. 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. |
Автор: | sonics [ Ср, фев 07 2018, 13:08 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
Программу запустил, конечно ее нужно еще много дорабатывать, но все же спасибо Дмитрию за такой хороший старт. От этого я уже могу отталкиваться. Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3 |
Автор: | Kuranov.Dmitry [ Ср, фев 07 2018, 13:56 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
sonics написал(а): Программу запустил, конечно ее нужно еще много дорабатывать, но все же спасибо Дмитрию за такой хороший старт. От этого я уже могу отталкиваться. Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3 Его вариант будет чутка быстрее имхо. Вопрос, что быстрее сработает, COLLECT или READ+INSERT? |
Автор: | sonics [ Ср, фев 07 2018, 14:00 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
пока что запуск проходит за 1 минуту 15 сек |
Автор: | sonics [ Ср, фев 07 2018, 14:22 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
Kuranov.Dmitry написал(а): sonics написал(а): Программу запустил, конечно ее нужно еще много дорабатывать, но все же спасибо Дмитрию за такой хороший старт. От этого я уже могу отталкиваться. Сейчас попробую рассмотреть вариант ваш, г-н Bimit... :3 Его вариант будет чутка быстрее имхо. Вопрос, что быстрее сработает, COLLECT или READ+INSERT? честно, коллект я впервые использую для меня данная конструкция в новинку.... |
Автор: | Kuranov.Dmitry [ Ср, фев 07 2018, 14:32 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
он ищет по не числовым полям запись в таблице, и прибавляет теущую запись к ней. если не нашел, то вставляет новую запись. Пример: 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 |
Автор: | sonics [ Пн, фев 12 2018, 09:44 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
А если я хочу перенести все эти данные на физическую таблицу, для дальнейшего анализа? Code: loop at result into gl_ZPPMRP5_analitics.
gl_ZPPMRP5_analitics-data_create = sy-datum. insert into ZPPMRP5_analitics values gl_ZPPMRP5_analitics. endloop. |
Автор: | sonics [ Чт, мар 15 2018, 09:53 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
Я обратил внимание, что это уже устаревшая конструкция, а как сейчас пишется объявление переменных? BEGIN OF OCCURS 0 END OF . |
Автор: | Kuranov.Dmitry [ Чт, мар 15 2018, 10:24 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
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. |
Автор: | sonics [ Чт, мар 15 2018, 13:56 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
я поменял, теперь программа требует как раз свой 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. скажи пожалуйста, почитать что нужно, дабы разобраться в этом вопросе... что-то туго до меня доходит |
Автор: | Kuranov.Dmitry [ Чт, мар 15 2018, 14:00 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
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 селекта и коллект? это отработает не так как вы ожидаете.. второй селект сотрет все что выбрал первый и вставит свои данные. |
Автор: | sonics [ Чт, мар 15 2018, 14:09 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
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, "потребность прошлого месяца и вовсе с нулями выводится ну что ж, попробую разобраться подробнее... |
Автор: | sonics [ Чт, мар 15 2018, 14:23 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
не совсем понимаю, для чего мы вообще держим у себя структуру и не работаем непосредственно с таблицей. "GT_RESULT_TAB" is not a table with header line. и коллекции идут только с header line (это тоже устаревшая конструкция?) видимо придется как-то по другому выкручиваться с этого вопроса |
Автор: | Kuranov.Dmitry [ Чт, мар 15 2018, 17:13 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
sap запретил использовать хедер лайн в классах. Если вы классы не используете, то можете использовать эту конструкцию. |
Автор: | sonics [ Чт, мар 22 2018, 07:52 ] |
Заголовок сообщения: | Re: Заполнение из двух таблиц и вывод на экран |
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 и все же, как эти две таблицы вывести в одну.. |
Страница 2 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |