Map's exception handling
Does anyone have an idea why Map's contract for the get method says that when there exists no mapping for the given key, a null is returned (sentinel value) as opposed to an exception being thrown.
This causes me to call containsKey to determine if the returned null is an error value and a mapped one.
Now, the difference between is
in constant factor rather than algorithmic complexity,
but some people get rather worried about efficiency.I understand that in general I shouldn't directly count the number of operations of an algorithm, but instead look at its overall time complexity. If an extra operation contributing to the constant factor makes the API easier to use then so be it. However, I am often tempted, believing that they will make a major difference, to perform some "optimizations".
It would't hurt for Collections.binarySearch, for example, to also return a pointer (via ListIterator) so that linked-list based Lists could use it to insert an element into a sorted List. As it is, two independent traversals have to be made (finding the index and then traversing to it). Complexity for both ways is the same but the one that returns a pointer seems more natural to me. Perhaps I'm trying to perform two things in one method.
public V get(K key)
Object get = super.get(key);
return get == null ? (super.containsKey(key) ?
) ? null : NO_MAPPING) : get;
}That's what I thought I'd do but then i remembered generics. I'm not to keen on them yet, but assuming NO_MAPPING is defined as above and V is some subtype of Object, the above code won't compile, right?
The reason why I ask all this is that I am indeed writing a wrapper of HashMap (which does not implement Map) and are looking for an elegant way to handle the not-found error inside my get function.
Similar Messages
-
Hi Experts,
How to handle exception in WebDynpro GP callable objects.
I created exception parameter in getdescription() method like
IGPExceptionInfo processExc1 = technicalDescription.addProcessException("USER_NOT_FOUND");
processExc1.setNameKey("USER_KEY");
processExc1.setDescriptionKey("USER_DESCRIPTION_KEY");
processExc1.setFatal(true);
In my Process 2 levels, in block level i am able to see above created exception in exception tab. I create one extra action with same callable object mapped, this action is mapped to exception handler & selected repeat from dropdown.
If any exception occurs execute method(like UMException) how to call handler from coding. I tryed this code to call handler
String localizedMessage =textAccessor.getText("USER_NOT_FOUND");
wdThis.wdFireEventTechnicalException(new GPTechnicalCallableObjectException(logger,localizedMessage,e));
this is not working...
Please any one tell how to call handler from WebDynpro callable object
Regards
SatyaInside a UI side Exception handling task-flow How can I distinguish validation exception and other exceptions..?
Note: Validate entity method in EOImpl might be throwing validation exceptions. But it is not aware of any UI side exception handling. -
Exception Handling (in Mapping) with out using BPM
Hello All,
We are on SP17. I have a simple flow involving XI
JMS -> XI (Message Mapping -> XSL Mapping) -> Mail
I would like to send an email if there is an exception in any of the mapping. But I <b>don't want to use a BPM</b> for this exception handling. How can I do it?
Thanks
AbinashHi Abinash,
yes you can! See these..
/people/alessandro.guarneri/blog/2006/01/26/throwing-smart-exceptions-in-xi-graphical-mapping
/people/sap.user72/blog/2005/02/23/raising-exceptions-in-sap-xi-mapping
All the best!
cheers,
Prashanth
P.S Please mark helpful answers -
BPM - Exception handling in multiline mapping
Hi,
I have in a BPM a block with processing mode ParForEach containing a transformation and then a send step.
If the transformation (mapping) generates an exception for one of the lines of the multiline variable being processed, no subsequent lines are passed to the send step.
I want the process to execute the mapping for each line and then send messages corresponding to lines without error. How can I do?
Thank you
SimonaHi Simona,
I also feel that Michal had suggested the correct solution. Not sure why you are saying that the error gets propagated, if you have defined a proper Exception handling for the inner block.
But regarding your design for "ParForEach", I am not sure whether you really need to carry out a transformation step for each Block instance, in which case you can keep the transformation step before the "ParForEach" block.
Rgds
R Chandrasekhar (RC) -
Exception Handling in Message Mapping and Alert
Hello,
1. Pls let me know the concept of Exception Handling and Alerts.
2. Pls provide some blogs for Exception Handling in Message Mapping.
3.What are Alerts and how it help us in XI. Pls provide some blogs for Alert
4.How are Alerts and Exception Handling can be related say for some scenario
RegardsHi,
Plz check out these blogs of Sravya on Error Handling:
/people/sravya.talanki2/blog/2006/11/22/error-handling-framework-xiout-of-the-box-episode-1
/people/sravya.talanki2/blog/2006/11/23/error-handling-framework-xiout-of-the-box-episode-2
Also check this SAP Presentation:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9418d690-0201-0010-85bb-e9b2c1af895b
/people/alessandro.guarneri/blog/2006/01/26/throwing-smart-exceptions-in-xi-graphical-mapping
Error Handling :
http://help.sap.com/saphelp_nw04/helpdata/en/56/b46c3c8bb3d73ee10000000a114084/frameset.htm
Alerts:
/people/michal.krawczyk2/blog/2005/09/09/xi-alerts--troubleshooting-guide
/people/michal.krawczyk2/blog/2005/09/09/xi-alerts--step-by-step
http://help.sap.com/saphelp_nw04/helpdata/en/56/d5b54020c6792ae10000000a155106/content.htm
BPM:
/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
Working with acknowledgements
regards -
Exception handling in BPM and ABAP mapping
Hello all,
We have a BPM with this structure:
. REC (receiver)
. <begin BLOCK1>
. TRANSFORMATION1 (Abap Mapping)
. <begin EXCEPT> (exception branch)
. CONTROL (Cancel Process)
. <end EXCEPT>
. <end BLOCK1>
The same exception is assigned to the block; to the mapping and to exception branch.
The problem is that, when in the Abap Mapping the exception CX_MAPPING_FAULT is raised, the exception branch seems to be ignored and so, the BPM doesn't finish.
This problem only occurs in some of ours BPMs, because the same thing, when done in other BPMs, works fine.
I know i can change the BPM to turn around this problem, but i would very much like to know the solution to this.
Please, help us with this posting.
thanks in advance
Filipe BarreiraHi again,
We are in SP19, witch invalidates the note 921757 listed.
Also, i made an abap mapping witch only raises the exception. So i think it is not an ABAP error.
Also the XML seems to be correct, because this is a duplicates check routine. A message (with the same data) already entered previously (we trying to avoid another entry).
In the trace analysis for the message, it is stated that the exception has occurred:
<?xml version="1.0" encoding="utf-8" ?>
- <MappingTrace>
<Trace level="1" type="T">Mapping-Namespace:http://xi.es/suministros</Trace>
<Trace level="1" type="T">Mapping-Name:IM_SALIDAS_TESTE1</Trace>
<Trace level="1" type="T">Mapping-SWCV:7CE651C00ABC11DBCBF0C8E8C0A901F6</Trace>
<Trace level="1" type="T">Mapping-Step:1</Trace>
<Trace level="1" type="T">Mapping-Type:R3_ABAP</Trace>
<Trace level="1" type="T">Mapping-Program:ZCLTD_MM_SALIDAS_CARGA_TESTE</Trace>
<Trace level="1" type="T">Creating Abap mapping. Classname =ZCLTD_MM_SALIDAS_CARGA_TESTE</Trace>
<Trace level="1" type="T">CALL APPLICATION MAPPING.</Trace>
<Trace level="1" type="T">Application error in mapping program ZCLTD_MM_SALIDAS_CARGA_TESTE, error code: , error text:</Trace>
</MappingTrace>
the problem is that the process keeps running.
regards Filipe Barreira -
Issue with exception Handling in GG
Hi,
I have bi-directional DML replication setup. I have written a code in replication parameter for handling the exception , Exception handling is working fine my replicate process is not getting ABENDED but Issue is I am not geeting any rows in EXCEPTION table.I had gone through replicat report, there I had seen GG is trying to inser duplicate records in EXCEPTION TABLE and it is failing because of that .
**Command for create Exception Table is-**
create table ggs_admin.exceptions (
rep_name varchar2(8) ,
table_name varchar2(61) ,
errno number ,
dberrmsg varchar2(4000) ,
optype varchar2(20) ,
errtype varchar2(20) ,
logrba number ,
logposition number ,
committimestamp timestamp,
CONSTRAINT pk_exceptions PRIMARY KEY (logrba, logposition, committimestamp)
USING INDEX
TABLESPACE INDX1
TABLESPACE dbdat1
My replication parameter is-
GGSCI (db) 1> view params rep2
-- Replicator parameter file to apply changes
REPLICAT rep2
ASSUMETARGETDEFS
USERID ggs_admin, PASSWORD ggs_admin
DISCARDFILE /u01/app/oracle/product/gg/dirdat/rep2_discard.dsc, PURGE
-- Start of the macro
MACRO #exception_handler
BEGIN
, TARGET ggs_admin.exceptions
, COLMAP ( rep_name = "REP2"
, table_name = @GETENV ("GGHEADER", "TABLENAME")
, errno = @GETENV ("LASTERR", "DBERRNUM")
, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")
, optype = @GETENV ("LASTERR", "OPTYPE")
, errtype = @GETENV ("LASTERR", "ERRTYPE")
, logrba = @GETENV ("GGHEADER", "LOGRBA")
, logposition = @GETENV ("GGHEADER", "LOGPOSITION")
, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"))
, INSERTALLRECORDS
, EXCEPTIONSONLY;
END;
-- End of the macro
REPERROR (DEFAULT, EXCEPTION)
--REPERROR (-1, EXCEPTION)
--REPERROR (-1403, EXCEPTION)
MAP scr.order_items, TARGET scr.order_items;
MAP scr.order_items #exception_handler();
GGSCI (db) 2>view params rep2
MAP resolved (entry scr.order_items):
MAP "scr"."order_items" TARGET ggs_admin.exceptions , COLMAP ( rep_name = "REP2" , table_name = @GETENV ("GGHEADER", "TABLENAME") , errno = @GETENV ("LASTERR", "DB
ERRNUM") , dberrmsg = @GETENV ("LASTERR", "DBERRMSG") , optype = @GETENV ("LASTERR", "OPTYPE") , errtype = @GETENV ("LASTERR", "ERRTYPE") , logrba = @GETENV ("GGHEADER"
, "LOGRBA") , logposition = @GETENV ("GGHEADER", "LOGPOSITION") , committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP")) , INSERTALLRECORDS , EXCEPTIONSONLY;;
Using the following key columns for target table GGS_ADMIN.EXCEPTIONS: LOGRBA, LOGPOSITION, COMMITTIMESTAMP.
2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1403 mapping scr.order_items to scr.order_items OCI Error ORA-01403: no data found, SQL <DELETE FROM "scr"."order_items" WHERE "SUBSCRIBER_ID" = :b0>.
2012-08-30 09:09:00 WARNING OGG-00869 OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EXCEPTIONS) violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("R
EP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMESTAMP") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8).
2012-08-30 09:09:00 WARNING OGG-01004 Aborted grouped transaction on 'GGS_ADMIN.EXCEPTIONS', Database error 1 (OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EX
CEPTIONS) violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("REP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMES
TAMP") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8)).
2012-08-30 09:09:00 WARNING OGG-01003 Repositioning to rba 92383 in seqno 8.
2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1403 mapping scr.order_items to scr.order_items OCI Error ORA-01403: no data found, SQL <DELETE FROM "scr"."order_items" WHERE "SUBSCRIBER_ID" = :b0>.
2012-08-30 09:09:00 WARNING OGG-01154 SQL error 1 mapping scr.order_items to GGS_ADMIN.EXCEPTIONS OCI Error ORA-00001: unique constraint (GGS_ADMIN.PK_EXCEPTIONS)
violated (status = 1). INSERT INTO "GGS_ADMIN"."EXCEPTIONS" ("REP_NAME","TABLE_NAME","ERRNO","DBERRMSG","OPTYPE","ERRTYPE","LOGRBA","LOGPOSITION","COMMITTIMESTAMP") VAL
UES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8).
2012-08-30 09:09:00 WARNING OGG-01003 Repositioning to rba 92383 in seqno 8.
When I am running command
select * from exceptions;
no row selected.
Please help. Why duplicat rows trying to insert in Exception table.Remove (disable) the constraint on the exceptions table and see if inserts will take place. Do you really need that primary key?
-
Exception Handling Problem In BPM
All
I am facing an exception handling problem I am using BPM and , I have caught exception in the transformation step but when there is any data problem in that mapping(mentioned in the transformation)
it is not throwing the exception . is there any option to collect these type of system exception in the bpm and give a alert thru mail
is there any way to collect these type of exception happened in the BPE and raise alert thru generic alert
Thanks
JayaramanHi Jayaraman,
When you say there is any data problem, does that fail the message mapping that you have defined?
If the message mapping used in the tranformation fails, it should raise an exception in the BPM.
Did you test the message mapping using the payload and see if it really fails or not?
Regards,
Ravi Kanth Talagana -
Exception handling without BPM
Hello,
I have done exception handling with BPM.
i.e. when there exception comes in mapping I have use Block Exception Handler.
Can this be done without BPM.
Please snd me blog for it.
RegardsHi,
As explained by Michal it is correct, but in message mapping , we can raise an alert .
See the below links
Alerts with variables from the messages payload (XI) - UPDATED - /people/michal.krawczyk2/blog/2005/03/13/alerts-with-variables-from-the-messages-payload-xi--updated
Triggering XI Alerts from a User Defined Function - /people/bhavesh.kantilal/blog/2006/07/25/triggering-xi-alerts-from-a-user-defined-function
Regards
Chilla -
Integration Process exception handling & alerts, Java
Hello,
I would like to enhance my basic scenarios fool proof and with as much Java as possible.
I have set up several asynchronous and synchronous File to SOAP transfers between systems A and B
using PI70 including my own Java mapping classes and PI's AF_Modules beans. They work just fine.
I have not designed my own Integration Processes yet, so execution is based on channel settings and availability timing.
I have learned this aproach may be exposed to general faults resulting manual monitoring and repairing.
For example server problems at receiver side can result data losses as sender channel just keeps removing source
files like normally, as the process would be better to just stop right there and alert or something.
My question is, is the "Enterprise services Builders" Integration Process & Graphical definition screen the one and only tool to
customize whole process exception handling and alerts in PI, and Java is not an option?
Appreciate your advice on this.
Kind regards mHi m,
Strange Name
>>I have learned this aproach may be exposed to general faults resulting manual monitoring and repairing. For example server problems at receiver side can result data losses as sender channel just keeps removing source files like normally, as the process would be better to just stop right there and alert or something.
If you are looking to handle this particular scenario, then we have the alert mechanism and CCMS monitoring. There you will come to know whether the end system down or not.
Also in addition to this you can write your own java (in message mapping, as modules, java mapping) /abap code (as abap mapping, user exit in standard functions etc) for providing more details in error scenarios. But you need to validate whether the maintenance/development cost for the code is justified in your scenarios
Regards
Suraj -
Exception Handling in OWB Urgent!!!
Hi,
I want to do error handling in OWB Mapping, how to achivw the same as there is no exception handling OPERATOR provided by OWB. Please let me know its URGET...
Not: OWB version is 10g R1.Hi,
Jeane has answered your query. Such vague questions dont have any specific answer. Identify your rules that should raise an exception. On satisfying such conditions, route this record to the error table instead of the target table. your exception is raised and it also has been handled as you have managed to load into a error table upon which you can report.
Regards
-AP -
Exception handling in CE Visual Composer 7.1
Hi,
I have modeled a CAF Business Object and a custom Find operation which looks for a custom key. After that, I have exposed that operation as Web service and consumed it in Visual Composer. It is working perfectly as long as the search key exists in the Business Object backend table. When an arbitrart search term e.g. 1234 which does not exist is given, an error message is displayed and the program logic is halted.
Error occured while executing the service: Error in connection: Could not execute Web service, consult your administrator
My requirement is that, is it possible for me to display a custom message such as "The ID does not exist. Please enter a valid ID".
Besides, is it possbile to bypass this service call if it is not working? In my scenario, this service is actually used to search for any existing data for a selected Customer. If there is no data, the user can proceed with a new definition. So, the above mentioned exception blocks the program flow and the user is not able to continue.
Thanks in advance for any suggestions or ideas.
Regards,
Joon MengI am not aware exception handling features of VC but instead of raising SOAP Fault you can also transfer log message which is user friendly to display.
Another thing, instead of throwing exeption handle it inside try block so that program do not halt abruptly but gracefully. It is always possible to bypass existing service call like you said if output of service is not input of another.
In other word do not map output directly but on the "Next" event of button which enable you to goto next screen to work.
Regards,
Gourav -
BPM Exception Handling control step
Hi,
Does anybody have any idea, whats the variable we need to pass in the control step of exception handling in BPM? and how to map the error message back to the RFC Response.
I had Transformation step, in that mapping is also there.
Is there any ideas??.
Thanks,
Raj.Hi,
The requirement was to send the exception that occured to a target (say file).
<i>insert a block for the exception</i>
You cannot place an exception step without a block right... thats what i mean by the above statement.
Now, just after the exception has taken place, if i put a transformation step, and a send step, you will be taking care of sending the exception message to the target.
<i>how to build the exception message ? It should map from what?</i>
You could build a data type for the exception.
In the mapping, you could map it to constants. For ex:
if you build your DT as
<excep>
<code/>
<desc/>
</excep>
You could map the description to a constant string "timeout".
After this, the send step will send the message to the file, through the abstract interface that you create.
Regards,
Smitha. -
Exception handling in File to IDoc Scenario
Hi,
I have successfully configured File to IDoc Scenario. Now I want to include some exception handling which should be capable of create a mail to recipient when a mapping error occurs.
Can anybody help me out?
Regards,
Suraj KumarHi Suraj,
A few points while creating ALERTS.
<b>TESTING YOUR ALERT CONFIGURATIOn</b>
go to <b>se37 --></b> and <b>execute the report RSALERTTEST</b>. GIve your ALERT CATEGORY in this report. If your ALERTS are configured properly, then your Alert would be triggered and you can see the entry in ALERT INBBOX.
<b>ALERT RULE</b>
Make sure that in your Alert Rule, <b>the option Suppress Multiple Alerts of this rule has not been seelcted</b>.
Finally, if you are on SP14 and above check this note <b>913858</b> for alerts.
If you are below Sp14, then this blog can help you set the background processes needed.
/people/michal.krawczyk2/blog/2005/09/09/xi-alerts--troubleshooting-guide
No BPMis needed to trigger alerts in either case.
Do get back for any clarifications,
Regards,
Bhavesh -
BPM Process - Exception handling or timeout issues?
Hi Guys,
I have a BPM process as below.
1. Receive step: Receive the file with multiple transactions.
2. Transformation step: Split the file into individual transactions
3 Block step which includes -- par for each mode
1. Send Step (Synchronus): Each individual transaction needs to contact the 3rd party system and get the response. -- Do i need to handle any exceptions here ?
2. Container : Collect all the responses
Block ends
4. Transformation: combine all the responses in to a single file
5. Send Step: synchronus -- send the above single file and get the response back
6. Transformation : Transform the above response into the target structure.
7. Send: send the message asynchronusly to the target system
I need suggestion regarding the exceptional handling or any time out issues, i need to take care of.
any suggestions would be really appreciated
Thanks,
Raj
Edited by: raj reddy on Feb 12, 2009 10:12 PMHi,
I) For the Block holding the Sync Send, create an Exception Block. (right click on Sync Send -> Insert -> Exception Branch)
II) Name the Exception block (ex: exceptionHandler).
III) in the Sync Send step ->Properties -> Exceptions -> in System Error - add exceptionHandler.
IV) Now within the Exception handler block you can create containers to hold values from payload, throw exception as email etc).
This will cover your sync send step incase there is an error while sending the request of a timeout during receiving the response.
You can also do the same for the Step 7) Asycn send - if required.
Another suggestion in your question Step 6) can be done outside the bpm, when you do the interface determination for that Asycn Send you can add the Interface mapping that will map the responses to the target structure.
Doing this will reduce one step in your BPM. For further information in how more you can fine tune your bpm, read this blog - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/5113. [original link is broken] [original link is broken] [original link is broken]
All the best.
Regards,
Balaji.M
Maybe you are looking for
-
BI functionality in Solution Manager 4.0
Hi, I'm very interested in knowing how to configure the new BI functionality which is included in SSM 4.0. Is there anybody who has activated this functionality yet? Or knows how to do this (looking for guidelines and if available, any documentation)
-
Arabic Characters not displaying properly in SQL+ Enviorment
Hi, I have Oracle 8i ,I am able to insert and view arabic characters properly from asp and asp.net application but whenever i tried to run sql scripts to fetch arabic data it displays only reverse'?'sign in place of all characters ..... Is there any
-
Need to reinstall acrobat x standard, have license but need installer
need to reinstall acrobat x standard, have license but need installer
-
I can not purchase from the I Tunes store after installing windows 8, I-Tunes does not recognize my password for purchases. The store is asking challange questions that have never been part of my profile. My last purchase was in September, 2012. Thin
-
Integration of Apache Solr* and Webcenter Sites.
Hi , I am new to Apache Solr and Webcenter Sites . could you please guide us how to integrate both of them using SolrJ . please provide us the best ways for integrating them . Thank you, Sashank P