Posted: Mon Nov 19, 2007 11:20 am Post subject: Возможно ли указать container для REUSE_ALV_GRID_DISPLAY_LVC
Добрый день!
Нарисовалась такая задача, прежде чем переписывать на объектный грид хотел посоветоваться, возможно удастся обойтись малой кровью.
Существующая разработка написана с использованием REUSE_ALV_GRID_DISPLAY_LVC, то есть занимает весь экран. Потребовалось в нижней части экрана добавить свое поле с выводом в него некой суммарной информации из выделенных пользователем строк. Но грид занимает весть экран, а можно ли как-нибудь для него указать контейнер, в котором он будет размещаться, как это делается с использованием
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
?
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'.
John Doe, спасибо, попробую.
Может подскажешь, как инициировать вызов этого события из другого, например на нажатие Enter в гриде. Собственно задача остается та же, отрисовка результатов подсчете в нижней строке.
Или, наверно,
CALL METHOD GRID1->refresh_table_display.
его автоматом и вызовет?
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Mon Nov 19, 2007 1:57 pm Post subject:
До оно вроде сразу отрабатывает, при построении выводной формы. Никакие refresh его не вызовут. Если грид не редактируемый - то все данные уже есть. Суммируй и выводи эти итоги в динамическом html.
Тут надо так реализовать. Пользователь выделил несколько строк, нажал Enter и чтобы в поле внизу экрана вывелась сумма именно по этим строкам. В начальный момент, когда грид только отобразился, сам понимаешь, еще ничего не выделено. Отчет не редактируемый, но должен быть интерактивным на действия пользователя.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Mon Nov 19, 2007 2:47 pm Post subject:
На счет отлавливания нажатия 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 кода.
Спасибо 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.
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.
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.