Data Object is performning slow
I am using a data object which is tied to external view.The datbase view is holding data from multiple table.But from the bam side the entire configuration is functioning slow.Is there any other way by which i can handle this issue.or should i go with integrating ODI with bam for this requirement.
What is the BAM version?
Can you provide details on slow performance? What is being shown - how much data are you retreiving?
Is the External DO (i.e. DB machine) co-located in the same facility or in another network?
Can you check on the DB EM on how much does the query take i.e. is the time lag in display vs. query?
Regards
Payal
Similar Messages
-
See, here's the thing with dates in java, the way i see it. We used to have Date, but Date wasn't international so we got Calendar. But some things, like SimpleDateFormat, still expect java.util.Date. java.sql.Date is out there somewhere, too. None of them have direct support for date differences (i.e. dateA - dateB = 8 days, or whatever). Now you're probably reading this thinking "Java supports all of this" and you're right. Calendar has a getTime method that returns a Date, and i can just pass THAT to SimpleDateFormat. With a little math, getTimeInMillis can be used to find the difference in two Calendars. But i got to thinking, "There should only be one Date object i need to think about," and since i don't ever have enough to do at work i put one together. I don't know if any of you are going to care enough to use it, mostly i'm just looking for advice on features i should add to it, inefficiencies in the design, stuff that's hard to understand, or whatever.
This is it:
*This catastrophe brought to you by SrA Meyerin.
*Proximo Satis pro administatio.
package awesomedate;
//The following are imported for the toFormattedString(), toUtilDate(), toSQLDate, and toCalendar() methods, respectively.
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.sql.*;
import java.util.TimeZone;
*This class is designed to be the ultimate date object. It stores dates accurate to the millisecond, has the ability to do date
*arithmetic (adding/subtracting days/months/whatever), date comparison, and date formatting. Also it can, at will, be used as any
*of the other date objects in the standard java API.
public class AwesomeDate
*Milliseconds from the epoch. This field is where everything starts.
private long millis;
* The current year. This is the only aspect of the current date that is stored in addition to the milliseconds. Everything else
* is calculated as needed.
private int year;
//The following six variables are fairly self explanatory. I'll explain them anyway.
*Milliseconds in one non-leap year. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public final static long MILLIS_IN_YEAR = 31536000000L;
*Milliseconds in one leap year. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public static final long MILLIS_IN_LEAP_YEAR = 31622400000L;
*Milliseconds in one day. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public static final long MILLIS_IN_DAY = 86400000;
*Milliseconds in one hour. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public static final long MILLIS_IN_HOUR = 3600000;
*Milliseconds in one minute. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public static final long MILLIS_IN_MINUTE = 60000;
*Milliseconds in one second. This can be passed to the "adjustDate()" method
* but mostly it is used to make my code more readable.
public static final long MILLIS_IN_SECOND = 1000;
*The number of days in each month.
private int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
*The timezone offset. GMT is 0, and the default, however, CST (where i live), is -6.
private int timeZoneOffset = -6;
*As the name would indicate, this is the number of milliseconds beyond 00:00 of jan 1 of the current year.
private long millisAfterYear;
*Basic constructor. Defaults to the current date and time. Works on Greenwich Mean Time, so it may seem off. To avoid this, multiply
*add your time zone offset * MILLIS_IN_HOUR to the time in milliseconds.
public AwesomeDate()
setTimeInMillis(System.currentTimeMillis());
*Fairly simple constructor. Sets time to the the number of milliseconds passed past the epoch.
public AwesomeDate(long millis)
setTimeInMillis(millis);
*This constructor sets the date to the year/month/day passed.
public AwesomeDate(int year, int month, int day)
setDate(year, month, day);
*This constructor sets the date time to the year/month/day/minute/hour/second passed.
public AwesomeDate(int year, int month, int day, int hour, int minute, int second)
setDate(year, month, day, hour, minute, second);
*When you have the number of milliseconds, the first thing you must calculate is year. Because the number of milliseconds in a
*year may vary, this is also the most difficult to calculate. This is the method that does it, though.
private void setYearAfter1970()
//I don't want to alter the actual number of milliseconds, so i make this variable and perform calculations on it.
long theseMillis = this.millis;
//Start at 1970 (the epoch) and work from there.
year = 1970;
long nextYear = MILLIS_IN_YEAR;
//In this loop i subtract the number of millis in whatever year. The condition is if i have enough millis to make it through
//another year.
while (theseMillis >= nextYear)
if (isLeapYear(year))
theseMillis = theseMillis - MILLIS_IN_LEAP_YEAR;
nextYear = MILLIS_IN_YEAR;
else
theseMillis = theseMillis - MILLIS_IN_YEAR;
if (isLeapYear(year + 1))
nextYear = MILLIS_IN_LEAP_YEAR;
year++;
millisAfterYear = theseMillis;
this.year = year;
*Calculating the year from before 1970 must be done differently. It's pretty much just inverted.
private void setYearBefore1970()
long theseMillis = this.millis;
year = 1970;
long nextYear = MILLIS_IN_YEAR;
while (theseMillis <= 0)
if (isLeapYear(year))
theseMillis = theseMillis + MILLIS_IN_LEAP_YEAR;
nextYear = MILLIS_IN_YEAR;
else
theseMillis = theseMillis + MILLIS_IN_YEAR;
if (isLeapYear(year - 1))
nextYear = MILLIS_IN_LEAP_YEAR;
year--;
millisAfterYear = theseMillis * -1;
this.year = year;
*Just what it sounds like. Pass it the number of milliseconds past the epoch and it will calculate the date based on that.
public void setTimeInMillis(long millis)
this.millis = millis;
if (millis >= 0)
setYearAfter1970();
else
setYearBefore1970();
*Returns the number of milliseconds from the epoch.
public long getTimeInMillis()
return this.millis;
*Returns the current year.
public int getYear()
return this.year;
*Sets the date to 00:00 of Jan 1 of the passed year.
public void setYear(int year)
this.year = year;
long theseMillis = 0;
if (year > 1970)
//Kind of like setYearAfter1970 method, except it's adding instead of subtracting. So actually it's the opposite.
for (int cntr = 1970; cntr < this.year; cntr++)
if (isLeapYear(cntr))
theseMillis = theseMillis + MILLIS_IN_LEAP_YEAR;
else
theseMillis = theseMillis + MILLIS_IN_YEAR;
else
for (int cntr = 1970; cntr > this.year; cntr--)
if (isLeapYear(cntr))
theseMillis = theseMillis - MILLIS_IN_LEAP_YEAR;
else
theseMillis = theseMillis - MILLIS_IN_YEAR;
//On a leap year there are 29 days in February. If not, there's 28.
if (isLeapYear(year))
daysInMonth[1] = 29;
else
daysInMonth[1] = 28;
//This variable helps me calculate denominations of time that are below year.
millisAfterYear = 0;
setTimeInMillis(theseMillis);
*Sets the month to the one that you passed, 0 being January and 11 being December.
public void setMonth(int month)
if (month < 0 || month > 11)
throw new ArrayIndexOutOfBoundsException(month);
long theseMillis = getTimeInMillis();
int days = 0;
setYear(this.year);
if (getTimeInMillis() > 0)
theseMillis = theseMillis - getTimeInMillis();
else
theseMillis = theseMillis + getTimeInMillis();
for (int cntr = 0; cntr < month; cntr++)
days = days + daysInMonth[cntr];
millisAfterYear = days * MILLIS_IN_DAY + 1;
setTimeInMillis(getTimeInMillis() + millisAfterYear);
*Returns the month stored in this object. With this object 0 represents January and 11 represents December.
public int getMonth()
long theseMillis = millisAfterYear;
int cntr = 0;
while (theseMillis > (MILLIS_IN_DAY * daysInMonth[cntr]))
theseMillis = theseMillis - MILLIS_IN_DAY * daysInMonth[cntr];
cntr++;
return cntr;
*Set the day of month to the one passed.
public void setDayOfMonth(int day)
if (day < 1 || day > daysInMonth[getMonth()])
throw new ArrayIndexOutOfBoundsException(day);
setMonth(getMonth());
//Internally, this actually works starting at zero, however to anyone using this class it appears to start at 1. Therefore
//i must subtract one here.
long addMillis = MILLIS_IN_DAY * (day - 1);
millisAfterYear = millisAfterYear + addMillis;
setTimeInMillis(getTimeInMillis() + addMillis + 1);
*Returns the day of month.
public int getDayOfMonth()
int days = (int)(millisAfterYear / MILLIS_IN_DAY);
int cntr = 0;
while (days >= daysInMonth[cntr])
days = days - daysInMonth[cntr];
cntr++;
//Internally this class stores dates starting at zero, but i want it to look like it starts at 1.
return days + 1;
*Sets the time to the currently selected day at the passed hour on the hour. uses 24 hour clock.
public void setHour(int hour)
if (hour < 0 || hour > 23)
throw new ArrayIndexOutOfBoundsException(hour);
setDayOfMonth(getDayOfMonth());
long addMillis = MILLIS_IN_HOUR * hour;
millisAfterYear = millisAfterYear + addMillis;
setTimeInMillis(getTimeInMillis() + addMillis);
*Returns the hour (but not how many minutes past the hour).
public int getHour()
long millisAfterDay = millisAfterYear % MILLIS_IN_DAY;
return (int)(millisAfterDay / MILLIS_IN_HOUR);
*Set the minutes past the hour. Works 0-59.
public void setMinute(int minute)
if (minute < 0 || minute > 59)
throw new ArrayIndexOutOfBoundsException(minute);
setHour(getHour());
long addMillis = MILLIS_IN_MINUTE * minute;
millisAfterYear = millisAfterYear + addMillis;
setTimeInMillis(getTimeInMillis() + addMillis);
*Returns the minutes past the hour, 0-59.
public int getMinute()
long millisAfterHour = millisAfterYear % MILLIS_IN_HOUR;
return (int)(millisAfterHour / MILLIS_IN_MINUTE);
*Sets the seconds past the minute, 0-59.
public void setSecond(int second)
if (second < 0 || second > 59)
throw new ArrayIndexOutOfBoundsException(second);
setMinute(getMinute());
long addMillis = MILLIS_IN_SECOND * second;
millisAfterYear = millisAfterYear + addMillis;
setTimeInMillis(getTimeInMillis() + addMillis);
*Returns the seconds past the minute, 0-59.
public int getSecond()
long millisAfterMinute = millisAfterYear % MILLIS_IN_MINUTE;
return (int)(millisAfterMinute / MILLIS_IN_SECOND);
*The more commonly seen set method of other date objects. Sets the date/time to 00:00 of the year/month/day passed. Convenience method
*for setDate(int year, int month, int day, int hour, int minute, int second).
public void setDate(int year, int month, int day)
setDate(year, month, day, 0 , 0 , 0);
*Sets every date/time field.
public void setDate(int year, int month, int day, int hour, int minute, int second)
setYear(year);
setMonth(month);
setDayOfMonth(day);
setHour(hour);
setMinute(minute);
setSecond(second);
*Returns yes if the stored date is a leap year. A leap year is every year that is divisible by four unless it is divisible by 100
*unless it is also divisible by 400.
public boolean isLeapYear()
return isLeapYear(this.year);
*For internal use. Returns if the passed year meets the criteria for a leap year.
private boolean isLeapYear(int year)
boolean leapYear = false;
if (year % 4 == 0)
if (year % 100 != 0)
leapYear = true;
else if (year % 400 == 0)
leapYear = true;
return leapYear;
*Returns the difference in milliseconds between the time stored in this object and the millis passed to this method.
public long getDifferenceInMillis(long millis)
return getTimeInMillis() - millis;
*Returns the difference in milliseconds between this date and the date passed to this method.
public long getDifferenceInMillis(AwesomeDate otherDate)
return getDifferenceInMillis(otherDate.getTimeInMillis());
*Designed to be a wrapper method for the getDifferenceInMillis method. This method changes millis into years/days/whatever. Pass
*the number of milliseconds you have to convert in the first parameter. The second parameter should be the type of denomination you
*want (year, day, whatever). Use the MILLIS_IN_* fields associated with this object. Also bear in mind when workin with years that
*some years are leap years, so in extreme cases of differences of 365+ years you may gain/lose a year.
public static int toGreaterDenom(long millis, long denom)
return (int)(millis / denom);
* The first argument is how many of whatever (days, months, years, etc.) to add (use negative numbers to subtract). For the second
* argument pass one of the MILLIS_IN_* fields. Thus, to add two hours would be
* <code>
* AwesomeDate.adjustDate(2, AwesomeDate.MILLIS_IN_HOUR);
* </code>
public void adjustDate(int amount, long typeMillis)
setTimeInMillis(this.millis + amount * typeMillis);
*Returns an object of type java.util.Date set to the date/time stored here.
public java.util.Date toUtilDate()
long offset = TimeZone.getDefault().getRawOffset();
return new java.util.Date(getTimeInMillis() + -1 * offset);
// return new java.util.Date(getTimeInMillis());
*Returns an object of type GregorianCalendar set to the date/time stored here.
public GregorianCalendar toGregorianCalendar()
long offset = TimeZone.getDefault().getRawOffset();
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(getTimeInMillis() - offset);
return cal;
*Returns an object of type java.sql.Date set to the date/time stored here.
public java.sql.Date toSQLDate()
long offset = TimeZone.getDefault().getRawOffset();
return new java.sql.Date(getTimeInMillis() - offset);
/** Format the date using the string that you pass. Works just like the SimpleDateFormat object. Infact, it uses one! Heres
*how it works:
*Letter Date or Time Component Presentation Examples <br>
*G Era designator Text AD <br>
*y Year Year 1996; 96 <br>
*M Month in year Month July; Jul; 07<br>
*w Week in year Number 27 <br>
*W Week in month Number 2 <br>
*D Day in year Number 189 <br>
*d Day in month Number 10 <br>
*F Day of week in month Number 2<br>
*E Day in week Text Tuesday; Tue <br>
*a Am/pm marker Text PM <br>
*H Hour in day (0-23) Number 0<br>
*k Hour in day (1-24) Number 24 <br>
*K Hour in am/pm (0-11) Number 0 <br>
*h Hour in am/pm (1-12) Number 12 <br>
*m Minute in hour Number 30 <br>
*s Second in minute Number 55 <br>
*S Millisecond Number 978 <br>
*z Time zone General time zone Pacific Standard Time; PST; GMT-08:00<br>
*Z Time zone RFC 822 time zone -0800 <br>
public String toFormattedString(String format)
SimpleDateFormat formattage = new SimpleDateFormat(format);
return formattage.format(toUtilDate());
*I overrode the toString method. Now it tells everyone how awesome my AwesomeDate is.
public String toString()
String output = "John's Awesome Date!";
output = output + " Millis: " + getTimeInMillis();
output = output + " Year: " + getYear();
output = output + " Month: " + getMonth();
output = output + " Date: " + getDayOfMonth();
output = output + " Time: ";
if (getHour() < 10)
output = output + "0" + getHour();
else
output = output + getHour();
if (getMinute() < 10)
output = output + "0" + getMinute();
else
output = output + getMinute();
output = output + " Seconds: " + getSecond();
return output;
public static void main(String[] psvm)
AwesomeDate blah = new AwesomeDate();
GregorianCalendar blah1 = new GregorianCalendar();
GregorianCalendar blah2 = new GregorianCalendar();
}The reason Callendar is so complicated is that it is trying to solve a very complicated problem.
You don't appear to support leap seconds (of which there can be upto 2 in any time interval)
http://www.timeanddate.com/time/leapseconds.html
Some of your code will not work for large dates very well (seems to iterate over the years). Try using your date class for astronomical or geological calculations. them big numbers will make your code slow at the moment.
You don't seem to support timezones or transitory offsets (BST vs GMT). You most definately don't handle changes to timezone offsets that have occured in the past or historical daylight savings time offsets (they have not always been the same)
The difference between two calendars is a "duration" a duration means nothing unless it is applied to a caledar/date (although you may be able to get away with it if the duration is always stored in millis) -
How to get the currrent month and year from a new date object
If I create a new Date object as "d",
java.util.Date d = new java.util.Date();how can I format the date to get the current Month as 'Jan' and the current year as '2008'. So if I have something like d.getMonth() gets the current month as 'Oct' and d.getYear() gets '2008'
Thanks,
Zub[Read the flamin' manual you must. Hmm.|http://en.wikipedia.org/wiki/RTFM]
~~ Yoda.
Well no actually, he didn't say that, but he should have.
Cheers. Keith.
PS: Don't say that to a 7 foot pissedOff wookie when he's got his head stuck in a smoking hyperdrive, and you're being chased by a S-class battle cruiser... Ask Yoda how he got to be so short.
PPS: It is the SimpleDateFormat you seek ;-)
Edited by: corlettk on 14/10/2008 22:37 ~~ Also far to slow... but funny. -
Add/Remove data object from dataset
Hello,
I was working out a way to add and remove data from a dataset
on the fly and could not figure out any built in methods to do
this.
As I have decided to include spry in my project I like to try
and utilise as much as of its code as possible since it is
complicated to explain I have created a simple example – a
colour picker! (thought it might be more interesting…) of
what I am trying to achieve at
http://www.freshfresh.co.uk/spry/
- if you have a go on this and maybe look at the source code (all
the JS is embedded in HTML there are no modifications to other the
other core files). I have only used spry effects etc, including the
‘accordion’ – which I have become quite attached
to, it is really good for condensing pages down.
You will see I am using the setDataFromDoc method to create
the dataset – I tried the .data = myArrayOfData; .dataHash =
hashTable; method i.e. creating from an object rather than array
but it did’nt seem to play ball with the
addDataChangedObserver method – it did’nt update itself
each time it was modified (I am sorry I cannot remember exactly
what I did – but I tried all kinds of ways…). I stuck
with the string method because it worked - each time my new dataset
changed it updated itself on the screen (you will have to have a
look to understand.....sorry!!), but I would be interested to know
how such a thing could be implemented using the object route if you
believe this would be more efficient.
My second question is more simple – is there a shorter
way to add and remove a data object from a dataset? – as you
can see from the source code I have effectively created an
‘interface’ to do these tasks…. I could’nt
work out whether these methods are already built in. Maybe they
are?
Third question is… to extract a data object from a
dataset I use the .dataHash[the_row_id] method – is this the
right thing to do or could it lead to complications… that is
using methods that might supposedly be private?
Fourth question (observation really) – whilst creating
that colour picker example I went over board with my datasets and
loaded in several palettes some of which had over 1000 elements or
data objects. Which inevitably was very slow (on my computer
anyway) – but it got me thinking about trimming the contents
of my spry regions for better performance. I am I right in thinking
that the less HTML etc that there is in a spry region the quicker
SPRY will process it. For example say you had spry repeat with an
image tag in with some onclick, onmousover, onmouseout, style
attributes etc and compare this to a spry repeat with a simple
image with minimal attributes set. I suppose what I am trying to
say is – does spry ‘store’ all the contents of
each spry region somewhere? Or does it just process it and leave it
to the browser dom?
Fifth observation.... I find it really difficult to explain
computer technicalities in writing. It must be tough reading these
posts.... I know I find it difficult sometimes when dealing with
written end user feedback!
AndrewJust clarifying my questions a bit further....
I found some old code regarding question 1 by using the
object method I mean something like this...
var mySwatches = [{'@hex':'ff0000'},{'@hex':'00ff00'}];
var hashTable = [];
function createDs(){
for (var i = 0; i < mySwatches.length; i++)
mySwatches
.ds_RowID = i;
hashTable = mySwatches
dsMySwatches.data = mySwatches;
dsMySwatches.dataHash = hashTable;
dsMySwatches.loadData();
i.e. not writing out a whole XML string string as the online
example does. When using this way I did'nt seem to be able to get
the HTML to refresh. I tried using [
Spry.Data.updateRegion('mydata'); ] after recreating the dataset I
also tried adding an [ .addDataChangedObserver ] (like in the
string example) amongst numerous other ways but it just would not
work like the string way. - Maybe I did something wrong somewhere.
In question 3 I refer to the [ .hash ] method .... its not a
'method' its a 'property' - my question should read - is it ok to
access private properties (from a browser campatiblity/security
point of view) that do not have specific methods to gain access to
them. I suppose it does'nt really matter with JS...
In question 4 I mention minimising the amount of code in a
spry region to speed it up. A clearer example of this might be for
example - a gallery with lots of images. As we know there will be a
slight delay as SPRY writes all the html so to speed up that intial
write I strip out all the image attributes such as onlclick do
this, onmouse over do that... and add these after the images have
loaded using a seperate function similar to my
fillSwatches(ds,prefix) function in my online colorpicker example.
I suppose it like a 2 tier processing of all the data. SPRY does
the intial display writing to get everything in place and then
another pass is made over to add any further functionality
adjustments etc. I am still not sure if that makes any sense!
***edit
Also on the subject of speed and the application as a whole
i.e. including my PHP - In one example I was creating I ended up
with an XML structure where each node has over 14 attributes i.e.
<somenode att1=”x” ……..
att14=”z”/> - as the file grew it obviously took
longer to process particularly on the server side, i.e. added all
those attributes just slowed it all down. So I did
this…… <somenode att1=”x:y:z” /> i.e
condensed selected attributes into a string that I could explode
later on.
Obviously this limits SPRYS ability to access the attributes
using the {attr} syntax. I had to create a function to explode the
array and do the ‘necessary’ on a second pass over the
data – this works ok for me. But its interesting that in this
particular case the server could not refresh the XML in an
acceptable time without doing this – just thought that might
be interesting to you. I suppose technically what I am doing is
abusing the concept of an XML structure and simply using it as a
‘carrier’ to feed my application …. Which I
suppose is where JSON comes in…. which is a bit more compact
and maybe faster to manipulate on both the server and client side
– I don’t really know, I have never used it –
just throwing ideas around!!
Andrew -
Problem with childs nodes and automatic key mapping in a Data Object
Hi experts!
I'm doing the service order tutorial from the mobile help at [this link|http://help.sap.com/saphelp_nwmobile71/helpdata/en/21/9b5b924c3b434fba4767731794b029/frameset.htm] and I have a problem...
In the topic "Modeling the Equipment Data Object", says you have to mark the "Automatic Key Mapping" checkbox. So when I had to create a third child node ( the location node ) the system raised an exception with the message "Deselect automatic key mapping flag for more than two-level nodes". I'm trying deselecting the flag and creating the location node, but when I want mark again the automatic key mapping flag, this is disabled.
What can I do to solve this and create the three child nodes with the flag marked? It's a configuration thing?
Any help it's very welcome. Thanks in advance.
Best regards,
Simon.The thing is: Its not allowed to use automatic keymapping if you have more than two levels. This is why the message showed up, and this is why its been disabled.
What automatic keymapping does: Figures out automatically which child node belongs to which parent (by guessing from the field name and type, which fields in the child correspond to which key fields of the parent).
On three levels, this becomes more complicated => Its disabled.
How to do keymapping yourself instead of having the DOE do it automatically: Do 'Explicit keymapping' from each child to its parent. Explicit keymapping is done by clicking on the corresponding menu button in the child node. Here you need to associate child node fields (they need not be key fields of the child, but they are allowed to be that as well) to each of its parent nodes key fields (so that each child can be associated to its parent).
Cheers -
Error while activating Data object in DOE workbench
Hi all,
I created a Data Object and when I try to activate that DO it is showing an error as below.
Mobile Java client attributes not maintained.
Please give some clue to resolve this.
Thanks and Regards,
Rajesh.AHi Rajesh,
I believe you had created an SWCV that is enabled for Backward Compatibility 'Uses NW04/NW04s MI application' and created a Data Object in this SWCV. Ideally, when the SWCV is enabled for Backward Compatibility, the Data Objects should be created by importing the text file as Data Objects from a MI 7.0 server. Since you have not done that way, you are getting this error.
I would suggest that you create a new SWCV and do not check the option 'Uses NW04/NW04s MI application'. Now create the Data Object again and try to activate it and you should be able to activate it.
Best regards,
Vinodh -
Unable to delete master data line items - Master data object CCHIUSRAM
Hello
We have an issue with the Master data Object CCHIUSRAM - CC Hier User Auth Maintenance. It has only master data and no texts no hierarchy. It is not time-dependent. It has /BIC/PCCHIUSRAM, /BIC/SCCHIUSRAM as database table only. This master data is not being used in any infoproviders.
In development client we are able to delete the line items of the Master data along with entering line items. RSRV check gives green for all checks.
In Test / Production client we are not able to delete the line items of the Master data. We are only able to enter master data lines and if we change any item then it creates another entry in the table.
Tried SE14 & RSDMD_DEL_MASTER_DATA - both does not help.
Did ST05 trace, could not find something concrete.
If any one has faced such an issue with any master data item then a response is much appreciated. It has become a bottleneck for us.
Many Thanks in advance
Pradip ParmarThanks for the response.
I can do this in EBD, but it is working fine in EBD. I cannot do this activity in EBP / EBT as the systems are closed and I cannot activate directly in EBT / EBP.
Besides, I have recently transported active versions of the object in EBT / EBP all again twice to see if it changes anything.
My guess is that, there is something stupid may be I am missing somewhere.
Any help is much appreciated.
Thanks -
Message class as result data object
hello brf+ users,
is it possible to use as Result data object in a Case expression a message from a custom message class?
thanks
danilothanks Carsten,
my requirement can be simplified in
IF FISCAL CODE
equals to " " then "001" ENTRY MISSING is returned
otherwise "000" check ok is returned.
where 000,001 are domain values of an element (MESSAGE RESULT).
can i use the message class as result? is there a way to anchor the result to the message class?
thanks
danilo -
How do I reference the data object in a DataGrid to show an image correctly in Acrobat?
I'm creating an inferface for an Acrobat application and I'm having a issue with displaying an image in a grid. When I hard code the source="statusNONE.png" it works as intended (with an image, not the image associated with each grid item), however, when I try to use the source="{data.@icon}" to reference the dataProvider (XMLListCollection) I get nothing. Not a broken image or anything. I think I may just not be referencing the XMLListCollection correctly, otherwise I don't know why it would work with hard coding vs. fetching the string from the XML.
//Application Header (Flex 4.5)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%" creationComplete="eaton_creationCompleteHandler(event)"
currentState="Review">
//Sample of XML that gets used as basis for XMLListCollection
<Annots>
<Annot name='TEST' index='14' feedback='' canConstruct='0' icon='statusNONE.png'/>
</Annots>
//creation of the XMLListCollection from String
[Bindable] protected var fullXML:XML;
[Bindable] protected var fullXMLCol:XMLListCollection;
protected function loadXML(xmlString:String):void
fullXML = new XML(xmlString);
var fullXMLList:XMLList = fullXML.children();
fullXMLCol = new XMLListCollection(fullXMLList);
//DataGrid
<s:DataGrid left="0" top="0" bottom="0" width="142" dataProvider="{fullXMLCol}"
requestedRowCount="4" rowHeight="30"
top.Confirm="87">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="@name" headerText="Annotations"></s:GridColumn>
<s:GridColumn headerText="status" width="30" >
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:Image width="30" height="30" source="{data.@icon}"/> //THIS IS THE PART THAT SEEMS TO BE GIVNG ME TROUBLE!
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
</s:ArrayList>
</s:columns>
<s:typicalItem>
<fx:Object dataField1="Sample Data" dataField2="Sample Data" dataField3="Sample Data"></fx:Object>
</s:typicalItem>
</s:DataGrid>
Additional information. I'm using the resources tab for the flash embedding in Acrobat for my images. This works when I am hard coding the file name string works for the source without having to add a full path, the images are not technically bundled into the swf. I just don't understand why using the data object to get that same string would show different results.
tl;dr: GridItemRenderer works to show images when hard coded but not when using {data}.
UPDATE: Figured it out, needed to add a toString() to the data.@icon. I had assumed it was a string being handed over, I assumed wrong.Probably because data.@icon isn't a String, it is an XMLList, and source property is an Object not a String so the runtime doesn't automatically convert it.
Try [email protected]() -
Adding new Data Object while migrating from MI 2.5 to NM7.1
Dear All,
We have a custom MI 2.5 application which we need to migrate to 7.1. While migration, we want to add a newly created data object also in migrated application. But when I try to import MBO model, it is not letting me import new data object. The import finishes successfully. But changes in merepmeta.xml are not done. It creates a file with back up of existing merepmeta.xml i.e. merepmeta.xml.bak and create new merepmeta.xml but it is blank. Am I missing something???
When I import MBO only with existing data objects (syncbos), it is allowing me perfectly. It is changing the merepmeta.xml accordingly as well without creating backup.
Thanks in advance,
Saptak Kulkarni.Dear Arjun,
To answer your questions, previously all the SyncBOs were downloaded independently taking username as the import parameter in getList. (Default values). Yes we can provide the same with 7.1 but we wanted to have some sorts of associations between all SyncBOs.
So first of all, we changed all the BAPI wrappers of old SyncBOs to download all the data independent of user. Now we created new Data Object to only download user specific data. We associated all other Data Objects on this DO. Created a rule for this data object to only download the sync user instance. We were expecting that whenever a user syncs, a single instance of new user data object will get downloaded and subsequently all other data objects having relationship on user will get downloaded. I hope this is not much confusing.
Now while we import the MBO model, if we don't import new user data object, then also other data object instance get downloaded and fortunately properly filtered. We don't receive any kind of error over here.
The new data object is not used anywhere in the application. The associations are in new data object and not in the older one. New data object is the leading one wherein others follow.
Not a single instance is getting dropped for other Data Objects.
The xml is blank only when we try to import the new Data Object and correctly it gives an error as expected when I try to deploy the application.
Thanks in advance,
Saptak. -
Difference b/w DATA TYPE and DATA OBJECT & differences b/w TYPE and LIKE
hai
can any one say the differences between Data type and Data Object.
And also differences between TYPE and LIKE
thanks
Ganihi,
_Data Types and Data Objects_
Programs work with local program data that is, with byte sequences in the working memory. Byte sequences that belong together are called fields and are characterized by a length, an identity (name), and as a further attribute by a data type. All programming languages have a concept that describes how the contents of a field are interpreted according to the data type.
In the ABAP type concept, fields are called data objects. Each data object is thus an instance of an abstract data type. There are separate name spaces for data objects and data types. This means that a name can be the name of a data object as well as the name of a data type simultaneously.
Data Types
As well as occurring as attributes of a data object, data types can also be defined independently. You can then use them later on in conjunction with a data object. The definition of a user-defined data type is based on a set of predefined elementary data types. You can define data types either locally in the declaration part of a program using the TYPESstatement) or globally in the ABAP Dictionary. You can use your own data types to declare data objects or to check the types of parameters in generic operations.
All programming languages distinguish between various types of data with various uses, such as .. type data for storing or displaying values and numerical data for calculations. The attributes in question are described using data types. You can define, for example, how data is stored in the repository, and how the ABAP statements work with the data.
Data types can be divided into elementary, reference, and complex types.
a. Elementary Types
These are data types of fixed or variable length that are not made up of other types.
The difference between variable length data types and fixed length data types is that the length and the memory space required by data objects of variable length data types can change dynamically during runtime, and that these data types cannot be defined irreversibly while the data object is being declared.
Predefined and User-Defined Elementary Data Types
You can also define your own elementary data types in ABAP using the TYPES statement. You base these on the predefined data types. This determines all of the technical attributes of the new data type. For example, you could define a data type P_2 with two decimal places, based on the predefined data type P. You could then use this new type in your data declarations.
b. Reference Types
Reference types are deep data types that describe reference variables, that is, data objects that contain references. A reference variable can be defined as a component of a complex data object such as a structure or internal table as well as a single field.
c. Complex Data Types
Complex data types are made up of other data types. A distinction is made here between structured types and table types.
Data Objects
Data objects are the physical units with which ABAP statements work at runtime. The contents of a data object occupy memory space in the program. ABAP statements access these contents by addressing the name of the data object and interpret them according to the data type.. For example, statements can write the contents of data objects in lists or in the database, they can pass them to and receive them from routines, they can change them by assigning new values, and they can compare them in logical expressions.
Each ABAP data object has a set of technical attributes, which are fully defined at all times when an ABAP program is running (field length, number of decimal places, and data type). You declare data objects either statically in the declaration part of an ABAP program (the most important statement for this is DATA), or dynamically at runtime (for example, when you call procedures). As well as fields in the memory area of the program, the program also treats literals like data objects.
A data object is a part of the repository whose content can be addressed and interpreted by the program. All data objects must be declared in the ABAP program and are not persistent, meaning that they only exist while the program is being executed. Before you can process persistent data (such as data from a database table or from a sequential file), you must read it into data objects first. Conversely, if you want to retain the contents of a data object beyond the end of the program, you must save it in a persistent form.
Declaring Data Objects
Apart from the interface parameters of procedures, you declare all of the data objects in an ABAP program or procedure in its declaration part. These declarative statements establish the data type of the object, along with any missing technical attributes. This takes place before the program is actually executed. The technical attributes can then be queried while the program is running.
The interface parameters of procedures are generated as local data objects, but only when the procedure is actually called. You can define the technical attributes of the interface parameters in the procedure itself. If you do not, they adopt the attributes of the parameters from which they receive their values.
ABAP contains the following kinds of data objects:
a. Literals
Literals are not created by declarative statements. Instead, they exist in the program source code. Like all data objects, they have fixed technical attributes (field length, number of decimal places, data type), but no name. They are therefore referred to as unnamed data objects.
b. Named Data Objects
Data objects that have a name that you can use to address the ABAP program are known as named objects. These can be objects of various types, including text symbols, variables and constants.
Text symbols are pointers to texts in the text pool of the ABAP program. When the program starts, the corresponding data objects are generated from the texts stored in the text pool. They can be addressed using the name of the text symbol.
Variables are data objects whose contents can be changed using ABAP statements. You declare variables using the DATA, CLASS-DATA, STATICS, PARAMETERS, SELECT-OPTIONS, and RANGESstatements.
Constants are data objects whose contents cannot be changed. You declare constants using the CONSTANTSstatement.
c. Anonymous Data Objects
Data objects that cannot be addressed using a name are known as anonymous data objects. They are created using the CREATE DATAstatement and can be addressed using reference variables.
d. System-Defined Data Objects
System-defined data objects do not have to be declared explicitly - they are always available at runtime.
e. Interface Work Areas
Interface work areas are special variables that serve as interfaces between programs, screens, and logical databases. You declare interface work areas using the TABLES and NODESstatements.
What is the difference between Type and Like?
Answer1:
TYPE, you assign datatype directly to the data object while declaring.
LIKE,you assign the datatype of another object to the declaring data object. The datatype is referenced indirectly.
Answer2:
Type is a keyword used to refer to a data type whereas Like is a keyword used to copy the existing properties of already existing data object.
Answer3:
type refers the existing data type
like refers the existing data object
reward if useful
thanks and regards
suma sailaja pvn -
Two Data Objects is one too much
I got a field in a database named 'Date'. Now i want to get the date and formate it. For both operations i need the packages java.sql (for database) and java.text.SimpledateFormatter (to formate the date). Now i get the errror message that java don't now which Date Object i mean in my code, cause Class data is part of the package java.sql and java.text.SimpleDateFormatter. Has anyone an idea?
I take it you are getting the 'amibiguous' error message returned? To eradicate this, simply import the exact classes of the specific packages you require, as opposed to simply importing the whole package. ie do not just import java.sql.*, on different lines import specific classes. Since this produces no performance degredation it does not matter, and some poeple would say it is a better programming style (unless you are using several classes from a package) since readers of your code can see exactly what you are using and where.
-
Unable to find requested Data Object
Hi,
I import a standar data object in my DOE... It is a simple getlist and getdetail.
I import all correctly, but when i activate it appear this error:
"Unable to find requested Data Object"
What happend?
Thanks in advance,
Regards,I delete de data object and the bappi, i create the bappi with the wizard, and now work fine the data object...
Regards, -
Calculation Field to be mapped to different data object's column name in Oracle BAM 12c
Hi,
I am having a challenge to enable drill down to 2nd level report by passing calculation field as parameter.
As an alternative, I am thinking to point calculation field to another data object’s column name and generate report so that I would be able to pass that as parameter to drilling report view.
Is there any way to map calculation field to different Data object’s column name? Thanks in advance.
Regards
Amik Basu1. Yes, you can.
SQL> create table ÜÝÞ( ßàá number(10));
Table created.
SQL> insert into ÜÝÞ values (10);
1 row created.1.1 and 1.2 and 2. You can choose UTF as your default character set. It allows the user of non-English characters in VARCHAR columns in your whole database. It is not per tablespace.
SQL> create table ÜÝÞ( ßàá varchar2(100));
Table created.
SQL> insert into ÜÝÞ values ('âãäçìé');
1 row created. -
How to know which master data objects need to activated in R3
SALES OVERVIEW CUBE -0SD_C03
How to know which master data objects need to activated from delivery version to active version in R/3 for a particular standard cube like 0SD_C03.
its very urgent please advise.
R/3 in RSA5
Sales Master Data
0ACCNT_ASGN_TEXT Account assignment group for this customer
0ACCNT_GRP_TEXT Customer account group
0BILBLK_DL_TEXT Locked
0BILBLK_ITM_TEXT Billing block for item
0BILL_BLOCK_TEXT Billing block in SD document
0BILL_CAT_TEXT Billing Category
0BILL_RELEV_TEXT Relevant for Billing
0BILL_RULE_TEXT Billing rule
0BILL_TYPE_TEXT Billing Type
0CONSUMER_ATTR Consumer
0CONSUMER_LKLS_HIER Consumer
0CONSUMER_TEXT Consumer
0CUST_CLASS_TEXT Customer Classification
0CUST_GROUP_TEXT Customer Group
0CUST_GRP1_TEXT Customer Group 1
0CUST_GRP2_TEXT Customer Group 2
0CUST_GRP3_TEXT Customer Group 3
0CUST_GRP4_TEXT Customer Group 4
0CUST_GRP5_TEXT Customer Group 5
0DEALTYPE_TEXT Sales Deal Type
0DEL_BLOCK_TEXT Delivery block (document header)
0DEL_TYPE_TEXT Delivery Type
0DISTR_CHAN_TEXT Distribution Channel
0DIVISION_TEXT Division
0DLV_BLOCK_TEXT Schedule line blocked for delivery
0DOC_CATEG_TEXT SD Document Category
0DOC_TYPE_TEXT Sales Document Type
0INCOTERMS_TEXT Incoterms (Part 1)
0INDUSTRY_TEXT Industry keys
0IND_CODE_3_TEXT Industry code 3
0IND_CODE_4_TEXT Industry code 4
0IND_CODE_5_TEXT Industry code 5
0IND_CODE_TEXT Industry code
0ITEM_CATEG_TEXT Sales document item category
0ITM_TYPE_TEXT FS item type
0KHERK_TEXT Condition Origin
0MATL_GRP_1_TEXT Material Group1
0MATL_GRP_2_TEXT Material Group 2
0MATL_GRP_3_TEXT Material Group 3
0MATL_GRP_4_TEXT Material Group 4
0MATL_GRP_5_TEXT Material Group 5
0MATL_TYPE_TEXT Material Type
0MAT_STGRP_TEXT Material statistics group
0NIELSEN_ID_TEXT Nielsen ID
0ORD_REASON_TEXT Order reason (reason for the business transaction)
0PICK_INDC_TEXT Indicator for picking control
0PRODCAT_TEXT Product Catalog Number
0PROD_HIER_TEXT Product Hierarchy
0PROMOTION_ATTR Promotion
0PROMOTION_TEXT Promotion
0PROMOTYPE_TEXT Promotion Type
0PROV_GROUP_TEXT Commission Group
0REASON_REJ_TEXT Reason for rejection of quotations and sales orders
0REBATE_GRP_TEXT Volume rebate group
0RECIPCNTRY_TEXT Destination country
0ROUTE_TEXT Route
0SALESDEAL_ATTR Sales deal
0SALESDEAL_TEXT Sales deal
0SALESORG_ATTR Sales organization
0SALESORG_TEXT Sales Organization
0SALES_DIST_TEXT Sales district
0SALES_GRP_TEXT Sales Group
0SALES_OFF_TEXT Sales Office
0SCHD_CATEG_TEXT Schedule line category
0SHIP_POINT_TEXT Shipping point/receiving point
In BW
Base Unit of Measure 0BASE_UOM
Bill-to party 0BILLTOPRTY
Calendar Day 0CALDAY
Calendar Year/Month 0CALMONTH
Calendar Year/Week 0CALWEEK
Change Run ID 0CHNGID
Company code 0COMP_CODE
Cost in statistics currency 0COST_VAL_S
Credit/debit posting (C/D) 0DEB_CRED
Distribution Channel 0DISTR_CHAN
Division 0DIVISION
Number of documents 0DOCUMENTS
Sales Document Category 0DOC_CATEG
Document category /Quotation/Order/Delivery/Invoice 0DOC_CLASS
Number of Document Items 0DOC_ITEMS
Fiscal year / period
Fiscal year variant 0FISCVARNT
Gross weight in kilograms 0GR_WT_KG
Number of Employees 0HDCNT_LAST
Material 0MATERIAL
Net value in statistics currency 0NET_VAL_S
Net weight in kilograms 0NT_WT_KG
Open orders quantity in base unit of measure 0OPORDQTYBM
Net value of open orders in statistics currency 0OPORDVALSC
Payer 0PAYER
Plant 0PLANT
Quantity in base units of measure 0QUANT_B
Record type 0RECORDTP
Request ID 0REQUID
Sales Employee 0SALESEMPLY
Sales Organization 0SALESORG
Sales group 0SALES_GRP
Sales Office 0SALES_OFF
Shipping point 0SHIP_POINT
Ship-To Party 0SHIP_TO
Sold-to party 0SOLD_TO
Statistics Currency 0STAT_CURR
In R3 RSA5 we have all the Master data data sources as mentioned above, and BW also. How to find the related Master data Infosource in R/3 Master data Data sources.
Thanks in advance,
Bhima.
Message was edited by: Bhima Chandra Sekhar GuntlaHi,
<i>How to know which master data objects need to activated from delivery version to active version in R/3 for a particular standard cube like 0SD_C03.</i>
I think, you are looking for master data sources(text,attributes,hier).Am i right?
If so, This cube has almost all SD master data characterstics. So you can activate all the all master data datasources of SD in r/3 (SD-IO).
Any way you requirement does not stop only by using this cube . You will activate all other cubes in SD also. So if you want to activate only needed master data datasources when you are activating a cube, the job becomes senseless. There is no problem(wrong) in activating all master data available under that application , even though you want to activate only one cube.
With rgds,
Anil Kumar Sharma .P
Maybe you are looking for
-
when i am going from 1st detail list to basic list and choosing another sales order number i am geting the previous data instead of data according to new sales order number. i have tried in ECC5.0 and also in 4.7EE.Plz Help me. The code is as follows
-
I've been trying to connect iphone to mac but the mac does'nt reponed
i've been trying to connect iphone to mac but the mac dose not respond. i upgraded to snow leopard how do i fix the porblem with my mac
-
System management software for LV apps on cRIO and Windows
Hello All, Were I work there is a LabVIEW based project that is a distributed system. This system has a main application that can run on Linux, Windows, or cRIO targets. The main application loads "plugins" depending on what platform it is on to do p
-
No sound in Flash Player, using Ubuntu 10.04
As the title says, there is no sound in Flash Player. I have: flashplugin-nonfree-extrasound 0.0.svn2431-3 flashplugin-nonfree 10.0.45.2ubuntu1 flashplugin-installer I also have gnash, klash, swfdec and some others. Could y
-
Pg_upgrade fails for "$libdir/postgis-2.0"
Hello I was trying to update my system, when found that postgresql needs a little tweaking from 9.2 to 9.3. Following the instructions on the wiki, I ran pg_upgrade: [26] root@xxxlinux : /home/ognyan $ su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/b