SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Динамическая выборка таблиц https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96392 |
Страница 1 из 4 |
Автор: | sonics [ Вт, май 15 2018, 14:15 ] |
Заголовок сообщения: | Динамическая выборка таблиц |
Сама идея - это на начальном экране сделать drop list из таблиц, которые мне нужны, они по структуре одинаковые. И вывод их. Идея есть, как это реализовать, но вот с drop-list на селективном экране - тут у меня остались вопросы. посмотрел пару программ, там не совсем то, что нужно подскажите пожалуйста начало... |
Автор: | Serge69 [ Вт, май 15 2018, 14:21 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Сделай домен со списком значений. и сделай дополнение PARAMETERS ..... TYPE ............... AS LISTBOX VISIBLE LENGTH 70. Есть еще ФМ 'VRM_SET_VALUES' |
Автор: | Kuranov.Dmitry [ Вт, май 15 2018, 14:32 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: TYPE-POOLS: vrm, slist, icon.
PARAMETERS: p_list_a TYPE char3 AS LISTBOX VISIBLE LENGTH 30 OBLIGATORY DEFAULT '001' USER-COMMAND change_p_list_a. " список DATA: list TYPE vrm_values, value LIKE LINE OF list. INITIALIZATION. CLEAR value. REFRESH list. value-key = '001'. value-text = 'Текст 1'. APPEND value TO list. value-key = '002'. value-text = 'Текст2'. APPEND value TO list. value-key = '003'. value-text = 'Текст3'. APPEND value TO list. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_LIST_A' values = list. START-OF-SELECTION. WRITE : 'Вы выбрали:',p_list_a. |
Автор: | sonics [ Вт, май 15 2018, 15:08 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: SELECTION-SCREEN BEGIN OF BLOCK SELECT-TABLES-BLOCK with frame title text-010. INITIALIZATION. CLEAR value. REFRESH list. value-key = '001'. value-text = 'Текст 1'. APPEND value TO list. value-key = '002'. value-text = 'Текст2'. APPEND value TO list. value-key = '003'. value-text = 'Текст3'. APPEND value TO list. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_LIST_A' values = list. SELECTION-SCREEN END OF BLOCK SELECT-TABLES-BLOCK. нуууу, я не совсем понимаю как с этим еще и работать (((( |
Автор: | Kuranov.Dmitry [ Вт, май 15 2018, 15:15 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
и что не понятного? 1) формируем список ключ - текстовое значение 2) запускаем ФМ VRM_SET_VALUES, который заполняет список 3) после запуска в параметре будет лежать выбранный ключ |
Автор: | sonics [ Вт, май 15 2018, 15:22 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): и что не понятного? 1) формируем список ключ - текстовое значение 2) запускаем ФМ VRM_SET_VALUES, который заполняет список 3) после запуска в параметре будет лежать выбранный ключ прошу прощения, все отлично работает) |
Автор: | sonics [ Вт, май 15 2018, 16:16 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Code: SELECTION-SCREEN BEGIN OF BLOCK SELECT-TABLES-BLOCK with frame title text-010. я вложил в такой блок и прописал в текстовых элементах 010 = Сравнение таблиц но нигде не показывается эта надпись... второй вопрос: Code: SELECTION-SCREEN BEGIN OF BLOCK SELECT-TABLES-BLOCK with frame title text-010. SELECTION-SCREEN BEGIN OF LINE. CLEAR value. REFRESH list. value-key = '011'. value-text = 'Вчера'. APPEND value TO list. value-key = '012'. value-text = 'Сегодня'. APPEND value TO list. value-key = '013'. value-text = 'май 2018'. APPEND value TO list. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_LIST_A' values = list. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. CLEAR value. REFRESH list. value-key = '011'. value-text = 'Вчера'. APPEND value TO list. value-key = '012'. value-text = 'Сегодня'. APPEND value TO list. value-key = '013'. value-text = 'май 2018'. APPEND value TO list. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_LIST_b' values = list. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK SELECT-TABLES-BLOCK. не выводит дроп лист список, только дефаултные значения, которые я прописал в блоке объявления переменных, переде селекшн скрин: Code: REPORT zpp_copydata_mrp5_vs_12.
TABLES: zppmrp5, zppmrp5_12. DATA: gt_result_tab TYPE TABLE OF zpp_result_tab_mpr5vs12." WITH HEADER LINE. TYPE-POOLS: vrm, slist, icon. PARAMETERS: p_list_a TYPE char7 AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY DEFAULT 'Вчера'(011) USER-COMMAND change_p_list_a. " список PARAMETERS: p_list_b TYPE char7 AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY DEFAULT 'Сегодня'(012) USER-COMMAND change_p_list_b. " список DATA: list TYPE vrm_values, value LIKE LINE OF list. DATA gs_result_tab LIKE TABLE OF gt_result_tab. DATA: ok_code LIKE sy-ucomm, g_container TYPE scrfname VALUE 'GRID1', grid1 TYPE REF TO cl_gui_alv_grid, gt_fieldcat TYPE lvc_t_fcat," каталог полей gs_layout TYPE lvc_s_layo, g_custom_container TYPE REF TO cl_gui_custom_container. DATA l_elevel like zppmrp5-elevel. RANGES r_elevel FOR l_elevel. FIELD-SYMBOLS: <fs_fieldcat> TYPE lvc_s_fcat, <gs_result_tab> LIKE LINE OF gt_result_tab. |
Автор: | Kuranov.Dmitry [ Вт, май 15 2018, 16:28 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Естественно, у вас полная ерунда написана. что делает код внутри блока SELECTION-SCREEN BEGIN OF LINE. ? зачем вы его туда запихнули? почитайте курс по ABAP в плане структуры программы У вас не показывается надпись из text-010 потому что в блоке нет ни одного параметра. и сап видать решил что пустой блок не нужен и можно оптимизировать экран |
Автор: | sonics [ Вт, май 15 2018, 16:38 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Тем не менее, в дроп листе только дефаултное значение. |
Автор: | Kuranov.Dmitry [ Вт, май 15 2018, 16:40 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
так заполните список.. выше я привел пример как. заполнить его надо в блоке INITIALIZATION. и его не надо запихивать в блок SELECTION-SCREEN BEGIN.... SELECTION-SCREEN END.... |
Автор: | sonics [ Ср, май 16 2018, 08:37 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Kuranov.Dmitry написал(а): так заполните список.. выше я привел пример как. заполнить его надо в блоке INITIALIZATION. и его не надо запихивать в блок SELECTION-SCREEN BEGIN.... SELECTION-SCREEN END.... я поставил блок инициализации после селекшн скрин но сначала у меня выводится таблица, а если нажать esc, то выпадает в экрна выбора. почему так? ведь перед инициализацией экран выбора стоит |
Автор: | sonics [ Ср, май 16 2018, 08:38 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Осталось только выводить text-001 |
Автор: | Saperx [ Ср, май 16 2018, 09:01 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Потому что системе пофигу как вы в программе свой код вставляете. Она работает основываясь на событиях селекционного экрана. Инициализация выполняется всегда до вывода Selection screen, а т.к. у вас нет start-of-selection перед началом основной логики, то система считает что это тоже часть инициализации. Почитайте про логику селекционного экрана, а то уже не смешно, честно. Подумайте, почему код ниже не скомпилируется? Code: DATA: gt_mseg TYPE TABLE OF mseg. START-OF-SELECTION. PERFORM get_data. *&---------------------------------------------------------------------* *& Form get_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_data. SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE gt_mseg WHERE mblnr = '1'. ENDFORM. "get_data IF LINES( gt_mseg[] ) > 0. WRITE 'Selection works!'. ENDIF. Как можно писать код, не понимая как он работает? p.s. Страшно как-то становится, вдруг за вами потом придется программы дорабатывать. |
Автор: | sonics [ Ср, май 16 2018, 09:04 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Saperx написал(а): Потому что системе пофигу как вы в программе свой код вставляете. Она работает основываясь на событиях селекционного экрана. Инициализация выполняется всегда до вывода Selection screen, а т.к. у вас нет start-of-selection перед началом основной логики, то система считает что это тоже часть инициализации. Почитайте про логику селекционного экрана, а то уже не смешно, честно. Подумайте, почему код ниже не скомпилируется? Code: DATA: gt_mseg TYPE TABLE OF mseg. START-OF-SELECTION. PERFORM get_data. *&---------------------------------------------------------------------* *& Form get_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_data. SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE gt_mseg WHERE mblnr = '1'. ENDFORM. "get_data IF LINES( gt_mseg[] ) > 0. WRITE 'Selection works!'. ENDIF. Как можно писать код, не понимая как он работает? p.s. Страшно как-то становится, вдруг за вами потом придется программы дорабатывать. а ведь придется же.... и вправду..... |
Автор: | sonics [ Ср, май 16 2018, 09:13 ] |
Заголовок сообщения: | Re: Динамическая выборка таблиц |
Вроде разобрался... спасибо.. посмотрел примеры программ осталось разобраться с этим через case и выполнение тех или иных действий) но с этим я еще попробую сам поработать |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |