Various ways to build an ALV Fieldcatalog within SAP

There are many ways in which to build a field catalog, some of which can be found below:


* Building a fieldcatalog based on a dictionary structure/table
* This Method requires you to create a dictionary structure via
* SE11 and pass that in the 'I_STRUCTURE_NAME' parameter.
* The below example will be for all of EKKO but you could create a new
* structure containing only the fields you require.
*For Function module ALV (report)
  DATA: it_fieldcat  TYPE slis_t_fieldcat_alv,
        wa_fieldcat   LIKE LINE OF it_fieldcat.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'EKKO'
    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.
*For object ALV (Screen)
  DATA: gd_fieldcat2 type LVC_T_FCAT.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING                              
*     I_BUFFER_ACTIVE        =         
      I_STRUCTURE_NAME       = 'EKKO'   
*     I_CLIENT_NEVER_DISPLAY = 'X'
*     I_BYPASSING_BUFFER     =         
    CHANGING
      ct_fieldcat            = gd_fieldcat2
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR          = 2
      OTHERS                 = 3.


* Building a fieldcatalog based on an internal table
* This method relies on the internal table(IT_EKKO) having been
* declared within an include(i.e. ZDEMO_ALVGRID_STRUCTURE) using
* version 4.0 method of declaration:
*                 data: begin of it_ekko occurs 0,
*                         ebeln like ekko-ebeln,
*                         ...
*                       end of it_ekko.
data: gd_fieldcat   type slis_fieldcat_alv occurs 0.

* Include to store internal table structure required for FM
*                                  'REUSE_ALV_FIELDCATALOG_MERGE'.
include: ZDEMO_ALVGRID_STRUCTURE.
-----------------------------
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       exporting
            i_program_name         = 'ZDEMO_ALVGRID'
            i_internal_tabname     = 'IT_EKKO_ALT'
            i_inclname             =  'ZDEMO_ALVGRID_STRUCTURE'
       changing
            ct_fieldcat            = gd_fieldcat
       exceptions
            inconsistent_interface = 1
            program_error          = 2
            others                 = 3.


* Another way is to 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, there are many fields that can be populated and you
* need to ensure that those 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.
data: fieldcatalog type slis_t_fieldcat_alv with header line.
  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-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.

Related Articles

ALV grid display - Example code and information for creating ALV grids using Function modules
Add User command functionality to ALVgrid report
ALV totals text
Display traffic light icon on ALV grid report
ALV grid display (inc. column total)
SAP ALV consistancy check
Change colour of individual SAP ALV cells within an ALV grid report
SAP ALV row colour change and making each individual row a different color
Make all or individual fields of an ALV grid editable
Add Footer functionality to ALVgrid report
Enhanced ALV grid display
Add Event functionality to ALVgrid report
Example Output from ALV grid display
Example Output from ALV grid display with report heading
Add User command functionality to ALVgrid report
Add Title heading to ALV Grid incluing image or logo
Row selection of ALV grid
Add Default Sorting to ALVgrid report
Add User command functionality to ALVgrid report
ALV list display
ALV list display(ALV_LIST)
Example ALV report output
Internal table structure required for FM 'REUSE_ALV_FIELDCATALOG_MERGE'
Multiple ALV list display
Add image to ALV report using OAOR tcode, without replacing the enjoy SAP logo
Transport an ALV variant with SAP