How to handle CIF before we try to apply Service Packages to SCM?
We have to apply service packages to SCM at PROD.
Could you tell us how to properly take care of CIF? Thanks!
Hello Jennifer,
Steps :
check open transports - se03
clear transport buffer - stms
check update requests - sm13
check table tbatg
suspend batchjobs - report btctrns1
deactivate RFC-Destinations - sm59
make backup of scm
make backup of live-cache
this steps should be enough for SP-upgrade
Regards Thomas
Similar Messages
-
OSB - how to handle poll file error in FTP Proxy Service
I configed a proxy service to poll file from a FTP server.
How can I capture the error when the proxy service cannnot poll? (FTP server is down, folder not found, username invalid, etc )
I want to make it show in the Operations >Message Reports table.It is not possible. Those errors will only be logged to logfile.
Manoj -
How to handle exeptions and authorization management in WEB SERVICES
Hi all,
Please send some documents or links on handling exceptions in web services and Authorization management also.
Useful will be rewarded.
Regards
Neslin.i suggest to consult the documentation at help.sap.com, use the search function to the left or make your question more specific.
regards, anton -
How to handle the trigger sequence
I really do not have any idea for this question.
the trigger need to implement:
An employee can not work on more than 2 projects supervised by any given department.
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
CREATE TABLE WORKS_ON
( ESSN VARCHAR2(9) NOT NULL,
PNO NUMBER NOT NULL,
HOURS NUMBER(3,1) NOT NULL,
PRIMARY KEY (ESSN, PNO));
DESC WORKS_ON;
INSERT INTO WORKS_ON VALUES
('123456789',1,32.5);
INSERT INTO WORKS_ON VALUES
('123456789',2 ,7.5);
INSERT INTO WORKS_ON VALUES
('666884444',3 ,40.0);
INSERT INTO WORKS_ON VALUES
('453453453',1 ,20.0);
INSERT INTO WORKS_ON VALUES
('453453453',2,20.0);
CREATE TABLE PROJECT
(PNAME VARCHAR2(15) NOT NULL,
PNUMBER NUMBER NOT NULL,
PLOCATION VARCHAR2(15),
DNUM NUMBER NOT NULL,
PRIMARY KEY (PNUMBER), UNIQUE(PNAME));
DESC PROJECT;
INSERT INTO PROJECT VALUES(
'ProjectX',1, 'Bellaire',5);
INSERT INTO PROJECT VALUES(
'ProjectY',2, 'Sugarland',5);
INSERT INTO PROJECT VALUES(
'ProjectZ',3,'Houston',5);
INSERT INTO PROJECT VALUES(
'Computerization',10,'Stafford',4);i create package and two trigger like following in order to avoid mutating table.
PACKAGE "HW4AIDB" AS
TYPE EmploadY IS RECORD(
Empessn varchar2(9),
Empprojectcount number,
Empdepartcount number
TYPE EmploadarrayY is table of EmploadY
index by BINARY_INTEGER;
Empload EmploadarrayY;
Emploadsize number;
END;
create or replace
TRIGGER TPROJECTA AFTER INSERT OR UPDATE OR DELETE ON WORKS_ON
DECLARE
i number:=0;
BEGIN
HW4AIDB.Emploadsize :=0;
for m in (select w.essn empessn,
count(w.pno) empprojectcount, count(distinct p.dnum) empdepartcount
from works_on w, project p
where w.pno=p.pnumber
group by w.essn)loop
i :=i+1;
HW4AIDB.Empload(i).Empessn := m.empessn;
HW4AIDB.Empload(i).Empprojectcount := m.empprojectcount;
HW4AIDB.Empload(i).Empdepartcount := m.empdepartcount;
dbms_output.PUT_LINE('TPROJECTA '||' '||m.empessn||' '||m.empprojectcount||
' '||m.empdepartcount);
end loop;
HW4AIDB.Emploadsize :=i;
dbms_output.PUT_LINE('==================================');
END;TRIGGER TSALARYB BEFORE INSERT OR UPDATE OR DELETE ON EMPLOYEE
FOR EACH ROW
DECLARE
w HW4AID.EmploadX;
i number;
mypos number;
BEGIN
mypos :=-1;
for i in 1..HW4AID.Emploadsize loop
if(:new.ssn = HW4AID.Empload(i).Empssn) then
w.Empmgrsalary := HW4AID.Empload(i).Empmgrsalary;
w.Empsalary := HW4AID.Empload(i).Empsalary;
mypos :=i;
exit;
end if;
end loop;
i :=mypos;
dbms_output.put_line('NEW '||:new.ssn||'-'||:new.salary);
if updating then
dbms_output.put_line('updating......');
if(:new.salary > w.Empmgrsalary) then
raise_application_error(-20005,'the salary is higher than that of department manager');
end if;
dbms_output.PUT_LINE('update done');
end if;
END;
i defined two trigger for AFTER, trigger run orders are acorrding to. before statement level, before row-level, after row level and after statement level.
so my trigger actually can not implement requirement. how to handle it. now i try to use this rule: select w.essn, w.pno,p.pnumber, p.dnum from works_on w, project p where w.pno=p.pnumber; in statement level trigger. howerver in row-level trigger i can not get value i need(p.dnum i can not get its count). if you guy have any other ideas, pls give me some advise. my brain is really run out of.
Thanks for your help!!!I would recommend creating a package/procedure that is the only way to insert a user into the works_on table. Then inside this procedure you need to serialize access to the works_on table by using a select for update. Then you can count the number of projects and ensure that the new works on is valid.
If you try to use triggers then due to Oracle's mutli-versioning, if two users insert the same data at the same time, the data integrity will be violated.
You will obviously have an employee table. I have created one here as follows:
create table employee (essn varchar2(9) primary key);
insert into employee values ('999999999');
Then you can use this table to serialize access to the works_on table by issuing a select for update against it. If you don't do this then two users executing the procedure at the same time will violate the constraint. It is important that you understand this and try it out with multiple sessions so that you understand it.
create or replace procedure insert_works_on
(p_essn varchar2, p_pno number, p_hours number)
as
l_essn varchar2(9);
l_count number;
begin
select essn
into l_essn
from employee
where essn = p_essn
for update;
select count(*)
into l_count
from works_on w
join project p on p.pnumber = w.pno
where w.essn = p_essn
and p.dnum = (select dnum
from project
where pnumber = p_pno);
if l_count < 2
then
insert into works_on values (p_essn, p_pno, p_hours);
else
dbms_output.put_line('Employee works on more than 1 project for dept');
end if;
end;
Then you can try it out:
begin
insert_works_on('999999999',1, 10);
end;
commit;
begin
insert_works_on('999999999',2, 20);
end;
commit;
begin
insert_works_on('999999999',3, 30);
end;
commit;
The first two will succeed and the last will fail. Try it out in multiple session as well to ensure it works for a multi-user scenario. -
with firefox 3 everything works fine. with 4 and 5 when I try to complete billing info I get a question about how to handle aspx files. nothing works. all I get is a new tab with a blank screen, not data no nothing. When I loaded firefox 4 and had the problem I reinstalled 3 to solve it. I hoped when 5 came along it would include a fix, no such luck. I read many questions about AOL logon that is the same as my problem and have tried all the suggestions with no luck.
What are you expecting when the aspx window comes up, a PDF or a regular web page?
Here's the process to roll back:
First, I recommend backing up your Firefox settings in case something goes wrong. See [https://support.mozilla.com/en-US/kb/Backing+up+your+information Backing up your information]. (You can copy your entire Firefox profile folder somewhere outside of the Mozilla folder.)
Next, download and save Firefox 3.6 to your desktop for future installation. http://www.mozilla.com/firefox/all-older
Close Firefox 5.
You could install Firefox 3.6 over it (it usually worked with Firefox 4) or you could uninstall Firefox first. If you uninstall, do not remove your personal data and settings, just the program.
Unless you have installed an incompatible add-on, Firefox 3.6 should pick up where you left off. If there are serious issues, please post back with details.
Note: I haven't actually tried this myself! -
Before upgrading my system from Snow Leopard to Mountain Lion I had taken a backup of iPhoto library in my external drive. But now when I try to open that package, I'm directed to app store to buy new iPhoto. Why would apple install iPhoto by default with Snow Leapord and make us import all our photos in it at the first place, and now ask for money if we want to retrieve our photos back on mountain lion? What if they make contacts a paid app with the next OS upgrade, and then bully us to pay money if we want our contacts? This is something very dissappointing on Apple's part. I need answers here.
I fail to remember if the installer gave me an option to keep my applications.
The Mountain Lion installer will not delete applications. It will only mark applications, that are not compatible with your current system with a "forbidden" sign in the icon. And you cannot launch them.
Does your iPhoto icon in the Applications folder look like this?
Then your iPhoto version is incompatible and cannot run with Mt. Lion. If it is iPhoto '11, with a versionnumber starting with 9.x.x., you can upgrade it by downloading a newer version from the Apple downloads site http://support.apple.com/kb/DL1650.
But if you have 8.x.x, you need to buy an upgrade.
Regards
Léonie -
Hi, All. I just bought a new IPhone 5 and before I try to sync it I am wondering if I will have an option to download only my Music / my pictures
only from the Cloud? Really only want to transfer my music. Or does it just automatically load everything in the cloud?
TY.Syncing and restoring from backup are two different things.
-
How to handle stored procedure response having multiple queries
Hi Friends,
While working in JDBC to RFC scenario,I faced an issue that my stored procedure is having multiple SQL queries in it. First Select and then update and again some select options.So,how to handle the response of the stored procedure. I read that while using sender JDBC
" db.processDBSQLStatement=<SQL-Select-Statement>
Either specify a valid SQL SELECT statement to select the data to be sent from the specified database, or specify an SQL EXECUTE statement to execute a stored procedure that contains exactly one SELECT statement "
So, please suggest me is there any other way to catch the output of the stored procedure.Because, if select statement is working fine but if any other quires fails then data inconsistencies can happen.Kindly help me out.
Thanks and Regards,
NutanHi nutan,
>>Already exception is handled in SP.But,issue is that select will never fail so, sender adapter will get the resultset from select and continue process.But if later any other query fails in SP adpter wont be getting any response.
Along with exception you need to handle the case when some other query fails. A SP is like a procedure which will do a certain list of activities before providing the output. So during this activity if some query fail then you can send back the response with a message!!!! And in XI handle this error (by routing it to some error receiver etc)
>>I need to try something like creating a temporary table and inserting the resultset of slect statement in that. and perform all other operations and after successful completion of all the queries.Again i want to get all the values from the temporary table. So,whether I can write such query in the sender communication channel.Please suggest me for this.
Approach looks ok, but think of the delay for JDBC sender adapter. IT will invoke your SP and will wait for it to fill a table and do all the processing. I guess this may become a issue for you.
Check on the frequency of this interface and message size before taking this design approach
Regards
Suraj -
How to handle Pre-requistes in AppV?
Hi All,
How to handle Pre-requisites in Application Virtualization?
I know that we need to install all the pre-requisites in Sequencer Machine before starting sequencer & then the same pre-requisites should be available in Client. I know that we can use AppV Connection Groups to handle pre-requisites.
When to use AppV Connection Groups & when to use normal installation of pre-requisites in sequencer & Client Machines?
I want to document this in Standards Document & I want to know what should I mention Under How to handle Dependencies?
Whether the dependencies are of Thick Install Or Virtual Applications
Thanks in advance..That's really up to you, what's your expectation, what's your customers expectation.
Personally, if I have an application with a pre-requisite that I know only applies to that application e.g. A runtime with the name of my application in it, I will include that in the one package with my app. If I have a pre-requisite which is likely to
be required by multiple applications, I try to determine how many and what apps before decided what to do with it.
If I have an app which requires, say the latest version of Java and I know that I'm putting that app locally as part of my build. I will keep that Java local too. But that's just my preference...
PLEASE MARK ANY ANSWERS TO HELP OTHERS Blog:
rorymon.com Twitter: @Rorymon -
How to handle authroziation levels in LSMW.
Hi,
How to handle authorization levels in LSMW. Please explain me step by step process.
Thanks
NagendraHi,
U can try to call the LSMW object from a report program and there u can try to check the authorization for the LSMW object...
Type pools
TYPE-POOLS: tumls. " LSM Workbench: Type-Pool
Data declaration
DATA: project TYPE tumls_project, " Project
subproj TYPE tumls_subproj, " Subproject
object TYPE tumls_objectnew. " Object
START-OF-SELECTION.
Store project
project = 'TPISP - DC'.
Store subproject
subproj = 'VARIANT_MAT'.
Store object
object = '6GSC022_TS3'.
<< Put ur authorization check here..
Call the function module to display object (LSMW) maintenance screen
CALL FUNCTION '/SAPDMC/LSM_OBJ_STARTER'
EXPORTING
project = project
subproj = subproj
object = object
EXCEPTIONS
no_such_object = 1
OTHERS = 2.
Basically from LSMWu2019s initial screen whenever you press enter or continue button it calls the FM /SAPDMC/LSM_OBJ_STARTER and there is no authorisation check prior to do this, only LSMW checks for authorisation when you press Administration from GOTO menu using the FM /SAPDMC/LSM_AUTHORIZATN_CHECK. That means any body can access any object and can do any unwanted change. And it is really hard to track the changes as LSMW does not have any inbuilt version management. So to avoid this before calling the FM we can do the authorisation check based on certain conditions (not necessary to do authority check, but can be achieved by maintaining parameter ID in the user profile or through maintaining custom table) and by this way we can restrict unwanted user access.
Regards,
Joy. -
Don't know how to handle this relationship
I am a college student and am having a hard time wrapping my head around the database I have to work with for a project. The project entails implementing an auto parts application. I have not encountered a relationship like this before. I have linked to a document I made to describe the table. It can be found here: http://91.121.116.152/graph.pdf. There are basically 4 tables in the database. There is 1 table for all the automakers. (MAKER). Then, there are many tables in the form of APL___ where ___ is a column for the MAKER Table. The APL tables contain all the different models and links to the different parts. The column RLINK references RADCRX which contains 16 different columns. Each set of 4 columns contains part numbers that link to a RAD___ (where ___ is a 3 letter abbr for a vendor).
I've done my best to explain it in English, but I think the document may help. Naturally the assignment is to find parts for a specified car. My problem is how do I do this as effciently as possible? I don't know how to handle a relationship where column name points to a table name, not a column in the table. It could be done with a very long join such as
SELECT * FROM RADMOD, RADCRX WHERE RADCRX.MOD1=RADMOD.P_NUMBER
or so on for each column in RADCRX. This doesn't seem right. I thought about doing joins on the tables, but I don't know how to do it. The DB as about 20K records. Does anyone have any insight?Try the ff solution if it works:
1.)Create a union view for APL_ _ _
create or replace view v_APL_ALL as
select a.*,'CHE' m_code from APLCHE a
union all
select b.*,'TOY' m_code from APLTOY b
union all
select b.*,'HON' m_code from APLHON b
union all
select c.*,'MIT' m_code from APLMIT c
2.)Create a view for v_APL_ALL and MAKER
create or replace view v_APL_ALL_MAKER as
select a.*,b.M_NUMBER,b.MAKER
from v_APL_ALL a,MAKER b
where a.m_code=b.m_code
3.)Create view for RAD_ _ _
create or replace view v_RAD_ALL as
select a.*,'ARS' VENDOR_CODE from RADARS a
union all
select b.*,'MOD' VENDOR_CODE from RADMOD b
union all
select c.*,'BEH' VENDOR_CODE from RADBEH c
union all
select c.*,'DAN' VENDOR_CODE from RADDAN c
4.) Create a view for v_RAD_ALL and VENDOR
create or replace view v_RAD_ALL_VENDOR as
select a.*,b.M_NUMBER,b.MAKER
from v_RAD_ALL a,VENDOR b
where a.VENDOR_CODE=b.VENDOR_CODE
You can now join them & query it.
Regards,
Benjie -
How to Handle ArrayIndexBoundException
Hi
How to Handle ArrayIndexBoundException in my code.
Though it is Unchecked Excption.Hi
How to Handle ArrayIndexBoundException in my code.
Though it is Unchecked Excption.By checking your indexing before it gets to the VM.
It's called: Proper usage of "conditional" statements, you know, like an "if" statement?
if (index >= myArray.length)
// don't try to access myArray[index] here
else
// safe! (assuming index is also >= 0)
} -
How to handle Thread synchronization
Hi guys,
already i have posted the question for this problem.
but there i didn't explain properly.
so, just bare with my explanation and give me solution.
i am doing with Swings,
I have,
Master class ( having main())
|
|
|
V
Sub Class-------> calling a thread class
here the child class will throw a msgbox after its completion of execution to the sub-class interface.
the code in the sub-class should continue only after the complete execution of the child thread, i.e after it got the msgbox thrown by child thread.
say, on the 100th line of sub-class file we are calling the child thread, then the 101st line should not get executed before the child thread has executed completely.
in my case it is getting executed.
how to handle the situation.
thanx in advance.
--subbuHi, thank you for your reply.
I am NOT creating a JVM in my C/C++ application.
The problem is when I call __declspec( thread ), the system crash.
Your suggestion is if I call from java to C++, for example, send data to C++, I do NOT need handle the thread whatever the C++ use thread and Socket.
You are right. The C++ code works well in VC++ environment. And the JNI code works well to call simple C++ code (testing).
I handle exception in Java side. That means I use try .. catch.. block to handle native method. But you mean I need check error and exception in C++ side ?
For example
jint err = env->MonitorEnter(obj);
if (err)
//todo
else
// todo
I will handle it in the real code.
I appreciate your suggestion.
Have a good day
anne -
How to handle exception CX_SY_REF_IS_INITIAL
hi experts,
im working on a test scenario for abap mapping in SAP XI im getting this error
An exception with the type CX_SY_REF_IS_INITIAL occurred, but was neither handled locally, nor declared in a RAISING clause Dereferencing of the NULL reference
i understand that i need to catch this exception in the abap coding but i'm not familiar with oops concepts
can any one please suggest me how to handle this exception for the following code...
method IF_MAPPING~EXECUTE.
break x1149.
* initialize iXML
TYPE-POOLS: ixml.
class cl_ixml definition load.
** Instances & Variable declaration =======================
* instance main factory
TYPES: BEGIN OF t_xml_line,
data(256) TYPE x,
END OF t_xml_line.
DATA: l_ixml TYPE REF TO if_ixml,
* instance input stream factory
l_streamfactory TYPE REF TO if_ixml_stream_factory,
* instance input stream
l_istream TYPE REF TO if_ixml_istream,
* instance input document
l_document TYPE REF TO if_ixml_document,
* instance parse input document
l_parser TYPE REF TO if_ixml_parser,
* instance for elements within the nodes
node TYPE REF TO if_ixml_node,
*instance of nodemap
nodemap TYPE REF TO if_ixml_named_node_map,
* instance for iterator
iterator TYPE REF TO if_ixml_node_iterator,
name TYPE string,
value TYPE string,
* instance main factory
o_ixml TYPE REF TO if_ixml,
* instance output document
o_document TYPE REF TO if_ixml_document,
* instance output stream
o_istream TYPE REF TO if_ixml_ostream,
* instance parse output document
o_parser TYPE REF TO if_ixml_parser,
* instance fot renderer
renderer type ref to if_ixml_renderer,
irc type i,
l_xml_size TYPE i,
*ROOT ELEMENT
l_element_MT_DEMANDTEC_COST TYPE REF TO if_ixml_element,
*NEXT CHILD ELEMENT FROM THE ABOVE PARENT
l_element_DT_DEMANDTEC TYPE REF TO if_ixml_element,
*CHILDREN1 ELEMENT FOR DT_DEMANDTEC
l_element_DT_WHSE TYPE REF TO if_ixml_element,
*CHILDREN2 ELEMENT FOR DT_DEMANDTEC
l_element_DT_DC TYPE REF TO if_ixml_element,
*CHILDREN3 ELEMENT FOR DT_DEMANDTEC
l_element_DT_PLANT TYPE REF TO if_ixml_element,
*CHILDREN4 ELEMENT FOR DT_DEMANDTEC
l_element_DT_QTY TYPE REF TO if_ixml_element.
*saving the xml document
DATA: l_xml_table TYPE TABLE OF t_xml_line.
types: begin of t_source,
whse(5),
dc(4) ,
plant(4),
qty type i,
end of t_source.
types: tt_source TYPE STANDARD TABLE OF t_source.
data: wa_source type t_source.
data: it_source TYPE tt_source,
ivalue type string.
* Procedures and business logic =======================================
* Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
* Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
* create input stream
l_istream = l_streamfactory->create_istream_xstring( source ).
* initialize input document
l_document = l_ixml->create_document( ).
* Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
* parse input document
l_parser->parse( ).
* Validate a document
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
* Parse the stream
IF l_parser->parse( ) NE 0.
IF l_parser->num_errors( ) NE 0.
DATA: parseerror TYPE REF TO if_ixml_parse_error,
str TYPE string,
i TYPE i,
count TYPE i,
index TYPE i.
count = l_parser->num_errors( ).
WRITE: count, ' parse errors have occured:'.
index = 0.
WHILE index < count.
parseerror = l_parser->get_error( index = index ).
i = parseerror->get_line( ).
WRITE: 'line: ', i.
i = parseerror->get_column( ).
WRITE: 'column: ', i.
str = parseerror->get_reason( ).
WRITE: str.
index = index + 1.
ENDWHILE.
ENDIF.
ENDIF.
* Process the document
IF l_parser->is_dom_generating( ) EQ 'X'.
refresh : it_source.
node ?= l_document.
CHECK NOT node IS INITIAL.
* create a node iterator
iterator = node->create_iterator( ).
* get current node
node = iterator->get_next( ).
* loop over all nodes
WHILE NOT node IS INITIAL.
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
* element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
WHEN if_ixml_node=>co_node_text.
* text node
value = node->get_value( ).
if name eq 'DT_WHSE'.
wa_source-whse = value.
ELSEIF name eq 'DT_DC'.
wa_source-DC = value.
ELSEIF name eq 'DT_PLANT'.
wa_source-PLANT = value.
ELSEIF name eq 'DT_QTY'.
wa_source-QTY = value.
COLLECT wa_source INto it_source.
CLEAR wa_source.
ENDIF.
endcase.
node = iterator->get_next( ).
endwhile.
ENDIF.
loop at it_source into wa_source .
at first.
* Creating a ixml factory
o_ixml = cl_ixml=>create( ).
* Creating the dom object model
o_document = l_ixml->create_document( ).
endat.
* Build and Fill root node MT_DEMANDTEC_COST
AT FIRST.
l_element_MT_DEMANDTEC_COST =
O_document->create_simple_element(
name = 'MT_DEMANDTEC_COST'
parent = o_document ).
ENDAT.
* Build and Fill Child node DT_DEMANDTEC for parent
* MT_DEMANDTEC_COST
l_element_DT_DEMANDTEC = O_document->create_simple_element(
name = 'DT_DEMANDTEC'
parent = l_element_MT_DEMANDTEC_COST ).
* Build and Fill Child node1 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-WHSE.
l_element_DT_WHSE = O_document->create_simple_element(
name = 'DT_WHSE'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node2 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-DC.
l_element_DT_DC = O_document->create_simple_element(
name = 'DT_DC'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node3 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-PLANT.
l_element_DT_PLANT = O_document->create_simple_element(
name = 'DT_PLANT'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node4 DT_QTY for parent DT_DEMANDTEC
ivalue = wa_source-QTY.
l_element_DT_QTY = O_document->create_simple_element(
name = 'DT_QTY'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
endloop.
* render document ======================================================
* create output stream
o_istream = l_streamfactory->create_ostream_xstring( result ).
* Connect internal XML table to stream factory
o_istream = l_streamfactory->create_ostream_itable( table =
l_xml_table ).
renderer = o_ixml->create_renderer( ostream = o_istream
document = o_document ).
irc = renderer->render( ).
* how do i catch the exception for type CX_SY_REF_IS_INITIAL ...?
endmethod.
full reward points for answers.
Thanks & Regards,
Uday Kumar.
Edited by: UDAY on May 6, 2008 9:32 PMHi Uday,
Its occurs because you're trying to access a objects with null reference. Or you forgot to create an instance or an error occurs during the instance creation. So You should put all your "Procedures and business logic" inside a Try/catch block. as follow.
" Define a class exception object to get error message......
DATA o_exception TYPE REF TO cx_sy_ref_is_initial.
"// Use the statment Try block to catch the error.
TRY.
* Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
* Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
* create input stream
l_istream = l_streamfactory->create_istream_xstring( source ).
* initialize input document
l_document = l_ixml->create_document( ).
* Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
* parse input document
l_parser->parse( ).
* Validate a document
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
* Parse the stream
IF l_parser->parse( ) NE 0.
IF l_parser->num_errors( ) NE 0.
DATA: parseerror TYPE REF TO if_ixml_parse_error,
str TYPE string,
i TYPE i,
count TYPE i,
index TYPE i.
count = l_parser->num_errors( ).
WRITE: count, ' parse errors have occured:'.
index = 0.
WHILE index < count.
parseerror = l_parser->get_error( index = index ).
i = parseerror->get_line( ).
WRITE: 'line: ', i.
i = parseerror->get_column( ).
WRITE: 'column: ', i.
str = parseerror->get_reason( ).
WRITE: str.
index = index + 1.
ENDWHILE.
ENDIF.
ENDIF.
* Process the document
IF l_parser->is_dom_generating( ) EQ 'X'.
refresh : it_source.
node ?= l_document.
CHECK NOT node IS INITIAL.
* create a node iterator
iterator = node->create_iterator( ).
* get current node
node = iterator->get_next( ).
* loop over all nodes
WHILE NOT node IS INITIAL.
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
* element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
WHEN if_ixml_node=>co_node_text.
* text node
value = node->get_value( ).
if name eq 'DT_WHSE'.
wa_source-whse = value.
ELSEIF name eq 'DT_DC'.
wa_source-DC = value.
ELSEIF name eq 'DT_PLANT'.
wa_source-PLANT = value.
ELSEIF name eq 'DT_QTY'.
wa_source-QTY = value.
COLLECT wa_source INto it_source.
CLEAR wa_source.
ENDIF.
endcase.
node = iterator->get_next( ).
endwhile.
ENDIF.
loop at it_source into wa_source .
at first.
* Creating a ixml factory
o_ixml = cl_ixml=>create( ).
* Creating the dom object model
o_document = l_ixml->create_document( ).
endat.
* Build and Fill root node MT_DEMANDTEC_COST
AT FIRST.
l_element_MT_DEMANDTEC_COST =
O_document->create_simple_element(
name = 'MT_DEMANDTEC_COST'
parent = o_document ).
ENDAT.
* Build and Fill Child node DT_DEMANDTEC for parent
* MT_DEMANDTEC_COST
l_element_DT_DEMANDTEC = O_document->create_simple_element(
name = 'DT_DEMANDTEC'
parent = l_element_MT_DEMANDTEC_COST ).
* Build and Fill Child node1 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-WHSE.
l_element_DT_WHSE = O_document->create_simple_element(
name = 'DT_WHSE'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node2 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-DC.
l_element_DT_DC = O_document->create_simple_element(
name = 'DT_DC'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node3 DT_WHSE for parent DT_DEMANDTEC
ivalue = wa_source-PLANT.
l_element_DT_PLANT = O_document->create_simple_element(
name = 'DT_PLANT'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
* Build and Fill Child node4 DT_QTY for parent DT_DEMANDTEC
ivalue = wa_source-QTY.
l_element_DT_QTY = O_document->create_simple_element(
name = 'DT_QTY'
VALUE = ivalue
parent = l_element_DT_DEMANDTEC ).
endloop.
* render document ======================================================
* create output stream
o_istream = l_streamfactory->create_ostream_xstring( result ).
* Connect internal XML table to stream factory
o_istream = l_streamfactory->create_ostream_itable( table =
l_xml_table ).
renderer = o_ixml->create_renderer( ostream = o_istream
document = o_document ).
irc = renderer->render( ).
" The Statement CATCH define a block that catches the exceptions of the
" exception class cx_sy_ref_is_initial
CATCH cx_sy_ref_is_initial INTO o_exception.
" If you need to get the error message text do as follow
DATA errorMsg type string.
" Get the message text
errorMsg = o_exception->GET_TEXT( ).
" Display the error information
MESSAGE errorMsg TYPE 'I'.
ENDTRY.
The TRY block defines a guarded area whose class-based exceptions can be caught in the subsequent CATCH blocks. If no exception occurs in the TRY block and it reaches its end, the system continues the processing after ENDTRY. If a class-based exception occurs in the TRY block, the system searches for an exception handler in the same or an external TRY control structure.
Font: SAP Help
You can see a how to create and use an exception in this example [ ABAP Objects - Defining a Class-based exceptions|https://wiki.sdn.sap.com/wiki/x/19w] .
Best Regards.
Marcelo Ramos -
Thoughts on how LabVIEW handles checkout of file from SCC when file already open
When you already have a file/project open in LabVIEW and it is set to read only because you haven't checked it out, you can go into SCC and do a checkout then save the file immediately. The issue with this is, if your local copy doesn't match the copy in SCC, you will probably be overwriting changes. Sometimes this is convenient because if you have ever edited a MS Word file and then gone to save and it won't let you because it was opened as read-only...then that sucks because you either lose your work, or have to do a copy of the entire word file->close the program->re-open as writable, then paste. This can be avoided with the "LabVIEW way", but the "MS Word" way seems much safer because it forces you to conscioiusly make the file writable (by either checking it out or manually write clicking and changing to writable) BEFORE opening it. I just wanted people's opinions on how LabVIEW handles this, and if there would be a better way.
CLA, LabVIEW Versions 2010-2013VSS
CLA, LabVIEW Versions 2010-2013
Maybe you are looking for
-
Select-string and eliminate the file name of searched file
Is there a way with the select-string command to exclude the file name of the file you are searching and still get the line items that match your results? Similar to the DOS find command results. I am trying to become completely independent of a DO
-
Hi All I inherited a punch of code in an ear file. The ear file contains many jar files (each handles some modules) and 1 war file The users currently run the ear file in a Geronimo server I don't have Geronimo for development but I use eclipse and T
-
Disable ctrl+shift+s of browser plugin
Hi, I have an pdf document which opens in a popup window. I dont want it to be saved to user system. I know that first this file will download to cache and this can not be prevented. Its okey. I have hidden the brower file bar and acrobat reader's sa
-
Downloaded new Foxfire update and now unable to get the tv or movie guide.
downloaded new Firefox update and I am now unable to get any of the sites located under the entertainment banner. Why?
-
IDVD closes unexpectedly when I click the audio button
I have had the most horrible time using this new iDVD software to burn a picture CD. I have chosen to use the Magic DVD option and I am thrilled aout the outcome but everytime I click on the add audio button the program instantly closes and all of my