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 problem

Former Member
0 Likes
585

Hi gurus!

i have convert classical report to ALV grid Display , but problem is that i want to display output as :

material code | material desc |

customer code | customer name | invoice date | Inv no | ............invoice value

in above first line about material desc then invoice details both are in same itab.

here is the code ..

LOOP AT IT_ITAB.

ON CHANGE OF IT_ITAB-MATNR.

SKIP.

FORMAT INTENSIFIED ON COLOR = 4.

WRITE:/2 IT_ITAB-MATNR, IT_ITAB-ARKTX.

FORMAT INTENSIFIED OFF.

ENDON.

AT NEW VBELN.

IF C EQ 'B'.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

C = 'N'.

ELSE.

FORMAT COLOR COL_NORMAL INTENSIFIED ON.

C = 'B'.

ENDIF.

ENDAT.

WRITE:/2 IT_ITAB-KUNAG,15 IT_ITAB-SONAME1(30),45 IT_ITAB-KUNNR,60 IT_ITAB-SHNAME1(30),

90 IT_ITAB-FKDAT,105 IT_ITAB-VBELN,120 IT_ITAB-EXNUM,135 IT_ITAB-FKIMG LEFT-JUSTIFIED,

145 IT_ITAB-INVAL,180 IT_ITAB-KBETR,200 IT_ITAB-VEHICALNO,220 IT_ITAB-TRANSPORTER,

235 IT_ITAB-SFKIMG.

AT END OF MATNR.

SUM.

SKIP.

ULINE (250).

FORMAT INTENSIFIED OFF COLOR = 1.

WRITE:/135 IT_ITAB-FKIMG LEFT-JUSTIFIED,145 IT_ITAB-INVAL,235 IT_ITAB-SFKIMG.

FORMAT INTENSIFIED OFF.

SKIP.

ULINE (250).

ENDAT.

AT LAST.

SUM.

FORMAT INTENSIFIED OFF COLOR = 3.

WRITE:/135 IT_ITAB-FKIMG LEFT-JUSTIFIED,145 IT_ITAB-INVAL,235 IT_ITAB-SFKIMG.

FORMAT INTENSIFIED OFF.

SKIP.

ULINE (250).

ENDAT.

ENDLOOP.

plz tell me how to convert it into alv.

Regards,

Rahul Deshmukh

4 REPLIES 4
Read only

varma_narayana
Active Contributor
0 Likes
555

Hi Rahul...

In this case you have to create a Hierarchical ALV report.

This is the Sample code. Test it.

using hierarchial seq list display u can display two internal tables like Header and Detail.

example program:

TYPE-POOLS: kkblo.

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

  • Database Tables

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

TABLES: vbak, vbap.

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

  • Structures

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

DATA: st_fieldcat TYPE slis_fieldcat_alv.

DATA: st_keyinfo TYPE slis_keyinfo_alv.

DATA: st_sort TYPE slis_sortinfo_alv.

DATA: st_layout TYPE slis_layout_alv.

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

  • Internal tables

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

DATA: tbl_fieldcat TYPE slis_t_fieldcat_alv.

DATA: tbl_sort TYPE slis_t_sortinfo_alv.

DATA: BEGIN OF tbl_header OCCURS 0.

INCLUDE STRUCTURE vbak.

DATA: END OF tbl_header.

DATA: BEGIN OF tbl_item OCCURS 0.

INCLUDE STRUCTURE vbap.

DATA: END OF tbl_item.

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

  • Constants

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

CONSTANTS: c_y VALUE 'X'. "Yes

CONSTANTS: c_n VALUE ' '. "No

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

  • Simple Variables

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

DATA: field_name(30) TYPE c,

g_repid like sy-repid.

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

  • Selection Screen

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

SELECTION-SCREEN BEGIN OF BLOCK sel_options WITH FRAME TITLE text-tt1.

SELECT-OPTIONS s_vbeln FOR vbak-vbeln.

SELECTION-SCREEN END OF BLOCK sel_options.

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

  • Start of Selection

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

START-OF-SELECTION.

  • Get the Report ID

g_repid = sy-repid.

  • Select data from the Sales Document Header Table

SELECT * FROM vbak INTO TABLE tbl_header

WHERE vbeln IN s_vbeln.

  • Select the relevant Sales Document Item data

SELECT * FROM vbap INTO TABLE tbl_item

FOR ALL ENTRIES IN tbl_header

WHERE vbeln = tbl_header-vbeln.

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

  • End of Selection

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

END-OF-SELECTION.

PERFORM get_keyinfo.

PERFORM get_layout.

PERFORM get_sort.

PERFORM get_fieldcat.

PERFORM create_report.

&----


*& Form get_fieldcat

&----


  • text

----


FORM get_fieldcat.

  • Here the field catalog is created. To display more fields simply

  • 'uncomment' the additional lines and add the field name. Also note

  • that the field catalog is much more powerful than this. You can

  • intensify fields, change the colour, assign reference fields, etc.

  • Look at type slis_fieldcat_alv for more options.

  • Header

PERFORM write_fieldcat USING 'VBELN' 'TBL_HEADER' 'VBAK' c_y 1

c_n c_y c_n c_n.

PERFORM write_fieldcat USING 'ERDAT' 'TBL_HEADER' 'VBAK' c_n 2

c_n c_n c_n c_y.

PERFORM write_fieldcat USING 'AUDAT' 'TBL_HEADER' 'VBAK' c_n 3

c_n c_n c_n c_n.

PERFORM write_fieldcat USING 'VBTYP' 'TBL_HEADER' 'VBAK' c_n 4

c_n c_n c_n c_n.

PERFORM write_fieldcat USING 'WAERK' 'TBL_HEADER' 'VBAK' c_n 5

c_n c_n c_n c_n.

PERFORM write_fieldcat USING 'VKBUR' 'TBL_HEADER' 'VBAK' c_n 6

c_n c_n c_n c_y.

  • perform write_fieldcat using ' ' 'TBL_HEADER' 'VBAK' ' ' 7.

  • perform write_fieldcat using ' ' 'TBL_HEADER' 'VBAK' ' ' 8.

  • perform write_fieldcat using ' ' 'TBL_HEADER' 'VBAK' ' ' 9.

  • perform write_fieldcat using ' ' 'TBL_HEADER' 'VBAK' ' ' 10.

  • Item

PERFORM write_fieldcat USING 'POSNR' 'TBL_ITEM' 'VBAP' c_y 1

c_n c_n c_n c_n.

PERFORM write_fieldcat USING 'MATNR' 'TBL_ITEM' 'VBAP' c_n 2

'C411' c_n c_n c_n.

PERFORM write_fieldcat USING 'NETPR' 'TBL_ITEM' 'VBAP' c_n 3

'C300' c_n c_y c_n.

PERFORM write_fieldcat USING 'PRCTR' 'TBL_ITEM' 'VBAP' c_n 4

c_n c_n c_n 'X'.

PERFORM write_fieldcat USING 'GSBER' 'TBL_ITEM' 'VBAP' c_n 5

c_n c_n c_n 'X'.

PERFORM write_fieldcat USING 'WERKS' 'TBL_ITEM' 'VBAP' c_n 6

c_n c_n c_n 'X'.

PERFORM write_fieldcat USING 'AUFNR' 'TBL_ITEM' 'VBAP' c_n 7

'C611' c_n c_n c_n.

  • perform write_fieldcat using ' ' 'TBL_ITEM' 'VBAP' ' ' 8.

  • perform write_fieldcat using ' ' 'TBL_ITEM' 'VBAP' ' ' 9.

  • perform write_fieldcat using ' ' 'TBL_ITEM' 'VBAP' ' ' 10.

  • perform write_fieldcat using ' ' 'TBL_ITEM' 'VBAP' ' ' 11.

  • perform write_fieldcat using ' ' 'TBL_ITEM' 'VBAP' ' ' 12.

ENDFORM. " get_fieldcat

&----


*& Form write_fieldcat

&----


  • text

----


  • -->name Field name

  • -->tab Table name

  • -->st Structure Name

  • -->key Is this field a Key?

  • -->pos Position Number

  • -->emp Emphasize

  • -->hot Hotspot

  • -->sum Do_sum

  • -->hide No_out

----


FORM write_fieldcat USING name tab st key pos emp hot sum hide.

st_fieldcat-fieldname = name.

st_fieldcat-tabname = tab.

st_fieldcat-ref_tabname = st.

st_fieldcat-key = key.

st_fieldcat-col_pos = pos.

st_fieldcat-emphasize = emp.

st_fieldcat-hotspot = hot.

st_fieldcat-do_sum = sum.

st_fieldcat-no_out = hide.

APPEND st_fieldcat TO tbl_fieldcat.

CLEAR st_fieldcat.

ENDFORM. " write_fieldcat

&----


*& Form create_report

&----


  • Hummmm I wonder what this subroutine does?

----


FORM create_report.

  • Here we call the Function Module to create the Hierarchical

  • Sequential List

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_interface_check = ' '

i_callback_program = g_repid

i_callback_user_command = 'PROCESS_USER_COMMANDS'

is_layout = st_layout

it_fieldcat = tbl_fieldcat

it_sort = tbl_sort

i_default = 'X'

i_save = 'A'

  • is_variant = ' '

i_tabname_header = 'TBL_HEADER'

i_tabname_item = 'TBL_ITEM'

is_keyinfo = st_keyinfo

TABLES

t_outtab_header = tbl_header[]

t_outtab_item = tbl_item[]

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. " create_report

&----


*& Form get_keyinfo

&----


  • text

----


FORM get_keyinfo.

  • This defines the "link" between the "header" and "item" tables

st_keyinfo-header01 = 'VBELN'.

ENDFORM. " get_keyinfo

&----


*& Form get_sort

&----


  • text

----


FORM get_sort.

  • Here we sort the report by the Document Number...why not?

REFRESH tbl_sort.

CLEAR st_sort.

st_sort-spos = 1.

st_sort-fieldname = 'VBELN'.

st_sort-up = 'X'.

APPEND st_sort TO tbl_sort.

ENDFORM. " get_sort

----


  • FORM process_user_commands *

----


  • Interactive Reporting commands

----


  • --> SYST-UCOMM *

  • --> SELFIELD *

----


FORM process_user_commands USING syst-ucomm LIKE syst-ucomm

selfield TYPE slis_selfield.

  • This subroutine is called when there is user interaction in the output

  • In this case if the user double clicks the Document Number then the

  • program will call transaction VA03 and display the Sales Document

CASE syst-ucomm.

WHEN '&IC1'.

GET CURSOR FIELD field_name.

IF field_name = 'TBL_HEADER-VBELN'.

READ TABLE tbl_header INDEX selfield-tabindex.

CHECK tbl_header-vbeln NE 0.

SET PARAMETER ID 'AUN' FIELD tbl_header-vbeln.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

WHEN OTHERS.

ENDCASE.

ENDFORM. "process_user_commands

&----


*& Form get_layout

&----


  • text

----


FORM get_layout.

  • Here we manipulate the layout of the list. In this instance we are

  • giving the list a 'zebra' format. Once again like the field catalog

  • there are many more options available. Look at type slis_layout_alv

  • for more options.

CLEAR st_layout.

st_layout-zebra = 'X'.

ENDFORM.

<b>Reward if Helpful.</b>

Read only

Former Member
0 Likes
555

Hi

we can aceive this without Copying this Standard program.

There is an option to Convert this list to ALV LIST OR Grid.

In the Data browser Selection Screen

Menu path

Settings -> User Parameters

Select The Radio button ALV GRID or ALV List display.

And Execute.. Check the list now...

Reward Points if Helpful

Read only

Former Member
0 Likes
555

Hi Rahul,

Please use Hierarchical ALV.

Reward Points if useful.

Regards,

Shilpi