Subject: Bex to trigger XI interface
Good day mates....
I was asked by my customer to trigger a Bex ->XI -> file scenario.
Is this scenario feasible?
lets say once a day the event happens....
what are the connectivity options available for this scenario. Can I get a WSDL file from the BEx in order to activate it as a web service?
To me it sounds like the wrong methodology...
Appreciate your remarks.
Tomer.
Well, i just gave an idea..not sure if it will actually work! As you said, you will have to check up with BW experts if you can get WSDL format data...besides, BEX uses queries to get the required data from BW databases and i think its also capable of posting data into excel workbooks(not very sure tho')..
if yuo do get some info about all this...do let us know how XI becomes a part of all this
-Sushumna
Similar Messages
-
Good day mates....
I was asked by my customer to trigger a Bex ->XI -> file scenario.
Is this scenario feasible?
lets say once a day the event happens....
what are the connectivity options availabe for this scenario.
To me it sounds like the wrong methodology...
Appriciate your remarks.
N.GWell, i just gave an idea..not sure if it will actually work! As you said, you will have to check up with BW experts if you can get WSDL format data...besides, BEX uses queries to get the required data from BW databases and i think its also capable of posting data into excel workbooks(not very sure tho')..
if yuo do get some info about all this...do let us know how XI becomes a part of all this
-Sushumna -
Bex report to report interface dynamically based on Value in the query
Hi,
Is it possible to change the destination of the report to report interface dynamically based on the data of the bex query?
For example my query has the below data
Plant | KPI | Quantity
P1 | A | 20.00
P2 | B | 25.00
When the user selects KPI A I want to navigate to Query 1, and when KPI B is selected to Query 2. Query 1 and Query 2 have completely different layouts, Instead of create to two destinations is it possible to pick one based on the KPI selected.
Is this possible in Bex report to report interface or any other way.
Please suggest
Thanks in advance.Hi
we have RRI in sap bw. ( TCODE RSBBS.)
Below article will enlighten you about this topic .
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/607e63d5-b56f-2c10-718f-8e33a08baa89?quicklink=index&overridelayout=true
hope this helps -
How to trigger an interface from a database(COBOL) in online mode?
Hi everybody,
Can you please tell me how to trigger an interface from a database(COBOL) in online mode?
thanks a lot,
Ramya ShenoyIf you can make a HTTP call from you DB platform -
HTTP -> BPM (Receive -> Send Step (execute an SP or your select statement here in the JDBC receiver channel) -> send (to target) )-> end.
VJ -
How to trigger the interface in target system to load the data automaticall
Hi Friends,
This is proxy to file interface. My requirement is to trigger the interface in target system to load the data automatically. For ex: if you are sending a customer data file "/exe_test/custd.dat then the trigger file should be created as /exe_test/custd.trg. How do we actually create this trigger file?
Thanks in advance,
Prathibha.Hi Prathibha,
File (Trigger) -> BP
BP <-> ABAP server proxy (synchronous)
BP -> File
is one and the standard alternative. Just make your interface synchronous, add a msg type for the request (i think you need only one field), take the existing for the response. Regenerate your proxy.
Alternative 2 would be:
File (Trigger) -> ABAP server proxy (asynchronous)
ABAP server proxy calling a ABAP client proxy
ABAP client proxy -> File (asynchronous)
You avoid using BPM, what can be an advantage of huge traffic (performance). This solution has a worse value for the future, because a person, who did not developed the process wouldnt see that the both messages belong together.
Regards,
Udo -
Trigger Second Interface for the same Creation event
Hello all,
I have to send my every created equipment to two different systems.
I created Custom function Modules which create individual Idocs.
I called these function modules in Methods and we created two custom Tasks to trigger workflow creation event.
Problem is system is not accepting the second event triggering. It is showing
'Feed back After error'
'Deactivating' --- In Event Trace, and it is deactivating the second link in SWETYPV and first event is working fine.
First Event was developed long back and we did for second event now.
Did i miss something for my new Tasks?
If i change the setting of Event delivery to '(always) Using Queue ' for second event in SWETYPV,
It is not showing error but event trace is showing that second event is in Queue?
How to process this Event?
Thanks,
Krishna.Hello,
It was Checked already..
still not working..
Event Trace error was giving this error also..
'Event EQUI CREATED for task TS90100007 not defined as start/end event'.
Regards,
Krishna.
Edited by: Krishna on Sep 11, 2009 3:32 PM -
Is it possible to trigger an interface automatically based on an event?
Hi,
What are the settings needed to make sure that an outbound interface will be triggered automatically whenver an event occurs?
In my case, whenever an invoice gets fully paid, an outbound interface should be triggered automatically.
Is it possible to configure this Triggering Mechanism? If so, someone please provide me all the steps needed to set up this Triggering Mechanism...or please let me know if this Triggering Mechanism is not possible to set up in SAP...
Please do help...Thanks...
Uma.Hi Uma,
For the event part :
In transaction SM36, you can schedule a job to start after a specified event. This could be a specific event that you have created.
About the trigerring:
If you have an exit of some sort attached to the invoice processing, you will only have to call FM 'BP_EVENT_RAISE' with the event you have created.
Best regards,
Guillaume -
Tcl script help -- include interface description in status message
Hi there,
I'm trying to create a script that will email me when an interface goes down, and include the interface description in the email. I've found a script that successfully emails me when the status changes, and I found another script that will parse for the interface description, but I can't seem to get them to work together. I've mashed them up together into the below script:
# EEM policy that will monitor SYSLOG for Interface status changes.
# If UPDOWN message is detected, send an email with interface information.
### The following EEM environment variables are used:
### _email_server
### - A Simple Mail Transfer Protocol (SMTP)
### mail server used to send e-mail.
### Example: _email_server mailserver.example.com
# Register for a Syslog event. Event Detector: Syslog
# Match pattern for Interface Status change
::cisco::eem::event_register_syslog pattern "%LINK-3-UPDOWN"
# NAMESPACE IMPORT
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
# Set array for event_reqinfo
# Array is populated with additional event information
array set Syslog_info [event_reqinfo]
set msg $Syslog_info(msg)
# Set routername variable for use later
set routername [info hostname]
# Parse output for interface name
if { ! [regexp {: ([^:]+)$} $msg -> info] } {
action_syslog msg "Failed to parse syslog message"
regexp {Line protocol on Interface ([a-zA-Z0-9]+)} $info -> interface
# ------------------- cli open -------------------
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli $result
# Go into Enable mode
if [catch {cli_exec $cli(fd) "enable"} result] {
error $result $errorInfo
#Find interface description
if [catch {cli_exec $cli(fd) "show interface $interface | inc Description" } description] {
error $description $errorInfo
#--------------------- cli close ------------------------
cli_close $cli(fd) $cli(tty_id)
set time_now [clock seconds]
set time_now [clock format $time_now -format "%T %Z %a %b %d %Y"]
# EMAIL MESSAGE
# This manually creates a text message with specific format to be used by the
# smtp_send_email command later to send an email alert.
# Ensure the following are configured:
# ip domain-name <domain.com>
# If a hostname is used for mailservername, ensure the following are configured:
# ip name-server <dns-server>
# ip domain-lookup
# NOTE: Change environment variable _email_server to your SMTP server
# The email below references the following variables:
# $routername: hostname of device
# $time_now: time when specific Syslog message was detected
# $msg: Syslog message received
set email_message "Mailservername: $_email_server
From: [email protected]
To: $_email_to
Cc:
Subject: EEM: Critical interface status change on $routername
This email is generated by EEM.
$time_now
$msg
$description
# Send email message
if {[catch {smtp_send_email $email_message} result]} {
set result "Email send failed"
} else {
set result "Email Sent"
# Debug message to check email transmission status
action_syslog msg "$result"
When I trigger an interface UPDOWN message, I'm getting the following error on the command line:
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: can't read "interface": no such variable
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: while executing
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: "cli_exec $cli(fd) "show interface $interface | inc Description" "
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: invoked from within
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: "$slave eval $Contents"
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: (procedure "eval_script" line 7)
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: invoked from within
Oct 17 23:56:19.355 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: "eval_script slave $scriptname"
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: invoked from within
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: "if {$security_level == 1} { #untrusted script
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: interp create -safe slave
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: interp share {} stdin slave
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: interp share {} stdout slave
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: ..."
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: (file "tmpsys:/lib/tcl/base.tcl" line 50)
Oct 17 23:56:19.359 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: Tcl policy execute failed: can't read "interface": no such variable
Can anyone help me figure out where I'm going wrong?
Thanks in advance,
BrandonHi Dan,
Thanks for the reply. I've made the changes you suggested but I'm still getting the error:
Oct 18 21:41:50.446 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: can't read "interface": no such variable
Oct 18 21:41:50.446 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: while executing
Oct 18 21:41:50.446 HKT: %HA_EM-6-LOG: CriticalLinkStatus.tcl: "cli_exec $cli(fd) "show int $interface | inc Description""
Is there any additional debugging I could place in my script? Normally I would try and print the variables after each line to see what's being populated, but I'm not sure how I can test that from within EEM.
--Brandon -
How to trigger error message in PCUI when a BADI is called in SAP Backend
Hi,
I am currently coding some validations in the implementation of BADI, CRM_CUSTOMER_I_BADI.
I know that PCUI will trigger the interface methods, CRM_CUSTOMER_I_CHECK and CRM_CUSTOMER_I_MERGE.
So is there any way I can deliver status or warning or error message to the users in PCUI, by coding in the above 2 methods?? If yes, how do I do it or if anyone has any sample codes, I will appreciate it very much.
Thanks.Hi,
i think you should post a link to this question in the <a href="https://forums.sdn.sap.com/forum.jspa?forumID=126">CRM Development Forum</a> here in SDN.
Regards
Gregor -
Trigger when generating/updating a PP resource(work center) in SAP ECC 6.0
Hello, SDN members.
The thing is: I want to mapp when a resource (transaction CRC1 ou CR01) is generated to trigger an interface other Non-SAP System.
I am used to use EXITs or BaDIs to mapp changes when it is about process orders, MRP, etc.
I have been looking around in SAP ECC 6.0 without success.
Does anyone could give me a clue of how can I mapp that? It applies also to updating a Resource (transaction CRC2 or CR02).My question is that why step 4) doesn't work normally ?
-
ORA-04092: cannot COMMIT in a trigger - Please advise on solution
Hi guys,
I know this error has been explained in the forum before and I understand where the error comes from, but I need expert's opinion to make the trigger works.
Here is the actual situation:
Table A has a trigger on after insert, and BASED ON THE LAST ROW inserted (only this data is subject to the trigger's actions) does the following:
1. MERGE the data (last row from the source table=A) with the data from the table destination=B. This data is specific to an employee;
2. Open a cursor that goes through all the ancestors of the employee (I have an employees hierarchy) and MERGE the same data (but for ancestors) with the table destination;
To be more specific :
EmpID LOB Day Status
12 1007 29 Solved
EmpID has ancestors 24 and 95. Therefore in the destination table I will have to do:
1. Merge data for EmpID 12;
2. Merge data for EmpID 24, 95:
EmpID LOB Day Status
24 1007 29 Just S (this is the status for ancestors)
95 1007 29 Just S
Steps 1 and 2 are inside a PL/SQL procedure that works fine by itself, but not within the trigger (since there are many transactions on the destination table). These 2 steps are required because for EmpID 12 I set a status and for the ancestors I set up a different status (this was the only way I could think of).
Can someone give me a hint how should I handle this situation ?
Thank you,
JohnTry this
create or replace procedure SEQ
is
pragma AUTONOMOUS_TRANSACTION;
BEGIN
EXECUTE IMMEDIATE 'create sequence ' || V_PROD ||
' minvalue 1 maxvalue 999999 start with 1';
END;
CREATE OR REPLACE TRIGGER TRG_GEN_SEQUENCES
BEFORE INSERT on MASTER_TABLE
FOR EACH ROW
DECLARE
V_PROD VARCHAR2(5);
N_ID NUMBER := 0;
CT NUMBER := 0;
ERR_MSG VARCHAR2(2000);
BEGIN
-- Retrieve the ID e of the last inserted row which is 100 by default
-- set the default client_id value with nextvalue of sequence prod_IDS
IF :NEW.ID = 100 THEN
V_PROD := :NEW.PROD;
SELECT PROD_IDS.NEXTVAL INTO N_ID FROM DUAL;
:NEW.ID := N_ID;
END IF;
BEGIN
SELECT COUNT(*)
INTO CT
FROM USER_SEQUENCES US
WHERE UPPER(US.SEQUENCE_NAME) = UPPER(V_PROD);
IF CT = 0 THEN
-- create the sequence with name of V_PROD if doesn't exist
INSERT INTO CDR_SQL_ERR
(DB_OBJ, ERR_MSG, PROC_DATE)
VALUES
('TRG_GEN_SEQUENCES',
V_PROD || ' sequence will be created ', SYSDATE);
--EXECUTE IMMEDIATE 'create sequence ' || V_PROD ||
---' minvalue 1 maxvalue 999999 start with 1';
begin
SEQ;
end;
ELSE
INSERT INTO CDR_SQL_ERR
(DB_OBJ, ERR_MSG, PROC_DATE)
VALUES
('TRG_GEN_SEQUENCES',
V_PROD || ' sequence alreday exist',
SYSDATE);
END IF;
EXCEPTION
WHEN OTHERS THEN
ERR_MSG := TO_CHAR(SQLERRM) || ' ';
INSERT INTO SQL_ERR
(DB_OBJ, ERR_MSG, PROC_DATE)
VALUES
('TRG_GEN_SEQUENCES', ERR_MSG || SEQ_DDL, SYSDATE);
END;
EXCEPTION
WHEN OTHERS THEN
NULL;
ERR_MSG := TO_CHAR(SQLERRM) || ' ';
INSERT INTO SQL_ERR
(DB_OBJ, ERR_MSG, PROC_DATE)
VALUES
('TRG_GEN_SEQUENCES', ERR_MSG || SEQ_DDL, SYSDATE);
COMMIT;
END; -
Dynamic interface determination based on file content
Dear all,
I am trying for a while to solve my issue, but wasn't able to find the answer. Maybe you could point me in the right direction whether using standard or BPM...
I've got one file with multiple entries. Dependend on a field value, I would like to call the right interface and Idoc.
Sample message:
<customers>
<customer>
<name>ABC</name>
<city>XYZ</city>
<trigger>A</trigger>
</customer>
<customer>
<name>DEF</name>
<city>QRT</city>
<trigger>A</trigger>
</customer>
<customer>
<name>GHI</name>
<city>JKL</city>
<trigger>B</trigger>
</customer>
<customer>
<name>MKN</name>
<city>TZG</city>
<trigger>A</trigger>
</customer>
</customers>
Dependend on the content of field "trigger" I would like to send the message to the correct interface (Idoc). I was able to trigger the interface selection in my interface determination based on a condition. So I am looking for field trigger and if = A -> Interface A is called and if = B -> interface B is called. However, it seems it is only checking for the first entry of my payload and then sending all customers to the same interface, no matter what I've got in the trigger field. What I would need is a message split and then only posting the correct rows to the selected interface.
Any ideas would be highly appreciated.
Thanks a lot,
JensHi Jens,
I can think of two options:
1) The logical expression (condition) in the Interface Determination can hold a XPath expression. In your case, it could be complex, as one single XPath has to loop at all the line times for an occurrance.
Some XPath help is available at: http://www.w3schools.com/xpath/xpath_functions.asp#sequence
/people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination
The objective will be to remove the contexts on the trigger node to get a sequence consisting only of the trigger values, and then performing an 'index-of' function on value 'A'. If the result is a null value, then that trigger does not exist and the interface determination will not pass for 'A'. Similar condition can be used for other values of trigger.
2) Create a separate receiver system / service for each interface A, B etc. Then you can use the enhanced Receiver Determination feature in the IR itself if you are on SP16. Check this:
/people/venkataramanan.parameswaran/blog/2006/03/17/illustration-of-enhanced-receiver-determination--sp16
Good luck,
Bhanu -
Interface not getting passed to NW BPM.
Dear All,
Greetings of the day.
We have an SAP to Webservice async scenario, through the NW BPM.
We are facing an issue in sending the trigger message (interface to BPM is XI 3.0 compatible) from SAP to the NW BPM. We are getting the following error.
Message could not be processed.Reason: com.sap.aii.proxy.xiruntime.core.ESPXISystemFaultException: Error encountered during processing of XI request message in inbound ESP; Hint: com.sap.engine.interfaces.webservices.runtime.RuntimeProcessException: Technical difficulties were experienced during process execution.
We are getting this the error when I am testing the functionality through WSNavigator or SOAP UI. (In actual scenario ABAP proxy will send the message to NW BPM).
I have tried testing the BPM from the Netweaver Admin and process is going into BPM. I can see the Interface which will be triggered first in the BPM, in the message monitoring.
Request your expertise in overcoming the error for triggering the BPM.
Thank you,
Best Regards,
AjayHi Frank,
Here is the Trace:
P.S: I have just replace the interface/product names with *
process()
[EXCEPTION]
com.sap.engine.interfaces.webservices.runtime.RuntimeProcessException: Technical difficulties were experienced during process execution.
at com.sap.glx.adapter.app.ucon.UnifiedConnectivityAdapter.invokeProvisionedMethod(UnifiedConnectivityAdapter.java:1010)
at com.sap.glx.adapter.app.ucon.wsprov.GalaxyImplementationContainer.invokeMethod(GalaxyImplementationContainer.java:109)
at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.process0(RuntimeProcessingEnvironment.java:710)
at com.sap.engine.services.webservices.espbase.server.runtime.OnewaySyncProcessor.process(OnewaySyncProcessor.java:24)
at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.preProcess(RuntimeProcessingEnvironment.java:659)
at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.process(RuntimeProcessingEnvironment.java:322)
at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.process(RuntimeProcessingEnvironment.java:245)
at com.sap.engine.services.webservices.espbase.xi.impl.ESPXIMessageProcessorImpl.process(ESPXIMessageProcessorImpl.java:38)
at com.sap.aii.proxy.xiruntime.core.esp.ESP_XI_MessageAdapter.invokeXI2ESPProcessor(ESP_XI_MessageAdapter.java:430)
at com.sap.aii.proxy.xiruntime.sbeans.esp.xiproxies.AsyncInvokeWSInterfaceIn_PortTypeImpl.asyncInvokeWSInterfaceIn(AsyncInvokeWSInterfaceIn_PortTypeImpl.java:24)
at com.sap.aii.proxy.xiruntime.sbeans.esp.xiproxies.AsyncInvokeWSInterfaceIn_PortTypeBean$1.operate(AsyncInvokeWSInterfaceIn_PortTypeBean.java:76)
at com.sap.aii.proxy.xiruntime.core.esp.ThrottlerImpl.execute(ThrottlerImpl.java:30)
at com.sap.aii.proxy.xiruntime.sbeans.esp.xiproxies.AsyncInvokeWSInterfaceIn_PortTypeBean.invokeMethod(AsyncInvokeWSInterfaceIn_PortTypeBean.java:82)
at sun.reflect.GeneratedMethodAccessor1285.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatefulTransactionAssociation.invoke(Interceptors_StatefulTransactionAssociation.java:45)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatefulSessionInstanceGetter.invoke(Interceptors_StatefulSessionInstanceGetter.java:37)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)
at com.sun.proxy.$Proxy3334.invokeMethod(Unknown Source)
at com.sap.aii.proxy.xiruntime.core.XmlProxyJ2EE.parallelWSCall(XmlProxyJ2EE.java:649)
at com.sap.aii.proxy.xiruntime.core.XmlProxyJ2EE.call(XmlProxyJ2EE.java:147)
at com.sap.aii.proxy.xiruntime.core.XmlProxy$ProxyBeanCaller.call(XmlProxy.java:206)
at com.sap.aii.proxy.xiruntime.core.XmlProxy.processRequest(XmlProxy.java:181)
at com.sap.aii.proxy.xiruntime.core.XmlInbound.processRequestMessage(XmlInbound.java:115)
at com.sap.aii.proxy.xiruntime.core.XmlInbound.processMessage(XmlInbound.java:78)
at com.sap.aii.proxy.xiruntime.sbeans.JPRBean.onMessage(JPRBean.java:156)
at sun.reflect.GeneratedMethodAccessor1281.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatefulTransactionAssociation.invoke(Interceptors_StatefulTransactionAssociation.java:45)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatefulSessionInstanceGetter.invoke(Interceptors_StatefulSessionInstanceGetter.java:37)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)
at com.sun.proxy.$Proxy3350.onMessage(Unknown Source)
at com.sap.engine.messaging.impl.spi.ServicesImpl.deliver(ServicesImpl.java:362)
at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1098)
at com.sap.engine.messaging.impl.core.queue.consumer.ReceiveConsumer.processMessage(ReceiveConsumer.java:282)
at com.sap.engine.messaging.impl.core.queue.consumer.ReceiveConsumer.onMessage(ReceiveConsumer.java:76)
at com.sap.engine.messaging.impl.core.queue.Queue.run(Queue.java:1031)
at com.sap.engine.messaging.runtime.MSWorkWrapper.run(MSWorkWrapper.java:58)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
Caused by: com.sap.glx.core.kernel.api.TransitionRollbackException: Exception during prepare, rolling back
at com.sap.glx.core.kernel.mmtx.AbstractTransactionBase.rollback(AbstractTransactionBase.java:701)
at com.sap.glx.core.kernel.mmtx.AbstractTransaction.do_prepare(AbstractTransaction.java:196)
at com.sap.glx.core.kernel.mmtx.AbstractTransaction.commit(AbstractTransaction.java:77)
at com.sap.glx.adapter.app.ucon.UnifiedConnectivityAdapter.invokeProvisionedMethod(UnifiedConnectivityAdapter.java:976)
... 77 more
Caused by: com.sap.glx.core.kernel.api.CancelTransitionException: java.lang.IllegalArgumentException: Generator skipped on service '************_0/pr/pm/Trigger_Message' operation '**************_Async_In'
at com.sap.glx.core.internaladapter.ExceptionAdapter.raiseException(ExceptionAdapter.java:702)
at com.sap.glx.core.internaladapter.ExceptionAdapter.raiseException(ExceptionAdapter.java:672)
at com.sap.glx.core.internaladapter.Transformer$ExceptionProvider.createTransitionException(Transformer.java:625)
at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$GeneratorTemplate$GeneratorInvocationHandler.invoke(Transformer.java:2992)
at com.sap.glx.core.internaladapter.Transformer$TransformerInvocationHandler.invoke(Transformer.java:3605)
at com.sap.glx.core.dock.impl.DockObjectImpl.invokeMethod(DockObjectImpl.java:657)
at com.sap.glx.core.kernel.trigger.config.Script$MethodInvocation.execute(Script.java:248)
at com.sap.glx.core.kernel.trigger.config.Script.execute(Script.java:798)
at com.sap.glx.core.kernel.execution.transition.ScriptTransition.execute(ScriptTransition.java:78)
at com.sap.glx.core.kernel.execution.transition.Transition.commence(Transition.java:196)
at com.sap.glx.core.kernel.mmtx.PrimaryTransaction.inPrepare(PrimaryTransaction.java:162)
at com.sap.glx.core.kernel.mmtx.AbstractTransaction.do_prepare(AbstractTransaction.java:194)
... 79 more
Caused by: java.lang.IllegalArgumentException: Generator skipped on service '***************_0/pr/pm/Trigger_Message' operation '*************_Async_In'
at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$GeneratorTemplate$GeneratorInvocationHandler.generate(Transformer.java:2971)
at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$GeneratorTemplate$GeneratorInvocationHandler.invoke(Transformer.java:2986)
... 87 more -
How to trigger XI scenario from a SQLServer Database?
We plan to realize the following scenario -> Database(Receiver System) - XI - RFC/BAPI (Sender system)
What's the best practice/technique to invoke the 'pull' from the SQLserver database ?
The requirement is to realize this as 'on-demand' initiate i.e. trigger the interface from Receiver system only when it needs the data from R/3
Thanks in advance.
MustafaJDBC adapter works with pooling intervals.
It will pool from time to time (configurable) for changes in some DB, and when that DB is changed, then it will send the new entries to XI and trigger the relevant scenario.
For your case, I'm not sure which would be the best approach.
Maybe you could populate some dummy table with a "request data" entry whenever you need it.
Then, when XI sees this new request entry, it will trigger an interface. There, you could either call a BPM, lookup data in RFC and call another interface back to DB, or you could try async/sync bridge without BPM, using module adapters, as explained in this thread: File - RFC - File without a BPM - Possible from SP 19.
Not too pretty, but might work.
Regards,
Henrique. -
What is the best way to schedule a job for PI interface?
Hi,
I have this PI scenario to implement.
Every day, something (?) needs to trigger PI to call RFC function, get the data and insert it to database.
What is the best practice to schedule such a job in PI?
I want to know best practice to trigger PI interface and how to schedule it.
Also, do I have to use BPM for this?
Thanks for your help.
-Won
Edited by: WON HWANG on Sep 10, 2010 11:21 PMHi Won,
it depends a bit on the scenario that needs to be implemented. I will try to go point by point and give you the options
1. You will need to send a message to PI
- This can be from PI or from ECC. I suggest you use an ABAP proxy client.
- You will need to write an ABAP program that sends this message (calling the proxy client).
- You can schedule this program in a job (SM37).
- If users want control over the job, better schedule it in ECC; if only you or an administrator will control the job, you can do it in PI
- I would use a generic format which you can reuse to trigger other interfaces: From- and To-date, Context, Action, User
- You can have conditions in the Receiver Determination and Interface Determination to route the message to the correct interface, based on the Context and Action for example.
- From- and To-date can be used to make selections in any RFC or table query.
2. You will need a BPM process in PI
- Step 1: Receive the trigger
- Step 2: Call the RFC
- Step 3: Send to database
this is because the RFC call is synchronous, and you cannot route the response to another receiver than the sender of the RFC call. Another options is writing a wrapper in ECC around the RFC function, and at the end implement another PI ABAP proxy client that will be routed to your database interface.
Hope this helps.
kr
Peter Glas
Maybe you are looking for
-
Submit MC.9 does not retrieve data in background processing.
Hi, Im submitting transaction MC.9 in one of my programs. The submit statement seems to retrieve data when the program is run in the foreground, but when the program is scheduled to run in the background the submit statement does not retrieve data. k
-
Ora-01990 error in opening the password file
Hi, I created a password file by using orapwd utility. Then later on I modified the remote_login_passwordfile in the spfile by giving the command: sql> alter system set remote_login_passwordfile=exclusive scope=spfile. Then it is altered. Later on I
-
Read Header Text From VF03 Transaction
Hi Frds, I want to Read Header Text From VF03 Transaction Read Transport Number and Transport Date From Vf03 Transaction. Guide Me Briefly How to pass the varaibles to the function Module Regards, Kabil
-
Hello, we are using AFS solution and when we create the PO the items are at size level, but for some PO type we have written a user exit during the save of PO to change the IV mode from size level to item level. now when i go to MIRO and select the P
-
Text not showing up on various phones
On the mobile site im working on the phone and fax in the footer is not showing up on iphones but its showing up on the androids. How do I fix this issue so it works for the iphones?