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 (grid)

Former Member
0 Likes
844

Hello,

I am programing a simple ALV.It shows dats of two tables.

When I try show dats of one table, it works perfectly. I have problems with two tables.

The error is: "Exception condition "NO_FIELDCATALOG_AVAILABLE" raised."

Can someone help me ?

Thanks !!

The source code is:

&----


*& Report SAPBC401_CLSS_ALV *

&----


*& Programming an easy ALV Grid Control EXERCISE 1 *

&----


REPORT sapbc401_clss_alv.

DATA: r_container TYPE REF TO cl_gui_custom_container,

r_alv_grid TYPE REF TO cl_gui_alv_grid.

TYPES: BEGIN OF ty_spfli,

spfli like spfli,

scarr like scarr,

end of ty_spfli.

DATA: it_spfli TYPE ty_spfli OCCURS 0.

START-OF-SELECTION.

*########################

SELECT * INTO TABLE it_spfli

FROM spfli JOIN scarr ON spflicarrid = scarrcarrid.

      • calling the dynpro on which ALV-Grid will be shown *****

CALL SCREEN '0100'.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'DYNPROSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module ALV_GRID OUTPUT

&----


  • text

----


module ALV_GRID output.

      • Create object of class CL_GUI_CUSTOM_CAONTAINER to manage data !

if not r_container is bound.

CREATE OBJECT r_container

EXPORTING

container_name = 'CONTAINER_1'

EXCEPTIONS

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • create object of class cl_gui_alv_grid to visualize data !

if not r_alv_grid is bound.

CREATE OBJECT r_alv_grid

EXPORTING

i_parent = r_container

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • Call method to visualize data of internal table ************

CALL METHOD r_alv_grid->set_table_for_first_display

EXPORTING

i_structure_name = 'TY_SPFLI'

CHANGING

it_outtab = it_spfli

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endmodule. " ALV_GRID OUTPUT

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
770

Hi,

&----


*& Report SAPBC401_CLSS_ALV *

&----


*& Programming an easy ALV Grid Control EXERCISE 1 *

&----


REPORT sapbc401_clss_alv.

DATA: r_container TYPE REF TO cl_gui_custom_container,

r_alv_grid TYPE REF TO cl_gui_alv_grid.

TYPES: BEGIN OF ty_spfli,

spfli like spfli,

scarr like scarr,

end of ty_spfli.

DATA: it_spfli TYPE ty_spfli OCCURS 0.

START-OF-SELECTION.

*########################

SELECT * INTO TABLE it_spfli

FROM spfli JOIN scarr ON spflicarrid = scarrcarrid.

      • calling the dynpro on which ALV-Grid will be shown *****

CALL SCREEN '0100'.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'DYNPROSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module ALV_GRID OUTPUT

&----


  • text

----


module ALV_GRID output.

      • Create object of class CL_GUI_CUSTOM_CAONTAINER to manage data !

if not r_container is bound.

CREATE OBJECT r_container

EXPORTING

container_name = 'CONTAINER_1'

EXCEPTIONS

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • create object of class cl_gui_alv_grid to visualize data !

if not r_alv_grid is bound.

CREATE OBJECT r_alv_grid

EXPORTING

i_parent = r_container

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

<b>TYPE-POOLS: slis.

data : wa_fieldcatalog TYPE slis_fieldcat_alv,

i_fieldcatalog TYPE slis_t_fieldcat_alv.

clear wa_fieldcat.

CLEAR wa_fieldcatalog.

wa_fieldcatalog-fieldname = 'SPFLI'.

wa_fieldcatalog-tabname = 'IT_SPFLI.

wa_fieldcatalog-outputlen = 20.

wa_fieldcatalog-seltext_l = 'SPFLI'.

APPEND wa_fieldcatalog TO i_fieldcatalog.

clear wa_fieldcat.

CLEAR wa_fieldcatalog.

wa_fieldcatalog-fieldname = 'SCARR'.

wa_fieldcatalog-tabname = 'IT_SPFLI.

wa_fieldcatalog-outputlen = 20.

wa_fieldcatalog-seltext_l = 'SCARR'.

APPEND wa_fieldcatalog TO i_fieldcatalog.</b>

      • Call method to visualize data of internal table ************

CALL METHOD r_alv_grid->set_table_for_first_display

EXPORTING

i_structure_name = 'TY_SPFLI'

<b> it_fieldcat = i_fieldcatalog</b>

CHANGING

it_outtab = it_spfli

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endmodule. " ALV_GRID OUTPUT

Best regards,

Prashant

Hello,

I am programing a simple ALV.It shows dats of two tables.

When I try show dats of one table, it works perfectly. I have problems with two tables.

The error is: "Exception condition "NO_FIELDCATALOG_AVAILABLE" raised."

Can someone help me ?

Thanks !!

The source code is:

&----


*& Report SAPBC401_CLSS_ALV *

&----


*& Programming an easy ALV Grid Control EXERCISE 1 *

&----


REPORT sapbc401_clss_alv.

DATA: r_container TYPE REF TO cl_gui_custom_container,

r_alv_grid TYPE REF TO cl_gui_alv_grid.

TYPES: BEGIN OF ty_spfli,

spfli like spfli,

scarr like scarr,

end of ty_spfli.

DATA: it_spfli TYPE ty_spfli OCCURS 0.

START-OF-SELECTION.

*########################

SELECT * INTO TABLE it_spfli

FROM spfli JOIN scarr ON spflicarrid = scarrcarrid.

      • calling the dynpro on which ALV-Grid will be shown *****

CALL SCREEN '0100'.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'DYNPROSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module ALV_GRID OUTPUT

&----


  • text

----


module ALV_GRID output.

      • Create object of class CL_GUI_CUSTOM_CAONTAINER to manage data !

if not r_container is bound.

CREATE OBJECT r_container

EXPORTING

container_name = 'CONTAINER_1'

EXCEPTIONS

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • create object of class cl_gui_alv_grid to visualize data !

if not r_alv_grid is bound.

CREATE OBJECT r_alv_grid

EXPORTING

i_parent = r_container

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • Call method to visualize data of internal table ************

CALL METHOD r_alv_grid->set_table_for_first_display

EXPORTING

i_structure_name = 'TY_SPFLI'

CHANGING

it_outtab = it_spfli

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endmodule. " ALV_GRID OUTPUT

5 REPLIES 5
Read only

Former Member
0 Likes
771

Hi,

&----


*& Report SAPBC401_CLSS_ALV *

&----


*& Programming an easy ALV Grid Control EXERCISE 1 *

&----


REPORT sapbc401_clss_alv.

DATA: r_container TYPE REF TO cl_gui_custom_container,

r_alv_grid TYPE REF TO cl_gui_alv_grid.

TYPES: BEGIN OF ty_spfli,

spfli like spfli,

scarr like scarr,

end of ty_spfli.

DATA: it_spfli TYPE ty_spfli OCCURS 0.

START-OF-SELECTION.

*########################

SELECT * INTO TABLE it_spfli

FROM spfli JOIN scarr ON spflicarrid = scarrcarrid.

      • calling the dynpro on which ALV-Grid will be shown *****

CALL SCREEN '0100'.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'DYNPROSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module ALV_GRID OUTPUT

&----


  • text

----


module ALV_GRID output.

      • Create object of class CL_GUI_CUSTOM_CAONTAINER to manage data !

if not r_container is bound.

CREATE OBJECT r_container

EXPORTING

container_name = 'CONTAINER_1'

EXCEPTIONS

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

      • create object of class cl_gui_alv_grid to visualize data !

if not r_alv_grid is bound.

CREATE OBJECT r_alv_grid

EXPORTING

i_parent = r_container

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endif.

<b>TYPE-POOLS: slis.

data : wa_fieldcatalog TYPE slis_fieldcat_alv,

i_fieldcatalog TYPE slis_t_fieldcat_alv.

clear wa_fieldcat.

CLEAR wa_fieldcatalog.

wa_fieldcatalog-fieldname = 'SPFLI'.

wa_fieldcatalog-tabname = 'IT_SPFLI.

wa_fieldcatalog-outputlen = 20.

wa_fieldcatalog-seltext_l = 'SPFLI'.

APPEND wa_fieldcatalog TO i_fieldcatalog.

clear wa_fieldcat.

CLEAR wa_fieldcatalog.

wa_fieldcatalog-fieldname = 'SCARR'.

wa_fieldcatalog-tabname = 'IT_SPFLI.

wa_fieldcatalog-outputlen = 20.

wa_fieldcatalog-seltext_l = 'SCARR'.

APPEND wa_fieldcatalog TO i_fieldcatalog.</b>

      • Call method to visualize data of internal table ************

CALL METHOD r_alv_grid->set_table_for_first_display

EXPORTING

i_structure_name = 'TY_SPFLI'

<b> it_fieldcat = i_fieldcatalog</b>

CHANGING

it_outtab = it_spfli

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endmodule. " ALV_GRID OUTPUT

Best regards,

Prashant

Read only

Former Member
0 Likes
770

HI oscar,

In the code that you have given .. you have only one table... (internal table) ....

Regards,

Jayant

Read only

Former Member
0 Likes
770

Hi Óscar Alconchel,

The problem is with the structure passing to the method set_table_for_first_display. U can pass only standard structure. So if u create a structure of type ty_spfli it accepts but if U create the structure with u structures of spfli and scarr then it is not a standard structure. So in this case u need to create a field catalog instead of structure and pass it to the method set_table_for_first_display.

Read only

Former Member
0 Likes
770
using  types or internal tables fieldcatalog will not be built for set_table_for_first_display

try this..

data : it_fcat type lvc_t_fcat,
         wa_fcat type lvc_s_fcat.

 wa_fcat-fieldname = 'SPFLI'.
 wa_fcat-colpos = '1'.
 wA_fcat-outputlen = '10'.
append wa_fcat to it_fcat.


and pass it_fcat 

CALL METHOD r_alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'TY_SPFLI'             " remove this line
i_fieldcatalog = it_fcat[]
Read only

Former Member
0 Likes
770

please refer to this code .. if you is giving an error..

REPORT z8jayant_alv_oops_testing MESSAGE-ID z8jayant.

TABLES: mara.

TYPE-POOLS: slis.

DATA: i_mara TYPE STANDARD TABLE OF z8jay_mat_test.

DATA: ok_code LIKE sy-ucomm,

g_container TYPE scrfname VALUE 'G_CUSTOM_CONTROL',

g_grid TYPE REF TO cl_gui_alv_grid,

g_custom_container TYPE REF TO cl_gui_custom_container.

DATA: it_fieldcat TYPE lvc_t_fcat,

it_sortinfo TYPE lvc_t_sort,

gs_layout TYPE lvc_s_layo.

data: wa_bkpf type belnr.

  • Selection Screen Input Field.

SELECTION-SCREEN BEGIN OF BLOCK oops WITH FRAME TITLE text-101.

PARAMETERS: mat_no LIKE mara-matnr.

SELECTION-SCREEN END OF BLOCK oops.

  • Validation of the Selection Screen.

AT SELECTION-SCREEN.

SELECT matnr INTO TABLE i_mara FROM mara WHERE matnr = mat_no.

IF sy-subrc <> 0.

MESSAGE e001.

ENDIF.

REFRESH i_mara.

CLEAR i_mara.

START-OF-SELECTION.

SELECT matnr pstat INTO TABLE i_mara FROM mara WHERE

matnr = mat_no.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'Z8JAY_MAT_TEST'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = it_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL SCREEN 100.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

IF g_custom_container IS INITIAL.

CREATE OBJECT g_custom_container

EXPORTING container_name = g_container.

CREATE OBJECT g_grid

EXPORTING i_parent = g_custom_container.

CALL METHOD g_grid->set_table_for_first_display

  • EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

  • I_SAVE =

  • I_DEFAULT = 'X'

  • IS_LAYOUT =

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

it_outtab = i_mara

IT_FIELDCATALOG = it_fieldcat

  • IT_SORT =

  • IT_FILTER =

EXCEPTIONS

INVALID_PARAMETER_COMBINATION = 1

PROGRAM_ERROR = 2

TOO_MANY_LINES = 3

others = 4

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

Regards,

Jayant