SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Возможно ли указать container для REUSE_ALV_GRID_DISPLAY_LVC



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Сергей
Участник
Участник



Joined: 25 Oct 2007
Posts: 49

PostPosted: Mon Nov 19, 2007 11:20 am    Post subject: Возможно ли указать container для REUSE_ALV_GRID_DISPLAY_LVC Reply with quote

Добрый день!
Нарисовалась такая задача, прежде чем переписывать на объектный грид хотел посоветоваться, возможно удастся обойтись малой кровью.
Существующая разработка написана с использованием REUSE_ALV_GRID_DISPLAY_LVC, то есть занимает весь экран. Потребовалось в нижней части экрана добавить свое поле с выводом в него некой суммарной информации из выделенных пользователем строк. Но грид занимает весть экран, а можно ли как-нибудь для него указать контейнер, в котором он будет размещаться, как это делается с использованием
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Mon Nov 19, 2007 12:37 pm    Post subject: Reply with quote

Используй событие HTML_END_OF_LIST. Примерно так:
Code:
DATA: SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE,
      REPID LIKE SY-REPID.

SELECT * FROM SPFLI INTO TABLE SPFLI.

REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    I_CALLBACK_PROGRAM          = REPID
    I_CALLBACK_HTML_END_OF_LIST = 'END_OF_LIST_HTML'
    I_STRUCTURE_NAME            = 'SPFLI'
  TABLES
    T_OUTTAB                    = SPFLI.

FORM END_OF_LIST_HTML USING END TYPE REF TO CL_DD_DOCUMENT.
  DATA: LS_TEXT TYPE SDYDO_TEXT_ELEMENT,
        L_GRID     TYPE REF TO CL_GUI_ALV_GRID,
        F(14) TYPE C VALUE 'SET_ROW_HEIGHT'.

  LS_TEXT = 'Footer title'.

* adds and icon (red triangle)
  CALL METHOD END->ADD_ICON
    EXPORTING
      SAP_ICON = 'ICON_MESSAGE_ERROR_SMALL'.

* adds test (via variable)
  CALL METHOD END->ADD_TEXT
    EXPORTING
      TEXT         = LS_TEXT
      SAP_EMPHASIS = 'strong'.

* adds new line (start new line)
  CALL METHOD END->NEW_LINE.

* display text(bold)
  CALL METHOD END->ADD_TEXT
    EXPORTING
      TEXT         = 'Bold text'
      SAP_EMPHASIS = 'strong'.

* adds new line (start new line)
  CALL METHOD END->NEW_LINE.

* display text(normal)
  CALL METHOD END->ADD_TEXT
    EXPORTING
      TEXT = 'Normal text'.

* adds new line (start new line)
  CALL METHOD END->NEW_LINE.

* display text(bold)
  CALL METHOD END->ADD_TEXT
    EXPORTING
      TEXT         = 'Yellow triangle'
      SAP_EMPHASIS = 'strong'.

* adds and icon (yellow triangle)
  CALL METHOD END->ADD_ICON
    EXPORTING
      SAP_ICON = 'ICON_LED_YELLOW'.

* display text(normal)
  CALL METHOD END->ADD_TEXT
    EXPORTING
      TEXT = 'More text'.

*set height of this section
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = L_GRID.

  CALL METHOD L_GRID->PARENT->PARENT->(F)
    EXPORTING
      ID     = 3
      HEIGHT = 14.

ENDFORM.                    "end_of_list_html
Back to top
View user's profile Send private message Blog
Сергей
Участник
Участник



Joined: 25 Oct 2007
Posts: 49

PostPosted: Mon Nov 19, 2007 1:43 pm    Post subject: Reply with quote

John Doe, спасибо, попробую.
Может подскажешь, как инициировать вызов этого события из другого, например на нажатие Enter в гриде. Собственно задача остается та же, отрисовка результатов подсчете в нижней строке.
Или, наверно,
CALL METHOD GRID1->refresh_table_display.
его автоматом и вызовет?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Mon Nov 19, 2007 1:57 pm    Post subject: Reply with quote

До оно вроде сразу отрабатывает, при построении выводной формы. Никакие refresh его не вызовут. Если грид не редактируемый - то все данные уже есть. Суммируй и выводи эти итоги в динамическом html.
Back to top
View user's profile Send private message Blog
Сергей
Участник
Участник



Joined: 25 Oct 2007
Posts: 49

PostPosted: Mon Nov 19, 2007 2:18 pm    Post subject: Reply with quote

Тут надо так реализовать. Пользователь выделил несколько строк, нажал Enter и чтобы в поле внизу экрана вывелась сумма именно по этим строкам. В начальный момент, когда грид только отобразился, сам понимаешь, еще ничего не выделено. Отчет не редактируемый, но должен быть интерактивным на действия пользователя.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Mon Nov 19, 2007 2:47 pm    Post subject: Reply with quote

На счет отлавливания нажатия enter в reuse_alv_grid я не знаю, но можно всю обработку повесить на собственную кнопку (что-нибудь типа "Рассчет"). После выполнения любой из функций мы вваливаемся в подпрограмму с динамическим html.
Предложу следующий вариант:
1. Создаем свой gui_status с нужной кнопкой (либо копируем стандартный STANDARD_FULLSCREEN из программы SAPLSLVC_FULLSCREEN с добавлением своей кнопки).
2. В подпрограмме на I_CALLBACK_USER_COMMAND пишем такой код
Code:
 DATA: GRID TYPE REF TO CL_GUI_ALV_GRID.

      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          E_GRID = GRID.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.

      CALL METHOD GRID->GET_SELECTED_ROWS...
и вычисляем нужные итоги, значения которых присваиваем глобально определенным в программе переменным.
3. В подпрограмме на I_CALLBACK_HTML_END_OF_LIST пишем проверку на заполнение этих глобальных переменных и формирование необходимого html кода.
Back to top
View user's profile Send private message Blog
Сергей
Участник
Участник



Joined: 25 Oct 2007
Posts: 49

PostPosted: Mon Nov 19, 2007 11:11 pm    Post subject: Reply with quote

Спасибо John Doe, Ваши советы помогли быстро выполнить задание.
Может кому быдет полезно, нашел примеры, как выравнять текст по колонкам:

Code:
*&--------------------------------------------------------------------*
*& Form html_END_of_list
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_TOP text
*---------------------------------------------------------------------*
FORM HTML_END_OF_LIST USING R_TOP TYPE REF TO CL_DD_DOCUMENT.

DATA: TEXT TYPE SDYDO_TEXT_ELEMENT.
DATA: S_TABLE TYPE REF TO CL_DD_TABLE_ELEMENT.
DATA: COL_KEY TYPE REF TO CL_DD_AREA.
DATA: COL_INFO TYPE REF TO CL_DD_AREA.
* DATA: A_LOGO TYPE REF TO CL_DD_AREA.
* DATA: LOGO TYPE SDYDO_VALUE.

** split TOP-Document
* CALL METHOD R_TOP->VERTICAL_SPLIT
* EXPORTING
* SPLIT_AREA = R_TOP
* SPLIT_WIDTH = '70%'
* IMPORTING
* RIGHT_AREA = A_LOGO.

** fill TOP-Document
TEXT = 'Example of Footer'.
CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_STYLE = 'HEADING'. "Font for heading

* Create a new line
CALL METHOD R_TOP->NEW_LINE.
CALL METHOD R_TOP->NEW_LINE.

* Create a new table
CALL METHOD R_TOP->ADD_TABLE
EXPORTING
NO_OF_COLUMNS = 2 "No of columns
WITH_HEADING = ' '
BORDER = '0'
IMPORTING
TABLE = S_TABLE.

* Adding the colums into table
CALL METHOD S_TABLE->ADD_COLUMN
IMPORTING
COLUMN = COL_KEY. "First column name

CALL METHOD S_TABLE->ADD_COLUMN
IMPORTING
COLUMN = COL_INFO. "Second column name

* Labels
TEXT = 'Label1'.

CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'. "Bold font

* Create a space
CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 6.


TEXT = '600' .
CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_STYLE = 'Key'. "Blue color -Key


CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 3.

TEXT = 'Label 2'.
CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT.

* Adding new row
CALL METHOD S_TABLE->NEW_ROW.
TEXT = 'Label 3'.
CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 7.
TEXT = 'C-A-004'.

CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT.

CALL METHOD S_TABLE->NEW_ROW.

TEXT = 'Warehouse number'.
CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 6.

TEXT = '200' .
CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_STYLE = 'Success'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 3.

TEXT = 'marked success'.
CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT.

CALL METHOD S_TABLE->NEW_ROW.

CALL METHOD R_TOP->NEW_LINE.
TEXT = 'This last line is a comment in italics.'.
CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'EMPHASIS'.

*To add a logo
CALL METHOD R_TOP->NEW_LINE.
* CALL METHOD A_LOGO->ADD_PICTURE
* EXPORTING
* PICTURE_ID = 'ENJOYSAP_LOGO'.

ENDFORM. "html_END_of_list

FORM HTML_TOP_OF_PAGE USING R_TOP TYPE REF TO CL_DD_DOCUMENT.

DATA: TEXT TYPE SDYDO_TEXT_ELEMENT.
DATA: S_TABLE TYPE REF TO CL_DD_TABLE_ELEMENT.
DATA: COL_KEY TYPE REF TO CL_DD_AREA.
DATA: COL_INFO TYPE REF TO CL_DD_AREA.
DATA : COL_INFO1 TYPE REF TO CL_DD_AREA.

TEXT = 'Planned Vs Actual report'.

CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_STYLE = 'HEADING'.

CALL METHOD R_TOP->ADD_GAP
EXPORTING
WIDTH = 70.

TEXT = 'Legend'.

CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_STYLE = 'HEADING'.

* Create a new line
CALL METHOD R_TOP->NEW_LINE.
CALL METHOD R_TOP->NEW_LINE.


CALL METHOD R_TOP->ADD_TABLE
EXPORTING
NO_OF_COLUMNS = 3
WITH_HEADING = ' '
BORDER = '0'
IMPORTING
TABLE = S_TABLE.

CALL METHOD S_TABLE->ADD_COLUMN
IMPORTING
COLUMN = COL_KEY.

CALL METHOD S_TABLE->ADD_COLUMN
IMPORTING
COLUMN = COL_INFO.

CALL METHOD S_TABLE->ADD_COLUMN
IMPORTING
COLUMN = COL_INFO1.

TEXT = '1 st row'.
CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD COL_KEY->ADD_GAP
EXPORTING
WIDTH = 50.

TEXT = 'Green'.
CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_COLOR = 'LIST_POSITIVE_INV'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 6.

TEXT = 'Planned equal Actual'.

CALL METHOD COL_INFO1->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD S_TABLE->NEW_ROW.

CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD COL_KEY->ADD_GAP
EXPORTING
WIDTH = 50.

TEXT = 'Red'.

CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_COLOR = 'LIST_NEGATIVE_INV'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 6.

TEXT = 'Rejected Planned Salary'.

CALL METHOD COL_INFO1->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD S_TABLE->NEW_ROW.

CALL METHOD COL_KEY->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

CALL METHOD COL_KEY->ADD_GAP
EXPORTING
WIDTH = 50.

TEXT = 'Blue'.

CALL METHOD COL_INFO->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_COLOR = 'LIST_HEADING_INV'.

CALL METHOD COL_INFO->ADD_GAP
EXPORTING
WIDTH = 6.

CLEAR TEXT .
TEXT = 'Unplanned Salary increase'.

CALL METHOD COL_INFO1->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'Strong'.

ENDFORM. "html_top_of_page
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.