Skip to Content

doubt in using field catalog merge function

hi all,

When I am using the function maodule reuse_alv_fieldcatalog_merge for building the field catalog in alv list,it was giving abend message as

'Field catalog is empty'.

what might be the reason for such message?can some one help me out with the solution to get rid of that.

I cant populate the catalog manually because I need to display nearly 40 fields in the output.

Thanks in advance.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

5 Answers

  • Posted on Dec 03, 2007 at 05:49 AM

    Hi,

    May be u are not passing the internal table structure, better tp paste ur code here

    Regards,

    Prashant

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Dec 03, 2007 at 05:50 AM

    hI

    Supports the creation of the field catalog for the ALV function modules

    based either on a structure or table defined in the ABAP Data

    Dictionary, or a program-internal table.

    The program-internal table must either be in a TOP Include or its

    Include must be specified explicitly in the interface.

    The variant based on a program-internal table should only be used for

    rapid prototyping since the following restrictions apply:

    o Performance is affected since the code of the table definition must

    always be read and interpreted at runtime.

    o Dictionary references are only considered if the keywords LIKE or

    INCLUDE STRUCTURE (not TYPE) are used.

    If the field catalog contains more than 90 fields, the first 90 fields

    are output in the list by default whereas the remaining fields are only

    available in the field selection.

    If the field catalog is passed with values, they are merged with the

    'automatically' found information.

    Below is an example ABAP program which will populate a simple internal table(it_ekpo) with data and

    display it using the basic ALV grid functionality(including column total). The example details the main

    sections of coding required to implement the ALV grid functionality:

    Data declaration

    Data retrieval

    Build fieldcatalog

    Build layout setup

    *&---------------------------------------------------------------------*
    *& Report ZDEMO_ALVGRID *
    *& *
    *&---------------------------------------------------------------------*
    *& *
    *& Example of a simple ALV Grid Report *
    *& ................................... *
    *& *
    *& The basic requirement for this demo is to display a number of *
    *& fields from the EKKO table. *
    *&---------------------------------------------------------------------*
    REPORT zdemo_alvgrid .
    
    TABLES: ekko.
    
    type-pools: slis. "ALV Declarations
    *Data Declaration
    *----------------
    TYPES: BEGIN OF t_ekko,
    ebeln TYPE ekpo-ebeln,
    ebelp TYPE ekpo-ebelp,
    statu TYPE ekpo-statu,
    aedat TYPE ekpo-aedat,
    matnr TYPE ekpo-matnr,
    menge TYPE ekpo-menge,
    meins TYPE ekpo-meins,
    netpr TYPE ekpo-netpr,
    peinh TYPE ekpo-peinh,
    END OF t_ekko.
    
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
    wa_ekko TYPE t_ekko.
    
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
    gd_tab_group type slis_t_sp_group_alv,
    gd_layout type slis_layout_alv,
    gd_repid like sy-repid.
    
    
    ************************************************************************
    *Start-of-selection.
    START-OF-SELECTION.
    
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    
    
    *&---------------------------------------------------------------------*
    *& Form BUILD_FIELDCATALOG
    *&---------------------------------------------------------------------*
    * Build Fieldcatalog for ALV Report
    *----------------------------------------------------------------------*
    form build_fieldcatalog.
    
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you more control of the final product.
    
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    * I.e. Field type may be required in-order for
    * the 'TOTAL' function to work.
    
    fieldcatalog-fieldname = 'EBELN'.
    fieldcatalog-seltext_m = 'Purchase Order'.
    fieldcatalog-col_pos = 0.
    fieldcatalog-outputlen = 10.
    fieldcatalog-emphasize = 'X'.
    fieldcatalog-key = 'X'.
    * fieldcatalog-do_sum = 'X'.
    * fieldcatalog-no_zero = 'X'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'EBELP'.
    fieldcatalog-seltext_m = 'PO Item'.
    fieldcatalog-col_pos = 1.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'STATU'.
    fieldcatalog-seltext_m = 'Status'.
    fieldcatalog-col_pos = 2.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'AEDAT'.
    fieldcatalog-seltext_m = 'Item change date'.
    fieldcatalog-col_pos = 3.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'Material Number'.
    fieldcatalog-col_pos = 4.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'MENGE'.
    fieldcatalog-seltext_m = 'PO quantity'.
    fieldcatalog-col_pos = 5.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'MEINS'.
    fieldcatalog-seltext_m = 'Order Unit'.
    fieldcatalog-col_pos = 6.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'NETPR'.
    fieldcatalog-seltext_m = 'Net Price'.
    fieldcatalog-col_pos = 7.
    fieldcatalog-outputlen = 15.
    fieldcatalog-do_sum = 'X'. "Display column total
    fieldcatalog-datatype = 'CURR'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    
    fieldcatalog-fieldname = 'PEINH'.
    fieldcatalog-seltext_m = 'Price Unit'.
    fieldcatalog-col_pos = 8.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    endform. " BUILD_FIELDCATALOG
    
    
    *&---------------------------------------------------------------------*
    *& Form BUILD_LAYOUT
    *&---------------------------------------------------------------------*
    * Build layout for ALV grid report
    *----------------------------------------------------------------------*
    form build_layout.
    gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-totals_text = 'Totals'(201).
    * gd_layout-totals_only = 'X'.
    * gd_layout-f2code = 'DISP'. "Sets fcode for when double
    * "click(press f2)
    * gd_layout-zebra = 'X'.
    * gd_layout-group_change_edit = 'X'.
    * gd_layout-header_text = 'helllllo'.
    endform. " BUILD_LAYOUT
    
    
    *&---------------------------------------------------------------------*
    *& Form DISPLAY_ALV_REPORT
    *&---------------------------------------------------------------------*
    * Display report using ALV grid
    *----------------------------------------------------------------------*
    form display_alv_report.
    gd_repid = sy-repid.
    call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
    i_callback_program = gd_repid
    * i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
    * i_callback_user_command = 'USER_COMMAND'
    * i_grid_title = outtext
    is_layout = gd_layout
    it_fieldcat = fieldcatalog[]
    * it_special_groups = gd_tabgroup
    * IT_EVENTS = GT_XEVENTS
    i_save = 'X'
    * is_variant = z_template
    
    tables
    t_outtab = it_ekko
    exceptions
    program_error = 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.
    endform. " DISPLAY_ALV_REPORT
    
    
    *&---------------------------------------------------------------------*
    *& Form DATA_RETRIEVAL
    *&---------------------------------------------------------------------*
    * Retrieve data form EKPO table and populate itab it_ekko
    *----------------------------------------------------------------------*
    form data_retrieval.
    
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
    from ekpo
    into table it_ekko.
    endform. " DATA_RETRIEVAL

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Dec 03, 2007 at 05:53 AM

    Method 1 : Using Structures

    gv_repid means current prg name, c_structure is the structure created in se11, lt_fieldcat is the fieldcat internal table

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

    i_program_name = gv_repid

    i_structure_name = c_structure

    i_inclname = gv_repid

    i_bypassing_buffer = 'X'

    CHANGING

    ct_fieldcat = lt_fieldcat[]

    EXCEPTIONS

    inconsistent_interface = 1

    program_error = 2

    OTHERS = 3.

    Method 2 : With out using structures

    gv_repid means current prg name, lv_itab means u r internal table, lt_fieldcat is the fielcat internal table

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

    i_program_name = gv_repid

    i_internal_tabname = lv_itab

    i_inclname = gv_repid

    CHANGING

    ct_fieldcat = gt_fieldcat[]

    EXCEPTIONS

    inconsistent_interface = 1

    program_error = 2

    OTHERS = 3.

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Dec 03, 2007 at 05:54 AM

    Hi sravya,

    Check whether the internal table having values or not..

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Dec 03, 2007 at 05:56 AM

    Hello Sravya

    I assume you try to use an itab as input for the function module. In this case your coding needs to fulfill certain prerequisites. For a sample report have a look at <b>ZUS_SDN_FIELDCATALOG_1</b> in thread

    field catalog generation using merge function

    However, I do not recommend this approach. Instead define you itab based on one or many DDIC structures. Next create your fieldcatalog by <i>repetitively </i>calling the function module with the different DDIC structures and afterwards delete all fields that are not required for your list.

    Regards

    Uwe

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.