Application Development and Automation 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: 
Read only

ALV Header Center Aligned

sandeepmalhotra
Participant
0 Likes
12,913

Hello Everyone,

I am trying to have a label in header center aligned. But unable to make it. Still coming left-aligned.

Kindly advise.

Thanks

Code ---->

METHOD set_top_of_page.

DATA: lr_header           TYPE REF TO cl_salv_form_layout_grid,

           lr_h_label           TYPE REF TO cl_salv_form_label,

           lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data,

           lr_h_grid              TYPE REF TO cl_salv_form_layout_grid,

           lr_h_layout_grid  TYPE REF TO cl_salv_form_layout_data_grid.

     CREATE OBJECT lr_header

       EXPORTING

         columns = 14.

     lr_h_grid = lr_header->create_grid( row = 1

                                         column = 1 ).

     lr_h_label = lr_h_grid->create_label( row = 1 column = 1 text = 'Dummy Header Text' ).

     lr_h_layout_data = lr_h_label->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).


     im_alv->set_top_of_list( lr_header ).

     im_alv->set_top_of_list_print( lr_header ).

endmethod.

Hello Everyone,

I am trying to have a label in header center aligned. But unable to make it. Still coming left-aligned.

Kindly advise.

Thanks

Code ---->

METHOD set_top_of_page.

DATA: lr_header           TYPE REF TO cl_salv_form_layout_grid,

           lr_h_label           TYPE REF TO cl_salv_form_label,

           lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data,

           lr_h_grid              TYPE REF TO cl_salv_form_layout_grid,

           lr_h_layout_grid  TYPE REF TO cl_salv_form_layout_data_grid.

     CREATE OBJECT lr_header

       EXPORTING

         columns = 14.

     lr_h_grid = lr_header->create_grid( row = 1

                                         column = 1 ).

     lr_h_label = lr_h_grid->create_label( row = 1 column = 1 text = 'Dummy Header Text' ).

     lr_h_layout_data = lr_h_label->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).


     im_alv->set_top_of_list( lr_header ).

     im_alv->set_top_of_list_print( lr_header ).

endmethod.

19 REPLIES 19
Read only

0 Likes
10,672

Hi Sandeep,

Try this: DATA: lo_column    TYPE REF TO CL_SALV_FORM_GRID_COLUMN.   lo_column = lr_grid->get_column( column = 1 ).   CALL METHOD lo_column->set_h_align     EXPORTING       value = IF_SALV_FORM_C_H_ALIGN=>CENTER.

Read only

0 Likes
10,672

I want label to be center aligned.

Created as follows

   lr_h_label = lr_h_grid->create_label( row = 1 column = 1 text = 'Dummy Header Text' ).

Read only

former_member228514
Participant
0 Likes
10,672

Hi Sandeep,

I was trying with above method but no success in that.

But you can change the column position to resolve the issue.

Try with below code

    obj_header->create_label(

     row     = 1

     column  = 65

     text    = 'Test line1' ).

Read only

0 Likes
10,672

I tried this but did not work out . In my case  I need to display 1 label (bold) in first row and text in 2 and 3 row. If I display only text (means text but no label) .Center Align is working.But when i tried to displayed all (1 label and 2 texts . total three rows). it did not work.

I tried with all permutation and combination.

Read only

0 Likes
10,672

Hi Sandeep,

I tried above requriment and its working for me.

Please check below code and attached screen shot of output.

      obj_header = sp_obj_header->create_gridrow = 3



                                             column = 1



                                             colspan = 6 ).



    obj_header->create_label(



     row     = 1



     column  = 65



     text    = 'Label' ).



       obj_header->create_label(



     row     = 2



     column  = 65



     text    = 'Text1' ).



  obj_header->create_label(



     row     = 3



     column  = 65



     text    = 'Text2' ).

Read only

0 Likes
10,672

Thanks Aarti

I tried the same . Some how manage the center align but unable to display correct column.

Code as follows.

METHOD set_top_of_page.

     DATA: lr_header         TYPE REF TO cl_salv_form_layout_grid,

           lr_h_label        TYPE REF TO cl_salv_form_label,

           lr_h_textview     TYPE REF TO cl_salv_form_text,

           lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data,

           lr_h_grid         TYPE REF TO cl_salv_form_layout_grid,

           lr_h_layout_grid  TYPE REF TO cl_salv_form_layout_data_grid.

     CREATE OBJECT lr_header

       EXPORTING

         columns = 1.

     lr_h_grid = lr_header->create_grid( row = 3

                                         column = 1

                                         colspan = 6 ).

     lr_h_label = lr_h_grid->create_label( row = 1 column = 65 text = 'label first line' ).

*    lr_h_column = lr_h_grid->get_column( column = 1 ).

*    lr_h_column->set_h_align( if_salv_form_c_h_align=>center ).

     lr_h_layout_data = lr_h_label->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).

     lr_h_textview = lr_h_grid->create_text( row = 2 column = 65 text 'text1  second line ' ).

     lr_h_layout_data = lr_h_textview->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).

     lr_h_textview = lr_h_grid->create_text( row = 3 column = 65 text = 'text3 third  line ' )..

     lr_h_layout_data = lr_h_textview->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).

     gr_alv->set_top_of_list( lr_header ).

     gr_alv->set_top_of_list_print( lr_header ).

   ENDMETHOD.                    "set_top_of_page



Also I checked colspan has no effect on output .


Read only

0 Likes
10,672

Could you please attached screen shot of output. It will be easy for me to understand.

Read only

0 Likes
10,672

In my previous post I had attached the file

Read only

0 Likes
10,672

Could you please copy below code and paste in your method. Because it is working for me as per your requirement.

DATA : obj_header    TYPE REF TO cl_salv_form_layout_grid,

           obj_output TYPE REF TO cl_salv_table,

           sp_obj_header  TYPE REF TO cl_salv_form_layout_grid.

     

CREATE OBJECT sp_obj_header.



*    •    create a header grid with required column and rows



      obj_header = sp_obj_header->create_grid(    row = 3



                                               column = 1



                                              colspan = 6 ).



     obj_header->create_label( row     = 1



                               column  = 65



                               text    = 'label first line').



    obj_header->CREATE_TEXTrow     = 2



                              column  = 65



                              text    = 'text1  second line' ).



   obj_header->CREATE_TEXT(   row     = 3



                              column  = 65



                              text    = 'text3 third  line' ).



    obj_output->set_top_of_list( obj_header ).

Read only

0 Likes
10,672

I tired but again same thing left aligned.

Read only

0 Likes
10,672

If possible can you paste the whole code including class definition and implementation.

Read only

0 Likes
10,672

*&---------------------------------------------------------------------*

*& Report  ZAH_ALV_OOPS

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*



REPORT  zah_alv_oops.



*----------------------------------------------------------------------*

*       CLASS class1 DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS class1 DEFINITION.



  PUBLIC SECTION.





    TYPES: BEGIN OF ty_vbak,

           vbeln TYPE vbak-vbeln,

           erdat TYPE erdat,

           auart TYPE auart,

           kunnr TYPE kunnr,

           END   OF ty_vbak.



    DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.



    DATA: o_alv TYPE REF TO cl_salv_table.



    METHODS:



      get_data,

      display_data.



  PRIVATE SECTION.

    METHODS:

      set_pf_status

        CHANGING

          co_alv TYPE REF TO cl_salv_table.

    METHODS: set_top_of_page.





ENDCLASS.                    "class1 DEFINITION





START-OF-SELECTION.



  DATA: class1 TYPE REF TO class1.



  CREATE OBJECT class1.



  class1->get_data( ).



  class1->display_data( ).







*----------------------------------------------------------------------*

*       CLASS class1 IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS class1 IMPLEMENTATION.



  METHOD get_data.



    SELECT vbeln erdat auart kunnr

           INTO  TABLE t_vbak

           FROM  vbak

           UP TO 20 ROWS.



  ENDMETHOD.                    "get_data

  METHOD display_data.

    DATA : obj_header    TYPE REF TO cl_salv_form_layout_grid,

           obj_output TYPE REF TO cl_salv_table,

           sp_obj_header  TYPE REF TO cl_salv_form_layout_grid,

           lr_h_label           TYPE REF TO cl_salv_form_label,

           lr_h_textview     TYPE REF TO cl_salv_form_text,

           lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data.






    TRY.



        CALL METHOD cl_salv_table=>factory(

          IMPORTING

            r_salv_table = obj_output

          CHANGING

            t_table      = t_vbak ). "Internal table to dispaly ALV output



      CATCH cx_salv_error.







    ENDTRY.





*

*

*

    CREATE OBJECT sp_obj_header.



*    •    create a header grid with required column and rows



      obj_header = sp_obj_header->create_grid(    row = 3



                                               column = 1



                                              colspan = 6 ).



     obj_header->create_label( row     = 1



                               column  = 65



                               text    = 'Label first line').





   obj_header->CREATE_TEXT(   row     = 2



                              column  = 65



                              text    = 'text1  second line' ).



   obj_header->CREATE_TEXT(   row     = 3



                              column  = 65



                              text    = 'text3 third  line' ).



    obj_output->set_top_of_list( obj_header ).

*    •    display table

      obj_output->display( ).



  ENDMETHOD.                    "display_data



  METHOD set_pf_status.



    DATA: lo_functions TYPE REF TO cl_salv_functions_list.



    lo_functions = co_alv->get_functions( ).

    lo_functions->set_default( abap_true ).



  ENDMETHOD.                    "set_pf_status

  METHOD set_top_of_page.



    DATA: lr_header           TYPE REF TO cl_salv_form_layout_grid,



               lr_h_label           TYPE REF TO cl_salv_form_label,



               lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data,



               lr_h_grid              TYPE REF TO cl_salv_form_layout_grid,



               lr_h_layout_grid  TYPE REF TO cl_salv_form_layout_data_grid.







    CREATE OBJECT lr_header

      EXPORTING

        columns = 14.



    lr_h_grid = lr_header->create_grid( row = 1



                                        column = 1 ).



    lr_h_label = lr_h_grid->create_label( row = 1 column = 1 text = 'Dummy Header Text' ).



    lr_h_layout_data = lr_h_label->get_layout_data( ).



    lr_h_layout_grid ?= lr_h_layout_data.



    lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).















  ENDMETHOD.                    "set_top_of_page



ENDCLASS.                    "class1 IMPLEMENTATION

Check this.

Read only

0 Likes
10,672

Thanks a lot

I created a program with the code provided by you

I have uploaded two screen shots . One before and other after print preview.

Header part is coming correctly in its respective column only in print preview .

After Click on print preview (Note this time I have added toolbar )

 

Thanks

Sandeep

Read only

0 Likes
10,672

If your issue is resolve then mark is as correct and  reward the points.If you need any more help please let me know.

Thanks,

Aarti.

Read only

0 Likes
10,672

I know the rules . My issue is still not solved . I already added the screen shot in my previous post.

Labels are not displayed correctly . But if you checked the output in print preview it is displayed correctly.Although i already marked yours answer as helpful.

Thanks for you efforts.

Read only

0 Likes
10,672

Could you please send me your code.

Read only

0 Likes
10,672

It is same the one you had send

*&---------------------------------------------------------------------*

*& Report  YTEST

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT ytest.

*----------------------------------------------------------------------*

*       CLASS class1 DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS class1 DEFINITION.

   PUBLIC SECTION.

     TYPES: BEGIN OF ty_vbak,

            vbeln TYPE vbak-vbeln,

            erdat TYPE erdat,

            auart TYPE auart,

            kunnr TYPE kunnr,

            END   OF ty_vbak.

     DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.

     DATA: o_alv TYPE REF TO cl_salv_table.

     METHODS:

       get_data,

       display_data.

   PRIVATE SECTION.

     METHODS:

       set_pf_status

         CHANGING

           co_alv TYPE REF TO cl_salv_table.

     METHODS: set_top_of_page.

ENDCLASS.                    "class1 DEFINITION

START-OF-SELECTION.

   DATA: class1 TYPE REF TO class1.

   CREATE OBJECT class1.

   class1->get_data( ).

   class1->display_data( ).

*----------------------------------------------------------------------*

*       CLASS class1 IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS class1 IMPLEMENTATION.

   METHOD get_data.

     SELECT vbeln erdat auart kunnr

            INTO  TABLE t_vbak

            FROM  vbak

            UP TO 20 ROWS.

   ENDMETHOD.                    "get_data

   METHOD display_data.

     DATA : obj_header        TYPE REF TO cl_salv_form_layout_grid,

            obj_output       TYPE REF TO cl_salv_table,

            sp_obj_header     TYPE REF TO cl_salv_form_layout_grid,

            lr_h_label        TYPE REF TO cl_salv_form_label,

            lr_h_textview     TYPE REF TO cl_salv_form_text,

            lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data.

     TRY.

         CALL METHOD cl_salv_table=>factory(

           IMPORTING

             r_salv_table = obj_output

           CHANGING

             t_table      = t_vbak ). "Internal table to dispaly ALV output

       CATCH cx_salv_error.

     ENDTRY.

     CREATE OBJECT sp_obj_header.

*    #    create a header grid with required column and rows

     obj_header = sp_obj_header->create_grid(    row = 3

                                              column = 1

                                             colspan = 6 ).

     obj_header->create_label( row     = 1

                               column  = 65

                               text    = 'Label first line').

     obj_header->create_text(   row     = 2

                               column  = 65

                                text    = 'text1  second line' ).

     obj_header->create_text(   row     = 3

                                 column  = 65

                                 text    = 'text3 third  line' ).

     obj_output->set_top_of_list( obj_header ).

     me->set_pf_status( CHANGING co_alv = obj_output ).

*    #    display table

     obj_output->display( ).

   ENDMETHOD.                    "display_data

   METHOD set_pf_status.

     DATA: lo_functions TYPE REF TO cl_salv_functions_list.

     lo_functions = co_alv->get_functions( ).

*    lo_functions->set_default( abap_true ).

     lo_functions->set_all( abap_true ).

   ENDMETHOD.                    "set_pf_status

   METHOD set_top_of_page.

     DATA: lr_header           TYPE REF TO cl_salv_form_layout_grid,

                lr_h_label           TYPE REF TO cl_salv_form_label,

                lr_h_layout_data  TYPE REF TO cl_salv_form_layout_data,

                lr_h_grid              TYPE REF TO cl_salv_form_layout_grid,

                lr_h_layout_grid  TYPE REF TO cl_salv_form_layout_data_grid.

     CREATE OBJECT lr_header

       EXPORTING

         columns = 14.

     lr_h_grid = lr_header->create_grid( row = 1

                                         column = 1 ).

     lr_h_label = lr_h_grid->create_label( row = 1 column = 1 text = 'Dummy Header Text' ).

     lr_h_layout_data = lr_h_label->get_layout_data( ).

     lr_h_layout_grid ?= lr_h_layout_data.

     lr_h_layout_grid->set_h_align( if_salv_form_c_h_align=>center ).

   ENDMETHOD.                    "set_top_of_page

ENDCLASS.                    "class1 IMPLEMENTATION

Read only

0 Likes
10,672

What is the problem now ? I am not getting.

Read only

0 Likes
10,672

Kindly see the screen shot