Create CL_GUI_ALV_GRID ALV Grid Column Header using ABAP Data Element
I create an SAP screen with ABAP cl_gui_alv_grid ALV Grid control which has columns with missing headers.
Since I did not use and configure the layout property, it will be best and easiest method to display the column heading from the database column definition of the underlying table object.
So I had to configure the ABAP Data Element of each column of the data source table of the cl_gui_alv_grid ALV Grid control.
Let's assume that you have created an ABAP table using the ABAP Development WorkBench (SE80 SAP transaction code).
Under the "Dictionary Objects > Database Tables", let's create a table with column specifications as shown in below screenshot.
And I create ALV Grid using CL_GUI_ALV_GRID class.
The method set_table_for_first_display of the ALV Grid object has the i_structure_name structure as the table created above.
And the it_outtab parameter is populated with an internal table which contains data from the same ABAP table we have created at the first step.
If you look for an example on how to use cl_gui_alv_grid please refer to SAP ABAP Tutorial - ALV Grid Example with cl_gui_alv_grid and Screen Painter.
I guess that you have realized the column names are not actually as we wish to be.
One column has Number, other has none, other two has "Text (200 chars.)" as the ALV Grid table column headings.
Now we will see how can we set ALV Grid column headers from ABAP Data Element 's Field Label properties.
But let me start by showing how to create domain table column data type before creating ABAP data element.
How to Create Domain in ABAP Data Dictionary
Creating ABAP Domain can be completed within a few steps that I want to show with screenshots here.
First of all, open the ABAP Workbench using the SE80 SAP transaction code.
On ABAP Workbench Object Navigator screen, right click on Dictionary Objects and display the context menu.
From the context menu, select "Create > Domain" menu selection in order to define Domain object for use in data type definition.
Enter the domain name in the input text area and click OK button or press Enter.
In the below screen, there are three important information we should define for creating domain data dictionary object.
Short description for domain name.
And Number of Characters for instance for string data types.
After we create domain object, we can now create ABAP data element data dictionary object using this data domain.
How to Create Data Element in ABAP Data Dictionary
ABAP developers can create data element within the ABAP Workbench Object Navigator just like the creation of any other dictinary object.
Right click on the Dictionary Objects to display the context menu. Choose "Create > Data Element" menu items on the context menu in order to create data element for use in your ABAP programs.
As you can see on the below screenshot, the "Create Data Element" SAP screen is displayed.
On the screen there is only one input field which is used for the name of the ABAP data element.
Enter the name of the ABAP Dictionary Object Data Element and press Enter button or click on the green OK button.
Now the configuration screen for the Data Element is displayed. The Data Element name is displayed at the top of the ABAP screen.
ABAP developers have to supply a short description for the data element.
On the Data Type tab, be sure that the Elementary type option is selected. And check the Domain option besides enter the name of the domain we have created in the previous steps.
Press Enter and move to the Field label tab.
On the field label tab, there are 4 free text input boxes that we can define 4 different versions of the descriptive name of Data Element.
Short, Medium, Long and Heading field labels will enable ABAP users set the text of the labels, columns headings, etc by default using these field label entries according to the available length.
When you are finished with the Data Element declaration save the record. The following Create Object Dictionary Entry screen will be displayed in front ot ABAP developers.
I choose to save the dictinary objects I have created as Local Object now.
Now when I go back and open the database table ZNodes which I created in the first step, I will see the following change related with the NodeParameter column.
At first the NodeParameter column data type was declared as CHAR200 which is text field with length 200.
At the point we have come now, the NodeParameter has the ZNodeParameter data element type with a short description ZNODEPARAMETER.
Before the database table structure of the sample ABAP report is changed, you could see that the last column in the ALV Grid object had heading as "Text (200 chars.)".
And after the database table structure has been changed by just using a data element with field labels as the column data type, we have corrected the column header text.
Note that we have not used any layout structure assigned to the ALV Grid object.