UDF Mapping Nodes
Hello all,
I'm trying to map two source structure names into one destination structure name.
example :
Source
-BBSEG_DEBIT
--NEWBS
--WRBTR
-BBSEG_CREDIT
--NEWBS
--WRBTR
-BBSEG_CREDIT
--NEWBS
--WRBTR
Destination
-BBSEG
--NEWBS
--WRBTR
-BBSEG
--NEWBS
--WRBTR
-BBSEG
--NEWBS
--WRBTR
How can you do this mapping? Thought of UDF but in my case all nodes have to be present otherwise attributes are not coming up in the right context anymore.
Thnks in advance for your help.
Regards,
Laurent.
Hello,
It is more precisely this :
Source
-BBSEG_DEBIT
--NEWBS
--WRBTR
-BBSEG_CREDIT
--NEWBS
--WRBTR
Destination
-BBSEG
--NEWBS
--WRBTR
We can have two structures in source BBSEG_DEBIT and BBSEG_CREDIT with all it's subcomponents.
They can be present x times or not at all for each one. (-> Rajesh this is why i cannot map one field to target node)
The destination is one structure. BBSEG with the same subcomponents.
Is it more clear?
Similar Messages
-
Powerbook G4 10.4.11 won't start from hard drive . Tried repair, " Invalid sibling link,invalid B tree header, invalid map node,invalid record type,the volume needs to be repaired.Powerbook G4 10.4.11 won't start from hard drive . Tried repair, " The underlying task reported failure on exit (-9972).Invalid sibling link,invalid B tree header, invalid map node,invalid record type,the volume needs to be repaired.
The underlying task reported failure on exit (-9972).kauribill wrote:
" The underlying task reported failure on exit (-9972).Invalid sibling link,invalid B tree header, invalid map node,invalid record type,the volume needs to be repaired.
The underlying task reported failure on exit (-9972).
This is a directory issue that Disk Utility cannot fix. Although it manifests itself as a software issue sometimes it may be hardware based. See DiskUtility reports "Underlying task reported failure" when repairing avolume http://support.apple.com/kb/TS1901?viewlocale=en_US". You can try using a utility like TechTool Pro, Drive Genius or Disk Warrior to repair and replace the directory. Another option would be to use the Archive and Install feature to reinstall. If the problem returns after correction you may have a failing or failed HDD.
cornelius -
Mapping node from UIcust &View throws dump in result
hello all,
Need ur urgent help!!
I hav already posted one thread bout dis but didnt got any response.... So doing it again
Not able to map UICust node to View.Till UICust the app works fine but as i map the node to View........ Error comes of contact administrator without any exception
Contact Administrator error is coming after mapping node from UICust with View.
Its not happpening in case of 1 single attribute but while mapping the node this error is encountered even if that node consists of single attribute.
Urgent help required....Kindly help
Thanks n regards
MandeepHi Siva,
4 attr under 1 node in modal node and same i craeted in value node in uicust. but even if i try to map the replicated value node in uicust and map dat to value node of view. still its showin dump (Contact administrator wid no exception)
I hav reopnened the project....... rebuild. it doesnt show any error.... as soon as i go for mapping in view and uicust . it starts throwin dump
Thanks n Regards
Mandeep -
How to map nodes to an embedded Component during runtime?
Hi,
I embed a Component (<i>BasisComponent</i>) in a new created Component (<i>MyComponent</i>) to use some funcionality from it. Therefor, I have to map some ValueNodes from <i>MyComponent</i> to <i>BasisComponent</i> during designtime to transfer the data. I thought, I could use External-Context-Mapping for that. That means I've created a ValueNode in <i>BasisComponent</i>'s InterfaceController and declared it for ExternalContextMapping (let's call it <i>ExtNode</i>.
Because I want to use this basis functionality from different embedding Components (<i>MyComponent1, MyComponent2</i>, etc.), I can't declare the structure of <i>BasisComponents ExtNode</i> yet, it's just an empty ValueNode.
Now, I want to map from my using Components their different ValueNodes to <i>BasisComponents ExtNode</i>.
How to do that? Or is there another possibility to put different value-nodes from different components to the same Node in my <i>BasisComponent</i>? Can this be done during designtime? I believe it can be definitively done during runtime....
kr, achimAchim,
Let me use your example and explain what in fact will work when you are creating attributes/nodes only at design time.
Let us define context in BasicComponent as:
- MyRoot (0..n, selection 0..1, singleton)
|-MyInt (int)
|-MyString (string)
Say, ComponentA has the following context structure:
- rootNode (0..n, selection 0..1, singleton)
|-attA (int)
|-attB (string)
|-attX (string)
--attC
Then you can easly map rootNode of ComponentA to MyRoot of BasicComponent, attA -> MyInt, attB -> MyString, attX left is not used for mapping.
=============
Same is true for ComponentB with
- RootOfBNode (0..n, selection 0..1, singleton)
|-attIgnored (date)
|-attA_INT (int)
|-attB_STR (string)
|-attY (string)
--attZ
ComponentB.RootOfBNode -> CU of BasicComponent.MyRoot, attA_INT -> MyInt, attB_STR -> MyString, attY and attIgnored are not used for mapping.
=============
However, if context of ComponentA is defined as
- rootNode (<b>0..1</b>, selection 0..1, singleton)
|-attA (int)
|-attB (string)
|-attX (string)
--attC
...then you are out of luck -- wrong cardinality of node.
Moreover, this case also fails
- rootNode (0..n, selection 0..1, singleton)
|-attA (string)
|-attB (string)
|-attX (string)
--attC
Here all attributes are strings so mappings will be incomplete. To fix this you need at least fake attribute in rootNode.
And mostly important fact: if you can't map nodes in designer due to mismatch context structures the any dynamic (at run-time) mapping will fail as well in majority of cases.
Valery Silaev
SaM Solutions
http://www.sam-solutions.net -
Hello experts
I am stuck at a specific mapping requirement and i need your help to get me out of it. I am stuck with contexts . I tried using UDFs to manipulate contexts . But my mapping fails in one particular case which is strange and i don't know how to fix it. the exmple below is the case when it fails.
my input file is : it has structure Data_Record ( unbounded)
Line_feed_Item ( unbounded)
(Data_Record)
(Line_Feed_Item)
(ss3pw_td002)250(/ss3pw_td002)
(ss3pw_td003)0034319197(/ss3pw_td003)
(ss3pw_td004)p1(/ss3pw_td004)
(ss3pw_td006)m1(/ss3pw_td006)
(ss3pw_td007)+10(/ss3pw_td007)
(ss3pw_td009)ZUN(/ss3pw_td009)
(ss3pw_td011)5021(/ss3pw_td011)
(ss3pw_td012)5021(/ss3pw_td012)
(ss3pw_td013)1000(/ss3pw_td013)
(ss3pw_td014)b1(/ss3pw_td014)
(ss3pw_td015)20100630(/ss3pw_td015)
(ss3pw_td016)UN(/ss3pw_td016)
(ss3pw_td017)UN(/ss3pw_td017)
(ss3pw_td018/)
(ss3pw_td019)387125620008967527(/ss3pw_td019)
(ss3pw_td020/)
(ss3pw_td022)20090930(/ss3pw_td022)
(ss3pw_td025/)
(/Line_Feed_Item)
(Line_Feed_Item)
(ss3pw_td002)250(/ss3pw_td002)
(ss3pw_td003)0034319197(/ss3pw_td003)
(ss3pw_td004)p1(/ss3pw_td004)
(ss3pw_td006)m1(/ss3pw_td006)
(ss3pw_td007)+10(/ss3pw_td007)
(ss3pw_td009)ZUN(/ss3pw_td009)
(ss3pw_td011)5021(/ss3pw_td011)
(ss3pw_td012)5021(/ss3pw_td012)
(ss3pw_td013)1000(/ss3pw_td013)
(ss3pw_td014)b1(/ss3pw_td014)
(ss3pw_td015)20100630(/ss3pw_td015)
(ss3pw_td016)UN(/ss3pw_td016)
(ss3pw_td017)UN(/ss3pw_td017)
(ss3pw_td018/)
(ss3pw_td019)387125620008967531(/ss3pw_td019)
(ss3pw_td020/)
(ss3pw_td022)20090930(/ss3pw_td022)
(ss3pw_td025/)
(/Line_Feed_Item)
(/Data_Record)
(Data_Record)
(Line_Feed_Item)
(ss3pw_td001)52(/ss3pw_td001)
(ss3pw_td002)250(/ss3pw_td002)
(ss3pw_td003)0034319197(/ss3pw_td003)
(ss3pw_td004)p2(/ss3pw_td004)
(ss3pw_td006)m2(/ss3pw_td006)
(ss3pw_td007)+10(/ss3pw_td007)
(ss3pw_td009)ZUN(/ss3pw_td009)
(ss3pw_td011)5021(/ss3pw_td011)
(ss3pw_td012)5021(/ss3pw_td012)
(ss3pw_td013)1000(/ss3pw_td013)
(ss3pw_td014)b3(/ss3pw_td014)
(ss3pw_td015)20100630(/ss3pw_td015)
(ss3pw_td016)UN(/ss3pw_td016)
(ss3pw_td017)UN(/ss3pw_td017)
(ss3pw_td018/)
(ss3pw_td019)pallet3(/ss3pw_td019)
(ss3pw_td020/)
(ss3pw_td022)20090930(/ss3pw_td022)
(ss3pw_td025/)
(/Line_Feed_Item)
(Line_Feed_Item)
(ss3pw_td002)250(/ss3pw_td002)
(ss3pw_td003)0034319197(/ss3pw_td003)
(ss3pw_td004)p3(/ss3pw_td004)
(ss3pw_td006)m3(/ss3pw_td006)
(ss3pw_td007)+10(/ss3pw_td007)
(ss3pw_td009)ZUN(/ss3pw_td009)
(ss3pw_td011)5021(/ss3pw_td011)
(ss3pw_td012)5021(/ss3pw_td012)
(ss3pw_td013)1000(/ss3pw_td013)
(ss3pw_td014)b3(/ss3pw_td014)
(ss3pw_td015)20100630(/ss3pw_td015)
(ss3pw_td016)UN(/ss3pw_td016)
(ss3pw_td017)UN(/ss3pw_td017)
(ss3pw_td018/)
(ss3pw_td019)pallet4(/ss3pw_td019)
(ss3pw_td020/)
(ss3pw_td022)20090930(/ss3pw_td022)
(ss3pw_td025/)
(/Line_Feed_Item)
(/Data_Record)
My target is Idoc: Idoc (unbounded) )))))Data_Record
E1MBXYH ( 1 ) )))))))Constant
E1MBXYI ( 9999)
Z1ITEM (999)
My mapping condition is if fileds ss3pw_td06 & ss3pw_td14 are same then E1MBXYI is created only once.
if ss3pw_td06 & ss3pw_td14 are same then Zitem nodes belong to the same E1MBXYI
To achieve this i created two UDFs to create context and supress context.
The mapping i have done is as follows
constant ))))))))))E1MBXYH ( 1 )
ss3pw_td06(concat)ss3pw_td14 )))UDF1)))))))E1MBXYI
ss3pw_td06(concat)ss3pw_td14 )))UDF2)))))))Zitem
UDF1 to supress & create only one E1MBXYI ( string[] a)
String toCompare = a[0];
result.addValue(a[0]);
for (int i = 1; i ( a.length; i++)
if (a<i>.equals(toCompare))
result.addSuppress();
else {
toCompare = a<i>;
result.addValue(a<i>);
UDF2 to create context change & create Zitem in same E1MBXYI ( string[] a)
String toCompare = a[0];
int sameValCounter = 0;
for (int i = 0; i ( a.length; i++)
if (a<i>.equals(toCompare)) {
result.addValue(a<i>);
sameValCounter++;
else {
for (int z = 0; z ( sameValCounter; z++) {
result.addContextChange();
result.addValue(a<i>);
toCompare = a<i>;
sameValCounter = 1;
The problem is in my result in the second Idoc occurance , Zitem node ignores a context change from the queue and makes a blank Zitem filed for the last E1MBXYI .
I cannot expalin this . Does any of you have an idea how to fix this ? Your help is greatly appriciated.
- (IDOC BEGIN="1")
- (E1MBXYH SEGMENT="1")
- (E1MBXYI SEGMENT="1")
- (Z1ITEM SEGMENT="1")
(POSNR)0000p1(/POSNR)
(Z2PQC)UN(/Z2PQC)
(Z2PALSSCC)387125620008967527(/Z2PALSSCC)
(Z2PALQTY)10(/Z2PALQTY)
(Z2REFNUM /)
(Z2REASCD /)
(/Z1ITEM)
- (Z1ITEM SEGMENT="1")
(POSNR)0000p1(/POSNR)
(Z2PQC)UN(/Z2PQC)
(Z2PALSSCC)387125620008967531(/Z2PALSSCC)
(Z2PALQTY)10(/Z2PALQTY)
(Z2REFNUM /)
(Z2REASCD /)
(/Z1ITEM)
(/E1MBXYI)
(/E1MBXYH)
(/IDOC)
- (IDOC BEGIN="1")
- (E1MBXYH SEGMENT="1")
- (E1MBXYI SEGMENT="1")
- (Z1ITEM SEGMENT="1")
(POSNR)0000p3(/POSNR)
(Z2PQC)UN(/Z2PQC)
(Z2PALSSCC)pallet4(/Z2PALSSCC)
(Z2PALQTY)10(/Z2PALQTY)
(Z2REFNUM /)
(Z2REASCD /)
(/Z1ITEM)
(/E1MBXYI)
(E1MBXYI SEGMENT="1" /)
(/E1MBXYH)
(/IDOC)
Thank you
Edited by: sudheer kamepalli on Dec 5, 2009 9:49 AM
Edited by: sudheer kamepalli on Dec 5, 2009 9:57 AM
Edited by: sudheer kamepalli on Dec 5, 2009 9:58 AMHi ,
Before posting the thread check the format,...its not understandable.
Regards,
Raj -
Message Mapping - Node's sub-levels navigation
Hi all,
How should I code in order to navigate between different levels of a given node of the source structure?
example:
Main
Struct_11
Struct1101
Field_1101_A
Field_1101_B
Struct1102
Field_1102_A
Field_1102_B
Struct_22
Struct2201
Field_2201_A
Field_2201_B
Struct2202
Field_2202_A
Field_2202_B
In the sample above, how should I do to map the node Struct_11 and, within a UDF (or some other way, but I only imagine through a Java UDF), access and validate Struct1101-Field_1101_A, or Struct1102-Field_1102_B, etc?
If someone could provide me with a sample code, it'd help me.
Thank you!Mark, tks. It helped.
I could do all that I needed withing the XML working as a text.
The only problem now is that, the target structure must be built according to the source cardinality (N..N).
In the sample bellow, see that in the source structure, the Struct_11 repeat 3 times. In the 1st and 3rd, it contains the substructure Struct1101. I have to check if Struct1101 exists, if so, I have to take the Field_1101_A and validate if it's equal to WE. If yes, then the correspondent Field_1101_B has to be sent to target <row> field.
In the 2nd occurrence, there NO Struct1101, so the UDF returns #void#.
UDF to map Struct_11:
int v_pos1, v_pos2, v_start = 0;
String v_Struct1101 = "Struct1101";
String v_WE = "WE";
String v_FieldA = "<Field_1101_A>WE</Field_1101_A>";
String v_FieldB = "";
v_pos1 = Item.indexOf(v_Struct1101);
if(v_pos1 >= 0){
v_pos2 = Item.indexOf(v_FieldA);
v_start = v_pos2 + 32;
v_FieldB = Item.substring(v_start, v_start+10);
}else{
v_FieldB = "#void#";
return v_FieldB;
Source
<Main>
<Struct_11>
<Struct1101>
<Field_1101_A>WE</Field_1101_A>
<Field_1101_B>110</Field_1101_B>
</Struct1101>
<Struct1102>
<Field_1102_A>ZS</Field_1102_A>
<Field_1102_B>222</Field_1102_B>
</Struct1102>
</Struct_11>
<Struct_11>
<Struct1102>
<Field_1102_A>ZS</Field_1102_A>
<Field_1102_B>222</Field_1102_B>
</Struct1102>
</Struct_11>
<Struct_11>
<Struct1101>
<Field_1101_A>WE</Field_1101_A>
<Field_1101_B>112</Field_1101_B>
</Struct1101>
<Struct1102>
<Field_1102_A>ZS</Field_1102_A>
<Field_1102_B>222</Field_1102_B>
</Struct1102>
</Struct_11>
<Struct_22>
<Struct2201>
</Field_2201_A>
</Field_2201_B>
<Struct2202>
</Field_2202_A>
</Field_2202_B>
</Main>
Target
<result>
<row>110</row></result>
<result>
<row>#void#</row></result>
<result> <row>112</row></result>
<result> is mapped to <Struct_11>, so that for each <Struct_11>, one <result> is created.
I've insert this sample payload and in the Definition tab, Display Queue option shows me the right result:
110
#void#
112
However, during the MM test, it throws error:
Cannot create target element /ns0:MT_TARGET/result[2]/row. Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD
Any clue?
Thank you !
Edited by: rvsilvax on Sep 14, 2011 9:00 PM -
Udf mapping: any way to detect last processed record?
Hi !
I need to detect inside my java user defined function, in the graphical mapping, if I am processing the last record of my input message, for example to add a trace message about how many records were processed, etc....I know I can detect the first one by mapping a function to the root node...and how about the last one ? are there any internal mapping variables available to recall inside a udf ?
thanks,
MatiasHi,
one way would be to use a UDF of type queue
which will store all values from your message
this way you can get a total number of records
if you have the total then you know which one is the last one...
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
Terminate Message processing From UDF/mapping
i think u will be checking the condition first if its false then u will be raising alert.
wat u can do is when the condition fails u set the flag to false and send the output of UDF to ifwithoutelse statement and becuase of which ur mapping will not be processed.
u have to do it at root node level and u have to supress the target node when the condition fails.
chiragwat exactly r u doing?
U have to first check all the condition at root level only before message get processed, based on that result u will stop the processing of message at the target end.
u ahve to set the falg in UDF and accordingly u need to suppress the target root node.
chirag -
Hi,
I have source strcture as
ID
Code
Dept
City
My target structure is
Name
Value
After mapping i need my target xml file to be
<Object>
<Name>ID</Name>
<Value>001</Value>
<Name>Code</Name>
<Value>XYZ</Value>
<Name>Dept</Name>
<Value>SAP</Value>
<Name>City</Name>
<Value>NY</Value>
</Object>
Any input?let me explain my scenario more clearly...
My source message is Idoc whose structure is as follows
IDOC 1..1
- E1AFKOL 1..1
Dept
Code
-- E1AFKOL 0..99999
E1AFVOL 0..99999
E1RESBL 0..99999
Charg
Now my otarget strcuture is
ObjectCollection 1..1
-Object 0..99999
--Field 0..99999
Name
Value
Now what i want is, for each occurance of Segment E1AFVOL, Object node should get repeated and for each occurance of segment E1RESBL (child of segment E1AFVOL) 'Field' node should be repeated.
e.g. Input is
IDOC 1..1
- E1AFKOL 1..1
Dept SAP
Code 001
-- E1AFKOL 0..99999
E1AFVOL 0..99999
E1RESBL 0..99999
Charg A1
E1RESBL 0..99999
Charg A2
E1AFVOL 0..99999
E1RESBL 0..99999
Charg A1
Therefor output would be
ObjectCollection
-<Object>
--<Field>
Name CHARG
Value A1
Name Dept
Value SAP
Name Code
Value 001
--</Field>
--<Field>
Name CHARG
Value A2
Name Dept
Value SAP
Name Code
Value 001
--</Field>
-</Object>
-<Object>
--<Field>
Name CHARG
Value A1
Name Dept
Value SAP
Name Code
Value 001
--</Field>
-</Object>
i am not sure if this can be achieved by graphical mapping.
If not please explain me how XKST mapping would be used in this case? -
hai friends
iam created one UDF function for splitting multiple storage locations in to create deffarent segments based on ,(cama)
test mapping working good .
but at runtime the mapping is not working
it is giving runtime error at mapping convertion .
like this
com.sap.aii.utilxi.misc.api.BaseRuntimeException was thrown: RuntimeException in Message-Mapping transformatio
pls help me what is the problem.
with regards
srikanth vipparla
Edited by: srikanth vipparla on Apr 24, 2008 3:44 PMno iam not using the same message in testing
it is comming from mdm system.
and my udf code is like this .
String testString = a[0];
StringTokenizer st = new StringTokenizer(testString,",");
while(st.hasMoreTokens())
result.addValue(st.nextToken());
and way it is giving error pls help me .
with regards
srikanth vipparla
Edited by: srikanth vipparla on Apr 24, 2008 3:51 PM
Edited by: srikanth vipparla on Apr 24, 2008 3:52 PM -
Hi,
I'm starting with UDF functions.
How can i split source string at '-' and take first part into target.
ex : 123-456 -> 123
Easy points for those who know...
Thanks in advance,
Laurent.Hi Laurent,
Use an Advanced User Defined Function. Adavnced user Defined Functions can return Multiple values.
UDF1:
1.Takes renmark as input.
2.Does the split on the basis of ;
3. Splits each split of step 2 on the basis of /
4. Add the output of step 3 to the resultlist with a context change.
UDF2:
1.Takes renmark as input.
2.Does the split on the basis of ;
3. Splits each split of step 2 on the basis of /
4. Add the output of step 3 to the resultlist with a context change.
For Advanced UDF's,
http://help.sap.com/saphelp_nw04/helpdata/en/f8/2857cbc374da48993c8eb7d3c8c87a/content.htm.
You can try this piece of code in your mapping...
You need 3 UDFs each for <detail>, <field1>,<field2>
UDF1: For <detail>
String arr[] = a[0].split(";");
for (int i=0;i<arr.length;i++)
result.addValue(arr);
UDF2: For ><field1>
String str = a[0];
String str1 = null;
String sarr1[] = str.split(";");
for (int i=0; i<sarr1.length;i++)
str1 = sarr1;
String sarr2[] = str1.split("/");
for (int j=0; j><sarr2.length;j++){
result.addValue(sarr2[j]);
j++;
result.addContextChange();
UDF2: For ><field2>
String str = a[0];
String str1 = null;
String sarr1[] = str.split(";");
for (int i=0; i<sarr1.length;i++)
str1 = sarr1;
String sarr2[] = str1.split("/");
for (int j=0; j><sarr2.length;j++){
j++;
result.addValue(sarr2[j]);
result.addContextChange();
..All these functions requires one input <remark>
Hope this helps you ..
*Reward with points if helpful*
Regards,
Shibani -
Hi all
in my scenario i am mapping an IDOC interface to a file..
at runtime one segment E1EDKA3 is repeated 2 times..like
E1EDKA3.ort01
E1EDKA3.ort01
i <b><b>want a field value of ort01 of the 2nd segment not the first</b></b>... to be mapped to file..
by default it is taking value of the first segment ort01 field
can any one have the user defined function coding...as i am not from java background..
Regards,
ashutoshHi Try this out
UDF Context type
Input ort01
Code
result.addValue(ort01[1])
Mapping
ort01 --- removecontext -- UDF --- Target
Mudit
Award points -
Hello all,
I am using Process Composer for a process design.
I have a human activity and an automated acitivity.
Human Activity Automated Activity
+ Type Code (node)----
Type Code (node)
- TypeCode (attribute)----
text() (attirbute)
Above shows the mapping. Now I map the node and then i map the attribute. I save it.
The above mapping is for input mapping of the automated activity. Suppose if leave the mapping screen and come back, the mapping is automatically gone. Though i saved it. The TypeCode (node) is mapped to text() with an error (after i change screen. That will be error of course).
Have any of you faced any similar issue before?Problem solved.
1. The cardinality of the nodes was not matching.
2. Attributes were matched instead of matching nodes.
Thnks -
Two nodes has different namespace.
They can not be mapped.
Error message is
Expected : name 'BBB' namespace - abc.sap.com
Found : name 'BBB' namespace - cba.sap.com
I guess they need something I should do to map the nodes that has different namespace.
How to map the nodes at the glaxy?Hi Yeongsik,
when the two nodes corresponds to different namespaces , u will get thei error message.
Error message is
Expected : name 'BBB' namespace - abc.sap.com
Found : name 'BBB' namespace - cba.sap.com
better go for map Automatically option.
First map the nodes , then map each attribute of node A to node B to get rid of error message.
Thanks and regards -
Hyperion Performance Scorecard - Strategy Map - Node population ...
Dear friends,
we've got a development project of balanced scorecard and at the stage we are, we need to populate our Strategy Map tree with the Measures (on the leaves) and the Scorecards (intermediate nodes).
The problem is that we have got 23 Strategy Map, each one with aprox. 100 nodes and as you understand it's a high time spend doing it by hand. Is there any tool or programming API to do it automated?
Here you've some small example with the parentNode (Scorecard) with two childs (Scorecards leaves) which need some Measures (M1...M4).
StrategyMap1:
Parent Node
+
| |
child1 child2
M1 M3
M2 M4
Best Regards.OK, this is what I do. There is an import/export utility documented in appendix C of the admin guide.
1. I export all the possibilities using the export utiiity, then I have a base line.
2. I create an example of what I want to do from the front end.
3. I repeat the extract, and look at what HPS has created in the back end.
4. I use the export files created from the export to use as a template to add the other scorecards, strategy maps, employees, whatever you are trying to load. These are CSV files.
5. BACKUP THE DATABASE!!
6. Use excel to populate the fields you need. Be aware you don't need to import ALL the fields, just the required ones, That is documented.
WARNING--- WARNING
Doing ANYTHING from the backend is dangerous. Backup first, and after you load, restart the server. HPS will not reload all the changes and validate them if you don't restart. It may show the changes, but it won't always validate, and you may find something went wrong and it won't start. This is OK if you catch it right away, you can do a restore.
The time lag is due to the way the application does caching.
Good Luck,
Theo Korol
[email protected]
Maybe you are looking for
-
Report Display in unknown Language
Hi there i have developed report and has placed it in EBS now When ever i run the the report It Shows output in unknown language rather than English thanx
-
Just downloaded and installed OS X 10.8.2 Imessage doesn't connect... Keep getting "Could Not Connect" with error message "The server encountered an error processing registration. Please try again later." Anyone Else having this issue?
-
Installation of Photoshop Elements Trial Version opens but is frozen.
How can I repair an installation of Photoshop Elements Trial Version which will not run?
-
HT1423 Will I loose all my files, apps and OSX if I change both?
I was just lookig at upgrading my RAM memory and was wondering if I would loose my files, apps or OSX if I get two new ones, and can I use the mac mini's memory things? Thanks
-
"V" convert to black and white
Somehow I hit the "V" and it is converting all my pictures to black and white. How to I cancel that action?