‎2007 Nov 05 6:38 AM
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
‎2007 Nov 05 6:46 AM
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>
‎2007 Nov 05 6:47 AM
‎2007 Nov 05 6:48 AM
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
‎2007 Nov 05 6:52 AM
Hi Rahul,
Please use Hierarchical ALV.
Reward Points if useful.
Regards,
Shilpi