CVP Call Studio - concatenate variable data
Hello,
I'm new to Call Studio, do not have my hands on the software yet.
Is it possible to concatenate variable data within a call studio script?
The business wants to capture IVR menu selections for reporting purposes. The IVR is complex and will require a CVP VXML server application. My plan is to utilize a call variable within call studio, update the variable with flags/values for each menu selection, then send this data back to ICM. In ICM, I will analyze this variable and set call types accordingly for reporting.
Thanks in advance,
Mike
Got it.
ok, so in call studio i would do it like this.i would define one variable say session data "retVAL" and update its value based on menu selection.
if you closely loom at attached screenshot everything is there. value of all 3 menu options are concatenated and assigned to session data called retVAL using substitution builder.
and the value of same variable is returned to ICM using CVP sub dialog return.
regards
Chintan
Similar Messages
-
CVP Call Studio Database Element
Hi all,
I got the below error when I tried to use the Database element in CVP Call Studio to connect to a MSSQL database.
touch111_24-7_Database,07/08/2014 13:52:31.724, The error was: A built-in element encountered an exception of type com.audium.server.AudiumException. There was a problem looking up the JNDI data source 'ivr1'. The root cause was: javax.naming.NameNotFoundException: Name ivr1 is not bound in this Context.
I have added the below to the context.xml file :
<Resource
name="jdbc/ivr1"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://x.x.x.x:1433;databaseName=TestCallStudio;user=xxxx;password=xxxx"
/>
In the Database element settings in Call Studio, I put ivr1 in the JNDI Name field.
Can someone help me to know what could be causing this error to appear?
Thank you in advance.
Larachange jndi name in call studio from "ivr1" to "jdbc/ivr1"
and check if it is working or not.
regards
chintan -
CVP call studio Video tutorial
Hi Team
Is there any CVP call studio Video tutorial to make advanced call flow Integrated with Database IE(Oracle or SQL).
also how to call JAR integrated file in Advanced prompt element.
Please advise is there any Video tutorial or Online Course as well for CVPD 8.0.
Thanks
Ahmed SolimanAhmed,
I dont have any links to videos, but have you looked through the CVP programming guides:
http://www.cisco.com/en/US/products/sw/custcosw/ps1006/products_programming_reference_guides_list.html
Chris -
CVP call studio and default audio
Not sure if this should get posted here or on the development forum but it's getting posted here anyways...
We have 4 combo boxes in our CVP deployment so we have 4 media servers. I'm trying to figure out what to configure for the Default Audio Path URI in Call Studio when creating a project .It appears that I have to specify either a single media server to pull the audio from or pull it from flash.
I know our gateways will pull down the wav files from the media servers but if I specify flash in the studio application, do I need to load the wav file directly onto flash on the router or can it access the media servers and pull it down? We run most of our ICM scripts off of microapps, not custom vxml apps. Most of the documentation and the partner class I took doesn't look at multi server deployments and combo boxes like as most standard deployments are like this now. I don'ts ee anything in the Cisco docs for CVP that specify this information. Any help would be appreciated.
We are using SIP and CSS if that makes a difference.
ICM 7.5.9
CVP 7.0.2
UCM 7.1.3
thanks
PaulThe normal way is to use the VIP you built on your CSS. Let's say this is a.b.c.d and it manages the IP address of the media servers as a "service", providing load balancing and resilience.
For each application in Studio you should make a matching default audio path and put all the media files under that. Makes it easy - even if there is repetition of system files (1.wav, 2.wav etc). You can control the lifetime (expiration) on IIS more easily.
Let's assume your application is called "foobar" and your locale is "en-us".
So set the path to
http://a.b.c.d/en-us/app/foobar/
Don't forget the trailing slash. As you go through the Studio program, you just need to specify an audio item as "mywavefile.wav" and that makes it really easy to look at the Prompt Dictionary, as they have simple wav file names and no path information.
Others may have different views, of course. I'm prepared to vigorously defend mine.
On IIS you will have wwwroot\en-us\app\foobar with a bunch of files.
Regards,
Geoff -
CVP Call Studio is using port 80
Dears,
I have a Call Studio application installed on a windows 7 machine.
Recently I have installed Xampp server on the same machine and everything was working well.
Suddenly the Apache server was down and after some investigation I found out that the call studio application is using port 80 which prevented Apache from starting.
Can someone please advise why suddenly Call Studio started using port 80? what should be done in this case?
Thank you in advance.
LaraHi Davis,
Thank you for your reply.
I also have Call Studio 8.5 installed on my machine and it doesn't listen on any port. This issue occurred at a customer site two weeks ago and I want to know why suddenly Call Studio used port 80, what could have happened, was the application crashing?
Any idea?
Today I tried to execute the command "netstat -ano" and it showed that Apache process is now using port 80.
Regards,
Lara -
Possible to play audio while fetching data in CVP Call Studio?
Hi, CVP 8.5. We have an action element that fetches account data from a backend. The customer would like to play some audio while this operation is going on, to better indicate to the caller that things are working as they should. Is this possible to do?
Yes, you need to add a "fetchaudio" property to a voice element placed immediately before your long running action. Details here: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/2641915
-
CVP Call Studio - Writing to ActivityLog
Hi all,
Objective
a) To capture all successful self service transaction (in ActivityLog)
b) To capture all failed transaction (in ErrorLog)
Current features
a) Ability to add custom logs into ActivityLog through General->Add To Log
How to achieve the following
a) Modify the way the program writes to ActivityLog & ErrorLog. For example to be in | (pipe) delimited format (037552525|20131105|CheckBalance|Success)
(037551234|20131104|CheckBalance|Failed)
b) Need to do all through custom Java code to write into custom file (not existing ActivityLog/ErrorLog)
Suggestions appreciated.
Thanks!
-JT-Hi David,
Good idea.
So to achieve what i want
1. Update the ActivityLog with the required info (success/failure node)
2. At of the day, script will read from ActivityLog and pull out the required info
3. Dump result in some external db
Does the current default CVP Report Server db schema / report already have what i want? Or the above is necessary to get it?
Thanks!
-JT- -
Error when configuring Database element in Call Studio
Dear all,
It is a UCCE system 9.0 with CVP 9.0 and CVP Call Studio 8.5
I am using the Database Element in order to connect to a MSSQL database.
The below has been done:
* Download JDBC driver: "sqljdbc_4.0.2206.100_enu"
* Copy sqljdbc.jar to CVP VXML Server's: C:\Cisco\CVP\VXMLServer\Tomcat\common\lib folder
* Modify the context.xml file by adding the below:
<Resource
name="jdbc/ivr"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://192.168.2.166:1433;databaseName=IVR;user=sa;password=cisco.cisco0;integratedSecurity=true"
/>
* In the Call Studio application I put the JNDI Name to ivr.
But when I called the application, I got the below error in the Error log:
The error was: A built-in element encountered an exception of type java.lang.UnsupportedOperationException. The root cause was: java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.6 is not supported by this driver. Use the sqljdbc4.jar class library which provides support for JDBC 4.0.
I replaced the sqljdbc.jar by the sqljdbc4.jar but this has not solved my issue and I got the below error:
The error was: A built-in element encountered an exception of type com.audium.server.AudiumException. Cannot create PoolableConnectionFactory (This driver is not configured for integrated authentication. ClientConnectionId:01a41697-0e01-4876-819d-1e2e8733f24b) The root cause was: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (This driver is not configured for integrated authentication.
Can someone help me to solve this issue.
Thank you in advance.
LaraActually I have removed "integratedSecurity=true" from the Context.vxml and got my issue resolved.
-
Hi all,
i already created workflow with CVP script using Call studio, i have a problem how to insert call entered digit to PV9 and check the bill customerID with java class.
The workFlow design:
1. Customer enter the customerID (sessionID from ICM)
2. Play the customerID ---> Insert to PV9 (ex: 12390)
3. Check monthly bill
4. Option enter another customerID
5. Back to step 2 ---> Insert to PV9 (ex:12390,12380)
When we want to create a java class is enough to install default call studio + JDK and create new call studio project? because when i created new call studio project only will be created callflow folder and app.callflow
thx before,
darmaHi Chintan,
This'is my callflow design with callStudio
i want create java class to get value from REST Url, i already have the script but i'm still confused how to deploy it in call studio, my call studio project is like this
this'is the java source, how to compile and what prerequisites are required?
/* 1: */ import com.audium.server.AudiumException;
/* 2: */ import com.audium.server.session.ActionElementData;
/* 3: */ import com.audium.server.voiceElement.ActionElementBase;
/* 4: */ import java.io.BufferedReader;
/* 5: */ import java.io.InputStreamReader;
/* 6: */ import java.io.PrintStream;
/* 7: */ import java.net.URL;
/* 8: */ import java.net.URLConnection;
/* 9: */
/* 10: */ public class MyBill
/* 11: */ extends ActionElementBase
/* 12: */ {
/* 13: */ static final int PREDICT_THRESHOLD = 3;
/* 14: */ private static String vBill;
/* 15: */
/* 16: */ public static void GetDataBill(String strDataBill)
/* 17: */ throws Exception
/* 18: */ {
/* 19: 23 */ vBill = "0";
/* 20: */
/* 21: 25 */ URL strBill = new URL("http://192.168.10.23//wsclient.php?id=" + strDataBill);
/* 22: */
/* 23: */
/* 24: */
/* 25: 29 */ URLConnection hpCon = strBill.openConnection();
/* 26: 30 */ int len = hpCon.getContentLength();
/* 27: 32 */ if (len > 0)
/* 28: */ {
/* 29: 36 */ BufferedReader in = new BufferedReader(
/* 30: 37 */ new InputStreamReader(strBill.openStream()));
/* 31: 38 */ vBill = in.readLine();
/* 32: */ }
/* 33: */ else
/* 34: */ {
/* 35: 45 */ vBill = "0";
/* 36: */ }
/* 37: 49 */ System.out.println("YourBill : " + vBill);
/* 38: */ }
/* 39: */
/* 40: */ public void doAction(String name, ActionElementData actionAPI)
/* 41: */ throws AudiumException
/* 42: */ {
/* 43: 63 */ String strCustID = (String)actionAPI.getSessionData("QueueIDs");
/* 44: */ try
/* 45: */ {
/* 46: 66 */ GetDataBill(strCustID);
/* 47: */ }
/* 48: */ catch (Exception e)
/* 49: */ {
/* 50: 69 */ System.out.println("0");
/* 51: */ }
/* 52: 74 */ String balance = vBill.trim();
/* 53: 81 */ if (balance == "0")
/* 54: */ {
/* 55: 83 */ actionAPI.removeAllSessionData();
/* 56: 84 */ actionAPI.setSessionData("balance", balance);
/* 57: */ }
/* 58: */ else
/* 59: */ {
/* 60: 91 */ String strSess = balance.substring(0, 1);
/* 61: 92 */ String strSess2 = balance.substring(1);
/* 62: */
/* 63: */
/* 64: 95 */ actionAPI.setSessionData("StsBill", strSess);
/* 65: 96 */ actionAPI.setSessionData("ValBill", strSess2);
/* 66: 99 */ if (strSess > "1")
/* 67: */ {
/* 68:102 */ actionAPI.setSessionData("StsBill", "1");
/* 69:103 */ actionAPI.setSessionData("balance", strSess2);
/* 70: */ }
/* 76:110 */ if (strSess == "0")
/* 77: */ {
/* 78:112 */ actionAPI.setSessionData("StsBill", "0");
/* 79:113 */ actionAPI.setSessionData("balance", strSess2);
/* 80: */ }
/* 81:115 */ if (strSess == "9")
/* 82: */ {
/* 83:117 */ actionAPI.setSessionData("StsBill", "9");
/* 84:118 */ actionAPI.setSessionData("balance", "0");
/* 85: */ }
/* 86:121 */ if (strSess2.trim() == "") {
/* 87:122 */ actionAPI.setSessionData("balance", "0");
/* 88: */ } else {
/* 89:124 */ actionAPI.setSessionData("balance", strSess2);
/* 90: */ }
/* 91: */ }
/* 92: */ }
/* 93: */ }
please help Me -
Courtesy Callback for CVP 9 w/o Call Studio
Just a question, is Call Studio a requirement to be able to utilize courtesy callback for CVP? I have a customer using only micro-apps and didn't purchase Call Studio but they might be potentially looking at some sort of callback solutions. Hence, the question. Many thanks.
Required for courtesy callback.
Other callback solution would be custom and should be possible through ICM scripting (depends how you do it) directly.
Thanks!
-JT- -
CVP 7.0.1 Call Studio app seems locked or corrupted after licensing attempt
All,
I attempted to license Call Studio with a license file that was already used (message window popped up stating the file was already used). We've been experiencing with sorting out the licensing for CS and there's 2 servers we have installed the client on which of course they both have unique System IDs. Since the license failure I cannot license Studio with the correct license file we received today because the application no longer has 'Activate' in the Help menu.
Can I uninstall CS and reinstall it? Plus, will the reinstall maintain the same system ID we received the correct license for?
I've attached the log files from the About menu and screenshots of Studio.
Thanks.We went through the Setup.exe to repair the installation, reinstalled Studio, applied the correct license file and it now works without issues.
-
JNDI in Call Studio Database Element
Hi all,
I am trying to use the database element in Call Studio with version 9.0
I can't figure out what it is that should be used in the JNDI field and how to create the database connection.
Anyone knows how to do it in straight-forward way?
Thanks,
Sahar HannaHi,
I did check that.
Actually what I have done is
Install the sqljdbc.jar in C:\Cisco\CVP\VXMLServer\Tomcat\common\lib
Create an SQL database (SQL 2008 R2)
in the server.xml file in C:\Cisco\CVP\VXMLServer\Tomcat\conf, i have added the following:
Context path="/CVP">
jdbc/obSurvey" auth="Container" type="javax.sql.DataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.2.166:1433;databaseName=obSurvey;integratedSecurity=true" />
and in Call Studio, in the database element, I have entered in JNDI name obSurvey
when I call the application I get the following error in ActivityLogs:
DB_Unsatisfied,element,error,A built-in element encountered an exception of type com.audium.server.AudiumException.
And in the errorlogs I get:
com.audium.server.AudiumException: There was a problem looking up the JNDI data source 'obSurvey'.
Anything missing? or wrong?
Thank you,
Sahar -
Dynamical Call of ALV - No data update
Hi,
I tried to use use the ALV dynamically. With dynamically I mean that I that I have diffrent data structures, depending what was selected by the user. The first call of the program is always correct. The data is displayed correctly. But when the data structure is changing, the ALV display is not updated. For a better understanding I post a extract of my coding:
<b>1. Creation of Container</b>
CREATE OBJECT g_custom_container
EXPORTING
container_name = 'PARENT_CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc <> 0.
ASSERT 1 = 2.
ENDIF.
<b>2.Creation of splitter container</b>
CREATE OBJECT splitter
EXPORTING
parent = g_custom_container
rows = 2
columns = 2
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ASSERT 1 = 2.
ENDIF.
container_2 = splitter->get_container(
row = 1
column = 2 ).
<b>3.Dynamic Creation of alv object</b>
CREATE OBJECT go_grid
EXPORTING
i_parent = container_2.
<b>4. Get Fieldcatalogue</b>
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = lv_structure_name
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ASSERT 1 = 2.
ENDIF.
<b>5. Set table for first display</b>
CALL METHOD go_grid->set_table_for_first_display
* EXPORTING
* i_structure_name = lv_structure_name
CHANGING
it_fieldcatalog = lt_fieldcat
it_outtab = <lt_out_data>.
CALL METHOD ls_alv_ref-alv_ref->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
Perhaps someone could help.....
Best Regards, EdgarHello Edgar
The following sample report <b>ZUS_SDN_TWO_ALV_GRIDS_8</b> shows how to solve your problem. Please note that for the sake of simplicity I replaced the tree containing the structure names with an ALV list. However, the switch between the different structures is triggered by the <b>DOUBLE_CLICK</b> event.
I like to add that the integration of the first displayed ALV list (DD02L) into GT_OUTTAB is not really elegant. In addition, with <b>$TMP</b> I marked a problematic part of the coding with respect to your requirement to have the right layout for each displayed ALV list:
If you have a <b>fixed </b>assignment of <i>tabname -> 4-digit handle</i> then it is ok. I my sample report the layouts only work if you select the tabnames in the very same order.
Before showing the entire coding I describe crucial parts of the coding:
[code]TYPES: BEGIN OF ty_s_outtab.
TYPES: tabname TYPE tabname.
TYPES: layout TYPE lvc_s_layo.
TYPES: variant TYPE disvariant.
TYPES: fcat TYPE lvc_t_fcat.
TYPES: data TYPE REF TO data.
TYPES: END OF ty_s_outtab.[/code]
Every time a new structure is selected the corresponding ALV data are stored as new record in GT_OUTTAB which is of line type TY_S_OUTTAB.
[code] READ TABLE gt_outtab INTO gs_outtab INDEX 2.
ASSIGN gs_outtab-fcat TO <gt_fcat>.
ASSIGN gs_outtab-data->* TO <gt_outtab>.[/code]
Since the ALV list data and the fieldcatalog are fully dynamic I use global field-symbols for these data.
[code]&----
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
SET TITLEBAR 'xxx'.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = gs_outtab-tabname
is_layout = gs_outtab-layout
is_variant = gs_outtab-variant
i_save = 'A'
CHANGING
it_outtab = <gt_outtab>
it_fieldcatalog = <gt_fcat>
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT[/code]
The second ALV list which displays the table records is always newly displayed in the PBO module.
In the event handler method <b>HANDLE_DOUBLE_CLICK</b> we need to do two things:
- store the current fieldcatalog back to GT_OUTTAB
- store the name of the new selected table/structure -> trigger PAI
In routine <b>HANDLE_DB_CLICK</b> we create a new entry for GT_OUTTAB if it does not yet exist. Next we select this entry and display it again as second ALV list.
[code]
*& Report ZUS_SDN_TWO_ALV_GRIDS_8
*& Description: Display two ALV lists in splitter container (left/right)
*& Left ALV list contains DB table names,
*& right ALV list displays entries of selected DB table
*& SDN thread: Dynamical Call of ALV - No data update
*& Link: https:||Dynamical Call of ALV - No data update
*& Screen '0100' contains no elements.
*& ok_code -> assigned to GD_OKCODE
*& Flow logic:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
REPORT zus_sdn_two_alv_grids_8.
TYPE-POOLS: abap.
DATA:
gd_repid TYPE syst-repid,
gd_okcode TYPE ui_func,
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo.
TYPES: BEGIN OF ty_s_outtab.
TYPES: tabname TYPE tabname.
TYPES: layout TYPE lvc_s_layo.
TYPES: variant TYPE disvariant.
TYPES: fcat TYPE lvc_t_fcat.
TYPES: data TYPE REF TO data.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA:
gt_dd02l TYPE STANDARD TABLE OF dd02l,
gs_outtab TYPE ty_s_outtab,
gt_outtab TYPE ty_t_outtab.
FIELD-SYMBOLS:
<gt_fcat> TYPE lvc_t_fcat,
<gt_outtab> TYPE table.
CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
md_tabname_selected TYPE tabname READ-ONLY.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
define local data
DATA:
ls_dd02l TYPE dd02l,
ls_outtab TYPE ty_s_outtab.
CHECK ( sender = go_grid1 ).
READ TABLE gt_dd02l INTO ls_dd02l INDEX e_row-index.
" Store data of currently displayed ALV list (except for DD02L)
IF ( md_tabname_selected = space ).
ELSE.
READ TABLE gt_outtab INTO ls_outtab
WITH KEY tabname = md_tabname_selected. " old
CALL METHOD go_grid2->get_frontend_fieldcatalog
IMPORTING
et_fieldcatalog = ls_outtab-fcat.
MODIFY gt_outtab FROM ls_outtab INDEX syst-tabix.
ENDIF.
md_tabname_selected = ls_dd02l-tabname. " new selected DB table
Triggers PAI of the dynpro with the specified ok-code
cl_gui_cfw=>set_new_ok_code( 'HANDLE_DB_CLICK' ). " not 4.6c
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'HANDLE_DB_CLICK'
IMPORTING
RC =
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
gd_repid = syst-repid.
SELECT * FROM dd02l INTO TABLE gt_dd02l
WHERE tabname LIKE 'KN%1' OR
tabname LIKE 'LF%1' OR
tabname LIKE 'VB%' OR
tabname LIKE 'MAR%' OR
tabname LIKE 'E07%'
AND tabclass = 'TRANSP'. " transparent table
SORT gt_dd02l BY tabname.
PERFORM init_controls.
PERFORM add_first_table.
Set event handler
SET HANDLER:
lcl_eventhandler=>handle_double_click FOR go_grid1.
READ TABLE gt_outtab INTO gs_outtab INDEX 1.
Display data
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = gs_outtab-tabname
is_layout = gs_outtab-layout
CHANGING
it_outtab = gt_dd02l
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE gt_outtab INTO gs_outtab INDEX 2.
ASSIGN gs_outtab-fcat TO <gt_fcat>.
ASSIGN gs_outtab-data->* TO <gt_outtab>.
NOTE: method called in PBO module
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = gs_outtab-tabname
is_layout = gs_outtab-layout
is_variant = gs_outtab-variant
i_save = 'A'
CHANGING
it_outtab = <gt_outtab>
it_fieldcatalog = <gt_fcat>
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Link the docking container to the target dynpro
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
Flow logic of dynpro (does not contain any dynpro elements):
*PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
SET TITLEBAR 'xxx'.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = gs_outtab-tabname
is_layout = gs_outtab-layout
is_variant = gs_outtab-variant
i_save = 'A'
CHANGING
it_outtab = <gt_outtab>
it_fieldcatalog = <gt_fcat>
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
User has pushed button "Display Details"
WHEN 'HANDLE_DB_CLICK'.
PERFORM handle_db_click.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form HANDLE_DB_CLICK
text
--> p1 text
<-- p2 text
FORM handle_db_click.
define local data
DATA:
ld_handle(4) TYPE n,
ls_outtab TYPE ty_s_outtab.
READ TABLE gt_outtab INTO ls_outtab
WITH KEY tabname = lcl_eventhandler=>md_tabname_selected.
IF ( syst-subrc NE 0 ).
CLEAR: ls_outtab.
ls_outtab-tabname = lcl_eventhandler=>md_tabname_selected.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
i_structure_name = ls_outtab-tabname
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = ls_outtab-fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE DATA ls_outtab-data TYPE TABLE OF (ls_outtab-tabname).
ASSIGN ls_outtab-data->* TO <gt_outtab>.
SELECT * FROM (ls_outtab-tabname) UP TO 50 ROWS
INTO TABLE <gt_outtab>.
ls_outtab-layout-no_toolbar = abap_false.
ls_outtab-layout-zebra = abap_true.
ls_outtab-layout-smalltitle = abap_true.
CONCATENATE ls_outtab-tabname ':'
INTO ls_outtab-layout-grid_title.
CONCATENATE ls_outtab-layout-grid_title 'Table Records'
INTO ls_outtab-layout-grid_title
SEPARATED BY space.
ls_outtab-variant-report = gd_repid.
DESCRIBE TABLE gt_outtab.
ld_handle = syst-tfill + 1.
WRITE ld_handle TO ls_outtab-variant-handle. " $TMP: Problem!!!
APPEND ls_outtab TO gt_outtab.
ENDIF.
" NOTE: read into GLOBAL variable gs_outtab !!!!
READ TABLE gt_outtab INTO gs_outtab
WITH KEY tabname = lcl_eventhandler=>md_tabname_selected.
ASSIGN gs_outtab-fcat TO <gt_fcat>.
ASSIGN gs_outtab-data->* TO <gt_outtab>.
ENDFORM. " HANDLE_DB_CLICK
*& Form INIT_CONTROLS
text
--> p1 text
<-- p2 text
FORM init_controls .
Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_docking->set_extension
EXPORTING
extension = 99999 " full-size screen
EXCEPTIONS
cntl_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Create splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
NO_AUTODEF_PROGID_DYNNR =
NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
CALL METHOD go_splitter->set_column_mode
EXPORTING
mode = cl_gui_splitter_container=>mode_relative
IMPORTING
RESULT =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_splitter->set_column_width
EXPORTING
id = 1
width = 25
IMPORTING
RESULT =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_splitter->set_column_sash
EXPORTING
id = 1
type = cl_gui_splitter_container=>type_movable
value = cl_gui_splitter_container=>false
IMPORTING
RESULT =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_left
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_cell_right
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " INIT_CONTROLS
*& Form ADD_FIRST_TABLE
text
--> p1 text
<-- p2 text
FORM add_first_table .
define local data
DATA:
ls_outtab TYPE ty_s_outtab.
ls_outtab-tabname = 'DD02L'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
i_structure_name = ls_outtab-tabname
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = ls_outtab-fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
GET REFERENCE OF gt_dd02l INTO ls_outtab-data.
ls_outtab-layout-no_toolbar = abap_false.
ls_outtab-layout-zebra = abap_true.
ls_outtab-layout-smalltitle = abap_true.
CONCATENATE ls_outtab-tabname ':'
INTO ls_outtab-layout-grid_title.
CONCATENATE ls_outtab-layout-grid_title 'Table Records'
INTO ls_outtab-layout-grid_title
SEPARATED BY space.
ls_outtab-variant-report = gd_repid.
ls_outtab-variant-handle = '0002'.
INSERT ls_outtab INTO gt_outtab INDEX 1.
ls_outtab-layout-no_toolbar = abap_true.
ls_outtab-layout-zebra = abap_true.
ls_outtab-layout-smalltitle = abap_true.
ls_outtab-layout-grid_title = 'DB Tables'.
ls_outtab-variant-report = gd_repid.
ls_outtab-variant-handle = '0001'.
DELETE ls_outtab-fcat WHERE ( fieldname NE 'TABNAME' ).
INSERT ls_outtab INTO gt_outtab INDEX 1.
ENDFORM. " ADD_FIRST_TABLE[/code]
Regards,
Uwe -
How can i call another view variables in another view
how can i call another view variables in another view and pass that variables to the function
my situation is i have a view FAC which i need to pass par_id_fac TO THE VIEW AGR.AFTER THAT i what to take start_dt in agr view and par_id_fac from Fac and pass this variables to the function i have check the documentation but does not do what i what,the doc simply talk about creating variables and pass then to function.i what to pass variables from the views and return value to my contractno Variables value
something like if :agr.contract_no is null
and :agr.agr_start_dt is not null then
:agr.contract_no := sms_fapp.get_contract_no(:fac.par_id_fac,:agr.agr_start_dt);
end if;
y view is
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
<!---->
<ViewObject
xmlns="http://xmlns.oracle.com/bc4j"
Name="AGR"
Version="11.1.2.60.81"
BindingStyle="OracleName"
CustomQuery="true"
PageIterMode="Full"
UseGlueCode="false"
RowClass="sms1405.AGRRowImpl"
ComponentClass="sms1405.AGRImpl"
DefClass="sms1405.AGRDefImpl">
<DesignTime>
<Attr Name="_isExpertMode" Value="true"/>
<Attr Name="_codeGenFlag2" Value="Access|Def|Coll|Prog|VarAccess"/>
<Attr Name="_isCodegen" Value="true"/>
</DesignTime>
<SQLQuery><![CDATA[SELECT SmsAgreements.ID,
SmsAgreements.FAPP_ID,
SmsAgreements.PAR_ID,
SmsAgreements.SSCH_ID,
SmsAgreements.COSERV_ID,
SmsAgreements.IREA_ID_TERMINATED,
SmsAgreements.IREA_ID_SUSPENDED,
SmsAgreements.SPTYP_ID,
SmsAgreements.CLAIM_BASED_YN,
SmsAgreements.NOTES,
SmsAgreements.SUSPENSION_DT,
SmsAgreements.TERMINATION_DT,
SmsAgreements.SPECIAL_PROJECT_END_DT,
SmsAgreements.CAPITAL_FUNDING_APPROVED,
SmsAgreements.PERIODICAL_PAYMENT_AMOUNT,
SmsAgreements.DATE_CREATED,
SmsAgreements.DATE_MODIFIED,
SmsAgreements.MODIFIED_BY,
SmsAgreements.CREATED_BY,
SmsAgreements.CONTRACT_NO,
SmsAgreements.OFF_ID,
SmsAgreements.DATE_APPROVED,
SmsAgreements.AGR_START_DT,
SmsAgreements.AGR_END_DT,
SmsAgreements.MONTHS_FUNDED,
SmsAgreements.PFRE_ANNUAL_FREQUENCY,
SmsAgreements.FUNDED_NO,
SmsAgreements.REGISTERED_NO,
SmsAgreements.CONTRACT_NAME,
SmsAgreements.OPEX_ALLOCATION,
SmsAgreements.EMERG_ORG_YN,
SmsAgreements.SCHEDULE,
SmsAgreements.PERIODICAL_PAYMENT_AVERAGE,
SmsAgreements.NO_OF_PAYMENTS,
SmsAgreements.ADVANCE_PAYMENT_PERCENT,
SmsAgreements.QUALIFY_NO,
SmsAgreements.ENROLLED_NO,
SmsAgreements.MULTI_YEAR_ALLOCATION,
SmsAgreements.AGR_ID_SOURCE,
SmsAgreements.FYEA_YEAR_ACTIVE,
SmsAgreements.PTYPE_CODE,
SmsAgreements.CONTRACT_VALUE,
SmsAgreements.MAGR_ID,
SmsAgreements.PROG_ID,
SmsAgreements.EMERGENCY_BED_#,
SmsAgreements.drep_id,
SmsAgreements.srep_id,
(select name from sms_offices off where off.id = SmsAgreements.off_id)officeName,
(SELECT PROG.NAME FROM sms_programmes prog where PROG.ID = SMSAGREEMENTS.PROG_ID)programe,
(select prog.code || '.' || bvspro.code || ' ' || bvspro.NAME budget_vote from sms_subsidy_schemes ssch,
sms_budget_vote_sub_programs bvspro,
sms_programmes prog
WHERE bvspro_id = bvspro.ID AND prog.ID = prog_id
and prog.id = SMSAGREEMENTS.PROG_ID)Sub_programme,
(select ssch.NAME from sms_subsidy_schemes ssch where SSCH.ID = SMSAGREEMENTS.SSCH_ID)subsidy,
(SELECT master_contract FROM sms_master_agreements magr WHERE MAGR.ID = SmsAgreements.magr_id)masterContract
FROM SMS_AGREEMENTS SmsAgreements]]></SQLQuery>
<ViewAttribute
Name="ContractNo"
IsPersistent="false"
IsNotNull="true"
PrecisionRule="true"
Precision="20"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="CONTRACT_NO"
SQLType="VARCHAR">
<TransientExpression><![CDATA[CONTRACT_NO]]></TransientExpression>
<DesignTime>
<Attr Name="_DisplaySize" Value="20"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="AgrStartDt"
IsPersistent="false"
PrecisionRule="true"
Type="java.sql.Timestamp"
ColumnType="DATE"
AliasName="AGR_START_DT"
SQLType="DATE">
<RecalcCondition><![CDATA[true]]></RecalcCondition>
<TransientExpression><![CDATA[adf.currentDate]]></TransientExpression>
</ViewAttribute>
</ViewObject>and my FAC view is
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
<!---->
<ViewObject
xmlns="http://xmlns.oracle.com/bc4j"
Name="FAC"
Version="11.1.2.60.81"
BindingStyle="OracleName"
CustomQuery="true"
PageIterMode="Full"
UseGlueCode="false">
<DesignTime>
<Attr Name="_isExpertMode" Value="true"/>
</DesignTime>
<SQLQuery><![CDATA[SELECT SmsFacilityVw.PAR_ID_ORG,
SmsFacilityVw.ORGANISATION,
SmsFacilityVw.ORG_KEY,
SmsFacilityVw.C_CODE,
SmsFacilityVw.FACILITY,
SmsFacilityVw.PAR_ID_FAC,
SmsFacilityVw.NPO_REGISTRATION_NO,
SmsFacilityVw.ADDRESS,
SmsFacilityVw.TELNR_WORK,
SmsFacilityVw.ADDRESSLINE,
SmsFacilityVw.Town,
SmsFacilityVw.Suburb,
SmsFacilityVw.PostalCode,
SmsFacilityVw.DSD_REGION,
SmsFacilityVw.SERVICE_DELIVERY_AREA,
SmsFacilityVw.FAXNR,
SmsFacilityVw.EMAIL,
SmsFacilityVw.PAR_TYPE_DEF
FROM SMS_FACILITY_VW SmsFacilityVw]]></SQLQuery>
<ViewAttribute
Name="ParIdOrg"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="38"
Scale="0"
Type="java.math.BigInteger"
ColumnType="NUMBER"
AliasName="PAR_ID_ORG"
Expression="PAR_ID_ORG"
SQLType="NUMERIC"/>
<ViewAttribute
Name="Organisation"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="100"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ORGANISATION"
Expression="ORGANISATION"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="100"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="OrgKey"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="10"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ORG_KEY"
Expression="ORG_KEY"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="10"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CCode"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="30"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="C_CODE"
Expression="C_CODE"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="30"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Facility"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="100"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="FACILITY"
Expression="FACILITY"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="100"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ParIdFac"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="38"
Scale="0"
Type="java.math.BigInteger"
ColumnType="NUMBER"
AliasName="PAR_ID_FAC"
Expression="PAR_ID_FAC"
SQLType="NUMERIC"/>
<ViewAttribute
Name="NpoRegistrationNo"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="30"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="NPO_REGISTRATION_NO"
Expression="NPO_REGISTRATION_NO"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="30"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Address"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="227"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ADDRESS"
Expression="ADDRESS"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="227"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="TelnrWork"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="150"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="TELNR_WORK"
Expression="TELNR_WORK"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="150"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Addressline"
IsPersistent="false"
PrecisionRule="true"
Precision="120"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ADDRESSLINE"
Expression="ADDRESSLINE"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="120"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Town"
IsPersistent="false"
PrecisionRule="true"
Precision="60"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="TOWN"
Expression="TOWN"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="60"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Suburb"
IsPersistent="false"
PrecisionRule="true"
Precision="60"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="SUBURB"
Expression="SUBURB"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="60"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Postalcode"
IsPersistent="false"
PrecisionRule="true"
Precision="4"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="POSTALCODE"
Expression="POSTALCODE"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="4"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="DsdRegion"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="40"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="DSD_REGION"
Expression="DSD_REGION"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="40"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ServiceDeliveryArea"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="50"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="SERVICE_DELIVERY_AREA"
Expression="SERVICE_DELIVERY_AREA"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="50"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Faxnr"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="50"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="FAXNR"
Expression="FAXNR"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="50"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Email"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="80"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="EMAIL"
Expression="EMAIL"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="80"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ParTypeDef"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="12"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="PAR_TYPE_DEF"
Expression="PAR_TYPE_DEF"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="12"/>
</DesignTime>
</ViewAttribute>
<ViewLinkAccessor
Name="AGR"
ViewLink="sms1405.par_facfkViewLink"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
<ViewLinkAccessor
Name="SmsParAddrVwView"
ViewLink="sms1405.parLink"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
<ViewLinkAccessor
Name="DOC"
ViewLink="sms1405.FAC_DOC"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
</ViewObject>Edited by: ADF007 on 2012/08/23 6:10 PMi try this
public class SMS_AGREEMENTSImpl extends EntityImpl {
RowSet newContractNoBeforePost = null;
public static int NUMBER = Types.NUMERIC;
public static int DATE = Types.DATE;
public static int VARCHAR2 = Types.VARCHAR;
protected Object callStoredFunction(int sqlReturnType, String stmt,
Object[] bindVars) {
CallableStatement st = null;
try {
// 1. Create a JDBC CallabledStatement
st = getDBTransaction().createCallableStatement(
"begin ? := "+stmt+";end;",0);
// 2. Register the first bind variable for the return value
st.registerOutParameter(1, sqlReturnType);
if (bindVars != null) {
// 3. Loop over values for the bind variables passed in, if any
for (int z = 0; z < bindVars.length; z++) {
// 4. Set the value of user-supplied bind vars in the stmt
st.setObject(z + 2, bindVars[z]);
// 5. Set the value of user-supplied bind vars in the stmt
st.executeUpdate();
// 6. Return the value of the first bind variable
return st.getObject(1);
catch (SQLException e) {
throw new JboException(e);
finally {
if (st != null) {
try {
// 7. Close the statement
st.close();
catch (SQLException e) {}
protected void doDML(int operation, TransactionEvent e) {
String amDef = "sms1405.sms1405Module";
String config = "sms1405ModuleShared";
String NewContract = null;
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
ViewObjectImpl vo = (ViewObjectImpl) am.findViewObject("AGR1");
vo.executeQuery();
Row row = vo.first();
// NewContract = (String)vo
NewContract = (String)row.getAttribute("ContractNo");
SMS_AGREEMENTSImpl newcont = new SMS_AGREEMENTSImpl();
//AGRRowImpl res = new AGRRowImpl();
// NewContract = NewContractNo();
if (operation == 1) {
newcont.setContractNo(NewContractNo());
//res.setContractNo( NewContractNo());
//NewContractNo();
super.doDML(operation, e);
public void postChanges(TransactionEvent TransactionEvent) {
/* Only bother to update references if contractno is a NEW one */
if (getPostState() == STATUS_NEW) {
* Get a rowset of contract related
* to this new partyaddress before calling super
newContractNoBeforePost = (RowSet)getSMS_AGREEMENTS();
super.postChanges(TransactionEvent);
public Date getAgrStartDt() {
return (Date)getAttributeInternal(AGRSTARTDT);
* Sets <code>value</code> as the attribute value for AgrStartDt.
* @param value value to set the AgrStartDt
public void setAgrStartDt(Date value) {
setAttributeInternal(AGRSTARTDT, value);
public String NewContractNo() {
String amDef = "sms1405.sms1405Module";
String config = "sms1405ModuleShared";
String NewContract = null;
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
ViewObjectImpl vo = (ViewObjectImpl) am.findViewObject("FAC1");
// vo.setWhereClause("ParIdFac = 38844");
vo.executeQuery();
Row row = vo.first();
Integer par_id = null;
//oracle.jbo.domain.Date today = new oracle.jbo.domain.Date(oracle.jbo.domain.Date.getCurrentDate());
oracle.jbo.domain.Date today = new oracle.jbo.domain.Date();
//FACRowImpl res = new FACRowImpl();
//res.setParIdFac(par_id);
par_id = (Integer)row.getAttribute("ParIdFac");
today = this.getAgrStartDt();
return (String)callStoredFunction(VARCHAR2,
"sms_fapp.get_contract_no(?,?)",
new Object[]{par_id,today});
}at the moment am geting this error
oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:415)
at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:477)
at oracle.adf.model.binding.DCControlBinding.reportException(DCControlBinding.java:201)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.reportException(JUCtrlActionBinding.java:2007)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1659)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
at oracle.jbo.server.EntityImpl.getEntityCache(EntityImpl.java:4665)
at oracle.jbo.server.EntityImpl.saveEventOrigTransAttrVals(EntityImpl.java:729)
at oracle.jbo.server.EntityImpl.saveEventOrigAttrVals(EntityImpl.java:719)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1935)
at sms1405.SMS_AGREEMENTSImpl.setContractNo(SMS_AGREEMENTSImpl.java:998)
at sms1405.SMS_AGREEMENTSImpl.doDML(SMS_AGREEMENTSImpl.java:1628)
at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6751)
at sms1405.SMS_AGREEMENTSImpl.postChanges(SMS_AGREEMENTSImpl.java:1645)
at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3264)
at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:3067)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2071)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
... 43 more
## Detail 0 ##
java.lang.NullPointerException
at oracle.jbo.server.EntityImpl.getEntityCache(EntityImpl.java:4665)
at oracle.jbo.server.EntityImpl.saveEventOrigTransAttrVals(EntityImpl.java:729)
at oracle.jbo.server.EntityImpl.saveEventOrigAttrVals(EntityImpl.java:719)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1935)
at sms1405.SMS_AGREEMENTSImpl.setContractNo(SMS_AGREEMENTSImpl.java:998)
at sms1405.SMS_AGREEMENTSImpl.doDML(SMS_AGREEMENTSImpl.java:1628)
at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6751)
at sms1405.SMS_AGREEMENTSImpl.postChanges(SMS_AGREEMENTSImpl.java:1645)
at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3264)
at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:3067)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2071)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) -
How do I create an interactive PDF file with variable data
We would like to basically do a 'mail merge' of our list of customers with an interactive PDF file (including videos, menus, etc - not just form fill out and web links) to create a single PDF file that contains multiple mail pieces ... one for each customer ... with each mail piece being customized for that customer. Customizations would include different greetings (Dear Bob, Dear Dana, etc), as well as different charts based on data unique to the customer, different photographs, etc.
I've seen that InDesign and Acrobat Professional can be used to create an interactive PDF (such as from http://tv.adobe.com/watch/ask-the-adobe-ones/14-calling-rufus-about-interactive-pdf-making). However I don't understand how I can insert data from a database, csv file, excel file etc into the PDF file so that each page, or each set of pages, within the PDF can be customized.
Can anyone point me to a tool to use for this?
Thanks,
Bob KendallFor that kind of volume and unattended operation, you want InDesign Server – which is the server/high volume edition of INDD.
From: Adobe Forums <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>>
Date: Thu, 3 Nov 2011 06:58:07 -0700
To: Leonard Rosenthol <[email protected]<mailto:[email protected]>>
Subject: How do I create an interactive PDF file with variable data
Re: How do I create an interactive PDF file with variable data
created by Ti26E31DSxxx<http://forums.adobe.com/people/Ti26E31DSxxx> in PDF Language and Specifications - View the full discussion<http://forums.adobe.com/message/4005459#4005459
Maybe you are looking for
-
Problem in fetching the code for the line item
Hi, I am working on a report in which to display the values corresponding to the line item of a PO. For, ex, if there are 3 line items 10,140,150 and their condition values such zing,zgrd,zbrd are the condition types consist of different values depen
-
I have one package and in side that package i have 5 Procedure like a; b; c; I would like to run that Package every 2 hrs automatically , Please provide me the solution how to schedule this job ..and i would like to get the errors while executing tho
-
I keep getting an error when trying to receive the new update iOS7 on iPhone5. Any suggestions?
-
Hello, I have an question -- why the firefox do not sync group tabs on my devices?
Sorry, my English is not good, but this problem is so important and I decided write about it. In my settings, in section "Synchronization" I did not seen the checkbox which may let me synchronize my group tabs. It's so bad, because I have more groups
-
I ordered a new Firewire external hard drive that has 2 Firewire 800 ports. Can I use those ports as a Firewire hub??