cancel
Showing results for 
Search instead for 
Did you mean: 

Help with abap proxies !!

Former Member
0 Kudos

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.

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Thanks

former_member187587
Contributor
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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 .

Former Member
0 Kudos

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

Former Member
0 Kudos

Yes, I understand that Data is very large but got to do this way only as it is monthly report to be used for forcasting purposes and I have to read all the data and then delete the table data.

Can you suggest any workaround. If you demand, I code show you the code.

Please help.

Former Member
0 Kudos

Hi Sneha Patil,

If you can place your code I will try to fine tune the code.

Ok.

prateek
Active Contributor
0 Kudos

Change the parameter value of ztta/max_memreq_MB

For this refer to this - Page 9

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/70ada5ef-0201-0010-1f8b-c935e444...

Regards,

Prateek

Former Member
0 Kudos

Hey,

Now I have an added requirement: I have to create a method to delete the target file first and then create the new target file.

Should i create a new MI and then generate another proxy method for this ?

Thanks.

prateek
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

Jst to bring it up !!

Please help !!

Former Member
0 Kudos

Gurus plz help

Former Member
0 Kudos

Hi Prateek,

Hope you are clear with my requirement now.

Please help.

prabhu_s2
Active Contributor
0 Kudos

snehal

process the records in batches to avoid this error. what are the additional parameters u can specified in ur recv comm.channel interms of file name?

Former Member
0 Kudos

Prabhu,

I want all the records of this table.

Can you plz suggest, how can i use it batches ?

prabhu_s2
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Thanks Prabhu....let me work on this...will update you soon