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

block alv example

Former Member
0 Likes
2,218

hello experts ,

i need simple example of blocke alv grid reports.

5 REPLIES 5
Read only

Former Member
0 Likes
1,546
Read only

Former Member
0 Likes
1,546

look at program : BCALV_TEST_BLOCK_LIST

Read only

Former Member
0 Likes
1,546

hi use this..

&----


*& Report ZPR_02

*&

&----


*&

*&

&----


REPORT ZPR_02.

TYPE-POOLS: SLIS.

----


  • Tables Declaration.

----


TABLES: MARA.

----


*Internal tables and data declaration.

----


DATA: BEGIN OF IT_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

MBRSH LIKE MARA-MBRSH,

END OF IT_MARA,

BEGIN OF IT_MARC OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

EKGRP LIKE MARC-EKGRP,

END OF IT_MARC,

BEGIN OF IT_MARD OCCURS 0,

MATNR LIKE MARD-MATNR,

WERKS LIKE MARD-WERKS,

LGORT LIKE MARD-LGORT,

LABST LIKE MARD-LABST,

END OF IT_MARD.

DATA: WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,

IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELD_CAT2 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELD_CAT3 TYPE SLIS_T_FIELDCAT_ALV,

WA_KEYINFO TYPE SLIS_KEYINFO_ALV,

IT_LAYOUT TYPE SLIS_LAYOUT_ALV,

IT_EVENTS1 TYPE SLIS_T_EVENT WITH HEADER LINE,

IT_EVENTS2 TYPE SLIS_T_EVENT WITH HEADER LINE,

IT_EVENTS3 TYPE SLIS_T_EVENT WITH HEADER LINE.

----


*Selection Screen.

----


SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.

----


*Start Of selection.

----


START-OF-SELECTION.

*Selecting the data.

PERFORM SELECT_DATA.

*Populating the field catelogue.

PERFORM BUILD_FIELD_CAT.

*Displaying the final output.

PERFORM DISPLY_OUTPUT.

&----


*& Form Select_data

&----


  • Selecting the data.

----


FORM SELECT_DATA .

SELECT MATNR

MTART

MBRSH FROM MARA

INTO TABLE IT_MARA

WHERE MATNR IN S_MATNR.

IF NOT IT_MARA[] IS INITIAL.

SELECT MATNR

WERKS

EKGRP FROM MARC

INTO TABLE IT_MARC

FOR ALL ENTRIES IN IT_MARA

WHERE MATNR EQ IT_MARA-MATNR.

ENDIF.

IF NOT IT_MARC[] IS INITIAL.

SELECT MATNR

WERKS

LGORT

LABST FROM MARD

INTO TABLE IT_MARD

FOR ALL ENTRIES IN IT_MARC

WHERE MATNR = IT_MARC-MATNR

AND WERKS = IT_MARC-WERKS.

ENDIF.

ENDFORM. " Select_data

&----


*& Form Build_field_cat

&----


  • Populating the field catelogue.

----


FORM BUILD_FIELD_CAT .

DEFINE M_FIELDCAT1.

WA_FIELD_CAT-TABNAME = &1.

WA_FIELD_CAT-FIELDNAME = &2.

WA_FIELD_CAT-SELTEXT_L = &3.

APPEND WA_FIELD_CAT TO IT_FIELD_CAT1.

END-OF-DEFINITION.

DEFINE M_FIELDCAT2.

WA_FIELD_CAT-TABNAME = &1.

WA_FIELD_CAT-FIELDNAME = &2.

WA_FIELD_CAT-SELTEXT_L = &3.

APPEND WA_FIELD_CAT TO IT_FIELD_CAT2.

END-OF-DEFINITION.

DEFINE M_FIELDCAT3.

WA_FIELD_CAT-TABNAME = &1.

WA_FIELD_CAT-FIELDNAME = &2.

WA_FIELD_CAT-SELTEXT_L = &3.

APPEND WA_FIELD_CAT TO IT_FIELD_CAT3.

END-OF-DEFINITION.

M_FIELDCAT1 'MARA' 'MATNR' 'Material No'.

M_FIELDCAT1 'MARA' 'MTART' 'Material type'.

M_FIELDCAT1 'MARA' 'MBRSH' 'Industry Sector'.

M_FIELDCAT2 'MARC' 'MATNR' 'Material No'.

M_FIELDCAT2 'MARC' 'WERKS' 'Plant'.

M_FIELDCAT2 'MARC' 'EKGRP' 'Purchasing Group'.

M_FIELDCAT3 'MARD' 'MATNR' 'Material No'.

M_FIELDCAT3 'MARD' 'WERKS' 'Plant'.

M_FIELDCAT3 'MARD' 'LGORT' 'Storage Loc'.

M_FIELDCAT3 'MARD' 'LABST' 'Valued Stock'.

IT_EVENTS1-NAME = 'TOP_OF_PAGE'.

IT_EVENTS1-FORM = 'F_TOP_OF_PAGE_ONE'.

APPEND IT_EVENTS1.

CLEAR IT_EVENTS1.

IT_EVENTS2-NAME = 'TOP_OF_PAGE'.

IT_EVENTS2-FORM = 'F_TOP_OF_PAGE_TWO'.

APPEND IT_EVENTS2.

CLEAR IT_EVENTS2.

IT_EVENTS3-NAME = 'TOP_OF_PAGE'.

IT_EVENTS3-FORM = 'F_TOP_OF_PAGE_THREE'.

APPEND IT_EVENTS3.

CLEAR IT_EVENTS3.

ENDFORM. " Build_field_cat

&----


*& Form disply_output

&----


  • Displaying the final output.

----


FORM DISPLY_OUTPUT .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = IT_LAYOUT

IT_FIELDCAT = IT_FIELD_CAT1[]

I_TABNAME = 'IT_MARA'

IT_EVENTS = IT_EVENTS1[]

  • IT_SORT = IT_SORT

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARA .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = IT_LAYOUT

IT_FIELDCAT = IT_FIELD_CAT2[]

I_TABNAME = 'IT_MARC'

IT_EVENTS = IT_EVENTS2[]

  • IT_SORT = IT_SORT

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARC .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = IT_LAYOUT

IT_FIELDCAT = IT_FIELD_CAT3[]

I_TABNAME = 'IT_MARD'

IT_EVENTS = IT_EVENTS3[]

  • IT_SORT = IT_SORT

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARD .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT = 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 = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = 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. " disply_output

&----


*& Form top_of_page_one

&----


  • text

----


FORM F_TOP_OF_PAGE_ONE.

WRITE: / 'Header details (MARA)'.

ENDFORM. "top_of_page_one

&----


*& Form top_of_page_one

&----


  • text

----


FORM F_TOP_OF_PAGE_TWO.

WRITE: / 'Item details (MARC)'.

ENDFORM. "top_of_page_one

&----


*& Form top_of_page_one

&----


  • text

----


FORM F_TOP_OF_PAGE_THREE.

WRITE: / 'Item details (MARD)'.

ENDFORM. "top_of_page_one

regards,

venkat.

Read only

Former Member
0 Likes
1,546

hi,

u can display only block list display.block grid display is not possible using function modules.for block grid display u need to go for OO ALV.

block list ALV example.


TYPE-POOLS:slis.

DATA:x_layout TYPE slis_layout_alv,

t_field TYPE slis_t_fieldcat_alv,

*--field catalog

x_fldcat LIKE LINE OF t_field,

*--to hold all the events

t_events TYPE slis_t_event,

x_events TYPE slis_alv_event,

t_sort TYPE slis_t_sortinfo_alv,

x_sort LIKE LINE OF t_sort ,

*--Print Layout

x_print_layout TYPE slis_print_alv.

 

*----Macro to add field catalog.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

DEFINE add_catalog.

clear x_fldcat.

x_fldcat-fieldname = &1.

x_fldcat-seltext_m = &2.

x_fldcat-outputlen = &3.

x_fldcat-tech = &4.

x_fldcat-col_pos = &5.

x_fldcat-no_zero = 'X'.

x_fldcat-ddictxt = 'M'.

x_fldcat-datatype = &6.

x_fldcat-ddic_outputlen = &7.

if &6 = 'N'.

x_fldcat-lzero = 'X'.

endif.

*--build field catalog

append x_fldcat to t_field.

END-OF-DEFINITION.

 

*----- data declerations.

data: v_repid like sy-repid.

data: begin of itab occurs 0,

matnr like mara-matnr,

ernam like mara-ernam,

meins like mara-meins,

end of itab.

 

data: begin of jtab occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of jtab.

 

 

select matnr ernam meins

up to 20 rows

from mara

into table itab.

select matnr maktx

up to 20 rows

from makt

into table jtab.


v_repid = sy-repid.

 

*DISPLAY alv

* Initialize Block

call function 'REUSE_ALV_BLOCK_LIST_INIT'

exporting

i_callback_program = v_repid.

*Block 1:

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '18' '' '1' 'C' '18',

'ERNAM' 'Created By' '12' '' '2' 'C' '12',

'MEINS' 'Unit' '5' '' '3' 'C' '3'.

 

*--build table for events.

x_events-form = 'TOP_OF_LIST1'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

 

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'ITAB'

it_events = t_events

it_sort = t_sort

tables

t_outtab = itab

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.

 

 

*--BLOCK 2(SUMMARY REPORT)

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

 

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '20' '' '1' 'C' '18',

'MAKTX' 'Description' '40' '' '2' 'C' '40'.

 

*--build table for events.

x_events-form = 'TOP_OF_LIST2'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

* Append table block.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'JTAB'

it_events = t_events

tables

t_outtab = jtab

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.

 

*--CALL FM TO DISPLAY THE BLOCK REPORT.

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

* exporting

* is_print = x_print_layout

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.

 

 

form top_of_list1.

skip 1.

write: 10 'List 1',

/5 '--------------------'.

skip 1.

format reset.

endform.

 

form top_of_list2.

skip 1.

write: 10 'List 2',

/5 '--------------------'.

skip 1.

format reset.

endform.

rgds,

bharat.

Read only

Former Member
0 Likes
1,546

hi,

try like this


TYPE-POOLS : slis.

TABLES : mara,
         makt.

SELECT-OPTIONS : mat FOR mara-matnr.

DATA : BEGIN OF itab OCCURS 0,
        matnr LIKE mara-matnr,
        maktx LIKE makt-maktx,
        matkl LIKE mara-matkl,
        mtart LIKE mara-mtart,
       END OF itab.

DATA : BEGIN OF itab1 OCCURS 0,
        mtart LIKE mara-mtart,
        count TYPE i,
       END OF itab1.

DATA : BEGIN OF itab1_col OCCURS 0,
        mtart LIKE mara-mtart,
        count TYPE i,
       END OF itab1_col.

DATA : t_fcat1 TYPE slis_t_fieldcat_alv,
       t_fcat2 TYPE slis_t_fieldcat_alv,
       wa_fcat TYPE slis_fieldcat_alv,
       t_eve TYPE slis_t_event,
       wa_eve TYPE slis_alv_event,
       t_layout TYPE slis_layout_alv.

DATA : v_repid LIKE sy-repid,
       t_mat LIKE mara-matnr.

DEFINE create_fcat.

  clear wa_fcat.
  wa_fcat-fieldname = &1.
  wa_fcat-seltext_l = &2.
  wa_fcat-outputlen = &3.
  append wa_fcat to t_fcat1.

END-OF-DEFINITION.

START-OF-SELECTION.

  PERFORM get_data.
  PERFORM dis_data.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.

  SELECT a~matnr b~maktx a~mtart a~matkl INTO CORRESPONDING FIELDS OF TABLE itab
  FROM mara AS a INNER JOIN makt AS b ON
  a~matnr = b~matnr
  WHERE a~matnr IN mat.

  LOOP AT itab.
    itab1-mtart = itab-mtart.
    itab1-count = 1.
    APPEND itab1.
  ENDLOOP.

  SORT itab1 BY mtart.

  LOOP AT itab1.
    MOVE-CORRESPONDING itab1 TO itab1_col.
    COLLECT itab1_col.
  ENDLOOP.
ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  dis_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM dis_data.

  v_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
      i_callback_program      = v_repid.

  REFRESH t_fcat1.
  CLEAR t_fcat1.
  REFRESH t_eve.

  wa_eve-name = 'TOP_OF_PAGE'.
  wa_eve-form = 'TOP_OF_PAGE1'.
  APPEND wa_eve TO t_eve.


  create_fcat:

  'MATNR' 'Material' '10',
  'MAKTX' 'Material Description' '40',
  'MTART' 'Type' '10',
  'MATKL' 'Group' '10'.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      is_layout   = t_layout
      it_fieldcat = t_fcat1
      i_tabname   = 'ITAB'
      it_events   = t_eve
    TABLES
      t_outtab    = itab.

  REFRESH t_fcat1.
  CLEAR t_fcat1.
  REFRESH t_eve.

  wa_eve-name = 'TOP_OF_PAGE'.
  wa_eve-form = 'TOP_OF_PAGE2'.
  APPEND wa_eve TO t_eve.

  create_fcat:

  'MTART' 'Type' '10',
  'COUNT' 'Total' '5'.


  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      is_layout   = t_layout
      it_fieldcat = t_fcat1
      i_tabname   = 'ITAB1_COL'
      it_events   = t_eve
    TABLES
      t_outtab    = itab1_col.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

ENDFORM.                    "dis_data

*
*&---------------------------------------------------------------------*
*&      Form  top_of_page1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page1.

  FORMAT COLOR COL_POSITIVE.
  WRITE:/ 'First Block'.
  FORMAT COLOR OFF.

ENDFORM.                    "top_of_page


*&---------------------------------------------------------------------*
*&      Form  top_of_page2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page2.

  FORMAT COLOR COL_NEGATIVE.
  WRITE /5 'Second Block'.
  FORMAT COLOR OFF.

ENDFORM.                    "top_of_page

reward if usefull...