Subtotals
Hi,
I am trying to build a query which has two characteristics and remaining key figures. I have specified the option never supress result rows for the characteristics.
Now when I run the query, it doesnt subtotal for the second characteristic, but gives the total result of all the 2nd characteristic for any value of the 1st characteristic. I want it to show the result of each of the 2nd char. instead of summing up all the 2nd char for a particular value of the 1st char.
Even for the 1st char. it just shows the result as the sum of all the 1st char and not the individual char.
Is there a way to show this. I hope I am clear.
Thanks in advance.
Hi,
<i>Now when I run the query, it doesnt subtotal for the second characteristic, but gives the total result of all the 2nd characteristic for any value of the 1st characteristic</i>
thats correct.
<i>I want it to show the result of each of the 2nd char. instead of summing up all the 2nd char for a particular value of the 1st char.</i>
i don't think it is possble with the available options.
thnaks
Similar Messages
-
In ALV report is possible to display the subtotals in separate column
Hi,
I have made one ALV report, i need to show the subtotals of ekpo-brtwr (Gross Value) grouped by or sorted by
ekko-ebeln (Purshasing Doc) but in separate column not at the end of the line items of each purshasing doc
any idea how can i do this?
let us say i have the following cols in my report:
ekko-bukrs
ekko-ebeln,
ekko-aedat,
kko-lifnr,
ekpo-brtwr
i want to add one more col for example (T-Gross) and to fill it with the suptotals of (ekpo-brtwr) sorted by the
ekko-ebeln (Purshasing Doc).
thanks a lot.If you need one more column, then you need to expand the field catalog table and data table as you did for all other fields and you need to code the logic to calculate the subtotals and populate the new column, but if you want to have row, that will be easy. For more info you can [refer |http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/4063c42a-2549-2c10-fab6-a8c99d98b9b5?quicklink=index&overridelayout=true]this:
-
ALV Totals , Subtotals for a particular field in ALV Grid report
Hi,
I have an issue in ALV totals and subtotals.
Scenario is like this.
i have a vendor data to be pulled out of SAP and to be shown in the form of report.
i am populating all the data and doing do_sum based on Vendor ( has expansin & collapse option ) and display the number of reports .
Vendor -
100
Vendor1 -
1
Vendor2----
2.
Vendor100----
100.
but my problem is in the same report i have a date field .
if i have a five vendors created on 03/03/2008. in the same report for the date field having ( expansion & collapse ) , when i expand based on that date can i be able to sum up all the vendors created on 03/03/2008 and display in the same report along with the vendor count.
Let me know . Thank you in advance
Regards,
RyHi Roby,
Have a look at this sample code
It will help u,
REPORT ZIN_FI_AGEING
message-id zbdc
no standard page heading.
Title : For Ageing Details
Author :
Date : 22/11/2004
Transport/Correction Id :
Clarify case ID :
Application : FI
Program Type :
Frequency :
Purpose :
Comments :
Request No :
TABLES DELCARATIONS
Tables: zzgeinz9a, "Actual line item table
t001. "Plants/Branches
ALV TTPE DELCARATIONS
type-pools: slis.
*Type Declarations for Field Catalog
data : i_fldcat_head type slis_t_fieldcat_alv,
wa_fldcat_head type slis_fieldcat_alv.
*Type Declarations for ALV Events
data : i_events type slis_t_event,
wa_event like line of i_events.
*Type Declarations for Layout Design
data : wa_layout type slis_layout_alv.
*Type Declarations for Sorting Fields
data: it_sort type slis_sortinfo_alv occurs 0 with header line.
*Type Declarations for Displaying Images on Grid
data : i_comment type slis_t_listheader,
wa_comment type slis_listheader.
*Type Declarations for Grouping fields
data : wa_group type slis_sp_group_alv,
i_group type slis_t_sp_group_alv.
DATA DELCARATIONS
data: v_flag, "Status Flag
v_repid like sy-repid, "Program Name
p_year(4) type c, "Year
v_due_days type i. "To hold the due days
CONSTANTS DELCARATIONS
constants: c_x type c value 'X',
c_bukrs(4) type c value '0373'.
INTERNAL TABLES DELCARATIONS
*--Internal table to hold the required data
data: begin of it_final_vendor occurs 0,
rzzlifnr like zzgeinz9a-rzzlifnr, "Vendor
name1 like lfa1-name1, "Vendor Name
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
belnr like bkpf-belnr, "FI Doc No
doc_date like bkpf-awkey, "Document Date
zbd1t like bsik-zbd1t, "Cash discount days 1
bldat like bkpf-bldat, "Document Date
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
not_due like zzgeinz9a-hsl, "Not Yet Due
hsl like zzgeinz9a-hsl, "local currency
found type c, "Existance Flag
end of it_final_vendor.
data: begin of it_final_vendor_temp occurs 0,
rzzlifnr like zzgeinz9a-rzzlifnr, "Vendor
name1 like lfa1-name1, "Vendor Name
belnr like bkpf-belnr, "FI Doc No
bldat like bkpf-bldat, "Document Date
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
hsl like zzgeinz9a-hsl, "local currency
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
not_due like zzgeinz9a-hsl, "Not Yet Due
buck_0_30 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_31_60 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_61_90 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_91_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
doc_date like bkpf-awkey, "Document Date
found type c, "Existance Flag
end of it_final_vendor_temp.
data: begin of it_final_customer occurs 0,
rzzkunnr like zzgeinz9a-rzzkunnr, "Customer
name1 like kna1-name1, "Customer Name
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
belnr like bkpf-belnr, "FI Doc No
doc_date like bkpf-awkey, "Document Date
zbd1t like bsik-zbd1t, "Cash discount days 1
bldat like bkpf-bldat, "Document Date
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
not_due like zzgeinz9a-hsl, "Not Yet Due
hsl like zzgeinz9a-hsl, "local currency
found type c, "Existance Flag
end of it_final_customer.
data: begin of it_final_customer_temp occurs 0,
rzzkunnr like zzgeinz9a-rzzkunnr, "Customer
name1 like kna1-name1, "Customer Name
belnr like bkpf-belnr, "FI Doc No
bldat like bkpf-bldat, "Document Date
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
hsl like zzgeinz9a-hsl, "local currency
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
not_due like zzgeinz9a-hsl, "Not Yet Due
buck_0_30 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_31_60 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_61_90 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_91_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
doc_date like bkpf-awkey, "Document Date
found type c, "Existance Flag
end of it_final_customer_temp.
*--Internal Table to hold the Cash discount days 1 for Vendors
data: begin of it_final_bsik occurs 0,
belnr like bsik-belnr,
zbd1t like bsik-zbd1t,
end of it_final_bsik.
*--Internal Table to hold the Cash discount days 1 for Customers
data: begin of it_final_bsid occurs 0,
belnr like bsid-belnr,
zbd1t like bsid-zbd1t,
end of it_final_bsid.
INITIALIZATION
v_repid = sy-repid.
SELECTION SCREEN
selection-screen: begin of block b1 with frame title text-h01.
selection-screen skip.
select-options: s_vendor for zzgeinz9a-rzzlifnr modif id ven.
parameters: p_comp1 like t001-bukrs modif id ven.
parameters: p_rundt1 like bkpf-bldat modif id ven.
select-options: s_cust for zzgeinz9a-rzzkunnr modif id cst.
parameters: p_comp2 like t001-bukrs modif id cst.
parameters: p_rundt2 like bkpf-bldat modif id cst.
selection-screen skip.
selection-screen: begin of block b2 with frame title text-h02.
parameters : p_vendor radiobutton group gr1 default 'X'
user-command test,
p_cust radiobutton group gr1.
selection-screen: end of block b2.
selection-screen: end of block b1.
**************************AT Selection Screen OutPut ******************
at selection-screen output.
loop at screen.
if p_cust = 'X'.
if screen-group1 = 'VEN'.
screen-active = '0'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '0'.
endif.
elseif p_vendor = 'X'.
if screen-group1 = 'CST'.
screen-active = '0'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '0'.
endif.
endif.
modify screen.
endloop.
SELECTION SCREEN ON
at selection-screen on s_vendor.
*--Validating Vendor
if not s_vendor[] is initial.
perform validate_s_vendor.
endif.
at selection-screen on s_cust.
*--Validating Customer
if not s_cust[] is initial.
perform validate_s_cust.
endif.
at selection-screen on p_comp1.
*--Validating Company Code.
if not p_comp1 is initial.
perform validate_p_comp1.
endif.
at selection-screen on p_comp2.
*--Validating Company Code.
if not p_comp2 is initial.
perform validate_p_comp2.
endif.
START OF SELECTION
start-of-selection.
if p_vendor = 'X'.
perform get_vendor_data.
elseif p_cust = 'X'.
perform get_customer_data.
endif.
END OF SELECTION
end-of-selection.
if p_vendor = 'X'.
*--Generating the output for vendor
perform generate_field_catalog_vendor.
perform get_events_vendor.
perform generate_layout_vendor.
perform generate_sort_vendor.
perform generate_group_vendor.
perform disp_alv_grid_vendor.
elseif p_cust = 'X'.
*--Generating the output for customer
perform generate_field_catalog_cust.
perform get_events_customer.
perform generate_layout_customer.
perform generate_sort_customer.
perform generate_group_customer.
perform disp_alv_grid_customer.
endif.
*& Form validate_s_vendor
Validating the Vendor
form validate_s_vendor.
select rzzlifnr up to 1 rows
into (zzgeinz9a-rzzlifnr)
from zzgeinz9a
where rzzlifnr in s_vendor.
endselect.
if sy-subrc ne 0.
message e004 with 'Invalid Range of Vendor'(002)
s_vendor-low 'To'(006) s_vendor-high.
endif.
endform. " validate_s_vendor
*& Form validate_s_cust
Validating the Customer
form validate_s_cust.
select rzzkunnr up to 1 rows
into (zzgeinz9a-rzzkunnr)
from zzgeinz9a
where rzzkunnr in s_cust.
endselect.
if sy-subrc ne 0.
message e004 with 'Invalid Range of Customer'(005)
s_cust-low 'To'(006) s_cust-high.
endif.
endform. " validate_s_cust
*& Form validate_p_comp1
Validating the Company Code
form validate_p_comp1.
select single bukrs
into (t001-bukrs)
from t001
where bukrs eq p_comp1.
if sy-subrc ne 0.
message e004 with 'Company Code'(004) p_comp1 'Does not Exists'(003)
endif.
endform. " validate_p_comp1
*& Form validate_p_comp2
Validating the Company Code
form validate_p_comp2.
select single bukrs
into (t001-bukrs)
from t001
where bukrs eq p_comp2.
if sy-subrc ne 0.
message e004 with 'Company Code'(004) p_comp2 'Does not Exists'(003)
endif.
endform. " validate_p_comp2
*& Form get_vendor_data
Getting the Vendor Related Docs
form get_vendor_data.
select a~rzzlifnr
b~name1
a~docnr
a~refdocnr
a~rzz_ebeln
a~hsl
into corresponding fields of table it_final_vendor
from zzgeinz9a as a
inner join lfa1 as b
on arzzlifnr = blifnr
where rzzlifnr in s_vendor
and rbukrs eq p_comp1.
if sy-subrc eq 0.
v_flag = 'X'.
p_year = sy-datum+0(4).
perform get_doc_date using p_comp1
p_year.
perform move_records.
sort it_final_vendor by rzzlifnr.
perform generate_data.
else.
v_flag = space.
endif.
endform. " get_vendor_data
*& Form get_customer_data
Getting the Customer Related Docs
form get_customer_data.
select a~rzzkunnr
b~name1
a~docnr
a~refdocnr
a~rzz_ebeln
a~hsl
into corresponding fields of table it_final_customer
from zzgeinz9a as a
inner join kna1 as b
on arzzkunnr = bkunnr
where rzzkunnr in s_cust
and rbukrs eq p_comp2.
if sy-subrc eq 0.
v_flag = 'X'.
p_year = sy-datum+0(4).
perform get_doc_date_cust using p_comp2
p_year.
perform move_records_cust.
sort it_final_customer by rzzkunnr.
perform generate_data_cust.
else.
v_flag = space.
endif.
endform. " get_customer_data
*& Form get_doc_date
Getting the Document Date and FI Doc No
-->P_P_COMP1 Company Code
-->P_P_YEAR Fiscal Year
form get_doc_date using p_p_comp1
p_p_year.
loop at it_final_vendor.
concatenate it_final_vendor-refdocnr '*' into
it_final_vendor-doc_date.
modify it_final_vendor index sy-tabix.
endloop.
clear it_final_vendor.
data: v_doc_date(11) type c,
v_belnr like bkpf-belnr,
v_bldat like bkpf-bldat.
loop at it_final_vendor.
concatenate it_final_vendor-refdocnr '%' into v_doc_date.
select single belnr
bldat
into corresponding fields of it_final_vendor
from bkpf
where bukrs eq p_p_comp1
and gjahr eq p_p_year
and awkey like v_doc_date.
modify it_final_vendor.
endloop.
clear:it_final_vendor.
endform. " get_doc_date
*& Form move_records
Moving records to final internal table
form move_records.
*--Checking the existance of belnr in bsik
clear it_final_vendor.
select belnr
zbd1t
into table it_final_bsik
from bsik
for all entries in it_final_vendor
where belnr eq it_final_vendor-belnr
and bukrs eq c_bukrs.
clear it_final_bsik.
loop at it_final_vendor.
read table it_final_bsik with key belnr = it_final_vendor-belnr.
if sy-subrc eq 0.
it_final_vendor-zbd1t = it_final_bsik-zbd1t.
it_final_vendor-due_date = it_final_vendor-bldat +
it_final_bsik-zbd1t.
it_final_vendor-found = 'X'.
modify it_final_vendor.
endif.
endloop.
endform. " move_records
*& Form generate_data
Segregating the records based on due_date
form generate_data.
delete it_final_vendor[] where found ne 'X'.
sort it_final_vendor by belnr.
loop at it_final_vendor.
if it_final_vendor-due_date > p_rundt1.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-not_due.
elseif it_final_vendor-due_date < p_rundt1.
it_final_vendor-due_days = p_rundt1 - it_final_vendor-DUE_DATE.
endif.
*--filling 0-30 bucket.
if it_final_vendor-due_days ge 0 AND it_final_vendor-due_days le 30.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_0_30.
*--filling 31-60 bucket.
elseif it_final_vendor-due_days ge 31 AND it_final_vendor-due_days le 60
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_31_60.
*--filling 61-90 bucket.
elseif it_final_vendor-due_days ge 61 AND it_final_vendor-due_days le 90
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_61_90.
*--filling 91-180 bucket.
elseif it_final_vendor-due_days ge 91 AND it_final_vendor-due_days
le 180.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_91_180.
*--filling 180 bucket.
elseif it_final_vendor-due_days gt 180.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_180.
endif.
append it_final_vendor_temp.
clear it_final_vendor_temp.
endloop.
endform. " generate_data
*& Form DISP_ALV_GRID_VENDOR
Displaying the output in grid For Vendor
form DISP_ALV_GRID_VENDOR.
*--Generating the OUTPUT GRID FOR VENDOR
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = wa_layout
IT_FIELDCAT = i_fldcat_head
IT_EXCLUDING =
IT_SPECIAL_GROUPS = i_group
IT_SORT = it_sort[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = i_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = it_final_vendor_temp
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. " DISP_ALV_GRID
*& Form get_doc_date_cust
text
-->P_P_COMP2 Company Code
-->P_P_YEAR Fiscal Year
form get_doc_date_cust using p_p_comp2
p_p_year.
loop at it_final_customer.
concatenate it_final_customer-refdocnr '*' into
it_final_customer-doc_date.
modify it_final_customer index sy-tabix.
endloop.
clear it_final_customer.
data: v_doc_date(11) type c,
v_belnr like bkpf-belnr,
v_bldat like bkpf-bldat.
loop at it_final_customer.
concatenate it_final_customer-refdocnr '%' into v_doc_date.
select single belnr
bldat
into corresponding fields of it_final_customer
from bkpf
where bukrs eq p_p_comp2
and gjahr eq p_p_year
and awkey like v_doc_date.
modify it_final_customer.
endloop.
clear:it_final_customer.
endform. " get_doc_date_cust
*& Form move_records_cust
Moving Customer Data to Final Internal Table
form move_records_cust.
*--Checking the existance of belnr in bsid
select belnr
zbd1t
into table it_final_bsid
from bsid
for all entries in it_final_customer
where belnr eq it_final_customer-belnr
and bukrs eq c_bukrs.
clear it_final_bsid.
loop at it_final_customer.
read table it_final_bsid with key belnr = it_final_customer-belnr.
if sy-subrc eq 0.
it_final_customer-zbd1t = it_final_bsid-zbd1t.
it_final_customer-due_date = it_final_customer-bldat +
it_final_bsid-zbd1t.
it_final_customer-found = 'X'.
modify it_final_customer.
endif.
endloop.
endform. " move_records_cust
*& Form generate_data_cust
Generating the Customer Output
form generate_data_cust.
delete it_final_customer[] where found ne 'X'.
sort it_final_customer by belnr.
loop at it_final_customer.
if it_final_customer-due_date > p_rundt2.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-not_due.
elseif it_final_customer-due_date < p_rundt2.
it_final_customer-due_days = p_rundt2 - it_final_customer-DUE_DATE.
endif.
*--filling 0-30 bucket.
if it_final_customer-due_days ge 0 AND it_final_customer-due_days le 30
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_0_30.
*--filling 31-60 bucket.
elseif it_final_customer-due_days ge 31 AND it_final_customer-due_days
le 60
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_31_60.
*--filling 61-90 bucket.
elseif it_final_customer-due_days ge 61 AND it_final_customer-due_days
le 90
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_61_90.
*--filling 91-180 bucket.
elseif it_final_customer-due_days ge 91 AND
it_final_customer-due_days
le 180.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_91_180.
*--filling 180 bucket.
elseif it_final_customer-due_days gt 180.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_180.
endif.
append it_final_customer_temp.
clear it_final_customer_temp.
endloop.
endform. " generate_data_cust
*& Form generate_field_catalog_vendor
Generating the Field Catalog for Vendor
form generate_field_catalog_vendor.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'IT_FINAL_VENDOR_TEMP'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = i_fldcat_head
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 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.
if not i_fldcat_head[] is initial.
loop at i_fldcat_head into wa_fldcat_head.
case wa_fldcat_head-fieldname.
when 'RZZLIFNR'.
wa_fldcat_head-col_pos = '1'.
wa_fldcat_head-ref_tabname = ' '.
wa_fldcat_head-seltext_m = 'Vendor No'(001).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
when 'NAME1'.
wa_fldcat_head-col_pos = '2'.
wa_fldcat_head-seltext_m = 'Vendor Name'(007).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '35'.
when 'BELNR'.
wa_fldcat_head-col_pos = '3'.
wa_fldcat_head-seltext_m = 'Invoice No'(008).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-KEY = ' '.
when 'BLDAT'.
wa_fldcat_head-col_pos = '4'.
wa_fldcat_head-seltext_m = 'Document Date'(009).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'RZZ_EBELN'.
wa_fldcat_head-col_pos = '5'.
wa_fldcat_head-seltext_m = 'PO.Ref.No'(010).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'HSL'.
wa_fldcat_head-col_pos = '6'.
wa_fldcat_head-seltext_m = 'Invoice Amount'(011).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DUE_DATE'.
wa_fldcat_head-col_pos = '7'.
wa_fldcat_head-seltext_m = 'Due Date'(012).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-ref_tabname = ' '.
when 'DUE_DAYS'.
wa_fldcat_head-col_pos = '8'.
wa_fldcat_head-seltext_m = 'Due Days'(013).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '9'.
when 'NOT_DUE'.
wa_fldcat_head-col_pos = '9'.
wa_fldcat_head-seltext_m = 'Not Due'(014).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_0_30'.
wa_fldcat_head-col_pos = '10'.
wa_fldcat_head-seltext_m = '0 To 30'(015).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_31_60'.
wa_fldcat_head-col_pos = '11'.
wa_fldcat_head-seltext_m = '31 To 60'(016).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_61_90'.
wa_fldcat_head-col_pos = '12'.
wa_fldcat_head-seltext_m = '61 To 90'(017).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_91_180'.
wa_fldcat_head-col_pos = '13'.
wa_fldcat_head-seltext_m = '91 To 180'(018).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_180'.
wa_fldcat_head-col_pos = '14'.
wa_fldcat_head-seltext_m = 'Beyond 180'(019).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'REFDOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'DOC_DATE'.
wa_fldcat_head-no_out = 'X'.
when 'FOUND'.
wa_fldcat_head-no_out = 'X'.
endcase.
modify i_fldcat_head from wa_fldcat_head index sy-tabix.
endloop.
endif.
endform. " generate_field_catalog_vendor
*& Form get_events_vendor
Getting ALV Events
form get_events_vendor.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
importing
et_events = i_events
exceptions
list_type_wrong = 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.
if not i_events[] is initial.
read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
wa_event-form = 'GENERATE_USERCOMMAND'.
modify i_events from wa_event index sy-tabix.
read table i_events into wa_event with key name = 'END_OF_LIST'(025)
wa_event-form = 'GENERATE_USERCOMMAND_FOOTER'.
modify i_events from wa_event index sy-tabix.
endif.
endform. " get_events_vendor
*& Form GENERATE_USERCOMMAND
Displaying Header-Text and Logo on Grid
form generate_usercommand .
clear i_comment[].
wa_comment-typ = 'H'.
wa_comment-info = 'Vendor Ageing Report'(026).
append wa_comment to i_comment.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = i_comment
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
endform. " GENERATE_USERCOMMAND
*& Form GENERATE_USERCOMMAND_FOOTER
Displaying Footer-Text on Grid
form generate_usercommand_footer.
clear i_comment[].
clear wa_comment.
wa_comment-typ = 'S'.
wa_comment-key = 'GE-Betz'(027).
append wa_comment to i_comment.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = i_comment
I_LOGO = ''
i_end_of_list_grid = 'X'.
endform. " GENERATE_USERCOMMAND_FOOTER
*& Form generate_layout_vendor
Generating the ALV Layout
form generate_layout_vendor.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "OPTIMIZING FIELD WIDTH
wa_layout-zebra = 'X'. "PUTTING ZEBRA COLORS
wa_layout-confirmation_prompt = 'X'. "DISPLAYS CONFIRMATION DIALOG
wa_layout-totals_text = 'Totals'(028). "DISPLAYS TOTALS TEXT
wa_layout-subtotals_text = 'Sub Totals'(029)."DISPLAYS SUBTOTALS TEXT
endform. " generate_layout_vendor
*& Form generate_sort_vendor
Sorting the Internal Table by Vendor
form generate_sort_vendor.
it_sort-fieldname = 'RZZLIFNR'.
it_sort-tabname = 'IT_FINAL_VENDOR_TEMP'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
append it_sort.
endform. " generate_sort_vendor
*& Form generate_group_vendor
Grouping the Data
form generate_group_vendor.
clear i_group.
wa_group-sp_group = 'A'.
wa_group-text = 'RZZLIFNR'.
append wa_group to i_group.
endform. " generate_group_vendor
*& Form GENERATE_FIELD_CATALOG_CUST
Generating Field Catalog for Customer
form GENERATE_FIELD_CATALOG_CUST.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'IT_FINAL_CUSTOMER_TEMP'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = i_fldcat_head
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 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.
if not i_fldcat_head[] is initial.
loop at i_fldcat_head into wa_fldcat_head.
case wa_fldcat_head-fieldname.
when 'RZZKUNNR'.
wa_fldcat_head-col_pos = '1'.
wa_fldcat_head-ref_tabname = ' '.
wa_fldcat_head-seltext_m = 'Customer No'(020).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
when 'NAME1'.
wa_fldcat_head-col_pos = '2'.
wa_fldcat_head-seltext_m = 'Customer Name'(021).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '35'.
when 'BELNR'.
wa_fldcat_head-col_pos = '3'.
wa_fldcat_head-seltext_m = 'Invoice No'(008).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-KEY = ' '.
when 'BLDAT'.
wa_fldcat_head-col_pos = '4'.
wa_fldcat_head-seltext_m = 'Document Date'(009).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'RZZ_EBELN'.
wa_fldcat_head-col_pos = '5'.
wa_fldcat_head-seltext_m = 'PO.Ref.No'(010).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'HSL'.
wa_fldcat_head-col_pos = '6'.
wa_fldcat_head-seltext_m = 'Invoice Amount'(011).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DUE_DATE'.
wa_fldcat_head-col_pos = '7'.
wa_fldcat_head-seltext_m = 'Due Date'(012).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-ref_tabname = ' '.
when 'DUE_DAYS'.
wa_fldcat_head-col_pos = '8'.
wa_fldcat_head-seltext_m = 'Due Days'(013).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '9'.
when 'NOT_DUE'.
wa_fldcat_head-col_pos = '9'.
wa_fldcat_head-seltext_m = 'Not Due'(014).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_0_30'.
wa_fldcat_head-col_pos = '10'.
wa_fldcat_head-seltext_m = '0 To 30'(015).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_31_60'.
wa_fldcat_head-col_pos = '11'.
wa_fldcat_head-seltext_m = '31 To 60'(016).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_61_90'.
wa_fldcat_head-col_pos = '12'.
wa_fldcat_head-seltext_m = '61 To 90'(017).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_91_180'.
wa_fldcat_head-col_pos = '13'.
wa_fldcat_head-seltext_m = '91 To 180'(018).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_180'.
wa_fldcat_head-col_pos = '14'.
wa_fldcat_head-seltext_m = 'Beyond 180'(019).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'REFDOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'DOC_DATE'.
wa_fldcat_head-no_out = 'X'.
when 'FOUND'.
wa_fldcat_head-no_out = 'X'.
endcase.
modify i_fldcat_head from wa_fldcat_head index sy-tabix.
endloop.
endif.
endform. " GENERATE_FIELD_CATALOG_CUST
*& Form get_events_customer
Getting ALV Events
form get_events_customer.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
importing
et_events = i_events
exceptions
list_type_wrong = 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.
if not i_events[] is initial.
read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
wa_event-form = 'GENERATE_USERCOMMAND_CUST'.
modify i_events from wa_event index sy-tabix.
read table i_events into wa_event with key na -
Hi
SAP Guru s
I am facing a dump when i pass the Gt_sort in reuse alv display FM
I am tryingto display the subtotals on the kunnr for dollars and count via ALV
following is the code
ur advice is highly appreciated
thanks
report orders .
DICTIONARY TABLES
tables: vbak, "Sales Document: Header Data
vbpa, "Sales Document: Partner
vbuk, "Sales Document: Header Status and Administrative Data
adrc.
ALV Declarations *
type-pools: slis, kkblo.
data: g_repid like sy-repid,
gs_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
fieldcat_in like line of gt_fieldcat,
cos_pos type i,
gt_events type slis_t_event,
gt_sort type slis_t_sortinfo_alv,
months like komp-anz_monate.
data: g_anzlines type i.
data : t_list_top_of_page type slis_t_listheader.
data : t_list_end_of_list type slis_t_listheader.
data : t_events type slis_t_event.
DATA
data: gv_netwr like vbak-netwr,
gv_netwr0 like vbak-netwr,
zvbeln like vbak-vbeln,
gv_count(6) type n,
gv_count0(6) type n,
erdat1 like vbak-erdat,
temp like vbak-erdat,
temp1(10),
erdat2 like vbak-erdat,
vkorg like vbak-vkorg,
erdat(25),
hyphen(3) value '---',
p_name1 like adrc-name1,
zlines type i,
g_tabix like sy-tabix,
month_nme(10),
zline type i,
gv_tot like vbak-netwr,
gv_kcount type i,
gv_ktot like vbak-netwr,
l_tabix like sy-tabix.
INTERNAL TABLES
data: begin of zvbak occurs 0,
vbeln like vbak-vbeln, "order no
erdat like vbak-erdat,
vgbel like vbak-vgbel, "reference doc num
netwr like vbak-netwr, " amount
end of zvbak.
data: zvbak0 like zvbak occurs 0 with header line.
data: begin of zvbpa occurs 0,
name1 like adrc-name1,
month(2),
vbeln like vbpa-vbeln,
parvw like vbpa-parvw, " partner function
kunnr like vbpa-kunnr,
adrnr like vbpa-adrnr,
netwr like vbak-netwr,
erdat like vbak-erdat,
end of zvbpa.
data: zvbpa0 like zvbpa occurs 0 with header line.
data: alv_dat like zvbpa occurs 0 with header line,
alv_data0 like zvbpa occurs 0 with header line.
data: begin of alv0 occurs 0,
kunnr like vbak-kunnr,
name1 like adrc-name1,
count type i,
dollars like vbak-netwr ,
kcount type i,
kdollars like vbak-netwr,
month_nme(10),
erdat like vbak-erdat,
netwr like vbak-netwr,
vbeln like vbpa-vbeln,
end of alv0.
data: begin of zvbuk occurs 0,
vbeln like vbak-vbeln,
netwr like vbak-netwr,
erdat like vbak-erdat,
end of zvbuk.
data: begin of ztab_period occurs 0,
sindex like scscp_period_str-sindex,
datuv like scscp_period_str-datuv,
datub like scscp_period_str-datub,
id like scscp_period_str-id,
name(10) type c,
end of ztab_period.
data: begin of ztab_perio0 occurs 0,
sindex like scscp_period_str-sindex,
datuv like scscp_period_str-datuv,
id like scscp_period_str-id,
name(10) type c,
end of ztab_perio0.
SELECTION SCREEN
selection-screen begin of block b with frame title text-001 .
select-options: s_erdat for vbak-erdat obligatory,
s_vkorg for vbak-vkorg obligatory.
selection-screen end of block b.
*INITIALIZATION.
initialization.
g_repid = sy-repid.
*START-OF-SELECTION.
start-of-selection.
data:t_index like sy-tabix.
perform select_orders tables alv_data0.
loop at alv_data0.
t_index = sy-tabix.
move alv_data0-erdat+4(2) to alv_data0-month.
modify alv_data0 index t_index transporting month.
clear alv_data0.
endloop.
sort alv_data0 by name1 month.
loop at alv_data0.
if alv_data0-name1 = space.
delete alv_data0.
endif.
move alv_data0-kunnr to alv0-kunnr.
at new name1.
move: alv_data0-name1 to alv0-name1.
endat.
gv_netwr = alv_data0-netwr + gv_netwr.
gv_count = gv_count + 1.
at end of month.
call function 'MONTH_TO_MONTHNAME'
exporting
monthnum = alv_data0-month
importing
monthname = month_nme.
move month_nme to alv0-month_nme.
move gv_count to alv0-count.
move gv_netwr to alv0-dollars.
append alv0.
clear: alv0, gv_netwr, gv_count.
endat.
endloop.
**END-OF-SELECTION.
end-of-selection.
loop at alv0 .
gv_tot = gv_tot + alv0-dollars.
endloop.
describe table alv0 lines g_anzlines.
if g_anzlines gt 0.
perform display_list.
endif.
*& Form select_orders
text
--> p1 text
<-- p2 text
form select_orders tables alv_dat structure zvbpa.
data: gv_index like sy-tabix,
ztab like ztab_period,
erdath like vbak-erdat,
erdat_h like vbak-erdat.
erdat1 = s_erdat-low(8).
erdath = s_erdat-high(8).
concatenate erdat1 hyphen erdat_h erdath into erdat.
vkorg = s_vkorg+3(4).
*calculate the no of orders and dollars month wise from the selection
*date
call function 'CSCP_PARA1_GET_PERIODS'
exporting
i_datuv = s_erdat-low
i_datub = s_erdat-high
i_timeunit = 'D'
tables
et_dates = ztab_period.
clear ztab_period.
clear gv_index.
describe table ztab_period lines zlines.
loop at ztab_period.
move-corresponding ztab_period to ztab_perio0.
append ztab_perio0.
clear ztab_perio0.
endloop.
sort ztab_perio0 by datuv.
loop at ztab_perio0.
if zlines = 2 and ztab_perio0-sindex = 1.
delete ztab_perio0.
clear ztab_perio0.
exit.
endif.
endloop.
*always delete first and last records in the internal table
loop at ztab_perio0.
if ( ztab_perio0-sindex = 1 ) .
delete ztab_perio0.
endif.
endloop.
*Assign Month name and calculate no of orders
clear gv_index.
clear: ztab, ztab_perio0.
describe table ztab_perio0 lines zline.
loop at ztab_perio0 into ztab.
gv_index = sy-tabix.
if ( ( ztab-datuv+4(2) = '01' ) or
( ztab-datuv+4(2) = '02' ) or
( ztab-datuv+4(2) = '03' ) or
( ztab-datuv+4(2) = '04' ) or
( ztab-datuv+4(2) = '05' ) or
( ztab-datuv+4(2) = '06' ) or
( ztab-datuv+4(2) = '07' ) or
( ztab-datuv+4(2) = '08' ) or
( ztab-datuv+4(2) = '09' ) or
( ztab-datuv+4(2) = '10' ) or
( ztab-datuv+4(2) = '11' ) or
( ztab-datuv+4(2) = '12' ) ).
erdat1 = ztab-datuv.
perform cal_no_of_orders tables alv_dat
using erdat1
changing gv_count0 gv_netwr0.
clear : erdat1 , ztab.
endif.
clear ztab.
endloop.
endform. " select_orders
*& Form DISPLAY_LIST
text
--> p1 text
<-- p2 text
form display_list.
g_repid = sy-repid.
sort alv0 by kunnr.
loop at alv0.
gv_ktot = gv_ktot + alv0-dollars.
gv_kcount = gv_kcount + alv0-count.
at end of kunnr.
move gv_ktot to alv0-kdollars.
move gv_kcount to alv0-kcount.
append alv0.
clear: alv0, gv_kcount, gv_ktot.
endat.
endloop.
perform fillevents.
perform comment_build using t_list_top_of_page.
perform create_layout.
perform create_fieldcat.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = g_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS = gs_settings
is_layout = gs_layout
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort[] ===========================>[ a dump is created here
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = 'A'
IS_VARIANT =
it_events = t_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = alv0
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. " DISPLAY_LIST
*& Form comment_build
text
-->P_t_list_top_of_page text
form comment_build using t_list_top_of_page type slis_t_listheader.
data : ls_line type slis_listheader.
data : ldate(10),hdate(10).
data : lv_dat(20).
clear lv_dat.
refresh : t_list_top_of_page.
clear ls_line.
ls_line-info = sy-repid.
ls_line-typ = 'H'.
ls_line-info = 'ORDERS AND DOLLARS REPORT'.
append ls_line to t_list_top_of_page.
write sy-datum to ldate using edit mask '__.__.____' .
clear ls_line.
ls_line-typ = 'A'.
concatenate 'Run Date :' ldate
into ls_line-info separated by space.
append ls_line to t_list_top_of_page.
clear ls_line.
ls_line-typ = 'A'.
ls_line-info = 'User ID :'.
ls_line-info+12 = sy-uname.
append ls_line to t_list_top_of_page.
clear ls_line.
ls_line-typ = 'A'.
ls_line-info = 'No OF ORDERS :'.
ls_line-info+17 = gv_count.
append ls_line to t_list_top_of_page.
clear ls_line.
ls_line-typ = 'A'.
ls_line-info = 'TOTAL dOLLAR AMOUNT :'.
ls_line-info+25 = gv_tot.
append ls_line to t_list_top_of_page.
clear ls_line.
concatenate s_erdat3(8) '----' s_erdat11(8) into lv_dat.
ls_line-typ = 'A'.
ls_line-info = 'Date Range for Documents :'.
ls_line-info+25 = lv_dat.
append ls_line to t_list_top_of_page.
clear ls_line.
ls_line-typ = 'A'.
ls_line-info = 'Sales Organization :'.
ls_line-info+25 = vkorg.
append ls_line to t_list_top_of_page.
endform. " comment_build
*& Form fillevents
text
--> p1 text
<-- p2 text
form fillevents.
data l_events type line of slis_t_event.
clear l_events.
l_events-name = 'TOP_OF_PAGE'.
l_events-form = 'TOP_OF_PAGE'.
append l_events to t_events.
*perform top-of-page1.
endform. " fillevents
*& Form create_fieldcat
text
--> p1 text
<-- p2 text
form create_fieldcat.
perform fill_fieldcat using:
'NAME1' 'ALV0' 'NAME' '1' '',
'MONTH_NME' 'ALV0' 'EDIMONTH' '2' '',
'DOLLARS' 'ALV0' 'DOLLARS' '3' '',
'COUNT' 'ALV0' 'COUNT' '4' ''.
endform. " create_fieldcat
*& Form create_layout
text
--> p1 text
<-- p2 text
form create_layout.
gs_layout-colwidth_optimize = 'X'.
gs_layout-zebra = 'X'.
gs_layout-no_totalline = 'X'.
endform. " create_layout
*& Form fill_fieldcat
text
-->P_0564 text
-->P_0565 text
-->P_0566 text
-->P_0567 text
-->P_0568 text
form fill_fieldcat using p_fname
p_tabname
p_seltext
p_colpos
p_do_sum.
clear fieldcat_in.
fieldcat_in-fieldname = p_fname.
fieldcat_in-tabname = p_tabname.
fieldcat_in-seltext_m = p_seltext.
fieldcat_in-col_pos = p_colpos.
fieldcat_in-do_sum = p_do_sum.
append fieldcat_in to gt_fieldcat.
clear fieldcat_in.
fieldcat_in-fieldname = 'DOLLARS'.
fieldcat_in-tabname = 'ALV0'.
fieldcat_in-no_out = ' '.
fieldcat_in-do_sum = 'X'. "SUM UPON DISPLAY
append fieldcat_in to gt_fieldcat.
clear fieldcat_in.
fieldcat_in-fieldname = 'COUNT'.
fieldcat_in-tabname = 'ALV0'.
fieldcat_in-no_out = ' '.
fieldcat_in-do_sum = 'X'. "SUM UPON DISPLAY
append fieldcat_in to gt_fieldcat.
data sorting and subtotal
data: gs_sort type slis_sortinfo_alv.
clear gs_sort.
gs_sort-tabname = 'ALV0'.
gs_sort-fieldname = 'KUNNR'.
gs_sort-spos = 1.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
gs_sort-tabname = 'ALV0'.
gs_sort-fieldname = 'DOLLARS'.
gs_sort-spos = 3.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
gs_sort-tabname = 'ALV0'.
gs_sort-fieldname = 'COUNT'.
gs_sort-spos = 4.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
Gs_layout-cell_merge = 'X'.
endform. " fill_fieldcat
*& Form TOP_OF_PAGE
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = t_list_top_of_page.
endform.
*& Form cal_no_of_orders
text
-->P_ALV_dat text
-->P_ERDAT1 text
<--P_KUNNR text
<--P_GV_COUNT text
<--P_GV_NETWR text
<--P_GV_NAME1 text
form cal_no_of_orders tables alv_tab structure zvbpa
using p_erdat1
changing p_gv_count
p_gv_netwr.
clear: alv_tab, p_gv_count, p_gv_netwr, g_tabix, zvbak, zvbpa.
refresh: zvbak, zvbpa.
data: g_tabix like sy-tabix,
gv_index like sy-tabix.
data: av_tab like zvbpa occurs 0 with header line.
*Select Orders Processed
select vbeln erdat netwr vgbel from vbak
into corresponding fields of table zvbak where
erdat = p_erdat1 and
vkorg in s_vkorg and
auart = 'ZEDI' and
( ( bsark = 'DFUA' ) or
( bsark = 'DFUE' ) or
( bsark = 'DFUI' ) ).
if sy-subrc = 0.
clear sy-subrc .
sort zvbak by vbeln.
select vbeln parvw kunnr adrnr from vbpa
into corresponding fields of table zvbpa
for all entries in zvbak
where vbeln = zvbak-vbeln
and parvw = 'AG'.
if sy-subrc = 0.
clear zvbpa.
loop at zvbpa.
g_tabix = sy-tabix.
read table zvbak with key vbeln = zvbpa-vbeln binary search.
if sy-subrc eq 0.
move :zvbak-netwr to zvbpa-netwr,
zvbak-erdat to zvbpa-erdat.
modify zvbpa index g_tabix.
endif.
select single name1 into (p_name1 )
from adrc
where addrnumber = zvbpa-adrnr.
if sy-subrc = 0.
move p_name1 to zvbpa-name1.
modify zvbpa index g_tabix.
endif.
endloop.
endif.
endif.
move Processed Orders to ALV display table
clear zvbpa.
loop at zvbpa.
move-corresponding zvbpa to alv_tab.
append alv_tab.
clear alv_tab.
endloop.
endform. " cal_no_of_orders<i></i>
Message was edited by:
sap learnerthis is the short dump
What happened?
The current application program detected a situation which really
should not occur. Therefore, a termination with a short dump was
triggered on purpose by the key word MESSAGE (type X).
What can you do?
0060 *" CHANGING
0070 *" VALUE(CT_SORT) TYPE LVC_T_SORT
0080 *"
0090 -

0100 FIELD-SYMBOLS: <LS_FIELDCAT> TYPE LVC_S_FCAT.
000110 DATA: LS_SORT TYPE LVC_S_SORT.
000120 DATA: LFLG_MODIFY(1) TYPE C.
000130 DATA: LFLG_EXPA_DEFAULT_SET(1) TYPE C.
000140 DATA: L_COUNT LIKE SY-TABIX.
000150
000160 SORT IT_FIELDCAT BY FIELDNAME.
000170 SORT CT_SORT STABLE BY SPOS ASCENDING.
000180 LOOP AT CT_SORT INTO LS_SORT.
000190 LS_SORT-SPOS = SY-TABIX.
000200 MODIFY CT_SORT FROM LS_SORT.
000210 ENDLOOP.
000220
000230 SORT CT_SORT BY SPOS DESCENDING.
000240
000250 * Default settings for subtotals
000260 READ TABLE CT_SORT WITH KEY COMP = 'X' TRANSPORTING NO FIELDS.
000270 IF SY-SUBRC NE 0.
000280 LFLG_MODIFY = 'X'.
000290 ENDIF.
000300
000310 LOOP AT CT_SORT INTO LS_SORT.
000320
000330 READ TABLE IT_FIELDCAT ASSIGNING <LS_FIELDCAT>
000340 WITH KEY FIELDNAME = LS_SORT-FIELDNAME BINARY SEARCH.
000350 IF SY-SUBRC NE 0.
> MESSAGE X000(0K).
000370 ENDIF.
000380
000390 LS_SORT-SELTEXT = <LS_FIELDCAT>-SELTEXT.
000400
000410 * Zwischensummenstufen ermitteln
000420 IF NOT LS_SORT-SUBTOT IS INITIAL.
000430 L_COUNT = L_COUNT + 1.
000440 ENDIF.
000450
000460 IF L_COUNT = 1 AND LFLG_EXPA_DEFAULT_SET = 'X'.
000470 LS_SORT-EXPA = 'X'.
000480 ENDIF.
000490 * Default setzten (s.o.)
000500 IF LFLG_MODIFY = 'X'.
000510 LS_SORT-COMP = 'X'.
000520 ENDIF.
000530
000540 MODIFY CT_SORT FROM LS_SORT.
000550 ENDLOOP. -
Short dump while export grid alv with subtotals.
hello,
its strange and i face first time that my grid alv report goin to short dump while i done subtotals and send it to local file thru export.
if am not doing subtotals then export it to local file it goin fine.
whats it has problem plz give ur helping hends.
here i copied a dump msg also.
Short text
Error at assignment: Overwritten protected field.
What happened?
Error in the ABAP Application Program
The current ABAP program "SAPLKKBL" had to be terminated because it has
come across a statement that unfortunately cannot be executed.
Error analysis
A new value is to be assigned to the field "<L_UNIT>", although this field is
entirely or partly protected against changes.
The following are protected against changes:
- Character literals or numeric literals
- Constants (CONSTANTS)
- Parameters of the category IMPORTING REFERENCE for functions and
methods
- Untyped field symbols not yet assigned a field using ASSIGN
- TABLES parameters if the actual parameter is protected against changes
- USING reference parameters and CHANGING parameters for FORMs, if the
actual parameter is protected against changes and
- Accesses using field symbols if the field assigned using ASSIGN is
protected (or partially protected, e.g. key components of an internal
table with the type SORTED or HASHED TABLE) against changes
- Accesses using references, if the field bound to the reference is
protected (or partially protected) against changes
- External write accesses to READ-ONLY attributes,
- Content of a shared object area instance accessed using a shared lock
(ATTACH_FOR_READ).
regards amit.& Object Id : &
& Object Name : &
& Function Module Name : Sales Register &
& Transaction Code : &
& Author : Amit gujargoud &
& Module Name : SD &
& Sub-Module : &
& Program Type : Dialog Create Date : 02/02/2007 &
& SAP Release : ECC 6.0 &
& Description : Sales Register - Detail &
*& Report ZSALESREGISTER
REPORT zsd_salesregister.
*& TYPE-POOLS
TYPE-POOLS : slis.
*& TABLES
TABLES: vbrp, "Billing Document: Item Data
vbrk, "Billing Document: Header Data
lips, "SD document: Delivery: Item data
lfa1, "Vendor Master (General Section)
kna1, "General Data in Customer Master
vbak, "Sales Document: Header Data
vbpa, "Sales Document: Partner (Gopal)
likp, "SD Document: Delivery Header Data
vbap, "Sales Document: Item Data
vbkd, "Sales Document: Business Data
mara. "General Material Data
*& DATA DECLARATION
DATA: BEGIN OF i_report OCCURS 100,
vbeln LIKE vbrp-vbeln, "Billing Document
posnr LIKE vbrp-posnr,
matnr LIKE mara-matnr ,
aubel LIKE vbrp-aubel, "Sales Document
fkimg LIKE vbrp-fkimg, "Actual billed quantity
vrkme LIKE vbrp-vrkme, "Sales unit
arktx LIKE vbrp-arktx, "Short text for sales order item
vgbel LIKE vbrp-vgbel, "Doc number of the reference document
werks LIKE vbap-werks,
vkgrp LIKE vbrp-vkgrp,
fklmg LIKE vbrp-fklmg,
volum LIKE vbrp-volum,
vkbur LIKE vbrp-vkbur,
vtweg_auft LIKE vbrp-vtweg_auft,
auart LIKE vbak-auart,
tabix LIKE sy-tabix, "Internal Table, Current Row Index
name1 LIKE kna1-name1, "Name1
exnum LIKE j_1iexchdr-exnum, "Official Excise Document Number
orqty TYPE p DECIMALS 0,
penqty TYPE p DECIMALS 0, "Cumulative order qty in sls units
openqty TYPE p DECIMALS 0, "Cumulative order qty in sls units
ean11 LIKE lips-ean11, "International Article No(EAN/UPC)
volum LIKE lips-volum,
lgmng LIKE lips-lgmng,
traid LIKE likp-traid,
ort01 LIKE lfa1-ort01, "City
lifnr LIKE lfa1-lifnr, "A/c Number of Vendor or Creditor
netwr LIKE vbrp-netwr, "Net val of bill item in doc currency
kunnr LIKE vbak-kunnr, "Sold-to party
adrnr LIKE vbpa-adrnr, "Address
city1 LIKE adrc-city1, "City
tprtr LIKE lfa1-name1, "Name 1
knumv LIKE konv-knumv, "Number of the document condition
kposn LIKE konv-kposn,
rate LIKE konv-kbetr, "Rate (cond amount or percentage)
bas_val LIKE konv-kwert, "Rate (cond amount or percentage)
exc_duty LIKE konv-kwert, "Rate (cond amount or percentage)
ed_cess LIKE konv-kwert, "Rate (cond amount or percentage)
freight LIKE konv-kwert, "Rate (cond amount or percentage)
pack LIKE konv-kwert, "Rate (cond amount or percentage)
cst LIKE konv-kwert, "Rate (cond amount or percentage)
vat LIKE konv-kwert, "Rate (cond amount or percentage)
ent_tax LIKE konv-kwert, "Rate (cond amount or percentage)
tot_inv LIKE konv-kwert, "Rate (cond amount or percentage)
tot_inv_round LIKE konv-kwert, "Rate (cond amount or percentage)
disc_tot LIKE konv-kwert, "Discount total - Z001 to Z020
vat_rate LIKE konv-kbetr,
cst_rate LIKE konv-kbetr,
lst_rate LIKE konv-kbetr,
mwsbk LIKE vbrk-mwsbk,
bas_tax LIKE konv-kwert,
dev_tax LIKE konv-kwert,
tcs_tax LIKE konv-kwert,
bas_tot LIKE konv-kwert,
lst LIKE konv-kwert,
vkorg LIKE vbak-vkorg,
mvgr1 LIKE mvke-mvgr1,
mvgr2 LIKE mvke-mvgr2,
mvgr3 LIKE mvke-mvgr3,
mvgr4 LIKE mvke-mvgr4,
mvgr5 LIKE mvke-mvgr5,
text1 LIKE tvm1t-bezei,
text2 LIKE tvm1t-bezei,
text3 LIKE tvm1t-bezei,
text4 LIKE tvm1t-bezei,
text5 LIKE tvm1t-bezei,
bismit_area TYPE p DECIMALS 4, " Size (L*B) in mm
face_area TYPE p DECIMALS 2, " Face Area Declaration
notional_area TYPE p DECIMALS 2,
stock_pcs TYPE p , " decimals 3 Pcs of Stock
labst LIKE mard-labst, " Valuated Unrestricted-Use Stock
bismt LIKE mara-bismt, " Size (L*B) in mm
normt LIKE mara-normt, " Industry Standard Description
temp TYPE p DECIMALS 2,
temp1 TYPE p DECIMALS 2,
temp2 TYPE p DECIMALS 2,
temp3 TYPE p DECIMALS 2,
temp4 TYPE p DECIMALS 2,
temp5 TYPE p DECIMALS 2,
temp6 TYPE p DECIMALS 2,
temp7 TYPE p DECIMALS 2,
temp8 TYPE p DECIMALS 2,
temp9 TYPE p DECIMALS 2,
temp10 TYPE p DECIMALS 2,
temp11 TYPE p DECIMALS 2,
temp12 TYPE p DECIMALS 2,
temp13 TYPE p DECIMALS 0,
temp14 TYPE p DECIMALS 0,
temp15 TYPE p DECIMALS 0,
temp16 TYPE p DECIMALS 2,
temp17 TYPE p DECIMALS 2,
temp18 TYPE p DECIMALS 2,
temp19 TYPE p DECIMALS 2,
temp20 TYPE p DECIMALS 2,
temp21 TYPE p DECIMALS 2,
waybill(20) TYPE c,
audat LIKE vbak-audat, "Document Date (Date Received/Sent)
lgort LIKE vbap-lgort, "Storage location
lgobe LIKE t001l-lgobe, "Description of storage location
erdat LIKE vbrk-erdat, "Date on which the record was created
exdat LIKE j_1iexchdr-exdat, "Excise Document Date
vbtyp LIKE vbak-vbtyp, "SD document category
acdt LIKE likp-wadat_ist, "Actual goods movement date
fkdat LIKE vbrk-fkdat,
ship LIKE kna1-name1, "Name1 (Ship-to party)
fksto LIKE vbrk-fksto,
fkart LIKE vbrk-fkart,
bezei LIKE t005u-bezei,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
matkl LIKE mara-matkl,
wgbez LIKE t023t-wgbez,
mtart LIKE mara-mtart,
labor LIKE mara-labor,
ferth LIKE mara-ferth,
lbtxt LIKE t024x-lbtxt,
niels LIKE kna1-niels,
kukla LIKE kna1-kukla,
desc LIKE tvkbt-bezei,
brsch LIKE kna1-brsch,
zeinr LIKE mara-zeinr,
bzirk LIKE vbrk-bzirk,
area_desc LIKE tnlst-bezei,
dist_desc TYPE tkukt-vtext,
taluka_desc TYPE t016t-brtxt,
sales_desc TYPE tvgrt-bezei,
kmein LIKE konv-kmein, "Sales Unit
challan LIKE likp-vbeln,
END OF i_report.
data for MVKE
DATA: BEGIN OF i_report_mvke OCCURS 0,
vbeln LIKE vbrp-vbeln, "Billing Document
aubel LIKE vbrp-aubel, "Sales Document
vkorg LIKE vbak-vkorg,
matnr LIKE mara-matnr ,
vtweg LIKE vbak-vtweg,
END OF i_report_mvke.
***********************TEMP COPY
DATA: BEGIN OF i_report_temp OCCURS 0,
vbeln LIKE vbrp-vbeln, "Billing Document
posnr LIKE vbrp-posnr,
matnr LIKE mara-matnr ,
aubel LIKE vbrp-aubel, "Sales Document
fkimg LIKE vbrp-fkimg, "Actual billed quantity
vrkme LIKE vbrp-vrkme, "Sales unit
arktx LIKE vbrp-arktx, "Short text for sales order item
vgbel LIKE vbrp-vgbel, "Doc number of the reference document
werks LIKE vbap-werks,
vkgrp LIKE vbrp-vkgrp,
fklmg LIKE vbrp-fklmg,
volum LIKE vbrp-volum,
vkbur LIKE vbrp-vkbur,
vtweg_auft LIKE vbrp-vtweg_auft,
auart LIKE vbak-auart,
tabix LIKE sy-tabix, "Internal Table, Current Row Index
name1 LIKE kna1-name1, "Name1
exnum LIKE j_1iexchdr-exnum, "Official Excise Document Number
orqty TYPE p DECIMALS 0,
penqty TYPE p DECIMALS 0, "Cumulative order qty in sls units
openqty TYPE p DECIMALS 0, "Cumulative order qty in sls units
ean11 LIKE lips-ean11, "International Article No(EAN/UPC)
volum LIKE lips-volum,
lgmng LIKE lips-lgmng,
traid LIKE likp-traid,
ort01 LIKE lfa1-ort01, "City
lifnr LIKE lfa1-lifnr, "A/c Number of Vendor or Creditor
netwr LIKE vbrp-netwr, "Net val of bill item in doc currency
kunnr LIKE vbak-kunnr, "Sold-to party
adrnr LIKE vbpa-adrnr, "Address
city1 LIKE adrc-city1, "City
tprtr LIKE lfa1-name1, "Name 1
knumv LIKE konv-knumv, "Number of the document condition
kposn LIKE konv-kposn,
rate LIKE konv-kbetr, "Rate (cond amount or percentage)
bas_val LIKE konv-kwert, "Rate (cond amount or percentage)
exc_duty LIKE konv-kwert, "Rate (cond amount or percentage)
ed_cess LIKE konv-kwert, "Rate (cond amount or percentage)
freight LIKE konv-kwert, "Rate (cond amount or percentage)
pack LIKE konv-kwert, "Rate (cond amount or percentage)
cst LIKE konv-kwert, "Rate (cond amount or percentage)
vat LIKE konv-kwert, "Rate (cond amount or percentage)
ent_tax LIKE konv-kwert, "Rate (cond amount or percentage)
tot_inv LIKE konv-kwert, "Rate (cond amount or percentage)
tot_inv_round LIKE konv-kwert, "Rate (cond amount or percentage)
disc_tot LIKE konv-kwert, "Discount total - Z001 to Z020
vat_rate LIKE konv-kbetr,
cst_rate LIKE konv-kbetr,
lst_rate LIKE konv-kbetr,
mwsbk LIKE vbrk-mwsbk,
bas_tax LIKE konv-kwert,
dev_tax LIKE konv-kwert,
tcs_tax LIKE konv-kwert,
bas_tot LIKE konv-kwert,
lst LIKE konv-kwert,
vkorg LIKE vbak-vkorg,
mvgr1 LIKE mvke-mvgr1,
mvgr2 LIKE mvke-mvgr2,
mvgr3 LIKE mvke-mvgr3,
mvgr4 LIKE mvke-mvgr4,
mvgr5 LIKE mvke-mvgr5,
text1 LIKE tvm1t-bezei,
text2 LIKE tvm1t-bezei,
text3 LIKE tvm1t-bezei,
text4 LIKE tvm1t-bezei,
text5 LIKE tvm1t-bezei,
bismit_area TYPE p DECIMALS 4, " Size (L*B) in mm
face_area TYPE p DECIMALS 2, " Face Area Declaration
notional_area TYPE p DECIMALS 2,
stock_pcs TYPE p , " decimals 3 Pcs of Stock
labst LIKE mard-labst, " Valuated Unrestricted-Use Stock
bismt LIKE mara-bismt, " Size (L*B) in mm
normt LIKE mara-normt, " Industry Standard Description
temp TYPE p DECIMALS 2,
temp1 TYPE p DECIMALS 2,
temp2 TYPE p DECIMALS 2,
temp3 TYPE p DECIMALS 2,
temp4 TYPE p DECIMALS 2,
temp5 TYPE p DECIMALS 2,
temp6 TYPE p DECIMALS 2,
temp7 TYPE p DECIMALS 2,
temp8 TYPE p DECIMALS 2,
temp9 TYPE p DECIMALS 2,
temp10 TYPE p DECIMALS 2,
temp11 TYPE p DECIMALS 2,
temp12 TYPE p DECIMALS 2,
temp13 TYPE p DECIMALS 0,
temp14 TYPE p DECIMALS 0,
temp15 TYPE p DECIMALS 0,
temp16 TYPE p DECIMALS 2,
temp17 TYPE p DECIMALS 2,
temp18 TYPE p DECIMALS 2,
temp19 TYPE p DECIMALS 2,
temp20 TYPE p DECIMALS 2,
temp21 TYPE p DECIMALS 2,
waybill(20) TYPE c,
audat LIKE vbak-audat, "Document Date (Date Received/Sent)
lgort LIKE vbap-lgort, "Storage location
lgobe LIKE t001l-lgobe, "Description of storage location
erdat LIKE vbrk-erdat, "Date on which the record was created
exdat LIKE j_1iexchdr-exdat, "Excise Document Date
vbtyp LIKE vbak-vbtyp, "SD document category
acdt LIKE likp-wadat_ist, "Actual goods movement date
fkdat LIKE vbrk-fkdat,
ship LIKE kna1-name1, "Name1 (Ship-to party)
fksto LIKE vbrk-fksto,
fkart LIKE vbrk-fkart,
bezei LIKE t005u-bezei,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
matkl LIKE mara-matkl,
wgbez LIKE t023t-wgbez,
mtart LIKE mara-mtart,
labor LIKE mara-labor,
ferth LIKE mara-ferth,
lbtxt LIKE t024x-lbtxt,
niels LIKE kna1-niels,
kukla LIKE kna1-kukla,
desc LIKE tvkbt-bezei,
brsch LIKE kna1-brsch,
zeinr LIKE mara-zeinr,
bzirk LIKE vbrk-bzirk,
area_desc LIKE tnlst-bezei,
dist_desc TYPE tkukt-vtext,
taluka_desc TYPE t016t-brtxt,
sales_desc TYPE tvgrt-bezei,
kmein LIKE konv-kmein, "Sales Unit
challan LIKE likp-vbeln,
END OF i_report_temp.
DATA: BEGIN OF i_vbap OCCURS 0 ,
posnr LIKE vbap-posnr,
vbeln LIKE vbap-vbeln ,
matnr LIKE vbap-matnr ,
werks LIKE vbap-werks,
kwmeng LIKE vbap-kwmeng,
lgort LIKE vbap-lgort,
matkl LIKE mara-matkl,
wgbez LIKE t023t-wgbez,
mtart LIKE mara-mtart,
END OF i_vbap .
DATA : w_temp_cal(20) TYPE c.
DATA : w_face_area TYPE p DECIMALS 4,
w_notinal_area TYPE p DECIMALS 4.
**MVKE
DATA: BEGIN OF itab_mvke OCCURS 0,
matnr LIKE mvke-matnr,
vkorg LIKE vbak-vkorg,
vtweg LIKE mvke-vtweg,
mvgr1 LIKE mvke-mvgr1,
mvgr2 LIKE mvke-mvgr2,
mvgr3 LIKE mvke-mvgr3,
mvgr4 LIKE mvke-mvgr4,
mvgr5 LIKE mvke-mvgr5,
END OF itab_mvke.
**TVM1T
DATA : BEGIN OF itab_tvm1t OCCURS 0,
spras LIKE tvm1t-spras,
mvgr1 LIKE tvm1t-mvgr1,
bezei LIKE tvm1t-bezei,
END OF itab_tvm1t.
DATA : BEGIN OF itab_tvm2t OCCURS 0,
spras LIKE tvm2t-spras,
mvgr2 LIKE tvm2t-mvgr2,
bezei LIKE tvm2t-bezei,
END OF itab_tvm2t.
DATA : BEGIN OF itab_tvm3t OCCURS 0,
spras LIKE tvm3t-spras,
mvgr3 LIKE tvm3t-mvgr3,
bezei LIKE tvm3t-bezei,
END OF itab_tvm3t.
DATA : BEGIN OF itab_tvm4t OCCURS 0,
spras LIKE tvm4t-spras,
mvgr4 LIKE tvm4t-mvgr4,
bezei LIKE tvm4t-bezei,
END OF itab_tvm4t.
DATA : BEGIN OF itab_tvm5t OCCURS 0,
spras LIKE tvm5t-spras,
mvgr5 LIKE tvm5t-mvgr5,
bezei LIKE tvm5t-bezei,
END OF itab_tvm5t.
DATA: itab_t024x TYPE STANDARD TABLE OF t024x WITH HEADER LINE,
it_report LIKE LINE OF i_report OCCURS 0,
i_mvke LIKE LINE OF itab_mvke OCCURS 0.
**VBKD
DATA: BEGIN OF i_vbkd OCCURS 0 ,
vbeln LIKE vbkd-vbeln ,
posnr LIKE vbkd-posnr ,
bzirk LIKE vbkd-bzirk ,
END OF i_vbkd .
DATA: BEGIN OF i_lips OCCURS 0,
vbeln LIKE lips-vbeln,
ean11 LIKE lips-ean11,
volum LIKE lips-volum,
lgmng LIKE lips-lgmng,
waybill(20) TYPE c,
END OF i_lips.
DATA: BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
rfbsk LIKE vbrk-rfbsk, "Status for transfer to accounting
erdat LIKE vbrk-erdat, "Dt on which the record was created
fkdat LIKE vbrk-fkdat, "CHANGE MADE BY PARTHA RAHAMAN
fksto LIKE vbrk-fksto, "GOPAL:: CANCELLED DOC. DO NOT PRNT.
netwr LIKE vbrk-netwr,
fkart LIKE vbrk-fkart, "Gopal:when billng typ=s1 do not pnt 1jul
knumv LIKE vbrk-knumv,
mwsbk LIKE vbrk-mwsbk,
bzirk LIKE vbrk-bzirk,
vtweg LIKE vbrk-vtweg,
spart LIKE vbrk-spart,
END OF i_vbrk.
*structure for MARD Table by kalika
DATA : BEGIN OF itab_mard OCCURS 0,
matnr LIKE mard-matnr,
werks LIKE mard-werks,
labst LIKE mard-labst, " Valuated Unrestricted-Use Stock
lgort LIKE mard-lgort, " Storage Location
END OF itab_mard.
*structure for MARD Table by kalika
DATA:BEGIN OF i_kna1 OCCURS 0,
vbeln LIKE vbak-vbeln,
name1 LIKE kna1-name1,
kunnr LIKE kna1-kunnr,
regio LIKE kna1-regio,
bezei LIKE t005u-bezei,
land1 LIKE kna1-land1,
vkgrp LIKE vbak-vkgrp,
niels LIKE kna1-niels,
kukla LIKE kna1-kukla,
brsch LIKE kna1-brsch,
vkbur LIKE vbak-vkbur,
END OF i_kna1.
DATA:BEGIN OF i_t005u OCCURS 0,
spras LIKE t005u-spras,
land1 LIKE t005u-land1,
bland LIKE t005u-bland,
bezei LIKE t005u-bezei,
END OF i_t005u.
DATA:BEGIN OF i_tnlst OCCURS 0,
spras LIKE t005u-spras,
niels LIKE tnlst-niels,
bezei LIKE t005u-bezei,
END OF i_tnlst.
DATA:BEGIN OF itab_tkukt OCCURS 0,
spras LIKE tkukt-spras,
kukla LIKE tkukt-kukla,
vtext LIKE tkukt-vtext,
END OF itab_tkukt.
DATA : BEGIN OF itab_t016t OCCURS 0,
spras LIKE t016t-spras,
brsch LIKE t016t-brsch,
brtxt LIKE t016t-brtxt,
END OF itab_t016t.
DATA : BEGIN OF itab_tvgrt OCCURS 0,
spras LIKE tvgrt-spras,
vkgrp LIKE tvgrt-vkgrp,
bezei LIKE tvgrt-bezei,
END OF itab_tvgrt.
*DATA: i_t005u TYPE STANDARD TABLE OF t005u WITH HEADER LINE.
DATA:BEGIN OF i_kna2 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1, " For Ship-to-Party
END OF i_kna2.
DATA:BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
vbtyp LIKE vbak-vbtyp,
audat LIKE vbak-audat,
auart LIKE vbak-auart,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
vkbur LIKE vbak-vkbur,
vkorg LIKE vbak-vkorg,
END OF i_vbak.
DATA:BEGIN OF i_adrc OCCURS 0,
vbeln LIKE vbpa-vbeln,
kunnr LIKE kna1-kunnr,
city1 LIKE adrc-city1,
name1 LIKE kna1-name1, "Name1 (Ship-to party)
END OF i_adrc.
DATA:BEGIN OF i_lfa1 OCCURS 0,
lifnr LIKE vbpa-lifnr,
vbeln LIKE vbpa-vbeln,
name1 LIKE lfa1-name1,
END OF i_lfa1.
DATA : BEGIN OF it_knumv OCCURS 0,
vbeln LIKE vbrk-vbeln,
knumv LIKE vbrk-knumv,
END OF it_knumv.
DATA : BEGIN OF it_rate OCCURS 0,
ksteu LIKE konv-ksteu, "Condition control
knumv LIKE konv-knumv, "Number of the document condition
kschl LIKE konv-kschl, "Condition type
kbetr LIKE konv-kbetr, "Rate (condition amount or percentage)
kwert LIKE konv-kwert, "Condition value
kposn LIKE konv-kposn,
kmein LIKE konv-kmein, "Sales Unit
END OF it_rate.
DATA: BEGIN OF itab_exnum OCCURS 0,
exnum LIKE j_1iexchdr-exnum, "Official Excise Document Number
exdat LIKE j_1iexchdr-exdat, "Excise Document Date
rdoc LIKE j_1iexchdr-rdoc, "Reference Document 1
status LIKE j_1iexchdr-status,
END OF itab_exnum.
DATA: BEGIN OF itab_qty OCCURS 0,
kwmeng LIKE vbap-kwmeng,
vbeln LIKE vbap-vbeln,
lgort LIKE vbap-lgort,
END OF itab_qty.
*DATA: BEGIN OF i_stloc OCCURS 0,
lgort LIKE t001l-lgort,
lgobe LIKE t001l-lgobe,
END OF i_stloc.
DATA:t_line LIKE STANDARD TABLE OF tline INITIAL SIZE 0
WITH HEADER LINE,
" itab_tvkbt LIKE STANDARD TABLE OF tvkbt WITH HEADER LINE,
w_tdname LIKE thead-tdname.
DATA : BEGIN OF itab_tvkbt OCCURS 0,
spras LIKE tvkbt-spras,
vkbur LIKE tvkbt-vkbur,
bezei LIKE tvkbt-bezei,
END OF itab_tvkbt.
DATA: BEGIN OF i_exchdr OCCURS 0,
exnum LIKE j_1iexchdr-exnum,
exdat LIKE j_1iexchdr-exdat,
rdoc LIKE j_1iexchdr-rdoc,
END OF i_exchdr.
DATA: BEGIN OF i_likp OCCURS 0,
vbeln LIKE likp-vbeln,
wadat_ist LIKE likp-wadat_ist,
traid LIKE likp-traid,
bolnr LIKE likp-bolnr,
END OF i_likp.
DATA: BEGIN OF i_mara OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
mtart LIKE mara-mtart,
labor LIKE mara-labor,
wgbez LIKE t023t-wgbez,
bismt LIKE mara-bismt,
normt LIKE mara-normt,
ferth LIKE mara-ferth,
zeinr LIKE mara-zeinr,
extwg LIKE mara-extwg,
spart LIKE mara-spart,
END OF i_mara.
DATA: BEGIN OF i_t023t OCCURS 0,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF i_t023t.
DATA : var_length(20) TYPE c,
var_breadth(20) TYPE c.
DATA: p_w_value LIKE konv-kwert.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv, " Event for Table to creater fieldcatalog
wa_fieldcat LIKE LINE OF it_fieldcat, " Work Area for table field catalog
lt_top_of_page TYPE slis_t_listheader, " Header table for top of page
i_layout TYPE slis_layout_alv . " It will fill the layout
gt_event TYPE slis_t_event. " Table Event
*DATA :
"itab_tnlst TYPE STANDARD TABLE OF tnlst WITH HEADER LINE,
" itab_tkukt TYPE STANDARD TABLE OF tkukt WITH HEADER LINE,
*" itab_t016t TYPE STANDARD TABLE OF t016t WITH HEADER LINE,
itab_tvgrt TYPE STANDARD TABLE OF tvgrt WITH HEADER LINE.
*& SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK block
WITH FRAME TITLE text-100.
SELECT-OPTIONS: s_date FOR vbrk-fkdat OBLIGATORY,
s_vkbur FOR vbak-vkbur OBLIGATORY,
s_vtweg FOR vbrk-vtweg OBLIGATORY,
s_werks FOR vbap-werks,
s_spart FOR vbrk-spart OBLIGATORY,
s_matkl FOR mara-matkl.
PARAMETERS:
r_opt3 RADIOBUTTON GROUP grp1,
r_opt2 RADIOBUTTON GROUP grp1.
r_opt4 RADIOBUTTON GROUP grp1,
r_opt5 RADIOBUTTON GROUP grp1,
r_opt1 RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK block.
*& INITIALIZATION
INITIALIZATION.
r_opt2 = 'X'.
*& START-OF-SELECTION.
START-OF-SELECTION.
*select data from VBRP
SELECT vbeln
posnr
matnr
aubel
fkimg
vrkme
arktx
vgbel
werks
vkgrp
fklmg
volum
vkbur
vtweg_auft
FROM vbrp
INTO TABLE i_report
WHERE "erdat IN s_date
AND spart IN s_spart
vkbur IN s_vkbur
AND vtweg_auft IN s_vtweg.
**logic for Pending, Summary & Detail Report
IF
r_opt1 EQ 'X' OR
r_opt2 EQ 'X' OR
r_opt3 EQ 'X'.
SELECT vbeln
rfbsk
erdat
fkdat
fksto
netwr
fkart
knumv
mwsbk
bzirk
vtweg
spart
FROM vbrk INTO TABLE i_vbrk
FOR ALL ENTRIES IN i_report
WHERE "vbeln = i_report-vbeln
" and
fkdat IN s_date
AND fkart IN ('ZBHR', 'ZTZT', 'ZKRP', 'ZRUD', 'ZBSR',
'ZGHT', 'ZKOL', 'ZPTN', 'ZRNC', 'ZCND',
'ZDLH', 'ZGZB', 'ZGUR', 'ZHSR', 'ZJPR',
'ZLKW', 'ZBLR', 'ZCHN', 'ZCBM', 'ZHUB',
'ZHYD', 'ZKOC', 'ZAHD', 'ZIND', 'ZMUM',
*********************MODIFICATION BY CHAKRAPANI (ADDITION OF ZVIJ AND ZHWH ) 18.05.2007
'ZNGP', 'ZPNE', 'ZRPR' , 'ZEXP', 'ZDEM','ZVIJ', 'ZHWH','JEX' )
*********************MODIFICATION BY CHAKRAPANI (ADDITION OF ZVIJ AND ZHWH ) 18.05.2007
AND vtweg IN s_vtweg
AND spart IN s_spart
AND fksto NE 'X'.
IF i_vbrk[] IS NOT INITIAL.
SELECT vbeln
posnr
matnr
aubel
fkimg
vrkme
arktx
vgbel
werks
vkgrp
fklmg
volum
vkbur
vtweg_auft
FROM vbrp
INTO TABLE i_report
FOR ALL ENTRIES IN i_vbrk
WHERE vbeln = i_vbrk-vbeln "erdat IN s_date
AND spart IN s_spart
AND vkbur IN s_vkbur
AND vtweg_auft IN s_vtweg.
ENDIF.
ELSEIF r_opt4 EQ 'X' OR
r_opt5 EQ 'X'.
SELECT vbeln
rfbsk
erdat
fkdat
fksto
netwr
fkart
knumv
mwsbk
bzirk
vtweg
spart
FROM vbrk INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk INTO TABLE i_vbrk
FOR ALL ENTRIES IN i_report
WHERE vbeln = i_report-vbeln
AND fkart EQ 'ZEXP'
AND vtweg IN s_vtweg
AND spart IN s_spart
AND fksto NE 'X'.
ENDIF.
SORT i_vbrk BY vbeln ASCENDING.
ENDIF.
change amit by my self may be removed
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
SORT it_report BY aubel.
*select VBAP data
SELECT posnr vbeln matnr werks
kwmeng lgort
FROM vbap
INTO TABLE i_vbap
FOR ALL ENTRIES IN it_report
WHERE vbeln = it_report-aubel.
ENDIF.
change amit by my self may be removed
*select data from VBKD
IF NOT i_vbap[] IS INITIAL.
SELECT vbeln posnr
FROM vbkd
INTO TABLE i_vbkd
FOR ALL ENTRIES IN i_vbap
WHERE vbeln = i_vbap-vbeln.
ENDIF.
SORT i_vbap BY vbeln ASCENDING.
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
DELETE ADJACENT DUPLICATES FROM it_report COMPARING matnr.
SORT it_report BY matnr.
SELECT
matnr
matkl
mtart
labor
bismt
normt
ferth
zeinr
extwg
spart
FROM mara
INTO TABLE i_mara
FOR ALL ENTRIES IN i_report
WHERE matnr = i_report-matnr
AND spart IN s_spart.
ENDIF.
IF NOT i_mara[] IS INITIAL.
SORT i_mara BY matnr.
SELECT matnr
labst
FROM mard
INTO TABLE itab_mard
FOR ALL ENTRIES IN i_mara
WHERE matnr = i_mara-matnr.
ENDIF.
ENDIF.
DATA : it_mara LIKE LINE OF i_mara OCCURS 0.
IF NOT i_mara[] IS INITIAL.
REFRESH it_mara.
it_mara[] = i_mara[].
DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matkl.
SORT it_mara BY matkl.
SELECT matkl wgbez
FROM t023t
INTO TABLE i_t023t
FOR ALL ENTRIES IN it_mara
WHERE matkl = it_mara-matkl.
*T024X
REFRESH it_mara.
it_mara[] = i_mara[].
DELETE ADJACENT DUPLICATES FROM it_mara COMPARING labor.
SORT it_mara BY labor.
SELECT * FROM t024x
INTO TABLE itab_t024x
FOR ALL ENTRIES IN it_mara
WHERE labor = it_mara-labor
AND spras = sy-langu.
ENDIF.
*begin of change amit
LOOP AT i_vbap.
READ TABLE i_mara WITH KEY matnr = i_vbap-matnr.
IF sy-subrc = 0.
*material type & material group
i_vbap-mtart = i_mara-mtart.
i_vbap-matkl = i_mara-matkl.
ENDIF.
MODIFY i_vbap.
ENDLOOP.
*Material Group Description
*end of change amit
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
DELETE ADJACENT DUPLICATES FROM it_report COMPARING vgbel.
SORT it_report BY vgbel.
SELECT vbeln
ean11
volum
lgmng
FROM lips
INTO TABLE i_lips
FOR ALL ENTRIES IN it_report
WHERE vbeln = it_report-vgbel.
ENDIF.
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
SORT it_report BY vgbel.
DELETE ADJACENT DUPLICATES FROM it_report COMPARING vgbel.
IF i_lips[] IS NOT INITIAL.
SELECT vbeln
wadat_ist
traid
bolnr
FROM likp
INTO TABLE i_likp
FOR ALL ENTRIES IN it_report
WHERE vbeln = it_report-vgbel.
ENDIF.
SORT i_lips BY vbeln ASCENDING.
LOOP AT i_lips.
REFRESH t_line.
CLEAR w_tdname.
w_tdname = i_lips-vbeln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'ZVOW'
language = sy-langu
name = w_tdname
object = 'VBBK'
TABLES
lines = t_line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT t_line.
CONCATENATE i_lips-waybill t_line-tdline INTO i_lips-waybill.
ENDLOOP.
IF sy-subrc EQ 0.
MODIFY i_lips.
ENDIF.
ENDLOOP.
*IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
SORT it_report BY aubel.
DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
SELECT a~vbeln
b~name1
b~kunnr
b~regio
b~land1
a~vkgrp
b~niels
b~kukla
b~brsch
a~vkbur
FROM vbak AS a
INNER JOIN kna1 AS b
ON akunnr = bkunnr
INTO TABLE i_kna1
FOR ALL ENTRIES IN i_report
WHERE vbeln = i_report-aubel.
AND land1 = 'IN'.
*endif.
DATA : it_kna1 LIKE LINE OF i_kna1 OCCURS 0.
IF NOT i_kna1[] IS INITIAL.
REFRESH it_kna1.
it_kna1[] = i_kna1[].
SORT it_kna1 BY regio.
DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING regio.
SELECT spras
land1
bland
bezei FROM t005u
INTO TABLE i_t005u
FOR ALL ENTRIES IN it_kna1
WHERE bland = it_kna1-regio
AND spras = 'EN' AND land1 = 'IN'.
REFRESH it_kna1.
it_kna1[] = i_kna1[].
SORT it_kna1 BY niels.
DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING niels.
SELECT spras niels bezei FROM tnlst
INTO TABLE i_tnlst
FOR ALL ENTRIES IN it_kna1
WHERE niels = it_kna1-niels
AND spras = sy-langu.
REFRESH it_kna1.
it_kna1[] = i_kna1[].
SORT it_kna1 BY kukla.
DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING kukla.
SELECT spras kukla vtext FROM tkukt
INTO TABLE itab_tkukt
FOR ALL ENTRIES IN it_kna1
WHERE kukla = it_kna1-kukla
AND spras = sy-langu.
REFRESH it_kna1.
it_kna1[] = i_kna1[].
SORT it_kna1 BY brsch.
DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING brsch.
SELECT spras brsch brtxt FROM t016t
INTO TABLE itab_t016t
FOR ALL ENTRIES IN it_kna1
WHERE brsch = it_kna1-brsch
AND spras = sy-langu.
REFRESH it_kna1.
it_kna1[] = i_kna1[].
SORT it_kna1 BY vkgrp.
DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING vkgrp.
SELECT spras vkgrp bezei FROM tvgrt
INTO TABLE itab_tvgrt
FOR ALL ENTRIES IN it_kna1
WHERE vkgrp = it_kna1-vkgrp
AND spras = sy-langu.
ENDIF.
SORT i_kna1 BY vbeln ASCENDING.
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
SORT it_report BY aubel.
DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
SELECT a~vbeln
a~kunnr
b~city1
FROM vbpa AS a
INNER JOIN adrc AS b
ON aadrnr = baddrnumber
INTO TABLE i_adrc
FOR ALL ENTRIES IN it_report
WHERE vbeln = it_report-aubel
AND parvw = 'WE'.
SORT i_adrc BY vbeln ASCENDING.
ENDIF.
DATA : it_adrc LIKE LINE OF i_adrc OCCURS 0.
IF i_adrc[] IS NOT INITIAL.
REFRESH it_adrc.
it_adrc[] = i_adrc[].
SORT it_adrc BY kunnr.
DELETE ADJACENT DUPLICATES FROM it_adrc COMPARING kunnr.
SELECT kunnr name1
FROM kna1
INTO TABLE i_kna2
FOR ALL ENTRIES IN it_adrc
WHERE kunnr = it_adrc-kunnr.
ENDIF.
SELECT a~lifnr
a~vbeln
b~name1
FROM vbpa AS a
INNER JOIN lfa1 AS b
ON alifnr = blifnr
INTO TABLE i_lfa1
FOR ALL ENTRIES IN i_report
WHERE vbeln = i_report-vgbel
AND parvw = 'SP'.
SORT i_lfa1 BY vbeln ASCENDING.
change amit by my self may be removed
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
SORT it_report BY vbeln.
DELETE ADJACENT DUPLICATES FROM it_report COMPARING vbeln.
SELECT exnum
exdat
rdoc
status
FROM j_1iexchdr
INTO TABLE itab_exnum
FOR ALL ENTRIES IN it_report
WHERE rdoc = it_report-vbeln AND status = 'P' OR status = 'C' .
ENDIF.
change amit by my self may be removed
change amit by my self may be removed
IF i_report[] IS NOT INITIAL.
REFRESH it_report.
it_report[] = i_report[].
SORT it_report BY aubel.
DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
SELECT kwmeng
vbeln
lgort
FROM vbap
INTO TABLE itab_qty
FOR ALL ENTRIES IN it_report
WHERE vbeln = it_report-aubel.
ENDIF.
change amit by my self may be removed
SORT itab_qty BY vbeln.
CHECK NOT i_vbrk[] IS INITIAL.
SORT i_report BY vbeln.
DATA : t_vbrk LIKE LINE OF i_vbrk OCCURS 0.
REFRESH t_vbrk.
t_vbrk[] = i_vbrk[].
SORT t_vbrk BY knumv.
DELETE ADJACENT DUPLICATES FROM t_vbrk COMPARING knumv.
SELECT ksteu
knumv
kschl
kbetr
kwert
kposn
kmein
FROM konv
INTO TABLE it_rate
FOR ALL ENTRIES IN t_vbrk
WHERE knumv = t_vbrk-knumv
AND kschl IN ('ZR00', "Basic Price
'ZR01', "Basic Price
'ZR02', "Basic Price
'ZR03', "Basic Price
'ZR04', "Basic Price
'ZR05', "Basic Price
'JEXP', "Excise
'JECS', "ED
'ZG03', "Freight
'ZG04', "Freight
'JCST', "CST
'JLST', "LST
'ZDEV', "Dev Tax
'Z001', "Discount
'Z002', "Discount
'Z003', "Discount
'Z004', "Discount
'Z005', "Discount
'Z006', "Discount
'Z007', "Discount -
hi ,
i need to find subtotals in alv
Please suggest me on how to proceed on this.
Any sample code would be appreciated.
thanks n regards,
kalyanHi Kalyan,
Try this sample code. It may help you.
the code below produces alv display with 2 columns: field1 & field2.
field1 is character based & the int. table passed to the alv is sorted on this field.
field2 is numeric, whose subtotals are desired.
so while populating the gt_sort table the option gs_sort-subtot is set for field1 bcoz the subtotals are to be based on the groups existing in this column.whereas the same option is NOT set for field2, even though the subtotal appears in that column.i have marked these 2 statements in the code for your convenience.
execute the code below & you will surely understand what i said above.
bye!!
report zalv10.
type-pools: slis.
data: g_repid like sy-repid,
gs_print type slis_print_alv,
gt_list_top_of_page type slis_t_listheader,
gt_events type slis_t_event,
gt_sort type slis_t_sortinfo_alv,
gs_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
fieldcat_ln like line of gt_fieldcat,
col_pos type i.
data: begin of itab,
field1(5) type c,
field2(5) type c,
field3(5) type p decimals 2,
end of itab.
data: begin of itab1 occurs 0.
include structure itab.
data: end of itab1.
data: begin of itab_fieldcat occurs 0.
include structure itab.
data: end of itab_fieldcat.
Print Parameters
parameters:
p_print as checkbox default ' ', "PRINT IMMEDIATE
p_nosinf as checkbox default 'X', "NO SELECTION INFO
p_nocove as checkbox default ' ', "NO COVER PAGE
p_nonewp as checkbox default ' ', "NO NEW PAGE
p_nolinf as checkbox default 'X', "NO PRINT LIST INFO
p_reserv type i. "NO OF FOOTER LINE
initialization.
g_repid = sy-repid.
perform print_build using gs_print. "Print PARAMETERS
start-of-selection.
TEST DATA
move 'TEST1' to itab1-field1.
move 'TEST1' to itab1-field2.
move '10.00' to itab1-field3.
append itab1.
move 'TEST2' to itab1-field1.
move 'TEST2' to itab1-field2.
move '20.00' to itab1-field3.
append itab1.
do 50 times.
append itab1.
enddo.
end-of-selection.
perform build.
perform eventtab_build changing gt_events.
perform comment_build changing gt_list_top_of_page.
perform call_alv.
form build.
DATA FIELD CATALOG
Explain Field Description to ALV
data: fieldcat_in type slis_fieldcat_alv.
clear fieldcat_in.
fieldcat_ln-fieldname = 'FIELD1'.
fieldcat_ln-tabname = 'ITAB1'.
*FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
fieldcat_ln-key = ' '. "SUBTOTAL KEY
fieldcat_ln-no_out = ' '.
fieldcat_ln-seltext_l = 'HEAD1'.
append fieldcat_ln to gt_fieldcat.
clear fieldcat_in.
fieldcat_ln-fieldname = 'FIELD2'.
fieldcat_ln-tabname = 'ITAB1'.
fieldcat_ln-no_out = 'X'.
fieldcat_ln-seltext_l = 'HEAD2'.
append fieldcat_ln to gt_fieldcat.
clear fieldcat_in.
fieldcat_ln-fieldname = 'FIELD3'.
fieldcat_ln-tabname = 'ITAB1'.
fieldcat_ln-ref_fieldname = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
fieldcat_ln-ref_tabname = 'MSEG'. "<- REF TABLE IN THE DICTIONNARY
fieldcat_ln-no_out = ' '.
fieldcat_ln-do_sum = 'X'. "SUM UPON DISPLAY
append fieldcat_ln to gt_fieldcat.
DATA SORTING AND SUBTOTAL
data: gs_sort type slis_sortinfo_alv.
clear gs_sort.
gs_sort-fieldname = 'FIELD1'.
gs_sort-spos = 1.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
***CRUCIAL STATEMENT****
append gs_sort to gt_sort.
clear gs_sort.
gs_sort-fieldname = 'FIELD2'.
gs_sort-spos = 2.
gs_sort-up = 'X'.
*GS_SORT-SUBTOT = 'X'. **THIS SHOULD NOT BE UNCOMENTED*
append gs_sort to gt_sort.
endform.
form call_alv.
ABAP List Viewer
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = g_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_structure_name = 'ITAB1'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
it_events = gt_events[]
IT_EVENT_EXIT =
is_print = gs_print
IS_REPREP_ID =
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 =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = itab1
exceptions
program_error = 1
others = 2.
endform.
HEADER FORM
form eventtab_build changing lt_events type slis_t_event.
constants:
gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = lt_events.
read table lt_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move gc_formname_top_of_page to ls_event-form.
append ls_event to lt_events.
endif.
define END_OF_PAGE event
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
endform.
form comment_build changing gt_top_of_page type slis_t_listheader.
data: gs_line type slis_listheader.
clear gs_line.
gs_line-typ = 'H'.
gs_line-info = 'HEADER 1'.
append gs_line to gt_top_of_page.
clear gs_line.
gs_line-typ = 'S'.
gs_line-key = 'STATUS 1'.
gs_line-info = 'INFO 1'.
append gs_line to gt_top_of_page.
gs_line-key = 'STATUS 2'.
gs_line-info = 'INFO 2'.
append gs_line to gt_top_of_page.
CLEAR GS_LINE.
GS_LINE-TYP = 'A'.
GS_LINE-INFO = 'ACTION'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
endform.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_list_top_of_page.
write: sy-datum, 'Page No', sy-pagno left-justified.
endform.
form end_of_page.
write at (sy-linsz) sy-pagno centered.
endform.
PRINT SETTINGS
form print_build using ls_print type slis_print_alv.
ls_print-print = p_print. "PRINT IMMEDIATE
ls_print-no_print_selinfos = p_nosinf. "NO SELECTION INFO
ls_print-no_coverpage = p_nocove. "NO COVER PAGE
ls_print-no_new_page = p_nonewp.
ls_print-no_print_listinfos = p_nolinf. "NO PRINT LIST INFO
ls_print-reserve_lines = p_reserv.
endform. -
Do not include some lines in Subtotals and totals in ALV
Hello All,
I am printing a report with all sale order details and Quantities( delveered ,conformed etc..) iam doing subtotals based on the material and Plant.
In this if the document date is less than the SY-DATUM, we should not include the quantity into the subtotals and totals, Only the orders wiht doc date GQ to Sy-datum then display them..
As of now I am using ALV grid display and doing the sums by
l_wa_fcat-do_sum = c_x. (field catalog) for the whole colom) but i want to avoid sum row from tehe calculation based on the condition.
<b>Do we have any way to achive this, like if we want to have separate color for a purticular Cell then we add an extra field in outout table and we link this field with layout-coltab_fieldname in the same way or any other way if we have</b>.
I will be thankfull to if you can provide me your valuable suggesstions on this. it is very urgent. I am trying in all the ways from my side.Hi,
see this code,
Complete code for the ALV grid example
This example shows and ALV grid with flights. After selecting a line a change button can be pushed to display a change screen. After the changes have been saved, the ALV grid screen is displayed again, and the grid is updated with the changes.
The example shows:
How to setup the ALV grid
How to ste focus to the grid
How to set the title of the grid
How to allow a user to save and reuse a grid layout (Variant)
How to customize the ALV grid toolbar
Refresh the grid
Set and get row selection and read line contents
Make and exception field (Traffic light)
Coloring a line
Steps:
Create screen 100 with the ALV grid. Remember to include an exit button
Add a change button to the ALV grid toolbar
Create screen 200 the Change screen
The screens:
The code:
REPORT sapmz_hf_alv_grid .
Type pool for icons - used in the toolbar
TYPE-POOLS: icon.
TABLES: zsflight.
To allow the declaration of o_event_receiver before the
lcl_event_receiver class is defined, decale it as deferred in the
start of the program
CLASS lcl_event_receiver DEFINITION DEFERRED.
G L O B A L I N T E R N A L T A B L E S
*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
To include a traffic light and/or color a line the structure of the
table must include fields for the traffic light and/or the color
TYPES: BEGIN OF st_sflight.
INCLUDE STRUCTURE zsflight.
Field for traffic light
TYPES: traffic_light TYPE c.
Field for line color
types: line_color(4) type c.
TYPES: END OF st_sflight.
TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight.
DATA: gi_sflight TYPE tt_sflight.
G L O B A L D A T A
DATA: ok_code LIKE sy-ucomm,
Work area for internal table
g_wa_sflight TYPE st_sflight,
ALV control: Layout structure
gs_layout TYPE lvc_s_layo.
Declare reference variables to the ALV grid and the container
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container,
o_event_receiver TYPE REF TO lcl_event_receiver.
DATA:
Work area for screen 200
g_screen200 LIKE zsflight.
Data for storing information about selected rows in the grid
DATA:
Internal table
gi_index_rows TYPE lvc_t_row,
Information about 1 row
g_selected_row LIKE lvc_s_row.
C L A S S E S
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Event handler method for event toolbar.
CONSTANTS:
Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
DATA:
ls_toolbar TYPE stb_button.
Append seperator to the normal toolbar
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
Append a new button that to the toolbar. Use E_OBJECT of
event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.
This class has one attribute MT_TOOLBAR which is of table type
TTB_BUTTON. The structure is STB_BUTTON
CLEAR ls_toolbar.
MOVE 'CHANGE' TO ls_toolbar-function.
MOVE icon_change TO ls_toolbar-icon.
MOVE 'Change flight' TO ls_toolbar-quickinfo.
MOVE 'Change' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_user_command.
Handle own functions defined in the toolbar
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD.
ENDCLASS.
S T A R T - O F - S E L E C T I O N.
START-OF-SELECTION.
SET SCREEN '100'.
*& Module USER_COMMAND_0100 INPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
MODULE status_0100 OUTPUT.
DATA:
For parameter IS_VARIANT that is sued to set up options for storing
the grid layout as a variant in method set_table_for_first_display
l_layout TYPE disvariant,
Utillity field
l_lines TYPE i.
After returning from screen 200 the line that was selected before
going to screen 200, should be selected again. The table gi_index_rows
was the output table from the GET_SELECTED_ROWS method in form
CHANGE_FLIGHT
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines > 0.
CALL METHOD go_grid->set_selected_rows
EXPORTING
it_index_rows = gi_index_rows.
CALL METHOD cl_gui_cfw=>flush.
REFRESH gi_index_rows.
ENDIF.
Read data and create objects
IF go_custom_container IS INITIAL.
Read data from datbase table
PERFORM get_data.
Create objects for container and ALV grid
CREATE OBJECT go_custom_container
EXPORTING container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
Create object for event_receiver class
and set handlers
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_user_command FOR go_grid.
SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.
Layout (Variant) for ALV grid
l_layout-report = sy-repid. "Layout fo report
Setup the grid layout using a variable of structure lvc_s_layo
Set grid title
gs_layout-grid_title = 'Flights'.
Selection mode - Single row without buttons
(This is the default mode
gs_layout-sel_mode = 'B'.
Name of the exception field (Traffic light field) and the color
field + set the exception and color field of the table
gs_layout-excp_fname = 'TRAFFIC_LIGHT'.
gs_layout-info_fname = 'LINE_COLOR'.
LOOP AT gi_sflight INTO g_wa_sflight.
IF g_wa_sflight-paymentsum < 100000.
Value of traffic light field
g_wa_sflight-traffic_light = '1'.
Value of color field:
C = Color, 6=Color 1=Intesified on, 0: Inverse display off
g_wa_sflight-line_color = 'C610'.
ELSEIF g_wa_sflight-paymentsum => 100000 AND
g_wa_sflight-paymentsum < 1000000.
g_wa_sflight-traffic_light = '2'.
ELSE.
g_wa_sflight-traffic_light = '3'.
ENDIF.
MODIFY gi_sflight FROM g_wa_sflight.
ENDLOOP.
Grid setup for first display
CALL METHOD go_grid->set_table_for_first_display
EXPORTING i_structure_name = 'SFLIGHT'
is_variant = l_layout
i_save = 'A'
is_layout = gs_layout
CHANGING it_outtab = gi_sflight.
*-- End of grid setup -
Raise event toolbar to show the modified toolbar
CALL METHOD go_grid->set_toolbar_interactive.
Set focus to the grid. This is not necessary in this
example as there is only one control on the screen
CALL METHOD cl_gui_control=>set_focus EXPORTING control = go_grid.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0200 INPUT
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'EXIT200'.
LEAVE TO SCREEN 100.
WHEN'SAVE'.
PERFORM save_changes.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form get_data
FORM get_data.
Read data from table SFLIGHT
SELECT *
FROM zsflight
INTO TABLE gi_sflight.
ENDFORM. " load_data_into_grid
*& Form change_flight
Reads the contents of the selected row in the grid, ans transfers
the data to screen 200, where it can be changed and saved.
FORM change_flight.
DATA:l_lines TYPE i.
REFRESH gi_index_rows.
CLEAR g_selected_row.
Read index of selected rows
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = gi_index_rows.
Check if any row are selected at all. If not
table gi_index_rows will be empty
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines = 0.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = 'You must choose a line'.
EXIT.
ENDIF.
Read indexes of selected rows. In this example only one
row can be selected as we are using gs_layout-sel_mode = 'B',
so it is only ncessary to read the first entry in
table gi_index_rows
LOOP AT gi_index_rows INTO g_selected_row.
IF sy-tabix = 1.
READ TABLE gi_sflight INDEX g_selected_row-index INTO g_wa_sflight.
ENDIF.
ENDLOOP.
Transfer data from the selected row to screenm 200 and show
screen 200
CLEAR g_screen200.
MOVE-CORRESPONDING g_wa_sflight TO g_screen200.
LEAVE TO SCREEN '200'.
ENDFORM. " change_flight
*& Form save_changes
Changes made in screen 200 are written to the datbase table
zsflight, and to the grid table gi_sflight, and the grid is
updated with method refresh_table_display to display the changes
FORM save_changes.
DATA: l_traffic_light TYPE c.
Update traffic light field
Update database table
MODIFY zsflight FROM g_screen200.
Update grid table , traffic light field and color field.
Note that it is necessary to use structure g_wa_sflight
for the update, as the screen structure does not have a
traffic light field
MOVE-CORRESPONDING g_screen200 TO g_wa_sflight.
IF g_wa_sflight-paymentsum < 100000.
g_wa_sflight-traffic_light = '1'.
C = Color, 6=Color 1=Intesified on, 0: Inverse display off
g_wa_sflight-line_color = 'C610'.
ELSEIF g_wa_sflight-paymentsum => 100000 AND
g_wa_sflight-paymentsum < 1000000.
g_wa_sflight-traffic_light = '2'.
clear g_wa_sflight-line_color.
ELSE.
g_wa_sflight-traffic_light = '3'.
clear g_wa_sflight-line_color.
ENDIF.
MODIFY gi_sflight INDEX g_selected_row-index FROM g_wa_sflight.
Refresh grid
CALL METHOD go_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN '100'.
ENDFORM. " save_changes -
Subtotals and Totals In ALV Report
Hi Experts,
I have a problem in my current scenario,
I have 3 fields,
KUNNR, WAERS, DMBTR.
000001 USD 100.00
000001 USD 200.00
000002 USD 100.00
000002 USD 400.00
000002 EUR 300.00
000002 EUR 100.00
The above mentioned is the data I have in my internal table & in my ALV report as well, Which is fine...!
Now I need Subtotals for each customer,
Means for customer 000001 The subtotal is 300 (USD)
Means for customer 000002 The subtotal is 500 (USD)
Means for customer 000002 The subtotal is 400 (EUR)
At the end I need grand totals.
USD 800
EUR 400.
Currently My field catalog is given below.
FIELDCATALOG-COL_POS = COL_POS.
FIELDCATALOG-FIELDNAME = 'DMBTR'.
FIELDCATALOG-SELTEXT_M = TEXT-106.
FIELDCATALOG-DO_SUM = 'X'.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
what else I need to do for getting individual subtotals by currency and customers.
Thanks & regards,
Dileep .CHi Deelip,
FOR TOTAL:
there is a property of fieldcatalog, that is do_sum.
USE COED LIKE:
PERFORM fieldcat USING:
'1' 'KUNNR' 'I_MARD' 'CUSTOMER NO' ,
'2' 'DMBTR' 'I_MARD' 'CURRENCY' ,
FORM fieldcat USING value(p_0029)
value(p_0030)
value(p_0031)
value(p_0032)
wa_fieldcat-col_pos = p_0029.
wa_fieldcat-fieldname = p_0030.
wa_fieldcat-tabname = p_0031.
wa_fieldcat-reptext = p_0032.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " FIELDCAT
in final output you will get the total of currency field.
FOR SUB TOTAL:
decleare: i_sort type standard table of slis_sortinfo_alv,
wa_sort type slis_t_sortinfo_alv.
wa_sort-spos = '1'.
wa_sort-fieldname = 'KUNNR'.
wa_sort-tablename = 'i_final'
wa_sort-up = 'x'
wa_sort-subtot = 'X'.
wa_sort-spos = '2'.
wa_sort-fieldname = 'WAERS'.
wa_sort-tablename = 'i_final'
wa_sort-up = 'x'
wa_sort-subtot = 'X'.
append wa_tab to i_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
it_sort = i_sort
Hope this can solve your pbs.
Regards,
Tutun -
In ALV: Subtotals for every month, not for every day, possible?
Hello,
in my Alv-Grid I have a date column, which I want to use to generate subtotals. But I don't want to have a subtotal for every date, but for every month. Is there a method to accomplish this with subtotals? Thanks.
Regards, Lars.Hi Stembergg,
1. Its not possible with only date field.
2. However, if you have one EXTRA FIELD
which contains the Month
only then it is possible.
( You may hide this extra field if u don't
won't to display. But anyhow, u need to
modify your logic and the internal table
and accordingly populate the extra field)
3. There is contraint in alv
that we cannot use any function for any column value
for any claculation/grouping purpose.
Hope it helps.
Regards,
Amit M.
Message was edited by: Amit Mittal -
Subtotals in ALV report for ALPHA-NUMERIC field
Hi Experts,
I have problem while subtotalling values in ALV report.
I have 8 fields in my fieldcatalog. Now, I have to do the subtotal based on 3rd field having name 'ABC'. This field is having type CHAR & having lenght 3.
Now I wanted to do subtotalling for field 7 & 8 as 'NETWR' & 'MENGE' based on 3rd field.
How we can do the subtotal?Hi,
Refer this code
*& Form sub_display_data
text
FORM sub_display_data .
*--To sort the output through material number
DATA : lwa_sort TYPE slis_sortinfo_alv.
DATA : lit_sort TYPE slis_t_sortinfo_alv.
*--Pass the values to the table
lwa_sort-fieldname = 'PERNR'. "Field name in o/p inttable
lwa_sort-tabname = 'it_final2'. "Output Internal table
lwa_sort-spos = '1'. "Sort sequence
lwa_sort-up = 'X'. "Sort in ascending order
lwa_sort-down = ' '. "Sort in descending order
lwa_sort-subtot = 'X'. "Subtotal
APPEND lwa_sort TO lit_sort.
*--Pass the values to the table
lwa_sort-fieldname = 'WORKDATE'. "Field name in o/p inttable
lwa_sort-tabname = 'it_final2'. "Output Internal table
lwa_sort-spos = '2'. "Sort sequence
lwa_sort-up = 'X'. "Sort in ascending order
lwa_sort-down = ' '. "Sort in descending order
lwa_sort-subtot = ' '. "Subtotal
APPEND lwa_sort TO lit_sort.
*--Pass the values to the table
lwa_sort-fieldname = 'WEKLY'. "Field name in o/p inttable
lwa_sort-tabname = 'it_final2'. "Output Internal table
lwa_sort-spos = '3'. "Sort sequence
lwa_sort-up = 'X'. "Sort in ascending order
lwa_sort-down = ' '. "Sort in descending order
lwa_sort-subtot = ' '. "Subtotal
APPEND lwa_sort TO lit_sort.
wa_layout-colwidth_optimize = 'X'.
IF NOT it_final2[] IS INITIAL.
*--Call the function module to display the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = wa_layout
i_callback_program = v_repid
it_fieldcat = it_fieldcat1[]
i_default = c_chk
i_save = c_save
it_sort = lit_sort
TABLES
t_outtab = it_final2
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.
ELSE.
*--Message No data found
MESSAGE i888 WITH text-017.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_display_data
Regards,
Prashant -
Reg: passing totals /subtotals of a ALV to a smartform
I have a editable ALV report which has a button to call a smartform . Once the user edits some fields I need to pass the refreshed total to the smartform. I want to know - in what structure the totals/subtotals of the ALV report are stored.
Banu,
Even if you figure out how to get the subtotals / totals from a ALV, I would still suggest you to use the features of SMART Forms to calculate the same again in the form.
http://help.sap.com/saphelp_nw04/helpdata/en/55/610e2db57911d4b62c006094192fe3/content.htm
So, that way if your form is triggered even without doing the subtotalling done by the user you are on the safer side as the form will still display what you have designed it for.
Regards,
Ravi
Note :Please mark all the helpful answers -
Hello,
I am developing a report using ALV FM, i have field catalog(vbeln posnr matnr netpr). i know how to set subtotals using layout settings once after program execution.but i want subtotals to set before execution( i mean that, in coding itself). does any one worked on this before..?if so. plz send some sample code..
thanks in advance..
leoiz.Hai Komal Rani ,
As u said that i worked on subtotals in my report but that doesn't give any result to me.As we know that before going to work on subtots we must sum at least one column,then only we can do subtots, similarly i did using do_sum attribute in fieldcatalog table on netprice column.
then i passed
s_sort_info-fieldname = 'VBELN'.
s_sort_info-subtot = 'X'.
append s_sort_info to t_sort_info.
then i passed t_sort_info to
IT_SORT = t_sort_info in
REUSE_ALV_GRID_DISPLAY fm.
but that doesn't give any result...
if i did mistake, can u explain once again..?
leoiz. -
How to display subtotals in separate column in alv report?
hi,
I am displayed the subtotals for QUantity field BDMNG in Reuse_alv_grid_display in the same column.
but I want to display subtotal in separate column.
How to display subtotals in separate column in alv report?
thanks®ards.
samba.kHi
As far as i know you can't do this,the option you have is to create one more column (subtotal) and populate it by manual calculation at every subtotal (not alv subtotal but yours) .
Best Regards
Yossi -
Adding/Enabling Totals & Subtotals Button in ALV Report Output
Hi Guys,
I would like to know , how to add / enable Totals & Subtotals Button on the application tool bar in alv report output.
Regards,
Kishanok so here i am sending my code....its also interactive...
and in second list i am displaying quantity....
*& Report ZINT_ALV
REPORT zint_alv.
TYPE-POOLS:slis.
TABLES:mara,
makt,
mseg.
DATA:BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF itab.
DATA:BEGIN OF itab1 OCCURS 0,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
werks LIKE mseg-werks,
END OF itab1.
DATA:fcat TYPE slis_t_fieldcat_alv,
fcat1 TYPE slis_t_fieldcat_alv,
eve TYPE slis_t_event,
eve1 TYPE slis_t_event.
DATA:t_mat LIKE mara-matnr,
s_mat LIKE mara-matnr,
g_repid LIKE sy-repid.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:mat FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_fcat USING fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
*& Form build_fcat
text
-->T_FCAT text
FORM build_fcat USING t_fcat TYPE slis_t_fieldcat_alv.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-ref_fieldname = 'MATNR'.
wa_fcat-ref_tabname = 'MARA'.
wa_fcat-seltext_m = 'Material'.
wa_fcat-input = ' '.
wa_fcat-edit = 'X'.
wa_fcat-input = 'X'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Description'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
ENDFORM. "build_fcat
*& Form build_eve
text
FORM build_eve.
DATA:t_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve
EXCEPTIONS
LIST_TYPE_WRONG = 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. "build_eve
*& Form get_data
text
FORM get_data.
SELECT maramatnr maktmaktx INTO CORRESPONDING FIELDS OF TABLE itab
FROM mara INNER JOIN makt
ON maramatnr = maktmatnr
WHERE mara~matnr IN mat.
ENDFORM. "get_data
*& Form dis_data
text
FORM dis_data.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND'
i_grid_title = 'Interactive ALV'
it_fieldcat = fcat
it_events = eve
TABLES
t_outtab = itab
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. "dis_data
*& Form user_command
text
-->U_COM text
FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.
CLEAR fcat1.
CASE u_com.
WHEN '&IC1'.
READ TABLE itab INDEX sel_field-tabindex.
IF sel_field-fieldname = 'MATNR'.
IF sy-subrc = 0.
t_mat = itab-matnr.
PERFORM build_cat1 USING fcat1.
PERFORM build_eve1.
PERFORM get_data1.
PERFORM dis_data1.
ENDIF.
ENDIF.
SET PARAMETER ID 'MAT' FIELD t_mat.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. "user_command
*& Form build_fcat1
text
-->T_FCAT1 text
FORM build_cat1 USING t_fcat1 TYPE slis_t_fieldcat_alv.
DATA:wa_fcat1 TYPE slis_fieldcat_alv.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MBLNR'.
wa_fcat1-seltext_m = 'Material Doc.'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MENGE'.
wa_fcat1-seltext_m = 'Quantity'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MEINS'.
wa_fcat1-seltext_m = 'UOM'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'WERKS'.
wa_fcat1-seltext_m = 'Plant'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
ENDFORM. "build_fcat1
*& Form build_eve1
text
FORM build_eve1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve1
EXCEPTIONS
list_type_wrong = 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. "build_eve1
*& Form get_data1
text
FORM get_data1.
SELECT mblnr menge meins werks FROM mseg
INTO CORRESPONDING FIELDS OF TABLE itab1
WHERE matnr = t_mat.
ENDFORM. "get_data1
*& Form dis_data1
text
FORM dis_data1.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = fcat1
it_events = eve1
TABLES
t_outtab = itab1
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. "dis_data1 -
Totals, Subtotals and ABC Analysis buttons missing from ALV.
Hi,
I have used FM REUSE_ALV_LIST_DISPLAY in my report without specifying a PF-STATUS that means STANDARD PF-STATUS is used in ALV, and moved from Quality to Production, till yesterday all the features such as Sort, Filter, Local file along with Totals, Subtotals and ABC Analysis were visible, today all buttons are visible but TOTALS, SUBTOTALS and ABC ANALYSIS buttons are missing.
I have not done any changes to the Code nor the layout.
Thanks in advance.
Sunil.
Edited by: Sunil Saini on Nov 24, 2010 11:26 AMHi Lalit,
I have checked the Layout.
In Layout in Quality there are checkboxes in Summation/Totals column in front of Numeric fields,
but these checkboxes are not visible in Layout of Production system.
Regards,
Sunil. -
Adding subtotals from 3 pages to a total in the 3rd page
I am using Adobe Designer 6 and have 3 pages that use FormCalc to do the calculations. I have subtotals on each page. I need to be able to take the subtotal form the first and second page and add that to a subtotal on the third pageto get a grand total on the third page. Can someone please help. Also please keep this simple. If you have a sample, I should be able to figure it out. This is what I have been working with. I know part of it is wrong. costa is the subtotal on page 2 and costb costc and cost2(grand total) are on page 3.
cost2 = costb + costc+(form[0].page[2]+costa+)
Thank you.On the calculate event of cost2 you can use script like:
Sum(costb, costc, formName.page2Name.costa)
Chris
Adobe Enterprise Developer Support
Maybe you are looking for
-
Mail and IMAP, random problem
I am using Mail.app to connect to an IMAP account. The IMAP account is working fine. Yesterday morning I started a draft, then quit Mail without saving the draft. Last night I opened Mail and it just gave me the "beach ball" continuously until I forc
-
Having TWO problems with my iPod mini.
I've had my ipod mini for a year and a half. I only ever use it 2-3 times a week for 30 mins at a time at the gym, and sometimes in the car. Already I'm having two problems. Problem #1- Battery. I've noticed alot of other people on here seem to be ha
-
How to use ImageIcon's byte[] constructor?
As subject states I've tried many many times and I just cna't get it. I can get it working using ImageIcon's String (filename) constructor, but the application I'm developing for requires the use of a byte[] array. Could someone please share some cod
-
Lumia 820 video playback problem
I've recently bought a Lumia 820, my choice partly influenced by the 2 to improve video recording, in particular at live music gigs. Whilst it does seem to be avoid the "wind tunnel" sound effect I've had on previous phone videos, each one I've play
-
CCM Cluster upgrade/rebuild
i am upgrading my cluster from CCM4.0 to 4.1. i am looking for any advice that would make the process go smooth. i will open a TAC case for backup. my OS version is 2000.2.7sr4. thanks in advance.