Текущее время: Сб, апр 27 2024, 11:13

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


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

Сейчас этот форум просматривают: Korvax


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

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