2007 May 15 11:10 AM
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
2007 May 15 11:14 AM
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
2007 May 15 11:14 AM
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
2007 May 15 11:16 AM
HI oscar,
In the code that you have given .. you have only one table... (internal table) ....
Regards,
Jayant
2007 May 15 11:17 AM
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.
2007 May 15 11:20 AM
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[]
2007 May 15 11:23 AM
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