Sei sulla pagina 1di 7

*&---------------------------------------------------------------------*

*& Include
ZALV_REPORT_INCLUDE
*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Rutina de despliegue de control ALV
*&---------------------------------------------------------------------*
*&
Form RUTINA_PRINT
*&---------------------------------------------------------------------*
FORM rutina_print
TABLES lt_result.
DATA: wa_catalogo TYPE slis_fieldcat_alv.
DATA: wa_sortcat TYPE slis_sortinfo_alv.

PERFORM layout_init USING gs_layout.


PERFORM eventtab_build USING gt_events[].
*"List Header for Top-Of-Page
PERFORM comment_build USING gt_list_top_of_page[].
Refresh: t_catalogo.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name
= w_nameprog
i_internal_tabname
= w_namevar
i_inclname
= w_nameprog
CHANGING
ct_fieldcat
= t_catalogo
EXCEPTIONS
inconsistent_interface = 1
program_error
= 2
OTHERS
= 3.
Read table t_ncol index 1.
If sy-subrc ne 0.
PERFORM titles TABLES t_catalogo.
Else.
PERFORM titlese TABLES t_catalogo.
Endif.
If _w_sort_cat eq 'X'.
PERFORM sort TABLES t_sortcat.
Endif.

**

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program
= w_nameprog
i_callback_user_command = 'USER_COMMAND'
i_background_id
= 'ZIMG_EA_BACKGROUND_00'
is_layout
= gs_layout
it_fieldcat
= t_catalogo
it_events
= gt_events[]
it_sort
= t_sortcat
i_save
= 'A'
is_variant
= e_variant
TABLES
t_outtab
= lt_result
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
ENDFORM.

" rep_ppal

*---------------------------------------------------------------------*
*
USER_COMMAND
*
*---------------------------------------------------------------------*
**FORM user_command USING F-02 LIKE sy-ucomm
**
rs_selfield TYPE slis_selfield.
**
**ENDFORM.
*---------------------------------------------------------------------*
*
FORM LAYOUT_INIT
*
*---------------------------------------------------------------------*
FORM layout_init USING rs_layout TYPE slis_layout_alv.
* Layaout de control ALV
*"Build layout for list display
rs_layout-detail_popup
= 'X'.
* rs_layout-no_colhead = 'X'.
rs_layout-info_fieldname
= 'COLOR'.
"List color
rs_layout-zebra
= 'X'.
rs_layout-colwidth_optimize
= 'X'.
rs_layout-f2code
= '&ETA'.
"Double click
rs_layout-key_hotspot
= 'X'. "Hotspot(Single click triggers F2)
rs_layout-get_selinfos
= 'X'.
rs_layout-totals_text
= 'Totals'(201).
If _sw_user_command eq 'X'.
Clear rs_layout-f2code.
Endif.
If _layout_zebra eq 'X'.
rs_layout-zebra
Endif.
ENDFORM.

" Double click


" End _sw_user_command

= ' '.
"layout_init

*---------------------------------------------------------------------*
*
FORM EVENTTAB_BUILD
*
*---------------------------------------------------------------------*
* --> RT_EVENTS
*
*---------------------------------------------------------------------*
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.

* Incluye evento para llamar menu


If _sw_status eq 'X'.
READ TABLE rt_events WITH KEY name = 'PF_STATUS_SET'
INTO ls_event.
IF sy-subrc = 0.

MOVE 'PF_STATUS' TO ls_event-form.


APPEND ls_event TO rt_events.
ENDIF.
Endif.

" End _sw_status

* Incluye evento para ejecutar alguna opcion del menu


If _sw_user_command eq 'X'.
READ TABLE rt_events WITH KEY name = 'USER_COMMAND'
INTO ls_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO ls_event-form.
APPEND ls_event TO rt_events.
ENDIF.
Endif.
" End _sw_user_command
ENDFORM.

"eventtab_build

*&---------------------------------------------------------------------*
*&
Form pf_status_set_evento
*&---------------------------------------------------------------------*
FORM pf_status USING rt_extab TYPE slis_t_extab.
* Determino cules eventos van a interactuar en el ALV.
SET PF-STATUS 'STANDARD'.
ENDFORM.

" pf_status

*---------------------------------------------------------------------*
*
FORM TOP_OF_PAGE
*
*---------------------------------------------------------------------*
FORM top_of_page.
**DATA: logo(40).
If logo eq Space.
logo = 'ZIMG_EA_LOGO_00'.
Endif.
If logo eq 'ILSA' or logo = 'ZIMG_EA_LOGO_00'.
logo = 'ZIMG_EA_LOGO_00'.
Else.
logo = 'ZIMG_LOGO_CPS_COLOR'.
Endif.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo
= logo
it_list_commentary = gt_list_top_of_page.
*
*Desarrollos anteriores a esta inclusion vendran con switch blanco
*por defecto.
If _sw_manipula ne ''.
Read table t0_modif index 1.
If sy-subrc eq 0.
perform Modificar_Totales.
Endif.
Endif.
ENDFORM.
"top_of_page
*---------------------------------------------------------------------*
*
FORM COMMENT_BUILD
*
*---------------------------------------------------------------------*

* --> LT_TOP_OF_PAGE
*
*---------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE
slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
Refresh: lt_top_of_page.
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info =
w_title.
APPEND ls_line TO lt_top_of_page.
Loop at t_tit where typ eq 'S' or typ eq 'A'.
ls_line = t_tit.
APPEND ls_line TO lt_top_of_page.
Endloop.
* STATUS LINE: TYPE S
- A
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Fecha Proceso'.
CONCATENATE sy-datum+6(2) '/' sy-datum+4(2) '/' sy-datum(4)
INTO ls_line-info.
APPEND ls_line TO lt_top_of_page.
ls_line-typ = 'S'.
ls_line-key = 'Hora de Proceso'.
CONCATENATE sy-UZEIT(2) ':' sy-UZEIT+2(2) ':' sy-UZEIT+4(2)
INTO ls_line-info.
APPEND ls_line TO lt_top_of_page.
ENDFORM.

"comment_build

*&---------------------------------------------------------------------*
*&
Form titles
*&---------------------------------------------------------------------*
*
-->P_T_CATALOGO text
*----------------------------------------------------------------------*
FORM titles TABLES
pt_catalogo TYPE slis_t_fieldcat_alv.
DATA: wa_catalogo TYPE lvc_t_fcat WITH HEADER LINE.
CLEAR pt_catalogo.
LOOP AT pt_catalogo.
struc = pt_catalogo.
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM

SCATALOG
SCATALOG
SCATALOG
SCATALOG
SCATALOG
SCATALOG
SCATALOG

USING
USING
USING
USING
USING
USING
USING

'STAGR'
'STAGR_ACT'
'POR '
'SERVICIO'
'DESCR'
'PEINH'
'EFFWR'

'Fase'.
'Actividad'.
'Porcentaje'.
'Servicio'.
'Descripcion'.
'Cantidad'.
'Valor'.

IF pt_catalogo-fieldname = 'NROREP'
pt_catalogo-fieldname = 'TERR'.
STRUC-outputlen
= 12.

or

STRUC-DDIC_OUTPUTLEN
STRUC-INTLEN
STRUC-ddictxt
Endif.

= 12.
= 12.
= 'L'.

IF pt_catalogo-fieldname = 'EFFWR'.
STRUC-do_sum
= 'X'.
Endif.
IF pt_catalogo-fieldname = 'SEL'.
STRUC-no_out
= 'X'.
Endif.
If struc-seltext_l eq Space.
PERFORM SCATALOG USING STRUC-fieldname STRUC-fieldname.
Endif.
IF pt_catalogo-INTTYPE = 'P'.
IF _sw_no_zero EQ 'X'.
STRUC-no_zero
= ' '.
ELSE.
STRUC-no_zero
= 'X'.
ENDIF.
Endif.
struc-key
= ''.
pt_catalogo = struc.
MODIFY pt_catalogo INDEX sy-tabix.
ENDLOOP.

ENDFORM.

" titles

*&---------------------------------------------------------------------*
*&
Form titles
*&---------------------------------------------------------------------*
FORM titlese TABLES
pt_catalogo TYPE slis_t_fieldcat_alv.
DATA: wa_catalogo TYPE lvc_t_fcat WITH HEADER LINE.
Sort t_ncol by fieldname.

"for binary search

CLEAR pt_catalogo.
LOOP AT pt_catalogo.
IF pt_catalogo-INTTYPE = 'P'.
IF _sw_no_zero EQ 'X'.
pt_catalogo-no_zero
= ' '.
ELSE.
pt_catalogo-no_zero
= 'X'.
ENDIF.
MODIFY pt_catalogo.
Endif.
struc = pt_catalogo.
*Modificacion para mostrar encabezados de columna mas largo.
*Anteriormente por defecto siempre mostraba el corto. (JOA 29.01.2009)
STRUC-ddictxt
= 'L'.
READ TABLE t_ncol
If sy-subrc eq 0.

WITH KEY fieldname

struc-fieldname
BINARY SEARCH.

PERFORM SCATALOG USING t_ncol-fieldname


Endif.

t_ncol-seltext.

If struc-seltext_l eq Space.
PERFORM SCATALOG USING STRUC-fieldname STRUC-fieldname.
Endif.
struc-key
= ''.
pt_catalogo = struc.
MODIFY pt_catalogo.
Endloop.
ENDFORM.

" titles

*&---------------------------------------------------------------------*
*&
Form sort
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_T_sortCAT text
*----------------------------------------------------------------------*
*FORM sort TABLES pt_sortcat TYPE slis_t_sortinfo_alv.
* DATA: wa_sortcat TYPE slis_sortinfo_alv.
*Rutina para ordenar las columnas del control ALV y sumarizacion por No
*de documento fecha, en la columna de % de distribuicin
* pt_sortcat-spos
= '1'.
* pt_sortcat-fieldname = 'KUNNR'.
* pt_sortcat-tabname
= 'DATOS'.
* pt_sortcat-up
= 'X'.
* pt_sortcat-subtot
= 'X '.
* APPEND pt_sortcat.
*
*
*
*
*
*

pt_sortcat-spos
pt_sortcat-fieldname
pt_sortcat-tabname
pt_sortcat-up
pt_sortcat-subtot
APPEND pt_sortcat.

*ENDFORM.

=
=
=
=
=

'2'.
'SHKZG'.
'DATOS'.
'X'.
'X '.

" sort

*&---------------------------------------------------------------------*
*&
Form sort
*&---------------------------------------------------------------------*
FORM SCATALOG USING
FIELD TEXT.
IF struc-fieldname = FIELD.
struc-seltext_l
= TEXT.
struc-seltext_m
= TEXT.
struc-seltext_s
= TEXT.
struc-REPTEXT_DDIC = TEXT.
ENDIF.
IF t_ncol-OUTPUTLEN
struc-OUTPUTLEN
ENDIF.

ne 0.
= t_ncol-OUTPUTLEN.

IF t_ncol-do_sum
struc-do_sum

ne Space.
= t_ncol-do_sum.

ENDIF.
*Modificacion para evitar columnas resaltadas (campos claves)
*2010.02.01 (JOA)
struc-key
= ''.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form Modificar_Totales
*&---------------------------------------------------------------------*
FORM Modificar_Totales.
* Para modificar las lineas de totales y subtotales
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
FIELD-SYMBOLS: <ft_tab> TYPE ANY TABLE,
<fs_tab> TYPE ANY,
<ff_field> TYPE ANY.
* get the global reference
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.
DATA: it_01 TYPE REF TO data.
*****************************************************************
*Los niveles de subtotales van desde el ultimo hasta 9 subtotales
*de agrupacion (o sea 10 lineas de totales)
*
ep_collect00 = it_01.
*
ep_collect01 = it_02.
*
ep_collect02 = it_03.
*
..
..
*
..
..
*
ep_collect08 = it_09
*
ep_collect09 = it-10
* En este caso solo inplementaremos la modificaiones para el gran
* total final (it_01).
******************************************************************
* Get the Total Final
CALL METHOD lo_grid->get_subtotals
IMPORTING
ep_collect00 = it_01.
*
*A partir de la estructura del subtotal (it_01), recorremos la tabla
*t0_modif para determinar la columna cuyo contenido en tiempo de
*total queremos manipular (blanquear en este caso en particular)
ASSIGN it_01->* TO <ft_tab>.
LOOP AT <ft_tab> ASSIGNING <fs_tab>.
LOOP AT t0_modif.
ASSIGN COMPONENT t0_modif-nombreColumna
OF STRUCTURE <fs_tab> TO <ff_field>.
<ff_field> = t0_modif-textoColumna.
ENDLOOP.
ENDLOOP.
* Refresh the table display
CALL METHOD lo_grid->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*

Potrebbero piacerti anche