Multiple RFC calls in one LUW
Hi Guys,
Is it possible to do multiple RFC(receiver) calls in a single LUW(Logical Unit ofWork) in PI 7.0??
If yes, can any1 pls tell me from which SP level has this been enabled??Also what settings do i need to do to create the scenario??
Thanks
Varun
hi
i think its possible.please refers to the link hope it will help u.
1.https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f078394a-4469-2910-c4bf-853c75674694
2.http://help.sap.com/saphelp_nw04/helpdata/en/6f/1bd5b6a85b11d6b28500508b5d5211/content.htm
3.http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE2/BCFESDE2.pdf
regards
kasturika
Similar Messages
-
Flat File-to-RFC question, multiple RFC calls for one file.
Hi guys,
I'm quite new to XI / PI and I have a question regarding a File-to-RFC scenario we're trying in NW PI 7.1.
We have a flat file which has two lines with two fields each, let's take this as an example :
001,001
002,002
The files needs to be converted to XML and then transferred to the RFC program which will update a table with the values above.
In the ESR I've created 3 data types (z_row1,z_record1 and z_fileinput1), 1 message type (z_file2rfc_ob_mt), 1 message mapping (z_file2rfc_mm), 2 Service Interface (z_file2rfc_ob_si and z_file2rfc_ib_ztestpi) and 1 operation mapping (z_file2rfc_om).
In the Integration Builder (ID) I've created everything required (The sender and receiver communication channels, sender and receiver agreement, receiver determination and interface mapping).
We're also using content conversion to convert the flat file to XML, this does seem to work because I see all the lines/field in the message when it gets into PI. The problem is that the RFC can only accept two fields at a time and only the first line gets updated. I see that only the first line gets sent to the RFC.
How can I make the RFC call for each and every line ?
Thanks !!Create the RFC with table, which takes multiple lineitem as input and update the table in single call.
If you want response back then call RFC as synchrounous else in Asynchrounous mode.
By doing this in single call it will update the complete table.
Gaurav Jain
Reward Points if answer is helpful -
Multiple (parallel) RFC Calls through one connection?
Hi SAP gurus,
Is there a possibility for parallel RFC calls through one open connection via one SAP system user?
As I know when calling RFCs it opens a new session and the dialog users have only 6 sessions permitted.
Do you know any possible solution for this?
Thanks a lot in advanceIs this question about the SAP StreamWork APIs. I think you have posted to the wrong forum.
-
How to loop through single XML File and send multiple RFC calls?
I am looking for the best approach to use for making multiple RFC calls (can be sequential) using a single XML file of data. I have been attempting to get a BPM loop working, but to no avail. My RFC only accepts a single set of delivery input and I have been told to try to work with it as is.
input xml sample:
<?xml version="1.0" encoding="UTF-8"?>
<ProofOfDelivery>
<POD>
<delivery_number>1</delivery_number>
<carrier_name>UPS</carrier_name>
</POD>
<POD>
<delivery_number>2</delivery_number>
<carrier_name>UPS</carrier_name>
</POD>
</ProofOfDelivery>
I need to make a synchronous RFC call for each set of POD data.
Thanks in advance!Thanks for the inputs.
I tried with a BPM and multi-mapping transformation before a ForEach block. I am getting this error:
Work item 000000028028: Object FLOWITEM method EXECUTE cannot be executed
Error during result processing of work item 000000028029
com/sap/xi/tf/_ProofOfDeliveryMultiMapping_com.sap.aii.utilxi.misc.api.BaseRuntimeExceptionRuntim
Error: Exception CX_MERGE_SPLIT occurred (program: CL_MERGE_SPLIT_SERVICE========CP, include: CL_
Probably because I am not making/using the container objects properly. Here is a screenshot of my BPM. Can anyone spot my issue or point me to an example on this sort of container use?
[http://kdwendel.brinkster.net/images/bpm.jpg|http://kdwendel.brinkster.net/images/bpm.jpg]
Thanks -
Multiple RFC calls in same session
Hi All,
I'm looking for a way to execute multiple RFCs (one after the other) within the same "session". The reason I need to execute them within the same session is because the initial RFCs store information in ABAP memory (EXPORT x TO MEMORY ID y) and subsequent ones will use that information (IMPORT x FROM MEMORY ID y) for further processing. I thought I could do it all as a transactional RFC call but as one of the RFCs invokes the GUI, it seems to cause complications. I don't think tRFCs are the correct solution because it invovles client interaction from the GUI in one of the calls.
Has anyone tried to do this with the .NET Connector before? I've tried reusing the connection but it seems to get reset after the first call. Please help!
Tim.Hi Tim,
How are you doing ?
A session [when using NCo] is the length of time that the connection is open.
please let me know why the connection is being reset.
the client number is a mandatory attribute in any connection string, it is a part of a composite key which uniquely identifies the user
please let me know how you would like to proceed ?
with respect,
amit -
RFC Call from one server to another
Hi,
Is it possible to use an rfc from one server to another on the same network?
My Idea was that we can do so, however there's a little confusion about the same .
Please clarify.
Regards,
VikasHi,
call SE37 and search for RFC* with F4.
Sending system side(SEND--800)
Create function module by using Tcode SE37 or SE80
goto attributes select remote function
activate
Receiving system side(RECE--000)
goto Tcode SM59
here select the R/3 Connections-->click on Create Button
give RFC Desstination : TESTRFC
Connection Type : 3 for Connecting two systems
Description : Some meaningful Description
Press enter
give Target system Name : SEND
Language : EN
Client : 800
user Name : sapuser
Password : xxxxxx
save this connections & click on test connections(f8)
& Remote logon(f7)---> it will open a session
with client 800 that is your sending system
then only your RFC is correct
create a report in SE38 Tcode
data : c1 type i.
data : itab like mara occurs 0 with header line.
call function 'ZRFCFM' destination 'TESTRFC' --->Function Module 'ZRFCFM' your just create at Sending system
exporting
importing
exceptions
<b>Reward points</b>
Regards -
How can I allow multiple CGI calls to one LabVIEW application?
I currently have web server running my application, and I am having difficulty allowing multiple calls. How can I solve this?
My suspicion is that the CGI requests are handled using the VI Server.
The CGI VI is dynamically loaded and the run method is used to run the
VI. This means that only one call to the CGI handler can run at a time.
I suspect that the CGI handler could be a template, a .vit VI, instead.
This alone might allow multiple calls. I don't have the toolkit in front
of me, so I can't try it out. There may also need to be a few changes
made to the internet toolkit so that they would load the template.
You might give this a try.
Greg McKaskle -
Returning multiple function calls as one
Hi,
Lets say I have a function f() which returns a cursor. f() is called via jdbc and the results processed as a resultset.
I would like to know if it is possible to construct a second function, g() which contains 2 calls to f() such that a single cursor is returned (which translates to a concatenated result set from the 2 calls to f)
Any info appreciated, many thanks,
danIt is in general not a good idea to attempt to perform this union of two cursors.
What about issues such as dealing with different number of columns? Different data types? Or sort order?
The sensible approach says that one deals with all this at SQL level. In other words, before you get to the application programming (PL/SQL or Java) level. It is very inefficient to attempt to do the SQL Engine's job at application level. You need to re-invent a lot of wheels. And none of these will turn as fast as the SQL wheels, and nor will the self-rolled wheels have shiny mags. ;-)
Why cannot function F() simply return a cursor that is a pointer to a parsed SQL statement that does the union of the two SQL statements you have in mind?
Why not add a parameter to function F() to tell it whether you want result 1, result 2, or a combination of both?
As for whether it can be done.. yes, it can be hacked. But it will not be performant. It will waste a lot of expensive server memory that can be put to far better use.
One method to do this is to create a pipelined table function called G(). Both ref cursor pointers are passed to G(). G() fetches a row from a cursor, and then simply pipe that row as a result. It iterates through both cursors.
To use G() you will need to call it via the SQL Engine. The major problem with this is that you are now doing double the amount of I/O to get to the results. G() duplicates all the I/O.
As G() runs in the PL/SQL engine, and the cursor pointers refers to data to be fetched using the SQL Engine, a lot of context switching (and pushing data from one stack to another) needs to be done.
So not only will this blow I/O, but also increase CPU.
So the question is why go to all this trouble? Surely it makes a lot more sense to stick to fundamentals - use SQL as it has been designed to use. Use ref cursors for the purpose they have been designed. -
Is there any way to limit the number of RFC calls from xMII to SAP R/3
Hi All!
I wanted to know whether the number of simultaneous RFC connections made from xMII to SAP R/3 system can be controlled in any way. Suppose we have a scenario wherein some million Sales Orders or Production Orders are to be updated in SAP R/3 from xMII in a short span of time. For all these updations to take place, multiple RFC calls will be established from xMII to SAP at the same time. This will increase the load on the SAP R/3 system and affect performance of the SAP R/3 system. Is there any check on xMII side to limit the number of RFC calls that can be made to SAP R/3 system?
Regards
AnupamAnupam,
If you are using 11.5 just keep in mind that the JCO connection points to a single application server (based upon the SAP Server alias connection settings), but the traffic itself to make a BAPI request is effectively the same as any client user traffic. There will obviously be limitations on performance and throughput, with network and server constraints added to the number and size of the R/3 requests, but there is no magic formula to plug-in because of all of these variables.
If you are using 12.0 (or plan to migrate when it goes GA) then taking advantage of the JRA (java resource adapter) and the associated application server pooling that it offers on the NetWeaver side of things will greatly help you in the throughput capacity.
If you have put some of your xMII application into either test or productive use and are running into issues then I would highly recommend entering the specifics into the customer / partner support portal so that they can help you through any associated problems.
Regards,
Jeremy Good -
RFC call results in StORAGE_PARAM_WRONG_SET
I'm in trouble with a RFC call, the process is as following: SAP system A calls a report. This report selects FI documents via LDB SDF. After user selects one or more documents from the list I call a RFC to read the payroll posting results from system B. The call of the RFC takes place for each FI document separatly what means user selects e.g. 10 FI documents, so I have 10 RFC calls with one result list. After each RFC call I add the result table of the RFC to the output table within the report. Before calling the RFC I of course clear all relevant tables again and additionaly I also use the 'FREE' statement within the RFC to set free all the memory, so there is no data stored in internal tables. But when the user selects a great no. of FI documents to read the payroll postings sometimes the RFC cancels in system B telling me that the storage parameters were set wrong. Calling the RFC step by step by selecting the FI document in single mode from the list I don't receive this dump. Do you have an idea what to do to avoid the dump? One problem: I don't have access to system B to test there, I only can do testing in system A and therefore I have no possibility to debugg this.
This is the code of the RFC module:
FUNCTION y_rfc_read_payroll_postings.
*"*"Local interface:
*" IMPORTING
*" VALUE(I_AWKEY) TYPE AWKEY
*" VALUE(I_CHECKNO) TYPE XFELD
*" VALUE(I_TAX) TYPE XFELD
*" EXPORTING
*" VALUE(E_PPDHD) TYPE PPDHD
*" TABLES
*" T_PPDIT STRUCTURE PPDIT
*" T_PPOIX STRUCTURE PPOIX
*" T_PPDIX STRUCTURE PPDIX
*" T_PAYR STRUCTURE PAYR OPTIONAL
*" T_HRPAY STRUCTURE PC209 OPTIONAL
*" T_REGUTA STRUCTURE REGUTA OPTIONAL
*" T_VALUES STRUCTURE YSHR_RFC_PAYROLL_POSTING OPTIONAL
*" T_CSKA STRUCTURE CSKA
*" RETURN STRUCTURE BAPIRET2
* local data
TYPE-POOLS: pptgs.
TYPES: BEGIN OF type_helpval,
pernr TYPE p_pernr,
lgart TYPE lgart,
rel TYPE xfeld,
END OF type_helpval.
TYPES: BEGIN OF type_cluster,
pernr TYPE p_pernr,
seqno TYPE cdseq,
abrj TYPE pnppabrj,
abrp TYPE pnppabrp,
actual TYPE srtza,
betrg TYPE ppoix-betrg,
waers TYPE ppoix-waers,
END OF type_cluster.
DATA: BEGIN OF lt_ppoix_key OCCURS 0,
pernr LIKE ppoix-pernr,
seqno LIKE ppoix-seqno,
actsign LIKE ppoix-actsign,
runid LIKE ppoix-runid,
postnum LIKE ppoix-postnum,
END OF lt_ppoix_key.
FIELD-SYMBOLS: <payroll> TYPE yshr_rfc_payroll_posting.
DATA ht_ppoix TYPE TABLE OF ppoix.
DATA productive_runs LIKE hrpp_pernr_runtab OCCURS 0 WITH HEADER LINE.
DATA t_rgdir TYPE TABLE OF pc261.
DATA wa_rgdir TYPE pc261.
DATA t_helpval TYPE TABLE OF type_helpval.
DATA t_cluster TYPE TABLE OF type_cluster.
DATA wa_helpval TYPE type_helpval.
DATA wa_cluster TYPE type_cluster.
DATA h_molga TYPE molga.
DATA h_ltext TYPE t5utz-ltext.
DATA wa_t512w TYPE t512w.
DATA wa_return TYPE bapiret2.
DATA par1 TYPE syst-msgv1.
DATA par2 TYPE syst-msgv2.
DATA par3 TYPE syst-msgv3.
DATA wa_ppoix TYPE ppoix.
FIELD-SYMBOLS: <wa_ppdit> TYPE ppdit.
DATA wa_ppdix TYPE ppdix.
DATA result_tab_us TYPE payus_result.
DATA result_tab_in TYPE payin_result.
DATA t_bt TYPE hrpay99_bt.
DATA t_rt TYPE hrpay99_rt.
DATA wa_bt TYPE pc209.
DATA wa_rt TYPE pc207.
DATA h_time(6) TYPE c.
DATA t_inter TYPE TABLE OF pay99_international WITH HEADER LINE.
DATA t_tax TYPE hrpayus_tax.
DATA wa_tax TYPE pc22t.
DATA wa_payr TYPE payr.
DATA wa_reguta TYPE reguta.
DATA wa_payroll TYPE yshr_rfc_payroll_posting.
DATA t_ppopx TYPE TABLE OF ppopx.
DATA wa_ppopx TYPE ppopx.
DATA wa_t001 TYPE t001.
FREE: t_ppdit, t_ppoix, t_ppdix, t_payr, t_hrpay, t_reguta,
t_values, t_helpval, t_cluster, t_ppopx.
* read general information
SELECT SINGLE * FROM ppdhd INTO e_ppdhd WHERE
docnum EQ i_awkey.
CASE syst-subrc.
* everthing ok, continue
WHEN 0.
* get the company code and assign US flag
SELECT SINGLE * FROM t001 INTO wa_t001 WHERE
bukrs EQ e_ppdhd-bukrs.
* exit and set err. mess.
WHEN OTHERS.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = 'HR3PRNA'
number = '704'
* PAR1 = ' '
* PAR2 = ' '
* PAR3 = ' '
* PAR4 = ' '
* LOG_NO = ' '
* LOG_MSG_NO = ' '
* PARAMETER = ' '
* ROW = 0
* FIELD = ' '
IMPORTING
return = wa_return
wa_return-field = 'PPDHD'.
APPEND wa_return TO return.
EXIT.
ENDCASE.
* read table PPDIT
SELECT * FROM ppdit INTO TABLE t_ppdit
FOR ALL ENTRIES IN t_cska
WHERE docnum = i_awkey AND
hkont = t_cska-kstar.
CASE syst-subrc.
* everthing ok, continue
WHEN 0.
* exit and set err. mess.
WHEN OTHERS.
par1 = 'PPDIT'.
par2 = 'document'.
par3 = i_awkey.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = '5G'
number = '58'
par1 = par1
par2 = par2
par3 = par3
* PAR4 = ' '
* LOG_NO = ' '
* LOG_MSG_NO = ' '
* PARAMETER = ' '
* ROW = 0
* FIELD = ' '
IMPORTING
return = wa_return
wa_return-field = 'PPDIT'.
APPEND wa_return TO return.
EXIT.
ENDCASE.
* read table PPDIX
SELECT * FROM ppdix INTO TABLE t_ppdix
FOR ALL ENTRIES IN t_ppdit
WHERE evtyp EQ e_ppdhd-evtyp AND
runid EQ e_ppdhd-runid AND
docnum EQ e_ppdhd-docnum AND
doclin = t_ppdit-doclin.
CASE syst-subrc.
* everthing ok, continue
WHEN 0.
* exit and set err. mess.
WHEN OTHERS.
par1 = 'PPDIX'.
par2 = 'runid'.
par3 = e_ppdhd-runid.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = '5G'
number = '58'
par1 = par1
par2 = par2
par3 = par3
* PAR4 = ' '
* LOG_NO = ' '
* LOG_MSG_NO = ' '
* PARAMETER = ' '
* ROW = 0
* FIELD = ' '
IMPORTING
return = wa_return
wa_return-field = 'PPDIX'.
APPEND wa_return TO return.
EXIT.
ENDCASE.
* read detail values on accounting level
SELECT * FROM ppoix INTO TABLE t_ppoix
FOR ALL ENTRIES IN t_ppdix WHERE
runid EQ t_ppdix-runid AND
tslin EQ t_ppdix-linum.
* read reposted documents from ppopx
SELECT * FROM ppopx INTO TABLE t_ppopx
FOR ALL ENTRIES IN t_ppdix WHERE
runid EQ t_ppdix-runid AND
tslin EQ t_ppdix-linum.
IF syst-subrc EQ 0.
* append corresponding lines to T_ppoix
LOOP AT t_ppopx INTO wa_ppopx.
MOVE-CORRESPONDING wa_ppopx TO productive_runs.
CLEAR productive_runs-runid.
COLLECT productive_runs.
ENDLOOP.
* get run table
CALL FUNCTION 'HR_EVAL_PROD_A_RUN_GET_TABLE'
TABLES
result_table = productive_runs.
LOOP AT productive_runs.
IF productive_runs-runid IS INITIAL.
DELETE productive_runs.
ENDIF.
ENDLOOP.
* fill ppoix-keys for needed ppoix
LOOP AT productive_runs.
LOOP AT t_ppopx INTO wa_ppopx.
IF wa_ppopx-pernr EQ productive_runs-pernr AND
wa_ppopx-seqno EQ productive_runs-seqno.
* built key
CLEAR lt_ppoix_key.
MOVE-CORRESPONDING productive_runs TO lt_ppoix_key.
lt_ppoix_key-postnum = wa_ppopx-postnum.
lt_ppoix_key-actsign = 'A'.
COLLECT lt_ppoix_key.
ENDIF.
ENDLOOP.
ENDLOOP.
* any values to append?
READ TABLE lt_ppoix_key INDEX 1.
IF syst-subrc EQ 0.
SELECT * FROM ppoix INTO TABLE ht_ppoix
FOR ALL ENTRIES IN lt_ppoix_key
WHERE pernr = lt_ppoix_key-pernr
AND seqno = lt_ppoix_key-seqno
AND actsign = 'A'
AND runid = lt_ppoix_key-runid
AND postnum = lt_ppoix_key-postnum.
IF syst-subrc EQ 0.
LOOP AT t_ppopx INTO wa_ppopx.
LOOP AT ht_ppoix INTO wa_ppoix WHERE
pernr EQ wa_ppopx-pernr AND
seqno EQ wa_ppopx-seqno AND
postnum EQ wa_ppopx-postnum.
MOVE-CORRESPONDING wa_ppopx TO wa_ppoix.
IF wa_ppoix-actsign <> 'A'.
wa_ppoix-betrg = - wa_ppoix-betrg.
wa_ppoix-anzhl = - wa_ppoix-anzhl.
ENDIF.
APPEND wa_ppoix TO t_ppoix.
DELETE ht_ppoix.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
* check for any entries in table T_PPOIX
READ TABLE t_ppoix INTO wa_ppoix INDEX 1.
CASE syst-subrc.
* everthing ok, continue
WHEN 0.
* exit and set err. mess.
WHEN OTHERS.
par1 = 'PPOIX'.
par2 = 'runid'.
par3 = e_ppdhd-runid.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = '5G'
number = '58'
par1 = par1
par2 = par2
par3 = par3
* PAR4 = ' '
* LOG_NO = ' '
* LOG_MSG_NO = ' '
* PARAMETER = ' '
* ROW = 0
* FIELD = ' '
IMPORTING
return = wa_return
wa_return-field = 'PPOIX'.
APPEND wa_return TO return.
EXIT.
ENDCASE.
CHECK i_checkno EQ 'X' OR
i_tax EQ 'X'.
CLEAR t_values.
* read payroll results, determine values
LOOP AT t_ppdit ASSIGNING <wa_ppdit>.
LOOP AT t_ppdix INTO wa_ppdix WHERE
evtyp = e_ppdhd-evtyp AND
runid = e_ppdhd-runid AND
doclin = <wa_ppdit>-doclin.
LOOP AT t_ppoix INTO wa_ppoix WHERE
runid EQ e_ppdhd-runid AND
tslin EQ wa_ppdix-linum.
* append anywhere for checkno
IF i_checkno EQ 'X'.
wa_cluster-pernr = wa_ppoix-pernr.
wa_cluster-seqno = wa_ppoix-seqno.
wa_cluster-abrj = <wa_ppdit>-abper+0(4).
wa_cluster-abrp = <wa_ppdit>-abper+4(2).
wa_cluster-actual = wa_ppoix-actsign.
wa_cluster-betrg = wa_ppoix-betrg.
wa_cluster-waers = wa_ppoix-waers.
IF <wa_ppdit>-abper IS INITIAL.
* write BONDT into field ZUONR
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = wa_ppoix-pernr
TABLES
in_rgdir = t_rgdir.
READ TABLE t_rgdir INTO wa_rgdir WITH KEY
seqnr = wa_ppoix-seqno.
IF syst-subrc EQ 0.
<wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
ENDIF.
ENDIF.
APPEND wa_cluster TO t_cluster.
ENDIF.
IF i_tax EQ 'X'.
* check if LGART is relevant
READ TABLE t_helpval INTO wa_helpval WITH KEY
pernr = wa_ppoix-pernr
lgart = wa_ppoix-lgart.
CASE syst-subrc.
WHEN 0.
* relevant or not
CASE wa_helpval-rel.
WHEN 'X'.
wa_cluster-pernr = wa_ppoix-pernr.
wa_cluster-seqno = wa_ppoix-seqno.
wa_cluster-abrj = <wa_ppdit>-abper+0(4).
wa_cluster-abrp = <wa_ppdit>-abper+4(2).
wa_cluster-actual = wa_ppoix-actsign.
wa_cluster-betrg = wa_ppoix-betrg.
wa_cluster-waers = wa_ppoix-waers.
IF <wa_ppdit>-abper IS INITIAL.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = wa_ppoix-pernr
TABLES
in_rgdir = t_rgdir.
READ TABLE t_rgdir INTO wa_rgdir WITH KEY
seqnr = wa_ppoix-seqno.
IF syst-subrc EQ 0.
<wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
ENDIF.
ENDIF.
APPEND wa_cluster TO t_cluster.
* save values
MOVE-CORRESPONDING wa_ppoix TO wa_payroll.
wa_payroll-betrg = ABS( wa_payroll-betrg ).
APPEND wa_payroll TO t_values.
WHEN ' '.
CONTINUE.
ENDCASE.
WHEN OTHERS.
* determine values
CALL FUNCTION 'HR_COUNTRYGROUPING_GET'
EXPORTING
pernr = wa_ppoix-pernr
* TCLAS = 'A'
begda = e_ppdhd-bldat
endda = e_ppdhd-bldat
* WERKS =
IMPORTING
molga = h_molga
EXCEPTIONS
not_found = 1
OTHERS = 2
IF sy-subrc NE 0.
WRITE wa_ppoix-pernr TO par1.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = 'HRPAYBR94'
number = '278'
par1 = par1
IMPORTING
return = wa_return.
wa_return-field = wa_ppoix-pernr.
APPEND wa_return TO return.
CONTINUE.
ENDIF.
SELECT * FROM t512w INTO wa_t512w
WHERE molga = h_molga
AND lgart = wa_ppoix-lgart
AND endda GE e_ppdhd-bldat
AND begda LE e_ppdhd-bldat.
EXIT.
ENDSELECT.
IF syst-subrc EQ 0.
IF wa_t512w-vklas+77(1) = '2'.
wa_helpval-pernr = wa_ppoix-pernr.
wa_helpval-lgart = wa_ppoix-lgart.
wa_helpval-rel = 'X'.
APPEND wa_helpval TO t_helpval.
wa_cluster-pernr = wa_ppoix-pernr.
wa_cluster-seqno = wa_ppoix-seqno.
wa_cluster-abrj = <wa_ppdit>-abper+0(4).
wa_cluster-abrp = <wa_ppdit>-abper+4(2).
wa_cluster-actual = wa_ppoix-actsign.
wa_cluster-betrg = wa_ppoix-betrg.
wa_cluster-waers = wa_ppoix-waers.
IF <wa_ppdit>-abper IS INITIAL.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = wa_ppoix-pernr
TABLES
in_rgdir = t_rgdir.
READ TABLE t_rgdir INTO wa_rgdir WITH KEY
seqnr = wa_ppoix-seqno.
IF syst-subrc EQ 0.
<wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
ENDIF.
ENDIF.
APPEND wa_cluster TO t_cluster.
MOVE-CORRESPONDING wa_ppoix TO wa_payroll.
wa_payroll-betrg = ABS( wa_payroll-betrg ).
APPEND wa_payroll TO t_values.
ELSE.
wa_helpval-pernr = wa_ppoix-pernr.
wa_helpval-lgart = wa_ppoix-lgart.
wa_helpval-rel = ''.
APPEND wa_helpval TO t_helpval.
ENDIF.
ENDIF.
ENDCASE.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDLOOP.
SORT t_cluster.
DELETE ADJACENT DUPLICATES FROM t_cluster.
LOOP AT t_cluster INTO wa_cluster.
CLEAR: result_tab_us, result_tab_in.
CASE wa_t001-land1.
WHEN 'US'.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
* CLUSTERID = 'RU'
employeenumber = wa_cluster-pernr
sequencenumber = wa_cluster-seqno
* READ_ONLY_BUFFER = ' '
* READ_ONLY_INTERNATIONAL = ' '
* ARC_GROUP = ' '
check_read_authority = ''
filter_cumulations = ''
* CLIENT =
* IMPORTING
* VERSION_NUMBER_PAYVN =
* VERSION_NUMBER_PCL2 =
CHANGING
payroll_result = result_tab_us
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10
WHEN OTHERS.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
* CLUSTERID = 'RU'
employeenumber = wa_cluster-pernr
sequencenumber = wa_cluster-seqno
* READ_ONLY_BUFFER = ' '
* READ_ONLY_INTERNATIONAL = ' '
* ARC_GROUP = ' '
check_read_authority = ''
filter_cumulations = ''
* CLIENT =
* IMPORTING
* VERSION_NUMBER_PAYVN =
* VERSION_NUMBER_PCL2 =
CHANGING
payroll_result = result_tab_in
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10
ENDCASE.
IF sy-subrc NE 0.
CLEAR wa_return.
wa_return-field = wa_ppoix-pernr.
CASE syst-subrc.
WHEN '1'.
wa_return-message = 'ILLEGAL_ISOCODE_OR_CLUSTERID'.
WHEN '2'.
wa_return-message = 'ERROR_GENERATING_IMPORT'.
WHEN '3'.
wa_return-message = 'IMPORT_MISMATCH_ERROR'.
WHEN '4'.
wa_return-message = 'SUBPOOL_DIR_FULL'.
WHEN '5'.
wa_return-message = 'NO_READ_AUTHORITY'.
WHEN '6'.
wa_return-message = 'NO_RECORD_FOUND'.
WHEN '7'.
wa_return-message = 'VERSIONS_DO_NOT_MATCH'.
WHEN '8'.
wa_return-message = 'ERROR_READING_ARCHIVE'.
WHEN '9'.
wa_return-message = 'ERROR_READING_RELID'.
WHEN OTHERS.
wa_return-message = 'OTHERS'.
ENDCASE.
APPEND wa_return TO return.
CONTINUE.
ELSE.
CASE wa_t001-land1.
WHEN 'US'.
t_inter = result_tab_us-inter.
WHEN OTHERS.
t_inter = result_tab_in-inter.
ENDCASE.
APPEND t_inter.
t_tax = result_tab_us-nat-tax.
LOOP AT t_inter.
t_bt = t_inter-bt.
t_rt = t_inter-rt.
ENDLOOP.
LOOP AT t_values ASSIGNING <payroll> WHERE
pernr EQ wa_cluster-pernr.
CLEAR wa_rt.
LOOP AT t_rt INTO wa_rt WHERE
lgart EQ <payroll>-lgart.
wa_rt-betrg = ABS( wa_rt-betrg ).
IF wa_rt-betrg EQ <payroll>-betrg AND NOT
wa_rt-cntr1 IS INITIAL.
IF wa_t001-land1 EQ 'US'.
LOOP AT t_tax INTO wa_tax WHERE
cntr1 EQ wa_rt-cntr1.
EXIT.
ENDLOOP.
IF syst-subrc EQ 0.
<payroll>-cntr1 = wa_tax-cntr1.
<payroll>-taxau = wa_tax-taxau.
* determine long text
SELECT SINGLE ltext FROM t5utz INTO h_ltext
WHERE taxau = wa_tax-taxau.
IF syst-subrc EQ 0.
<payroll>-ltext = h_ltext.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
* check table BT abd determine check no.
IF i_checkno EQ 'X'.
LOOP AT t_bt INTO wa_bt.
APPEND wa_bt TO t_hrpay.
CASE wa_bt-zlsch.
* check
WHEN 'C'.
SELECT * FROM payr INTO wa_payr WHERE
rzawe = 'C' AND
laufd = wa_bt-dtadt AND
pernr = wa_cluster-pernr AND
seqnr = wa_cluster-seqno AND
btznr = wa_bt-btznr.
EXIT.
ENDSELECT.
IF syst-subrc EQ 0.
* store period in a field to find correlation later
wa_payr-znme4+0(4) = wa_cluster-abrj.
wa_payr-znme4+4(2) = wa_cluster-abrp.
ELSE.
CLEAR wa_payr.
wa_payr-pernr = wa_cluster-pernr.
wa_payr-rwbtr = wa_cluster-betrg.
wa_payr-waers = wa_cluster-waers.
APPEND wa_payr TO t_payr.
ENDIF.
APPEND wa_payr TO t_payr.
* bank transfer
WHEN OTHERS.
h_time = wa_bt-dtati+0(5).
h_time+5(1) = 'P'.
SELECT * FROM reguta INTO wa_reguta WHERE
laufd = wa_bt-dtadt AND
laufi = h_time.
EXIT.
ENDSELECT.
IF syst-subrc EQ 0.
APPEND wa_reguta TO t_reguta.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDFUNCTION.Hi Sudhir,
These settings need to be done by basis people. Anyhow, you can go to the tcode RZ11 and put in these parameters mentioned in the error message. There will be documentation available for these parameters. Try to see if the defaults are not met for any of these parameters. If you find something strange, report it to the basis. The documentations in this are very helpful. Hope this helps.
Thanks and Regards
Subray Hegde -
FILE to multiple BAPI/RFC calls
Hi,
I have one input source (CSV with about 100 rows) and I wish to call a custom rfc for each row in my spreadsheet. (The custom RFC has a single flat import structure as opposed to a table or anything complex).
I am struggling to do this in XI.
I assumed I needed to assign one source to multiple targets in the Message interfaces, but this errors on activation due to the RFC occurrence being set to 1.
Do I need to do the same trick as with IDOCS or am I missing the point somewhere?
I have read several threads and one in particular seems to indicate it is possible, but so far this has evaded me.
Re: BOM CREATION
Please could you point me in the right direction.
Thanks
AndrewAndrew,
You could read the CSV file into an Integration Process
Save the message in a multiline container (in your case 100 rows)
Create a block
Create another container to hold the single row defined within this block
Set the following for the block
<b>Step Name</b> eg SplitForRFC
<b>Mode</b> ParForEach
<b>Multiline Element</b> Multiline container defined above
<b>Current Line</b> Single line container defined above
The <b>Mode</b> 'ParForEach' acts like a loop
Then within the block create a synchronous Send step which calls your RFC
<b>Design</b>
I would question having to make 100 RFC calls
If possible change the design so that the RFC interface can accept multiple messages and the RFC logic to loop through them and process the messages one at a time
Regards,
Mike -
Multiple BAPI calls in RFC Adapter
Hi, Dear Friends!
I have asynchronous scenario File to RFC(BAPI).
File contains raws. For each raw I need to execute BAPI.
With the help of each raw I need to construct one document in R/3 database with the help of BAPI.
But now my scenario provide only one document (only one BAPI is executed).
I read file to xml structure. This structure contains elements. The elements represent raws of file. But BAPI is executed only for the first element.
How to explain to XI that I want it impement BAPI <b>N times</b> - as number of raws in file (or elements in xml structure).
So how to implement multiple BAPI calls. Have you any idea?
Thank you in advance.
Natalia Maslova.Hi Natalia
have a look on these links
http://help.sap.com/saphelp_nw04/helpdata/en/43/b46c4253c111d395fa00a0c94260a5/frameset.htm
Best Design : for a SOAP -XI - BAPI ( Multiple )
Re: RFC adapter...How it handles multiple calls...
Re: Multiple BAPIs and COMMIT in BPM
Re: Is it possible to compose XML in BPM from responses of multiple BAPI calls?
Multiple BAPI calls in RFC Adapter
may be helpful
Thanks !!! -
Error in RFC Adapter PI 7.10 maximum size of requests for one LUW
Hello all,
I have a big issue on our Development - SAP PI 7.10 System. If I try to push a RFC from a Client System
I get follow error messagei in the Runtime Workbench (RWB) back:
processing error to be caused by: com.sap.aii.adapter.rfc.core.server.RfcServerException: maximum size of requests for one LUW has been reached (1). handling of request for tRFC (TID: 0AA001B8712C49D35D4D06C2) not possible (server: RfcServer[PKG_R3_D07_600_RFC_SND]1)
But I don't know why. I checked follow OSS Notes:
730870 and 774705 w/o success. It will be nice somebody can help me.
Thanks
S. Kohler
P.S. We have the same scenario in our Quality SAP XI System and there works. I couldn't find any
differences between the Adapters. Is there a problem with the parameters ????Hello Tarang Shah,
okay. Here again ( I thought I mentioned above):
in Q50 (SAP PI 7.10 System) we create a RFC Server with the program ID RFC_Q50.
in D64 (SAP PI 7.10 System) we vreate a RFC Server with the program ID RFC_D64
in D07 (SAP R/3 4.7 x110) we create a RFC Connection to D64 with the program ID RFC_D64.
The testconnection works well. I see in our Dev. SAP PI System (D64) that the connection works.
The problem is here, if you start in the application (System D07) the push, you get the error :
maximum size of requests for one LUW has been reac hed (1). handling of re
in Q50 (SAP R/3 4.7 x110) we create a RFC Connection to Q50 with the program ID RFC_Q50.
The testconnection in Q17 works well. Also the push from the application (System Q17.)
This means, the functionallity is okay on both sides (Q17 and D07) only the application sending
process from D07 makes trouble ( you see in Transaction SM 58 on Client Site, the error as I mentiond above and in SAP PI side.) It seems that SAP PI could't accept more as one LUWs
in the same time. Q50 (Q- System) accepted.
So, this is the reason in my point of view, that the problem isn't the connection, seems more
an paramter problem in D64 side. But I don't know which parameters. I checked the OSS Note 730870 and 774705 w/o success.
Thanks
S. Kohler -
LUW implementation between RFC calls
Hi Experts,
I have a quick requirement in which i have to implement LUW explicitly during RFC call.My requirement is as below
I have 3 Rfc for a Ztable these are 1. Zcreate_entry , 2.Zupdate_entry and
3. Zdelete_entry. Now i want to create a explicit session for all the operation done by these Rfcs so that at the end of the session i can commit all the operations.
Example
User will call 1 RFC for leting me know that now start a new session.now user will insert 5 entry in Ztable by calling Zcreate_entry(Actually this data should not be saved in ZTable) , Update 4 Entry in Ztable by calling Zupdate_entry(Actually this data should not be updated in ZTable) , delete few entry same way.
Now user will call 1 Rfc for ending this session(for letting me know only that end this session) , At this point only all the data changes (inserted , updated and deleted ) should be actually reflected in database.
Regards,
Abhishek
Edited by: ABHISHEK BAJPAI on Jan 20, 2009 12:43 PM
Edited by: ABHISHEK BAJPAI on Jan 20, 2009 12:43 PMHi All,
If you have not got the problem , let me explain complete scenario.
There are three RFcs for creating , updating and deleting in database table(Ztable).
Now these Rfcs will be called from web dynpro, In WD screen user may call Create RFC 5 times for creating entry in Ztable ,then he can call Update RFC for updating in Ztable.
After doing all these operations in single session now he wants to end the session, so before closing the session WD notifies to backend that now at this point only save all the changes to the backend thus for all the operations commit will happen now only.
*Another requirement is * that from WD screen if user1 has created 5 records but he has not commited these changes to database now if User1 searches for just inserted recorded(which is not commited yet) , how to provide these records to the User1 because these records are not in Ztable at that point of time.
Regards,
Abhishek -
Hello,
I've two RFC in user-exit. Both, using IN BACKGROUND TASK DESTINATION XI
When i execute the transaction, the user-exit is raising and i can see the follow error in SM58:
maximum size of requests for one LUW has been reached(1).
I've changing in the CC the parameter Maximum Conecction, however the error continue.
If i comment the second call function in the user-exit, the first call function is executed OK, the interface is right,
¿how can i do to execute two functions in the same LUW?
thanksHi,
>>¿how can i do to execute two functions in the same LUW?
you cannot - you need to do "commit work." after each RFC call
Regards,
Michal Krawczyk
Maybe you are looking for
-
A135 S4666 Vista Basic When I try to watch a DVD Movie all I get is sound no picture. I can read/write CD's. I have tried several movies I know work on DVD player but will not now work on my laptop. I use Win Media Player to view movies and it was
-
Create an XML File in Application server
Hello, I have a requirement to create an XML File as Local File and as server File. For the local File it works fine and i got a Local XML File. My problem is for the Server File.I found a solution in internet to convert in binary.But i don't get in
-
Help! Can I still install Windows Vista through Bootcamp?
I am currently running Lion 10.7.3 on my MacBook Pro. When I purchased this laptop 2 years ago, Bootcamp allowed me to create a partition and install Windows Vista. Then, over time I upgraded to OS X Snow Leopard and then Lion. Never really paid
-
Integrate SAP B1 & SAP R/3, To BOBJ
Dear All, We have a requirement, wherein, the client has two platforms, viz SAP B1 & SAP R/3. They want the data to be displayed on a common platform, say BOBJ, can you please suggest, how to go forward with it. Cheers!!!!! Umang
-
ERROR:java.lang.NullPointerException after upgrade 5.5 to 6.0sp1
Hellos. I get this error message after upgrading from IdM 5.5 to Idm 6.0. I use mysql as repository so the upgrade was not easy. The ERROR appears when I click on the "List Accounts" tab on the main menu. However, I can listUsers from the $WSHOME/bin