Текущее время: Чт, май 15 2025, 23:27

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: ALV инициализация развертки суммирования
СообщениеДобавлено: Пт, окт 07 2005, 13:59 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 07 2005, 13:38
Сообщения: 79
Откуда: ECC 6.0
Пол: Мужской
Привет всем! :-)

Не получается сделать так, чтоб при выводе ALV-списка сразу устанавливался нужный уровень развертки (тот, который через меню списка Параметры настройки -> Уровни суммирования -> Установить развертку... вызывается)

Нужно, чтоб сразу после вывода не показывались обычные строки, а показывались только totals и subtotals (которые уже заданы через таблицы типа sils_sortinfo_alv и slis_fieldcat_alv) С ALV работаю через REUSE_... Пробовал задавать следующие поля: в структуре slis_layout_alv : totals_only, expand_all и в таблице типа slis_sortinfo_alv: comp, expa -- ничего не работает, и не нахожу даже где дальше копать. А через ALV-вариант (формат) запускать не хочется...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 07 2005, 15:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Пример на основе BCALV_FULLSCREEN_DEMO
Code:
REPORT BCALV_FULLSCREEN_DEMO NO STANDARD PAGE HEADING.
*"General Data
TYPE-POOLS: SLIS.
DATA: BEGIN OF GT_OUTTAB OCCURS 0.
        INCLUDE STRUCTURE SFLIGHT.
DATA: END OF GT_OUTTAB,
      GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
      G_EXIT_CAUSED_BY_CALLER,
      GS_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER,
      G_REPID LIKE SY-REPID.
*"Callback
DATA:
    GT_EVENTS      TYPE SLIS_T_EVENT,
    GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
    G_STATUS_SET   TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
    G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
    G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
    G_TOP_OF_LIST  TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
    G_END_OF_LIST  TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.
*"Variants
DATA: GS_VARIANT LIKE DISVARIANT,
      G_SAVE.
INITIALIZATION.
G_REPID = SY-REPID.
PERFORM LAYOUT_INIT USING GS_LAYOUT.
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
GS_VARIANT-REPORT = G_REPID.
G_SAVE           = 'A'.
START-OF-SELECTION.
*"Data Selection
  PERFORM SELECT_DATA TABLES GT_OUTTAB.
END-OF-SELECTION.
*"List Header for Top-Of-Page
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
*"Display List

data: t_sort type SLIS_T_SORTINFO_ALV with header line.
data: t_fcat type SLIS_T_FIELDCAT_ALV with header line.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
*   I_PROGRAM_NAME               =
*   I_INTERNAL_TABNAME           =
    I_STRUCTURE_NAME             = 'SFLIGHT'
*   I_CLIENT_NEVER_DISPLAY       = 'X'
*   I_INCLNAME                   =
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = t_fcat[]
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

loop at t_fcat.
  if t_fcat-fieldname = 'PAYMENTSUM'.
    t_fcat-do_sum = 'X'.
    modify t_fcat.
  endif.
endloop.

t_sort-spos = '01'.
t_sort-fieldname = 'CARRID'.
t_sort-subtot = 'X'.
append t_sort.

t_sort-spos = '02'.
t_sort-fieldname = 'CONNID'.
t_sort-subtot = 'X'.
t_sort-expa = 'X'.
append t_sort.

t_sort-spos = '03'.
t_sort-fieldname = 'FLDATE'.
t_sort-subtot = 'X'.
t_sort-expa = 'X'.
append t_sort.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
*      I_BACKGROUND_ID    = 'ALV_BACKGROUND'
       i_buffer_active    = ' '
       I_CALLBACK_PROGRAM = G_REPID
*      I_STRUCTURE_NAME   = 'SFLIGHT'
       IS_LAYOUT          = GS_LAYOUT
       I_SAVE             = G_SAVE
       IS_VARIANT         = GS_VARIANT
       IT_EVENTS          = GT_EVENTS[]
       it_sort            = t_sort[]
       it_fieldcat        = t_fcat[]
*      I_SCREEN_START_COLUMN    = 0     "Use coordinates for
*      I_SCREEN_START_LINE      = 0     "display as dialog box
*      I_SCREEN_END_COLUMN      = 0
*      I_SCREEN_END_LINE        = 0
  IMPORTING
       E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
       ES_EXIT_CAUSED_BY_USER  = GS_EXIT_CAUSED_BY_USER
  TABLES
       T_OUTTAB = GT_OUTTAB
  EXCEPTIONS
       PROGRAM_ERROR = 1
       OTHERS        = 2.
IF SY-SUBRC = 0.
  IF G_EXIT_CAUSED_BY_CALLER = 'X'.
*"  Forced Exit by calling program
*"  <do_something>.
  ELSE.
*"  User left list via F3, F12 or F15
    IF GS_EXIT_CAUSED_BY_USER-BACK = 'X'.       "F3
*"    <do_something>.
    ELSE.
      IF GS_EXIT_CAUSED_BY_USER-EXIT = 'X'.     "F15
*"      <do_something>.
      ELSE.
        IF GS_EXIT_CAUSED_BY_USER-CANCEL = 'X'. "F12
*"        <do_something>.
        ELSE.
*"        should not occur!
*"        <do_Abnormal_End>.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
ELSE.
*"Fatal error callin ALV
* MESSAGE AXXX(XY) WITH ...
ENDIF.
*"Form routines
"
FORM SELECT_DATA TABLES RT_OUTTAB LIKE GT_OUTTAB[].
*"- Selection of data to be displayed
  SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS
                   OF TABLE RT_OUTTAB
                   UP TO 00030 ROWS.
ENDFORM.

FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
*"Build layout for list display
  RS_LAYOUT-DETAIL_POPUP      = 'X'.
ENDFORM.

FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
*"Registration of events to happen during list display
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
      EXPORTING
           I_LIST_TYPE = 0
      IMPORTING
           ET_EVENTS   = RT_EVENTS.
  READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                           INTO LS_EVENT.
  IF SY-SUBRC = 0.
    MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
    APPEND LS_EVENT TO RT_EVENTS.
  ENDIF.
ENDFORM.
"
FORM TOP_OF_PAGE.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
           I_LOGO             = 'ENJOYSAP_LOGO'
            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
"
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
                                        SLIS_T_LISTHEADER.
  DATA: LS_LINE TYPE SLIS_LISTHEADER.
*
* LIST HEADING LINE: TYPE H
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'H'.
* LS_LINE-KEY:  NOT USED FOR THIS TYPE
  LS_LINE-INFO = TEXT-100.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
* STATUS LINE: TYPE S
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'S'.
  LS_LINE-KEY  = TEXT-101.
  LS_LINE-INFO = TEXT-102.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
  LS_LINE-KEY  = TEXT-103.
  LS_LINE-INFO = TEXT-104.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
* ACTION LINE: TYPE A
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'A'.
* LS_LINE-KEY:  NOT USED FOR THIS TYPE
  LS_LINE-INFO = TEXT-105.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 07 2005, 15:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
А вообще, по-хорошему нужно воспользоваться ФМ LVC_SUMLEVEL_SELECT
и уже на основе его результатов заполнить флаги в сортировках..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 07 2005, 15:36 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 07 2005, 13:38
Сообщения: 79
Откуда: ECC 6.0
Пол: Мужской
T, спасибо большое! Оказывается не догадался поставить t_sort-expa = 'X' не на первое поле :oops:


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

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


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

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


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

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