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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Не рефрешится грид
СообщениеДобавлено: Пн, июн 27 2016, 12:16 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
На экране три вкладки с подэкранами
На первой вкладке добавляю строчку, а она не добавляется(

ПБО этого подэкрана
Code:
lcl_viewer=>mv_viewer_cont = '1'.
    gv_ddstruct = 'ZHR_T_BUD_PLAN'.
    gv_way = 'GO_APPLICATION->MT_BUD_PLAN'.
    go_tdestr ?= cl_abap_tabledescr=>describe_by_data( go_application->mt_bud_plan ).
    CREATE DATA gv_tab TYPE HANDLE go_tdestr.
    IF gv_tab IS BOUND.
      ASSIGN gv_tab->* TO <gt_outtab>.
      IF <gt_outtab> IS ASSIGNED.
        <gt_outtab> = go_application->mt_bud_plan.
      ENDIF.
    ENDIF.
    lcl_viewer=>create(
      EXPORTING
        iv_dynpro1 = '0001'
        iv_cont1   = 'CONT_PLAN').


    READ TABLE lcl_viewer=>mt_inst_counter
      INTO lcl_viewer=>ms_inst_counter
        WITH TABLE KEY count = lcl_viewer=>mv_viewer_cont.

    go_viewer = lcl_viewer=>ms_inst_counter-object.
go_viewer->setup_alv( i_has_top = abap_false ).


Обработка добавления сроки
Code:
  lcl_viewer=>mv_viewer_cont =  '1'.
        READ TABLE lcl_viewer=>mt_inst_counter
           INTO lcl_viewer=>ms_inst_counter
             WITH TABLE KEY count = lcl_viewer=>mv_viewer_cont.
         go_viewer = lcl_viewer=>ms_inst_counter-object.

        APPEND ls_outtab TO go_application->mt_bud_plan.
        FREE gv_tab.
        go_tdestr ?= cl_abap_tabledescr=>describe_by_data( go_application->mt_bud_plan ).
        CREATE DATA gv_tab TYPE HANDLE go_tdestr.
        IF gv_tab IS BOUND.
          ASSIGN gv_tab->* TO <gt_outtab>.
          IF <gt_outtab> IS ASSIGNED.
            <gt_outtab> =  go_application->mt_bud_plan.
          ENDIF.
        ENDIF.
        go_viewer->refresh( ).


Уважаемые гуру, можете ли что-нибудь подсказать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Пн, июн 27 2016, 13:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Вы бы хоть определения переменных приложили. Или у вас в планах найти того, кто лучше всего гадает на кофейной гуще?
Сделаю предположение: дело в том, что вы вызываете refresh без параметров. В этом случае происходит soft refresh. Для полноценного обновления найдите соответствующую константу full и используйте ее.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Пн, июн 27 2016, 15:48 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
Кодер написал(а):
Вы бы хоть определения переменных приложили. Или у вас в планах найти того, кто лучше всего гадает на кофейной гуще?
Сделаю предположение: дело в том, что вы вызываете refresh без параметров. В этом случае происходит soft refresh. Для полноценного обновления найдите соответствующую константу full и используйте ее.



какие именно переменные надо пояснить?

расскажите пожалуйста в чём разница между soft_refresh и refresh


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Пн, июн 27 2016, 21:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
AL13SH написал(а):
какие именно переменные надо пояснить?


Например go_viewer. Кто его знает как у вас типизирована эта переменная? Мое предположение исходит из того, что это cl_salv_table.

AL13SH написал(а):
расскажите пожалуйста в чём разница между soft_refresh и refresh


Хелп читать пробовали?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 09:27 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
go_viewer типа lcl_viewer.... salv не использую
в качестве класса грида cl_gui_alv_grid


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 09:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
AL13SH написал(а):
go_viewer типа lcl_viewer.... salv не использую
в качестве класса грида cl_gui_alv_grid

Это просто праздник какой-то! Т.е. вы ищете решение, указав в вопросе свой локальный класс, без информации, что же в нем стандартного. Прекрасно, просто прекрасно! Вы определенно бьете рекорды по неумению формулировать вопросы.
Снова читайте хелп.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 11:44 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
Code:
CLASS lcl_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.                    "constructor
  METHOD setup_alv.
* Ничего интересного
    super->setup_alv( i_has_top = abap_false ).

    APPEND:
                cl_gui_alv_grid=>mc_fc_loc_copy           TO  me->mt_toolbar_excluding
             ,   cl_gui_alv_grid=>mc_fc_loc_append_row          TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_loc_copy_row       TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_loc_cut            TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_loc_paste          TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_loc_paste_new_row  TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_refresh            TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_print              TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_mb_sum                TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_views              TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_info               TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_mb_export             TO  me->mt_toolbar_excluding
              , cl_gui_alv_grid=>mc_fc_check              TO  me->mt_toolbar_excluding
              .

    IF go_controller IS NOT BOUND.
      CREATE OBJECT go_controller.
    ENDIF.

    SET HANDLER go_controller->on_toolbar   FOR me->mr_grid.
    SET HANDLER go_controller->on_user_command   FOR me->mr_grid.
    IF mv_viewer_cont = 1.
      me->set_fieldcat( ).
    ENDIF.
*    me->set_layout( ).
*    me->set_sort( ).
    me->disp( ).


  ENDMETHOD.                    "setup_alv
  METHOD create.
    DATA:
          lo_viewer TYPE REF TO lcl_viewer.

    CREATE OBJECT lo_viewer
      EXPORTING
        iv_dynpro = iv_dynpro1
        iv_cont   = iv_cont1.

    lcl_viewer=>ms_inst_counter-count = mv_viewer_cont.
    lcl_viewer=>ms_inst_counter-object = lo_viewer.
    APPEND lcl_viewer=>ms_inst_counter TO lcl_viewer=>mt_inst_counter.

  ENDMETHOD.                    "create
  METHOD free.

    super->free( ).

  ENDMETHOD.                    "free
  METHOD disp.
    FIELD-SYMBOLS: <lt_data> TYPE ANY TABLE.
    ASSIGN gv_tab->* TO <lt_data>.

    CALL METHOD me->mr_grid->set_table_for_first_display
      EXPORTING
*       i_buffer_active               =
*       i_consistency_check           =
*       i_structure_name              =
*       is_variant                    =
*       i_save                        =
*       i_default                     = 'X'
*       is_layout                     = me->ms_layo
*       is_print                      =
*       it_special_groups             =
        it_toolbar_excluding          = me->mt_toolbar_excluding
*       it_hyperlink                  =
      CHANGING
        it_outtab                     = <lt_data>
        it_fieldcatalog               = me->mt_fcat
*       it_sort                       = me->mt_sort
*       it_filter                     =
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.

    IF sy-subrc <> 0.
    ENDIF.



  ENDMETHOD.                    "disp
  METHOD refresh.
*      CALL METHOD me->mr_grid->refresh_table_display
**     EXPORTING
**       is_stable =
**       i_soft_refresh =
*         EXCEPTIONS
*           finished  = 1
*           OTHERS    = 2 .
*
*      IF sy-subrc <> 0.
*      ENDIF.


      lcl_viewer=>mv_viewer_cont =  '1'.
        READ TABLE lcl_viewer=>mt_inst_counter
           INTO lcl_viewer=>ms_inst_counter
             WITH TABLE KEY count = lcl_viewer=>mv_viewer_cont.
         go_viewer = lcl_viewer=>ms_inst_counter-object.

go_viewer->mr_grid->refresh_table_display(
EXCEPTIONS
           finished  = 1
           OTHERS    = 2 ).


      lcl_viewer=>mv_viewer_cont =  '2'.
        READ TABLE lcl_viewer=>mt_inst_counter
           INTO lcl_viewer=>ms_inst_counter
             WITH TABLE KEY count = lcl_viewer=>mv_viewer_cont.
         go_viewer = lcl_viewer=>ms_inst_counter-object.

go_viewer->mr_grid->refresh_table_display(
EXCEPTIONS
           finished  = 1
           OTHERS    = 2 ).


  ENDMETHOD.                    "refresh
  METHOD set_fieldcat .
    DATA:   lt_f4      TYPE lvc_t_f4,
            ls_f4      TYPE lvc_s_f4.

    FIELD-SYMBOLS:  <fs_fcat> TYPE lvc_s_fcat.
    LOOP AT mt_fcat ASSIGNING <fs_fcat>.
      CASE <fs_fcat>-fieldname.
        WHEN 'FIO'.
          <fs_fcat>-outputlen = 20.

        WHEN 'KEY_ID'.
          <fs_fcat>-outputlen = 20.
        WHEN 'TIME'.
          <fs_fcat>-outputlen = 4.
        WHEN 'GRAYD'.
          <fs_fcat>-outputlen = 6.
        WHEN 'RATE'.
          <fs_fcat>-outputlen = 6.
        WHEN 'SUMM'.
          <fs_fcat>-outputlen = 8.
        WHEN OTHERS.
          <fs_fcat>-tech = abap_true.
      ENDCASE.
    ENDLOOP.

  ENDMETHOD.                    "set_fcat

ENDCLASS.                    "lcl_viewer IMPLEMENTATION



вот весь класс


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 13:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Ну так что, теперь у вас все рефрешится?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 13:48 
Специалист
Специалист

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 14:07 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
у вас добавление строк в PAI а обновление в PBO экрана , а то по сплошному коду не понятно ?

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 14:59 
Специалист
Специалист

Зарегистрирован:
Пт, янв 22 2016, 10:20
Сообщения: 170
добавление в контроллере, на событие on_user_comand по нажатию клавиши


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 15:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
AL13SH: а у вас изначально что-то в этом гриде есть вообще? Правильно ли я понимаю, что у вас изначально таблица пустая и вы добавляете строку в пустую таблу?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 15:14 
Специалист
Специалист

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 15:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
AL13SH: тогда мое предположение такое: вы перемудрили. У вас создается табла через reference. Далее, вы ее разыменовываете в field-symbol. После этого, содержимое этого самого филд-символа вы и привязываете к алв. Но дело в том, что при этом происходит следующее: данные таблицы на самом деле существуют в куче. А референс содержит только ссылку на область памяти в куче.
Когда же вы добавляете строку в таблицу вы сперва чистите содержимое референса, а потом пересоздаете его заново. В куче выделяется новая область. И она с 99% вероятностью не совпадает с исходной. Алв при этом ссылается на старую область памяти, в нее никаких строк по прежнему не добавлядось.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не рефрешится грид
СообщениеДобавлено: Вт, июн 28 2016, 15:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
возможно у вас на каждый pbo новый грид


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2, 3  След.

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


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

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


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

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