2008 Jun 17 7:30 PM
Hello,
We have a report that uses SET_TABLE_FOR_FIRST_DISPLAY which works well but I have been asked to add a hotspot to call another screen. I see that a fieldcatalog can be passed but I have not found a method that corresponds to REUSE_ALV_FIELDCATALOG_MERGE.
I am a novice at method programming and did think that using the FM was the correct thing to do. Is there was a method that would do the same thing? Does anyone have some sample code?
Thank you in advance.
Regards, Dean.
2008 Jun 17 7:38 PM
Hi Dean,
There is no harm in OOALV, But I would suggest you to go for the OOALV.
Now a days a new feature has provided by SAP regarding ALV which is SALV.
I have created a sample program corresponding to almost all funcitonality.
just copy and paste this program you will see the difference how easy is OOALV (SALV).
*&---------------------------------------------------------------------*
*& Report ZCC_OOALV_CL_SALV_FUNCTIONS *
*& *
*&---------------------------------------------------------------------*
*& Developer Name: Chidanand Chauhan *
*& Date: 15/05/2008 *
*& Description: SALV for the Program for the functionality. *
*& *
*& *
*&---------------------------------------------------------------------*
report zcc_ooalv_cl_salv_functions.
data: ispfli type table of spfli.
field-symbols: <fs> type spfli.
data: gr_table type ref to cl_salv_table.
data: gr_functions type ref to cl_salv_functions.
data: gr_display type ref to cl_salv_display_settings.
data: gr_columns type ref to cl_salv_columns_table.
data: gr_column type ref to cl_salv_column_table.
data: color type lvc_s_colo.
data: gr_sorts type ref to cl_salv_sorts.
data: gr_agg type ref to cl_salv_aggregations.
data: gr_filter type ref to cl_salv_filters.
data: gr_layout type ref to cl_salv_layout.
data: key type salv_s_layout_key.
data: gr_selections type ref to cl_salv_selections.
data: xspfli type spfli.
data: gr_events type ref to cl_salv_events_table.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events definition.
public section.
methods:
on_user_command for event added_function of cl_salv_events
importing e_salv_function,
on_double_click for event double_click of cl_salv_events_table
importing row column,
on_link_click for event link_click of cl_salv_events_table
importing row column.
endclass. "lcl_handle_events DEFINITION
data: event_handler type ref to lcl_handle_events.
data: lt_celltype type salv_t_int4_column,
ls_celltype type salv_s_int4_column.
*&>>>>-----------------------------------------------------------------*
* START OF SELECTION
*&>>>>-----------------------------------------------------------------*
start-of-selection.
select * into table ispfli from spfli.
cl_salv_table=>factory( importing r_salv_table = gr_table
changing t_table = ispfli ).
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
*&>>>>-----------------------------------------------------------------*
* Next, add functions to the application toolbar. For this, use the
* CL_SALV_FUNCTIONS class. Create the object reference variable and
* receive the object using the GET_FUNCTIONS method of the GR_TABLE
* object. Call the method SET_ALL to force the ALV grid to show all
* standard functions.
*&---------------------------------------------------------------------*
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
gr_display->set_list_header( 'Test Program for ZSALV By Chidanand' ).
*&<<<<-----------------------------------------------------------------*
*&----------------------------------------------------------------------
* change the Heading Text of a column as well as the color of a column.
*&----------------------------------------------------------------------
gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'CITYTO' ).
gr_column->set_long_text( 'This is long text' ).
gr_column->set_medium_text( 'This is med text' ).
gr_column->set_short_text( 'This is sh' ).
gr_column ?= gr_columns->get_column( 'CITYFROM' ).
color-col = '6'.
color-int = '1'.
color-inv = '0'.
gr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
gr_column->set_color( color ).
* data: val type SALV_DE_CONSTANT.
* val = 1.
* gr_column->SET_DROPDOWN_ENTRY( val ).
*&----------------------------------------------------------------------
*sorting to the ALV grid.
*&----------------------------------------------------------------------
gr_sorts = gr_table->get_sorts( ).
**&----------------------------------------------------------------------
** sorted by CITYTO, we can add an aggregation to subtotal the DISTANCE
** by CITYTO. Create the object reference variable and receive the object
** using the GET_AGGREGATIONS method of the GR_TABLE object. Next, add
** the aggregation by calling the ADD_AGGREGATION method of the GR_SORTS
** object. We also need to modify the call to ADD_SORT to set
** the SUBTOTAL = ABAP_TRUE.
**&----------------------------------------------------------------------
gr_sorts->add_sort( columnname = 'CITYTO' subtotal = abap_true ).
gr_agg = gr_table->get_aggregations( ).
gr_agg->add_aggregation( 'DISTANCE' ).
*&>>>>-----------------------------------------------------------------*
* Using the CL_SALV_FILTERS class setup some filters for the data
* in our ALV GRID. Create the object reference variable and receive the
* object using the GET_FILTERS method of the GR_TABLE object,and then
* simply called the method ADD_FILTER with the parameters.
*&>>>>-----------------------------------------------------------------*
gr_filter = gr_table->get_filters( ).
gr_filter->add_filter( columnname = 'CARRID' low = 'LH' ).
*&>>>>-----------------------------------------------------------------*
* If you want to allow the user to manage layouts of the ALV grid, you
* must use the class CL_SALV_LAYOUT.Create the object reference variable
* and receive the object using the GET_LAYOUT method of the GR_TABLE
* object. Then simply call the method SET_KEY with the parameters and
* set the save restriction using the SET_SAVE_RESTRICTION method.
*&>>>>-----------------------------------------------------------------*
gr_layout = gr_table->get_layout( ).
key-report = sy-repid.
gr_layout->set_key( key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
*&>>>>-----------------------------------------------------------------*
*----------------------------SET GUI STATUS ---------------------------
* Go to function group SALV_METADATA_STATUS and copy the gui status
* ZSALV_TABLE_STANDARD into the ZCC_OOALV_CL_SALV_FUNCTIONS program.This
* is the standard gui status for the 2 Dimensional Table ALV grid. Once
* you have copied the status, set the screen status using the appropriate
* method of the object GR_TABLE. Go to the gui status and add a new
* button on the application toolbar and name it as u201CMYFUNCTIONu201D.
*&>>>>-----------------------------------------------------------------*
gr_table->set_screen_status(
pfstatus = 'ZSALV_TABLE_STANDARD'
report = sy-repid
set_functions = gr_table->c_functions_all ).
*&>>>>-----------------------------------------------------------------*
* -----------------Get Event Handler.----------------------------------*
* Define the event handler method for DOUBLE_CLICK event and add the
* implementation for the ON_DOUBLE_CLICK event handler method. Remember
* to set the handler for the event.
*&>>>>-----------------------------------------------------------------*
gr_events = gr_table->get_event( ).
create object event_handler.
set handler event_handler->on_user_command for gr_events.
set handler event_handler->on_double_click for gr_events.
set handler event_handler->on_link_click for gr_events.
* Set up selections.
gr_selections = gr_table->get_selections( ).
gr_selections->set_selection_mode( 1 ). "Single
gr_table->display( ).
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events implementation.
method on_user_command.
* Get the selection rows
data: lr_selections type ref to cl_salv_selections.
data: lt_rows type salv_t_row.
data: ls_rows type i.
data: message type string.
case e_salv_function.
when '&FUNCTION'.
lr_selections = gr_table->get_selections( ).
lt_rows = lr_selections->get_selected_rows( ).
read table lt_rows into ls_rows index 1.
read table ispfli into xspfli index ls_rows.
concatenate xspfli-carrid xspfli-connid
xspfli-cityfrom xspfli-cityto
into message separated by space.
message i001(00) with 'You Clicked the button!' message.
endcase.
endmethod. "on_user_command
method on_double_click.
data: message type string.
data: row_c(4) type c.
row_c = row.
concatenate 'Row' row_c 'Column' column
into message separated by space.
message i001(00) with 'You double-clicked on ' message.
endmethod. "on_double_click
method on_link_click.
data: message type string.
data: row_c(4) type c.
row_c = row.
concatenate 'Row' row_c 'Column' column
into message separated by space.
message i001(00) with 'You link-clicked on ' message.
endmethod. "lcl_handle_events IMPLEMENTATION
endclass. "lcl_handle_events IMPLEMENTATION
2008 Jun 17 7:35 PM
Hi,
n Fieldcatalog We have a option to make a HOTSPOT
Example
fcat-fieldname = 'TRECEP'.
fcat-hotspot = 'X'. " For that Particular screen field assigned with Hotsot
Thanks
Vikranth
2008 Jun 17 7:36 PM
Hi,
Check this example..You have to change the field catalog internal table with the hopspot..
TYPE-POOLS: slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF wa_ekko,
ebeln like ekko-ebeln,
ekorg like ekko-ekorg,
ekgrp like ekko-ekgrp,
END OF wa_ekko.
DATA: v_repid TYPE syrepid.
v_repid = sy-repid.
DATA it_ekko LIKE STANDARD TABLE OF wa_ekko WITH HEADER LINE.
SELECT * UP TO 100 ROWS
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'WA_EKKO'
i_inclname = v_repid
CHANGING
ct_fieldcat = gt_fieldcat.
* have hotspot for a PO.
DATA: s_fieldcat LIKE LINE OF gt_fieldcat.
s_fieldcat-hotspot = 'X'.
MODIFY gt_fieldcat FROM s_fieldcat TRANSPORTING hotspot
WHERE fieldname = 'EBELN'.
* Pass the program.
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = gt_fieldcat
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = it_ekko.
---------------------------------------------------------------------
* FORM display_detail *
---------------------------------------------------------------------
* ........ *
---------------------------------------------------------------------
* --> UCOMM *
* --> SELFIELD *
---------------------------------------------------------------------
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
IF ucomm = '&IC1'.
READ TABLE it_ekko INDEX selfield-tabindex.
IF sy-subrc = 0.
SET PARAMETER ID 'BES' FIELD it_ekko-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM.
Thanks
Vikranth
2008 Jun 17 7:38 PM
Hi Dean,
There is no harm in OOALV, But I would suggest you to go for the OOALV.
Now a days a new feature has provided by SAP regarding ALV which is SALV.
I have created a sample program corresponding to almost all funcitonality.
just copy and paste this program you will see the difference how easy is OOALV (SALV).
*&---------------------------------------------------------------------*
*& Report ZCC_OOALV_CL_SALV_FUNCTIONS *
*& *
*&---------------------------------------------------------------------*
*& Developer Name: Chidanand Chauhan *
*& Date: 15/05/2008 *
*& Description: SALV for the Program for the functionality. *
*& *
*& *
*&---------------------------------------------------------------------*
report zcc_ooalv_cl_salv_functions.
data: ispfli type table of spfli.
field-symbols: <fs> type spfli.
data: gr_table type ref to cl_salv_table.
data: gr_functions type ref to cl_salv_functions.
data: gr_display type ref to cl_salv_display_settings.
data: gr_columns type ref to cl_salv_columns_table.
data: gr_column type ref to cl_salv_column_table.
data: color type lvc_s_colo.
data: gr_sorts type ref to cl_salv_sorts.
data: gr_agg type ref to cl_salv_aggregations.
data: gr_filter type ref to cl_salv_filters.
data: gr_layout type ref to cl_salv_layout.
data: key type salv_s_layout_key.
data: gr_selections type ref to cl_salv_selections.
data: xspfli type spfli.
data: gr_events type ref to cl_salv_events_table.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events definition.
public section.
methods:
on_user_command for event added_function of cl_salv_events
importing e_salv_function,
on_double_click for event double_click of cl_salv_events_table
importing row column,
on_link_click for event link_click of cl_salv_events_table
importing row column.
endclass. "lcl_handle_events DEFINITION
data: event_handler type ref to lcl_handle_events.
data: lt_celltype type salv_t_int4_column,
ls_celltype type salv_s_int4_column.
*&>>>>-----------------------------------------------------------------*
* START OF SELECTION
*&>>>>-----------------------------------------------------------------*
start-of-selection.
select * into table ispfli from spfli.
cl_salv_table=>factory( importing r_salv_table = gr_table
changing t_table = ispfli ).
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
*&>>>>-----------------------------------------------------------------*
* Next, add functions to the application toolbar. For this, use the
* CL_SALV_FUNCTIONS class. Create the object reference variable and
* receive the object using the GET_FUNCTIONS method of the GR_TABLE
* object. Call the method SET_ALL to force the ALV grid to show all
* standard functions.
*&---------------------------------------------------------------------*
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
gr_display->set_list_header( 'Test Program for ZSALV By Chidanand' ).
*&<<<<-----------------------------------------------------------------*
*&----------------------------------------------------------------------
* change the Heading Text of a column as well as the color of a column.
*&----------------------------------------------------------------------
gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'CITYTO' ).
gr_column->set_long_text( 'This is long text' ).
gr_column->set_medium_text( 'This is med text' ).
gr_column->set_short_text( 'This is sh' ).
gr_column ?= gr_columns->get_column( 'CITYFROM' ).
color-col = '6'.
color-int = '1'.
color-inv = '0'.
gr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
gr_column->set_color( color ).
* data: val type SALV_DE_CONSTANT.
* val = 1.
* gr_column->SET_DROPDOWN_ENTRY( val ).
*&----------------------------------------------------------------------
*sorting to the ALV grid.
*&----------------------------------------------------------------------
gr_sorts = gr_table->get_sorts( ).
**&----------------------------------------------------------------------
** sorted by CITYTO, we can add an aggregation to subtotal the DISTANCE
** by CITYTO. Create the object reference variable and receive the object
** using the GET_AGGREGATIONS method of the GR_TABLE object. Next, add
** the aggregation by calling the ADD_AGGREGATION method of the GR_SORTS
** object. We also need to modify the call to ADD_SORT to set
** the SUBTOTAL = ABAP_TRUE.
**&----------------------------------------------------------------------
gr_sorts->add_sort( columnname = 'CITYTO' subtotal = abap_true ).
gr_agg = gr_table->get_aggregations( ).
gr_agg->add_aggregation( 'DISTANCE' ).
*&>>>>-----------------------------------------------------------------*
* Using the CL_SALV_FILTERS class setup some filters for the data
* in our ALV GRID. Create the object reference variable and receive the
* object using the GET_FILTERS method of the GR_TABLE object,and then
* simply called the method ADD_FILTER with the parameters.
*&>>>>-----------------------------------------------------------------*
gr_filter = gr_table->get_filters( ).
gr_filter->add_filter( columnname = 'CARRID' low = 'LH' ).
*&>>>>-----------------------------------------------------------------*
* If you want to allow the user to manage layouts of the ALV grid, you
* must use the class CL_SALV_LAYOUT.Create the object reference variable
* and receive the object using the GET_LAYOUT method of the GR_TABLE
* object. Then simply call the method SET_KEY with the parameters and
* set the save restriction using the SET_SAVE_RESTRICTION method.
*&>>>>-----------------------------------------------------------------*
gr_layout = gr_table->get_layout( ).
key-report = sy-repid.
gr_layout->set_key( key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
*&>>>>-----------------------------------------------------------------*
*----------------------------SET GUI STATUS ---------------------------
* Go to function group SALV_METADATA_STATUS and copy the gui status
* ZSALV_TABLE_STANDARD into the ZCC_OOALV_CL_SALV_FUNCTIONS program.This
* is the standard gui status for the 2 Dimensional Table ALV grid. Once
* you have copied the status, set the screen status using the appropriate
* method of the object GR_TABLE. Go to the gui status and add a new
* button on the application toolbar and name it as u201CMYFUNCTIONu201D.
*&>>>>-----------------------------------------------------------------*
gr_table->set_screen_status(
pfstatus = 'ZSALV_TABLE_STANDARD'
report = sy-repid
set_functions = gr_table->c_functions_all ).
*&>>>>-----------------------------------------------------------------*
* -----------------Get Event Handler.----------------------------------*
* Define the event handler method for DOUBLE_CLICK event and add the
* implementation for the ON_DOUBLE_CLICK event handler method. Remember
* to set the handler for the event.
*&>>>>-----------------------------------------------------------------*
gr_events = gr_table->get_event( ).
create object event_handler.
set handler event_handler->on_user_command for gr_events.
set handler event_handler->on_double_click for gr_events.
set handler event_handler->on_link_click for gr_events.
* Set up selections.
gr_selections = gr_table->get_selections( ).
gr_selections->set_selection_mode( 1 ). "Single
gr_table->display( ).
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events implementation.
method on_user_command.
* Get the selection rows
data: lr_selections type ref to cl_salv_selections.
data: lt_rows type salv_t_row.
data: ls_rows type i.
data: message type string.
case e_salv_function.
when '&FUNCTION'.
lr_selections = gr_table->get_selections( ).
lt_rows = lr_selections->get_selected_rows( ).
read table lt_rows into ls_rows index 1.
read table ispfli into xspfli index ls_rows.
concatenate xspfli-carrid xspfli-connid
xspfli-cityfrom xspfli-cityto
into message separated by space.
message i001(00) with 'You Clicked the button!' message.
endcase.
endmethod. "on_user_command
method on_double_click.
data: message type string.
data: row_c(4) type c.
row_c = row.
concatenate 'Row' row_c 'Column' column
into message separated by space.
message i001(00) with 'You double-clicked on ' message.
endmethod. "on_double_click
method on_link_click.
data: message type string.
data: row_c(4) type c.
row_c = row.
concatenate 'Row' row_c 'Column' column
into message separated by space.
message i001(00) with 'You link-clicked on ' message.
endmethod. "lcl_handle_events IMPLEMENTATION
endclass. "lcl_handle_events IMPLEMENTATION
2008 Jun 17 8:27 PM
1) create a program with screen 100
2)copy - paste the code
3)declare a pf-status of "0100" with "EXIT"
REPORT ZTEST7 .
TYPE-POOLS slis.
TABLES: sflight.
*--------------------------------------------------------------------
* G L O B A L I N T E R N A L T A B L E S
*--------------------------------------------------------------------
DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
*--------------------------------------------------------------------
* G L O B A L D A T A
*--------------------------------------------------------------------
DATA: ok_code LIKE sy-ucomm,
g_wa_sflight LIKE sflight.
* Declare reference variables to the ALV grid and the container
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container.
*--------------------------------------------------------------------
* S T A R T - O F - S E L E C T I O N.
*--------------------------------------------------------------------
START-OF-SELECTION.
SET SCREEN '100'.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
* Create objects
IF go_custom_container IS INITIAL.
CREATE OBJECT go_custom_container
EXPORTING
container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
PERFORM load_data_into_grid.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Form load_data_into_grid
*&---------------------------------------------------------------------*
FORM load_data_into_grid.
DATA:l_i_fieldcat_alv TYPE slis_t_fieldcat_alv,
l_wa_fieldcat_alv TYPE slis_fieldcat_alv,
l_i_fcat TYPE lvc_t_fcat,
l_wa_fcat TYPE lvc_s_fcat.
* Read data from table SFLIGHT
SELECT *
FROM sflight
INTO TABLE gi_sflight UP TO 100 ROWS.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_PROGRAM_NAME =
* I_INTERNAL_TABNAME =
i_structure_name = 'SFLIGHT'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = l_i_fieldcat_alv
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc = 0.
LOOP AT l_i_fieldcat_alv INTO l_wa_fieldcat_alv.
MOVE-CORRESPONDING l_wa_fieldcat_alv TO l_wa_fcat.
IF l_wa_fcat-fieldname = 'CARRID'.
l_wa_fcat-hotspot = 'X'.
ENDIF.
APPEND l_wa_fcat TO l_i_fcat.
ENDLOOP.
* Load data into the grid and display them
* CALL METHOD go_grid->set_table_for_first_display
* EXPORTING i_structure_name = 'SFLIGHT'
* CHANGING it_outtab = gi_sflight.
CALL METHOD go_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 =
* ir_salv_adapter =
CHANGING
it_outtab = gi_sflight
it_fieldcatalog = l_i_fcat
* 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.
ENDFORM. " load_data_into_grid
2008 Jun 17 9:38 PM
Hi Dean,
you can convert the field catalog created with REUSE_ALV_FIELCATALOG_MERGE:
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
it_fieldcat_alv = lt_fcat " TYPE slis_t_fieldcat_alv.
IMPORTING
et_fieldcat_lvc = pt_alv_fieldcat "TYPE lvc_t_fcat.
TABLES
it_data = pt_outtab
EXCEPTIONS
it_data_missing = 1
OTHERS = 2
.
Regards,
Clemens