Текущее время: Ср, май 22 2024, 20:29

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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