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

Logo Alignment in ALV

Hello All,

I am working on ALV reporting I am using standard function module REUSE_ALV_COMMENTARY_WRITE, I want align my logo into Left side of screen, Next line of logo I have to display header info.

Can any one help me.

Regards,

Venkat

Add comment
10|10000 characters needed characters exceeded

1 Answer

  • Posted on Jun 26, 2006 at 07:53 AM

    Hi,

    It is not possible to align according to your requirement with the help of that FM.

    Regards

    vijay

    Add comment
    10|10000 characters needed characters exceeded

    • hi,

      i did it is working fine for me.

      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 image to top-of-page
      <b>CALL METHOD DG_DYNDOC_ID->ADD_PICTURE
        EXPORTING
          PICTURE_ID       = 'ENJOYSAP_LOGO'
         .
      * Add new-line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.</b>
      
        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

      Regards

      Vijay