You are on page 1of 7

REPORT y_lalp_alv_list .

*NO STANDARD PAGE HEADING


*
LINE-SIZE 300
*
LINE-COUNT 40.

TYPE-POOLS slis .
*----------------------------------------------------------------------*
* Data Declarations
*----------------------------------------------------------------------*
CONSTANTS : c_len TYPE i VALUE 25 .
TYPES : BEGIN OF ty_t100 ,
sprsl TYPE t100-sprsl ,
arbgb TYPE t100-arbgb ,
msgnr TYPE t100-msgnr ,
text TYPE t100-text ,
fline TYPE t100-text ,
END OF ty_t100 .
TYPES : BEGIN OF ty_wrd ,
text TYPE char20 ,
END OF ty_wrd .
DATA : it_t100 TYPE TABLE OF ty_t100 ,
it_sentence TYPE TABLE OF ty_wrd
wa_t100
TYPE ty_t100
wa_word
TYPE ty_wrd
v_repid
TYPE syst-repid
v_tabix
TYPE syst-tabix
DATA : it_fld
it_evt
wa_fld
wa_evt
wa_lay

TYPE
TYPE
TYPE
TYPE
TYPE

slis_t_fieldcat_alv
slis_t_event
slis_fieldcat_alv
slis_alv_event
slis_layout_alv

,
,
,
,
.
,
,
,
,
.

DATA: gi_len_mtos TYPE i VALUE '21',


gi_len_porcentajes TYPE i VALUE '12'.
*----------------------------------------------------------------------*
* Initialization
*----------------------------------------------------------------------*
INITIALIZATION .
v_repid = sy-repid .
*----------------------------------------------------------------------*
* Start of Selection
*----------------------------------------------------------------------*
START-OF-SELECTION .
******
SELECTION-SCREEN BEGIN OF BLOCK blq1 WITH FRAME TITLE text-001.
PARAMETER: p_monat TYPE bkpf-monat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blq1.
******
* Get some test data to display in ALV List

SELECT
INTO
FROM
WHERE
AND

*
TABLE it_t100
t100
sprsl = 'EN'
arbgb = '00' .

LOOP AT it_t100 INTO wa_t100 .


v_tabix = sy-tabix .
CLEAR : it_sentence .
*

Word Wrap the


CALL FUNCTION
EXPORTING
textline
outputlen
TABLES
out_lines

text in multiple lines


'RKD_WORD_WRAP'
= wa_t100-text
= c_len
= it_sentence.

IF NOT it_sentence IS INITIAL .


READ TABLE it_sentence INTO wa_word INDEX 1 .
wa_t100-fline = wa_word-text .
MODIFY it_t100 FROM wa_t100 INDEX v_tabix .
ENDIF.
ENDLOOP.
* Prepare fieldcatelog
*** CLEAR wa_fld .
*** wa_fld-fieldname
= 'SPRSL' .
*** wa_fld-ref_tabname = 'T100' .
*** wa_fld-outputlen = 8 .
*** wa_fld-intlen
= 8.
*** wa_fld-ref_fieldname = 'SPRSL' .
*** APPEND wa_fld TO it_fld .
***
*** CLEAR wa_fld .
*** wa_fld-fieldname
= 'ARBGB' .
*** wa_fld-ref_tabname = 'T100' .
*** wa_fld-ref_fieldname = 'ARBGB' .
*** APPEND wa_fld TO it_fld .
***
*** CLEAR wa_fld .
*** wa_fld-fieldname
= 'MSGNR' .
*** wa_fld-ref_tabname = 'T100' .
*** wa_fld-ref_fieldname = 'MSGNR' .
*** APPEND wa_fld TO it_fld .
***
*** CLEAR wa_fld .
*** wa_fld-fieldname = 'FLINE' .
*** wa_fld-inttype = 'CHAR' .
*** wa_fld-outputlen = 20 .
*** wa_fld-intlen
= 20.
*** wa_fld-seltext_l = 'Text' .
*** wa_fld-ddictxt = 'L' .
*** APPEND wa_fld TO it_fld .
******
PERFORM ampliar_alv_ejm.
TYPES: BEGIN OF gty_t247.

INCLUDE STRUCTURE t247.


TYPES: END OF gty_t247.
DATA: gtd_t247 TYPE STANDARD TABLE OF gty_t247,
gc_mes
TYPE fcltx.
FIELD-SYMBOLS: <fs_t247> TYPE gty_t247.
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
language
= sy-langu
* IMPORTING
* RETURN_CODE
=
TABLES
month_names
= gtd_t247
* EXCEPTIONS
* MONTH_NAMES_NOT_FOUND
= 1
* OTHERS
= 2
.

READ TABLE gtd_t247 ASSIGNING <fs_t247>


WITH KEY mnr = p_monat.
IF sy-subrc = 0.
gc_mes = <fs_t247>-ltx.
ENDIF.
*******
* Get event.. we will handle BEFORE and AFTER line output
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_evt.
*
*
*
*

READ TABLE it_evt INTO wa_evt


WITH KEY name = slis_ev_after_line_output .
wa_evt-form = slis_ev_after_line_output .
MODIFY it_evt FROM wa_evt INDEX sy-tabix .
READ TABLE it_evt INTO wa_evt
WITH KEY name = slis_ev_top_of_page .
wa_evt-form = slis_ev_top_of_page .
MODIFY it_evt FROM wa_evt INDEX sy-tabix .
wa_lay-no_colhead = 'X' .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat
= it_fld
is_layout
= wa_lay
it_events
= it_evt
TABLES
t_outtab
= it_t100.

*---------------------------------------------------------------------*
* FORM top_of_page *
*---------------------------------------------------------------------*
FORM top_of_page .
* ULINE AT 1(58) .
*
* FORMAT COLOR COL_HEADING .

* WRITE: / sy-vline ,
*
10 'TITULO PRINCIPAL 01',
*
37 sy-vline,
*
38 'TITULO PRINCIPAL 02',
*
58 sy-vline.
*
*
*ULINE AT /1(58) .
*
* WRITE: / sy-vline ,
*
02 'Header1' ,
*
10 sy-vline ,
*
11 'Header1' ,
*
31 sy-vline ,
*
32 'Header1' ,
*
37 sy-vline ,
*
38 'Header1' ,
*
58 sy-vline .
* WRITE: / sy-vline ,
* 02 'Header2' ,
* 10 sy-vline ,
* 11 'Header2' ,
* 31 sy-vline ,
* 32 'Header2' ,
* 37 sy-vline ,
* 38 'Header2' ,
* 58 sy-vline .
******
DATA: li_ancho TYPE i VALUE 240,
li_ancho_c1 TYPE i VALUE 60,
li_ancho2 TYPE i .

*
*

ULINE AT 1(li_ancho) .
FORMAT COLOR COL_HEADING .
Cabecera:
linea 1
WRITE:/ sy-vline ,
60 sy-vline,
92 'PRESUPUESTO PROGRAMADO',
148 sy-vline,
170 'EJECUCION PRESUPUESTARIA AO',
227 sy-vline,
240 sy-vline.
linea 2
li_ancho2 = li_ancho - li_ancho_c1 - 12.
WRITE:/1 sy-vline .
ULINE AT li_ancho_c1(li_ancho2).
WRITE: 227 sy-vline,
240 sy-vline .
linea 3
WRITE:/1 sy-vline ,
25 'RUBROS',
60 sy-vline,
68 'ANUAL',
82 sy-vline,
90 'MES DE',
104 sy-vline,
112 'DEL',
126 sy-vline,

sy-datum+0(4),

132 'AL MES DE',


148 sy-vline,
156 'MES DE',
170 sy-vline,
179 'DEL',
192 sy-vline,
198 'AL MES DE',
214 sy-vline,
215 '% EJECUCION',
227 sy-vline,
228 '% DE AVANCE',
240 sy-vline.
* linea 3
WRITE:/1 sy-vline ,
*
25 'RUBROS',
60 sy-vline,
*
68 'ANUAL',
82 sy-vline,
92 sy-datum+4(2),
104 sy-vline,
112 'TRIM',
126 sy-vline,
136 sy-datum+4(2),
148 sy-vline,
158 sy-datum+4(2),
170 sy-vline,
179 'TRIM',
192 sy-vline,
202 sy-datum+4(2),
214 sy-vline,
218 'PERIODO',
227 sy-vline,
231 'ANUAL',
240 sy-vline.
* linea 4
WRITE:/1 sy-vline ,
240 sy-vline .
ULINE AT 1(li_ancho) .
SKIP.
ENDFORM. "top_of_page
*---------------------------------------------------------------------*
* FORM AFTER_LINE_OUTPUT *
*---------------------------------------------------------------------*
FORM after_line_output USING rs_lineinfo TYPE slis_lineinfo .
CLEAR : it_sentence ,
wa_t100
.
READ TABLE it_t100 INTO wa_t100 INDEX rs_lineinfo-tabindex .
CHECK sy-subrc = 0 .
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
textline = wa_t100-text
outputlen = c_len

TABLES
out_lines = it_sentence.
DESCRIBE TABLE it_sentence LINES v_tabix .
CHECK v_tabix > 1 .
* LOOP AT it_sentence INTO wa_word FROM 2 .
LOOP AT it_sentence INTO wa_word FROM 2 .
WRITE: / sy-vline ,
12 sy-vline ,
31 sy-vline ,
37 sy-vline ,
52 wa_word-text ,
58 sy-vline .
ENDLOOP.
ENDFORM . "after_line_output
*&---------------------------------------------------------------------*
*&
Form AMPLIAR_ALV_EJM
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM ampliar_alv_ejm .
*1
CLEAR wa_fld .
wa_fld-fieldname
= 'SPRSL' .
wa_fld-ref_tabname = 'T100' .
wa_fld-outputlen = 58 .
wa_fld-intlen
= 58.
wa_fld-ref_fieldname = 'SPRSL' .
APPEND wa_fld TO it_fld .
*2
CLEAR wa_fld .
wa_fld-fieldname
= 'ARBGB' .
wa_fld-ref_tabname = 'T100' .
wa_fld-ref_fieldname = 'ARBGB' .
wa_fld-outputlen = gi_len_mtos .
wa_fld-intlen
= gi_len_mtos.
APPEND wa_fld TO it_fld .
*3
CLEAR wa_fld .
wa_fld-fieldname
= 'MSGNR' .
wa_fld-ref_tabname = 'T100' .
wa_fld-ref_fieldname = 'MSGNR' .
wa_fld-outputlen = gi_len_mtos .
wa_fld-intlen
= gi_len_mtos.
APPEND wa_fld TO it_fld .
*4
CLEAR wa_fld .
wa_fld-fieldname
wa_fld-inttype
wa_fld-outputlen
wa_fld-intlen
wa_fld-seltext_l
wa_fld-ddictxt
APPEND wa_fld TO

= 'FLINE' .
= 'CHAR' .
= gi_len_mtos .
= gi_len_mtos.
= 'Text' .
= 'L' .
it_fld .

*5
CLEAR wa_fld .
wa_fld-fieldname
= 'SPRSL' .
wa_fld-ref_tabname = 'T100' .
wa_fld-outputlen = gi_len_mtos .
wa_fld-intlen
= gi_len_mtos.
wa_fld-ref_fieldname = 'SPRSL' .
APPEND wa_fld TO it_fld .
*6
CLEAR wa_fld .
wa_fld-fieldname
= 'ARBGB' .
wa_fld-ref_tabname = 'T100' .
wa_fld-ref_fieldname = 'ARBGB' .
wa_fld-outputlen = gi_len_mtos .
wa_fld-intlen
= gi_len_mtos.
APPEND wa_fld TO it_fld .
*7
CLEAR wa_fld .
wa_fld-fieldname
= 'MSGNR' .
wa_fld-ref_tabname = 'T100' .
wa_fld-ref_fieldname = 'MSGNR' .
wa_fld-outputlen = gi_len_mtos.
wa_fld-intlen
= gi_len_mtos.
APPEND wa_fld TO it_fld .
*8
CLEAR wa_fld .
wa_fld-fieldname
= 'MSGNR' .
wa_fld-ref_tabname = 'T100' .
wa_fld-ref_fieldname = 'MSGNR' .
wa_fld-outputlen = gi_len_mtos .
wa_fld-intlen
= gi_len_mtos.
APPEND wa_fld TO it_fld .
*9
CLEAR wa_fld .
wa_fld-fieldname = 'FLINE' .
wa_fld-inttype = 'CHAR' .
wa_fld-outputlen = gi_len_porcentajes .
wa_fld-intlen
= gi_len_porcentajes.
wa_fld-seltext_l = 'Text' .
wa_fld-ddictxt = 'L' .
APPEND wa_fld TO it_fld .
*10
CLEAR wa_fld .
wa_fld-fieldname = 'FLINE' .
wa_fld-inttype = 'CHAR' .
wa_fld-outputlen = gi_len_porcentajes .
wa_fld-intlen
= gi_len_porcentajes.
wa_fld-seltext_l = 'Text' .
wa_fld-ddictxt = 'L' .
APPEND wa_fld TO it_fld .
ENDFORM. " AMPLIAR_ALV_EJM

You might also like