on 01-03-2008 11:14 AM
Hi Friendz,
I am working on a scenario where a report is fetching data from a table which has around 2,00,000 records and passing this to an abap proxy to pass the data into XI and then XI creates a file out of this data. The scenario is working fine for smaller amount of data but throws a
short dump when it encounters a large amnount of data like 2-3 Lacs records.
The dump I am facing is SYSTEM_NO_ROLL.
Please suggest what can be the cause or if you want me to show the report, whichh triggers the proxy.
Thanks.
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Snehal,
The Problem is not the Code, but the large volume of data...
SAP XI is a message broker NOT an ETL tool.
It was developed to handle large number of messages of small size each
( like Services with business orientation for example).
You should try to work with online transactions and not batch processing.
If sending this files using XI is a must you can go two ways:
1.Send the files with proxy in limited size and use the file adapter in append mode.
2.Quick & Dirty - let an ABAP program running as a job to create the file in a folder and XI will pick it up as binary data and drop it at the target server.
Nimrod
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Friends,
Thank you very much for your replies. The program is as follows :
report yorder_spp_upload no standard page heading.
tables : vbak,
yorderspp,
vapma,
yspp_fscloc.
data : it_items type table of ymat_order_spp with header line.
types : begin of ty_vapma,
matnr type vapma-matnr,
vkorg type vapma-vkorg,
audat type vapma-audat,
bstnk type vapma-bstnk, "PO Number
vbeln type vapma-vbeln,
posnr type vapma-posnr,
end of ty_vapma.
data : it_vapma type table of ty_vapma,
wa_vapma like line of it_vapma.
types : begin of ty_vbap,
vbeln type vbap-vbeln,
posnr type vbap-posnr,
matnr type vbap-matnr,
kwmeng type vbap-kwmeng,
meins type vbap-meins,
pstyv type vbap-pstyv,
werks type vbap-werks,
end of ty_vbap.
data : it_vbap type table of ty_vbap,
wa_vbap like line of it_vbap.
types : begin of ty_final,
crmordqtyv type vbap-kwmeng,
crmpgidatw type vbap-erdat,
crm_facloc type vbap-werks,
crm_fstloc type vbap-werks,
crm_itcrat type vbap-erdat,
crm_itmtyp type vbap-pstyv,
crm_order type vbap-vbeln,
crm_numint type vbap-posnr,
crm_ohguid type vapma-bstnk,
crm_reqdat type vbap-erdat,
crm_shipto type vbak-kunnr,
crm_prod_id type vbap-matnr,
crm_doctyp type vapma-vkorg,
end of ty_final.
data : it_final type table of ty_final.
data : wa_final like line of it_final.
data : ydate type sy-datum.
data: i_options like rfc_db_opt occurs 0,
i_fields like rfc_db_fld occurs 0,
i_data like tab512 occurs 0,
i_table_name like dd02l occurs 0 with header line.
data : it_orderspp type table of yorderspp,
wa_orderspp type yorderspp.
data : prxy type ref to zeccsppco_mi_ecc_spp_ob.
data : m_data type zeccsppmt_ecc_to_spp_ib,
s_data type zeccsppmt_ecc_to_spp_ib,
w_data type zeccsppdt_ecc_to_spp_ib_row,
t_data type zeccsppdt_ecc_to_spp_ib_ro_tab.
data : l_date type datum,
f_date type datum.
selection-screen begin of block b1 with frame.
select-options : s_matnr for vapma-matnr,
s_audat for vapma-audat,
s_werks for vapma-werks,
s_auart for vapma-auart,
s_vkorg for vapma-vkorg.
selection-screen end of block b1.
start-of-selection.
perform select_data_upload_table.
perform read_data.
&----
*& Form select_data_upload_table
&----
text
----
form select_data_upload_table.
delete all the data from table "yorderspp".
delete from yorderspp.
commit work.
wait up to 2 seconds.
If Input s_audat(Order date) is initial, It will fetch last Calendar months data.
if s_audat[] is initial.
call function 'OIL_LAST_DAY_OF_PREVIOUS_MONTH'
exporting
i_date_old = sy-datum
importing
e_date_new = l_date.
concatenate l_date+0(6) '01' into f_date.
s_audat-low = f_date.
s_audat-high = l_date.
s_audat-option = 'BT'.
s_audat-sign = 'I'.
append s_audat.
endif.
Selection of order no and respective items from table VAPMA.
select matnr vkorg audat bstnk vbeln posnr werks
into corresponding fields of table it_vapma
from vapma
where matnr in s_matnr
and vkorg in s_vkorg
and auart in s_auart
and werks in s_werks
and audat in s_audat.
Selection of data based on order number from table VBAP.
if not it_vapma[] is initial.
select vbeln posnr matnr kwmeng meins pstyv werks
into corresponding fields of table it_vbap
from vbap
for all entries in it_vapma
where vbeln = it_vapma-vbeln
and posnr = it_vapma-posnr
and pstyv = 'ZTAN'
and werks in s_werks.
endif.
loop at it_vapma into wa_vapma.
read table it_vbap into wa_vbap with key vbeln = wa_vapma-vbeln
posnr = wa_vapma-posnr
matnr = wa_vapma-matnr.
if sy-subrc = 0.
select single * from vbak where vbeln = wa_vbap-vbeln.
yorderspp-crm_entdt = sy-datum.
yorderspp-crm_order = wa_vbap-vbeln.
yorderspp-crm_numint = wa_vbap-posnr.
yorderspp-crmordqtyv = wa_vbap-kwmeng.
yorderspp-crmpgidatw = wa_vapma-audat.
yorderspp-crm_facloc = wa_vbap-werks.
yorderspp-crm_fstloc = wa_vbap-werks.
yorderspp-crm_itcrat = wa_vapma-audat.
yorderspp-crm_itmtyp = wa_vbap-pstyv.
yorderspp-crm_ohguid = wa_vapma-bstnk.
yorderspp-crm_reqdat = wa_vapma-audat.
yorderspp-crm_shipto = vbak-kunnr.
yorderspp-crm_prod_id = wa_vbap-matnr.
yorderspp-crm_doctyp = wa_vapma-vkorg.
insert yorderspp.
commit work.
endif.
endloop.
wait up to 5 seconds.
endform. "select_data_upload_table
&----
*& Form READ_DATA
&----
text
----
form read_data.
select * from yorderspp into table it_orderspp.
if sy-subrc = 0.
create object prxy.
loop at it_orderspp into wa_orderspp.
select single * from yspp_fscloc where s_vkorg = wa_orderspp-crm_doctyp
and s_werks = wa_orderspp-crm_fstloc.
if sy-subrc = 0.
wa_orderspp-crm_facloc = yspp_fscloc-s_facloc.
wa_orderspp-crm_fstloc = yspp_fscloc-s_fstloc.
else.
select single * from yspp_fscloc where s_vkorg = wa_orderspp-crm_doctyp
and s_werks = space.
if sy-subrc = 0.
wa_orderspp-crm_facloc = yspp_fscloc-s_facloc.
wa_orderspp-crm_fstloc = yspp_fscloc-s_fstloc.
else.
wa_orderspp-crm_facloc = wa_orderspp-crm_fstloc.
endif.
endif.
w_data-crmordqtyv = wa_orderspp-crmordqtyv.
w_data-crmpgidatw = wa_orderspp-crmpgidatw.
w_data-crm_facloc = wa_orderspp-crm_facloc.
w_data-crm_fstloc = wa_orderspp-crm_fstloc.
w_data-crm_itcrat = wa_orderspp-crm_itcrat.
w_data-crm_itmtyp = wa_orderspp-crm_itmtyp.
w_data-crm_numint = wa_orderspp-crm_numint.
w_data-crm_ohguid = wa_orderspp-crm_ohguid.
w_data-crm_reqdat = wa_orderspp-crm_reqdat.
w_data-crm_shipto = wa_orderspp-crm_shipto.
w_data-crmprod_id = wa_orderspp-crm_prod_id.
append w_data to t_data.
clear w_data.
endloop.
s_data-mt_ecc_to_spp_ib-row = t_data.
m_data = s_data.
try.
call method prxy->execute_asynchronous
exporting
output = s_data.
commit work.
catch cx_ai_system_fault .
data fault type ref to cx_ai_system_fault .
create object fault.
write 😕 fault->errortext.
endtry.
endif.
endform. "READ_DATA
I think the problem is not with the proxy .
It is due to the mass data.
For this u can :-
Select statement cannot be changed.
One thing you can do is, I think poll interval must be changed.
Tell me the time interval you have provided.
Fine tune your Report.
If possible send the code .
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
The problem is not with the proxy .
It is due to the large volume of data.
For this u can :-
1)If possible, specify the selection criteria as accurately as
possible to reduce the resulting quantity.
2) Accelerate the selection using a suitable secondary index on the database, if required.
3)Try to tune the report by writing correct selection criteria.
Regards,
Amitanshu
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Change the parameter value of ztta/max_memreq_MB
For this refer to this - Page 9
Regards,
Prateek
Ur current scenario was Proxy - XI - File (Target).
Now u r saying tht u want to delete the target file and create a new target file. So it would be now File (Target) - XI - File (New). Where do u think proxy is required.
What is the purpose of deleting the file and creating new file? Is there any business logic in between?
Regards,
Prateek
As it can be seen from the program, The current scenario is that I have to fetch the records of a table in R/3 once in a month and using the abap client proxy I have to past this data in a file (.csv format) in a server using a reciever file adaptor. But here I need to have another method in R/3 (using ABAP Proxy) which deletes the existing .csv file on the taregt system.
have all the records collected in an internal table and using the control break events like atend, onchange etc call the proxy to process in batches i.e. process relevant records in one batch. this is recommended for file setting having APPEND in comm.channel with no new files created based on timestamp etc
User | Count |
---|---|
94 | |
11 | |
11 | |
10 | |
9 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.