02-05-2008 2:47 AM
Hi Experts,
I have developed report using Alv grid display.
now i need to display the title at the centre in top of page ,
date and time at the right side corner in top-of-page event.
As i am new to Abap development please help me.Please send me if you sample code i'll be thankful to you.
Regards,
Rakhi.
02-05-2008 2:51 AM
*---------------------------------------------------------------------*
* FORM ALV_TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM alv_top_of_page.
DATA: l_title(100).
DATA: l_recs TYPE i,
l_recs_c(10),
l_exdate(10),
l_stext(80),
l_svalue(80),
l_index LIKE sy-tabix,
l_count TYPE i.
CLEAR: i_list_comments[].
WRITE sy-datum TO l_exdate.
l_title = sy-title.
DESCRIBE TABLE gt_output LINES l_recs.
l_recs_c = l_recs.
w_list_comments-typ = 'H'. " H=Header, S=Selection, A=Action
w_list_comments-key = ''.
w_list_comments-info = l_title.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-key = ''.
CONCATENATE text-td1 l_exdate INTO w_list_comments-info
SEPARATED BY space.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-key = ''.
CONCATENATE text-td2 l_recs_c INTO w_list_comments-info
SEPARATED BY space.
APPEND w_list_comments TO i_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
* i_logo = ''
it_list_commentary = i_list_comments.
ENDFORM. "alv_top_of_page
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_background_id = 'SIWB_WALLPAPER'
i_callback_program = w_repid
i_callback_html_top_of_page = w_html_top_of_page
* i_structure_name = 'TRDIR'
i_default = 'X'
i_save = 'A'
is_variant = w_variant
is_layout = w_layout
i_callback_user_command = w_callback_ucomm
it_fieldcat = i_fieldcat_alv
it_events = i_events
it_event_exit = i_event_exit
it_excluding = i_excluding
is_print = w_print
TABLES
t_outtab = gt_output.
02-05-2008 2:55 AM
Rakhi,
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'POPUP'
i_callback_user_command = 'HANDLE_USER_COMMAND'
i_callback_top_of_page = 'TOP-OF-PAGE'
it_fieldcat = it_fieldcat
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
others = 2.
if
sy-subrc = 0.
endif.
endform. " alv_grid_display
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+10(15) = ' SY-REPID'.
*wa_header-info+21(10) = text-001.
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.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
endform.
Don't forget to reward if useful...
02-05-2008 3:14 AM
Hi Murali,
Thank you for the reply.I have done this but i am not able to print the title at the center ,date and time at the right side corner of the page in TOP-OF-PAGE event.Please help me.
Regards,
Rakhi.
02-05-2008 2:58 AM
hi,
TYPE-POOLS : slis.
----
STRUCTURE DECLARATION
----
TYPES: BEGIN OF st_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
netwr TYPE ekpo-netwr,
END OF st_ekpo.
----
INTERNAL TABLE DECLARATION
----
DATA: it_ekpo TYPE STANDARD TABLE OF st_ekpo ,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
v_ebeln TYPE ekpo-ebeln,
wa_layout TYPE slis_layout_alv,
it_listheader TYPE slis_t_listheader ,
wa_listheader LIKE LINE OF it_listheader,
it_events TYPE slis_t_event,
st_event LIKE LINE OF it_events.
SELECT-OPTIONS so_ebeln FOR v_ebeln.
----
START-OF-SELECTION
----
START-OF-SELECTION.
SELECT ebeln ebelp matnr netwr
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln IN so_ebeln.
PERFORM populate_feildcat.
PERFORM populate_layout.
PERFORM event_list.
PERFORM display.
&----
*& Form populate_feildcat
&----
FORM populate_feildcat .
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_l = 'DOCUMENT NUMBER'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-seltext_l = 'ITEM DOCUMENT NUMBER'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_l = 'MATERIAL'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_l = 'NET VALUE'.
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM. " populate_feildcat
&----
*& Form populate_layout
&----
FORM populate_layout .
wa_layout-colwidth_optimize = 'X'. "column width
wa_layout-zebra = 'X'.
wa_layout-window_titlebar = text-000.
ENDFORM. " populate_layout
&----
*& Form event_list
&----
FORM event_list .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_events
EXCEPTIONS
list_type_wrong = 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.
READ TABLE it_events WITH KEY name = slis_ev_top_of_page INTO st_event.
IF SY-SUBRC = 0.
ST_EVENT-FORM = 'TOP_OF_PAGE'.
APPEND ST_EVENT TO IT_EVENTS.
CLEAR ST_EVENT.
ENDIF.
READ TABLE it_events WITH KEY name = slis_ev_end_of_page INTO st_event.
IF sy-subrc EQ 0.
st_event-form = 'END_OF_PAGE'.
APPEND st_event TO it_events.
CLEAR st_event.
ENDIF.
READ TABLE it_events WITH KEY name = slis_ev_pf_status_set INTO st_event.
IF sy-subrc EQ 0.
st_event-form = 'SET_PF_STATUS1'.
APPEND st_event TO it_events.
CLEAR st_event.
ENDIF.
ENDFORM. " event_list
&----
*& Form display
&----
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
I_BACKGROUND_ID = 'BVRLOGO'
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'AT_USER_COMMAND'
is_layout = wa_layout
it_fieldcat = it_fieldcat
it_events = it_events
TABLES
t_outtab = it_ekpo
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
&----
*& Form top_of_page
&----
FORM top_of_page.
REFRESH it_listheader.
wa_listheader-typ = 'H'.
wa_listheader-info = text-001.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
wa_listheader-typ = 'S'.
wa_listheader-info = text-002.
APPEND wa_listheader TO it_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader[]
I_LOGO = 'FITP_CORP_LOGO'.
ENDFORM. "TOP_OF_PAGE
02-05-2008 3:12 AM
Hi,
Please see my program below. Hope it satisfies your requirement.
P.S. Please award points if it helps...
*&---------------------------------------------------------------------*
*& Report ZFI_CAPEX_BUDGET_MONITORING_V3
*&
*& PROGRAM TYPE : Report
*& RICEF ID : R-569
*& TITLE : ZFI_CAPEX_BUDGET_MONITORING_V3
*& SAP Module : FI
*& CREATION DATE : 12/11/2007
*& AUTHOR : Aris Hidalgo
*& DESIGNER : Aris Hidalgo
*&---------------------------------------------------------------------*
*& DESCRIPTION :
*&---------------------------------------------------------------------*
*$**********************************************************************
*$ CHANGE HISTORY
*$----------------------------------------------------------------------
*$ DATE | T-Num | Description | Reference
** | | |
*$**********************************************************************
REPORT zfi_capex_budget_monitoring_v3
NO STANDARD PAGE HEADING
MESSAGE-ID zfi.
*----------------------------------------------*
* Data Dictionary Table/s *
*----------------------------------------------*
TABLES: aufk,
csks,
setheadert.
*----------------------------------------------*
* SELECTION-SCREEN *
*----------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: rb_sum RADIOBUTTON GROUP grp1 DEFAULT 'X' USER-COMMAND ucomm,
rb_det RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: p_bukrs TYPE t001-bukrs OBLIGATORY.
SELECT-OPTIONS: s_div FOR setheadert-descript.
SELECT-OPTIONS: s_auart FOR aufk-auart.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_gjahr TYPE bkpf-gjahr OBLIGATORY,
p_monat TYPE bkpf-monat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
SELECT-OPTIONS: s_khinr FOR csks-khinr,
s_kostl FOR csks-kostl,
s_aufnr FOR aufk-aufnr,
s_astnr FOR aufk-astnr.
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------*
* AT SELECTION-SCREEN OUTPUT *
*----------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
IF rb_sum EQ 'X'.
LOOP AT SCREEN.
IF ( screen-name = 'S_KOSTL-LOW'
OR screen-name = 'S_KOSTL-HIGH'
OR screen-name = 'S_AUFNR-HIGH'
OR screen-name = 'S_KHINR-LOW'
OR screen-name = 'S_KHINR-HIGH'
OR screen-name = 'S_AUFNR-LOW'
OR screen-name = 'S_ASTNR-HIGH'
OR screen-name = 'S_ASTNR-LOW' ).
REFRESH s_kostl[].
REFRESH s_aufnr[].
REFRESH s_khinr[].
REFRESH s_astnr[].
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*----------------------------------------------------------------------*
* CLASS lcl_data_def DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_data_def DEFINITION ABSTRACT.
PUBLIC SECTION.
TYPES: BEGIN OF t_aufk,
aufnr TYPE aufk-aufnr,
bukrs TYPE aufk-bukrs,
auart TYPE aufk-auart,
astnr TYPE aufk-astnr,
kostv TYPE aufk-kostv,
ktext TYPE aufk-ktext,
user5 TYPE aufk-user5,
objnr TYPE aufk-objnr,
kokrs TYPE aufk-kokrs,
END OF t_aufk.
TYPES: BEGIN OF t_t003p,
spras TYPE t003p-spras,
auart TYPE t003p-auart,
txt TYPE t003p-txt,
END OF t_t003p.
TYPES: BEGIN OF t_bsis_bsas,
bukrs TYPE bsis-bukrs,
belnr TYPE bsis-belnr,
budat TYPE bsis-budat,
aufnr TYPE bsis-aufnr,
dmbtr TYPE bsis-dmbtr,
shkzg TYPE bsis-shkzg,
gjahr TYPE bsis-gjahr,
kostl TYPE bsis-kostl,
zuonr TYPE bsis-zuonr,
hkont TYPE bsis-hkont,
END OF t_bsis_bsas.
TYPES: BEGIN OF t_csks,
bukrs TYPE csks-bukrs,
kostl TYPE csks-kostl,
khinr TYPE csks-khinr,
END OF t_csks.
TYPES: BEGIN OF t_division,
setname TYPE setheader-setname,
descript TYPE setheadert-descript,
END OF t_division.
TYPES: BEGIN OF t_output,
descript TYPE setheadert-descript,
bukrs TYPE bkpf-bukrs,
khinr TYPE csks-khinr,
kostl TYPE csks-kostl,
auart TYPE aufk-auart,
ktext TYPE aufk-ktext,
aufnr TYPE aufk-aufnr,
actual TYPE zbc_ab_capex_io_struc-actual,
commit TYPE zbc_ab_capex_io_struc-commitment,
total TYPE bsis-wrbtr,
budget TYPE zbc_ab_capex_io_struc-budget,
amount TYPE bsis-wrbtr,
age TYPE bsis-wrbtr,
setname TYPE setheader-setname,
txt TYPE t003p-txt,
budat1 TYPE bkpf-budat,
budat2 TYPE bkpf-budat,
astnr TYPE aufk-astnr,
avail TYPE zbc_ab_capex_io_struc-avail,
ctrdiv(2) TYPE c,
ctrord(2) TYPE c,
END OF t_output.
TYPES: BEGIN OF t_actual_values,
aufnr TYPE bsis-aufnr,
actual TYPE t_output-actual,
END OF t_actual_values.
TYPES: BEGIN OF t_coep,
objnr TYPE coep-objnr,
kokrs TYPE coep-kokrs,
belnr TYPE coep-belnr,
buzei TYPE coep-buzei,
wrttp TYPE coep-wrttp,
perio TYPE coep-perio,
bukrs TYPE coep-bukrs,
gjahr TYPE coep-gjahr,
wtgbtr TYPE coep-wtgbtr,
END OF t_coep.
CLASS-DATA: gt_aufk TYPE STANDARD TABLE OF t_aufk,
gt_aufk2 LIKE gt_aufk,
gt_t003p TYPE SORTED TABLE OF t_t003p
WITH NON-UNIQUE KEY spras auart,
gt_bsis_bsas TYPE STANDARD TABLE OF t_bsis_bsas,
gt_csks TYPE SORTED TABLE OF t_csks
WITH NON-UNIQUE KEY bukrs kostl,
gt_division TYPE SORTED TABLE OF t_division
WITH NON-UNIQUE KEY setname,
gt_output TYPE STANDARD TABLE OF t_output,
wa_output LIKE LINE OF gt_output,
gt_output_sum LIKE gt_output,
wa_output_sum LIKE LINE OF gt_output_sum,
gt_actual_values TYPE STANDARD TABLE OF t_actual_values,
wa_actual_values LIKE LINE OF gt_actual_values,
gt_coep TYPE SORTED TABLE OF t_coep
WITH NON-UNIQUE KEY objnr,
gr_user5 TYPE RANGE OF aufk-user5,
wa_user5 LIKE LINE OF gr_user5,
gr_budat TYPE RANGE OF bkpf-budat,
wa_budat LIKE LINE OF gr_budat,
gt_return TYPE STANDARD TABLE OF bapiret2,
gt_capex_io1 TYPE STANDARD TABLE OF zbc_ab_capex_io_struc,
gt_capex_io2 LIKE gt_capex_io1,
wa_capex_io2 LIKE LINE OF gt_capex_io2.
ENDCLASS. "lcl_data_def DEFINITION
CLASS lcl_alv_routines DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* CLASS lcl_get_data DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_get_data DEFINITION INHERITING FROM lcl_data_def.
PUBLIC SECTION.
METHODS: get_internal_order,
get_actual_line_items,
get_division,
get_cost_centers,
pop_cost_center_ranges,
get_capex_io_values,
process_data.
PRIVATE SECTION.
CONSTANTS: lc_divcode_100111(6) TYPE c VALUE '100111',
lc_divcode_100110(6) TYPE c VALUE '100110',
lc_divcode_101100(6) TYPE c VALUE '101100',
lc_divcode_101200(6) TYPE c VALUE '101200',
lc_divcode_101300(6) TYPE c VALUE '101300',
lc_divcode_101400(6) TYPE c VALUE '101400',
lc_divcode_101500(6) TYPE c VALUE '101500',
lc_divcode_102000(6) TYPE c VALUE '102000',
lc_divcode_102100(6) TYPE c VALUE '102100',
lc_divcode_103000(6) TYPE c VALUE '103000',
lc_divcode_104000(6) TYPE c VALUE '104000',
lc_divcode_105000(6) TYPE c VALUE '105000',
lc_divcode_106000(6) TYPE c VALUE '106000',
lc_divcode_107000(6) TYPE c VALUE '107000',
lc_divcode_108000(6) TYPE c VALUE '108000',
lc_divcode_109000(6) TYPE c VALUE '109000',
lc_divcode_200110(6) TYPE c VALUE '200110',
lc_divcode_230000(6) TYPE c VALUE '230000',
lc_divcode_200200(6) TYPE c VALUE '200200',
lc_divcode_400100(6) TYPE c VALUE '400100',
lc_divcode_400200(6) TYPE c VALUE '400200'.
CONSTANTS: lc_wrttp TYPE coep-wrttp VALUE '04'.
DATA: lr_divcode_100111 TYPE RANGE OF csks-kostl,
lr_divcode_100110 TYPE RANGE OF csks-kostl,
lr_divcode_101100 TYPE RANGE OF csks-kostl,
lr_divcode_101200 TYPE RANGE OF csks-kostl,
lr_divcode_101300 TYPE RANGE OF csks-kostl,
lr_divcode_101400 TYPE RANGE OF csks-kostl,
lr_divcode_101500 TYPE RANGE OF csks-kostl,
lr_divcode_102000 TYPE RANGE OF csks-kostl,
lr_divcode_102100 TYPE RANGE OF csks-kostl,
lr_divcode_103000 TYPE RANGE OF csks-kostl,
lr_divcode_104000 TYPE RANGE OF csks-kostl,
lr_divcode_105000 TYPE RANGE OF csks-kostl,
lr_divcode_106000 TYPE RANGE OF csks-kostl,
lr_divcode_107000 TYPE RANGE OF csks-kostl,
lr_divcode_108000 TYPE RANGE OF csks-kostl,
lr_divcode_109000 TYPE RANGE OF csks-kostl,
lr_divcode_200110 TYPE RANGE OF csks-kostl,
lr_divcode_230000 TYPE RANGE OF csks-kostl,
lr_divcode_200200 TYPE RANGE OF csks-kostl,
lr_divcode_400100 TYPE RANGE OF csks-kostl,
lr_divcode_400200 TYPE RANGE OF csks-kostl.
DATA: wa_divcode_100111 LIKE LINE OF lr_divcode_100111,
wa_divcode_100110 LIKE LINE OF lr_divcode_100110,
wa_divcode_101100 LIKE LINE OF lr_divcode_101100,
wa_divcode_101200 LIKE LINE OF lr_divcode_101200,
wa_divcode_101300 LIKE LINE OF lr_divcode_101300,
wa_divcode_101400 LIKE LINE OF lr_divcode_101400,
wa_divcode_101500 LIKE LINE OF lr_divcode_101500,
wa_divcode_102000 LIKE LINE OF lr_divcode_102000,
wa_divcode_102100 LIKE LINE OF lr_divcode_102100,
wa_divcode_103000 LIKE LINE OF lr_divcode_103000,
wa_divcode_104000 LIKE LINE OF lr_divcode_104000,
wa_divcode_105000 LIKE LINE OF lr_divcode_105000,
wa_divcode_106000 LIKE LINE OF lr_divcode_106000,
wa_divcode_107000 LIKE LINE OF lr_divcode_107000,
wa_divcode_108000 LIKE LINE OF lr_divcode_108000,
wa_divcode_109000 LIKE LINE OF lr_divcode_109000,
wa_divcode_200110 LIKE LINE OF lr_divcode_200110,
wa_divcode_230000 LIKE LINE OF lr_divcode_230000,
wa_divcode_200200 LIKE LINE OF lr_divcode_200200,
wa_divcode_400100 LIKE LINE OF lr_divcode_400100,
wa_divcode_400200 LIKE LINE OF lr_divcode_400200.
DATA: o_lcl_alv_routines TYPE REF TO lcl_alv_routines.
ENDCLASS. "lcl_get_data DEFINITION
CLASS lcl_handle_events DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* CLASS lcl_alv_routines DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_routines DEFINITION INHERITING FROM lcl_get_data.
PUBLIC SECTION.
DATA: lcl_table TYPE REF TO cl_salv_table,
lcl_container TYPE REF TO cl_gui_custom_container,
lcl_handle_events TYPE REF TO lcl_handle_events,
lcl_columns TYPE REF TO cl_salv_columns,
lcl_column TYPE REF TO cl_salv_column_table,
lcl_events2 TYPE REF TO cl_salv_events_table,
lcl_display_settings TYPE REF TO cl_salv_display_settings,
lcl_functions TYPE REF TO cl_salv_functions_list,
lcl_display TYPE REF TO cl_salv_display_settings,
lcl_aggregations TYPE REF TO cl_salv_aggregations,
lcl_sorts TYPE REF TO cl_salv_sorts,
lcl_content TYPE REF TO cl_salv_form_element,
lcl_header TYPE REF TO cl_salv_form_header_info,
ls_color TYPE lvc_s_colo.
DATA: lcl_grid TYPE REF TO cl_salv_form_layout_grid,
lcl_grid_1 TYPE REF TO cl_salv_form_layout_grid,
lcl_grid_2 TYPE REF TO cl_salv_form_layout_grid,
lcl_label TYPE REF TO cl_salv_form_label,"#EC NEEDED
lcl_text TYPE REF TO cl_salv_form_text,
gt_t247 TYPE STANDARD TABLE OF t247,
wa_t247 LIKE LINE OF gt_t247,
lv_text TYPE string.
METHODS: display_data
IMPORTING
im_output LIKE gt_output,
display_top_of_page.
ENDCLASS. "lcl_alv_routines DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_link_click FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_get_data IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_get_data IMPLEMENTATION.
* METHOD get_internal_order
METHOD get_internal_order.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = text-p01.
DATA: wa_auart LIKE LINE OF s_auart.
* Restrict order type
IF s_auart-low IS INITIAL AND s_auart-high IS INITIAL.
wa_auart-sign = 'I'.
wa_auart-option = 'BT'.
wa_auart-low = '0801'.
wa_auart-high = '0813'.
APPEND wa_auart TO s_auart.
CLEAR wa_auart.
wa_auart-sign = 'I'.
wa_auart-option = 'BT'.
wa_auart-low = '0815'.
wa_auart-high = '0815'.
APPEND wa_auart TO s_auart.
CLEAR wa_auart.
wa_auart-sign = 'I'.
wa_auart-option = 'BT'.
wa_auart-low = '0827'.
wa_auart-high = '0828'.
APPEND wa_auart TO s_auart.
CLEAR wa_auart.
ENDIF.
* Range for restricting of IOs by its application date
IF NOT p_gjahr IS INITIAL AND
NOT p_monat IS INITIAL.
wa_user5-sign = 'I'.
wa_user5-option = 'BT'.
CONCATENATE: p_gjahr '01' '01'
INTO wa_user5-low.
CONCATENATE: p_gjahr p_monat '01'
INTO wa_user5-high.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = wa_user5-high
IMPORTING
last_day_of_month = wa_user5-high
EXCEPTIONS
day_in_no_date = 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.
APPEND wa_user5 TO gr_user5.
CLEAR wa_user5.
ENDIF.
* Get internal order
SELECT aufnr bukrs auart
astnr kostv ktext
user5 objnr kokrs
FROM aufk
INTO TABLE gt_aufk
WHERE aufnr IN s_aufnr
AND auart IN s_auart
AND astnr IN s_astnr
* AND user5 IN gr_user5
AND kostv IN s_kostl
AND bukrs = p_bukrs.
* Get order type descriptions
IF NOT gt_aufk[] IS INITIAL.
SELECT spras auart txt
FROM t003p
INTO TABLE gt_t003p
FOR ALL ENTRIES IN gt_aufk
WHERE spras = sy-langu
AND auart = gt_aufk-auart.
ENDIF.
CALL METHOD me->get_cost_centers.
CALL METHOD me->get_division.
CALL METHOD me->get_actual_line_items.
CALL METHOD me->process_data.
ENDMETHOD. "get_internal_order
* METHOD get_actual_line_items
METHOD get_actual_line_items.
IF gt_aufk[] IS NOT INITIAL.
SELECT objnr kokrs belnr
buzei wrttp perio
bukrs gjahr wtgbtr
FROM coep
INTO TABLE gt_coep
FOR ALL ENTRIES IN gt_aufk
WHERE kokrs = gt_aufk-kokrs
AND bukrs = gt_aufk-bukrs
AND gjahr = p_gjahr
AND wrttp = lc_wrttp
AND perio >= p_monat
AND objnr = gt_aufk-objnr.
ENDIF.
ENDMETHOD. "get_actual_line_items
* METHOD get_division
METHOD get_division.
SELECT a~setname
b~descript
INTO TABLE gt_division
FROM setheader AS a
INNER JOIN setheadert AS b
ON a~setclass EQ b~setclass
AND a~setname EQ b~setname
WHERE b~descript IN s_div
AND a~creuser NE 'SAP'
AND b~descript NE 'VRSIO'
AND ( a~settype EQ 'S' OR
a~settype EQ 'B' ).
IF sy-subrc = 0.
DELETE gt_division WHERE setname CS '0HCO_VRG_'.
ENDIF.
ENDMETHOD. "get_division
* METHOD get_cost_centers
METHOD get_cost_centers.
IF NOT gt_aufk[] IS INITIAL.
SELECT bukrs
kostl
khinr
FROM csks
INTO TABLE gt_csks
FOR ALL ENTRIES IN gt_aufk
WHERE bukrs EQ gt_aufk-bukrs
AND kostl EQ gt_aufk-kostv
AND khinr IN s_khinr.
ENDIF.
ENDMETHOD. "get_cost_centers
* METHOD pop_cost_center_ranges
METHOD pop_cost_center_ranges.
* Division Code 100111 - UL - Employees Welfare
wa_divcode_100111-low = '0010011000'.
wa_divcode_100111-sign = 'I'.
wa_divcode_100111-option = 'EQ'.
APPEND wa_divcode_100111 TO lr_divcode_100111.
CLEAR wa_divcode_100111.
* Division Code 100110 - UL - General & Admin Group
wa_divcode_100110-low = '0010010000'.
wa_divcode_100110-high = '0010019999'.
wa_divcode_100110-sign = 'I'.
wa_divcode_100110-option = 'BT'.
APPEND wa_divcode_100110 TO lr_divcode_100110.
CLEAR wa_divcode_100110.
* Division Code 101100 - Executive Offices Group
wa_divcode_101100-low = '0010110000'.
wa_divcode_101100-high = '0010119999'.
wa_divcode_101100-sign = 'I'.
wa_divcode_101100-option = 'BT'.
APPEND wa_divcode_101100 TO lr_divcode_101100.
CLEAR wa_divcode_101100.
* Division Code 101200 - Supply Chain Management Group
wa_divcode_101200-low = '0010120000'.
wa_divcode_101200-high = '0010129999'.
wa_divcode_101200-sign = 'I'.
wa_divcode_101200-option = 'BT'.
APPEND wa_divcode_101200 TO lr_divcode_101200.
CLEAR wa_divcode_101200.
* Division Code 101300 - Business Development Group
wa_divcode_101300-low = '0010130000'.
wa_divcode_101300-high = '0010139999'.
wa_divcode_101300-sign = 'I'.
wa_divcode_101300-option = 'BT'.
APPEND wa_divcode_101300 TO lr_divcode_101300.
CLEAR wa_divcode_101300.
* Division Code 101400 - Corporate Premises
wa_divcode_101400-low = '0010140000'.
wa_divcode_101400-high = '0010149999'.
wa_divcode_101400-sign = 'I'.
wa_divcode_101400-option = 'BT'.
APPEND wa_divcode_101400 TO lr_divcode_101400.
CLEAR wa_divcode_101400.
* Division Code 101500 - Corporate Affairs
wa_divcode_101500-low = '0010150000'.
wa_divcode_101500-high = '0010159999'.
wa_divcode_101500-sign = 'I'.
wa_divcode_101500-option = 'BT'.
APPEND wa_divcode_101500 TO lr_divcode_101500.
CLEAR wa_divcode_101500.
* Division Code 102000 - Corporate Product Portfolio Mgnt
wa_divcode_102000-low = '0010200000'.
wa_divcode_102000-high = '0010209999'.
wa_divcode_102000-sign = 'I'.
wa_divcode_102000-option = 'BT'.
APPEND wa_divcode_102000 TO lr_divcode_102000.
CLEAR wa_divcode_102000.
* Division Code 102100 - Ethical Marketing
wa_divcode_102100-low = '0010210000'.
wa_divcode_102100-high = '0010219999'.
wa_divcode_102100-sign = 'I'.
wa_divcode_102100-option = 'BT'.
APPEND wa_divcode_102100 TO lr_divcode_102100.
CLEAR wa_divcode_102100.
* Division Code 103000 - Materials Management
wa_divcode_103000-low = '0010300000'.
wa_divcode_103000-high = '0010309999'.
wa_divcode_103000-sign = 'I'.
wa_divcode_103000-option = 'BT'.
APPEND wa_divcode_103000 TO lr_divcode_103000.
CLEAR wa_divcode_103000.
* Division Code 104000 - Human Resource Dev't. Org.
wa_divcode_104000-low = '0010400000'.
wa_divcode_104000-high = '0010409999'.
wa_divcode_104000-sign = 'I'.
wa_divcode_104000-option = 'BT'.
APPEND wa_divcode_104000 TO lr_divcode_104000.
CLEAR wa_divcode_104000.
* Division Code 105000 - Administrative Group
wa_divcode_105000-low = '0010500000'.
wa_divcode_105000-high = '0010509999'.
wa_divcode_105000-sign = 'I'.
wa_divcode_105000-option = 'BT'.
APPEND wa_divcode_105000 TO lr_divcode_105000.
CLEAR wa_divcode_105000.
* Division Code 106000 - Corporate IT
wa_divcode_106000-low = '0010600000'.
wa_divcode_106000-high = '0010609999'.
wa_divcode_106000-sign = 'I'.
wa_divcode_106000-option = 'BT'.
APPEND wa_divcode_106000 TO lr_divcode_106000.
CLEAR wa_divcode_106000.
* Division Code 107000 - Finance
wa_divcode_107000-low = '0010700000'.
wa_divcode_107000-high = '0010709999'.
wa_divcode_107000-sign = 'I'.
wa_divcode_107000-option = 'BT'.
APPEND wa_divcode_107000 TO lr_divcode_107000.
CLEAR wa_divcode_107000.
* Division Code 108000 - Treasury Group
wa_divcode_108000-low = '0010800000'.
wa_divcode_108000-high = '0010809999'.
wa_divcode_108000-sign = 'I'.
wa_divcode_108000-option = 'BT'.
APPEND wa_divcode_108000 TO lr_divcode_108000.
CLEAR wa_divcode_108000.
* Division Code 109000 - UL International Group
wa_divcode_109000-low = '0010900000'.
wa_divcode_109000-high = '0010909999'.
wa_divcode_109000-sign = 'I'.
wa_divcode_109000-option = 'BT'.
APPEND wa_divcode_109000 TO lr_divcode_109000.
CLEAR wa_divcode_109000.
* Division Code 200110 - Sales & Marketing
wa_divcode_200110-low = '0020010000'.
wa_divcode_200110-high = '0020019999'.
wa_divcode_200110-sign = 'I'.
wa_divcode_200110-option = 'BT'.
APPEND wa_divcode_200110 TO lr_divcode_200110.
CLEAR wa_divcode_200110.
* Division Code 230000 - Distribution Group
wa_divcode_230000-low = '0023000000'.
wa_divcode_230000-high = '0023009999'.
wa_divcode_230000-sign = 'I'.
wa_divcode_230000-option = 'BT'.
APPEND wa_divcode_230000 TO lr_divcode_230000.
CLEAR wa_divcode_230000.
* Division Code 200200 - Pharma - Product Divisions
wa_divcode_200200-low = '0020020000'.
wa_divcode_200200-high = '0022999999'.
wa_divcode_200200-sign = 'I'.
wa_divcode_200200-option = 'BT'.
APPEND wa_divcode_200200 TO lr_divcode_200200.
CLEAR wa_divcode_200200.
* Division Code 400100 - UL Manufacturing - 1
wa_divcode_400100-low = '0040010000'.
wa_divcode_400100-high = '0040019999'.
wa_divcode_400100-sign = 'I'.
wa_divcode_400100-option = 'BT'.
APPEND wa_divcode_400100 TO lr_divcode_400100.
CLEAR wa_divcode_400100.
* Division Code 400100 - UL Manufacturing - 2
wa_divcode_400100-low = '0041100000'.
wa_divcode_400100-high = '0041509000'.
wa_divcode_400100-sign = 'I'.
wa_divcode_400100-option = 'BT'.
APPEND wa_divcode_400100 TO lr_divcode_400100.
CLEAR wa_divcode_400100.
* Division Code 400200 - Manufacturing-Subsidiaries
wa_divcode_400200-low = '0040100000'.
wa_divcode_400200-high = '0040609999'.
wa_divcode_400200-sign = 'I'.
wa_divcode_400200-option = 'BT'.
APPEND wa_divcode_400200 TO lr_divcode_400200.
CLEAR wa_divcode_400200.
ENDMETHOD. "pop_cost_center_ranges
* METHOD get_capex_io_values
METHOD get_capex_io_values.
CONSTANTS: lc_credit TYPE bsis-shkzg VALUE 'H',
lc_12 LIKE p_monat VALUE '12'.
DATA: lv_gjahr TYPE bkpf-gjahr,
lr_aufnr TYPE RANGE OF aufk-aufnr,
wa_aufnr LIKE LINE OF lr_aufnr.
FIELD-SYMBOLS: <fs_aufk> LIKE LINE OF gt_aufk,
<fs_aufk2> LIKE LINE OF gt_aufk2,
<fs_capex_io1> LIKE LINE OF gt_capex_io1,
<fs_bsis_bsas> LIKE LINE OF gt_bsis_bsas.
IF NOT s_kostl[] IS INITIAL.
DELETE gt_aufk WHERE kostv NOT IN s_kostl[].
ENDIF.
IF NOT s_aufnr[] IS INITIAL.
DELETE gt_aufk WHERE aufnr NOT IN s_aufnr[].
ENDIF.
IF NOT s_astnr[] IS INITIAL.
DELETE gt_aufk WHERE astnr NOT IN s_astnr[].
ENDIF.
IF gr_user5[] IS NOT INITIAL.
DELETE gt_aufk WHERE user5 NOT IN gr_user5.
ENDIF.
* Get internal order details(budget, etc.)
LOOP AT gt_aufk ASSIGNING <fs_aufk>.
lv_gjahr = <fs_aufk>-user5+0(4).
CALL FUNCTION 'ZBC_AB_CAPEX_BLANKET_IO'
EXPORTING
aufnr = <fs_aufk>-aufnr
* KTEXT =
gjahr = lv_gjahr
* IOTYPE =
bukrs = <fs_aufk>-bukrs
TABLES
return = gt_return
capex_io = gt_capex_io1.
IF NOT gt_capex_io1[] IS INITIAL.
LOOP AT gt_capex_io1 ASSIGNING <fs_capex_io1>.
CLEAR: <fs_capex_io1>-gjahr.
wa_aufnr-sign = 'I'.
wa_aufnr-option = 'EQ'.
wa_aufnr-low = <fs_capex_io1>-aufnr.
APPEND wa_aufnr TO lr_aufnr.
CLEAR wa_aufnr.
MOVE-CORRESPONDING <fs_capex_io1> TO wa_capex_io2.
COLLECT wa_capex_io2 INTO gt_capex_io2.
CLEAR wa_capex_io2.
ENDLOOP.
REFRESH gt_capex_io1.
ENDIF.
ENDLOOP.
IF gt_coep[] IS NOT INITIAL.
* Get other internal order/s
SELECT aufnr bukrs auart
astnr kostv ktext
user5 objnr kokrs
FROM aufk
INTO TABLE gt_aufk2
FOR ALL ENTRIES IN gt_coep
WHERE kokrs = gt_coep-kokrs
AND bukrs = gt_coep-bukrs
AND objnr = gt_coep-objnr.
* Delete processed internal orders
IF NOT lr_aufnr[] IS INITIAL.
DELETE gt_aufk2 WHERE aufnr IN lr_aufnr.
ENDIF.
IF NOT s_kostl[] IS INITIAL.
DELETE gt_aufk2 WHERE kostv NOT IN s_kostl[].
ENDIF.
IF NOT s_aufnr[] IS INITIAL.
DELETE gt_aufk2 WHERE aufnr NOT IN s_aufnr[].
ENDIF.
IF NOT s_astnr[] IS INITIAL.
DELETE gt_aufk2 WHERE astnr NOT IN s_astnr[].
ENDIF.
IF gr_user5[] IS NOT INITIAL.
DELETE gt_aufk2 WHERE user5 NOT IN gr_user5.
ENDIF.
IF NOT gt_aufk2[] IS INITIAL.
APPEND LINES OF gt_aufk2 TO gt_aufk.
CLEAR lv_gjahr.
lv_gjahr = p_gjahr.
LOOP AT gt_aufk2 ASSIGNING <fs_aufk2>.
CALL FUNCTION 'ZBC_AB_CAPEX_BLANKET_IO'
EXPORTING
aufnr = <fs_aufk2>-aufnr
* KTEXT =
gjahr = lv_gjahr
* IOTYPE =
bukrs = <fs_aufk2>-bukrs
TABLES
return = gt_return
capex_io = gt_capex_io1.
IF NOT gt_capex_io1[] IS INITIAL.
LOOP AT gt_capex_io1 ASSIGNING <fs_capex_io1>.
CLEAR: <fs_capex_io1>-gjahr.
MOVE-CORRESPONDING <fs_capex_io1> TO wa_capex_io2.
COLLECT wa_capex_io2 INTO gt_capex_io2.
CLEAR wa_capex_io2.
ENDLOOP.
REFRESH gt_capex_io1.
ENDIF.
ENDLOOP.
* Get order type descriptions
SELECT spras auart txt
FROM t003p
APPENDING TABLE gt_t003p
FOR ALL ENTRIES IN gt_aufk2
WHERE spras = sy-langu
AND auart = gt_aufk2-auart.
IF NOT gt_aufk2[] IS INITIAL.
SELECT bukrs
kostl
khinr
FROM csks
APPENDING TABLE gt_csks
FOR ALL ENTRIES IN gt_aufk2
WHERE bukrs EQ gt_aufk2-bukrs
AND kostl EQ gt_aufk2-kostv
AND khinr IN s_khinr.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD. "get_capex_io_values
* METHOD process_data
METHOD process_data.
DATA: lv_flag TYPE flag.
FIELD-SYMBOLS: <fs_aufk> LIKE LINE OF gt_aufk,
<fs_csks> LIKE LINE OF gt_csks,
<fs_division> LIKE LINE OF gt_division,
<fs_capex_io2> LIKE LINE OF gt_capex_io2,
<fs_t003p> LIKE LINE OF gt_t003p,
<fs_coep> LIKE LINE OF gt_coep.
CALL METHOD me->pop_cost_center_ranges.
CALL METHOD me->get_capex_io_values.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = text-p02.
SORT gt_actual_values BY aufnr.
SORT gt_aufk BY aufnr.
DELETE ADJACENT DUPLICATES FROM gt_aufk COMPARING aufnr.
IF rb_sum = 'X'.
SORT gt_aufk BY auart.
ENDIF.
LOOP AT gt_aufk ASSIGNING <fs_aufk>.
READ TABLE gt_csks ASSIGNING <fs_csks>
WITH TABLE KEY bukrs = <fs_aufk>-bukrs
kostl = <fs_aufk>-kostv.
IF sy-subrc = 0.
IF <fs_csks>-kostl IN lr_divcode_100111.
wa_output-setname = lc_divcode_100111.
ELSEIF <fs_csks>-kostl IN lr_divcode_100110.
wa_output-setname = lc_divcode_100110.
ELSEIF <fs_csks>-kostl IN lr_divcode_101100.
wa_output-setname = lc_divcode_101100.
ELSEIF <fs_csks>-kostl IN lr_divcode_101200.
wa_output-setname = lc_divcode_101200.
ELSEIF <fs_csks>-kostl IN lr_divcode_101300.
wa_output-setname = lc_divcode_101300.
ELSEIF <fs_csks>-kostl IN lr_divcode_101400.
wa_output-setname = lc_divcode_101400.
ELSEIF <fs_csks>-kostl IN lr_divcode_101500.
wa_output-setname = lc_divcode_101500.
ELSEIF <fs_csks>-kostl IN lr_divcode_102000.
wa_output-setname = lc_divcode_102000.
ELSEIF <fs_csks>-kostl IN lr_divcode_102100.
wa_output-setname = lc_divcode_102100.
ELSEIF <fs_csks>-kostl IN lr_divcode_103000.
wa_output-setname = lc_divcode_103000.
ELSEIF <fs_csks>-kostl IN lr_divcode_104000.
wa_output-setname = lc_divcode_104000.
ELSEIF <fs_csks>-kostl IN lr_divcode_105000.
wa_output-setname = lc_divcode_105000.
ELSEIF <fs_csks>-kostl IN lr_divcode_106000.
wa_output-setname = lc_divcode_106000.
ELSEIF <fs_csks>-kostl IN lr_divcode_107000.
wa_output-setname = lc_divcode_107000.
ELSEIF <fs_csks>-kostl IN lr_divcode_108000.
wa_output-setname = lc_divcode_108000.
ELSEIF <fs_csks>-kostl IN lr_divcode_109000.
wa_output-setname = lc_divcode_109000.
ELSEIF <fs_csks>-kostl IN lr_divcode_200110.
wa_output-setname = lc_divcode_200110.
ELSEIF <fs_csks>-kostl IN lr_divcode_230000.
wa_output-setname = lc_divcode_230000.
ELSEIF <fs_csks>-kostl IN lr_divcode_200200.
wa_output-setname = lc_divcode_200200.
ELSEIF <fs_csks>-kostl IN lr_divcode_400100.
wa_output-setname = lc_divcode_400100.
ELSEIF <fs_csks>-kostl IN lr_divcode_400200.
wa_output-setname = lc_divcode_400200.
ENDIF.
READ TABLE gt_division ASSIGNING <fs_division>
WITH TABLE KEY setname = wa_output-setname.
IF sy-subrc = 0.
wa_output-descript = <fs_division>-descript.
ENDIF.
wa_output-aufnr = <fs_aufk>-aufnr.
wa_output-ktext = <fs_aufk>-ktext.
wa_output-auart = <fs_aufk>-auart.
READ TABLE gt_t003p ASSIGNING <fs_t003p>
WITH TABLE KEY spras = sy-langu
auart = wa_output-auart.
IF sy-subrc = 0.
wa_output-txt = <fs_t003p>-txt.
ENDIF.
wa_output-astnr = <fs_aufk>-astnr.
wa_output-bukrs = <fs_csks>-bukrs.
wa_output-khinr = <fs_csks>-khinr.
wa_output-kostl = <fs_csks>-kostl.
UNASSIGN <fs_capex_io2>.
READ TABLE gt_capex_io2 ASSIGNING <fs_capex_io2>
WITH KEY bukrs = wa_output-bukrs
kostv = wa_output-kostl
aufnr = wa_output-aufnr.
IF sy-subrc = 0.
* Include budget only if it falls on the same year specified by the user
IF <fs_aufk>-user5+0(4) = p_gjahr.
wa_output-budget = <fs_capex_io2>-budget.
ENDIF.
wa_output-commit = <fs_capex_io2>-commitment.
IF p_monat = '12'.
wa_output-actual = <fs_capex_io2>-actual.
ELSE.
READ TABLE gt_coep ASSIGNING <fs_coep>
WITH TABLE KEY objnr = <fs_aufk>-objnr.
IF sy-subrc = 0.
IF p_monat >= <fs_coep>-perio.
wa_output-actual = <fs_coep>-wtgbtr.
ENDIF.
ENDIF.
ENDIF.
wa_output-avail = <fs_capex_io2>-avail.
ENDIF.
wa_output-total = wa_output-actual + wa_output-commit.
* wa_output-amount = wa_output-budget - wa_output-total.
wa_output-amount = wa_output-budget - wa_output-actual.
IF NOT wa_output-budget IS INITIAL.
wa_output-age = wa_output-amount / wa_output-budget.
ENDIF.
IF rb_sum = 'X'.
MOVE-CORRESPONDING wa_output TO wa_output_sum.
IF wa_output_sum-descript IS INITIAL.
MOVE 'X' TO lv_flag.
ENDIF.
IF wa_output_sum-aufnr IS INITIAL.
MOVE 'X' TO lv_flag.
ENDIF.
IF s_div[] IS NOT INITIAL.
IF wa_output_sum-descript NOT IN s_div[].
MOVE 'X' TO lv_flag.
ENDIF.
ENDIF.
CLEAR: wa_output_sum-descript, wa_output_sum-khinr,
wa_output_sum-kostl, wa_output_sum-ktext,
wa_output_sum-aufnr, wa_output_sum-commit,
wa_output_sum-setname, wa_output_sum-txt,
wa_output_sum-budat1, wa_output_sum-budat2,
wa_output_sum-astnr, wa_output_sum-avail,
wa_output_sum-ctrdiv, wa_output_sum-ctrord.
IF lv_flag <> 'X'.
COLLECT wa_output_sum INTO gt_output_sum.
CLEAR wa_output_sum.
ENDIF.
CLEAR lv_flag.
ENDIF.
APPEND wa_output TO gt_output.
CLEAR wa_output.
ENDIF.
ENDLOOP.
DELETE gt_output WHERE descript IS INITIAL.
DELETE gt_output WHERE aufnr IS INITIAL.
IF NOT s_div[] IS INITIAL.
DELETE gt_output WHERE descript NOT IN s_div[].
ENDIF.
IF NOT gt_output[] IS INITIAL.
IF rb_sum = 'X'.
REFRESH gt_output.
gt_output[] = gt_output_sum[].
ENDIF.
CREATE OBJECT o_lcl_alv_routines.
* Display results
CALL METHOD o_lcl_alv_routines->display_data
EXPORTING
im_output = gt_output[].
ENDIF.
ENDMETHOD. "process_data
ENDCLASS. "lcl_get_data IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS lcl_alv_routines IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_routines IMPLEMENTATION.
METHOD display_data.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = text-p03.
gt_output[] = im_output[].
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = ''
IMPORTING
r_salv_table = lcl_table
CHANGING
t_table = gt_output ).
CATCH cx_salv_msg. "#EC NO_HANDLER
ENDTRY.
lcl_functions = lcl_table->get_functions( ).
* Set all standard ALV functions
lcl_functions->set_all( abap_true ).
lcl_columns = lcl_table->get_columns( ).
lcl_columns->set_optimize( '' ).
* Set display to striped pattern
lcl_display = lcl_table->get_display_settings( ).
lcl_display->set_striped_pattern( cl_salv_display_settings=>true ).
*/Sort columns
TRY.
lcl_sorts = lcl_table->get_sorts( ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
lcl_sorts->set_group_active( ).
IF rb_sum = 'X'.
TRY.
lcl_sorts->add_sort(
columnname = 'AUART'
subtotal = '' ).
CATCH cx_salv_not_found cx_salv_existing cx_salv_data_error."#EC NO_HANDLER
ENDTRY.
ENDIF.
*/Set column names
TRY.
lcl_column ?= lcl_columns->get_column( 'DESCRIPT' ).
lcl_column->set_short_text( text-h01 ).
lcl_column->set_medium_text( text-h01 ).
lcl_column->set_long_text( text-h01 ).
lcl_column->set_output_length( '40' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'BUKRS' ).
lcl_column->set_medium_text( text-h02 ).
lcl_column->set_long_text( text-h02 ).
lcl_column->set_output_length( '12' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KHINR' ).
lcl_column->set_medium_text( text-h03 ).
lcl_column->set_long_text( text-h03 ).
lcl_column->set_output_length( '17' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KOSTL' ).
lcl_column->set_medium_text( text-h04 ).
lcl_column->set_long_text( text-h04 ).
lcl_column->set_output_length( '10' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AUART' ).
lcl_column->set_medium_text( text-h05 ).
lcl_column->set_long_text( text-h05 ).
lcl_column->set_output_length( '04' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KTEXT' ).
lcl_column->set_medium_text( text-h06 ).
lcl_column->set_long_text( text-h06 ).
lcl_column->set_output_length( '20' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AUFNR' ).
lcl_column->set_medium_text( text-h07 ).
lcl_column->set_long_text( text-h07 ).
lcl_column->set_output_length( '12' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'ACTUAL' ).
lcl_column->set_short_text( text-h08 ).
lcl_column->set_medium_text( text-h08 ).
lcl_column->set_long_text( text-h08 ).
lcl_column->set_output_length( '10' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'COMMIT' ).
lcl_column->set_short_text( text-h09 ).
lcl_column->set_medium_text( text-h09 ).
lcl_column->set_long_text( text-h09 ).
lcl_column->set_output_length( '10' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'TOTAL' ).
lcl_column->set_short_text( text-h10 ).
lcl_column->set_medium_text( text-h10 ).
lcl_column->set_long_text( text-h10 ).
lcl_column->set_output_length( '10' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'BUDGET' ).
lcl_column->set_short_text( text-h11 ).
lcl_column->set_medium_text( text-h11 ).
lcl_column->set_long_text( text-h11 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AMOUNT' ).
lcl_column->set_short_text( text-h12 ).
lcl_column->set_medium_text( text-h12 ).
lcl_column->set_long_text( text-h12 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AGE' ).
lcl_column->set_short_text( text-h13 ).
lcl_column->set_medium_text( text-h13 ).
lcl_column->set_long_text( text-h13 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
*/Set aggregations
TRY.
lcl_aggregations = lcl_table->get_aggregations( ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'ACTUAL' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'COMMIT' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'TOTAL' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'BUDGET' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'AMOUNT' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'AGE' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
*/Hide columns
IF rb_sum = 'X'.
TRY.
lcl_column ?= lcl_columns->get_column( 'DESCRIPT' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KHINR' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KOSTL' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'KTEXT' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AUFNR' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'SETNAME' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
ENDIF.
TRY.
lcl_column ?= lcl_columns->get_column( 'SETNAME' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'TXT' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'BUDAT1' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'BUDAT2' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'ASTNR' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'COMMIT' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'TOTAL' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'AVAIL' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'CTRDIV' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'CTRORD' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
*/Display top of page
CALL METHOD me->display_top_of_page.
lcl_table->set_top_of_list( lcl_content ).
lcl_events2 = lcl_table->get_event( ).
CREATE OBJECT lcl_handle_events.
SET HANDLER lcl_handle_events->on_link_click FOR lcl_events2.
lcl_display_settings = lcl_table->get_display_settings( ).
lcl_table->display( ).
ENDMETHOD. "display_data
METHOD display_top_of_page.
DATA: lv_string TYPE string,
lv_string2 TYPE string,
lv_date1 TYPE c LENGTH 10,
lv_date2 TYPE c LENGTH 10,
lv_date3 TYPE c LENGTH 10,
lv_date_dum TYPE sy-datum,
lv_time TYPE c LENGTH 10,
lv_title TYPE string.
CREATE OBJECT lcl_grid.
CONCATENATE: '01' '/' '01' '/' p_gjahr
INTO lv_date1.
CONCATENATE: p_gjahr p_monat '01'
INTO lv_date_dum.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = lv_date_dum
IMPORTING
last_day_of_month = lv_date_dum
EXCEPTIONS
day_in_no_date = 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.
CONCATENATE: lv_date_dum+4(2) '/' lv_date_dum+6(2) '/' lv_date_dum+0(4)
INTO lv_date2.
IF rb_sum = 'X'.
lv_title = text-t04.
ELSE.
lv_title = text-t01.
ENDIF.
lcl_grid->create_header_information(
row = 1
column = 1
text = lv_title
tooltip = lv_title ).
lcl_grid->add_row( ).
lcl_grid_1 = lcl_grid->create_grid(
row = 3
column = 1 ).
CONCATENATE: text-t02 lv_date1 '-' lv_date2
INTO lv_string
SEPARATED BY space.
lcl_label = lcl_grid_1->create_label(
row = 1
column = 1
text = lv_string
tooltip = lv_string ).
CLEAR lv_string.
CONCATENATE: sy-datum+4(2) '/' sy-datum+6(2) '/' sy-datum+0(4)
INTO lv_date3.
CONCATENATE: text-t05 lv_date3
INTO lv_string
SEPARATED BY space.
lcl_label = lcl_grid_1->create_label(
row = 1
column = 70
text = lv_string
tooltip = lv_string ).
CONCATENATE: text-t03 lv_date1 '-' lv_date2
INTO lv_string2
SEPARATED BY space.
lcl_label = lcl_grid_1->create_label(
row = 2
column = 1
text = lv_string2
tooltip = lv_string2 ).
CLEAR lv_string.
CONCATENATE: sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2)
INTO lv_time.
CONCATENATE: text-t06 lv_time
INTO lv_string
SEPARATED BY space.
lcl_label = lcl_grid_1->create_label(
row = 2
column = 70
text = lv_string
tooltip = lv_string ).
lcl_content = lcl_grid.
ENDMETHOD. "display_top_of_page
ENDCLASS. "lcl_alv_routines IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
* METHOD on_link_click
METHOD on_link_click.
ENDMETHOD. "on_link_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
*----------------------------------------------*
* START-OF-SELECTION *
*----------------------------------------------*
START-OF-SELECTION.
DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
CREATE OBJECT o_lcl_get_data.
CALL METHOD o_lcl_get_data->get_internal_order.
02-05-2008 4:14 AM
Hai,
The following will give the exact solution for ur issue.
Have a look on the following code. Copy,paste and execute.
TABLES VBAK.
TYPE-POOLS SLIS.
Data Declaration
TYPES: BEGIN OF T_VBAK,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
AUDAT TYPE VBAK-AUDAT,
VBTYP TYPE VBAK-VBTYP,
NETWR TYPE VBAK-NETWR,
VKORG TYPE VBAK-VKORG,
VKGRP TYPE VBAK-VKGRP,
END OF T_VBAK.
DATA IT_VBAK TYPE STANDARD TABLE OF T_VBAK INITIAL SIZE 0.
ALV Data Declaration
DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
W_FLDCAT TYPE SLIS_FIELDCAT_ALV,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_REPID TYPE SY-REPID.
DATA: DATE1(10).
SELECT-OPTIONS: VBELN FOR VBAK-VBELN.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BLD_FLDCAT.
PERFORM BLD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.
Build Field Catalog for ALV Report
FORM BLD_FLDCAT.
W_FLDCAT-FIELDNAME = 'VBELN'.
W_FLDCAT-SELTEXT_M = 'Sales_Document'.
W_FLDCAT-COL_POS = 0.
*W_FLDCAT-EMPHASIZE = 'C411'.
*CXYZ: C=COLOR,X=COLOR NUMBER(1-9),Y=BOLD(0/1),Z=INVERSE(0/1)
W_FLDCAT-OUTPUTLEN = 15.
W_FLDCAT-KEY = 'X'.
W_FLDCAT-ICON = 'X'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'ERDAT'.
W_FLDCAT-SELTEXT_L = 'Record_Date_created'.
W_FLDCAT-COL_POS = 1.
W_FLDCAT-KEY = 'X'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'ERNAM'.
W_FLDCAT-SELTEXT_L = 'Cteated_Person_Name'.
W_FLDCAT-COL_POS = 2.
W_FLDCAT-EMPHASIZE = 'C011'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'AUDAT'.
W_FLDCAT-SELTEXT_M = 'Document_Date'.
W_FLDCAT-COL_POS = 3.
W_FLDCAT-EMPHASIZE = 'C110'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'VBTYP'.
W_FLDCAT-SELTEXT_L = 'SDDocument_category'.
W_FLDCAT-COL_POS = 4.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'NETWR'.
W_FLDCAT-SELTEXT_L = 'Net_Value'.
W_FLDCAT-COL_POS = 5.
W_FLDCAT-OUTPUTLEN = 10.
W_FLDCAT-DO_SUM = 'X'.
W_FLDCAT-DATATYPE = 'CURR'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'VKORG'.
W_FLDCAT-SELTEXT_L = 'Sales_Organization'.
W_FLDCAT-COL_POS = 6.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
W_FLDCAT-FIELDNAME = 'VKGRP'.
W_FLDCAT-SELTEXT_M = 'Sales_Group'.
W_FLDCAT-COL_POS = 7.
W_FLDCAT-EMPHASIZE = 'C801'.
APPEND W_FLDCAT TO FLDCAT.
CLEAR W_FLDCAT.
ENDFORM.
Build Layout for ALV Grid Report
FORM BLD_LAYOUT.
GD_LAYOUT-NO_INPUT = 'X'.
GD_LAYOUT-BOX_FIELDNAME = 'VBELN'.
ENDFORM.
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
IS_LAYOUT = GD_LAYOUT
I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP_OF_PAGE_SPLIT'
IT_FIELDCAT = FLDCAT[]
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_VBAK
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.
Retrieve data from VBAK table and populate itab IT_VBAK
FORM DATA_RETRIEVAL.
SELECT VBELN ERDAT ERNAM AUDAT VBTYP NETWR VKORG
FROM VBAK
INTO TABLE IT_VBAK
WHERE VBELN IN VBELN.
ENDFORM.
FORM TOP_OF_PAGE_SPLIT USING R_TOP TYPE REF TO CL_DD_DOCUMENT.
DATA: S_TAB TYPE SDYDO_TEXT_TABLE,
C_AREA TYPE REF TO CL_DD_AREA,
TEXT TYPE SDYDO_TEXT_ELEMENT.
TYPES: BEGIN OF TAB_TEXT,
TEXT TYPE SDYDO_TEXT_ELEMENT,
END OF TAB_TEXT.
DATA: I_TEXT TYPE TABLE OF TAB_TEXT.
DATA: W_TEXT TYPE TAB_TEXT.
CALL METHOD R_TOP->INITIALIZE_DOCUMENT.
CALL METHOD R_TOP->VERTICAL_SPLIT
EXPORTING
SPLIT_AREA = R_TOP
SPLIT_WIDTH = '70%'
IMPORTING
RIGHT_AREA = C_AREA.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CONCATENATE SY-DATUM4(2) ' / ' SY-DATUM6(2) ' / ' SY-DATUM(4) INTO DATE1.
CONCATENATE 'DATE' DATE1 INTO W_TEXT-TEXT SEPARATED BY ':'.
APPEND W_TEXT TO I_TEXT.
S_TAB[] = I_TEXT[].
CALL METHOD C_AREA->ADD_TEXT
EXPORTING
TEXT_TABLE = S_TAB
FIX_LINES = 'X'
SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM
SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG.
CALL METHOD R_TOP->ADD_GAP
EXPORTING
WIDTH = 60.
TEXT = 'REPORT HEADING'.
CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'STRONG'.
CALL METHOD R_TOP->NEW_LINE.
TEXT = 'Report Subheading'.
CALL METHOD R_TOP->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = 'STRONG'.
CALL METHOD R_TOP->NEW_LINE.
ENDFORM.
If u need any help regarding this then i wl gv u.
Reward points,if it is useful.
Thanks,
chandu.
04-18-2008 2:17 PM
In the html_top_of_page, use add_gap method to introduce spaces required (as below), and get your contents to center of headings.
l_text = 'ABCDE'.
CALL METHOD top->add_text EXPORTING text = l_text.
CALL METHOD top->add_gap EXPORTING width = 80.
l_text = 'GHIJKL'.
CALL METHOD top->add_text EXPORTING text = l_text.
CALL METHOD top->add_gap EXPORTING width = 89.
Thanks
Krishna
04-18-2008 2:27 PM
Check this code...
I aligned the tile in the center.
REPORT ztest_page.
TYPE-POOLS: icon.
DATA : it_comp TYPE TABLE OF t001 WITH HEADER LINE.
START-OF-SELECTION.
SELECT * FROM t001 INTO TABLE it_comp.
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_structure_name = 'T001'
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
WRITE 'This is the Top of page which triggers in print'.
ENDFORM. "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form html_top_of_page
*&---------------------------------------------------------------------*
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
document->add_gap(
WIDTH = 150
).
document->add_text(
EXPORTING
text = 'Title'
SAP_FONTSIZE = 'Large'
SAP_STYLE = 'Heading'
).
CALL METHOD document->new_line.
document->add_icon(
sap_icon = 'ICON_LED_GREEN'
).
document->add_icon(
sap_icon = 'ICON_LED_RED'
).
document->add_icon(
sap_icon = 'ICON_LED_YELLOW'
).
ENDFORM. "HTML_TOP_OF_PAGE