Текущее время: Пт, июл 25 2025, 05:40

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 13:36 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
Доброго всем дня!
Возникла следующая проблема: создаю ALV Grid с кнопкой управления форматами (выбрать, сохранить, изменить...), на сел. экране есть поле предварительного выбора формата. Так вот если задать нужный формат на сел. экране, то он нормально загружается, отчет отформатирован в соответствии с выбранным форматом. Если же формат выбрать непосредственно в ALV, когда отчет уже сформирован, то он выбирается, но не загружается сортировка и промежуточные суммы.
Делала на примере программы BCALV_GRID_10, там все нормально работает.
Причем если перейду от ALV Grid к List внутри отчета и заново выберу этот формат, то сортировка и промежуточные суммы появляются.
Подскажите, пожалуйста, в чем может быть дело?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 13:50 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Таблица которая в ALV выводится у вас в программе после отображения нигде не сортируется вручную?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 14:07 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
нет, после отображения не сортируется


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 15:13 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 02:02
Сообщения: 188
Откуда: Мирный -> Москва
Пол: Мужской
Код программы судя по всему нужен.
Не понятно сходу... вполне может быть что, допустим, не указано Имя программы (repid).
Или еще какой то параметр.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 15:39 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
Вот вызов метода вывода ALV
Code:
    call method g_grid->set_table_for_first_display
      exporting
        "i_structure_name = 'GT_DATA'
        i_save           = x_save
        i_default        = 'X'
        is_layout        = gs_oo_layout
        is_variant       = gs_variant
      changing
        it_fieldcatalog  = gt_oo_fieldcat
        "it_sort          = gt_oo_sort
        it_outtab        = lt_data.

gs_variant-repid всегда заполнено
вот заполнение layout
Code:
  gs_oo_layout-zebra             = 'X'.
  gs_oo_layout-excp_fname  = gc_lights_name.
  gs_oo_layout-excp_led = 'X'.
  gs_oo_layout-cwidth_opt = 'X'.
  gs_oo_layout-sel_mode = 'A'.
  gs_oo_layout-no_totexp = 'X'.

передавала в set_table_for_first_display начальную сортировку, если формат не задан, но для чистоты эксперимента убрала.
также был перехватчик события after_refresh, его тоже закомментировала, но на результат это никак не повлияло
уже не знаю, в какую сторону смотреть


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 16:04 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
У вас проблема с каким-то одним сохраненным форматом, или на всех форматах сортировка не работает? Возможно формат был сохранен со старой версией каталога полей, после чего от менялся. Попробуйте пересоздать формат. Не изменяя старый, а полностью создать заново (обратите внимание на закладку Сохр. с)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Вт, ноя 15 2011, 16:27 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
Сортировка не загружается на всех форматах в этом отчете. Сейчас создала новый, та же история. Все галки на вкладке "Сохр. с" установлены. Да и сортировка сохраняется. И формат нормально загружается, если его указать на селекционном экране и передать потом в set_table_for_first_display. А вот когда я пытаюсь загрузить формат, в котором есть сортировка, изнутри ALV, то сортировка не загружается.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Ср, ноя 16 2011, 06:57 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Попробуйте закоментировать layout. И покажите, чем заполнен gs_variant когда вариант не выбран на селективном экране.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Ср, ноя 16 2011, 09:56 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
Layout комментировать пробовала - не помогает. А если вариант не выбран, то в gs_variant заполнено только поле report именем программы.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Ср, ноя 16 2011, 11:57 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid
СообщениеДобавлено: Ср, ноя 16 2011, 12:29 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
Вот основные функции программы:
Code:
report  z_xxx.

class lcl_event_receiver definition deferred.
"Объявления переменных
include z_oborot_nks_data.
"Селекционный экран
include z_oborot_nks_scr.
"Класс для ALV
include z_oborot_nks_lcl.


initialization.
  x_save = 'A'.

at selection-screen output.
  "найдем формат по умолчанию
  clear def_layout.
  move sy-repid to def_layout-report.
  call function 'LVC_VARIANT_DEFAULT_GET'
    exporting
      i_save     = x_save
    changing
      cs_variant = def_layout
    exceptions
      not_found  = 2.
  if sy-subrc = 0.
    p_var = def_layout-variant.
    move-corresponding def_layout to spec_layout.
  endif.

at selection-screen on value-request for p_var.
  clear x_layout.
  move sy-repid to x_layout-report.
  call function 'LVC_VARIANT_F4'
    exporting
      is_variant = x_layout
      i_save     = x_save
    importing
      e_exit     = g_exit
      es_variant = spec_layout
    exceptions
      not_found  = 1
      others     = 2.
  if sy-subrc ne 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    if g_exit ne 'X'.
      p_var    = spec_layout-variant.
    endif.
  endif.

at selection-screen.
  if s_astnr is initial and s_psphi is initial and s_pspnr is initial and sy-ucomm = 'ONLI'.
    message e009(z_fi).
  endif.

  if p_var is not initial.
    clear spec_layout.
    move p_var  to spec_layout-variant.
    move sy-repid to spec_layout-report.

    call function 'LVC_VARIANT_EXISTENCE_CHECK'
      exporting
        i_save        = x_save
      changing
        cs_variant    = spec_layout
      exceptions
        wrong_input   = 1
        not_found     = 2
        program_error = 3
        others        = 4.
    if sy-subrc <> 0.
      message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
  endif.

start-of-selection.
  "проверим полномочия по БЕ
  perform func_check_authority.
  "заполним начальную и конечную даты периода
  perform get_dates.
  "находим все СПП-элементы
  perform get_objects.
  "заполняем основную таблицу с данными
  perform get_data.

end-of-selection.
  create object event_rcv.
  if p_alv = 'X'. "вывод в ALV
    perform print_alv.
  endif.
  if p_xls = 'X'. "вывод в Excel
    perform print_xls.
  endif.


Подпрограмма вывода ALV:
Code:
form print_alv .

  call screen '0100'.

endform.                    " PRINT_ALV

module status_0100 output.

  data: lt_data type table of t_data,
        lt_itog_spp type table of t_data.

  field-symbols: <fs_data>     type t_data,
                 <fs_data_spp> type t_data.

  set pf-status 'MAIN100'.
  set titlebar 'MAIN100'.

  if g_container is initial.

    create object g_container
      exporting
        container_name = 'CONTAINER'.
    create object g_grid
      exporting
        i_parent = g_container.

    perform set_settings.

    "set handler event_rcv->on_after_refresh for g_grid.

    "если установлен флаг вывода неправильных оборотов
    if p_wrong is not initial.
      "сформируем итоги по СПП
      sort gt_data by astnr psphi pspnr.
      loop at gt_data assigning <fs_data> where pspnr is not initial.
        at new pspnr.
          insert initial line into table lt_itog_spp assigning <fs_data_spp>.
          <fs_data_spp>-astnr = <fs_data>-astnr.
          <fs_data_spp>-psphi = <fs_data>-psphi.
          <fs_data_spp>-prj_name = <fs_data>-prj_name.
          <fs_data_spp>-pspnr = <fs_data>-pspnr.
          <fs_data_spp>-spp_name = <fs_data>-spp_name.
        endat.
        if <fs_data_spp> is assigned.
          <fs_data_spp>-debetn = <fs_data_spp>-debetn + <fs_data>-debetn.
          <fs_data_spp>-debet = <fs_data_spp>-debet + <fs_data>-debet.
          <fs_data_spp>-kredit = <fs_data_spp>-kredit + <fs_data>-kredit.
          <fs_data_spp>-debetk = <fs_data_spp>-debetk + <fs_data>-debetk.
        endif.
      endloop.
      unassign: <fs_data>, <fs_data_spp>.

      "проверка сумма Кт
      call method event_rcv->calculate_kredit
        changing
          total = lt_itog_spp.
      "убираем правильные строки
      loop at lt_itog_spp assigning <fs_data_spp> where light = '3'.
        delete gt_data where pspnr = <fs_data_spp>-pspnr.
      endloop.
    endif.

    lt_data = gt_data.
    delete gt_data where debetn = 0 and debet = 0 and kredit = 0 and debetk = 0 and kreditk = 0.
    call method g_grid->set_table_for_first_display
      exporting
        "i_structure_name = 'GT_DATA'
        i_save           = x_save
        i_default        = 'X'
        "is_layout        = gs_oo_layout
        is_variant       = gs_variant
      changing
        it_fieldcatalog  = gt_oo_fieldcat
        "it_sort          = gt_oo_sort
        it_outtab        = gt_data.


  endif.

endmodule.                 " STATUS_0100  OUTPUT


Класс-перехватчик событий ALV. Здесь перехватывается событие after_refresh, но как видно выше, оно пока отключено.
Code:
class lcl_event_receiver definition.

  public section.
    methods:
    on_after_refresh for event after_refresh of cl_gui_alv_grid,
    calculate_kredit changing total type tt_data.

endclass.                    "lcl_event_receiver DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_event_receiver implementation.

  method on_after_refresh.
    data:
     total type ref to data,
     subtotal1 type ref to data,
     subtotal2 type ref to data,
     subtotal3 type ref to data.

    field-symbols:
     <total> type tt_data.

    if rf <> space.
      rf = space.
      return.
    endif.

    call method g_grid->get_subtotals
      importing
        ep_collect00 = total
        ep_collect01 = subtotal1
        ep_collect02 = subtotal2
        ep_collect03 = subtotal3.

    assign total->* to <total>.
    call method calculate_kredit
      changing
        total = <total>.

    assign subtotal1->* to <total>.
    call method calculate_kredit
      changing
        total = <total>.

    assign subtotal2->* to <total>.
    call method calculate_kredit
      changing
        total = <total>.

    assign subtotal3->* to <total>.
    call method calculate_kredit
      changing
        total = <total>.

    rf = 'X'.
    call method g_grid->refresh_table_display
      exporting
        i_soft_refresh = 'X'.

  endmethod.                    "on_after_refresh

  method calculate_kredit.

    data: l_anbtr type anep-anbtr,
          r_datum type range of d,
          s_datum like line of r_datum,
          l_datum1 type d,
          l_datum2 type d,
          l_pspnr  type ps_poski.
    field-symbols: <fs_tot> type t_data,
                   <fs_obj> type t_obj.

    loop at total assigning <fs_tot>. "where psphi is not initial.

      write <fs_tot>-pspnr to l_pspnr.

      <fs_tot>-debetk = <fs_tot>-debetn + <fs_tot>-debet - <fs_tot>-kredit.

      check <fs_tot>-pspnr is not initial.
      "определим диапазон дат для выборки оборотов
      read table gt_objects assigning <fs_obj> with key pspnr = <fs_tot>-pspnr.
      if sy-subrc <> 0.
        continue.
      endif.

      clear: l_datum1, l_datum2.
      select single max( abwda ) from coepd into l_datum1
        where objnr = <fs_obj>-objnr
          and abwda < gv_begdate.

      if <fs_obj>-abwda > gv_enddate.
        l_datum2 = gv_enddate.
      else.
        l_datum2 = <fs_obj>-abwda.
      endif.

      refresh r_datum. clear s_datum.
      if l_datum1 is not initial.
        s_datum-sign = 'I'.
        s_datum-option = 'BT'.
        s_datum-low = l_datum1.
        s_datum-high = l_datum2.
      else.
        s_datum-sign = 'I'.
        s_datum-option = 'LT'.
        s_datum-low = l_datum2.
        s_datum-high = ''.
      endif.
      append s_datum to r_datum.

      select single sum( anep~anbtr ) into l_anbtr
        from anep inner join anek on anep~anln1 = anek~anln1 and anep~belnr = anek~belnr
                  inner join anla on anek~anln1 = anla~anln1
        where anla~posnr = l_pspnr
          and anla~anlkl in (gc_anlkl_02, gc_anlkl_04)
          and anek~budat in r_datum
          and ( anep~bwasl like gc_bwasl_tmpl_z
           or anep~bwasl like gc_bwasl_tmpl_3p )
          and anep~afabe = gc_afabe_01
          and anep~lnsan = gc_lnsan_null
          and anep~augln = gc_lnsan_null.

      if l_anbtr <> <fs_tot>-debetk and <fs_tot>-kredit is not initial.
        <fs_tot>-light = '1'.
      else.
        <fs_tot>-light = '3'.
      endif.

    endloop.

  endmethod.                    "calculate_kredit
endclass.                    "lcl_event_receiver IMPLEMENTATION


Заполнение настроек для ALV.
Code:
form set_settings .

  "настроим fieldcatalog
  data: ls_fieldcat type lvc_s_fcat.

  refresh gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-icon          = 'X'.
  ls_fieldcat-ref_table     = 'ICON'.
  ls_fieldcat-ref_field     = 'LIGHT'.
  ls_fieldcat-fieldname     = 'LIGHT'.
  ls_fieldcat-coltext       = '!'.
  ls_fieldcat-key           = 'X'.
  ls_fieldcat-datatype      = 'DEC'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'ASTNR'.
  ls_fieldcat-coltext     = text-005.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
*  ls_fieldcat-txt_field = 'ASTNA'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'ASTNA'.
  ls_fieldcat-coltext     = text-006.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'PSPHI'.
  ls_fieldcat-coltext     = text-007.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
  ls_fieldcat-txt_field     = 'PRJ_NAME'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'PRJ_NAME'.
  ls_fieldcat-coltext     = text-008.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'PSPNR'.
  ls_fieldcat-coltext     = text-009.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
  ls_fieldcat-txt_field = 'SPP_NAME'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'SPP_NAME'.
  ls_fieldcat-coltext     = text-010.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-key           = 'X'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'LIFNR'.
  ls_fieldcat-coltext     = text-011.
  ls_fieldcat-no_zero       = 'X'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'LFA_NAME'.
  ls_fieldcat-coltext     = text-012.
  ls_fieldcat-no_zero       = 'X'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'HKONTB'.
  ls_fieldcat-coltext     = text-013.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'HKONTK'.
  ls_fieldcat-coltext     = text-014.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'XBLNR'.
  ls_fieldcat-coltext     = text-015.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'BLDAT'.
  ls_fieldcat-coltext     = text-016.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'DEBETN'.
  ls_fieldcat-do_sum        = 'X'.
  ls_fieldcat-coltext     = text-017.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-datatype      = 'CURR'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'DEBET'.
  ls_fieldcat-do_sum        = 'X'.
  ls_fieldcat-coltext     = text-018.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-datatype      = 'CURR'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'KREDIT'.
  ls_fieldcat-do_sum        = 'X'.
  ls_fieldcat-coltext     = text-019.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-datatype      = 'CURR'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-tabname       = 'GT_DATA'.
  ls_fieldcat-fieldname     = 'DEBETK'.
  ls_fieldcat-do_sum        = 'X'.
  ls_fieldcat-coltext     = text-020.
  ls_fieldcat-no_zero       = 'X'.
  ls_fieldcat-datatype      = 'CURR'.
  ls_fieldcat-just          = 'R'.
  append ls_fieldcat to gt_oo_fieldcat.

  "настроим layout
  gs_oo_layout-zebra             = 'X'.
*  gs_oo_layout-no_input          = 'X'.
  gs_oo_layout-excp_fname  = gc_lights_name.
  gs_oo_layout-excp_led = 'X'.
  gs_oo_layout-cwidth_opt = 'X'.
  gs_oo_layout-sel_mode = 'A'.
  gs_oo_layout-no_totexp = 'X'.
*  gs_oo_layout-totals_bef = 'X'.

  "настроим sort
  data: ls_sort type lvc_s_sort.
  clear ls_sort.
  ls_sort-spos = '01'.
  ls_sort-fieldname = 'ASTNR'.
*  ls_sort-subtot = 'X'.
  append ls_sort to gt_oo_sort.

  clear ls_sort.
  ls_sort-spos = '02'.
  ls_sort-fieldname = 'PSPHI'.
  ls_sort-subtot = 'X'.
*  ls_sort-expa = 'X'.
  append ls_sort to gt_oo_sort.

  clear ls_sort.
  ls_sort-spos = '03'.
  ls_sort-fieldname = 'PSPNR'.
  ls_sort-subtot = 'X'.
*  ls_sort-expa = 'X'.
  append ls_sort to gt_oo_sort.

  "вариант
  move-corresponding spec_layout to gs_variant.
  gs_variant-report = sy-repid.

endform.                    " SET_SETTINGS


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка в формате ALV Grid  Тема решена
СообщениеДобавлено: Ср, ноя 16 2011, 15:40 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 11 2011, 09:54
Сообщения: 12
УРА! я разобралась!
дело было вот в чем: при загрузке формата проверяется заполнены ли поля tabname в филдкаталоге, оно было не заполнено только в первом поле light
Code:
  clear ls_fieldcat.
  ls_fieldcat-icon          = 'X'.
  ls_fieldcat-ref_table     = 'ICON'.
  ls_fieldcat-ref_field     = 'LIGHT'.
  ls_fieldcat-fieldname     = 'LIGHT'.
  ls_fieldcat-coltext       = '!'.
  ls_fieldcat-key           = 'X'.
  ls_fieldcat-datatype      = 'DEC'.
  append ls_fieldcat to gt_oo_fieldcat.

и если оно не заполнено то туда подставляется единичка. затем читается первая запись филдкаталога и tabname запоминается в локальную переменную. после считывания варианта из БД, происходит преобразование внутреннего формата всех настроек (и сортировки тоже) к внешнему lvc_s_sort. и вот при этом преобразовании происходит чтение филдкаталога с fieldname, по которому сделана сортировка, и tabname равное этой локальной переменной (в которой у нас '1'). а поля по которым сделана сортировка содержат в tabname 'GT_DATA'. это поле не находилось и соответственно запись в таблицу с сортировкой не попадала. я просто добавила для поля light tabname = 'GT_DATA'.
Спасибо всем, кто откликнулся!


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

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


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

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


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

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