Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Top of page event in ALV grid display.

Former Member
0 Kudos

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.

8 REPLIES 8

former_member156446
Active Contributor
0 Kudos
*---------------------------------------------------------------------*
* 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.

Former Member
0 Kudos

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...

0 Kudos

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.

Former Member
0 Kudos

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

aris_hidalgo
Contributor
0 Kudos

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.

Former Member
0 Kudos

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.

kammaje_cis
Active Contributor
0 Kudos

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

former_member188685
Active Contributor
0 Kudos

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