‎2006 Nov 07 7:29 PM
I have one internal table like below:
DATE KUNNR Qty
21/11/2006 A 10
22/11/2006 A 100
23/11/2006 B 20
21/11/2006 B 100
from this internal table I want to display like this:
Date A B <= different kunnr becomes columns
21/11/2006 10 100
22/11/2006 100 0
23/11/2006 0 20
i have written creation of internal table. now i want to fill that internal table as shown above.
How can I do that?
this is the code:
REPORT zhkkdyntbl.
TYPE-POOLS:
slis.
DATA:
table LIKE dd02l-tabname,
fieldcat TYPE lvc_t_fcat,
gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
fcat TYPE lvc_s_fcat,
table_pointer TYPE REF TO data,
line_pointer TYPE REF TO data.
FIELD-SYMBOLS:
<table> TYPE STANDARD TABLE,
<line> TYPE ANY,
<field> TYPE ANY.
DATA:
BEGIN OF int_data OCCURS 0,
dt LIKE sy-datum,
kunnr LIKE kna1-kunnr,
qty LIKE vbrp-fkimg,
END OF int_data.
START-OF-SELECTION.
int_data-dt = '20061121'.
int_data-kunnr = 'A'.
int_data-qty = 10.
APPEND int_data.
CLEAR int_data.
int_data-dt = '20061122'.
int_data-kunnr = 'A'.
int_data-qty = 100.
APPEND int_data.
CLEAR int_data.
int_data-dt = '20061123'.
int_data-kunnr = 'B'.
int_data-qty = 20.
APPEND int_data.
CLEAR int_data.
int_data-dt = '20061122'.
int_data-kunnr = 'B'.
int_data-qty = 100.
APPEND int_data.
CLEAR int_data.
fcat-fieldname = 'DT'.
fcat-seltext = 'Date'.
APPEND fcat TO fieldcat.
CLEAR fcat.
SORT int_data BY kunnr.
LOOP AT int_data.
ON CHANGE OF int_data-kunnr.
fcat-fieldname = int_data-kunnr.
fcat-seltext = int_data-kunnr.
APPEND fcat TO fieldcat.
CLEAR fcat.
ENDON.
ENDLOOP.
*Create dynamic table in memory based upon fieldcat
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = fieldcat
IMPORTING
ep_table = table_pointer.
* pointer field symbol to internal table
ASSIGN table_pointer->* TO <table>.
‎2006 Nov 07 7:48 PM
Please add the following code in BOLD to your program.
*create dynamic table in memory based upon fieldcat
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = fieldcat
importing
ep_table = table_pointer.
* pointer field symbol to internal table
assign table_pointer->* to <table>.
<b> create data line_pointer like line of <table>.
assign line_pointer->* to <line>.
* Sort by date, customer,
sort int_data by dt kunnr.
* Build dynamic internal table
loop at int_data.
at new dt.
collect <line> into <table>.
clear <line>.
endat.
assign component 'DT' of structure <line> to <field>.
if sy-subrc = 0.
<field> = int_data-dt.
endif.
assign component int_data-kunnr of structure <line> to <field>.
if sy-subrc = 0.
<field> = int_data-qty.
endif.
at last.
collect <line> into <table>.
clear <line>.
endat.
endloop.
* Write out data from dynamic table.
loop at <table> into <line>.
do.
assign component sy-index of structure <line> to <field>.
if sy-subrc <> 0.
exit.
endif.
if sy-index = 1.
write:/ <field>.
else.
write: <field>.
endif.
enddo.
endloop.</b>
Regards,
Rich Heilman
‎2006 Nov 07 7:48 PM
Please add the following code in BOLD to your program.
*create dynamic table in memory based upon fieldcat
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = fieldcat
importing
ep_table = table_pointer.
* pointer field symbol to internal table
assign table_pointer->* to <table>.
<b> create data line_pointer like line of <table>.
assign line_pointer->* to <line>.
* Sort by date, customer,
sort int_data by dt kunnr.
* Build dynamic internal table
loop at int_data.
at new dt.
collect <line> into <table>.
clear <line>.
endat.
assign component 'DT' of structure <line> to <field>.
if sy-subrc = 0.
<field> = int_data-dt.
endif.
assign component int_data-kunnr of structure <line> to <field>.
if sy-subrc = 0.
<field> = int_data-qty.
endif.
at last.
collect <line> into <table>.
clear <line>.
endat.
endloop.
* Write out data from dynamic table.
loop at <table> into <line>.
do.
assign component sy-index of structure <line> to <field>.
if sy-subrc <> 0.
exit.
endif.
if sy-index = 1.
write:/ <field>.
else.
write: <field>.
endif.
enddo.
endloop.</b>
Regards,
Rich Heilman