Skip to Content
author's profile photo Former Member
Former Member

OOPS ALV .Print_top_of_page event

Hi ,

I am doing OOPS alv , for the top of page to get printed ,i used print_top_of_page event from cl_gui_alv_grid .Now ,i am able to get print of top of page ,but the font is same as the data in the report ..can we increase the font so that it looks like a heading ?basically , how do we increase the font of the header ??

Many thanks

Hemanth

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jan 31, 2008 at 08:03 AM

    Hi Nugur,

    DD_STYLE_TABLE is the sample program to print text in reports with fonts and colors and this report is based on class CL_DD_DOCUMENT with its methods and this class is avialable from 4.7 onwards.

    Reward if found helpfull,

    Cheers,

    Chaitanya.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 31, 2008 at 08:05 AM

    hI,

    The code i used to implement top of page for OO ALV is as below but when you proceed to print out the report, it doesn't print out the header as the list output doesn't show the header.

    REPORT ZTEST1234_ALV_TOP MESSAGE-ID ZZ .

    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.

    DATA: L_VALID TYPE C,

    V_FLAG,

    V_DATA_CHANGE,

    V_ROW TYPE LVC_S_ROW,

    V_COLUMN TYPE LVC_S_COL,

    V_ROW_NUM TYPE LVC_S_ROID.

    "The Below Definitions Must.....

    DATA:

    Reference to document

    DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,

    Reference to split container

    DG_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

    Reference to grid container

    DG_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER,

    Reference to html container

    DG_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER,

    Reference to html container

    DG_PARENT_HTML TYPE REF TO CL_GUI_CONTAINER.

    "up to here

    -


    CLASS lcl_event_handler DEFINITION

    -


    CLASS LCL_EVENT_HANDLER DEFINITION .

    PUBLIC SECTION .

    METHODS:

    **Hot spot Handler

    HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,

    **Double Click Handler

    HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW E_COLUMN ES_ROW_NO,

    TOP_OF_PAGE FOR EVENT TOP_OF_PAGE "event handler

    OF CL_GUI_ALV_GRID

    IMPORTING E_DYNDOC_ID.

    ENDCLASS. "lcl_event_handler DEFINITION

    -


    CLASS lcl_event_handler IMPLEMENTATION

    -


    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

    *Handle Hotspot Click

    METHOD HANDLE_HOTSPOT_CLICK .

    CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.

    V_ROW = E_ROW_ID.

    V_COLUMN = E_COLUMN_ID.

    V_ROW_NUM = ES_ROW_NO.

    MESSAGE I000 WITH V_ROW 'clicked'.

    ENDMETHOD. "lcl_event_handler

    *Handle Double Click

    METHOD HANDLE_DOUBLE_CLICK.

    ENDMETHOD. "handle_double_click

    METHOD TOP_OF_PAGE. "implementation

    Top-of-page event

    PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.

    ENDMETHOD. "top_of_page

    ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION

    &----


    *& Global Definitions

    &----


    DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1

    G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler

    DATA: OK_CODE LIKE SY-UCOMM,

    SAVE_OK LIKE SY-UCOMM,

    G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',

    GS_LAYOUT TYPE LVC_S_LAYO.

    Fieldcatalog for First and second Report

    DATA: IT_FIELDCAT TYPE LVC_T_FCAT,

    X_FIELDCAT TYPE LVC_S_FCAT,

    LS_VARI TYPE DISVARIANT.

    *----


    START-OF_SELECTION

    *----


    START-OF-SELECTION.

    DATA:BEGIN OF ITAB OCCURS 0,

    VBELN LIKE LIKP-VBELN,

    POSNR LIKE LIPS-POSNR,

    CELLCOLOR TYPE LVC_T_SCOL, "required for color

    DROP(10),

    END OF ITAB.

    SELECT VBELN

    POSNR

    FROM LIPS

    UP TO 20 ROWS

    INTO CORRESPONDING FIELDS OF TABLE ITAB.

    END-OF-SELECTION.

    IF NOT ITAB[] IS INITIAL.

    CALL SCREEN 100.

    ELSE.

    MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).

    ENDIF.

    &----


    *& Form CREATE_AND_INIT_ALV

    &----


    text

    -


    FORM CREATE_AND_INIT_ALV .

    DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.

    "attention.....from here

    "split your container here...into two parts

    "create the container

    CREATE OBJECT G_CUSTOM_CONTAINER

    EXPORTING CONTAINER_NAME = G_CONTAINER1.

    "this is for top of page

    Create TOP-Document

    CREATE OBJECT DG_DYNDOC_ID

    EXPORTING STYLE = 'ALV_GRID'.

    Create Splitter for custom_container

    CREATE OBJECT DG_SPLITTER

    EXPORTING PARENT = G_CUSTOM_CONTAINER

    ROWS = 2

    COLUMNS = 1.

    Split the custom_container to two containers and move the reference

    to receiving containers g_parent_html and g_parent_grid

    "i am allocating the space for grid and top of page

    CALL METHOD DG_SPLITTER->GET_CONTAINER

    EXPORTING

    ROW = 1

    COLUMN = 1

    RECEIVING

    CONTAINER = DG_PARENT_HTML.

    CALL METHOD DG_SPLITTER->GET_CONTAINER

    EXPORTING

    ROW = 2

    COLUMN = 1

    RECEIVING

    CONTAINER = DG_PARENT_GRID.

    "you can set the height of it

    Set height for g_parent_html

    CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT

    EXPORTING

    ID = 1

    HEIGHT = 5.

    "from here as usual..you need to specify parent as splitter part

    "which we alloted for grid

    CREATE OBJECT G_GRID

    EXPORTING I_PARENT = DG_PARENT_GRID.

    Set a titlebar for the grid control

    CLEAR GS_LAYOUT.

    GS_LAYOUT-GRID_TITLE = TEXT-003.

    GS_LAYOUT-ZEBRA = SPACE.

    GS_LAYOUT-CWIDTH_OPT = 'X'.

    GS_LAYOUT-NO_ROWMARK = 'X'.

    GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.

    CALL METHOD G_GRID->REGISTER_EDIT_EVENT

    EXPORTING

    I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.

    CREATE OBJECT G_HANDLER.

    SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.

    SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.

    SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID.

    DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color

    DATA: L_INDEX TYPE SY-TABIX.

    "Here i am changing the color of line 1,5,10...

    "so you can change the color of font conditionally

    LOOP AT ITAB.

    L_INDEX = SY-TABIX.

    IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.

    LS_CELLCOLOR-FNAME = 'VBELN'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    LS_CELLCOLOR-FNAME = 'POSNR'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    ENDIF.

    ENDLOOP.

    setting focus for created grid control

    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS

    EXPORTING

    CONTROL = G_GRID.

    Build fieldcat and set editable for date and reason code

    edit enabled. Assign a handle for the dropdown listbox.

    PERFORM BUILD_FIELDCAT.

    PERFORM SET_DRDN_TABLE.

    Optionally restrict generic functions to 'change only'.

    (The user shall not be able to add new lines).

    PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.

    **Vaiant to save the layout

    LS_VARI-REPORT = SY-REPID.

    LS_VARI-HANDLE = SPACE.

    LS_VARI-LOG_GROUP = SPACE.

    LS_VARI-USERNAME = SPACE.

    LS_VARI-VARIANT = SPACE.

    LS_VARI-TEXT = SPACE.

    LS_VARI-DEPENDVARS = SPACE.

    **Calling the Method for ALV output

    CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY

    EXPORTING

    IT_TOOLBAR_EXCLUDING = LT_EXCLUDE

    IS_VARIANT = LS_VARI

    IS_LAYOUT = GS_LAYOUT

    I_SAVE = 'A'

    CHANGING

    IT_FIELDCATALOG = IT_FIELDCAT

    IT_OUTTAB = ITAB[].

    "do these..{

    Initializing document

    CALL METHOD DG_DYNDOC_ID->INITIALIZE_DOCUMENT.

    Processing events

    CALL METHOD G_GRID->LIST_PROCESSING_EVENTS

    EXPORTING

    I_EVENT_NAME = 'TOP_OF_PAGE'

    I_DYNDOC_ID = DG_DYNDOC_ID.

    "end }

    Set editable cells to ready for input initially

    CALL METHOD G_GRID->SET_READY_FOR_INPUT

    EXPORTING

    I_READY_FOR_INPUT = 1.

    ENDFORM. "CREATE_AND_INIT_ALV

    &----


    *& Form EXCLUDE_TB_FUNCTIONS

    &----


    text

    -


    -->PT_EXCLUDE text

    -


    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.

    Only allow to change data not to create new entries (exclude

    generic functions).

    DATA LS_EXCLUDE TYPE UI_FUNC.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    ENDFORM. " EXCLUDE_TB_FUNCTIONS

    &----


    *& Form build_fieldcat

    &----


    Fieldcatalog

    -


    FORM BUILD_FIELDCAT .

    DATA: L_POS TYPE I.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).

    X_FIELDCAT-FIELDNAME = 'VBELN'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-NO_ZERO = 'X'.

    X_FIELDCAT-OUTPUTLEN = '10'.

    X_FIELDCAT-HOTSPOT = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Item'(025).

    X_FIELDCAT-FIELDNAME = 'POSNR'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Drop'(025).

    X_FIELDCAT-FIELDNAME = 'DROP'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    X_FIELDCAT-EDIT = 'X'.

    X_FIELDCAT-DRDN_HNDL = '1'.

    X_FIELDCAT-DRDN_ALIAS = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    ENDFORM. " build_fieldcat

    &----


    *& Module STATUS_0100 OUTPUT

    &----


    text

    -


    MODULE STATUS_0100 OUTPUT.

    SET PF-STATUS 'MAIN100'.

    SET TITLEBAR 'MAIN100'.

    IF G_CUSTOM_CONTAINER IS INITIAL.

    **Initializing the grid and calling the fm to Display the O/P

    PERFORM CREATE_AND_INIT_ALV.

    ENDIF.

    ENDMODULE. " STATUS_0100 OUTPUT

    &----


    *& Module USER_COMMAND_0100 INPUT

    &----


    text

    -


    MODULE USER_COMMAND_0100 INPUT.

    CASE SY-UCOMM.

    WHEN 'BACK'.

    LEAVE TO SCREEN 0.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_0100 INPUT

    &----


    *& Form SET_DRDN_TABLE

    &----


    text

    -


    FORM SET_DRDN_TABLE.

    DATA:LT_DRAL TYPE LVC_T_DRAL,

    LS_DRAL TYPE LVC_S_DRAL.

    LOOP AT ITAB .

    First listbox (handle '1').

    IF SY-INDEX = 1.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ' '.

    LS_DRAL-INT_VALUE = ' '.

    ELSE.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ITAB-POSNR.

    LS_DRAL-INT_VALUE = ITAB-POSNR.

    ENDIF.

    APPEND LS_DRAL TO LT_DRAL.

    ENDLOOP.

    **Setting the Drop down table for Reason Code

    CALL METHOD G_GRID->SET_DROP_DOWN_TABLE

    EXPORTING

    IT_DROP_DOWN_ALIAS = LT_DRAL.

    ENDFORM. " set_drdn_table

    &----


    *& Form EVENT_TOP_OF_PAGE

    &----


    text

    -


    -->DG_DYNDOC_ID text

    -


    FORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.

    "this is more clear.....check it

    "first add text, then pass it to comentry write fm

    DATA : DL_TEXT(255) TYPE C. "Text

    Populating header to top-of-page

    CALL METHOD DG_DYNDOC_ID->ADD_TEXT

    EXPORTING

    TEXT = 'Test Report'

    SAP_STYLE = CL_DD_AREA=>HEADING.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    CLEAR : DL_TEXT.

    Move program ID

    CONCATENATE 'Program Name :' SY-REPID

    INTO DL_TEXT SEPARATED BY SPACE.

    Add Program Name to Document

    PERFORM ADD_TEXT USING DL_TEXT.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    CLEAR : DL_TEXT.

    Move User ID

    CONCATENATE 'User ID :' SY-UNAME INTO DL_TEXT SEPARATED BY SPACE

    .

    Add User ID to Document

    PERFORM ADD_TEXT USING DL_TEXT.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    CLEAR : DL_TEXT.

    Move Client

    CONCATENATE 'Client :' SY-MANDT INTO DL_TEXT SEPARATED BY SPACE.

    Add Client to Document

    PERFORM ADD_TEXT USING DL_TEXT.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    CLEAR : DL_TEXT.

    Move date

    WRITE SY-DATUM TO DL_TEXT.

    CONCATENATE 'Date :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.

    Add Date to Document

    PERFORM ADD_TEXT USING DL_TEXT.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    CLEAR : DL_TEXT.

    Move time

    WRITE SY-UZEIT TO DL_TEXT.

    CONCATENATE 'Time :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.

    Add Time to Document

    PERFORM ADD_TEXT USING DL_TEXT.

    Add new-line

    CALL METHOD DG_DYNDOC_ID->NEW_LINE.

    Populating data to html control

    PERFORM HTML.

    ENDFORM. " EVENT_TOP_OF_PAGE

    &----


    *& Form ADD_TEXT

    &----


    To add Text

    -


    FORM ADD_TEXT USING P_TEXT TYPE SDYDO_TEXT_ELEMENT.

    Adding text

    CALL METHOD DG_DYNDOC_ID->ADD_TEXT

    EXPORTING

    TEXT = P_TEXT

    SAP_EMPHASIS = CL_DD_AREA=>HEADING.

    ENDFORM. " ADD_TEXT

    &----


    *& Form HTML

    &----


    text

    -


    FORM HTML.

    DATA : DL_LENGTH TYPE I, " Length

    DL_BACKGROUND_ID TYPE SDYDO_KEY VALUE SPACE. " Background_id

    Creating html control

    IF DG_HTML_CNTRL IS INITIAL.

    CREATE OBJECT DG_HTML_CNTRL

    EXPORTING

    PARENT = DG_PARENT_HTML.

    ENDIF.

    Reuse_alv_grid_commentary_set

    CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET'

    EXPORTING

    DOCUMENT = DG_DYNDOC_ID

    BOTTOM = SPACE

    IMPORTING

    LENGTH = DL_LENGTH.

    Get TOP->HTML_TABLE ready

    CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.

    Set wallpaper

    CALL METHOD DG_DYNDOC_ID->SET_DOCUMENT_BACKGROUND

    EXPORTING

    PICTURE_ID = DL_BACKGROUND_ID.

    Connect TOP document to HTML-Control

    DG_DYNDOC_ID->HTML_CONTROL = DG_HTML_CNTRL.

    Display TOP document

    CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT

    EXPORTING

    REUSE_CONTROL = 'X'

    PARENT = DG_PARENT_HTML

    EXCEPTIONS

    HTML_DISPLAY_ERROR = 1.

    IF SY-SUBRC NE 0.

    MESSAGE I999 WITH 'Error in displaying top-of-page'(036).

    ENDIF.

    ENDFORM. " HTML

    go through below thread

    how-to-bring-topofpage-in-oops-alv

    Reward Points if found helpfull..

    Cheers,

    Chandra Sekhar.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.