sapdev logo background
sapdev logo sapdev logo
Comments

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.





comments powered by Disqus