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

How to create table field inside the dynamically created table?

Former Member
0 Likes
1,106

Hi, All!

I have created dynamic internal table (using field catalog and CALL METHOD cl_alv_table_create=>create_dynamic_table )

and put this table into FM REUSE_ALV_GRID_DISPLAY. ALV grid work. Now I need to color rows of my ALV, therefore I have to insert new column with name "COLORS" and type lvc_t_scol. I see three ways to do it , but all ones are unsuccessful:

1. Insert column into field catalog. FM REUSE_ALV_FIELDCATALOG_MERGE does not return info about "COLORS" I guess because COLORS is a table.

2. Insert column into field catalog manually. It provides a short dump during dynamic table creating or during call of REUSE_ALV_GRID_DISPLAY.

3. Create dyn table first, then add new field . I could not find a way how to do it :(((((((

Can somebody help me?

Tatiana

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
915

Hi,

Are you doing some thing like the following and still it is not working?

  • Add cell color table.

  • CALENDAR_TYPE is a structure in the dictionary with a

  • field called COLTAB of type LVC_T_SCOL. You can use

  • any structure and field that has the type LVC_T_SCOL.

wa_fieldcat-fieldname = 'T_CELLCOLORS'.

wa_fieldcat-ref_field = 'COLTAB'.

wa_fieldcat-ref_table = 'CALENDAR_TYPE'.

APPEND wa_fieldcat TO t_fieldcat1.

And then call to cl_alv_table_create=>create_dynamic_table ..

rest of the code..

And do not forget to mention it in your Layout structure's

COLTAB_FNAME field..

Infact Check the following link, very useful..

Hope this helps..

Sri

Message was edited by: Srikanth Pinnamaneni

Hi, All!

I have created dynamic internal table (using field catalog and CALL METHOD cl_alv_table_create=>create_dynamic_table )

and put this table into FM REUSE_ALV_GRID_DISPLAY. ALV grid work. Now I need to color rows of my ALV, therefore I have to insert new column with name "COLORS" and type lvc_t_scol. I see three ways to do it , but all ones are unsuccessful:

1. Insert column into field catalog. FM REUSE_ALV_FIELDCATALOG_MERGE does not return info about "COLORS" I guess because COLORS is a table.

2. Insert column into field catalog manually. It provides a short dump during dynamic table creating or during call of REUSE_ALV_GRID_DISPLAY.

3. Create dyn table first, then add new field . I could not find a way how to do it :(((((((

Can somebody help me?

Tatiana

3 REPLIES 3
Read only

Former Member
0 Likes
916

Hi,

Are you doing some thing like the following and still it is not working?

  • Add cell color table.

  • CALENDAR_TYPE is a structure in the dictionary with a

  • field called COLTAB of type LVC_T_SCOL. You can use

  • any structure and field that has the type LVC_T_SCOL.

wa_fieldcat-fieldname = 'T_CELLCOLORS'.

wa_fieldcat-ref_field = 'COLTAB'.

wa_fieldcat-ref_table = 'CALENDAR_TYPE'.

APPEND wa_fieldcat TO t_fieldcat1.

And then call to cl_alv_table_create=>create_dynamic_table ..

rest of the code..

And do not forget to mention it in your Layout structure's

COLTAB_FNAME field..

Infact Check the following link, very useful..

Hope this helps..

Sri

Message was edited by: Srikanth Pinnamaneni

Read only

0 Likes
915

Hi, Srikanth

IT WORKS NOW! Hurra ! Thank you !

Tatiana

Read only

Former Member
0 Likes
915

Hi,

Here is the solution for this problem, Sample code:

&----


*& Report ZCHA_ALV_GRID_CELL_COLOR *

*& *

&----


*& *

*& *

&----


REPORT ZCHA_ALV_GRID_CELL_COLOR .

TABLES:MARA.

DATA: W_CONTAINER TYPE SCRFNAME VALUE 'ALV_CONTAINER',

W_GRID TYPE REF TO CL_GUI_ALV_GRID,

W_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

  • W_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.

*layout

DATA: WA_LAYOUT TYPE LVC_S_LAYO.

*field catalog

DATA: IT_FIELDCAT_WRT_OFF TYPE LVC_T_FCAT,

WA_FIELDCAT_WRT_OFF TYPE LVC_S_FCAT.

DATA:BEGIN OF IT_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MAKT-MAKTX,

CELLCOLORS TYPE LVC_T_SCOL,

END OF IT_MARA.

SELECT P~MATNR

Q~MAKTX

INTO CORRESPONDING FIELDS OF TABLE IT_MARA

FROM MARA AS P INNER JOIN

MAKT AS Q ON

PMATNR = QMATNR.

CALL SCREEN 100.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'STATUS'.

  • SET TITLEBAR 'xxx'.

IF NOT W_CONTAINER IS INITIAL.

CREATE OBJECT W_CUSTOM_CONTAINER

EXPORTING CONTAINER_NAME = W_CONTAINER.

CREATE OBJECT W_GRID

EXPORTING I_PARENT = W_CUSTOM_CONTAINER.

ENDIF.

CLEAR IT_FIELDCAT_WRT_OFF.

REFRESH IT_FIELDCAT_WRT_OFF.

WA_FIELDCAT_WRT_OFF-FIELDNAME = 'MATNR'.

WA_FIELDCAT_WRT_OFF-COL_POS = '1'.

WA_FIELDCAT_WRT_OFF-OUTPUTLEN = '35'.

WA_FIELDCAT_WRT_OFF-SCRTEXT_L = 'Material No'.

APPEND WA_FIELDCAT_WRT_OFF TO IT_FIELDCAT_WRT_OFF.

CLEAR WA_FIELDCAT_WRT_OFF.

WA_FIELDCAT_WRT_OFF-FIELDNAME = 'MAKTX'.

WA_FIELDCAT_WRT_OFF-COL_POS = '2'.

WA_FIELDCAT_WRT_OFF-OUTPUTLEN = '45'.

WA_FIELDCAT_WRT_OFF-SCRTEXT_L = 'Material Desc'.

APPEND WA_FIELDCAT_WRT_OFF TO IT_FIELDCAT_WRT_OFF.

CLEAR WA_FIELDCAT_WRT_OFF.

DATA LS_CELLCOLOR TYPE LVC_S_SCOL.

READ TABLE IT_MARA INDEX 5 .

LS_CELLCOLOR-FNAME = 'MATNR'.

LS_CELLCOLOR-COLOR-COL = '3'.

LS_CELLCOLOR-COLOR-INT = '1'.

APPEND LS_CELLCOLOR TO IT_MARA-CELLCOLORS.

MODIFY IT_MARA INDEX 5.

WA_LAYOUT-CTAB_FNAME = 'CELLCOLORS'.

CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

IS_LAYOUT = WA_LAYOUT

CHANGING

IT_FIELDCATALOG = IT_FIELDCAT_WRT_OFF

IT_OUTTAB = IT_MARA[].

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

Try to assign appropriate points.

Regards,

Suman