Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

field catalog

Former Member
0 Kudos

Hi,

How to give the filed heading to all the table fields using field cat.

I mean I am displaying all the z table fields in my report output I want the field heading for all the fields. I am using reuse_alv_grid_display for displaying the output.

Please help me.

7 REPLIES 7

Former Member
0 Kudos

Hi,

check this program

&----


*& Report ZSAMP_ALV2 *

*& *

&----


*& *

*& *

&----


REPORT ZSAMP_ALV2 .

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,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

************************************************************************

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

*perform build_layout.

*perform build_events.

*perform build_print_params.

perform display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


Build Fieldcatalog for ALV Report

-


form build_fieldcatalog.

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'.

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).

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_events

is_print = gd_prntparams

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

-


Form TOP-OF-PAGE *

-


ALV Report Header *

-


Form top-of-page.

*ALV Header declarations

data: t_header type slis_t_listheader,

wa_header type slis_listheader,

t_line like wa_header-info,

ld_lines type i,

ld_linesc(10) type c.

Title

wa_header-typ = 'H'.

wa_header-info = 'EKKO Table Report'.

append wa_header to t_header.

clear wa_header.

Date

wa_header-typ = 'S'.

wa_header-key = 'Date: '.

CONCATENATE sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) INTO wa_header-info. "todays date

append wa_header to t_header.

clear: wa_header.

Total No. of Records Selected

describe table it_ekko lines ld_lines.

ld_linesc = ld_lines.

concatenate 'Total No. of Records Selected: ' ld_linesc

into t_line separated by space.

wa_header-typ = 'A'.

wa_header-info = t_line.

append wa_header to t_header.

clear: wa_header, t_line.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = t_header

i_logo = 'HCL_logo'.

endform.

-


FORM USER_COMMAND *

-


--> R_UCOMM *

--> RS_SELFIELD *

-


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

Check function code

CASE r_ucomm.

WHEN '&IC1'.

Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

Read data table, using index of row user clicked on

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.

&----


*& Form BUILD_EVENTS

&----


Build events table

-


form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

&----


*& Form BUILD_PRINT_PARAMS

&----


Setup print parameters

-


form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

&----


*& Form END_OF_PAGE

&----


form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form END_OF_LIST

&----


form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

REGARDS

0 Kudos

Hi,

This is ok but suppose if i my table contains 20 columns. Instead of writing 20 times filed catalog logic for each coloumn is there any option to display all the 20 coloumn filed names in single shot.

Thank you

0 Kudos

Hi,

you can do it may be u by calling the structure field catalog inside perform but u know it will take much time to code than filling each one if they are 20 columns its not bad idea to write 20 times.

Regards

Former Member
0 Kudos

Hi Ramesh,

Try this,

I hope this will help u.

***********************************************************

data: l_fieldcat type slis_fieldcat_alv,

l_fieldtab type slis_t_fieldcat_alv,

define macro1.

clear l_fieldcat.

l_fieldcat-fieldname = &1. "field technical name.

l_fieldcat-seltext_m = &2. " Field Medium discription

l_fieldcat-seltext_s = &3. " Field Short Discription.

l_fieldcat-seltext_l = &4.. " Field Long Discription.

append l_fieldcat to p_fieldtab.

end-of-definition.

now if u want to give the discription to Field 'MATNR'

macro1 'MATNR' 'Mat.No.' 'Mat. Number' 'Material Number'.

*************************************************************

Regards,

Naveen

Former Member
0 Kudos

hi

here is the simple and easy way of declaring fieldcat.....

at the begin of ur report declarations define a(1) MACRO for fieldcat. (2)later give the fieldnames to this MACRO .(3)finally place the "lt_fieldcat"IT_FILECAT for in 'REUSE_ALV_GRID_DISPLAY'

(1)

DEFINE m_fieldcat.

Add 1 to ls_fieldcat-col_pos.

Ls_fieldcat-fieldname = &1.

Ls_fieldcat-ref_tabname = &2.

Append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

(2)

DATA : ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv.

m_fieldcat 'fieldnamein output' 'Ztablename'.

m_fieldcat 'fieldnamein output' 'Ztablename'.

m_fieldcat 'fieldnamein output' 'Ztablename'.

(3)

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = sy-repid

IT_FIELDCAT = lt_fieldcat

TABLES

T_OUTTAB = output internaltable[].

enjoy..

tc

Former Member
0 Kudos

A field catalog is prepared using the internal table (I_FIELDCAT) of type SLIS_T_FIELDCAT_ALV. Field catalog containing descriptions of the list output fields (usually a subset of the internal output table fields).

A field catalog is required for every ALV list output to add desired functionality (i.e. Key, Hotspot, Specific headings, Justify, Col. position etc) to certain fields of the output. If not mentioned specifically, then the defaults are taken. The possible values and defaults are listed below.

The field catalog for the output table is built-up in the caller's coding. The build-up can be completely or partially automated by calling the REUSE_ALV_FIELDCATALOG_MERGE module.

The minimal field catalog is documented below. This can be done in a routine using a local variable. The user can use the other optional parameters to assign output attributes to different fields in the output, which differ from the default.

hi,

A field catalog need not be built-up and passed explicitly only under the following conditions:

1. The internal table to be output has the same structure as a Data Dictionary structure which is referred to in the internal table declaration using LIKE or INCLUDE STRUCTURE. In this case the attributes of the different fields is taken directly from the table and the attributes (key fields, length, texts etc) need to state explicitly.

2. all fields in this structure are to be output

3. The structure name is passed to ALV in the parameter I_STRUCTURE_NAME of the function module REUSE_ALV_LIST_DISPLAY.

we can prepare the fieldcat in 3 ways.

1. manually

2. semi automated

3. fully automated

The methods 2 and 3 can be accomplished with the FM:

Reuse_alv_fieldcatlog_merge.

reward if help ful

gds

Umakanth

Clemenss
Active Contributor
0 Kudos

Hi RAMESH,

if your Z table is defined correctly, you can pass the structure name to the ALV function and the rest works automatically.

If it does not show the expected results, you shoul create the fieldcatalog first using FM REUSE_ALV_FIELDCATALOG_MERGE and the loop at it changing the labels; something like this:


*&---------------------------------------------------------------------*
*&      Form  alv_fieldcat_enhance
*&---------------------------------------------------------------------*
*       Individual Enrichment of field catalog
*----------------------------------------------------------------------*
FORM alv_fieldcat_enhance
  CHANGING pt_alv_fieldcat                TYPE slis_t_fieldcat_alv.
  FIELD-SYMBOLS:
    <alv_fieldcat>                        TYPE slis_fieldcat_alv.
  LOOP AT pt_alv_fieldcat ASSIGNING <alv_fieldcat>.
    CASE <alv_fieldcat>-fieldname.
      WHEN 'LIGHTS'.
        <alv_fieldcat>-icon               = c_true.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       =
        'State'(sta).
      WHEN  'MANDT' OR 'SEL'.
        <alv_fieldcat>-tech               = c_true.
      WHEN 'BALSCOA_H'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Bal. SCOA'(a01).
        <alv_fieldcat>-cfieldname         = 'HWAER'.
        <alv_fieldcat>-hotspot            = c_true.
      WHEN 'DIFF_H'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Acct. Diff.'(a03).
        <alv_fieldcat>-cfieldname         = 'HWAER'.
      WHEN 'BALNOTE_H'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Bal. NOTE'(a02).
        <alv_fieldcat>-cfieldname         = 'HWAER'.
      WHEN 'BALSCOA_T'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Bal. SCOA T/C'(a05).
        <alv_fieldcat>-cfieldname         = 'RTCUR'.
        <alv_fieldcat>-hotspot            = c_true.
      WHEN 'DIFF_T'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Acct. Diff. T/C'(a06).
        <alv_fieldcat>-cfieldname         = 'RTCUR'.
      WHEN 'BALNOTE_T'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Bal. NOTE T/C'(a09).
        <alv_fieldcat>-cfieldname         = 'RTCUR'.
      WHEN 'PROTOCOL'.
        <alv_fieldcat>-seltext_s          =
        <alv_fieldcat>-seltext_m          =
        <alv_fieldcat>-seltext_l          =
        <alv_fieldcat>-reptext_ddic       = 'Prot'(a11).
        <alv_fieldcat>-hotspot            = c_true.
      WHEN 'RACCTNOTE' OR 'DOCNUM'.
        <alv_fieldcat>-hotspot            = c_true.
    ENDCASE." <alv_fieldcat>-fieldname.
  ENDLOOP." at pt_alv_fieldcat assigning <fieldcat_alv>.
ENDFORM.                    " alv_fieldcat_enhance

Note: This is just an example to be adapted to your needs. It includes setting certain columns as hotspot and giving references for currency fields.

If you use OOor LVC ALV, the names of the field catalog fields are slightly different.

Regards,

Clemens