Текущее время: Чт, апр 25 2024, 02:14

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Динамический GUI status & title
СообщениеДобавлено: Вт, май 17 2016, 10:18 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
Приветствую! есть ли у кого какие соображения по этому поводу и возможно примеры?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вт, май 17 2016, 14:13 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров.
1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вт, май 17 2016, 14:34 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
LAT написал(а):
2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров.
1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно).



а поконкретнее про статус можно? или где почитать ? а лучше пример где это реализовано


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вт, май 17 2016, 16:24 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
AL13SH написал(а):
LAT написал(а):
2. Создаете гуи-заголовок 'xxx' содержащий строку &1, вызываете его в PBO как SET TITLEBAR 'xxx' WITH 'yyy'. Если 1 плейсхолдера - мало, в хелпе утверждается, что можно использовать до 9 плейсхолдеров.
1. С гуи-статусом немного хуже. В зависимости от задачи, можно создать гуи-статус на все случаи жизни (Вашей программы) и динамически показывать/скрывать/менять названия для кнопок. Или создать несколько гуи-статусов и переключать их в PBO. Или подключить уже готовые гуи-статусы других программ (только обрабатывать их команды, естественно, придется самостоятельно).



а поконкретнее про статус можно? или где почитать ? а лучше пример где это реализовано

Да куда еще конкретнее? :)
Пользуйтесь поиском и жмите f1 на операторах, многие вопросы отпадут.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Ср, май 18 2016, 04:18 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? :)

P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Ср, май 18 2016, 17:45 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
UKY написал(а):
Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? :)

P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL.

о-о-о ну там тогда и реализацию логики этих кнопок надо выносить в бади... иначе какой смысл...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Пт, май 20 2016, 15:19 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
Besa написал:
UKY написал(а):
Ещё в GUI статус можно динамические названия кнопок выводить. Можно заранее сделать миллион динамических кнопок и динамически же их обрабатывать. Вот только зачем? :)

P.S.: Пример динамической кнопки можно посмотреть в группе функций MEGUI, статус NORMAL.

о-о-о ну там тогда и реализацию логики этих кнопок надо выносить в бади... иначе какой смысл...


Вот это вроде, то что нужно! можно поподробнее?

смысл в том, чтобы одним viewer*ом выводить десятки разных моделей. или есть другой более простой способ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вс, май 22 2016, 23:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
AL13SH написал(а):
смысл в том, чтобы одним viewer*ом выводить десятки разных моделей. или есть другой более простой способ?

См. транзакцию SE16 :wink:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Пн, май 23 2016, 11:27 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
AL13SH написал(а):
смысл в том, чтобы одним viewer*ом выводить десятки разных моделей.
А гуи-статусы тут при чем?
ЗЫ. Если глянуть первый вопрос и эту фразу, создается впечатление, что [в терминологии MVC] Вы хотите к одному представлению подцепить несколько контроллеров.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вт, май 24 2016, 12:02 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
Вот что в итоге получилось.

В ПБО экрана в зависимости от выбранных параметров присваиваются соответствующие параметры конструктора Представления.
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



Буду признателен, если поделитесь соображениям на тему: где я накосячил? :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический GUI status & title
СообщениеДобавлено: Вт, май 24 2016, 12:14 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
а всё сам нашёл ошибку! я филд символ не обновлял после добавления строки в таблицу


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB