SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Динамическая выборка таблиц https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96392 |
Страница 2 из 4 |
Автор: | sonics [ Ср, май 16 2018, 13:37 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
в продолжение темы... могу ли сделать select через переменную вместо ZPPMRP5 - будет table_name в при выборе droplist, что выше сделан, подставлялось бы через case table_name = zppmp5? я еще не пробовал, но я не могу понять как даже задать вопрос Code: SELECTION-SCREEN BEGIN OF BLOCK selection1 WITH FRAME TITLE text-008.
SELECT-OPTIONS so_matnr FOR zppmrp5-matnr. "Изделие SELECT-OPTIONS so_mat1 FOR zppmrp5-matnr_1. "ДСЕ SELECT-OPTIONS so_mat2 FOR zppmrp5-matnr_2. "Узел SELECT-OPTIONS so_arb1 FOR zppmrp5-arbpl_1. "Цех изготовитель SELECT-OPTIONS so_arb2 FOR zppmrp5-arbpl_2. "Цех потребитель SELECT-OPTIONS so_pbdnr FOR zppmrp5-pbdnr. "План потребности SELECT-OPTIONS so_ZBESK FOR zppmrp5-ZBESK. "Вид заготовки в концерне SELECTION-SCREEN END OF BLOCK selection1. SELECTION-SCREEN BEGIN OF BLOCK parametrs-block WITH FRAME TITLE text-007. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 1. PARAMETERS p_chbox AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 10(24) text-001 FOR FIELD p_chbox. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 1. PARAMETERS p_cb6 AS CHECKBOX. SELECTION-SCREEN COMMENT 10(25) text-009 FOR FIELD p_cb6. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 1. PARAMETERS: p_cb1 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 5(14) text-002 FOR FIELD p_cb1. PARAMETERS: p_cb2 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 23(15) text-003 FOR FIELD p_cb2. PARAMETERS: p_cb3 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 42(15) text-004 FOR FIELD p_cb3. PARAMETERS: p_cb4 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 62(14) text-005 FOR FIELD p_cb4. PARAMETERS: p_cb5 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN COMMENT 79(12) text-006 FOR FIELD p_cb5. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK parametrs-block. |
Автор: | Kuranov.Dmitry [ Ср, май 16 2018, 13:51 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: DATA gs_record TYPE PA0002.
DATA g_tabmane(20). PARAMETERS: p_list_a TYPE char3 AS LISTBOX VISIBLE LENGTH 30 OBLIGATORY DEFAULT '001' USER-COMMAND change_p_list_a. " список INITIALIZATION. *// пропущено заполнение списка START-OF-SELECTION. CASE p_list_a. WHEN '001'. g_tabname = 'PA0001'. WHEN '002'. g_tabname = 'PA0002'. ENDCASE. SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_record FROM (g_tabname) WHERE pernr = '12345678'. |
Автор: | sonics [ Чт, май 17 2018, 11:28 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Поясните пожалуйста запись: Code: SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_record FROM (g_tabname) WHERE pernr = '12345678'.
|
Автор: | Kuranov.Dmitry [ Чт, май 17 2018, 11:37 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
sonics написал(а): Поясните пожалуйста запись: Code: SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_record FROM (g_tabname) WHERE pernr = '12345678'. обычный селект (g_tabname) означает, что имя таблицы не g_tabname, а находится внутри переменной g_tabname в моем примере PA0001 и PA0002 это имена таблиц pernr это поле в таблице по которому выборка идет. |
Автор: | sonics [ Чт, май 17 2018, 13:57 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): обычный селект (g_tabname) означает, что имя таблицы не g_tabname, а находится внутри переменной g_tabname в моем примере PA0001 и PA0002 это имена таблиц pernr это поле в таблице по которому выборка идет. т.е. название траблицы будет храниться в p_list_b и p_list_a и я могу делать Code: SELECT p_list_a~matnr_1 p_list_a~datuv p_list_a~matnr_2 p_list_a~matnr p_list_a~werks p_list_a~arbpl_1 p_list_a~arbpl_2 p_list_a~seqnr p_list_a~elevel p_list_a~pbdnr p_list_a~zbesk p_list_a~IA * zppmrp5~ENTMG p_list_a~gamng AS gamng_td p_list_a~gamng_1 AS gamng_1_td p_list_b~gamng AS gamng_ld p_list_b~gamng_1 AS gamng_1_ld INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM p_list_a LEFT JOIN p_list_b ON p_list_b~matnr = p_list_a~matnr AND p_list_b~matnr_1 = p_list_a~matnr_1 AND p_list_b~matnr_2 = p_list_a~matnr_2 AND p_list_b~arbpl_1 = p_list_a~arbpl_1 AND p_list_b~arbpl_2 = p_list_a~arbpl_2 AND p_list_b~seqnr = p_list_a~seqnr AND p_list_b~werks = p_list_a~werks AND p_list_b~pbdnr = p_list_a~pbdnr AND p_list_b~elevel = p_list_a~elevel WHERE "zppmrp5~elevel = 1 AND p_list_a~elevel in r_elevel AND p_list_a~matnr_1 IN so_mat1 AND p_list_a~matnr_2 IN so_mat2 AND p_list_a~matnr IN so_matnr AND p_list_a~arbpl_1 IN so_arb1 AND p_list_a~arbpl_2 IN so_arb2 AND p_list_a~ZBESK IN so_ZBESK. верно я понимаю? а не верно.... нам надо p_list_a-g_tabname ? может так ? или как я могу обратиться |
Автор: | Kuranov.Dmitry [ Чт, май 17 2018, 14:30 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
нет, так как вы написали не пойдет |
Автор: | sonics [ Чт, май 17 2018, 15:12 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
тогда все время на каждый case вставлять select и т.д. но это же гулпо и громоздко. как же ? (: |
Автор: | Kuranov.Dmitry [ Чт, май 17 2018, 15:14 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Цитата: тогда все время на каждый case вставлять select и т.д. но это же гулпо и громоздко. как же ? ( Вы мой пример смотрели? он от вашего случая отличается только тем, что у него нет джоина и меньше условий. там всего 1 селект и 1 case. в кейс формируете имена таблиц в переменных и затем используете один динамический селект |
Автор: | Kuranov.Dmitry [ Чт, май 17 2018, 15:17 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Если вам не нравится селект, то можно так: в качестве ключа в списке использовать имя таблицы. Code: DATA gs_record TYPE PA0002.
DATA g_tabmane(20). DATA: list TYPE vrm_values, value LIKE LINE OF list. PARAMETERS: p_list_a TYPE char20 AS LISTBOX VISIBLE LENGTH 30 OBLIGATORY DEFAULT 'PA0001' USER-COMMAND change_p_list_a. " список INITIALIZATION. CLEAR value. REFRESH list. value-key = 'PA0001'. value-text = 'Организационные данные'. APPEND value TO list. value-key = 'PA0002'. value-text = 'Персональные данные'. APPEND value TO list. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_LIST_A' values = list. START-OF-SELECTION. SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_record FROM (p_list_a) WHERE pernr = '12345678'. |
Автор: | ghost [ Чт, май 17 2018, 15:50 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Я не хотел бы повторяться конечно, т.к. форумчане в нескольких ваших темах уже говорили об этом вам, а именно почитать все таки хоть какую то документацию по ABAP (найти соответствующие курсы и посмотреть примеры, благо их полно в системе). Но складывается ощущение, что вы просто игнорируете эти ответы и продолжаете штамповать подобные темы. |
Автор: | sonics [ Чт, май 17 2018, 16:06 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
ghost написал: Я не хотел бы повторяться конечно, т.к. форумчане в нескольких ваших темах уже говорили об этом вам, а именно почитать все таки хоть какую то документацию по ABAP (найти соответствующие курсы и посмотреть примеры, благо их полно в системе). Но складывается ощущение, что вы просто игнорируете эти ответы и продолжаете штамповать подобные темы. да нет, листаю книги но задачи то специфические, от книг отличаются . . . где могу, так применяю) SAP Press - ABAP Basics, 2007.pdf SAP Press - ABAP Cookbook, 2010.pdf |
Автор: | sonics [ Чт, май 17 2018, 16:44 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
если бы вы еще давали более точные рекомендации по литературе, было совсем супер... а не "что-нибудь") я уже насмотрелся и видео, и книг... |
Автор: | ghost [ Чт, май 17 2018, 16:55 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
курсы BC400 - BC4... |
Автор: | Kuranov.Dmitry [ Чт, май 17 2018, 16:56 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Ну к примеру, ваш пост: viewtopic.php?p=572971#p572971 Вы по синтаксис со скобочками вообще не поняли? |
Автор: | sonics [ Пт, май 18 2018, 09:35 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): Ну к примеру, ваш пост: viewtopic.php?p=572971#p572971 Вы по синтаксис со скобочками вообще не поняли? вроде все понятно, кроме селекта для меня затрудняюсь, у меня сложный селект с left join, с двумя таблицами Code: SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_record FROM (g_tabname) WHERE pernr = '12345678'. + не совсем понял Where pernr = '12345678' мы копируем все записи таблицы gs_record в (g_tabname) (ее мы указываем в case), где pernr - .... это поле ? и что за значение Code: SELECT zppmrp5~matnr_1 zppmrp5~datuv zppmrp5~matnr_2 zppmrp5~matnr zppmrp5~werks zppmrp5~arbpl_1 zppmrp5~arbpl_2 zppmrp5~seqnr zppmrp5~elevel zppmrp5~pbdnr zppmrp5~zbesk zppmrp5~IA * zppmrp5~ENTMG zppmrp5~gamng AS gamng_td zppmrp5~gamng_1 AS gamng_1_td zppmrp5_tmp1~gamng AS gamng_ld zppmrp5_tmp1~gamng_1 AS gamng_1_ld INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5 LEFT JOIN zppmrp5_tmp1 ON zppmrp5_tmp1~matnr = zppmrp5~matnr AND zppmrp5_tmp1~matnr_1 = zppmrp5~matnr_1 AND zppmrp5_tmp1~matnr_2 = zppmrp5~matnr_2 AND zppmrp5_tmp1~arbpl_1 = zppmrp5~arbpl_1 AND zppmrp5_tmp1~arbpl_2 = zppmrp5~arbpl_2 AND zppmrp5_tmp1~seqnr = zppmrp5~seqnr AND zppmrp5_tmp1~werks = zppmrp5~werks AND zppmrp5_tmp1~pbdnr = zppmrp5~pbdnr AND zppmrp5_tmp1~elevel = zppmrp5~elevel WHERE "zppmrp5~elevel = 1 AND zppmrp5~elevel in r_elevel AND zppmrp5~matnr_1 IN so_mat1 AND zppmrp5~matnr_2 IN so_mat2 AND zppmrp5~matnr IN so_matnr AND zppmrp5~arbpl_1 IN so_arb1 AND zppmrp5~arbpl_2 IN so_arb2 AND zppmrp5~ZBESK IN so_ZBESK. SELECT zppmrp5_tmp1~matnr_1 zppmrp5_tmp1~matnr_2 zppmrp5_tmp1~werks zppmrp5_tmp1~matnr zppmrp5_tmp1~arbpl_1 zppmrp5_tmp1~arbpl_2 zppmrp5_tmp1~datuv zppmrp5_tmp1~seqnr zppmrp5_tmp1~elevel zppmrp5_tmp1~pbdnr zppmrp5_tmp1~gamng AS gamng_ld zppmrp5_tmp1~gamng_1 AS gamng_1_ld zppmrp5_tmp1~zbesk zppmrp5_tmp1~IA zppmrp5~gamng AS gamng_td zppmrp5~gamng_1 AS gamng_1_td APPENDING CORRESPONDING FIELDS OF TABLE gt_result_tab FROM zppmrp5_tmp1 LEFT JOIN zppmrp5 ON zppmrp5~matnr = zppmrp5_tmp1~matnr AND zppmrp5~matnr_1 = zppmrp5_tmp1~matnr_1 AND zppmrp5~matnr_2 = zppmrp5_tmp1~matnr_2 AND zppmrp5~arbpl_1 = zppmrp5_tmp1~arbpl_1 AND zppmrp5~arbpl_2 = zppmrp5_tmp1~arbpl_2 AND zppmrp5~seqnr = zppmrp5_tmp1~seqnr AND zppmrp5~werks = zppmrp5_tmp1~werks AND zppmrp5~pbdnr = zppmrp5_tmp1~pbdnr AND zppmrp5~elevel = zppmrp5_tmp1~elevel WHERE "zppmrp5_tmp1~elevel = 1 AND zppmrp5_tmp1~elevel in r_elevel AND zppmrp5_tmp1~matnr_1 IN so_mat1 AND zppmrp5_tmp1~matnr_2 IN so_mat2 AND zppmrp5_tmp1~matnr IN so_matnr AND zppmrp5_tmp1~arbpl_1 IN so_arb1 AND zppmrp5_tmp1~arbpl_2 IN so_arb2 AND zppmrp5_tmp1~ZBESK IN so_ZBESK. попробую поискать примеры динамической выборки еще, чтобы сравнить... да и ошибка Цитата: The field "G_TABNAME" is unknown, but there is a field with the similar name "G_TABMANE" . . . . как говорит один из популярных когда-то мемов "сложнааааааа" |
Страница 2 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |