SAPфорум.RU https://sapboard.ru/forum/ |
|
Динамический GUI status & title https://sapboard.ru/forum/viewtopic.php?f=13&t=93009 |
Страница 1 из 1 |
Автор: | AL13SH [ Вт, май 17 2016, 10:18 ] |
Заголовок сообщения: | Динамический GUI status & title |
Приветствую! есть ли у кого какие соображения по этому поводу и возможно примеры? |
Автор: | LAT [ Вт, май 17 2016, 14:13 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров. 1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно). |
Автор: | AL13SH [ Вт, май 17 2016, 14:34 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
LAT написал(а): 2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров. 1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно). а поконкретнее про статус можно? или где почитать ? а лучше пример где это реализовано |
Автор: | Besa [ Вт, май 17 2016, 16:24 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
AL13SH написал(а): LAT написал(а): 2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров. 1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно). а поконкретнее про статус можно? или где почитать ? а лучше пример где это реализовано Да куда еще конкретнее? Пользуйтесь поиском и жмите f1 на операторах, многие вопросы отпадут. |
Автор: | UKY [ Ср, май 18 2016, 04:18 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL. |
Автор: | Besa [ Ср, май 18 2016, 17:45 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
UKY написал(а): Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL. о-о-о ну там тогда и реализацию логики этих кнопок надо выносить в бади... иначе какой смысл... |
Автор: | AL13SH [ Пт, май 20 2016, 15:19 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
Besa написал: UKY написал(а): Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL. о-о-о ну там тогда и реализацию логики этих кнопок надо выносить в бади... иначе какой смысл... Вот это вроде, то что нужно! можно поподробнее? смысл в том, чтобы одним viewer*ом выводить десятки разных моделей. или есть другой более простой способ? |
Автор: | Удав [ Вс, май 22 2016, 23:04 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
AL13SH написал(а): смысл в том, чтобы одним viewer*ом выводить десятки разных моделей. или есть другой более простой способ? См. транзакцию SE16 |
Автор: | LAT [ Пн, май 23 2016, 11:27 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
AL13SH написал(а): смысл в том, чтобы одним viewer*ом выводить десятки разных моделей. А гуи-статусы тут при чем?ЗЫ. Если глянуть первый вопрос и эту фразу, создается впечатление, что [в терминологии MVC] Вы хотите к одному представлению подцепить несколько контроллеров. |
Автор: | AL13SH [ Вт, май 24 2016, 12:02 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
Вот что в итоге получилось. В ПБО экрана в зависимости от выбранных параметров присваиваются соответствующие параметры конструктора Представления. Code: IF ( p_add = abap_true OR p_dir = abap_true ) AND go_pay_viewer IS NOT BOUND. IF p_add = abap_true. gv_ddstruct = 'ZHR_T_PLANN_PAY'. gv_way = 'GO_PAY_WORKER->MT_OUTTAB'. lo_tdestr ?= cl_abap_tabledescr=>describe_by_data( go_pay_worker->mt_outtab ). CREATE DATA gv_tab TYPE HANDLE lo_tdestr. IF gv_tab IS BOUND. ASSIGN gv_tab->* TO <gt_outtab>. IF <gt_outtab> IS ASSIGNED. <gt_outtab> = go_pay_worker->mt_outtab. ENDIF. ENDIF. ELSEIF p_dir = abap_true. go_pay_worker->fill_dir( ). gv_ddstruct = 'ZHR_T_BANK_DIR'. gv_way = 'GO_PAY_WORKER->MT_BANK_DIR'. lo_tdestr ?= cl_abap_tabledescr=>describe_by_data( go_pay_worker->mt_bank_dir ). CREATE DATA gv_tab TYPE HANDLE lo_tdestr. IF gv_tab IS BOUND. ASSIGN gv_tab->* TO <gt_outtab>. IF <gt_outtab> IS ASSIGNED. <gt_outtab> = go_pay_worker->mt_bank_dir. ENDIF. ENDIF. ENDIF. CREATE OBJECT go_pay_viewer EXPORTING iv_dynpro = '0100' iv_cont = 'CONT1'. ENDIF. go_pay_viewer->setup_alv( i_has_top = abap_false ). go_pay_viewer->disp( ). Так выглядит конструктор: Code: CLASS lcl_payment_viewer IMPLEMENTATION. METHOD constructor. * В конструкторе мы используем динамические параметры для реализации возможности выводы разных гридов super->constructor( sy-repid ). me->md_repid = sy-repid. me->md_dynnr = iv_dynpro. me->md_container_name = iv_cont. me->md_ddstruct = gv_ddstruct. me->md_data_table = gv_way. ENDMETHOD. Выдержка из настроек альва Code: METHOD setup_alv. super->setup_alv( i_has_top = abap_false ). .... CREATE OBJECT go_pay_controller . SET HANDLER go_pay_controller->on_toolbar FOR me->mr_grid. SET HANDLER go_pay_controller->on_user_command FOR me->mr_grid. SET HANDLER go_pay_controller->on_data_changed FOR me->mr_grid. ..... .................t_fieldcatalog( ). me->set_handlers( ). me->set_layout( ). me->set_sort( ). ENDMETHOD. разные гриды выводятся нормально, но не работают кнопки на тулбаре. В отладке всё корректно вроде, и до рефреша доходит, но на экране изменений я не вижу. Вот тулбар: Code: METHOD on_toolbar. DATA: ls_toolbar TYPE stb_button . FIELD-SYMBOLS: <fs_alv_buttons> TYPE stb_button. READ TABLE e_object->mt_toolbar ASSIGNING <fs_alv_buttons> WITH KEY function = '&LOCAL&INSERT_ROW'. CHECK sy-subrc EQ 0. <fs_alv_buttons>-icon = icon_insert_row. <fs_alv_buttons>-function = 'INS'. <fs_alv_buttons>-quickinfo = 'Добавить строку'(010). CLEAR ls_toolbar. ENDMETHOD. Вот обработка этой кнопки: Code: METHOD on_user_command. DATA: lt_rows TYPE lvc_t_row , ls_rows TYPE lvc_s_row , ls_outtab TYPE zhr_t_plann_pay , lv_pa_basis TYPE zhr_e_pay_basis , lv_txt TYPE char_60 , ls_bank_dir TYPE zhr_t_bank_dir . FIELD-SYMBOLS: <ls_outtab> TYPE zhr_t_plann_pay . CASE e_ucomm. WHEN 'INS'. IF p_add = abap_true. ls_outtab-pay_basis = '1'. lv_pa_basis = ls_outtab-pay_basis. CALL FUNCTION 'ADS2KIPBRO_GET_DOMAIN_TEXT' EXPORTING e_table = 'ZHR_T_PLANN_PAY' e_field = 'PAY_BASIS' e_value = lv_pa_basis IMPORTING i_text = lv_txt EXCEPTIONS illegal_input = 1 domain_not_found = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE text-007 TYPE 'I' DISPLAY LIKE 'E'. ENDIF. ls_outtab-pay_basis_text = lv_txt. ls_outtab-obj_mr_type = '0001'. CALL FUNCTION 'ADS2KIPBRO_GET_DOMAIN_TEXT' EXPORTING e_table = 'ZHR_T_PLANN_PAY' e_field = 'OBJ_MR_TYPE' e_value = ls_outtab-obj_mr_type IMPORTING i_text = lv_txt EXCEPTIONS illegal_input = 1 domain_not_found = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE text-007 TYPE 'I' DISPLAY LIKE 'E'. ENDIF. ls_outtab-obj_mr_type_txt = lv_txt. * ls_outtab-initiatir_pay = sy-uname. ls_outtab-pay_mark = 'ОПЛАЧЕНО'. CALL FUNCTION 'ADS2KIPBRO_GET_DOMAIN_TEXT' EXPORTING e_table = 'ZHR_T_PLANN_PAY' e_field = 'PAY_MARK' e_value = ls_outtab-pay_mark IMPORTING i_text = lv_txt EXCEPTIONS illegal_input = 1 domain_not_found = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE text-007 TYPE 'I' DISPLAY LIKE 'E'. ENDIF. ls_outtab-pay_mark = lv_txt. APPEND ls_outtab TO go_pay_worker->mt_outtab. go_pay_viewer->refresh( ). ELSEIF p_dir = abap_true. ls_bank_dir-currency = 'UE'. APPEND ls_bank_dir TO go_pay_worker->mt_bank_dir. go_pay_viewer->refresh( ). ENDIF. ENDCASE. ENDMETHOD. "on_user_command Буду признателен, если поделитесь соображениям на тему: где я накосячил? |
Автор: | AL13SH [ Вт, май 24 2016, 12:14 ] |
Заголовок сообщения: | Re: Динамический GUI status & title |
а всё сам нашёл ошибку! я филд символ не обновлял после добавления строки в таблицу |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |