Текущее время: Пн, июн 30 2025, 03:11

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


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

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


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

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