Application Development 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: 

Standard OO ALV Print Preview - No data

IanStubbings
Active Participant
0 Kudos

Hi

I have an issue with the standard SAP printing of an ALV grid in that there is no data displayed. The headings display correctly but the data is not present. I am using a dynamic table so I am presuming this has some bearing on this issue. Has anyone experienced this before?

TIA

Ian

7 REPLIES 7

Former Member
0 Kudos

Hi,

It does not matter whether we use dunamic tables for ALV grid output. Could you be more specfic about your question.

Thomas.

0 Kudos

Hi Thomas

Thanks for your response.

Since my initial post I can now report that the HTML download produces the correct output but the print preview/export to Excel and send option do not produce the correct format.

THe fieldcatalog is generated via some static fields and some dynamic fields, resulting in a field symbol <gt_outtab> that is passed to the set_table_as_first_display method. I have made use of filtering and special groups but even when these are turned off the data does not display.

Any clues!!

Regards

Ian

0 Kudos

Hi,

Check this sample on dynamic alv..

REPORT zdynamic_alv.
DATA:
r_dyn_table TYPE REF TO data,
r_wa_dyn_table TYPE REF TO data,
r_dock_ctnr TYPE REF TO cl_gui_docking_container,
r_alv_grid TYPE REF TO cl_gui_alv_grid,

t_fieldcat1 TYPE lvc_t_fcat, "with cell color
t_fieldcat2 TYPE lvc_t_fcat, "without cell color

wa_fieldcat LIKE LINE OF t_fieldcat1,
wa_cellcolors TYPE LINE OF lvc_t_scol,
wa_is_layout TYPE lvc_s_layo.

FIELD-SYMBOLS:
<t_dyn_table> TYPE STANDARD TABLE,
<wa_dyn_table> TYPE ANY,
<t_cellcolors> TYPE lvc_t_scol,
<w_field> TYPE ANY.
START-OF-SELECTION.

* Build field catalog based on your criteria.

wa_fieldcat-fieldname = 'FIELD1'.
wa_fieldcat-inttype = 'C'.
wa_fieldcat-outputlen = '10'.
wa_fieldcat-coltext = 'My Field 1'.
wa_fieldcat-seltext = wa_fieldcat-coltext.

APPEND wa_fieldcat TO t_fieldcat1.

wa_fieldcat-fieldname = 'FIELD2'.
wa_fieldcat-inttype = 'C'.
wa_fieldcat-outputlen = '10'.
wa_fieldcat-coltext = 'My Field 2'.
wa_fieldcat-seltext = wa_fieldcat-coltext.

APPEND wa_fieldcat TO t_fieldcat1.

* Before adding cell color table, save fieldcatalog to pass
* to ALV call. The ALV call needs a fieldcatalog without
* the internal table for cell coloring.

t_fieldcat2[] = t_fieldcat1[].

* 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.

* Create dynamic table including the internal table
* for cell coloring.

CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fieldcat1
IMPORTING
ep_table = r_dyn_table
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

* Get access to new table using field symbol.

ASSIGN r_dyn_table->* TO <t_dyn_table>.

* Create work area for new table.

CREATE DATA r_wa_dyn_table LIKE LINE OF <t_dyn_table>.

* Get access to new work area using field symbol.

ASSIGN r_wa_dyn_table->* TO <wa_dyn_table>.

* Get data into table from somewhere. Field names are
* known at this point because field catalog is already
* built. Read field names from the field catalog or use
* COMPONENT <number> in a DO loop to access the fields. A
* simpler hard coded approach is used here.

ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'ABC'.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'XYZ'.

APPEND <wa_dyn_table> TO <t_dyn_table>.

ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'TUV'.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'DEF'.

APPEND <wa_dyn_table> TO <t_dyn_table>.

* Color cells based on your criteria. In this example, a test on
* FIELD2 is used to decide on color.

LOOP AT <t_dyn_table> INTO <wa_dyn_table>.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

* Get access to internal table used to color cells.

ASSIGN COMPONENT 'T_CELLCOLORS'
OF STRUCTURE <wa_dyn_table> TO <t_cellcolors>.

CLEAR wa_cellcolors.

wa_cellcolors-fname = 'FIELD2'.

IF <w_field> = 'DEF'.
wa_cellcolors-color-col = '7'.
ELSE.
wa_cellcolors-color-col = '5'.
ENDIF.

APPEND wa_cellcolors TO <t_cellcolors>.

MODIFY <t_dyn_table> FROM <wa_dyn_table>.

ENDLOOP.


* Display screen. Define screen 100 as empty, with next screen
* set to 0 and flow logic of:
*
* PROCESS BEFORE OUTPUT.
* MODULE initialization.
*
* PROCESS AFTER INPUT.

CALL SCREEN 100.

*---------------------------------------------------------------------*
* MODULE initialization OUTPUT
*---------------------------------------------------------------------*

MODULE initialization OUTPUT.

* Set up for ALV display.

IF r_dock_ctnr IS INITIAL.

CREATE OBJECT r_dock_ctnr
EXPORTING
side = cl_gui_docking_container=>dock_at_left
ratio = '90'.

CREATE OBJECT r_alv_grid
EXPORTING i_parent = r_dock_ctnr.

* Set ALV controls for cell coloring table.

wa_is_layout-ctab_fname = 'T_CELLCOLORS'.

* Display.

CALL METHOD r_alv_grid->set_table_for_first_display
EXPORTING
is_layout = wa_is_layout
CHANGING
it_outtab = <t_dyn_table>
it_fieldcatalog = t_fieldcat2.

ELSE. "grid already prepared

* Refresh display.

CALL METHOD r_alv_grid->refresh_table_display
EXPORTING
i_soft_refresh = ' '
EXCEPTIONS
finished = 1
OTHERS = 2.

ENDIF.

ENDMODULE. " initialization OUTPUT

Regards

Vijay

0 Kudos

Hi Vijay

My dynamic ALV works exactly as I want to display the data on the screen and I use some of the methods from the sample program that you posted. It is only when I print/preview etc. that I encounter problems. I can only assume that the table being passed to the print function is being emptied for some reason.

Ian

0 Kudos

Hi again Vijay

I implemented the code you pasted in and yes, it works fine, thank you.

I have found that the inclusion of the col_pos field of the field catalog is causing the issue. Originally I merge a structure and then append to the field catalog, incrementing the col_pos accordingly. It appears that when I do not specify the col_pos for the subsequent fields, the data is displayed, but when I do specify the col_pos the print preview is incorrect. Even if I remove all col_pos values leaving SAP to sort the order implicitly, it does not show properly in the print preview. The data always shows in the grid, the issue is always with the print preview.

Any clues?

Thanks in advance

Ian

0 Kudos

Hi,

are you using list output option while doing the preview.

i am able to see it properly in my program.

Regards

vijay

IanStubbings
Active Participant
0 Kudos

Finally solved this and of course it was very simple and my error! Basciaclly I was populating the tabname column as well as the ref_tabname and ref_fieldname columns.

After removing this everything was fine.

Thanks to all for your help.