Application Development and Automation 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: 
Read only

alv

Former Member
0 Likes
901

hai,

what is the exact use of reuse_alv_fieldcatalog_merge?

thanks,

gopan

hai,

what is the exact use of reuse_alv_fieldcatalog_merge?

thanks,

gopan

8 REPLIES 8
Read only

dani_mn
Active Contributor
0 Likes
858

It is used a create a Field catalog from the internal table structure.

And also if you are using 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' it will merge the header and item catalogs.

call function 'REUSE_ALV_FIELDCATALOG_MERGE'

exporting

i_program_name = v_repid

i_internal_tabname = 'IT_BKPF'

i_inclname = v_repid

changing

ct_fieldcat = it_fieldcat[] .

Regards,

Wasim AHmed

Read only

Former Member
0 Likes
858

'REUSE_ALV_FIELDCATALOG_MERGE' uses dictionary texts and field properties to create the Catalog. This saves you manually populating the Field Catalog in the program.

Read only

Former Member
0 Likes
858

It creates a field catalog automatically for the ALV Grid / list, either from a database structure / internal table.

Later this is passed a parameter to the function REUSE_ALV_GRID_DISPLAY.

Regards,

Ravi

Note : Please mark all the helpful answers

Read only

0 Likes
858

See this link:

http://www.sap-img.com/fu015.htm

Basically what this fm does is, that it will build a field catalog table based on the standard data elements and the domains the fields in the internal table are referring to.

YOu can modify the field catalog table that is returned from this fm and then pass it to the main reuse_alv_grid_display /list display fms.

This function will create a field catalog using a strcture / table in data dictionary (SE11) or an internal table declared in your program.

However, you internal table will have to be declared in the traditional way of having a header line and the fields refrerring with the LIKE.

This field catalog can be used in the REUSE functions only cannot be used for OO ALV.

Read only

Former Member
0 Likes
858

This will give relief to you from assigning all the field headings,positions to the field catalog and appending them.It is useful when you are displaying a large number of fields in your alv

Check this simple code.

REPORT ztest_merge.

TYPE-POOLS : slis.

TABLES : qals.

DATA : BEGIN OF t_out OCCURS 0,

matnr LIKE qals-matnr, "MATERIAL

werk LIKE qals-werk, "PLANT

art like qals-art, "Inspaction Lot Type

objnr like qals-objnr, "Object Number

END OF t_out.

DATA : i_fieldcat TYPE slis_t_fieldcat_alv,

i_layout TYPE slis_layout_alv,

gs_layout TYPE lvc_s_layo,

g_repid TYPE sy-repid,

ls_fieldcat TYPE slis_fieldcat_alv.

SELECT-OPTIONS:s_prflos FOR qals-prueflos.

INITIALIZATION.

g_repid = sy-repid.

i_layout-zebra = 'X'.

i_layout-colwidth_optimize = 'X'.

START-OF-SELECTION.

PERFORM fetch_data.

END-OF-SELECTION.

PERFORM fill_fieldcat.

PERFORM display_alv.

FORM fetch_data .

SELECT matnr werk art objnr

FROM qals

INTO TABLE t_out

WHERE prueflos IN s_prflos.

ENDFORM. " FETCH_DATA

FORM fill_fieldcat .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'T_OUT'

i_inclname = g_repid

CHANGING

ct_fieldcat = i_fieldcat[]

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

ENDFORM. " FILL_FIELDCAT

FORM display_alv .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

is_layout = i_layout

it_fieldcat = i_fieldcat[]

TABLES

t_outtab = t_out

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. " display_alv

Read only

Former Member
0 Likes
858

hi,

Basically 'Reuse_Alv_FieldCatalog_Merge' is used to create field catalog from dictionary structure or internal table.

Regards

Naveen

Read only

Former Member
0 Likes
858

Hai Gopan

6. REUSE_ALV_FIELDCATALOG_MERGE

This FM creates field catalog from dictionary structure or internal table.

EXPORTING

I_PROGRAM_NAME Program from which the function module is called and which contains the exit routines. The program should always be a Report, Function group, Module pool or Form routine pool (not an Include).

I_INERNAL_TABNAME Name of the internal table as string.

I_STRUCTURE If the internal table is like ABAP dictionary object then pass on the structure name.

I_CLINT_NEVER_DISPLAY If the internal table refers to a structure which has client as key field, the client field can be suppressed from output by passing ‘X’ to this parameter.

I_INCLNAME If the list output structure data declaration is not in the assigned TOP Include, the Include name can be specified here if no structure is specified.

CHANGING

CT_FIELDCAT Generated Field catalog.

Check the following Example Code

&----


*& Report ZALV_BLOCK *

*& *

&----


*& *

*& *

&----


REPORT ZALV_BLOCK NO STANDARD PAGE HEADING

LINE-SIZE 150

LINE-COUNT 60(4)

MESSAGE-ID Z00.

*..Type Definitions for ALV Report

TYPE-POOLS SLIS.

*..Includes

*for ICONs

*INCLUDE <ICON>.

----


  • Table/Structure declarations. *

----


TABLES: MARA,

MARC,

T134.

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

  • Types Declaration *

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

TYPES: BEGIN OF typ_mara,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MATKL TYPE MARA-MATKL,

MEINS TYPE MARA-MEINS,

NTGEW TYPE MARA-NTGEW,

END OF typ_mara.

TYPES: BEGIN OF typ_marc,

WERKS TYPE MARC-WERKS,

LADGR TYPE MARC-LADGR,

MTVFP TYPE MARC-MTVFP,

DISPR TYPE MARC-DISPR,

DISMM TYPE MARC-DISMM,

DISPO TYPE MARC-DISPO,

END OF typ_marc.

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

  • Intrnal tables Declaration *

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

DATA: it_mara TYPE STANDARD TABLE OF typ_mara WITH HEADER LINE.

DATA: it_marc TYPE STANDARD TABLE OF typ_marc WITH HEADER LINE.

----


  • ALV Type declaration *

----


DATA:V_NO_DATA TYPE C.

----


  • ALV Type declaration *

----


DATA:V_REPID TYPE SYREPID.

DATA: IT_FIELDCATALOG_MARA TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MARA TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCATALOG_MARC TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MARC TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCATALOG_MATKL TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MATKL TYPE SLIS_FIELDCAT_ALV,

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

IT_EVENTS TYPE SLIS_T_EVENT,

WA_EVENTS TYPE SLIS_ALV_EVENT,

WA_KEYINFO TYPE SLIS_KEYINFO_ALV.

----


  • Selection Screen. *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR ,

S_MTART FOR MARA-MTART .

SELECTION-SCREEN END OF BLOCK B1.

----


  • Event:Initialization *

----


INITIALIZATION.

*Report Name

V_REPID = SY-REPID.

----


  • AT Selection Screen. *

----


AT SELECTION-SCREEN.

----


  • Event: Start-of-Selection *

----


START-OF-SELECTION.

PERFORM FETCH_DATA.

----


  • Event: End-of-Selection *

----


END-OF-SELECTION.

IF V_NO_DATA = ''.

MESSAGE I010 WITH 'NO DATA TO DISPLAY ! '.

EXIT.

ELSE.

PERFORM FILL_FIELDCAT_MARA.

  • PERFORM FILL_FIELDCAT_MAKT.

PERFORM FILL_FIELDCAT_MARC.

PERFORM FILL_LAYOUT.

PERFORM CALL_ALV_INIT.

PERFORM ADD_LISTS.

PERFORM DISPLAY_BLOCK_LIST.

ENDIF.

//////////////////////////////////////////////////////////////////////

*

  • FORM DEFINITIONS *

*

*//////////////////////////////////////////////////////////////////////

&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_DATA.

SELECT MATNR

MTART

MATKL

MEINS

NTGEW

INTO CORRESPONDING FIELDS OF TABLE IT_MARA

FROM MARA

WHERE MATNR IN S_MATNR

AND MTART IN S_MTART.

IF SY-SUBRC <> 0.

V_NO_DATA = ''.

ELSE.

V_NO_DATA = 'X'.

SELECT WERKS

LADGR

MTVFP

DISPR

DISMM

DISPO

INTO CORRESPONDING FIELDS OF TABLE IT_MARC

FROM MARC

WHERE MATNR IN S_MATNR.

ENDIF.

ENDFORM. " FETCH_DATA

*

&----


*& Form FILL_FIELDCAT_MARA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MARA.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

  • I_INTERNAL_TABNAME =

I_STRUCTURE_NAME = 'IT_MARA'

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_FIELDCATALOG_MARA

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.

LOOP AT IT_FIELDCATALOG_MARA INTO WA_FIELDCATALOG_MARA.

CASE WA_FIELDCATALOG_MARA-FIELDNAME.

WHEN 'MATNR'.

WA_FIELDCATALOG_MARA-COL_POS = '1'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Material NO'.

WHEN 'MTART'.

WA_FIELDCATALOG_MARA-COL_POS = '2'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Mat Type'.

WHEN 'MATKL'.

WA_FIELDCATALOG_MARA-COL_POS = '3'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Mat Group'.

WHEN 'MEINS'.

WA_FIELDCATALOG_MARA-COL_POS = '4'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Measure Unit'.

WHEN 'NTGEW'.

WA_FIELDCATALOG_MARA-COL_POS = '5'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Net Wt'.

WA_FIELDCATALOG_MARA-DO_SUM = 'X'.

ENDCASE.

MODIFY IT_FIELDCATALOG_MARA FROM WA_FIELDCATALOG_MARA INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_MARA

&----


*& Form FILL_FIELDCAT_MARC

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MARC.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_MARC'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_FIELDCATALOG_MARC

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.

LOOP AT IT_FIELDCATALOG_MARC INTO WA_FIELDCATALOG_MARC.

CASE WA_FIELDCATALOG_MARC-FIELDNAME.

WHEN 'WERKS'.

WA_FIELDCATALOG_MARC-COL_POS = '1'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'PLANT NAME'.

WHEN 'LADGR'.

WA_FIELDCATALOG_MARC-COL_POS = '2'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'Loading Group'.

WHEN 'MTVFP'.

WA_FIELDCATALOG_MARC-COL_POS = '3'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '20'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'Checking group'.

WHEN 'DISPR'.

WA_FIELDCATALOG_MARC-COL_POS = '4'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP PROFILE'.

WHEN 'DISMM'.

WA_FIELDCATALOG_MARC-COL_POS = '5'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP TYPE'.

WHEN 'DISPO'.

WA_FIELDCATALOG_MARC-COL_POS = '6'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP CONTROLLER'.

ENDCASE.

MODIFY IT_FIELDCATALOG_MARC FROM WA_FIELDCATALOG_MARC INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_MARC

&----


*& Form FILL_FIELDCAT_MAKT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MAKT.

ENDFORM. " FILL_FIELDCAT_MAKT

&----


*& Form CALL_ALV_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CALL_ALV_INIT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IT_EXCLUDING =

.

ENDFORM. " CALL_ALV_INIT

&----


*& Form ADD_LISTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ADD_LISTS.

*ADD IT_MARA TABLE TO THE OUTPUT

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCATALOG_MARA

I_TABNAME = 'IT_MARA'

IT_EVENTS = IT_EVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARA

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 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.

**ADD IT_MARC TABLE TO THE OUTPUT

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCATALOG_MARC

I_TABNAME = 'IT_MARC'

IT_EVENTS = IT_EVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARC

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

ENDFORM. " ADD_LISTS

&----


*& Form FILL_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_LAYOUT.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

ENDFORM. " FILL_LAYOUT

&----


*& Form DISPLAY_BLOCK_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_BLOCK_LIST.

  • WA_KEYINFO-HEADER01 = 'MATNR'.

  • WA_KEYINFO-ITEM01 = 'MATNR'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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

Thanks & regards

Sreenivasulu P

Read only

Former Member
0 Likes
858

Hi,

'REUSE_ALV_FIELDCATALOG_MERGE' is used to create a field catalog automatically which is then passed to

'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.

On using 'REUSE_ALV_FIELDCATALOG_MERGE' you don't need to repeatedly write the fieldcatalog statements and appending and then clearing it. Its an alternative and an efficient way to this repeatitiveness.

Regards,

Sangeeta.