cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple BAPI calls in RFC Adapter

Former Member
0 Kudos

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).

I tried to use multi-mapping (I follow to Message bulking

http://help.sap.com/saphelp_nw70/helpdata/en/43/ce79623ef30cd5e10000000a1553f7/frameset.htm and blog by Jin Shin Multi-Mapping without BPM - Yes, it’s possible!

/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible) but results are the same.

So how to implement multiple BAPI calls. Have you any idea? May be another approach?

Thank you in advance.

Natalia Maslova.

Accepted Solutions (1)

Accepted Solutions (1)

henrique_pinto
Active Contributor
0 Kudos

Hey Natalia,

you have several possibilities:

1. you could make a wrapper bapi in ABAP side which acceps multiple entries of the same input fields of your current BAPI, and loops on the multiple entries, calling your BAPI in each loop. This way, you avoid having several calls to RFC (this is the best practice);

2. you can have 1:n split (from 1 source message, you generate several target messages) without BPM, which is better for performance. For more information in 1:n split without BPM, check this link: http://help.sap.com/saphelp_nw70/helpdata/en/43/ce79623ef30cd5e10000000a1553f7/frameset.htm

3. you can have the 1:n split inside BPM, with a block step in foreach mode, to send all the target messages to RFC adapter. This is the least performatic solution, but probably the quicker to develop (if you have BPM skills). Check this example on 1:n split in BPM: http://help.sap.com/saphelp_nw70/helpdata/en/41/e3d13f7fb44c21e10000000a1550b0/frameset.htm

Regards,

Henrique.

Former Member
0 Kudos

Hi, Henrique!

Thank you for response!

I implemented the <b>second approach 1:n split</b>. I followed the recommendations (from your link Message bulking http://help.sap.com/saphelp_nw70/helpdata/en/43/ce79623ef30cd5e10000000a1553f7/frameset.htm

and blog by Jin Shin Multi-Mapping without BPM - Yes, it’s possible!

/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible)

But my scenario does not work right.

Database of target system receives <b>only first element of xml source message</b> (only one BAPI is executed)

I don't know why.

And in Test Configuration in (Integration Builder: Configuration) I have an <b>error at Interface Determination & Mapping stage</b>. At the same time Log doesn't have any explanation.

I suppose, my split is not good. But I don't see any split in sxmb_moni. Where can I control splitting?

With the best regards,

Natalia.

Former Member
0 Kudos

Hi Natalia !

Please check your mappings to see if you are generating new messages for each source line. For each row or field in the source message, you also need to map to the upper most tag that is unbounded in the target side..this should create one target message for each incoming row. See your reference blog, the design screen capture, the map between "row" and "USER_1" or "row" and "employee".

Regards,

Matias.

henrique_pinto
Active Contributor
0 Kudos

Natalia,

did u set your mapping as a multimapping?

You have to have 0...unbounded occurrence in target message in message mapping (messages tab) and in interface mapping.

Also, check the audit log for the message in message monitoring.

Regards,

Henrique.

Former Member
0 Kudos

Hi, Dear Friends!

Now my Message Mapping MM_File_to_BAPI_second in Design:

--------------------------------------------------
Source Message Type: mt_sender
Tree                      Occurrences
Messages		  1..1
  Message1                1..1
     mt_sender            1..1
	LINES		  0..unbounded
	  DETAILS	  1..1
	     DATE	  1..1
	     COST_CENTER  0..1
	     DEBET	  1..1
	     CREDIT       1..1
	     SUMMA	  1..1
	     TAX_CODE     0..1
	     DESCRIPTION  1..1
---------------------------------------------------

Target RFC Message: BAPI_ACC_DOCUMENT_POST

Tree                   		Occurrences
Messages			1..1
  Message1			1..1
     BAPI_ACC_DOCUMENT_POST	0..unbounded
        DOCUMENTHEADER		1..1
	   BUS_ACT		0..1
	   USERNAME		0..1
	   HEADER_TXT		0..1
	   COMP_CODE		0..1
	   DOC_DATE		0..1
	   PSTNG_DATE		0..1
	   DOC_TYPE		0..1
	ACCOUNTGL		0..1
	   item			0..unbounded
	      ITEMNO_ACC	0..1
	      GL_ACCOUNT	0..1
	      TAX_CODE		0..1
	      COSTCENTER	0..1
	      DE_CRE_IND	0..1
	   item			0..unbounded
	      ITEMNO_ACC	0..1
	      GL_ACCOUNT	0..1
	      DE_CRE_IND	0..1
	cURRENCYAMOUNT		1..1
	   item			0..unbounded
	      ITEMNO_ACC	0..1
	      CURRENCY		0..1
	      AMT_DOCCUR	0..1
	   item			0..unbounded
	      ITEMNO_ACC	0..1
	      CURRENCY		0..1
	      AMT_DOCCUR	0..1
---------------------------------------------------

I defined required links and transformations between fields.

And at top level I define link LINES---BAPI_ACC_DOCUMENT_POST.

At Messages tab I define:

-


Source Message(s)

Object Type	Name		      Namespace			Occurence
Message Type    mt_sender	      urn:file:to:bapi		1

-


Target Message(s)

Object Type  Name		      Namespace					Occurence
RFC Message  BAPI_ACC_DOCUMENT_POST   urn:sap-com:document:sap:rfc:function	0..unbounded

-


In my Interface Mapping im_mapping_second I define:

-


Source Interface

Name		...   Occurrence
mi_sender	...	1

-


Target Interface ... Occurrence

BAPI_ACC_DOCUMENT_POST  ...	0..unbounded

-


Source Message		Mapping Program			Target Message
mt_sender		MM_File_to_BAPI_second		BAPI_ACC_DOCUMENT_POST

Former Member
0 Kudos

Excuse me for such long description.

But I don't see my error!

In <b>RWB Audit Log</b> I see full Success:

Time Stamp Status Description

2007-08-02 11:20:37 Success Message successfully received by messaging system. Profile: XI URL: http://srv24:50100/MessagingSystem/receive/AFW/XI Credential (User): PIISUSER

2007-08-02 11:20:37 Success Using connection RFC_http://sap.com/xi/XI/System. Trying to put the message into the receive queue.

........

2007-08-02 11:20:37 Success Delivering to channel: cc_bapi_r

........

2007-08-02 11:20:37 Success MP: processing local module localejbs/RfcAFBean

2007-08-02 11:20:37 Success RFC adapter received a synchronous message. Attempting to send sRFC for BAPI_ACC_DOCUMENT_POST

2007-08-02 11:20:38 Success BAPI response was a table of type BAPIRET2 with 1 rows

2007-08-02 11:20:38 Success TYPE='S', Message (ID:RW, NUMBER:605): "&#1044;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;&#1090; &#1087;&#1088;&#1086;&#1074;&#1077;&#1076;&#1077;&#1085;: BKPFF 010000089210002007 DE1CLNT200.", LOG_NO:, LOG_MSG_NO:000000 (PARAMETER:, ROW:0, FIELD:, SYSTEM:DE1CLNT200)

2007-08-02 11:20:38 Success BAPI executed successfully

2007-08-02 11:20:38 Success Commit transaction with BAPI_TRANSACTION_COMMIT

2007-08-02 11:20:38 Success MP: leaving

2007-08-02 11:20:38 Success The message was successfully delivered to the application using connection RFC_http://sap.com/xi/XI/System.

2007-08-02 11:20:38 Success The message status set to DLVD.

And <b>only one </b>(first) document is written as a result of scenario (<b>BAPI executed only once!</b>)

And in <b>Test Configuration</b> in Integration Directory I have error in <b>Interface Determination & Mapping stage</b> without any explanations.

My settings of <b>Interface Determination</b> in Integration Directory:

Sender
Service:  bs_file_s
Interface: mi_sender
Namespace: urn:file:to:bapi

Receiver
Service: DE2_200

Type of Interface Determination:
x Enhanced

Quality of Service:
x Maintain Order At Runtime

Interface Mapping: im_mapping_second

Inbounds Interfaces:
Name					Occurrence
BAPI_ACC_DOCUMENT_POST  ...   		0..unbounded

And as for <b>Communication Channel cc_bapi_r</b> in Integration Directory I specify the settings:

x Advanced Mode
x Commit Handling for Single BAPI Calls

And in <b>RWB Communication Channels for cc_bapi_r</b> I see:

Receiver channel 'cc_bapi_r' for party '', service 'DE2_200' (internal name 
'RfcClient[cc_bapi_r]')
Client data: {jco.client.lang=UK, jco.client.snc_mode=0, jco.client.client=200, 
jco.client.passwd=******, jco.webas.ignore_jdsr_error=1, jco.client.user=n_maslova, 
jco.client.sysnr=13, jco.client.ashost=10.20.30.24}
Repository data: {jco.client.lang=UK, jco.client.snc_mode=0, jco.client.client=200, 
jco.client.passwd=******, jco.webas.ignore_jdsr_error=1, jco.client.user=n_maslova, 
jco.client.sysnr=13, jco.client.ashost=10.20.30.24}
Current pool size: 1, maximum pool size : 1
Channel History
- OK: 2007-08-02 11:20:38 EEST: Message processed for interface BAPI_ACC_DOCUMENT_POST

Such my settings.

And I see as result only one processed element of source file (source xml message) in R/3 database. But I want to see all elements of xml message in database. So RFC must be executed N times - as number of elements of source xml message!

Help me, please!

With the best regards,

Natalia.

former_member192892
Active Contributor
0 Kudos

Hi Natalia,

Why don u try this blog, I think instead of the loop here, you should use BLOCk par for each

/people/narendra.jain/blog/2005/12/30/various-multi-mappings-and-optimizing-their-implementation-in-integration-processes-bpm-in-xi

Thanks

Varun

Former Member
0 Kudos

Hi Natalia !

Check this image:

http://img227.imageshack.us/img227/8806/mappingsxn6.jpg

Could you please press that icon in the mapping screen and copy and paste here the data that appears with the definition of your mappings? I'd like to see if there is any problem there.

Regards,

Matias.

Former Member
0 Kudos

Hi, Matias!

Data with the definition of my mappings:

/ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST=/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES= /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/BUS_ACT=const([value=RFBU]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/USERNAME=const([value=n_maslova]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/HEADER_TXT=/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/DESCRIPTION= /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/COMP_CODE=const([value=1000]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/DOC_DATE=TransformDate([iform=ddMMyyyy, oform=yyyyMMdd, calend=CalendarProperties{firstWeekDay=2, minDaysInFirstWeek=1, lenient=true}]/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/DATE=) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/PSTNG_DATE=TransformDate([iform=ddMMyyyy, oform=yyyyMMdd, calend=CalendarProperties{firstWeekDay=2, minDaysInFirstWeek=1, lenient=true}]/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/DATE=) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/DOCUMENTHEADER/DOC_TYPE=const([value=SA]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL=const([value=5]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item=const([value=1]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item/ITEMNO_ACC=const([value=0000000001]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item/GL_ACCOUNT=concat([delimeter=]const([value=00]), /ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/DEBET=) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item/TAX_CODE=/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/TAX_CODE= /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item/COSTCENTER=concat([delimeter=]const([value=00]), /ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/COST_CENTER=) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item/DE_CRE_IND=const([value=S]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item[1]=const([value=2]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item[1]/ITEMNO_ACC=const([value=0000000002]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item[1]/GL_ACCOUNT=concat([delimeter=]const([value=00]), /ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/CREDIT=) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/ACCOUNTGL/item[1]/DE_CRE_IND=const([value=H]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item=const([value=1]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item/ITEMNO_ACC=const([value=0000000001]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item/CURRENCY=const([value=UAH]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item/AMT_DOCCUR=/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/SUMMA= /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item[1]=const([value=2]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item[1]/ITEMNO_ACC=const([value=0000000002]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item[1]/CURRENCY=const([value=UAH]) /ns0:Messages/ns0:Message1/ns2:BAPI_ACC_DOCUMENT_POST/CURRENCYAMOUNT/item[1]/AMT_DOCCUR=mul(/ns0:Messages/ns0:Message1/ns1:mt_sender/LINES/DETAILS/SUMMA=, const([value=-1]))

In test in Message Mapping is executet successfully.

And my example data (with two elements in source message):

<?xml version="1.0" encoding="UTF-8"?>

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
   <ns0:Message1>
      <ns1:mt_sender xmlns:ns1="urn:file:to:bapi">
         <LINES>
            <DETAILS>
               <DATE>31012007</DATE>
               <COST_CENTER>10231062</COST_CENTER>
               <DEBET>81100000</DEBET>
               <CREDIT>66100000</CREDIT>
               <SUMMA>5.02</SUMMA>
               <TAX_CODE>H0</TAX_CODE>
               <DESCRIPTION>Hi,XI!</DESCRIPTION>
            </DETAILS>
         </LINES>
         <LINES>
            <DETAILS>
               <DATE>31012007</DATE>
               <COST_CENTER>10231062</COST_CENTER>
               <DEBET>81100000</DEBET>
               <CREDIT>66100000</CREDIT>
               <SUMMA>8.08</SUMMA>
               <TAX_CODE>H0</TAX_CODE>
               <DESCRIPTION>Hi,XI!</DESCRIPTION>
            </DETAILS>
         </LINES>
      </ns1:mt_sender>
   </ns0:Message1>
</ns0:Messages>

I will be very glad for your participation!

Natalia.

Former Member
0 Kudos

Hi Natalia !

Ok, and now could you paste the result of the test mapping for that source message you post in last message?

Thanks,

Matias.

Former Member
0 Kudos

Hi Natalia !

After trying the scenario, does the result in SXMB_MONI looks the same as the one in this blog:

/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible

check under the title "Monitor"..does your output message has many payloads?

By the way, I also found this: "Only the payload of a received message is evaluated. Additional attachments are ignored and not forwarded" as current RFC adapter contraints in http://help.sap.com/saphelp_nw04s/helpdata/en/c8/e80440a832e369e10000000a155106/frameset.htm and in the TBIT documents of SAP RFC Adapter it says that current limitations include just one payload/attachment per message..if you see the multiple payloads in the sxmb_moni, but only 1 output, maybe the RFC adapter is executing only the first one...then you will need to use it along with BPM. Use a transform step with that mapping you already made (use abstract interfaces instead), and use a block to loop inside the multiline container you have as a result of using the multimapping and call a send step for each element in the container..

Regards,

Matias.

Former Member
0 Kudos

Hi, Matias!

The result of the test mapping for that source message:

<?xml version="1.0" encoding="UTF-8"?>

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">

<ns0:Message1>

<ns2:BAPI_ACC_DOCUMENT_POST xmlns:ns2="urn:sap-com:document:sap:rfc:functions">

<DOCUMENTHEADER>

<BUS_ACT>RFBU</BUS_ACT>

<USERNAME>n_maslova</USERNAME>

<HEADER_TXT>Hi,XI!</HEADER_TXT>

<COMP_CODE>1000</COMP_CODE>

<DOC_DATE>20070131</DOC_DATE>

<PSTNG_DATE>20070131</PSTNG_DATE>

<DOC_TYPE>SA</DOC_TYPE>

</DOCUMENTHEADER>

<ACCOUNTGL>

<item>

<ITEMNO_ACC>0000000001</ITEMNO_ACC>

<GL_ACCOUNT>0081100000</GL_ACCOUNT>

<TAX_CODE>H0</TAX_CODE>

<COSTCENTER>0010231062</COSTCENTER>

<DE_CRE_IND>S</DE_CRE_IND>

</item>

<item>

<ITEMNO_ACC>0000000002</ITEMNO_ACC>

<GL_ACCOUNT>0066100000</GL_ACCOUNT>

<DE_CRE_IND>H</DE_CRE_IND>

</item>

</ACCOUNTGL>

<CURRENCYAMOUNT>

<item>

<ITEMNO_ACC>0000000001</ITEMNO_ACC>

<CURRENCY>UAH</CURRENCY>

<AMT_DOCCUR>5.02</AMT_DOCCUR>

</item>

<item>

<ITEMNO_ACC>0000000002</ITEMNO_ACC>

<CURRENCY>UAH</CURRENCY>

<AMT_DOCCUR>-5.02</AMT_DOCCUR>

</item>

</CURRENCYAMOUNT>

<RETURN/>

</ns2:BAPI_ACC_DOCUMENT_POST>

<ns2:BAPI_ACC_DOCUMENT_POST xmlns:ns2="urn:sap-com:document:sap:rfc:functions">

<DOCUMENTHEADER>

<BUS_ACT>RFBU</BUS_ACT>

<USERNAME>n_maslova</USERNAME>

<HEADER_TXT>Hi,XI!</HEADER_TXT>

<COMP_CODE>1000</COMP_CODE>

<DOC_DATE>20070131</DOC_DATE>

<PSTNG_DATE>20070131</PSTNG_DATE>

<DOC_TYPE>SA</DOC_TYPE>

</DOCUMENTHEADER>

<ACCOUNTGL>

<item>

<ITEMNO_ACC>0000000001</ITEMNO_ACC>

<GL_ACCOUNT>0081100000</GL_ACCOUNT>

<TAX_CODE>H0</TAX_CODE>

<COSTCENTER>0010231062</COSTCENTER>

<DE_CRE_IND>S</DE_CRE_IND>

</item>

<item>

<ITEMNO_ACC>0000000002</ITEMNO_ACC>

<GL_ACCOUNT>0066100000</GL_ACCOUNT>

<DE_CRE_IND>H</DE_CRE_IND>

</item>

</ACCOUNTGL>

<CURRENCYAMOUNT>

<item>

<ITEMNO_ACC>0000000001</ITEMNO_ACC>

<CURRENCY>UAH</CURRENCY>

<AMT_DOCCUR>8.08</AMT_DOCCUR>

</item>

<item>

<ITEMNO_ACC>0000000002</ITEMNO_ACC>

<CURRENCY>UAH</CURRENCY>

<AMT_DOCCUR>-8.08</AMT_DOCCUR>

</item>

</CURRENCYAMOUNT>

<RETURN/>

</ns2:BAPI_ACC_DOCUMENT_POST>

</ns0:Message1>

</ns0:Messages>

Thanks for your response!

With the best regards,

Natalia.

Former Member
0 Kudos

Hi, Matis!

Unfortunately, after trying my scenario, the result in SXMB_MONI doesn't look the same as the one in that blog.

My sxmb_moni:

http://keep4u.ru/full/070802/ee1993789eb1f0c5b6/jpg

With the best regards,

Natalia

Former Member
0 Kudos

Matias,

I don't see multiple payloads in the sxmb_moni,

So may be my errors are in splitting of input message.

Thanks.

Natalia

henrique_pinto
Active Contributor
0 Kudos

Natalia,

step by step of what you need to do message bulking:

- create repository objects (interfaces and mappings); message and interface mappings need to have target message with occurrence 0...unbounded;

- in ID, do configuration wizard as you would for a common file -> rfc scenario. The multimmaping won't be found in interface determination wizard step, but don't worry. When the objects are generated, go into the interface determination, edit mode, set it to "enhanced", select the multimapping there. The receiver interface occurrence will be automatically set to 0...unbounded.

- That's it. Activate and test your scenario.

You should be able to see the several payloads in SXMB_MONI pipeline, under "Request Message Mapping" entry. To log the complete pipeline, set RUNTIME parameter LOGGING with value 1 in SXMB_ADM -> Configure Integration Engine (Menu Edit -> Change Specific Configuration Data).

Also, each message should be logged as a separate entry in Message Monitoring for the Adapter Engine. In the audit log of bulked messages, the 2nd entry should be something like "Processing child message of multi-message with message ID xxxxx".

Regards,

Henrique.

Former Member
0 Kudos

Hi, Henrique!

My version of XI is PI 7.0 SP10.

I do all actions as you say in IR and ID (today I represented them in detail in Forum, please, look throgh them).

But the Test Configuration is stopped at Interface Detarmination & Mapping without any explanation in Log. And it work, but only one BAPI is executed!!!

Wait for your response very much!

I want to implement this multimapping scenario very much!

With th ebest regards,

Natalia.

henrique_pinto
Active Contributor
0 Kudos

Natalia,

I've tried the exact same scenario with file -> rfc and it worked ok.

I don't know what is wrong.

Maybe in your case the commiting work for BAPI is causing this issue.

Anyway, can you see the multiple payloads in technical routing entry of sxmb_moni pipeline? And what about message monitoring?

Regards,

Henrique.

henrique_pinto
Active Contributor
0 Kudos

Natalia,

I just checked your log messages.

> 2007-08-02 11:20:37 Success MP: processing local

> module localejbs/RfcAFBean

> 2007-08-02 11:20:37 Success RFC adapter received a

> <b>synchronous message</b>. Attempting to send sRFC for

> BAPI_ACC_DOCUMENT_POST

> 2007-08-02 11:20:38 <b>Success BAPI response</b> was a table

> of type BAPIRET2 with 1 rows

> 2007-08-02 11:20:38 Success TYPE='S', Message (ID:RW,

> NUMBER:605):

> "&#1044;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;

You can't have 1:n split for synchronous messages!

They have to be asynchronous (even if your scenario is asynchronous, by having return set in the BAPI, they are automatically executed as synchronous).

Regards,

Henrique.

Former Member
0 Kudos

Henrique,

I set RUNTIME parameter LOGGING with value 1,

Oh, Wonderful!

in my sxmb_moni has a view:

http://keep4u.ru/full/070803/d27723e6a7bc5967cb/jpg

But I see only first element! So I don't see splitting! Why?

It seems to me, we are on right way!

Thanks.

Little more your help, please

Natalia

henrique_pinto
Active Contributor
0 Kudos

Natalia,

it is really strange, because if the error was really in the BAPI return (as I suspected), even though the multi mapping should be correctly executed.

But now giving it a second thought, the scenario is asynchronous through all XI, but is executed as synchronous at adapter level, but at this point, all messages should be already separated... 😛

Sorry to be repetitive, but are you sure your interface determination is of type enhanced and that it have occurrence of target interface as 0...unbounded?

Regards,

Henrique.

Former Member
0 Kudos

Henrique,

I can unset setting 'Commit Handling for Single BAPI Calls' - in this case RFC Adapter will call tRFC (I experimented before).

But really my messages are not separeted - I see only the first.

Of course, my interface determination is of type enhanced and that it have occurrence of target interface as 0...unbounded.

But as for Audit Log in RWB - I can't see in such form as you say.

With the best regards,

Natalia.

Former Member
0 Kudos

Henrique,

In Message Monitoring for the Adapter Engine in the audit log

I see the same information as you see in previous messages.

I don't see bulked messages, the 2nd entry should be something like "Processing child message of multi-message with message ID xxxxx".

Natalia

henrique_pinto
Active Contributor
0 Kudos

Natalia,

really strange indeed.

I'd say to raise an OSS message.

Regards,

Henrique.

Former Member
0 Kudos

Henrique,

now I control all key moments - but everything is right (in IR: message mapping, interface mapping, in ID: interface determination).

What do you mean - OSS message?

Tomorrow (now it is night in Ukraine) I will verify my scenario again.

Thank you very much.

Your support is very-very useful for me!

Natalia.

former_member192343
Active Contributor
0 Kudos

OSS message is message about your problem to sap support team. You can create it at service market place.

BUt i don't see reason for OSS message yet, i think you do something wrong... And try to use proxy here

Former Member
0 Kudos

Hi, Dear Friends!

Thank you very much for your support!

I implemented my scenario and it works as I want!

I use <b>multi-mapping without BPM for data transmitting from file to R/3 database</b>! - Yes, it's possible!

Really my problem was in error of upper level mapping between source and target structures. I need to map DETAILS into BAPI_ACC_DOCUMENT_POST (as you can see from my previous message I try to map LINES into BAPI_ACC_DOCUMENT_POST). As a result I have problem with splitting in sxmb_moni I don't have a lot of elements in Request Message Mapping.

Especially I want to express my gratitude to <b>Henrique Pinto, Matias Denker and Michael Koshkin!</b> I studied a lot of new material for me! Thank you for your persistence in my success!

And I will try to implement my task (the same task) by approach with BPM. <b>I beleive in help of Chandra Shekar :)</b>, because I'm a beginner in BPM.

With the best regards,

Natalia Maslova.

Former Member
0 Kudos

Hi Natalia !!

I'm glad that I could help in some way...and glad for you that you finally reach your goal.

Yours sincerely,

Matias.

henrique_pinto
Active Contributor
0 Kudos

Hey Natalia,

I thought you had said your mapping was ok, that's why I said to raise OSS message... :-S

But anyway, good news you was able to make your scenario to work properly.

Regards,

Henrique.

Answers (7)

Answers (7)

former_member185845
Active Participant
0 Kudos

Finally natalia Can relax, problem being solved.

the best part of it was getting different views on one issue with the active participation of Active Bloggers.

regards

chandra

Former Member
0 Kudos

Hi Natalia,

I am pretty late in putting my suggetions. Well, after reading your query and all the replies, I thought of putting my views n approach on the same.

Note: You want to make RFC for every record in your source file. Never Suggested.

Infact you should avoid RFCs if you can do the same using Proxy.

RFCs should be the best option if your SAP system doesnt support proxy or you want to avoid writing small piece of Server Proxy Code in your target SAP System.

My approach in your scenario:

Import the RFC definition in XI. Export the Request part of RFC as an XSD.

Use XML or some other editor to edit this XSD.

Add another root node above the RFC name referring to the RFC strucutre.

Change the occurence of old RFC node to unbounded.

Import this in XI as external defintion and use it in Mapping and in your inbound interface.

Generate proxy on R/3 side, and call the function module in loop in side the execute asynch method of your server proxy class.

Cheers. !!

Pushkar

former_member185845
Active Participant
0 Kudos

Dear pushkar,

Changing the XSD is done for IDOC only as you cannot change the IDOC occurences.

It can be done for RFC, there is no need to take schema and change the coccurences.

Even if you do in according to what you suggest.

you have a catch in interface determination.

You wont get the IM in ID, when you try to Pick IM for corresponding Source MI & target IM it will say <u><i><b>no objects exists,</b></i></u>since you have changed the Occurences of RFC/XSD.

Thats the reason i suggested BMP(one of the solution).

Regards

chandra

Former Member
0 Kudos

Dear Chandra,

I guess you did not read my solution properly or you did not get it properly.

I am not sending like we Ido in case of Idocs. I dont want to create multiple instances of the target message as it happens in case we change the IDoc occurrence.

If you change the occurrence of IDoc, it creates n no of Idocs and this is called IDoc bundelling.

Well , I want to send all the records in the BAPI or RFC format in one target message.

I am not making multiple calls.

Regards

Pushkar

Former Member
0 Kudos

Hi Pushkar!

Thank you for support.

I understand: my approach is not good from performance point of view.

But I want to solve my task only with the help of XI, without ABAP.

Let's it will be model task.

Is it possible? (Henrique proposed me 3 approaches and Mikhail Koshkin proposed as you - Proxy on target side)

With the best regards,

Natalia.

henrique_pinto
Active Contributor
0 Kudos

Hey Natalia,

what XI version are you in?

Message bulking is available from PI 7.0 SP5 (equivalent to XI 3.0 SP14).

http://help.sap.com/saphelp_nw70/helpdata/en/43/2a3a6081453fe1e10000000a11466f/frameset.htm

Regards,

Henrique.

former_member192343
Active Contributor
0 Kudos

Hi Natalia!

One more way is to create proxy wich will read your xml and will call bapi in loop for each raw

former_member185845
Active Participant
0 Kudos

For got to mention

finally in this block (par for each) use send step with the message type as (the one definedlocally)single line of multiline elment

Regards

chandra

former_member185845
Active Participant
0 Kudos

Dear Natalia,

You need to use BPM.

Create ASN/ASB for the file interface

Create ASNY/ABS for the BAPi(Create MI with BAPI as MT)

Then In IM

FIle_ABS (Source) target MI(BAPI AS MT)

change the occurence to unbounded.

Then IN BPM you will have 3 steps

Step 1 : Incomming file_MI(ABS)

Step2 : Transfor source(file_abs) target will be MI(BAPI) with 0--unbounded occ

Step3: Use Block with(Par for each)

define multi line element & local block element

That completes the BPM.

We have done one such scenario.

If you want the screen shots , mail ur email id

Regards

chandra dasari

yash Tech

prabhu_s2
Active Contributor
0 Kudos

then multimapping with BPM will be the solution. using BLOCK loop into the container and send per message calling the BAPI.

Former Member
0 Kudos

Hi, Prabhu!

Thank you for response!

Please, recommend me good links for BPM - I'm a beginner in this theme.

With the best regards,

Natalia Maslova

Former Member
0 Kudos

hi

check this link

/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit

regards,

Ramesh P