Journal import fails when called from PLSQL
Hi,
When journal import is called from plsql code it is failing with error in 'gllacc() Function returning without value and no data found'.
Same transaction is run succesfully from front end.
I checked both gl_interface and gl_interface_control table but couldnt find the issue.
Any info on this would be very helpful.
Thanks
Sandhya
FOR l_rec IN (SELECT ledger_id,group_id from apps.gl_interface
WHERE status='NEW'
AND user_je_source_name='GIS_DATA_CONVERSION'
GROUP BY ledger_id,group_id
ORDER BY group_id
LOOP
apps.gl_journal_import_pkg.populate_interface_control (user_je_source_name => 'GIS_DATA_CONVERSION',
GROUP_ID => l_rec.group_id,
set_of_books_id => l_rec.ledger_id,
interface_run_id =>vl_interface_id,
table_name => 'GL_INTERFACE',
processed_data_action=>'D'
COMMIT;
vl_request_id := apps.fnd_request.submit_request (application => 'SQLGL', -- application short name
program => 'GLLEZLSRS', -- program short name
description => NULL, -- program name
start_time => NULL, -- start date
sub_request => FALSE, -- sub-request
argument1 => 2065, --Data access set id
argument2 => 'GIS_DATA_CONVERSION', --Source
argument3 => l_rec.ledger_id, -- set of books id
argument4 => l_rec.group_id,
argument5 => 'N', -- error to suspense flag
argument6 => NULL, -- create summary flag
argument7 => 'N' -- import desc flex flag
COMMIT;
IF ( vl_request_id = 0 ) THEN
xxgis.gis_conv_util_pkg.debug_print_p(1,'FND_LOG','E001: Journal Import Submission Failed. ' || SQLERRM);
retcode := 2;
EXIT;
ELSE
xxgis.gis_conv_util_pkg.debug_print_p(1,'FND_LOG','P001: Submitted Journal Import Program for group id: ' || l_rec.group_id ||
'and ledger :'||l_rec.ledger_id|| ', Request ID: ' || vl_request_id);
END IF;
END LOOP;
Similar Messages
-
Crystal Reports 2008 fails when called from e Web Service under 64bit OS
I have discovered that Crystal Reports 2008 doesn't work when called from a Web Service running under 64bit Windows platforms (in my case Windows 2003 Server and Windows XP 64bit); practically no object is instantiated. I've tried several solutions without success.
Before creating a wrapper component to use under COM+, is there anybody who has a better and cheaper solution than creating another component to wrap CR 2008 ?Hi Sergio,
Before I mark this post as assumed answered I would just like to say and re-iterate that at this time there is no one answer and we fully understand your concerns. As you know in CR 6.0 it came in 16 and 32 bit versions because at the time 32 bit was relatively new but 16 bit was the norm. This is also true for 32 to 64 bit, 32 is the norm and 64 bit is relatively new. We know and are well aware 64 bit is the future and we are working as quickly as we can to move in that direction. Because of the complexity of the Product it's not simply a matter of re-compiling all of our dll's in 64 bit format. The core of our data connectivity with our database drivers which are dependant on third party clients must also need to support 64 bit modes. This as well as Printer drivers also need to be 64 compatable, there are a multitude of dependencies that we rely on that must add 64 bit support. As a programmer you are well aware of the issues around Thunking back and forth between 32 to 64 bits, it can cause delays and potentially loss of data which is a whole other issue. Not to mention also that we would have to ship both versions potentially doubling the size of the distribution packages or doubling the size of the dll's to have the ability to work in both modes. Relatively speaking of course, it would not be double the size but the variables would need to be able to allocate 32 or 64 memory blocks.
The other option is to produce 2 separate versions, this alone is a massive project. Any issue would need to be fixed in separate code streams.
So I'm sure you can see it's not simply a matter of saying yes we support 64 bit. It's a massive project that is going to take time to do and we have to wait for the third party drivers to commit also.
Visual Studio .NET 2005 and 2008 is the only option if you want true 64 bit but you will be limited on what DB's you can support and export formats you can export to. They are the only drivers we did convert to 64 bit.
Thank you for your understanding
Don -
LocateRegistry.getRegistry() fails when called from Tomcat 5.5 servlet
I'm trying to access a simple RMI server from a Tomcat 5.5 (Java 5) servlet. I get access exceptions having to do with java.util.logging.LoggingPermission. (The RMI server works fine with a simple command line Java app.)
Is there some reason that calling getRegistry() from within a servlet should fail? Is there some reason that it should require LoggingPermission?
I've modified the catalina.policy file to grant all permission to everything but I still get the same errors.
Surely there is a way to make RMI calls from a servlet. Any suggestions on how to fix this? Thanks.show us the script
-
Insert using Spatial Index fails when called from PHP
I have a stored procedure that inserts into a table with a spatial index on one of its fields.
When I run the procedure from SQL Server Management Studio it runs just fine.
When I run it from PHP, it returns the error: "INSERT failed because the following SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views and/or indexes
on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations"
From within Management Studio, I have tried many different combinations of settings, until I wound up with the list I have in the procedure below.
Within Managment Studio the error changes based on the options I have set, but PHP always replies with: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'
I have configured PHP to use the same SQL user as management studio, and I have tried both mssql_query and mssql_execute with bound parameters.
The spatial index is on the field post.location If I remove the spatial index it works, but I need the spatial index.
CREATE PROCEDURE insert_post ( @subject AS VARCHAR(250), @body AS VARCHAR(2000), @latitude AS FLOAT, @longitude AS FLOAT ) AS BEGIN
SET NOCOUNT ON
SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
DECLARE @location AS geography = geography::Point(@latitude, @longitude, 4326)
INSERT INTO post
subject,
body,
location
) VALUES (
@subject,
@body,
@location
ENDHi Charles
Your issue looks like it have two basic sources: (1) The connection string properties, (2) The table structure and the data which you try to insert.
(1) The connection string properties can be specified in various ways.
You can set most of them during the connection, depending on the provider which you are using. We did not get from you any information about the PHP code, so we have no information regarding this part.
The connection properties can be changed after the connection was made, which is basically what you have try to do. But we don't know what properties
are differents (since you .. the PHP code..) but you can check those properties dynamically, insert them to a table and then compare. To check all the properties you can use this post:
http://ariely.info/Blog/tabid/83/EntryId/153/SQL-Server-Get-Connection-Properties.aspx
(2) We need to understand your
table structure and compare it to yours query. Please post your DDL+DML (queries to create the table and to insert some sample data), and the full SP code
as it is now.
[Personal Site] [Blog] [Facebook] -
Stored procedure runs fine from SSMS but fails when called from the C# app
I'm using SS Express 2012 so I doubt I have all possible debugging capabilities at my disposal, although I'm still trying to figure this out myself.
The compiled C# application has logging to insure that the the SP is being invoked, the appropriate line of code is definitely being reached. The logging always reports 'success' suggesting that the SP was successfully executed (and no exception is thrown
to the C# app), but the indexes aren't getting rebuilt (I have a fragmentation query proving they are not rebuilt). Yet it runs successfully if I
(1) set a breakpoint in the C# app and step through the code line by line OR
(2) run the SP from the SSMS GUI.
The fragmentation query confirms sucess for both 1 and 2.
-I can't rely on the GUI because I want to run this overnight immediately after the C# app is finished inserting new records.
- The SP loops through all the tables, and all the indexes in each table, checking for fragmentation and rebuilding any indexes over 7% fragmented.
ALTER Procedure [dbo].[usp_RebuildIndexes]
AS
Declare @fetch_TableName NVARCHAR(256)
DECLARE Cursor_Tables CURSOR FOR
SELECT Name FROM sysobjects WHERE xtype ='U'
OPEN Cursor_Tables
While 1 = 1 -- Begin to Loop through all tables
BEGIN
FETCH NEXT FROM Cursor_Tables INTO @fetch_TableName -- fetches the next table
if @@FETCH_STATUS <> 0 break
print '---------' + @fetch_TableName
Declare @fetch_indexName NVARCHAR(256) -- loops through al indexes of the current table
DECLARE Cursor_Indexes CURSOR FOR -- Looking for indexes fragmented more than 7 percent.
SELECT name as indexName
FROM sys.dm_db_index_physical_stats (DB_ID(DB_Name()), OBJECT_ID(@fetch_TableName), NULL, NULL, NULL) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
Where Name is not null and avg_fragmentation_in_percent > 7
OPEN Cursor_Indexes
WHILE 1= 1 -- Begin to Loop through all Indexes
BEGIN
FETCH NEXT FROM [Cursor_Indexes] INTO @fetch_indexName
if @@FETCH_STATUS <> 0 break
Declare @SqL nvarchar(2000) = N'ALTER INDEX ' + @fetch_indexName + ' ON ' + DB_Name() + '.dbo.' + @fetch_TableName + ' Rebuild'
print @Sql
Begin TRy
Execute sp_executeSQL @sql
End Try
Begin Catch
Declare @err nvarchar(2000) = ERROR_MESSAGE();
throw 51000, @err, 1
End Catch
End -- Ends looping through all indexes
CLOSE [Cursor_Indexes]
DEALLOCATE [Cursor_Indexes]
End -- Ends looping through all tables
CLOSE Cursor_Tables
DEALLOCATE Cursor_Tables
foreach (objDB DB in oUserPrefs.DBs) {
report += DB.Real_Name;
if (DB.cn == null) DB.cn = sqlCn(DB.Real_Name, SystemInformation.ComputerName);
try {
if (DB.cn.State != ConnectionState.Open) DB.cn.Open();
} catch (Exception ex) {
report += " - Failed because can't open a connection.\r\n";
continue;
DB.OpenedAConnection = true;
DataTable dt = null;
try {
dt = oParam.fillDt("dbo.usp_RebuildIndexes", DB.cn, null);
} catch (Exception ex) {
report += " -failed because " + ex.Message + "\r\n\r\n";
continue;
report += " - success.\r\n";
DB.LastTimeRebuiltIndexes = DateTime.Now;Your proc is a bit of a mess and hard to read. This should get you what you need though. I added a little logic in the middle that determines if the index should be reorged, or rebuilt.
You were right that my script was too messy and I used your code/logic to rewrite mine. Thanks! I tried it this morning and it worked fine, but I will have to see how it runs overnight to be sure.
Here's the weird thing. My original code should have worked. In fact I'm actually using it in 3 c-sharp apps each of which has 3 to 7 Express 2012 databases (about 10 million records per database). For about a month it's been working fine on two of the
apps. Furthermore this morning I used a commercial file-comparison tool to verify that the 3rd app has been running an identical version of the SP. So I'm at a total loss as to what went wrong in the 3rd app.
Here's my rewrite.
Alter Procedure [dbo].[usp_RebuildIndexes]
As
Declare @Messages Table(Msg nvarchar(2000))
Declare @IndexName nvarchar(256), @TableName NVARCHAR(256)
DECLARE Cursor_Indexes CURSOR FAST_FORWARD FOR -- GEt a list of all indexes for all tables.
select idxs.name as indexName, o.Name as TableName
from sys.indexes idxs
inner join sysobjects o on idxs.object_id = o.id
inner join sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL,NULL,NULL) as stats
on stats.object_id = idxs.object_id and stats.index_id = idxs.index_id
where xtype = 'u' and idxs.name is not null And avg_fragmentation_in_percent > 7
OPEN Cursor_Indexes
While 1 = 1
BEGIN
FETCH NEXT FROM Cursor_Indexes INTO @IndexName, @TableName
if @@FETCH_STATUS <> 0 break
Declare @SqL nvarchar(2000) = N'ALTER INDEX ' + @IndexName + ' ON ' + DB_Name() + '.dbo.' + @TableName + ' Rebuild'
insert @Messages(Msg)VALUES(@sql)
Execute sp_executeSQL @sql
End
CLOSE [Cursor_Indexes]
DEALLOCATE [Cursor_Indexes]
Select * From @Messages -
CUPS print job options fail when called from lp (UNIX command line)
Under Leopard this command-line print request fails to respect the specified job options:
lp -o number-up=2 -o page-border=double <filename>
Though it worked great in Tiger, the number-up and page-border job options are now disregarded. I have tried lots of things (and wasted lots of paper) such as setting them permanently with lpoptions (and they do appear changed when the lpoptions command is repeated), using lpr instead of lp, reinstalling the printer via the CUPS localhost web interface, enabling non-Bonjour scanning with the hack to the CUPS preference file, deselecting "Last Printer Used" for the default printer in the System Preferences -- nope.
I have not tried other job options; I assume that whatever is breaking these two is breaking all the others, and even if it isn't, these two are what I want.
Is something new in Leopard overriding lpoptions job options? How do I make it stop? It is sooooo aggravating when something that used to work fine breaks. The printer is an HP LaserJet 4000N connected by Ethernet and discovered with AppleTalk.
Thanks for any advice!Thanks John, I did search but somehow missed that thread.
However it did not help. With or without the "-p printername" argument lpoptions does make a persistent change to its own data:
+$ lpoptions+
+media=Letter sides=one-sided finishings=3 copies=1 job-hold-until=no-hold job-priority=50 number-up=2 auth-info-required=none job-sheets=none,none printer-info=Barrow printer-is-accepting-jobs=1 printer-is-shared=0 printer-location='Local Zone' printer-make-and-model='HP LaserJet 4000 Series' printer-state=3 printer-state-change-time=1209495301 printer-state-reasons=none printer-type=2134228 page-border=double+
You can see that the printer "Barrow" has remembered "number-up=2" and "page-border=double". Regardless if I give any of these commands:
+lpr <filename>+
+lpr -P Barrow <filename>+
+lp <filename>+
+lp -d Barrow <filename>+
none of them show the results of these option settings (and somewhere in the forest another tree is cut down). -
Mapedit fails when called from Visio, but works in Project
Hi -
I'm writing some vba code in Visio that 1. opens a selected Project file, 2. creates a Map, and 3. exports that map data to Excel. I've got the rest of the code working, but I get an error 1101 / argument value is not valid with this statement.
The MS Project code that works when run in Project is this:
Application.MapEdit name:="visio_HLS_export", Create:=True, OverwriteExisting:=True, _
DataCategory:=pjMapTasks, CategoryEnabled:=True, TableName:="tasks", _
FieldName:="Unique ID", ExternalFieldName:="TaskUID", ExportFilter:="IsMilestoneFlag"
The code in Visio is the same, except the "Application" object is replaced with my MSProject object (mspApp). I've got a similar routine set up to create the "IsMilestoneFlag" filter, and that is working fine. The filter is created in
the local organizer, then copied to Global.mpt, so it should be able to find it. Not sure what else could be causing the failure.
Set mspApp = CreateObject("MSProject.Application")
mspApp.MapEdit Name:="visio_HLS_export", Create:=True, OverwriteExisting:=True, _
DataCategory:=pjMapTasks, CategoryEnabled:=True, TableName:="tasks", _
FieldName:="Unique ID", ExternalFieldName:="TaskUID", ExportFilter:="IsMilestoneFlag"
Any ideas?matttjo,
This might be s shot in the dark, but looking at the MapEdit Method, the only argument that is suspect when controlling Project from another app is the DataCategory argument. All other arguments are either string, or boolean. You might try adding a reference
to the DataCategory, something like:
DataCategory:=mspApp.pjMapTask
Since all arguments of the method are optional, you could try eliminating one at a time (or adding one at a time) and see which one causes the problem.
Hope this helps.
John -
Journal Import fails with EC12 issue
Journal Import fails with EC12 issue, we knew the AR credit memo transactions causing this issue have distribution lines with accounted_dr value as zero and entered_dr as non zero, same is the case with accounted_cr and entered_cr.
Issue is with the Credit memos generated out of iReceivables that are creating distributions with null amounts when applied on invoices with rules. Null amounts are on REV/UNEARN distribution lines. Applied patch# 12957348 as suggested in metalink and we noticed more number of such transactions after patch application.
Any pointers are really appreciated. We have over 5000 such lines and is not possible to clear them manually and since these CM's are phased, we are sure to see them again with this issue till it is resolved. Note# 285995.1 didn't help either.
We are on 11.5.10.2 and 10g database.
KFOR l_rec IN (SELECT ledger_id,group_id from apps.gl_interface
WHERE status='NEW'
AND user_je_source_name='GIS_DATA_CONVERSION'
GROUP BY ledger_id,group_id
ORDER BY group_id
LOOP
apps.gl_journal_import_pkg.populate_interface_control (user_je_source_name => 'GIS_DATA_CONVERSION',
GROUP_ID => l_rec.group_id,
set_of_books_id => l_rec.ledger_id,
interface_run_id =>vl_interface_id,
table_name => 'GL_INTERFACE',
processed_data_action=>'D'
COMMIT;
vl_request_id := apps.fnd_request.submit_request (application => 'SQLGL', -- application short name
program => 'GLLEZLSRS', -- program short name
description => NULL, -- program name
start_time => NULL, -- start date
sub_request => FALSE, -- sub-request
argument1 => 2065, --Data access set id
argument2 => 'GIS_DATA_CONVERSION', --Source
argument3 => l_rec.ledger_id, -- set of books id
argument4 => l_rec.group_id,
argument5 => 'N', -- error to suspense flag
argument6 => NULL, -- create summary flag
argument7 => 'N' -- import desc flex flag
COMMIT;
IF ( vl_request_id = 0 ) THEN
xxgis.gis_conv_util_pkg.debug_print_p(1,'FND_LOG','E001: Journal Import Submission Failed. ' || SQLERRM);
retcode := 2;
EXIT;
ELSE
xxgis.gis_conv_util_pkg.debug_print_p(1,'FND_LOG','P001: Submitted Journal Import Program for group id: ' || l_rec.group_id ||
'and ledger :'||l_rec.ledger_id|| ', Request ID: ' || vl_request_id);
END IF;
END LOOP; -
HR_INFOTYPE_OPERATION not working when called from Dynamic action
Hi ,
Senario : I would like to execute a form from dynamic action which
creates a record in 0015 (Additional payment IT) .
I have writen the code as shown below am using FM HR_INFOTYPE_OPERATION
. When i execute the program from se38 it is creating a record, however it is
not created when it is called from dynamic action..when i debugged the code in
inside the FM HR_INFOTYPE_OPERATION there is a FM HR_MAINTAIN_MASTERDATA where
they are using call dialog (statement) and
sy-oncom = 'N' when called from Dynamic action and
sy-oncom = 'S' when called executed directly.
I tried to change the sy-oncom to S while run from Dynamic action it created
the record.
So Can anyone explain me abt sy-oncom and how can i resolve the issue..
code..
REPORT ZHRPYENH01 .
perFORM TERMIATION_9000.
INCLUDE DBPNPMAC.
FORM Termiation_9000 *
FORM TERMIATION_9000.
INFOTYPES : 0015.
*data : i .
*i ='c'.
*break-point.
*message i000(000) with i.
TABLES : PRELP.
DATA : P9000 TYPE PA9000." with header line.
DATA : P0000 TYPE STANDARD TABLE OF P0000 WITH HEADER LINE.
DATA : P0015 TYPE STANDARD TABLE OF P0015 WITH HEADER LINE.
DATA : HIRE_DATE LIKE SY-DATUM,
TERM_DATE LIKE SY-DATUM.
DATA : MOLGA LIKE T500L-MOLGA VALUE '25',
SEQNR LIKE PC261-SEQNR.
DATA : RGDIR TYPE STANDARD TABLE OF PC261 WITH HEADER LINE.
DATA : ACTUAL_PERIOD LIKE PA9000-RETENTION.
DATA : PNP-SW-FOUND TYPE SY-SUBRC ,
PNP-SY-TABIX TYPE SY-TABIX.
DATA : TER_PERNR LIKE PA0001-PERNR.
DATA : REF_PERNR LIKE PA0001-PERNR.
data : key type BAPIPAKEY.
data : payed_amount type p0015-BETRG.
data : future_payment_amount type p0015-BETRG.
data : p0002 like pa0002.
types : begin of t_deduction ,
deducation_date like p0015-begda,
future_payment_amount type p0015-BETRG.
types : end of t_deduction.
data : future_deduction type standard table of t_deduction with
*header line.
data : future_deduction type t_deduction .
data : RETURN type BAPIRETURN1.
*data : deduction_p0015 like standard table of p0015 with header line.
data : deduction_p0015 like p0015 .
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
****Prepare 0015 data for deduction
*deduction for payed amount
clear deduction_p0015.
*refresh deduction_p0015.
deduction_p0015-pernr = REF_PERNR.
*deduction_p0015-pernr = TER_PERNR.
deduction_p0015-lgart = 'M120'.
deduction_p0015-begda = sy-datum + 1 .
deduction_p0015-endda = sy-datum + 1 .
deduction_p0015-BETRG = payed_amount.
deduction_p0015-WAERS = 'SGD'.
deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
**deduction for future payment amount
*loop at future_deduction.
*clear deduction_p0015.
*deduction_p0015-pernr = REF_PERNR.
**deduction_p0015-pernr = TER_PERNR.
*deduction_p0015-lgart = 'M120'.
*deduction_p0015-begda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-endda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-BETRG = future_deduction-future_payment_amount.
*deduction_p0015-WAERS = 'SGD'.
*deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
*endloop.
Create a deduction wage type in 0015 for the employee
break-point.
CLEAR RETURN.
CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
if not return is initial.
message E000(000) with
'Referred Employee could not be locked for referal payment deducation,
please try after some time'.
endif.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0015'
NUMBER = REF_PERNR
SUBTYPE = 'M120'
OBJECTID =
LOCKINDICATOR =
VALIDITYEND = SY-DATUM
VALIDITYBEGIN = SY-DATUM
RECORDNUMBER =
RECORD = deduction_p0015
OPERATION = 'COPY'
TCLAS = 'A'
DIALOG_MODE = '2'
NOCOMMIT =
VIEW_IDENTIFIER =
SECONDARY_RECORD =
IMPORTING
RETURN = return
KEY = key
break-point.
COMMIT WORK.
if not return is initial.
*return-TYPE
*ID
*NUMBER
*MESSAGE
message I000(000) with return-MESSAGE.
endif.
CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
Thanks and regards
-Senthil Bala
Message was edited by: senthil balaHi Senthil
Why at all U want a subroutine to create a record in IT0015 through Dynamic action.There are some standard codes available to update infotypes.
Let me give U an example
14 9CON BETRG 4 2 I INS,0015 This will create a record in IT0015 when IT0014 is updated with Wagetype 9CON
14 9CON BETRG 4 3 W P0015-LGART='5400' Set wagetype for IT0015(Here U can use a subroutine call to set the wagetype)
14 9CON BETRG 4 4 W P0015-BETRG=P0014-BETRG set amount for IT0015(Here U can use a subroutine call to get the amount)
14 9CON BETRG 4 5 W P0015-BEGDA=P0014-ENDDA set the dates(Here U can use a subroutine call to set the dates)
Hope this will help U.
Please award points if helpful -
JTextField update problem when called from PropertyChangeEvent
Hi,
I'm trying to create forms that can be dynamically loaded with Class.forname(formName).
Those forms should always inherit some methods that make it easy to pass data to
them and receive data from them. The idea is that the data comes from a table which
sends a hashmap (String column/JTextField-name + String Value pairs) with firePropertyChanged
as soon as a new row is seleceted. The JTextFields in the form are marked with setName("FieldName") that has to correspond to the name of the columns of the table.
My problem is that I can't update the fields in my form when I'm calling getRow(HashMap)
from within propertyChangeEvent but that's necessary to keep the forms flexible.
JTextFieldName.setText(newText) just won't work. But it works when I call getRow(HashMap)
from the constructor. SwingWorker and threads to update the form didn't help.
I don't need to call pack() / update() / repaint() on the JFrame, do I ??
update() / validate() / repaint() etc. didn't work on the JTextField themselves.
Below is the code for one of the test-forms (just a JPanel that is inserted in a frame)
with all of it's methods. Does anybody have a solution to this problem ??
Thanks for taking time for that !!
Benjamin
* testTable.java
* Created on 15. April 2004, 16:12
package viewcontrol.GUI;
* @author gerbarmb
import javax.swing.*;
import java.awt.*;
import java.beans.*;
import java.util.*;
public class testTable extends javax.swing.JPanel
implements
java.awt.event.KeyListener,
java.beans.PropertyChangeListener {
* public static void main(String[] argv) { testTable tt = new testTable();
* JFrame jf = new JFrame(); jf.setContentPane(tt); jf.setVisible(true); }
/** Creates new customizer testTable */
public testTable() {
initComponents();
HashMap hm = new HashMap();
* Only for debugging, to see that the method getRow() works when
* called from the constructor.
hm.put("ttext", "TEst");
this.getRow(hm);
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the FormEditor.
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
textIn = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
intIn = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
numIn = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
dateIn = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
dateTimeIn = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jCheckBox1 = new javax.swing.JCheckBox();
keepValues = new javax.swing.JCheckBox();
jButton1 = new javax.swing.JButton();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Text");
add(jLabel1, new java.awt.GridBagConstraints());
textIn.setName("ttext");
textIn.setPreferredSize(new java.awt.Dimension(100, 21));
textIn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textInActionPerformed(evt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
add(textIn, gridBagConstraints);
jLabel2.setText("Integer");
add(jLabel2, new java.awt.GridBagConstraints());
intIn.setName("tint");
intIn.setPreferredSize(new java.awt.Dimension(50, 21));
add(intIn, new java.awt.GridBagConstraints());
jLabel3.setText("Number");
add(jLabel3, new java.awt.GridBagConstraints());
numIn.setName("tnum");
numIn.setPreferredSize(new java.awt.Dimension(50, 21));
add(numIn, new java.awt.GridBagConstraints());
jLabel4.setText("Date");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
add(jLabel4, gridBagConstraints);
dateIn.setName("tdate");
dateIn.setPreferredSize(new java.awt.Dimension(50, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
add(dateIn, gridBagConstraints);
jLabel5.setText("DateTime");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
add(jLabel5, gridBagConstraints);
dateTimeIn.setName("tidate");
dateTimeIn.setPreferredSize(new java.awt.Dimension(80, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(dateTimeIn, gridBagConstraints);
jLabel6.setText("Bit");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(jLabel6, gridBagConstraints);
jCheckBox1.setName("tbit");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(jCheckBox1, gridBagConstraints);
keepValues.setText("keep values");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 3;
add(keepValues, gridBagConstraints);
jButton1.setText("Send");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 2;
add(jButton1, gridBagConstraints);
}//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
sendRow();
}//GEN-LAST:event_jButton1ActionPerformed
private boolean sendRow() {
java.util.HashMap hm = new java.util.HashMap();
Component[] cs = this.getComponents();
for (int i = 0; i < cs.length; i++) {
if (((Component) cs).getName() != null) {
if (cs[i] instanceof JCheckBox) {
String value = ((JCheckBox) cs[i]).isSelected() ? "1" : "0";
hm.put(cs[i].getName(), value);
} else if (cs[i] instanceof JCheckBox) {
hm.put(cs[i].getName(), ((JTextField) cs[i]).getText());
} // end for
firePropertyChange("rowChanged", null, hm);
return true;
private void getRow(java.util.HashMap hm) {
//if (! this.keepValues.isSelected()) {
Component[] cs = this.getComponents();
for (int i = 0; i < cs.length; i++) {
if (cs[i].getName() != null && hm.containsKey(cs[i].getName())) {
Component component = cs[i];
String componentName = cs[i].getName();
String componentValue = (String) hm.get(component.getName());
if (cs[i] instanceof JTextField) {
// output for debugging
System.out.println("Setting " + cs[i].getName() + " = "
+ componentValue);
((JTextField) component).setText(componentValue);
} else if (cs[i] instanceof JCheckBox) {
// output for debugging
System.out.println("JCheckBox found");
JCheckBox cb = (JCheckBox) component;
boolean selected = (componentValue == null ? false : (componentValue.equals("1")
? true
: false));
((JCheckBox) component).setSelected(selected);
} // end for
/* Uncomment this code snippet to retrieve the text that has been set
for the components (that means JTextFields)
This is just for debugging !
Component[] cs = this.getComponents(); for (int i = 0; i < cs.length;
i++) { if (cs[i].getName() != null) { if (cs[i] instanceof
JTextField) { System.out.println("Value of " +cs[i].getName() + " = " +
((JTextField) cs[i]).getText()); } } } // end for
private void textInActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textInActionPerformed
}//GEN-LAST:event_textInActionPerformed
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
sendRow();
public void keyReleased(java.awt.event.KeyEvent e) {
public void keyTyped(java.awt.event.KeyEvent e) {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("newRow")) {
final PropertyChangeEvent finalEvt = evt;
Runnable makeChanges = new Runnable () {
public void run() {
getRow((java.util.HashMap) finalEvt.getNewValue());
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField dateIn;
private javax.swing.JTextField dateTimeIn;
private javax.swing.JTextField intIn;
private javax.swing.JButton jButton1;
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JCheckBox keepValues;
private javax.swing.JTextField numIn;
private javax.swing.JTextField textIn;
// End of variables declaration//GEN-END:variablesThe problem of the change in the form not being comitted is that
I forgot SwingUtilities.invokeLater(makeChanges); in the bottom
part in public void propertyChange(java.beans.PropertyChangeEvent evt)
after having created a new Runnable.
Changes to the UI often have to be comitted by SwingUtitlities.invokeLater()
though I don't know that much about Swing yet.
Thanks to everybody who tried to solve that problem.
Benjamin -
Set the default field value to transaction code field, when calling from WD
Hi all,
Can we pass the value in a input field of a standard transaction calling from WD application. Suppose we are calling a transaction VA03 in an external window, then how will be pass the value in the VBAK_VBELN screen field.
Is there any way to pass the value to this transaction field. I have also tried out to set the parameter ID 'AUN' for VA03 transaction VBELN field. But it did not work for me.
Is there any way to set the default field value to transaction code field, when calling from WD?
Please suggest, if anyone have any idea.
Thanks
SanketHi,
I am using the below code to open a standard transaction. It will help you to explain my point more easily.
DATA: url TYPE string,
host TYPE string,
port TYPE string.
*Call below method to get host and port
cl_http_server=>if_http_server~get_location(
IMPORTING host = host
port = port ).
*create URL
CONCATENATE 'http'
'://' host ':' port
'/sap/bc/gui/sap/its/webgui/?sap-client=&~transaction=' 'VA03'
INTO url.
*get the window manager as we are opening t code in external window.
DATA lo_window_manager TYPE REF TO if_wd_window_manager.
DATA lo_api_component TYPE REF TO if_wd_component.
DATA lo_window TYPE REF TO if_wd_window.
lo_api_component = wd_comp_controller->wd_get_api( ).
lo_window_manager = lo_api_component->get_window_manager( ).
call the url which we created above
lo_window_manager->create_external_window(
EXPORTING
url = url
RECEIVING
window = lo_window ).
lo_window->open( ).
Note*
One more query I want to add to this thread, that is there any possibility to call a custom transaction as well? -
Subtemplate footer is not coming when calling from the main template
Hi All,
The footer from the subtemplate is not coming in the output when calling from the main template. Does anybody worked on the subtemplate?
If the same footer is put in the main template, it is displaying.
Please respond as this is a critical issue for us.
Thanks,
AmbadasHi Tim,
Thanks for your reply. Here is syntax which I got from the Oracle BI Publisher blog. And this is to just test locally.
http://blogs.oracle.com/xmlpublisher/2006/04/11?import:file:///C:/temp/HeaderFooter.rtf
<?import:file:///d:/test/GEPOPRINT_GER_GER.rtf?>
<?import:file:///d:/test/GEPOPRINT_US.rtf?>
<?for-each@section:G_HEADERS?>
<?if:POH_REPORT_NAME='GER PO w/GERMAN Data'?>
<?call-template:PO_GERMAN?>
<?end if?>
<?if:POH_REPORT_NAME='US Purchase Order'?>
<?call-template:PO_US?>
<?end if?>
<?End for-each?>
And I don't have any footers in the main template but in the subtemplate I have the respective footers. If you want, I can send all the RTF's to you directly.
Let me know.
Thanks,
Ambadas -
Java works stand alone does not when called from PL/SQL
I have this piece of code, which works as a standalone program: It takes in the en_var and returns a path.
But it wont work when called from a store procedure the line of code p = rt.exec("echo "+envar); returns a path as a standalone program returns null when called from a Oracle store procedure.
Thanks for any help just going around and round in circles.
import java.util.*;
class translate
public static String translatePath(String envar)
Runtime rt = Runtime.getRuntime();
int bufSize = 4096;
byte buffer[] = new byte[bufSize];
String path = null;
Process p = null;
String os = null;
String name = null;
String home = null;
String dir = null;
SecurityManager sm = null;
int len = 0;
try
System.out.println("Calling echo "+envar);
os = System.getProperty("os.name");
name = System.getProperty("user.name");
home = System.getProperty("user.home");
dir = System.getProperty("user.dir");
sm = System.getSecurityManager();
p = rt.exec("echo "+envar);
BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
path = new String(buffer);
//p.waitFor();
bis.close();
return path;
catch(Exception e)
System.out.println("Exception "+e);
return "ProcessProblem";
//path = "/rims/live/log";Still cant get it to work, it doesnt fall over anymore, but when I input $PATH, it will output $PATH instead of the path for $PATH i.e /rims/live: What does your program output please:
Here is my code:
import java.io.*;
import java.util.*;
class translate
public static String translatePath(String envar)
Runtime rt = Runtime.getRuntime();
Process p = null;
String echoOutput = null;
int len = 0;
try
System.out.println("Calling echo "+envar);
p = rt.exec(new String[]{"/bin/echo",envar});
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
echoOutput = br.readLine();
br.close();
isr.close();
return echoOutput;
catch(Exception e)
System.out.println("Exception "+e);
return "ProcessProblem";
//path = "/rims/live/log";
Thanks for all your help so far.
Tony -
Stored Procedure Does Not Run Properly When Called From Portlet
We have a simple Java portlet that calls a PL/SQL stored procedure which we wrote. The stored procedure sends a large number of emails to users in our corporation using the "utl_smtp" package. The stored procedure returns a count of the emails back to the Java portlet when it's finished. This number is displayed in the portlet.
Our problem:
The stored procedure functions as expected when run from a PL/SQL block in SQL*Plus, and the Java portlet calls the procedure properly when sending out a smaller number of emails (Less than 200 usually). When we get into a higher number of emails the procedure hangs when called from the portlet, but it STILL functions properly from SQL*Plus. It does not return the number of emails sent
and the Java portlet is unable to return a SQLException. Also, we have noticed that emails are sent at a much slower pace from the stored procedure when it's called from the portlet.Any Ideas?
-
Advanced table:not able to view more than 10 rows when called from workflow
Hi everyone,
I'm calling a page that contains advanced table and its controller class from two places.
First one is from a inquiry form, when this page is called it works fine. when there are more than 10 rows, first 10 are shown on page render and when we click on Next link, other rows are shown. This is becuase I have given the records displayed property on adavanced table = 10. I'm fine till here.
Second one is I'm calling this page again from a workflow notificaiton. There is a link called view more details on the workflow notification , click of this link will open the page with 10 records displayed. But when user tries to click on Next it doesn't work. It just doesn't refresh.
Its very wierd,. not able to understand what could be wrong when calling from wf notificiton. Its the same page and conroller code used in both the places.
Please help me!!
Thanks
SunnyThanks for your response Kristofer. You are correct, there was a difference in the parameters and the issue is resolved now.
Maybe you are looking for
-
How do I get the iTunes store to pull and use updated info from Gracenote?
I'm helping a music group fix their CD information, which was incorrect in the Gracenote database. Gracenote made the corrections, but the iTunes store is not reflecting the changes. I verified the changes were made by inserting the CD on a PC, and,
-
Number of connections unused in a weblogic pool ?
Here is my question : Do you know a way to know the number of connections unused (or the number of connections in use) at a particular moment in a weblogic connection pool ? Thanks a lot ! And sorry for my poor english... Jerome.
-
SharePoint Products Configuration Wizard - Configuration Failed at step 10 of 10
A little background information. I am simply trying to create a SharePoint Server on my laptop. I utilized the Microsoft Hyper-V Manager to create a Virtual Machine of which I have Windows Server 2012 R2 running. I have installed the SharePoint pr
-
Adding a solid state hard drive to a Mac Pro 3,1
I have two hard drives in my Mac Pro 3,1. I want to add a solid state hard drive and upgrade Yosemite to it. I will eventually use my existing drive as extra storage. Does anyone know if this model of Mac Pro can support SSD drive? Also, can I mi
-
Spotlight constantly indexing (mds Abort Trap)
A couple days ago I noticed in top that mds kept cycling through pids, getting into the 2000-3000 range within an hour of bootup. I checked the system log and noticed this message occuring prior to the problem: Nov 18 12:03:00 Optimus-Prime launchd: