Quantcast
Channel: SCN: Message List - SAP Business One Integration Technology
Viewing all 973 articles
Browse latest View live

Re: B1 Service SendMessage call is successful but does not send message

$
0
0

Thanks for the help Bastian,

 

That makes sense, a roll back would explain the behavior I'm seeing. I didn't realize that B1if rolled back the entire step if there was a DI API call failure. I will have to try and reorganize my scenario to achieve what I need to do.

 

I think thatfor now I'll handle error messages as a separate step and process the creation of multiple documents by using a B1 object call with multi message structure in the outbound channel to avoid multiple DI API calls per step.

 

Regards

Cameron


OrderCreation and OrderConfirmation

$
0
0

Hi

I create a package OrderCreation with the scenario step OrderCreation, the inbound channel is a XML file. The scenario is working good, when I put a XML file in a specified directory, an order in SB1 will be created.

I also create a package OrderConfirm with the scenario step OrderConfirm, the inbound channel is SB1 and the outbound is a XML file. When I create an order manual in SB1 the scenario works good and it generate a XML file.

The issue is that the OrderConfirm is not triggered by the OrderCreation. This mean that an order created by B1If will not results in a XML file for the order confirmation.

How can I let OrderConfirm be triggered by OrderCreation?

 

regards

Re: OrderCreation and OrderConfirmation

$
0
0

Hi,

 

per default the technical DI API user entered in B1i SLD (default is B1i user) will not cause Events in the B1 event mechanism. This has been done to avoid looping.

 

Though the B1i user can be activated for B1 eventing, from my point of view the following option should be checked first.

1. Order Creation (Inbound: File, Outbound: B1)

2. Order Confirmation (Inbound: Internal Queue, Outbound: File)

 

Please combine both scenario step by using predecessor/successor.

In step one, you define your second step as successor, then the second step will be automatically started after step one is finished. Details can be found in B1i online help.

 

  • Outbound Definition of step 1 (not possible for void outbound):Capture.PNG
  • Inbound definition of step 2:Capture.PNG

 

You will get the DI result of step 1 available and can use the DocEntry information to retrieve the created Order details via B1 object call atom.

 

 

Best regards

Bastian

 

P.S.:

if you still want to activate B1i user for B1 events, please check "MAINTENANCE -> Cfg B1 Event Filter: B1i User Filter Switched On"

Check content help for details: Capture.PNG

Reading SLD properties in XSL

$
0
0

Hi!

For reading SLD properties in the XSL code I have used the example code described in 3.3.7.5 SLD Properties in Scenario Development document:

 

<xsl:variable name="sysiddoc" select="document('/com.sap.b1i.system.sld.directory/SysId.xml/0010000101(Id)')"/>

<xsl:variable name="url" select="$sysiddoc/sim:SysId/sim:ConnectivityList/sim:Connectivity [./@ConnectivityTypeId='JDBC']/sim:Parameter[./@Key='url']/@Value"/>

 

I have used that earlier in some projects and it worked then (B1 8.82).

However, when I use this code in a new project for 9.1 PL 07 it doesn't work.

When I take a look in the BizStore I can only find one file in the SysId.xml directory and it is B1i itself = 0010000000.xml

That explains why my code doesn't work.

 

Question 1: has the SLD settings been moved somewhere else?

 

Question 2: how to read the SLD properties now?

 

Regards

Lars

Re: Reading SLD properties in XSL

$
0
0

Hi Lars,

 

the SLD settings are unchanged, you still can find the SLD parameters in "/com.sap.b1i.system.sld.directory/SysId.xml/<yourSysID>(Id)".

Maybe your chosen sysid '0010000101' just does not contain Connectivity type JDBC. Could you please check?

 

The (id) isn't visible in the Bizstore via WEBDav as it's no xml file, but you can access it via Control Center -> Development -> X-Edit.

Here you can also check which parameters are included in your chosen SysID.


Best regards

Bastian

Re: How to send a file using HTTP Post

$
0
0

Hi Damien,

 

You could try to handover a file in the payload by pltype "bin" and using the root tag <bfa:io>.

 

<callxmlns="">

     <queryid="pdf"value="pdf"/>

     <connect>

          ...

     </connect>

     <dtd/>

     <pltype>bin</pltype>

     <payload>

          <bfa:ioxmlns:bfa="urn:com.sap.b1i.bizprocessor:bizatoms"pltype="bin">

               ...

          </bfa:io>

     </payload>

     <htta>

          <parid="httpheader.Content-Type"value="application/bin"/>

          <parid="htta.returnpltypeforce"value="application/bin"/>

          <parid="htta.returnpltypedefault"value="application/bin"/>

     </htta>

</call>


In my test scenario, I'm reading a local *.pdf file and hand it over via http post call towards another B1i.

The receiver stores the handed over pdf file on it's loacal file system.


Best regards

Bastian

Re: Reading SLD properties in XSL

$
0
0

Thanks for your answer!

Ok, the "files" are invisible. I thought they were missing.

Yes, I used wrong connectivity type WSAN instead of HTTA.

 

Regards

Lars

Needs help with certificate

$
0
0

Hi!

I'm calling an external webservice using a Call HTTP atom and gets the error:

 

<Payload Role="C" id="atom_call_login" statusNo="HTTP" statusMsg="" reference="atom_login" sysid="" payload="atom_login" throwException="false">

<http.header/>

<httaError xmlns="urn:com.sap.b1i.xcellerator:upltdoc" HTTPcode="" HTTPmsg="">

<exceptionMsg>

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

</exceptionMsg>

<returnData/>

</httaError>

</Payload>

 

The call is made over https with the following settings:

  • destProtocol = https
  • destHost = login.salesforce.com
  • destPort = 443
  • destPath = XXX

 

The url https://login.salesforce.com shows the following certificate-chain:

  • login.salesfoce.com (SSL, sha256)
  • VeriSign Class 3 Public Primary Certification Authority - G5 (sh1)

 

  1. First I made the call with no certificates imported. Got the error above.
  2. I imported the root certificate "VeriSign Class 3 Public Primary Certification Authority - G5" into Tomcat keystore. Got the same error.
  3. I imported the SSL certificate as well. Same error.

 

I think that only the root certificate needs to exist in the keystore. That is also what the exception tells me (I think).

 

Please I need help getting this issue solved!

 

Regards

Lars


Re: Needs help with certificate

$
0
0

Hi!

Issue solved!

 

After reading more about Tomcat/Java certificate handling I realized that:

  • Inbound https calls to B1i uses the B1iExcellerator/.keystore
  • Outbound https calls uses a separate "truststore". In Tomcat there are no truststore, instead the Java truststore "cacerts" is used.

 

When I listed the installed certs in sap_7_64/jre/lib/security/cacerts usind keytool I couldn't find my VeriSign certificate.

Then I installed the certificate "VeriSign Class 3 Public Primary Certification Authority - G5" into cacerts.

Voila! Then it worked.

 

Case closed!

 

Regards

Lars

web service as outbound scenario

$
0
0

Hi,

 

I want to pass business partner master data like cardcode,cardname, email,phone1 etc parameters to external web method / web service which will insert data in external database.

 

So can you please guide me how to call external web service / web method and pass parameters to it as outbound scenario?

 

Please reply.

 

Thanks.

Re: OrderCreation and OrderConfirmation

$
0
0

Hello Bastian,

 

Thanks for your help. I’ve created one package with two scenario’s as you advises.

The Create scenario is working good, but the Confirm scenario with Call B1 Object isn’t.

 

Scenario 1 Outbound:

scenario 1 outbound.png

 

Scenario 2 Inbound:

scenario 2 inbound.png

 

Scenario 2 Call B1 Object:

sc2 B1 Object.png

 

In the Failure Messeage I see 4 'messages' and 1 Result Message is given:

01

<Payload Role="S" intype="xml"> 

My file data how I imported in scenario 1

02

<Payload Role="R" id="atom0" pltype="xml">

How SAP imported my meassage in scenario 1

03

<Payload Role="R2" Call="object" Type="DIAPI">

The same data as by 02

04

<Payload Role="C" id="atom1" system="0010000107" status="success" b1login="Technical User" method="Synchronous Retrieval" objectid="17" payload="atom0" keyname="DocEntry" keyvalue="465" DIresult="success" DImsg="">

All the fields from table ORDR, RDR1 and RDR12

05

Result Message

com.sap.b1i.xcellerator.XcelleratorException: XCE001 Nested exception: com.sap.b1i.bizprocessor.BizProcException: BPE001 Nested exception: java.lang.NullPointerException: while trying to invoke the method com.sap.b1i.bizprocessor.BizProcMessage.setProperty(java.lang.String, java.lang.String) of an object loaded from local variable 'inMsg'

 

Can you help me to explain:

01

Have I filled in correctly the outbound, bound and Object Call

02

How to make the key value in the Object call dynamic

03

Why do I see 4 time the results of my import in the Failure message

04

How do I have to configure the atom0.xls from scenario 2

05

what means the result message?

 

kind regards

Re: OrderCreation and OrderConfirmation

$
0
0

Hi,

 

in your inbound definition the parameters "scenario step identifier" and "identifier" must be equal.

Please change the value of "identifier" towards the name of the scenario step.

 

Reactivate after the change.

 

You will get the complete message flow of your predecessor step in Payload segment S of your successor step. Here You will also find the DI API result of your order creation.

 

In the B1 object call atom there are several ways to retrieve your dynamic key, please check the content help under following symbol:Capture.PNG

 

Please also keep the parameter for SysID variable and don't use the hard selection '0010000107":

A Leading # Indicates Actual Value, Otherwise this is an XPath, like e.g. /vpf:Msg/vpf:Body/vpf:Payload[./@Role='S']/vPStatus/vpf:Msg/vpf:Header/vpf:ReceiverList/vpf:Receiver[./@handover='P']/@Id


Parameters with * Support Variables, Properties, and so on.

 

Best regards

Bastian

Usage in Parameter Fields of an Atom User Interface

Variable

Description

$string

This is a placeholder for the value of a system variable, local variable, global variable or local or global property.

$string(name)

This is a placeholder for the value of a system variable, local variable, global variable or local or global property.

To bypass the cross-side scripting, check for an SQL call, explicit type casting to string is possible. This is only relevant in the context of an SQL call atom.

$[name]

This is the placeholder for the value of the first element with this name in the current integration framework message.

$[atomx/name]

This is a placeholder for the value of the first element with this name in the section, created by atomx in the current integration framework message.

$(name)

This is a placeholder for the value of a memory variable

$((name))

This is a placeholder for the value of a session variable

$*sysid.adapter.prop*

This is a placeholder for the value of a property related to an entry in SLD (for example, $*0010000101.JDBC.url*)

${tbl[row,col]}

This is a placeholder for the value of a global table type 1. row can be a number (for example, 2) or a condition (for example, 2=’233’ or 2=233)

${tbl[row,row,col]}

This is a placeholder for the value of a global table type 2. row can be a number (for example, 2) or a condition (for example, 2=’233’ or 2=233)

$?cfgpar?

This is a placeholder for the value of an integration framework connectivity or runtime parameter

 

For all notations in brackets or parenthesis, you can use a local or global variable in the notation to define the values (name, atomx, tbl, row, col).

 

EXAMPLE

$(($name))

Re: Needs help with certificate

$
0
0

Hi Lars,

 

please be aware, if you update B1i, the default cacerts of JRE will be restored and your changes will be overwritten.

You can upload ".keystore" from B1iXcellerator folder into B1i as jks file via Control Center -> Maintenance -> BizStore Upload:

Capture.PNG

Afterwards attach the certificates via "Control Center -> Configuration -> Certificate Admin".

Capture.PNG

The password is stored in the java keystore file and can be found in following folder path, where the B1 is installed: <localdrive>:\..\Tomcat\conf\server.xml .

Capture.PNG

For each certificate please choose the same password as for the JAVA keystore.

 

Now an B1i patch upgrade will not affect your imported certificate, anymore.

 

Best regards

Bastian

Re: Needs help with certificate

$
0
0

Hi Bastian!

Great remark. I will consider this as I don't won't problem with upgrades.

 

Regards

Lars

Re: Needs help with certificate

$
0
0

... i just forgot to mention to fill the parameter "trustStoreURI" in SLD for H.Any and W.Any system type with the bizstorepath to the uploaded keystore file:

Capture.PNG

Of course this parameter "trustStoreURI" is also available for the cal atoms.


Best regards

Bastian


Re: Encoding Problems

$
0
0

Hi Bastian and Silvio,

  I'm tryng to do a similar thing launching with ajax a post with json payload and parse it with b1if.

 

My problem are:

 

1 the format of the xml coming from the json is completely different from the format that shows Silvio in the first post... Silvio shows object with subobject as strings ecc..

In my sample I've got onlly couples key name.

 

2 if i put the parameter  ?bpm.pltype=json

 

I've got an error from the server

 

2015-09-18 15_28_12-DEV2015 9.1 PL7 SQL2012 R2 - VMware Player (Non-commercial use only).png

 

2015-09-18 16_11_49-DEV2015 9.1 PL7 SQL2012 R2 - VMware Player (Non-commercial use only).png

I don't understand if i'm wrong when i call the rest from sap ui 5:

 

2015-09-18 15_32_16-DEV2015 9.1 PL7 SQL2012 R2 - VMware Player (Non-commercial use only).png

In the http inbound help i ddn't found anything that solvwes my problem.

Re: Encoding Problems

$
0
0

Hi Luca,

 

In "Monitoring -> Process Control -> Scenario Processes - Inbound section" you should be able to see the incoming message: the incoming message will be implicitly transformed from JSON into XML.

During the transformation "io" will probably the root tag.

 

Now please check your scenario step inbound channel definitions:

Which "identification method" did you choose?

 

In case you took "Root Tag" please try it with identifier = "io".

You could also change to Identification Method = "URL Parameter" and fill Identification Parameter with "urlpar(action)" with Identifier = "PlaceOrder"

 

 

Best regards

Bastian

ICO marketing process revise issue

$
0
0

Hi experts:

 

 

the system environment is as following:

SAP B1 9.1 PL07 + intercompany 2.0 PL12

 

The scenario is:

1. Company A received sales order with 3 items from a customer and then create PO and send to IC Company B.

2. Company B received from company B draft sales order and then confirmed sales order.

 

My question is:

 

Customer would like to change one of items therefore, PO of company A need to revised and make changes to SO of company B.

 

However, it seems ICO marketing document is not allowed to delete item or change item.  How can I  edit and revise ICO marketing doc ??

 

Please help !!

Re: OrderCreation and OrderConfirmation

$
0
0

hi Bastian

 

I still receive in the Message Log under Failure an error with as result message:

 

com.sap.b1i.xcellerator.XcelleratorException: XCE001 Nested exception: com.sap.b1i.bizprocessor.BizProcException: BPE001 Nested exception: java.lang.NullPointerException: while trying to invoke the method com.sap.b1i.bizprocessor.BizProcMessage.setProperty(java.lang.String, java.lang.String) of an object loaded from local variable 'inMsg'

 

where this refers to?

 

Regards

How to call external web service using B1if

$
0
0

Hi,

 

In my first scenario step I have sqlcall to SAP B1 database and in my second scenario step, I have loaded WSDL of external web service which will insert data in external database.

 

So how can I pass parameters like CardCode,CardName to web service? Can you please provide documentation?

 

Thanks.

Viewing all 973 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>