Ver Mensaje Individual
  #12  
Viejo 09/06/08, 10:11:32
vickxo vickxo is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Madrid, Espaņa
Mensajes: 118
Existe el evento END_OF_PAGE

Si se puede susar el evento END_OF_PAGE dentro de los ALV, te anexo un ejemplo

REPORT ztufi091 .
*&---------------------------------------------------------------------*
*& Report ZDEMO_ALVGRID *
*& *
*&---------------------------------------------------------------------*
*& *
*& Example of a simple ALV Grid Report *
*& ................................... *
*& *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*&---------------------------------------------------------------------*
*REPORT zdemo_alvgrid .
TABLES: ekko, cdpos.
TYPE-POOLS: slis. "ALV Declarations
DATA: desc(25) TYPE c.
**Iconos en el estatus
DATA: status_icon TYPE icons-text,
icon_name(20) TYPE c,
icon_text(10) TYPE c.
RANGES: fname FOR cdpos-fname.
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
banfn TYPE eban-banfn,
bnfpo TYPE eban-bnfpo,
icon_a1 TYPE icons-text,
ussap_a1 TYPE sy-uname,
nombrea1(20) TYPE c,
END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.

*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.

INITIALIZATION.
refresh FNAME.

*fname-sign = 'I'.
*fname-option = 'EQ'
*fname-low = 'ZESTADO'.
*append fname.
************************************************************************
*Start-of-selection.
START-OF-SELECTION.

PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_events.
PERFORM build_print_params.
PERFORM display_alv_report.


*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you more control of the final product.

* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
* I.e. Field type may be required in-order for
* the 'TOTAL' function to work.

fieldcatalog-fieldname = 'BANFN'.
fieldcatalog-seltext_m = 'Sol. Pedido'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
* fieldcatalog-do_sum = 'X'.
* fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'BNFPO'.
fieldcatalog-seltext_m = 'Sol. Ped. Item'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

* fieldcatalog-fieldname = 'STATU'.
* fieldcatalog-seltext_m = 'Status'.
* fieldcatalog-col_pos = 2.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'AEDAT'.
* fieldcatalog-seltext_m = 'Item change date'.
* fieldcatalog-col_pos = 3.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'MATNR'.
* fieldcatalog-seltext_m = 'Material Number'.
* fieldcatalog-col_pos = 4.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'MENGE'.
* fieldcatalog-seltext_m = 'PO quantity'.
* fieldcatalog-col_pos = 5.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'MEINS'.
* fieldcatalog-seltext_m = 'Order Unit'.
* fieldcatalog-col_pos = 6.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'NETPR'.
* fieldcatalog-seltext_m = 'Net Price'.
* fieldcatalog-col_pos = 7.
* fieldcatalog-outputlen = 15.
* fieldcatalog-datatype = 'CURR'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'PEINH'.
* fieldcatalog-seltext_m = 'Price Unit'.
* fieldcatalog-col_pos = 8.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
fieldcatalog-fieldname = 'ICON_A1'.
fieldcatalog-seltext_m = 'A1'.
fieldcatalog-col_pos = 9.
fieldcatalog-icon = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'USSAP_A1'.
fieldcatalog-seltext_m = 'Usuario SAP'.
fieldcatalog-col_pos = 10.
fieldcatalog-icon = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NOMBREA1'.
fieldcatalog-seltext_m = 'Nombre Responsable'.
fieldcatalog-col_pos = 11.
fieldcatalog-icon = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

* fieldcatalog-fieldname = 'ICON_GC'.
* fieldcatalog-seltext_m = 'GC'.
* fieldcatalog-col_pos = 10.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'ICON_A2'.
* fieldcatalog-seltext_m = 'A2'.
* fieldcatalog-col_pos = 11.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'ICON_A3'.
* fieldcatalog-seltext_m = 'A3'.
* fieldcatalog-col_pos = 12.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'ICON_A4'.
* fieldcatalog-seltext_m = 'A4'.
* fieldcatalog-col_pos = 13.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
*
* fieldcatalog-fieldname = 'ICON_A5'.
* fieldcatalog-seltext_m = 'A5'.
* fieldcatalog-col_pos = 14.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
*
* fieldcatalog-fieldname = 'ICON_A6'.
* fieldcatalog-seltext_m = 'A6'.
* fieldcatalog-col_pos = 15.
* fieldcatalog-icon = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.


ENDFORM. " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
* gd_layout-totals_only = 'X'.
* gd_layout-f2code = 'DISP'. "Sets fcode for when double
* "click(press f2)
* gd_layout-zebra = 'X'.
* gd_layout-group_change_edit = 'X'.
* gd_layout-header_text = 'helllllo'.
ENDFORM. " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
* i_grid_title = outtext
i_callback_html_end_of_list = 'END_OF_LIST_HTML'
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
* it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
i_save = 'X'
* is_variant = z_template
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&------------------------------------------------------------------*
*& Form end_of_list_html
*&------------------------------------------------------------------*
* output at the end of the list - not in printed output *
*&------------------------------------------------------------------*

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.


*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
DATA: it_cdpos LIKE cdpos OCCURS 0 WITH HEADER LINE.
SELECT *
FROM eban
INTO CORRESPONDING FIELDS OF TABLE it_ekko
WHERE banfn = '2200000041'.


SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdpos
FROM cdpos
WHERE objectclas = 'BANF'
AND objectid = '2200000041'
AND fname in fname .



LOOP AT it_ekko INTO wa_ekko.
CASE wa_ekko-bnfpo.
WHEN 1.
desc = 'Pendiente'.
icon_name = 'ICON_YELLOW_LIGHT'.
PERFORM icon_create USING desc icon_name
CHANGING wa_ekko-icon_a1.
* WHEN 2.
* desc = 'Aprobado'.
* icon_name = 'ICON_GREEN_LIGHT'.
* PERFORM icon_create USING desc icon_name
* CHANGING wa_ekko-icon_gc.
* WHEN OTHERS.
* desc = 'Rechazado'.
* icon_name = 'ICON_RED_LIGHT'.
* PERFORM icon_create USING desc icon_name
* CHANGING wa_ekko-icon_a2.
ENDCASE.
MODIFY it_ekko FROM wa_ekko.
ENDLOOP.


ENDFORM. " DATA_RETRIEVAL


*-------------------------------------------------------------------*
* Form TOP-OF-PAGE *
*-------------------------------------------------------------------*
* ALV Report Header *
*-------------------------------------------------------------------*
FORM top-of-page.

*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
* Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
APPEND wa_header TO t_header.
CLEAR wa_header.

* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.

* Total No. of Records Selected
DESCRIBE TABLE it_ekko LINES ld_lines.
ld_linesc = ld_lines.
CONCATENATE 'Total No. of Records Selected: ' ld_linesc
INTO t_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = t_line.
APPEND wa_header TO t_header.
* CLEAR: wa_header, t_line.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
* i_logo = 'Z_LOGO'.
ENDFORM.


*------------------------------------------------------------------*
* FORM USER_COMMAND *
*------------------------------------------------------------------*
* --> R_UCOMM *
* --> RS_SELFIELD *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

* Check function code
CASE r_ucomm.
WHEN '&IC1'.
** Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
** Read data table, using index of row user clicked on
* READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
** Set parameter ID for transaction screen field
* SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
** Sxecute transaction ME23N, and skip initial data entry screen
* CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.


*&---------------------------------------------------------------------*
*& Form BUILD_EVENTS
*&---------------------------------------------------------------------*
* Build events table
*----------------------------------------------------------------------*
FORM build_events.
DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
READ TABLE gt_events WITH KEY name = slis_ev_end_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.

READ TABLE gt_events WITH KEY name = slis_ev_end_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.

ENDFORM. " BUILD_EVENTS


*&---------------------------------------------------------------------*
*& Form BUILD_PRINT_PARAMS
*&---------------------------------------------------------------------*
* Setup print parameters
*----------------------------------------------------------------------*
FORM build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
gd_prntparams-no_print_selinfos = 'X'.
ENDFORM. " BUILD_PRINT_PARAMS


*&---------------------------------------------------------------------*
*& Form END_OF_PAGE
*&---------------------------------------------------------------------*
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
SKIP.
WRITE:/40 'Page:', sy-pagno .
ENDFORM.


*&---------------------------------------------------------------------*
*& Form END_OF_LIST
*&---------------------------------------------------------------------*
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.

SKIP.
WRITE:/40 'Page:', sy-pagno .
ENDFORM.

*---------------------------------------------------------------------*
* FORM end_of_page *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form icon_create
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_DESC text
* -->P_ICON_NAME text
*----------------------------------------------------------------------*
FORM icon_create USING desc
icon_name
CHANGING status_icon.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_name
text = desc
info = 'Status'
add_stdinf = 'X'
IMPORTING
result = status_icon
EXCEPTIONS
icon_not_found = 1
outputfield_too_short = 2
OTHERS = 3.
ENDFORM. " icon_create
__________________
el tema esta en hacer la pregunta correcta...
Responder Con Cita