Setting webbean from the value returned to PFR ?
I have a button on my custom page, say "View Results", invoking it returns a string value internally
so in my CO - PFR :
if (pageContext.getParameter("pressButton") != null)
String str = (String)(am.invoke("viewDetails")) ;
System.out.println("in PFR " + str) ; //prints fine
I want to set this value of returned str to a webBean of the type :OAMessageStyledTextBean
I know I should do it in Process request
but when I test for user pressed the button, it doesnt give me anything.
if (pageContext.getParameter("pressButton") != null)
String str = (String)(am.invoke("viewDetails")) ;
System.out.println("in PR " + str) ; // doesnt print
I figured a way out but not sure if its correct.
I used pageContext.setForwardURLToCurrentPage() in PFR and then SOP in PR gets printed. Then I set the value of msgstyletext bean.
Kindly guide me
Thanks
Guru is right there are two ways , recalling process request should be the last approach,while coding in OAF, as the entire page hirarchy is refreshed. Instead here you can :
1) Use Databound values and attach messagestyle text bean text attribute to a VO column.
2)Use Message textinput with read only property true and attach it with vo attribute.
--Mukul
Similar Messages
-
I am currently testing our website with CF11. It is currently working with CF8 however after migrating it to a new server running CF11 I have encountered the following error.
The value returned from the load function is not of type numeric.
The error occurred in
D:/Applications/CFusion/CustomTags/nec/com/objects/address.cfc: line 263
Called from D:/Applications/CFusion/CustomTags/nec/com/objects/contact.cfc: line 331
Called from D:/Applications/CFusion/CustomTags/nec/com/objects/user.cfc: line 510
Called from D:/Applications/CFusion/CustomTags/nec/com/objects/user.cfc: line 1675
Called from D:/website/NECPhase2/action.validate.cfm: line 54
261 : <cfif isNumeric(get.idCountry)>
262 : <cfset rc = this.objCountry.setID(get.idCountry)>
263 : <cfset rc = this.objCountry.load()>
264 : </cfif>
265 : <cfset this.sPostcode = get.sPostcode>
Have there been any changes between CF8 and CF11 that could cause this error?
Does anyone have ideas?This is the code in file object file country.cfc (nec.com.objects.country):
<cfcomponent displayname="Country object" hint="This is a Country object, it allows you to access and set values in the Country.">
<!---
// Construct this object
--->
<cfset this.objFunctions = CreateObject( 'component', 'nec.com.system.functions' )>
<cfscript>
this.idCountryID = 0;
this.sCountryName = "";
this.sISOCode = "";
this.sDHLCode = "";
this.iErrorID = "";
</cfscript>
<!---
// The following functions are the setters and getters. offering us a better way to get
// at the contents of the object
--->
<!---
// Getters
--->
<cffunction name="getID" displayname="Get ID" returntype="numeric" output="false" hint="This returns the ID of the current item.">
<cfreturn this.idCountryID>
</cffunction>
<cffunction name="getsCountryName" displayname="Get sCountryName" returntype="string" output="false" hint="This gets the sCountryName value of this item.">
<cfreturn this.sCountryName>
</cffunction>
<cffunction name="getsISOCode" displayname="Get sISOCode" returntype="string" output="false" hint="This gets the sISOCode value of this item.">
<cfreturn this.sISOCode>
</cffunction>
<cffunction name="getsDHLCode" displayname="Get sDHLCode" returntype="string" output="false" hint="This gets the sDHLCode value of this item.">
<cfreturn this.sDHLCode>
</cffunction>
<cffunction name="iError" displayname="Get iError" returntype="numeric" output="false" hint="This returns the iError of the current item.">
<cfreturn this.iError>
</cffunction>
<!---
// Setters
--->
<cffunction name="setID" displayname="Set ID" returntype="boolean" output="false" hint="This sets the ID value of this item.">
<cfargument name="idCountryID" required="true" type="numeric" displayname="ID" hint="The ID to use.">
<cfset this.idCountryID = arguments.idCountryID>
<cfreturn true>
</cffunction>
<cffunction name="setsCountryName" displayname="Set sCountryName" returntype="boolean" output="false" hint="This sets the sCountryName value of this item.">
<cfargument name="sCountryName" required="true" type="string" displayname="sCountryName" hint="The sCountryName to use.">
<cfset this.sCountryName = arguments.sCountryName>
<cfreturn true>
</cffunction>
<cffunction name="setsISOCode" displayname="Set sISOCode" returntype="boolean" output="false" hint="This sets the sISOCode value of this item.">
<cfargument name="sISOCode" required="true" type="string" displayname="sISOCode" hint="The sISOCode to use.">
<cfset this.sISOCode = arguments.sISOCode>
<cfreturn true>
</cffunction>
<cffunction name="setsDHLCode" displayname="Set sDHLCode" returntype="boolean" output="false" hint="This sets the sDHLCode value of this item.">
<cfargument name="sDHLCode" required="true" type="string" displayname="sDHLCode" hint="The sDHLCode to use.">
<cfset this.sDHLCode = arguments.sDHLCode>
<cfreturn true>
</cffunction>
<!---
// Clear, to empty out the contents of this object
--->
<cffunction name="clear" displayname="Clear items Details" returntype="boolean" output="false" hint="Clears out all of the items details.">
<cfscript>
this.sCountryName = "";
this.sISOCode = "";
this.sDHLCode = "";
this.iErrorID = "";
</cfscript>
<cfreturn true>
</cffunction>
<!---
// The following functions deal with the load, save and deleting of objects
--->
<!---
// Load
--->
<cffunction name="load" displayname="Load items details" returntype="numeric" output="false" hint="This loads in all the information about an item.">
<cfset rc = this.clear()>
<!---
// First of all we need to get the name of the data source we are going to be using
--->
<cfscript>
objDS = CreateObject("component","nec.com.system.settings");
sDatasource = objDS.getDatasource();
</cfscript>
<!---
// Check to see if it exists
--->
<cftry>
<cfquery name="checkID" datasource="#sDatasource#">
SELECT idCountryID
FROM tblCountry
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("load: checkID: '#this.idCountryID#' #cfcatch.detail#");
</cfscript>
<cfset this.iErrorID = iErrorID>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfif not checkID.recordCount>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
if(isDefined("session.afr")){
whichOne = "#session.afr.getsAFRNumber()#";
} else {
whichOne = "";
iErrorID = objError.addError("A Country with that id doesn't exists.[#this.idCountryID#][#whichOne#]");
</cfscript>
<cfset this.iErrorID = iErrorID>
<cfreturn iErrorID>
</cfif>
<!---
// If we got past all then then load in the details
--->
<cftry>
<cfquery name="get" datasource="#sDatasource#">
SELECT idCountryID, RTRIM(sCountryName) as sCountryName, RTRIM(sISOCode) as sISOCode, RTRIM(sDHLCode) as sDHLCode
FROM tblCountry
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("load: get: #cfcatch.detail#");
</cfscript>
<cfset this.iErrorID = iErrorID>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfset this.idCountryID = get.idCountryID>
<cfset this.sCountryName = get.sCountryName>
<cfset this.sISOCode = get.sISOCode>
<cfset this.sDHLCode = get.sDHLCode>
<cfset this.iErrorID = "">
<cfreturn true>
</cffunction>
<!---
// Save
--->
<cffunction name="save" displayname="Save items Details" returntype="numeric" output="false" hint="Saves (to some source) the current details for the ID of the item.">
<!---
// First of all we need to get the name of the data source we are going to be using
--->
<cfscript>
objDS = CreateObject("component","nec.com.system.settings");
sDatasource = objDS.getDatasource();
</cfscript>
<!---
// Now check to see if ithat ID exists
--->
<cftry>
<cfquery name="checkID" datasource="#sDatasource#">
SELECT idCountryID
FROM tblCountry
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("save: checkID: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<!---
// If it doesn't exist, then add the record, otherwise update the record
--->
<cfif not checkID.recordCount>
<cfreturn this.add()>
<cfelse>
<cfreturn this.update()>
</cfif>
</cffunction>
<!---
// Add
--->
<cffunction name="add" displayname="Add Country" returntype="numeric" output="false" hint="This adds a Country.">
<!---
// Check to see if that a different item isn't already using the same unique details
--->
<cftry>
<cfquery name="checkUnique" datasource="#sDatasource#">
SELECT idCountryID
FROM tblCountry
WHERE sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#'
OR sISOCOde = '#this.objFunctions.scrubText(this.sISOcode)#'
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("add: checkUnique: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfif checkUnique.recordCount>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("A Country with that name or ISO code already exists. idCountryID=#checkUnique.idCountryID#");
</cfscript>
<cfreturn iErrorID>
</cfif>
<cftry>
<cfquery name="add" datasource="#sDatasource#">
SET nocount on
INSERT INTO tblCountry(sCountryName, sISOCode, sDHLCode)
VALUES('#this.objFunctions.scrubText(this.sCountryName)#','#this.objFunctions.scrubText(t his.sISOCode)#','#this.objFunctions.scrubText(this.sDHLCode)#')
SELECT @@identity as autoID
SET nocount off
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("add: add: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfreturn add.autoID>
</cffunction>
<!---
// Update
--->
<cffunction name="update" displayname="Update Country" returntype="numeric" output="false" hint="This updates a Country record.">
<!---
// Check to see if that a different item isn't already using the same unique details
--->
<cftry>
<cfquery name="checkUnique" datasource="#sDatasource#">
SELECT idCountryID
FROM tblCountry
WHERE (sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#'
OR sISOCOde = '#this.objFunctions.scrubText(this.sISOcode)#')
AND idCountryID <> #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("update: checkUnique: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfif checkUnique.recordCount>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("Another Country with that name already exists. idCountryID=#checkUnique.idCountryID#");
</cfscript>
<cfreturn iErrorID>
</cfif>
<!---
// Attempt to update the record to the datasource
// if this fails for any reason then we submit an error message
// to the error component and return the ID of the error
--->
<cftry>
<cfquery name="update" datasource="#sDatasource#">
UPDATE tblCountry
SET sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#',
sISOCode = '#this.objFunctions.scrubText(this.sISOCode)#',
sDHLCode = '#this.objFunctions.scrubText(this.sDHLCode)#'
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("update: update: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfreturn this.idCountryID>
</cffunction>
<!---
// Delete
--->
<cffunction name="delete" displayname="Delete Country" returntype="numeric" output="false" hint="This deletes a Country record.">
<!---
// First of all we need to get the name of the data source we are going to be using
--->
<cfscript>
objDS = CreateObject("component","nec.com.system.settings");
sDatasource = objDS.getDatasource();
</cfscript>
<!---
// Now check to see if ithat ID exists
--->
<cftry>
<cfquery name="checkID" datasource="#sDatasource#">
SELECT idCountryID
FROM tblCountry
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("delete: checkID: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfif not checkID.recordCount>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("A Country with that id doesn't exists, delete failed.");
</cfscript>
<cfreturn iErrorID>
</cfif>
<!---
// Now check to see if there are any dependancies, if so we can't delete the item
--->
<cftry>
<cfquery name="checkDependancies" datasource="#sDatasource#">
SELECT idCountry
FROM tblAddress
WHERE idCountry = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("delete: checkDependancies: idCountry: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfif checkDependancies.recordCount>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("That Country is being used by an address, delete failed.");
</cfscript>
<cfreturn iErrorID>
</cfif>
<!---
// Now attempt to remove the record.
// if this fails for any reason then we submit an error message
// to the error component and return the ID of the error
--->
<cftry>
<cfquery name="delete" datasource="#sDatasource#">
DELETE FROM tblCountry
WHERE idCountryID = #this.idCountryID#
</cfquery>
<cfcatch>
<cfscript>
objError = CreateObject("component","nec.com.system.errors");
iErrorID = objError.addError("delete: delete: #cfcatch.detail#");
</cfscript>
<cfreturn iErrorID>
</cfcatch>
</cftry>
<cfreturn this.idCountryID>
</cffunction>
</cfcomponent> -
Can I use the value returned from a Text Function in another Formula?
I'm writing a report in Hyperion System 9 BI + Financial Reporting Studio version 9.2. I have 2 grids in my report.
Grid1 Column A is set up as a text function using the function type - <<GetCell("Grid2", 1, a, 1)>>. I would like to use the values returned from this text function in Column A (Grid 1) in a formula in Column B (Grid 1).
Is it possible to use the values returned in Column A of the text function in another formula? My report does not seem to recognize Column A as numerical values, even though the values to be returned are numerical.
If so, how do I recognize the values in Column A Grid 1 as numerical values and not text?
Thanks for any help you can offer!Hi Edson,
Yes you need to use the CALC_ERROR macro function to be able to test whether the last macro function returned an error. CALC_ERROR will return an 'X' if there an error occured during the execution of the last macro function.
You can use a macro similar to the following:
IF
CALC_ERROR( )
= 'X'
DO SOMETHING HERE
ENDIF
Let me explain how this works internally. The SAP system maintains a global variable g_flg_calc_error during the execution of macros in the planning book. The g_flg_calc_error variable will contain the value of f_calc_error that was set by the last macro function which executed. The ABAP coding of a planning book is something like this:
data: g_flg_calc_error type /SAPAPO/FLAG.
* SAP will pass g_flg_calc_error variable to all macro
* functions. When SAP calls a macro function, it does
* something like this.
call function '/SAPAPO/MACRO_FUNCTION_HERE'
exporting
plob_values = i_s_adv_plob_values
sdp_book = g_c_advf_sdp_book
sdp_view = g_c_advf_sdp_view
tables
cols_index = i_t_cols
value_tab = l_t_value_tab
changing
f_calc_error = g_flg_calc_error
As you can see, the g_flg_calc_error variable
is passed in the "changing" part of the call. The macro function being called can then use the f_calc_error
variable to change the value of the global
g_flg_calc_error variable. In fact, the macro function being called can also check (by looking at the f_calc_error variable) if the last macro function reported an error. The CALC_ERROR macro function just checks the value of f_calc_error parameter (w/c in fact is the value of the g_flg_calc_error variable) and returns "true/X" if the f_calc_error was set to true by the last macro function.
Hope this helps in clearing things out -
How do I print out the value returned by a method in main??
I'm a total newbie at java, I want to know how I can print out the value returned by this function in the "Main" part of my class:
public int getTotalPrice(int price)
int totalprice=price+(price*0.08);
return totalprice;
I just want to know how to print out the value for total price under "public static void main(String[] args)". thanks in advance,
BradFew ways you could do it, one way would be to create an instance of the class and call the method:
public class Test
public double getTotalPrice(int price)
double totalprice = price + (price * 0.08);
return totalprice;
public static void main(String[] args)
Test t = new Test();
System.out.println(t.getTotalPrice(52));
}Or another would be to make getTotalPrice() static and you could call it directly from main. -
Replacement from the Value of an Attribute*
Replacement from the Value of an Attribute
With formula variables you can set the processing type Replacement from the Value of an Attribute and create a reference to the reference characteristic for the variable. The attribute Reference to Characteristic (Constant 1) is a dummy attribute that is available with each characteristic. It serves to create a reference to the characteristic, by which it does not need to be aggregated. By choosing this attribute, you can influence the aggregation behavior of calculated key figures in a targeted way and can improve performance during calculation.
1)what does this do in the query?
2)what is the value of the variable created ?(like 1,2 etc {i.e.} it changes or is a constant value like 1)?
E.g. i have created a formula variable zvar , (replacement path type) ref. char is wbselement, then what will be the value of the zvar if its used in a formula
eg. Formula 1 = kef1 kef2zvar.
what will be the value(s) of the variables in the these cases
1. project = 1000,1000.30.
2.project = 2000,2000.30.01
3.proect = 3000,3000.30.01,3000.30.02.
3.) as per the def. its a number which refer to a wbs, then in the FORMULA , will it consider the zvar as a VALUE or what would happen?
Edited by: jumboash on Oct 23, 2009 7:25 PMHi,
ZVAR is not considered as value in the calculation. It is used only to calculate the formula correctly without aggregation of the operands.
For example there are two materials m1 and m2 . total amount has to be calculated for these materials whose quantitys are 10 and 20 and whose prices are 200 and 300 respectively.
Case1:- if ZVAR is not used then the calculation of the fromula will be as follows
qty Price amount
10 * 200 = 2000
20 * 300 = 6000
30 * 500 = 15000 -> The total amount shows is 15000 which is not correct
Case 2: - if ZVAR is used in the calculation of the formula
qty Price amount
10 * 200 = 2000
20 * 300 = 6000
8000 -> The total amount shows is 8000 which is correct
so using the ZVAR in the formula shows the correct result without considering the aggregation . This is useful in the case if the material is not part of rows. -
How to get the values returned by a function in a drop down?
Hi All,
Can anyone please help in getting the values returned by a function into a drop down? I have a java class file where in i have written a function called getWeeks() which give all the week dates and i want to display these week dates in a drop down box in a JSP page.
Please help me in this regard.
Thanks in Advance!!
Lakshman.Hi Lakshman,
the following code can help you do what you want :
<hbj:dropdownListBox id="calendar" tooltip="Calendar" selection="<%= selected %>">
<%
String[] weeks = myObjectBean.getWeeks();
for (int i = 0; i < weeks.length; i++) {
%>
<hbj:listBoxItem key="<%= i %>" value="<%= weeks<i> %>"/>
<%
%>
</hbj: dropdownListBox>
The <%= selected %> snippet allows you to pre-select one of the options (provided that the variable 'selected' is equal to one of the listBoxItem keys).
You can also add onSelect to the tag (e.g. = "setSelectedItem"). It corresponds to a method in the corresponding JSPDynPage class. This means that when you select another item in the dropdown list, the method in your Java class is performed (allowing you to save the selected value and performing actions with it)
I hope this helped you enough,
kind regards,
Frederic
Edited seven times by: Frederic Taes on Nov 5, 2008 11:24 AM -> the onSelect element was in the hbj tag and in the text with "='setSelectedItem'" next to it and when I tried to post my message, I got a 501 error all the time ! Seems like a SDN bug to me ... -
Is it possible to reference one cell from the value of another?
Is it possible to reference one cell from the value of another e.g.
value of b1 = value of c(value of a1)
So if a1 = 3 then b1 = c3, if a1 = 5 then b1 = c5.Excellent!
Thanks Wayne. Just saved me many hours and a headache.
Works like a dream.
Thank you for your succinct (and accurate) answer.
Mark -
Will pages automatically reformat to correct size when using Folio Builder or do I have to make pages iPad format, for example, in InDesign document set up from the start?
Moved to DPS forum.
You need to set up the pages appropriately for the target device. For iPad that's 1024x768. -
Set OFF from the TM Preferences
My TM is currently Set OFF from the TM Preferences. Still I can run Time Machine from the menu by giving 'back up now'.
Is this a feature (OK with me but seems unlogical)I suppose it is just an override, that lets you back up while still keeping the setting for preventing it doing it hourly. Best of both worlds.
-
How do I remove the drop shadow from the value labes on my bar chart in Pages?
How do I remove the drop shadow from the value labes on my bar chart in Pages?
As far as I know, you must use brute force in the index.xml file describing the document.
Search the descriptor of your values labels
It starts with : <sf:SFCBarSeriesValueParagraphStyleProperty>
and delete the three items describing the shadow.
I highlighted it with red.
Yvan KOENIG (VALLAURIS, France) vendredi 8 juillet 2011 19:08:31 iMac 21”5, i7, 2.8 GHz, 4 Gbytes, 1 Tbytes, mac OS X 10.6.8
Please : Search for questions similar to your own before submitting them to the community
To be the AW6 successor, iWork MUST integrate a TRUE DB, not a list organizer ! -
Iterating over the Values returned from a HashMap
Hi,
I have a HashMap which stores some Strings as Keys and their corresponding Values are a Vector of Strings.
for eg. one (Key, Value) pair is
(String1, [StringA, StringB, StringC, ........])
I understand that I can read the Vector Values by iterating over the HashMap using the ".entrySet()" and "Map.Entry" operations.
My problem is I am not able to iterate through the Vector values returned by the ".getValue( )" method.
can anyone please give some hints as to where I am commiting an error, or if I need to cast my values in some manner to iterate over them?
thanks in advancecan anyone please give some hints as to where I am commiting an errorSomewhere in your code. Post the smallest complete example which demonstrates the problem, then people may be able to give more specific help.
-
Unable to use the values returned by a PL/SQL stored procedure in a XSQL page
Hi,
I've been messing around with XML and XSQL in particular. I was trying to write a xsql page to display a report with account totals...I have the following .xsql which calls a PL/SQL stored procedure :
<?xml version="1.0"?>
<xsql:query connection="pfcdm" xmlns:xsql="urn:oracle-xsql">
<xsql:set-session-param name="zasset_total" value="100">
<xsql:dml connection="pfcdm">
rraman.sp_vw_id(zasset_total,zinvm_total,zmkt_val);
</xsql:dml>
</xsql:set-session-param>
select 'Asset total is {@zasset_total}' as "ASSET_TOTAL" from dual
</xsql:query>
My procedure sp_vw_id returns the values that it should. But, I am not sure how to declare variables within a page, and to output the return values. There is very scanty documentation on the usage of <xsql:dml> or <xsql:ref-cursor-function>.
Any response would be greatly appreciated.
Thanks,
RajaHere is the example from the Oracle9i (complete rewrite) of the XSQL Chapter in our Oracle documentation.
Question
I using <xsql:dml> to call a stored procedure which has one OUT parameter, but I was not able to see any results. The executed code results in the following statement:
<xsql-status action="xsql:dml" rows="0"/>
Answer
You cannot set parameter values by binding them in the position of OUT variables in this release using <xsql:dml>. Only IN parameters are supported for binding. You can create a wrapper procedure that constructs XML elements using the HTP package and then your XSQL page can invoke the wrapper procedure using <xsql:include-owa> instead.
For an example, suppose you had the following procedure:
CREATE OR REPLACE PROCEDURE addmult(arg1 NUMBER,
arg2 NUMBER,
sumval OUT NUMBER,
prodval OUT NUMBER) IS
BEGIN
sumval := arg1 + arg2;
prodval := arg1 * arg2;
END;You could write the following procedure to "wrap" it, taking all of the IN arguments that the procedure above expects, and then "encoding" the OUT values as a little XML datagram that you print to the OWA page buffer:
CREATE OR REPLACE PROCEDURE addmultwrapper(arg1 NUMBER, arg2 NUMBER) IS
sumval NUMBER;
prodval NUMBER;
xml VARCHAR2(2000);
BEGIN
-- Call the procedure with OUT values
addmult(arg1,arg2,sumval,prodval);
-- Then produce XML that encodes the OUT values
xml := '<addmult>'| |
'<sum>'| |sumval| |'</sum>'| |
'<product>'| |prodval| |'</product>'| |
'</addmult>';
-- Print the XML result to the OWA page buffer for return
HTP.P(xml);
END;This way, you can build an XSQL page like this that calls the wrapper procedure:
<page connection="demo" xmlns:xsql="urn:oracle-xsql">
<xsql:include-owa bind-params="arg1 arg2">
BEGIN addmultwrapper(?,?); END;
</xsql:include-owa>
</page>This allows a request like:
http://yourserver.com/addmult.xsql?arg1=30&arg2=45
to return an XML datagram that reflects the OUT values like this:
<page> <addmult><sum>75</sum><product>1350</product></addmult>
</page> -
What is the data type of the value returned by the List box prompt in crystal
Post Author: Mudit Kothiyal
CA Forum: Formula
Hi all,
I am creating a report which has a list box prompt. When I am selecting a single value from the list box the report is working fine, but when I am selecting multiple values its not returning any data( although data is there). Does anyone know how the prompt values are passed to the report query by the crystal. I kno it passes the value to the report as an array. But how does it pass the value to the report query.
I am using command query to fetch data from the DB.
Crystal Report Version: Crystal Report XI R2.
DB: Oracle 10g
Also does anyone know how to pass the values of the list box prompt to the report query in comma seperated format.
Thanks & regards,
MuditPost Author: rcoleman
CA Forum: Formula
In regards to the latter part of your question
The following examples are applicable to Basic and Crystal syntax.
The examples assume that list is a String array consisting of the 3 elements: "Chocolate", "Vanilla" and "Strawberry".
Join (list)
Returns the String "Chocolate Vanilla Strawberry".
Join (list, "***")
Returns the String "Chocolate**Vanilla**Strawberry".
Not sure about the first part of your question,sorry. -
Doubt in the value return by the function based on given condition
Hi,
Below function should return the value based on the value of in_row_number_high variable.
I have used CASE but it does't return proper value.
How could I give that condition?
Please help.
FUNCTION gen_total_lane_count_pct
in_lane_id edr_rpt_by_ranges_output.lane_id%TYPE,
in_direction_id edr_rpt_by_ranges_output.direction_id%TYPE,
in_interval_start_date_time edr_rpt_by_ranges_output.interval_start_date_time%TYPE,
in_interval_end_date_time edr_rpt_by_ranges_output.interval_end_date_time%TYPE,
in_row_number edr_rpt_by_ranges_output.range_low%TYPE,
in_row_number_high edr_rpt_by_ranges_output.range_high%TYPE,
in_lane_min edr_lane_by_class_report_data.v_lane%TYPE,
in_lane_max edr_lane_by_class_report_data.v_lane%TYPE
RETURN NUMBER
IS
my_total NUMBER(18);
my_count_pct NUMBER(18);
my_total_pct NUMBER(18);
my_each_count_result NUMBER(18);
my_count_result NUMBER(18);
my_total_count NUMBER(18);
lane_start edr_rpt_tmp_report_lanes.site_lane_id%TYPE;
lane_end edr_rpt_tmp_report_lanes.site_lane_id%TYPE;
row_start NUMBER(12);
row_end NUMBER(12);
BEGIN
my_count_pct := 0 ;
SELECT MIN(site_lane_id)
INTO lane_start
FROM edr_rpt_tmp_report_lanes
WHERE edr_rpt_tmp_report_lanes.output_lane_id = in_lane_id
AND edr_rpt_tmp_report_lanes.output_direction_id = in_direction_id;
SELECT MAX(site_lane_id)
INTO lane_end
FROM edr_rpt_tmp_report_lanes
WHERE edr_rpt_tmp_report_lanes.output_lane_id = in_lane_id
AND edr_rpt_tmp_report_lanes.output_direction_id = in_direction_id;
SELECT MIN(range_low)
INTO row_start
FROM edr_rpt_by_ranges_output;
SELECT MAX(range_low)
INTO row_end
FROM edr_rpt_by_ranges_output;
my_each_count_result := edr_rpt_lane_by_class_package.gen_total_lane_count (
in_lane_id,
in_direction_id,
in_interval_start_date_time,
in_interval_end_date_time,
in_row_number,
in_row_number_high,
in_lane_min,
in_lane_max
my_count_result := edr_rpt_lane_by_class_package.gen_total_lane_count (
in_lane_id,
in_direction_id,
in_interval_start_date_time,
in_interval_end_date_time,
row_start,
row_end,
in_lane_min,
in_lane_max
my_total_count := edr_rpt_lane_by_class_package.gen_total_lane_count (
in_lane_id,
in_direction_id,
in_interval_start_date_time,
in_interval_end_date_time,
in_row_number,
in_row_number_high,
lane_start,
lane_end
IF (my_each_count_result > 0) THEN
my_total := edr_rpt_lane_by_class_package.gen_total_lane_count (
in_lane_id,
in_direction_id,
in_interval_start_date_time,
in_interval_end_date_time,
row_start,
row_end,
lane_start,
lane_end
CASE
WHEN in_row_number_high = row_end THEN
my_count_pct := ROUND((my_each_count_result / my_count_result ) * 100 );
WHEN in_row_number_high < row_end THEN
my_count_pct := ROUND((my_each_count_result / my_total ) * 100 ) ;
ELSE
RAISE_APPLICATION_ERROR(-20101, 'The row number specified is not recognized.');
END CASE;
END IF;
return my_count_pct;
END gen_total_lane_count_pct; Edited by: Indhu Ram on Jan 5, 2010 11:43 AMHi,
I have to find out the % value for each column value( For rx if there is only 2 columns).To calculate the % , each column value should get divided by the total of that column value.
To calculate the % for the total row , each column total should get divide by the sum of column ( sum of column 1 + sum of column 2)values.
ROUND((my_each_count_result / my_count_result ) * 100 ) ---- This calculaton gives me the % for the total row.
ROUND((my_each_count_result / my_total ) * 100 ) ------- This calculation gives the % for the data row.
The condition that I have tried is, if it reaches end of data row (to achieve that condition I have given this condition in_row_number_high < row_end )
Now my result returns only values based on this condition -- in_row_number_high < row_end .
It does't look for the first condition.
CASE
WHEN in_row_number_high = row_end THEN
my_count_pct := ROUND((my_each_count_result / my_count_result ) * 100 );
WHEN in_row_number_high < row_end THEN
my_count_pct := ROUND((my_each_count_result / my_total ) * 100 ) ;
ELSE
RAISE_APPLICATION_ERROR(-20101, 'The row number specified is not recognized.');
END CASE;
Hope , you have some good understanding now. Please help me how could I do this? -
How can I use the value returned for a function into the macro ??
I create a function to work in a macro and I would like to use the value of parameter f_calc_error returned by function in a condition like IF, but I don't know how can I do that. I have to use the macro function CALC_ERROR ??
Thanks.
Edson SuzukiHi Edson,
Yes you need to use the CALC_ERROR macro function to be able to test whether the last macro function returned an error. CALC_ERROR will return an 'X' if there an error occured during the execution of the last macro function.
You can use a macro similar to the following:
IF
CALC_ERROR( )
= 'X'
DO SOMETHING HERE
ENDIF
Let me explain how this works internally. The SAP system maintains a global variable g_flg_calc_error during the execution of macros in the planning book. The g_flg_calc_error variable will contain the value of f_calc_error that was set by the last macro function which executed. The ABAP coding of a planning book is something like this:
data: g_flg_calc_error type /SAPAPO/FLAG.
* SAP will pass g_flg_calc_error variable to all macro
* functions. When SAP calls a macro function, it does
* something like this.
call function '/SAPAPO/MACRO_FUNCTION_HERE'
exporting
plob_values = i_s_adv_plob_values
sdp_book = g_c_advf_sdp_book
sdp_view = g_c_advf_sdp_view
tables
cols_index = i_t_cols
value_tab = l_t_value_tab
changing
f_calc_error = g_flg_calc_error
As you can see, the g_flg_calc_error variable
is passed in the "changing" part of the call. The macro function being called can then use the f_calc_error
variable to change the value of the global
g_flg_calc_error variable. In fact, the macro function being called can also check (by looking at the f_calc_error variable) if the last macro function reported an error. The CALC_ERROR macro function just checks the value of f_calc_error parameter (w/c in fact is the value of the g_flg_calc_error variable) and returns "true/X" if the f_calc_error was set to true by the last macro function.
Hope this helps in clearing things out
Maybe you are looking for
-
Can we delete master data in SE14?
Hello all, we changed one of the navigational attributes from time dependent to time independent when we transported it from dev to production the transport failed because the infoojebct could not be activated. It wants us to delete all master data r
-
Dynamic addition of JMenuItem in JMenu
I am trying to create a menu for my project. For that i have added the main menus and for each menu there will be menu item. But the problem is i will get the list of menu items for each menu , only at the runtime of my project. i.e. i wabt to add pr
-
Generating PDF from a C program. How do I get dimensions of rendered text?
Hello. I am generating a PDF file from withing a C program I am developing and I am running into trouble measuring the dimensions of arbitrary text string when rendered on the page. Even if I had widths of individual glyphs in the font I am using, I
-
Hi all, we have checked "missing table and indexs" status with DBACOCKPIT and there it show 362 Indexes are not created. all are the standard table indexes. we have updated the indexes and statistics with BRCONNECT also.and its complited successfully
-
My MacBook (OS 10.6.8) is running slow suddenly. I have run EtreCheck but don't know what to do with the results!