Substring function giving out empty fields
I am using OAS 10.1.3v . I have a problem with the substring function in the BPEL functions. In 10.1.2v , all the xpaths with substring functions gave out data.
But in 10.1.3v, all those nodes are seen empty. Is there any particular reason for this ?
Is this a problem of any particular jar file ? I am using xalan 2.7.0 along with this, for custom functions.
Also, in which class, inside the jar file, is the substring function defined ?
Try wrapping the substring function in a @member function. You need the ruturn of a member name not a string. Look at the example of @member in the technical reference for more details
Similar Messages
-
SAP XI - Using the substring function.
Hi Experts,
I am having trouble using the substring function in SAP+XI. I have to consider the value from characters 6 to 19 for a target field of 25 characters. Every time I ma using the standard substring function it is giving an error Array Out of Bounds Exception.
Please tell me how to proceed.
Thanks
AniruddhaHi,
Above error wil come if the input string length is less than the substring length what you are trying to get..
i.e length of the input string is less than 25 characters... do some validations or pass substring as 6 and 0 ..
HTH
Rajesh -
Hi,
My scenario is an outbound XML IDoc.
My problem: when a field of a IDoc segment is empty, this field will not write to XML file.
I checked standard program and i have founded this ABAP line during standard creation of XML:
program: LEDI7F05
line: 704 = 'check not string is initial'.
Why that solution? Is there problem to have in XML file empty field?
Is there a solution to insert also empty field in XML file?
Thanks lot.
Matteo Vernile.Hi,
You could add the empty field in the XML.
Please follow below logic.
Normally any IDOC use to have some mandatory fields which will have always have value for e.g. segment number.
Then use node function as
Source filed---> Exists ->if true then pass the field else pass constant with no value in it -> mapWithDefaultValue->Target field
Try it out
Thanks
Swarup -
Invalid length parameter passed to the LEFT or SUBSTRING function, error on INSERT
I have a stored procedure that does a BULK INSERT of a csv file into myCSVTable then INSERTs records from
myCSVTable into myTable. The INSERT statement is giving me this error:
Invalid length parameter passed to the LEFT or SUBSTRING function.
CSV File:
3,020000007,OR,051,97205,02020005,41075,19470721,2,0,,0,0,0,0,0,1,0,0,,,,,,,,,0,2,,334418,334418,334418,13,,0,,0,0,0,0,0,1,0,0,1,20100217,,,,,20100304,20121030,1,1,,,0,0,0,0,0,,,,,0,0,0,0,9,0,0,0,1,1,0,0,0,3,00,20100304,20100426,20100922,20101011,20100304,20100922,20101011,,20101011,20100819,,20100326,20100326,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,,,1,1,,9,9,1,1,1,1,0,0,111150,111150,111150,999999,5586.25,4714.01,5884.28,7055.89,11097.89,10839.39,0.00,2,,,,,20120617,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,The
Workforce Investment Board for the City of xxxxxxxx and xxxxxxxxx and W,020005,,mstr: 1000000000000000017 js: 372651 epi: 1,Jane Doe
4,020000007,OR,051,97205,02020005,41075,19470721,2,0,,0,0,0,0,0,1,0,0,,,,,,,,,0,2,,334418,334418,334418,13,,0,,0,0,0,0,0,1,0,0,1,20100217,,,,,20100304,20121030,1,1,,,0,0,0,0,0,,,,,0,0,0,0,9,0,0,0,1,1,0,0,0,3,00,20100304,20100426,20100922,20101011,20100304,20100922,20101011,,20101011,20100819,,20100326,20100326,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,,,1,1,,9,9,1,1,1,1,0,0,111150,111150,111150,999999,5586.25,4714.01,5884.28,7055.89,11097.89,10839.39,0.00,2,,,,,20120617,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,The
Workforce Investment Board for the City of xxxxxxxx and xxxxxxxxx and W,020005,,mstr: 1000000000000000017 id: 020000007 epi: 1,Jane Doe
There is no LEFT or SUBSTRING function used in the procedure and there are no triggers on either table.
The procedure had been working fine until today, when I altered one of the CSV fields. The code which triggers the error is this:
INSERT [myTable]
SELECT * FROM [myCSVTable]
The weird thing is, the 1st record containing the changed field (mstr: 1000000000000000017 js: 372651 epi: 1) triggers the error, but the 2nd record containing
the old field value (mstr: 1000000000000000017 id: 020000007 epi: 1), does not.
There are only blank spaces in the 2 strings, no non-printable characters or anything like that. I'm confused.A View of myTable was causing the problem.
Hi LoriCazares,
Do you mean that you have solved this issue? If so, please close this thread.
Regards,
Elvis Long
TechNet Community Support -
Calendar Functionality for a date field in HTML of a ITS service
Hi
I am working with SRM EBP module we want to add date help(with calendar function) to existign date fields in Shopping cart and PO screens . I found some HTML and Javascripts in SYSTEM and BBPGLOBAL services (named as calendar)but not sure which ones to use if anyone used date functionality or even have access to Standard SAP ITS screens that already have date field with calendar fuctionality can you help???????????????
Thanks in AdvanceHi
Let me first thank you for the quick response and timely help you provided calendar popup works great but one minor issue i am not able to click on the date entry and bring the field back into the field not sure if this funcitonality is in show_calendar.
I would really appreciate if you get time to look at below i am almost there with your help......thanks again
Here are the steps I did
I have a HTML page SAPLBBP_SC_UI_ITS screen 300 in SRM module , I created a new HTML page (zcalendar.html) in the same internet service BBPSC01 as suggested and I included in my HTML page SAPLBBP_SC_UI_ITS screen 300 and also I added below code to add a icon and a href call to the show_calendar function.
Code works great I get the popup but when I double click on the date it is not selecting the date into the field back .
Any thoughts??????
<!-- Start ghantavine -->
`include (~service="bbpsc01", ~name="zcalendar.html")`
<!-- End ghantavine -->
<!-- 10/24/05 ghantavine--delivary date -->
`TR()`
`if (GS_SCR_BASIC_I-DELIV_DATE.visible)`
`TR()`
`if (gs_scr_basic_i-deliv_date.disabled)`
`TD(class="label", nowrap="x",
active="")``TXT_BASIC_I-DELIV_DATE.label`
`TD(class="label", nowrap="x", active="")``gs_scr_basic_i-deliv_date.value`
`else`
`TD(class="label", nowrap="x", active="")`<label
for="`GS_SCR_BASIC_I-DELIV_DATE.name`">`TXT_BASIC_I-DELIV_DATE.label`</label>
`TD(class="data", nowrap="x")`
<input type="text" id="GS_SCR_BASIC_I-DELIV_DATE"
name="GS_SCR_BASIC_I-DELIV_DATE" value="`GS_SCR_BASIC_I-DELIV_DATE.value`"
maxlength="010" size="008">
<a href=http://mail.yahoo.com/config/login?/"_javascript:show_calendar();">
<img id="anchor1" src="`mimeurl(~service="bbpglobal",
~name="images/button/f4.gif", ~language="", ~theme="99")`" />
</a>
`end`
`TR()` `Lines()`
`end`
<!-- 10/24/05 ghantavine--delivary date -->
below is the showcalendar code
Hi , u save this as a html file and call this show_calendar fn from Onclick button of your Calendar image .
// For generating the calendar
var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;
var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
if ((p_month == null) && (p_year == null)) return;
if (p_WinCal == null)
this.gWinCal = ggWinCal;
else
this.gWinCal = p_WinCal;
if (p_month == null) {
this.gMonthName = null;
this.gMonth = null;
this.gYearly = true;
} else {
this.gMonthName = Calendar.get_month(p_month);
this.gMonth = new Number(p_month);
this.gYearly = false;
this.gYear = p_year;
this.gFormat = p_format;
this.gBGColor = "white";
this.gFGColor = "black";
this.gTextColor = "black";
this.gHeaderColor = "black";
this.gReturnItem = p_item;
Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;
function Calendar_get_month(monthNo) {
return Calendar.Months[monthNo];
function Calendar_get_daysofmonth(monthNo, p_year) {
Check for leap year ..
1.Years evenly divisible by four are normally leap years, except for...
2.Years also evenly divisible by 100 are not leap years, except for...
3.Years also evenly divisible by 400 are leap years.
if ((p_year % 4) == 0) {
if ((p_year % 100) == 0 && (p_year % 400) != 0)
return Calendar.DOMonth[monthNo];
return Calendar.lDOMonth[monthNo];
} else
return Calendar.DOMonth[monthNo];
function Calendar_calc_month_year(p_Month, p_Year, incr) {
Will return an 1-D array with 1st element being the calculated month
and second being the calculated year
after applying the month increment/decrement as specified by 'incr' parameter.
'incr' will normally have 1/-1 to navigate thru the months.
var ret_arr = new Array();
if (incr == -1) {
// B A C K W A R D
if (p_Month == 0) {
ret_arr[0] = 11;
ret_arr[1] = parseInt(p_Year) - 1;
else {
ret_arr[0] = parseInt(p_Month) - 1;
ret_arr[1] = parseInt(p_Year);
} else if (incr == 1) {
// F O R W A R D
if (p_Month == 11) {
ret_arr[0] = 0;
ret_arr[1] = parseInt(p_Year) + 1;
else {
ret_arr[0] = parseInt(p_Month) + 1;
ret_arr[1] = parseInt(p_Year);
return ret_arr;
function Calendar_print() {
ggWinCal.print();
function Calendar_calc_month_year(p_Month, p_Year, incr) {
Will return an 1-D array with 1st element being the calculated month
and second being the calculated year
after applying the month increment/decrement as specified by 'incr' parameter.
'incr' will normally have 1/-1 to navigate thru the months.
var ret_arr = new Array();
if (incr == -1) {
// B A C K W A R D
if (p_Month == 0) {
ret_arr[0] = 11;
ret_arr[1] = parseInt(p_Year) - 1;
else {
ret_arr[0] = parseInt(p_Month) - 1;
ret_arr[1] = parseInt(p_Year);
} else if (incr == 1) {
// F O R W A R D
if (p_Month == 11) {
ret_arr[0] = 0;
ret_arr[1] = parseInt(p_Year) + 1;
else {
ret_arr[0] = parseInt(p_Month) + 1;
ret_arr[1] = parseInt(p_Year);
return ret_arr;
// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();
Calendar.prototype.getMonthlyCalendarCode = function() {
var vCode = "";
var vHeader_Code = "";
var vData_Code = "";
// Begin Table Drawing code here..
vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
vHeader_Code = this.cal_header();
vData_Code = this.cal_data();
vCode = vCode + vHeader_Code + vData_Code;
vCode = vCode + "</TABLE>";
return vCode;
Calendar.prototype.show = function() {
var vCode = "";
this.gWinCal.document.open();
// Setup the page...
this.wwrite("<html>");
this.wwrite("<head><title>Calendar</title>");
this.wwrite("</head>");
this.wwrite("<body " +
"link=\"" + this.gLinkColor + "\" " +
"vlink=\"" + this.gLinkColor + "\" " +
"alink=\"" + this.gLinkColor + "\" " +
"text=\"" + this.gTextColor + "\">");
this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
this.wwriteA(this.gMonthName + " " + this.gYear);
this.wwriteA("</B><BR>");
// Show navigation buttons
var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
var prevMM = prevMMYYYY[0];
var prevYYYY = prevMMYYYY[1];
var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
var nextMM = nextMMYYYY[0];
var nextYYYY = nextMMYYYY[1];
this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
");" +
"\"><<<\/A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
");" +
"\"><<\/A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
");" +
"\">><\/A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
");" +
"\">>><\/A>]</TD></TR></TABLE><BR>");
// Get the complete calendar code for the month..
vCode = this.getMonthlyCalendarCode();
this.wwrite(vCode);
this.wwrite("</font></body></html>");
this.gWinCal.document.close();
Calendar.prototype.showY = function() {
var vCode = "";
var i;
var vr, vc, vx, vy; // Row, Column, X-coord, Y-coord
var vxf = 285; // X-Factor
var vyf = 200; // Y-Factor
var vxm = 10; // X-margin
var vym; // Y-margin
if (isIE) vym = 75;
else if (isNav) vym = 25;
this.gWinCal.document.open();
this.wwrite("<html>");
this.wwrite("<head><title>Calendar</title>");
this.wwrite("<style type='text/css'>\n<!--");
for (i=0; i<12; i++) {
vc = i % 3;
if (i>=0 && i<= 2) vr = 0;
if (i>=3 && i<= 5) vr = 1;
if (i>=6 && i<= 8) vr = 2;
if (i>=9 && i<= 11) vr = 3;
vx = parseInt(vxf * vc) + vxm;
vy = parseInt(vyf * vr) + vym;
this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
this.wwrite("-->\n</style>");
this.wwrite("</head>");
this.wwrite("<body " +
"link=\"" + this.gLinkColor + "\" " +
"vlink=\"" + this.gLinkColor + "\" " +
"alink=\"" + this.gLinkColor + "\" " +
"text=\"" + this.gTextColor + "\">");
this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
this.wwrite("Year : " + this.gYear);
this.wwrite("</B><BR>");
// Show navigation buttons
var prevYYYY = parseInt(this.gYear) - 1;
var nextYYYY = parseInt(this.gYear) + 1;
this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
");" +
"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
this.wwrite("[<A HREF=\"" +
"javascript:window.opener.Build(" +
"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
");" +
"\">>><\/A>]</TD></TR></TABLE><BR>");
// Get the complete calendar code for each month..
var j;
for (i=11; i>=0; i--) {
if (isIE)
this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
else if (isNav)
this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
this.gMonth = i;
this.gMonthName = Calendar.get_month(this.gMonth);
vCode = this.getMonthlyCalendarCode();
this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
this.wwrite(vCode);
if (isIE)
this.wwrite("</DIV>");
else if (isNav)
this.wwrite("</LAYER>");
this.wwrite("</font><BR></body></html>");
this.gWinCal.document.close();
Calendar.prototype.wwrite = function(wtext) {
this.gWinCal.document.writeln(wtext);
Calendar.prototype.wwriteA = function(wtext) {
this.gWinCal.document.write(wtext);
Calendar.prototype.cal_header = function() {
var vCode = "";
vCode = vCode + "<TR>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
vCode = vCode + "</TR>";
return vCode;
Calendar.prototype.cal_data = function() {
var vDate = new Date();
vDate.setDate(1);
vDate.setMonth(this.gMonth);
vDate.setFullYear(this.gYear);
var vFirstDay=vDate.getDay();
var vDay=1;
var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
var vOnLastDay=0;
var vCode = "";
Get day for the 1st of the requested month/year..
Place as many blank cells before the 1st day of the month as necessary.
vCode = vCode + "<TR>";
for (i=0; i<vFirstDay; i++) {
vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
// Write rest of the 1st week
for (j=vFirstDay; j<7; j++) {
vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
"<A HREF='#' " +
"onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
this.format_data(vDay) +
"';window.close();\">" +
this.format_day(vDay) +
"</A>" +
"</FONT></TD>";
vDay=vDay + 1;
vCode = vCode + "</TR>";
// Write the rest of the weeks
for (k=2; k<7; k++) {
vCode = vCode + "<TR>";
for (j=0; j<7; j++) {
vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
"<A HREF='#' " +
"onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
this.format_data(vDay) +
"';window.close();\">" +
this.format_day(vDay) +
"</A>" +
"</FONT></TD>";
vDay=vDay + 1;
if (vDay > vLastDay) {
vOnLastDay = 1;
break;
if (j == 6)
vCode = vCode + "</TR>";
if (vOnLastDay == 1)
break;
// Fill up the rest of last week with proper blanks, so that we get proper square blocks
for (m=1; m<(7-j); m++) {
if (this.gYearly)
vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
else
vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
return vCode;
Calendar.prototype.format_day = function(vday) {
var vNowDay = gNow.getDate();
var vNowMonth = gNow.getMonth();
var vNowYear = gNow.getFullYear();
if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
else
return (vday);
Calendar.prototype.write_weekend_string = function(vday) {
var i;
// Return special formatting for the weekend day.
for (i=0; i<weekend.length; i++) {
if (vday == weekend<i>)
return (" BGCOLOR=\"" + weekendColor + "\"");
return "";
Calendar.prototype.format_data = function(p_day) {
var vData;
var vMonth = 1 + this.gMonth;
vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
var vY4 = new String(this.gYear);
var vY2 = new String(this.gYear.substr(2,2));
var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;
/* switch (this.gFormat) {
case "MM\/DD\/YYYY" :
vData = vMonth + "\/" + vDD + "\/" + vY4;
break;
case "MM\/DD\/YY" :
vData = vMonth + "\/" + vDD + "\/" + vY2;
break;
case "MM-DD-YYYY" :
vData = vMonth + "-" + vDD + "-" + vY4;
break;
case "MM-DD-YY" :
vData = vMonth + "-" + vDD + "-" + vY2;
break;
case "DD\/MON\/YYYY" :
vData = vDD + "\/" + vMon + "\/" + vY4;
break;
case "DD\/MON\/YY" :
vData = vDD + "\/" + vMon + "\/" + vY2;
break;
case "DD-MON-YYYY" :
vData = vDD + "-" + vMon + "-" + vY4;
break;
case "DD-MON-YY" :
vData = vDD + "-" + vMon + "-" + vY2;
break;
case "DD\/MONTH\/YYYY" :
vData = vDD + "\/" + vFMon + "\/" + vY4;
break;
case "DD\/MONTH\/YY" :
vData = vDD + "\/" + vFMon + "\/" + vY2;
break;
case "DD-MONTH-YYYY" :
vData = vDD + "-" + vFMon + "-" + vY4;
break;
case "DD-MONTH-YY" :
vData = vDD + "-" + vFMon + "-" + vY2;
break;
case "DD\/MM\/YYYY" :
vData = vDD + "\/" + vMonth + "\/" + vY4;
break;
case "DD\/MM\/YY" :
vData = vDD + "\/" + vMonth + "\/" + vY2;
break;
case "DD-MM-YYYY" :
vData = vDD + "-" + vMonth + "-" + vY4;
break;
case "DD-MM-YY" :
vData = vDD + "-" + vMonth + "-" + vY2;
break;
default :
vData = vMonth + "\/" + vDD + "\/" + vY4;
vData = vY4vMonthvDD ;
//vData = vDD"."vMonth"."vY4;
return vData;
function Build(p_item, p_month, p_year, p_format) {
var p_WinCal = ggWinCal;
gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);
// Customize your Calendar here..
gCal.gBGColor="white";
gCal.gLinkColor="black";
gCal.gTextColor="black";
gCal.gHeaderColor="darkgreen";
// Choose appropriate show function
if (gCal.gYearly) gCal.showY();
else gCal.show();
function show_calendar() {
p_month : 0-11 for Jan-Dec; 12 for All Months.
p_year : 4-digit year
p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
p_item : Return Item.
p_item = arguments[0];
if (arguments[1] == null)
p_month = new String(gNow.getMonth());
else
p_month = arguments[1];
if (arguments[2] == "" || arguments[2] == null)
p_year = new String(gNow.getFullYear().toString());
else
p_year = arguments[2];
if (arguments[3] == null)
p_format = "MM/DD/YYYY";
else
p_format = arguments[3];
vWinCal = window.open("", "Calendar",
"width=300,height=250,status=no,resizable=no,top=100,left=100");
vWinCal.opener = self;
ggWinCal = vWinCal;
Build(p_item, p_month, p_year, p_format);
Yearly Calendar Code Starts here
function show_yearly_calendar(p_item, p_year, p_format) {
// Load the defaults..
if (p_year == null || p_year == "")
p_year = new String(gNow.getFullYear().toString());
if (p_format == null || p_format == "")
p_format = "MM/DD/YYYY";
var vWinCal = window.open("", "Calendar", "scrollbars=yes");
vWinCal.opener = self;
ggWinCal = vWinCal;
Build(p_item, null, p_year, p_format); -
Use of substr function will avoid the use of indexes in a table
i have one table which will contain some 3,00,000 records, it contains some 11 primary keys i am using some update statements to update some fields in the records (of 3,00,000 i will compare some 1,50,000 records with 1,50,000 another records) i am using substr function in all the select statements. whether usage of substr function will avoid the use of index
can any one clarify?contains some 11 primary keys by this I suppose you mean to say the table has a composite PK on 11 columns.
i am using substr function in all the select statementsCould you please post your SQL statement? -
Contract - problem with attachements (empty field in LOIO_OBJID)
Hi Guys,
We are using extended classic scenario of SRM 4.0 (SRM Server 500) and our latest support package is SAPKIBKS12. We have the following problem with contracts.
Sometimes when an attachment is added to a contract the system does not fill the following fields in tabel BBP_PDATT.
LOIO_CLASS: Normally filled with BBP_L_DOC
LOIO_OBJID: Normaly filled with a GUID size datastring
Whenever this happens and later on the contract is changed and released the system will raise an abort. We tried the following notes but no good result.
891293,919467,932602,964065. Some other notes that might be possible are 1042826/1085700/1083063 but we also don't have good experience with these ones.
Can anyone give us advice about two things.
1) Is there a way to fill the empty fields in BBP_PDATT so that existing contract will work properly again?
2) Does anyone know why this problem occurs and how to fix it for new contracts?
Hope to hear from you,
ArieThankyou for the reply. I have made following changes but still not working. I am creating the inquiry and customer material is not getting populated. Please guide in resolving the issue.
DATA : W_ENQUIRY_ITEM_INX LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE.
W_ENQUIRY_ITEM_INX-ITM_NUMBER = THEAD-ITEMNO.
W_ENQUIRY_ITEM_INX-UPDATEFLAG = 'X'.
W_ENQUIRY_ITEM_INX-CUST_MAT22 = 'X'.
APPEND W_ENQUIRY_ITEM_INX.
CALL FUNCTION 'BAPI_INQUIRY_CREATEFROMDATA2'
EXPORTING
SALESDOCUMENTIN =
INQUIRY_HEADER_IN = W_ENQUIRY_THEAD
IMPORTING
SALESDOCUMENT = W_NUMBER
TABLES
RETURN = W_RETURN
INQUIRY_ITEMS_IN = W_ENQUIRY_ITEM
INQUIRY_ITEMS_INX = W_ENQUIRY_ITEM_INX
INQUIRY_PARTNERS = T_INQUIRY_PARTNERS -
Validation of multiple empty fields in dynamic form
Hi,
I have created multiple fields dynamic form consisting of both mandatory & optional fields. Since the mandatory fields are validated by default, I want to validate the optional fields while submitting as PDF document dynamically and prompt me to continue or discard the submission. Also validating each & every field is not valid option as my form contains more than 200 fields.
I have tried with the below script which I successfully used to lock the form but in validating the empty fields I have a problem. Although I populate all the fields in the form, still I receive the validation message. Can anybody help me out on this issue?
for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
var oFields = xfa.layout.pageContent(nPageCount, "field");
var nNodesLength = oFields.length;
// Set the field property.
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
if (oFields.item(nNodeCount).isNull = 1 && oFields.item(nNodeCount).length < 0){
xfa.host.messageBox("All the form fields are not completed, Do you want to continue","Field Validation", 2, 2);
break
Thanks,
JayI discovered how to accomplish this using the Manage Dynamic Form Wizard and changed the "Display as" field property from "Text field" to "Text" for the fields I wanted read only.
Now I have another problem, the properties of one of the fields (for comments) was "Text area" when I changed it to "Text" I now have this extremely long line that streches the width of the browser.
Is there a way to get this line to wrap? This is he line I'm working with...
<td class="form_results"><?php echo KT_escapeAttribute($row_rssubmissions['sub_comments']); ?></td>
Dennis
I found the answer to this problem, Günter had answered it in another post.
http://forums.adobe.com/message/1875032#1875032
Dennis -
Hi everybody,
I'm trying to develop a trigger-based solution for a project involving received messages from an MQ queue.
The messages are all inserted from the queue into a single staging table. (v10.2.0.4)
Each message's data will need to be either inserted or updated to a destination table based upon a field's value in the staging table.
I was planning on putting a trigger on the staging table and calling an insert or update procedure based on the staging field's value.
The inserts are pretty straightforward.
It's the updates that I'm struggling with - some of the staging fields will be populated, others will be empty. There is no pattern to which fields will or will not be populated.
I do not want to update the destination table with empty fields - I only want to update fields that contain data.
Is there an better way than several "if-then check for empty, then update" (one for each field)?
Maybe some sort of magical dynamic update?
Any help is greatly appreciated.
Thanks in advance!Hi,
You can use the NVL function (or COALESCE), which returns the first of its arguments that is NOT NULL.
Instead of:
UPDATE dest
SET column_a = x
, column_b = y
WHERE id = z;say
UPDATE dest
SET column_a = NVL (x, column_a)
, column_b = NVL (y, column_b)
WHERE id = z;If x IS NOT NULL, then NVL (x, column_a) will return x.
If x IS NULL, then NVL (x, column_a) will return column_a
You could also automate this in a BEFORE UPDATE trigger:
:NEW.column_a := NVL (:NEW.column_a, :OLD.column_a);
:NEW.column_b := NVL (:NEW.column_a, :OLD.column_b);but if you do, you'll have to disable the trigger to correct mistakes that really should be NULL. -
Substring function not working in Analytical view
Dear All,
I am trying to use substring function in my analytical view .It says valid expression during syntax check but getting activation error.
thanks
SouravHi Krishna,
This is Kiran, I am trying to restrict a (string) filed value by removing the spaces and wring to calculated column field in an Analytical view for position 6 - 10.
Example: Field name XYZ (Values showing as: ASDFG GETVALUENW 2345) --> (data type :22 VARCHAR)
Output Value must be : GETVALUENW (which is 10 characters, from position 6 after trimming)
Please advice which function use and how to apply the syntax
Your inputs are highly appreciated.
Thanks
Kiran. -
Substring Function in formula builder of transfer rule
Hi Gurus
I want to get the domain name from Email address.
For eg: if the email address is [email protected], i want to display only "yahoo.com" in the report.
For that, shall i use Substring function in transfer rule.
If so, please advice me how i can do this.
Thanks
SansenInstead try using a routine using the SPLIT function...
For example if you want to split the value of the field TEST whose value is [email protected] then try writing a code like below in the transfer routine...
DATA: TEST1(30), TEST2(30) TYPE C.
SPLIT TRAN_STRUCTURE-ZEMAILID AT '@' into TEST1 and TEST2.
RESULT = TEST2.
(value of TEST2 would be yahoo.com)
Hope this helps... -
Using substring function with error
Hi Guys,
I have a source field with 1200 characters which need to map to multiple target segments for 132 count of this source field.
This is not a mandatory field so it sometimes come without any value.
I am using substring function to breakout the string for every 132 characters and mapped to the target segments.
There are two problems, first it seems that if source is blank, there will be error.
Second, if source field come with only eg. 300 characters, error will also occurs.
I have searched thru SDN and try some of the UDF but to no avail.
Appreciate your guidance on this problem.
Regards
FNGH Rahul,
I have tried your quote but face some syntax error as follows
Function calculate, Line 6:
cannot find symbol symbol : method length() location: class java.lang.String[] j = input.length();
Function calculate, Line 26:
cannot find symbol symbol : method subString(int,int) location: class java.lang.String[]
result.addValue(input.subString(0,EndIndex)); ^
Function calculate, Line 34:
cannot find symbol symbol : method subString(int,int) location: class java.lang.String[] result.addValue(input.subString(StartIndex,EndIndex)); ^
Function calculate, Line 40:
cannot find symbol symbol : method subString(int,int) location: class java.lang.String[] result.addValue(input.subString(StartIndex,EndIndex)); ^ Note: /usr/sap/D03/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd66a3a60002911e09ba9e41f132d6b68/source/com/sap/xi/tf/_MM_MT_COMS_TO_ZME_CRE_CHG_CONTRACT_.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /usr/sap/D03/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd66a3a60002911e09ba9e41f132d6b68/source/com/sap/xi/tf/_MM_MT_COMS_TO_ZME_CRE_CHG_CONTRACT_.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 4 errors -
How to use Substring function with Case statement.
Hello Everyone,
I have one requirement where I have to use substring function on the field for report criteria.
E.G.
I have Branch Name Field where I have all branch names information, Now some of the branch names are too big with some extension after the name .
now i want to substing it but the character length varies for each branch.
so is there any way where we can use case statement where we can define that if branch name character are exceeding some value then substing it with this length.Try something like this:
CASE WHEN LENGTH(tablename.Branch_Name) > n THEN SUBSTRING(...) ELSE tablename.Branch_Name END
where n is the number of characters you want to start the break. -
Can we create table maintence generator with out key field
Hi,
I have created a ztable in that client is the primary key as I don't want any other field as primary key.
For this i have created table maintenace generator but when i open it in sm30 blnak screen is coming.
Here my question is can we create a table maintenace generator with out key field other than MANDT.
If it's possible please let me know.
Regards
hari>
Mathews Joseph wrote:
> I agree to the above points , but you can try one thing.
>
> When you create the table maintenance screen , from SE11 you assign a function group.
>
> Double click on the function group and you can go to the main program and open that in SE80, take screen generated and try manually adjusting the screen and putting the non key field details...
>
> Not sure this will work , but may be you can give it a try.
>
> Mathews
But the table could hold at most a single record (per client). The design is lacking.
Rob -
How to handle source empty field in FDM maps
Dear all,
In our projects, data was extracted from EBS with ERPi adapters to HFM through FDM. In this case, some source fields are empty after the data extraction from EBS. The problem is, how can I deal with the empty field in the maps. For now, the workaround is using wildcard (like *->[None]), sth like that. But there is a risk in it, it may happen to ignore some records with error. Do your guys know any special characters stand for the Null in the mapping?
Thanks!We have had a workaround solution since moving to V11. This was not a problem in System 9.
The issue with blanks not defaulting to [None] is that some values escape the test. Such as forcing default values using "Like (* = [None])". If a new code is in your data that is not in your map, the Validation process foiled since [None] is valid and all blanks are now [None]. Only then do you either have an intersection violation that shows up during Export or you get bad data in HFM.
I don't like this new "feature" in S11 FDM. We will be submitting a request to have the default functionality added back. Perhaps as an option?
Mike
Maybe you are looking for
-
Date for first day of current month
How can i get the date for first day of current month ?
-
Aperture 3.3 and iPhoto 09 Library Merge
Ok. First, I think I really screwed this up. After taking advice from someone on how to go about splitting my 101GB iPhoto Library into multiple smaller libraries organized by year, I purchased Aperture for the purpose of splitting the iPhoto librar
-
i should clarify that I can see that region, I just can't get the cursor to click on anything there.
-
Can't delete a Blackberry Messenger message from unknown
I received a an invitation to BBM from a stranger over a week ago and I have not been able to delete it, ignore it or decline it. It just stubbornly stays in my inbox. Only thing I have not tried is to accept the invitation as I do want to. What can
-
Hi, We run KSV5 transaction every month to distribute cost from Indirect Production Cost centres to Production Centres but some of the cost remains on Indirect Production Cost centres so how to reconcile that. Presently we are doing it by running s_a