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

Regarding ALV Grid/List using Function Module.

Former Member
0 Likes
615

Hi,

I need the layout in this format.

Company Code: ABC

Six records each 10 columns.

Header Text-XXX

Company Code: DEF

Six records each 10 columns.

Header Text-ZZZ

I have several records in this format to be displayed using a ALV. Is it possible to have this type of Layout in ALV Grid/List.

Thanks in advance.

Regards,

Raghavendra Goutham.

4 REPLIES 4
Read only

Former Member
0 Likes
588

Raghavendra,

Did you look at the REUSE function for BLOCK LIST and APPEND BLOCK LIST?

I think those should solve your issue.

Regards

Ravi

Read only

Former Member
0 Likes
588

hai raghavendra,

try out this example it displays output in the same manner as u have asked for.

EXAMPLE:

TABLES : vbak. " Sales Document

TYPE-POOLS: slis. " ALV Global types

SELECT-OPTIONS :

s_vkorg FOR vbak-vkorg, " Sales organization

s_kunnr FOR vbak-kunnr, " Sold-to party

s_vbeln FOR vbak-vbeln, " Sales document

s_erdat FOR vbak-erdat. " Creation Date

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

DATA:

BEGIN OF gt_data OCCURS 0,

vkorg TYPE vkorg, " Sales organization

erdat TYPE sydatum, " Creation Date

total TYPE i, " Total of orders

END OF gt_data.

----


INITIALIZATION.

v_1 = 'Maximum of lines to display'.

----


START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

----


  • Form f_read_data

----


FORM f_read_data.

SELECT vkorg erdat COUNT(*) AS total

INTO TABLE gt_data

FROM vbak

UP TO p_max ROWS

WHERE kunnr IN s_kunnr

AND vbeln IN s_vbeln

AND vkorg IN s_vkorg

AND erdat IN s_erdat

GROUP BY vkorg erdat

ORDER BY erdat DESCENDING.

ENDFORM. " F_READ_DATA

----


  • Form F_DISPLAY_DATA

----


FORM f_display_data.

FIELD-SYMBOLS :

<field> TYPE ANY,

<header> TYPE ANY,

<lt_data> TYPE table. " Data to display

  • Macro definition

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-down = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

l_col(5),

lp_struct TYPE REF TO data,

lp_table TYPE REF TO data, " Pointer to dynamic table

ls_lvc_cat TYPE lvc_s_fcat,

lt_lvc_cat TYPE lvc_t_fcat, " Field catalog

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

ls_layout TYPE slis_layout_alv.

  • Build Fieldcatalog - First column

ls_lvc_cat-fieldname = 'ERDAT'.

ls_lvc_cat-ref_table = 'VBAK'.

APPEND ls_lvc_cat TO lt_lvc_cat.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

SORT gt_data BY vkorg.

LOOP AT gt_data.

AT NEW vkorg.

  • Build Fieldcatalog

CLEAR ls_lvc_cat.

CONCATENATE 'V' gt_data-vkorg INTO ls_lvc_cat-fieldname.

ls_lvc_cat-datatype = 'INT4'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Build Fieldcatalog

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = ls_lvc_cat-fieldname.

ls_fieldcat-datatype = 'INT4'.

ls_fieldcat-seltext_s = gt_data-vkorg.

ls_fieldcat-no_zero = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

ENDAT.

ENDLOOP.

  • Create internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING it_fieldcatalog = lt_lvc_cat

IMPORTING ep_table = lp_table.

ASSIGN lp_table->* TO <lt_data>.

  • Create structure = structure of the internal table

CREATE DATA lp_struct LIKE LINE OF <lt_data>.

ASSIGN lp_struct->* TO <header>.

SORT gt_data BY erdat.

  • Fill the internal table <lt_data>

LOOP AT gt_data.

AT NEW erdat.

CLEAR <header>.

ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <header> TO <field>.

IF sy-subrc NE 0. EXIT .ENDIF.

<field> = gt_data-erdat.

ENDAT.

CONCATENATE 'V' gt_data-vkorg INTO l_col.

ASSIGN COMPONENT l_col OF STRUCTURE <header> TO <field>.

IF sy-subrc NE 0. EXIT .ENDIF.

<field> = gt_data-total.

AT END OF erdat.

APPEND <header> TO <lt_data>.

ENDAT.

ENDLOOP.

  • Layout

ls_layout-colwidth_optimize = 'X'.

ls_layout-zebra = 'X'.

m_sort 'ERDAT'. " Sort by creation date

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = <lt_data>.

ENDFORM.

REGARDS,

PRABA.

Read only

Former Member
0 Likes
588

Hi,

Check this link you will get no.of examples....

http://www.geocities.com/mpioud/Abap_programs.html

Thanks.

If this helps you reward with points.

Read only

kvenkatesh-in
Explorer
0 Likes
588

Hi,

Go through this demo program.

BALVHD01_GROUP.

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

REPORT TEST NO STANDARD PAGE HEADING.

*"General Data

TYPE-POOLS: SLIS.

DATA: GT_OUTTABH TYPE SCARR OCCURS 0 WITH HEADER LINE,

GT_OUTTAB TYPE SFLIGHT OCCURS 0 WITH HEADER LINE,

GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE ,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

GS_KEYINFO TYPE SLIS_KEYINFO_ALV,

G_REPID LIKE SY-REPID.

DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .

DATA:

GT_EVENTS TYPE SLIS_T_EVENT,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

G_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',

G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',

G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

G_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',

G_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.

INITIALIZATION.

  • define keyinfo

CLEAR GS_KEYINFO.

GS_KEYINFO-HEADER01 = 'CARRID'.

GS_KEYINFO-ITEM01 = 'CARRID'.

GS_KEYINFO-HEADER02 = SPACE.

GS_KEYINFO-ITEM02 = 'CONNID'.

G_REPID = SY-REPID.

GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

GT_SORT-FIELDNAME = 'CURRCODE'.

GT_SORT-tabNAME = '1'.

GT_SORT-SPOS = 1.

GT_SORT-UP = 'X'.

GT_SORT-SUBTOT = 'X'.

GT_SORT-GROUP = '*'.

APPEND GT_SORT.

GT_SORT-FIELDNAME = 'CARRID'.

GT_SORT-tabNAME = '1'.

GT_SORT-SPOS = 2.

GT_SORT-UP = 'X'.

GT_SORT-SUBTOT = 'X'.

GT_SORT-GROUP = ' '.

APPEND GT_SORT.

GT_FIELDCAT-FIELDNAME = 'PRICE'.

GT_FIELDCAT-tabname = '2'.

GT_FIELDCAT-outputlen = 12.

GT_FIELDCAT-DO_SUM = 'X'.

APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'CARRID'.

GT_FIELDCAT-tabname = '1'.

GT_FIELDCAT-outputlen = 6.

GT_FIELDCAT-DO_SUM = space.

APPEND GT_FIELDCAT.

PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

START-OF-SELECTION.

SELECT * FROM SCARR INTO CORRESPONDING FIELDS

OF TABLE GT_OUTTABH.

SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS

OF TABLE GT_OUTTAB.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_STRUCTURE_NAME_HEADER = 'SCARR'

I_STRUCTURE_NAME_ITEM = 'SFLIGHT'

IS_KEYINFO = GS_KEYINFO

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT[]

I_TABNAME_HEADER = '1'

I_TABNAME_ITEM = '2'

IT_EVENTS = GT_EVENTS[]

IT_SORT = GT_SORT[]

TABLES

T_OUTTAB_HEADER = GT_outtabh

T_OUTTAB_ITEM = GT_outtab.

----


  • FORM EVENTTAB_BUILD *

----


FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.

*"Registration of events to happen during list display

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

*

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = RT_EVENTS.

READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.

APPEND LS_EVENT TO RT_EVENTS.

ENDIF.

ENDFORM.

----


  • FORM TOP_OF_PAGE *

----


FORM TOP_OF_PAGE.

DATA: LS_LINE TYPE SLIS_LISTHEADER.

*

REFRESH GT_LIST_TOP_OF_PAGE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = '<Header>'.

APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.

  • STATUS LINE: TYPE S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = '<Status1>'.

LS_LINE-INFO = GT_OUTTABH-CURRCODE.

APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM.

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

venkatesh

Message was edited by: venkateshkumar kandasamy