SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Динамическая выборка таблиц https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96392 |
Страница 3 из 4 |
Автор: | Kuranov.Dmitry [ Пт, май 18 2018, 09:46 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: + не совсем понял Where pernr = '12345678' О_о написали здоровый селект с джоином, кучей условий выборки: Code: 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. это понятно , а Code: Where pernr = '12345678' нет? мой пример от вашего отличается только тем, что у меня выбираются все поля, у вас поля перечислены. и условий у меня одно, а у вас десяток |
Автор: | sonics [ Пт, май 18 2018, 10:28 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
оу, тогда все становится на свои места.. спасибо за разъяснение ) я неправильно понял... |
Автор: | pberezin [ Пт, май 18 2018, 11:16 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
автор, Вам следует для начала почитать книжку Кречмера (Разработка приложений SAP R/3 на языке ABAP/4 - она на русском), но читать её нужно совместно с родной аглицкой справкой SAP (потому как раздел про динамическую выборку из таблиц БД в Кречмере есть, но примеры кода очень скудные и неполные), или например с электронной справкой ABAP.HLP (Edited by Henrik Frank E-mail: postmaster@henrikfrank.dk Homepage: http://www.henrikfrank.dk Last updated October 2002) - там примеров кода поболее, хоть она и древняя, но базовые знания лучше понять поможет. |
Автор: | sonics [ Пт, май 18 2018, 11:45 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): мой пример от вашего отличается только тем, что у меня выбираются все поля, у вас поля перечислены. и условий у меня одно, а у вас десяток остался все тот же вопрос, как обратиться к двум таблицам, если переменная g_tabname у нас одна а из какого CASE (p_list_a или p_list_a) мы не можем указать.... или же мы как-то можем ? откуда и что берется... два left join же |
Автор: | sonics [ Пт, май 18 2018, 11:46 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
pberezin написал: автор, Вам следует для начала почитать книжку Кречмера (Разработка приложений SAP R/3 на языке ABAP/4 - она на русском), но читать её нужно совместно с родной аглицкой справкой SAP (потому как раздел про динамическую выборку из таблиц БД в Кречмере есть, но примеры кода очень скудные и неполные), или например с электронной справкой ABAP.HLP (Edited by Henrik Frank E-mail: postmaster@henrikfrank.dk Homepage: http://www.henrikfrank.dk Last updated October 2002) - там примеров кода поболее, хоть она и древняя, но базовые знания лучше понять поможет. спасибо, скачал, в ближайшее время продолжу ее изучение |
Автор: | Kuranov.Dmitry [ Пт, май 18 2018, 12:01 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
sonics написал(а): Kuranov.Dmitry написал(а): мой пример от вашего отличается только тем, что у меня выбираются все поля, у вас поля перечислены. и условий у меня одно, а у вас десяток остался все тот же вопрос, как обратиться к двум таблицам, если переменная g_tabname у нас одна а из какого CASE (p_list_a или p_list_a) мы не можем указать.... или же мы как-то можем ? откуда и что берется... два left join же *facepalm* завести вторую переменную для второй таблицы кто мешает? |
Автор: | Kuranov.Dmitry [ Пт, май 18 2018, 12:09 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: DATA tabname_1(20). DATA tabname_2(20). tabname_1 = 'zppmrp5'. tabname_2 = 'zppmrp5_tmp1' SELECT t1~matnr_1 t1~datuv t1~matnr_2 t1~matnr t1~werks t1~arbpl_1 t1~arbpl_2 t1~seqnr t1~elevel t1~pbdnr t1~zbesk t1~IA t1~gamng AS gamng_td t1~gamng_1 AS gamng_1_td t2~gamng AS gamng_ld t2~gamng_1 AS gamng_1_ld INTO CORRESPONDING FIELDS OF TABLE gt_result_tab FROM (tabname_1) as t1 LEFT JOIN (tabname_2) as t2 ON t2~matnr = t1~matnr AND t2~matnr_1 = t1~matnr_1 AND t2~matnr_2 = t1~matnr_2 AND t2~arbpl_1 = t1~arbpl_1 AND t2~arbpl_2 = t1~arbpl_2 AND t2~seqnr = t1~seqnr AND t2~werks = t1~werks AND t2~pbdnr = t1~pbdnr AND t2_tmp1~elevel = t1~elevel WHERE t1~elevel in r_elevel AND t1~matnr_1 IN so_mat1 AND t1~matnr_2 IN so_mat2 AND t1~matnr IN so_matnr AND t1~arbpl_1 IN so_arb1 AND t1~arbpl_2 IN so_arb2 AND t1~ZBESK IN so_ZBESK. |
Автор: | sonics [ Пт, май 18 2018, 12:59 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): *facepalm* завести вторую переменную для второй таблицы кто мешает? эх.. я познаю этот мир.. со временем.. |
Автор: | sonics [ Ср, май 23 2018, 11:18 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
вопрос добавился надо было внедрить новые кнопки в меню из стандартного модуля NAVP_PROFILE_CHANGE через INCLUDE LNAVIGATION_PROFILE_DIALOGU03. Code: Function Module NAVP_PROFILE_CHANGE Navigationsprofil ändern Function Group NAVIGATION_PROFILE_DIALOG UIs for the Navigation Profile Program Name SAPLNAVIGATION_PROFILE_DIALOG INCLUDE Name LNAVIGATION_PROFILE_DIALOGU03 грубо говоря документация такова. как я и думал, но простого инклюда не хватает... Цитата: The main program of the function "NAVP_PROFILE_CHANGE" does not begin with "FUNCTION-POOL". подскажите хотя бы общими словами, что надо сделать ? |
Автор: | Kuranov.Dmitry [ Ср, май 23 2018, 11:29 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
я так понял, вы внутри своей программы написали Code: INCLUDE LNAVIGATION_PROFILE_DIALOGU03. можно спросить, зачем? В двух словах, примерно так Почитать что такое функциональные модули, и где они должны располагаться. ФМ должны быть внутри функциональной группы, а не внутри программы |
Автор: | sonics [ Ср, май 23 2018, 11:35 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): В двух словах, примерно так Почитать что такое функциональные модули, и где они должны располагаться. ФМ должны быть внутри функциональной группы, а не внутри программы это вы про FUNCTION-POOL? так, хорошо, продолжу чтение, значит в правильной стороне. |
Автор: | Kuranov.Dmitry [ Ср, май 23 2018, 11:38 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
sonics написал(а): Kuranov.Dmitry написал(а): В двух словах, примерно так Почитать что такое функциональные модули, и где они должны располагаться. ФМ должны быть внутри функциональной группы, а не внутри программы это вы про FUNCTION-POOL? так, хорошо, продолжу чтение, значит в правильной стороне. что конкретно вы хотите добиться? Вызвать ФМ NAVP_PROFILE_CHANGE? напишите CALL FUNCTION 'NAVP_PROFILE_CHANGE' и передайте ему требуемые параметры. никаких инклудов не надо |
Автор: | sonics [ Чт, май 24 2018, 11:31 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): что конкретно вы хотите добиться? Вызвать ФМ NAVP_PROFILE_CHANGE? напишите CALL FUNCTION 'NAVP_PROFILE_CHANGE' и передайте ему требуемые параметры. никаких инклудов не надо есть NAVP_T_OKCODE - таблица дополнительных функций профиля навигации, пакет - NAVIGATION_PROFILE ее хочу вставить во таблицу-результат, которую мы выше сформировали. Code: CALL FUNCTION 'NAVP_PROFILE_CHANGE' " EXPORTING is_profile_complete = navp_s_profile_complete iv_save_mode = navp_save_mode iv_default_mode = navp_default_mode iv_disable_call_transaction = ABAP_FALSE " xfeld iv_disable_call_okcode = ABAP_FALSE " xfeld iv_disable_call_class = ABAP_FALSE " xfeld iv_disable_menu = ABAP_FALSE " xfeld it_okcode = navp_t_okcode it_fieldname = navp_t_fieldname IMPORTING es_changed_profile_complete = " navp_s_profile_complete . " NAVP_PROFILE_CHANGE . " NAVP_PROFILE_CHANGE IF SY-SUBRC EQ 0. "All OK ENDIF. и объявил все вначале Code: DATA: ld_es_changed_profile_complete TYPE NAVP_S_PROFILE_COMPLETE , ld_is_profile_complete TYPE NAVP_S_PROFILE_COMPLETE , ld_iv_save_mode TYPE NAVP_SAVE_MODE , ld_iv_default_mode TYPE NAVP_DEFAULT_MODE , ld_iv_disable_call_transaction TYPE XFELD , ld_iv_disable_call_okcode TYPE XFELD , ld_iv_disable_call_class TYPE XFELD , ld_iv_disable_menu TYPE XFELD , ld_it_okcode TYPE NAVP_T_OKCODE , ld_it_fieldname TYPE NAVP_T_FIELDNAME . ld_is_profile_complete = 'Check type of data required'. ld_iv_save_mode = 'Check type of data required'. ld_iv_default_mode = 'Check type of data required'. ld_iv_disable_call_transaction = 'Check type of data required'. ld_iv_disable_call_okcode = 'Check type of data required'. ld_iv_disable_call_class = 'Check type of data required'. ld_iv_disable_menu = 'Check type of data required'. ld_it_okcode = 'Check type of data required'. ld_it_fieldname = 'Check type of data required'.. теперь ошибки по конвертации Цитата: The type of "LD_IS_PROFILE_COMPLETE" cannot be converted to the type of "'Check type of data required'". The type of "LD_IT_OKCODE" cannot be converted to the type of "'Check type of data required'". NAVP_T_OKCODE - таблица дополнительных функций профиля навигации, пакет - NAVIGATION_PROFILE |
Автор: | Kuranov.Dmitry [ Чт, май 24 2018, 11:53 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
LD_IT_OKCODE имеет тип таблицы, вы пытаетесь присвоить строку LD_IS_PROFILE_COMPLETE это структура, вы пытаетесь туда строку запихнуть. естественно ошибки компиляции |
Автор: | sonics [ Чт, май 24 2018, 16:48 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
жаль нет примера... |
Страница 3 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |