Текущее время: Вс, июл 27 2025, 09:21

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


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

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


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

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