Forms, Excel and Blob
Hi,
I'm developing a web application in forms6i that must generate an excel file and then stored it in a blob field. I've gotten to generate the excel file with ole2 package but the ora-305500 error is raised when I deploy it to application server, if I install the excel application on the application server, will it work fine?
Supposing it works, the file was generated correctly on the application server, how can I transform this file that is located on the application server in a blob variable and store it into database that is located in another machine?
I'm trying to find a solution to avoid a utilization of webutil, because I didn't find a webutil for forms6i.
Please, can anyone help me?
Thanks!
Thanks for your quickly answer Rejesh Alex,
Then I'll can generate the excel file on application server, but I won't show it to client, ok? I decided to not show de excel file to client, I want to generate it and store it into database blob field, is it possible? Considering that the application server and database server are different machines. I tried to use BFILENAME function to do this, but it expects a parameter that is a directory created in database server, but I need to load a file created in application server.
Similar Messages
-
Export table rows to Excel and save to BLOB field
Hi all,
I try to find out how export data from table to Excel file format and save the result to BLOB field in some other table.
I know how to download report from Page by submit, but I need to process data and instead of returning result to user as Excel file - save it in BLOB.
Also I found implementation on JAVA for the issue but actually I wanna study out - Is it possible to resolve this issue by PL/SQL and APEX API methods?
So, any ideas :) ??
Thanks,It is not very difficult.
Here is the function I use to get a CSV file from a query :
PROCEDURE get_query_result_as_csv_file(
in_query IN VARCHAR2,
in_filename IN VARCHAR2)
IS
l_blob BLOB;
l_raw RAW(32767);
l_cursor INTEGER;
l_cursor_status INTEGER;
l_col_count NUMBER;
l_col_val VARCHAR2(32767);
l_desc_tbl sys.dbms_sql.desc_tab2;
BEGIN
-- create temporary BLOB
dbms_lob.createtemporary(l_blob, FALSE);
-- open BLOB
dbms_lob.open(l_blob, dbms_lob.lob_readwrite);
-- open cursor (and get cursor id)
l_cursor := dbms_sql.open_cursor;
-- parse query
dbms_sql.parse(l_cursor, in_query, dbms_sql.native);
-- get number of columns and description
dbms_sql.describe_columns2(l_cursor, l_col_count, l_desc_tbl);
-- define report columns
FOR i IN 1 .. l_col_count LOOP
dbms_sql.define_column(l_cursor, i, l_col_val, 32767);
END LOOP;
-- write column headings to CSV file
FOR i IN 1 .. l_col_count LOOP
l_col_val := l_desc_tbl(i).col_name;
IF i = l_col_count THEN
l_col_val := '"' || l_col_val || '"' || chr(10);
ELSE
l_col_val := '"' || l_col_val || '",';
END IF;
l_raw := utl_raw.cast_to_raw(l_col_val);
dbms_lob.writeappend(l_blob, utl_raw.length(l_raw), l_raw);
END LOOP;
-- execute the query
l_cursor_status := dbms_sql.execute(l_cursor);
-- write result set to CSV file
LOOP
EXIT WHEN dbms_sql.fetch_rows(l_cursor) <= 0 OR dbms_sql.last_row_count > 1000;
FOR i IN 1 .. l_col_count LOOP
dbms_sql.column_value(l_cursor, i, l_col_val);
IF i = l_col_count THEN
l_col_val := '"' || l_col_val || '"' || chr(10);
ELSE
l_col_val := '"' || l_col_val || '",';
END IF;
l_raw := utl_raw.cast_to_raw(l_col_val);
dbms_lob.writeappend(l_blob, utl_raw.length(l_raw), l_raw);
END LOOP;
END LOOP;
-- close cursor and BLOB
dbms_sql.close_cursor(l_cursor);
dbms_lob.close(l_blob);
-- set http headers
owa_util.mime_header('application/octet', FALSE);
htp.p('content-length: ' || dbms_lob.getlength(l_blob));
htp.p('content-disposition: attachment;filename="' || in_filename || '.csv"');
owa_util.http_header_close;
-- download the file
wpg_docload.download_file(l_blob);
END;If you need to get the query dynamically from your report, you can try to get the source from the apex_application_page_regions table :
SELECT region_source
FROM apex_application_page_regions
WHERE application_id = 111 -- replace with your application id
AND static_id = 'static_id_of_your_report'Then instead of using wpg_docload.download_file, simply insert the BLOB into your table.
Good luck.
Yann. -
Import from Excel and then again save back excel; using Form 6i in apps.??
Hi,
I need to do following ;
Unix OS :- here exel files is present
Forms:- Need to read those excel from unix system and if require modify it in the apps form itself and then validate those and then place it again in the unix system.
This need to implement in oracle apps. Any idea how to do?
SubirNo..!!!
The actual requirment is ;
there are files stored in the Unix OS.
Currently we need to validate and then transfer one by one.
During validation if any error is occur then user want to modify during validation only; he dont want to back to the excel file and modify.
So here; if validation failed, then need to open that excel files from oracle form and the modify the error, and then saved it.
Rg,
Subir -
I'm assuming that Automator is the way to go. I've never used it before but from research it seems to be the way to go. Also, I'm not good at programming at all.
Here's a typical email...
From: [email protected]
Subject: Enquiry for Property ID: 408777039, 2 Grey Avenue, Manningham, SA 5086, Listing Agent
Date: 18 September 2013 8:33:51 PM ACST
To: Joe Jope
Reply-To: [email protected]
You have received a new lead from realestate.com.au for
Property id: 408587036
Property address: 2 Grey Avenue, Manningham, SA 5086
Property URL: www.realestate.com.au/404387039
User Details:
Name: John Bon Jovi
Email: [email protected]
Phone: 0422645633
I would like to: buy this house
Comments: Please give me a call.
I have several hundred of these emails and I want to extract the information and then save it into my CRM which is Highrise (https://highrisehq.com). If it's too difficult to get it directly into Highrise then I'm aslo happy to extract the info into excel and the import into Highrise. However I do not want to have to run through that proceedure for every single email.
I'd really like some help on how to get Automator to do this for me. Or if not Automator.. any other suggestions?
Thanks.
JohnHello
You may try the following AppleScript script. It will ask you to choose a root folder where to start searching for *.map files and then create a CSV file named "out.csv" on desktop which you may import to Excel.
set f to (choose folder with prompt "Choose the root folder to start searching")'s POSIX path
if f ends with "/" then set f to f's text 1 thru -2
do shell script "/usr/bin/perl -CSDA -w <<'EOF' - " & f's quoted form & " > ~/Desktop/out.csv
use strict;
use open IN => ':crlf';
chdir $ARGV[0] or die qq($!);
local $/ = qq(\\0);
my @ff = map {chomp; $_} qx(find . -type f -iname '*.map' -print0);
local $/ = qq(\\n);
# CSV spec
# - record separator is CRLF
# - field separator is comma
# - every field is quoted
# - text encoding is UTF-8
local $\\ = qq(\\015\\012); # CRLF
local $, = qq(,); # COMMA
# print column header row
my @dd = ('column 1', 'column 2', 'column 3', 'column 4', 'column 5', 'column 6');
print map { s/\"/\"\"/og; qq(\").$_.qq(\"); } @dd;
# print data row per each file
while (@ff) {
my $f = shift @ff; # file path
if ( ! open(IN, '<', $f) ) {
warn qq(Failed to open $f: $!);
next;
$f =~ s%^.*/%%og; # file name
@dd = ('', $f, '', '', '', '');
while (<IN>) {
chomp;
$dd[0] = \"$2/$1/$3\" if m%Link Time\\s+=\\s+([0-9]{2})/([0-9]{2})/([0-9]{4})%o;
($dd[2] = $1) =~ s/ //g if m/([0-9 ]+)\\s+bytes of CODE\\s/o;
($dd[3] = $1) =~ s/ //g if m/([0-9 ]+)\\s+bytes of DATA\\s/o;
($dd[4] = $1) =~ s/ //g if m/([0-9 ]+)\\s+bytes of XDATA\\s/o;
($dd[5] = $1) =~ s/ //g if m/([0-9 ]+)\\s+bytes of FARCODE\\s/o;
last unless grep { /^$/ } @dd;
close IN;
print map { s/\"/\"\"/og; qq(\").$_.qq(\"); } @dd;
EOF
Hope this may help,
H -
Mass Master data Upload from MS Excel and JDE into SAP ( ECC 6.0)
Hi
We are deciding the best method of uploading 2 million fixed assets Master data from Excel and JDE
We are following Batch Input (RAALTD001) and Direct Input methods (RAALTD11)
I am looking for some other efficient alternative for this upload
Look forward ot hear form you experts !!
Thanks
Milindhi
good
both works not possible simultaneously.
If you want to do it in two separate task than you can use the GUI_UPLOAD function module to fulfill your requirement.
thanks
mrutyun^ -
How to deploy Forms, Reports and Menu from Client to Server machine
Dear Experts,
I have one requirement to deploy the Forms, Reports and Menu from client machine to server machine.
Deployment involves the following steps :
1. Firstly we have to search the selected file in a folder where the .fmx is present ( in Server machine) and take the back up of the the existing file in the server (Source and destination paths will be available).
Ex. If the existing FMB name is TEST.fmx then the backup file should be TEST_sysdate.fmx.
2. Secondly we have to transfer the file from the client folder (or from another folder of the same server) to the server folder where the back up exists.
Please help me to search/rename/copy/replace the _.fmx/.rdf/.rep/.mmx_ files from client to server.
We are using
9i Database.
10g Forms and reports.
SQL Developer tool.
OS is Windows (Client and Server).
Help me out to attach a file of front end screen which we are planning to develop. It will give a clear picture on this requirement.
Thanks :)
Edited by: 941175 on Jun 17, 2012 9:09 AM
Edited by: 941175 on Jun 17, 2012 9:12 AM
Edited by: 941175 on Jun 17, 2012 9:14 AM941175
Welcome to the forum. Please take a while to go through the FAQ to be found to the top right of the page.
Your issue is more to do with batch files rather than Forms. The only relation with Forms, as I see it, is that you will be using HOST/CLIENT_HOST to start a batch file with the file name to be deployed as a parameter passed to it.
You need to rewrite either a CMD batch file or a Powershell script to achieve what have set out to do.
For CMD batch files look up http://www.robvanderwoude.com/battech.php , or any of the other excellent resources available on the internet.
Regards, -
Missing Header Row When Exporting Data to Excel and Program Runs Slow
Hello all,
I am new to programming. I’ve dabbled with VB.NET at times over the years but this is the first time I’m trying C#. Although, it’s been quite a while since I’ve done any type of programming other than writing SQL queries at work. For the sake of trying to
learn I have given myself a project that is something I can actually use at work. Right now I'm doing it at home. I’m querying a database on SQL Server 2008 R2; putting the data from the DB into a DataViewGrid and then exporting the data into Excel and saving
the file on my C:\ drive. On the form I have two buttons; one that queries the DB and the other to do the export. The code below does work but I have two issues that I need assistance with:
All of the SQL table data goes into Excel properly with the exception of it is missing the header row.
After I click the Export button it takes a long time to create the Excel file. It takes between 2.5 and 3 minutes. It is not a big file (only 447 rows and 125 KB in size) so I don’t know why it takes so long. Does it have anything to do with the number
of times Microsoft.Office.Interop.Excel is being referenced? I read somewhere online that is an old COM method although I’m not familiar with what a COM method is
and why it would make things run so slow.
When I click the button to run the SQL query and load the DataGridView it runs immediately.
I plan on taking this project further such as adding date parameters including validation on the dates and then maybe adding buttons that can be used to insert, update and delete records. But I don’t want to go any further until the two issues mentioned
above are resolved. Any assistance / guidance will be greatly appreciated. Here’s the code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using Exccel = Microsoft.Office.Interop.Excel;
using System.IO;
namespace Bills_DB_DataGridView
public
partial
class
Form1 :
Form
SqlCommand sqlCMD;
SqlDataAdapter sqlDA;
SqlCommandBuilder sqlCB;
DataSet sqlDS;
DataTable sqlDT;
public Form1()
InitializeComponent();
private
void btnExit_Click(object sender,
EventArgs e)
this.Close();
private
void btnLoad_Click(object sender,
EventArgs e)
string sqlCon =
"Data Source = localhost\\DAVE_DB; Initial Catalog=Bills;Integrated security = true;";
string sqlQry =
"SELECT * FROM Acct ORDER BY Name, PaymentDate";
SqlConnection connection =
new
SqlConnection(sqlCon);
connection.Open();
sqlCMD = new
SqlCommand(sqlQry, connection);
sqlDA = new
SqlDataAdapter(sqlCMD);
sqlCB = new
SqlCommandBuilder(sqlDA);
sqlDS = new
DataSet();
sqlDA.Fill(sqlDS, "Acct");
sqlDT = sqlDS.Tables["Acct"];
connection.Close();
dataGridView1.DataSource = sqlDS.Tables["Acct"];
dataGridView1.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
private
void btnExport_Click(object sender,
EventArgs e)
Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
Int32 i, j;
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (i = 0; i <= dataGridView1.RowCount - 2; i++)
for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
xlWorkSheet.Cells[i + 1, j + 1] = dataGridView1[j, i].Value.ToString();
xlWorkSheet.Cells[1, 2].EntireColumn.NumberFormat = "@";
//Format column 2 to text
xlWorkSheet.Cells[1, 2].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
xlWorkBook.SaveAs(@"c:\Bills\Bills.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
private
void releaseObject(object obj)
try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
catch (Exception ex)
obj = null;
MessageBox.Show("Exception Occured while releasing object "
+ ex.ToString());
finally
GC.Collect();
Thank you,
Dave
David YoungHello again Kristin,
I tried the code snippet to include the headers in the Excel file but it didn't work for me. Maybe I put the code in the wrong place? Again I have put the code below including where I placed the snippet. I get no error message and the application runs. Am
I doing something wrong?
Thank you,
Dave
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using Exccel = Microsoft.Office.Interop.Excel;
using System.IO;
namespace Bills_DB_DataGridView
public partial class Form1 : Form
SqlCommand sqlCMD;
SqlDataAdapter sqlDA;
SqlCommandBuilder sqlCB;
DataSet sqlDS;
DataTable sqlDT;
public Form1()
InitializeComponent();
private void btnExit_Click(object sender, EventArgs e)
this.Close();
private void btnLoad_Click(object sender, EventArgs e)
string sqlCon = "Data Source = localhost\\DAVE_DB; Initial Catalog=Bills;Integrated security = true;";
string sqlQry = "SELECT * FROM Acct ORDER BY Name, PaymentDate";
SqlConnection connection = new SqlConnection(sqlCon);
connection.Open();
sqlCMD = new SqlCommand(sqlQry, connection);
sqlDA = new SqlDataAdapter(sqlCMD);
sqlCB = new SqlCommandBuilder(sqlDA);
sqlDS = new DataSet();
sqlDA.Fill(sqlDS, "Acct");
sqlDT = sqlDS.Tables["Acct"];
connection.Close();
dataGridView1.DataSource = sqlDS.Tables["Acct"];
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
private void btnExport_Click(object sender, EventArgs e)
Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
Int32 i, j;
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
// storing header part in Excel
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (int h = 1; h < dataGridView1.Columns.Count + 1; h++)
if (dataGridView1.Columns[h - 1].Visible)
xlWorkSheet.Cells[1, h] = dataGridView1.Columns[h - 1].HeaderText;
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (i = 0; i <= dataGridView1.RowCount - 2; i++)
for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
xlWorkSheet.Cells[i + 1, j + 1] = dataGridView1[j, i].Value.ToString();
xlWorkSheet.Cells[1, 2].EntireColumn.NumberFormat = "@"; //Format column 2 to text
xlWorkSheet.Cells[1, 2].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
xlWorkBook.SaveAs(@"c:\Bills\Bills.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
private void releaseObject(object obj)
try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
catch (Exception ex)
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
finally
GC.Collect();
David Young -
Can we have the interface between microsoft excel and adobe illustrator
Can we have the interface between microsoft excel and adobe illustrator?
Feature Request/Bug Report Form
That aside, have you actually already explored variables or the graph tools?
Mylenium -
Converting alv list to excel and send to sapoffice or mail in batch mode
Hi every one.
I have the alv list and then I can send to sapoffice or mail in batch mode.
If I open the list in Sapoffice I can save the list in XLS format or if I open the list by mail, I can select all the content (because is a html file), select the copy option and then open EXCEL and paste the content.
Can I use an option to convert the alv list to an excel format and then send to mail or sapconnect in batch mode?if your requirement is to send a Excel sheet by Email then use this sample program.
*& Report ZEMAIL_ATTACH *
*& Example of sending external email via SAPCONNECT *
REPORT ZEMAIL_ATTACH .
TABLES: ekko.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT '[email protected]'.
TYPES: BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
END OF t_ekpo.
DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
wa_ekpo TYPE t_ekpo.
TYPES: BEGIN OF t_charekpo,
ebeln(10) TYPE c,
ebelp(5) TYPE c,
aedat(8) TYPE c,
matnr(18) TYPE c,
END OF t_charekpo.
DATA: wa_charekpo TYPE t_charekpo.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
SELECT ebeln ebelp aedat matnr
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekpo.
ENDFORM. " DATA_RETRIEVAL
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT it_ekpo INTO wa_charekpo.
CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
wa_charekpo-aedat wa_charekpo-matnr
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Please find attached a list test ekpo records'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY
- Guru -
Retrieve image file from FORMS 10G using BLOB
Dear all,
i inserted one record in a table for the following procedure.
Create Or Replace Procedure Blob_Xl Is
l_blob Blob;
l_bfile Bfile;
Begin
Insert Into LOB_TABLE Values ( 'TEST1', Empty_Blob() )
Returning BLOBDATA Into l_blob;
l_bfile := Bfilename( 'TEST1', 'I.JPG');
dbms_lob.fileopen( l_bfile,dbms_lob.file_readonly );
dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) );
dbms_lob.fileclose( l_bfile );
Commit;
End Blob_Xl;
after that
record also inserted, i check thro count.
i try to retrieve that image from that table for using following procedure, in that procedure i called from one button in forms 10g and wrote in when button pressed , when i clicked it wont show any images.
where i am wrong?
Create Or Replace Procedure get_img As
vblob Blob;
buffer Raw(32000);
buffer_size Integer := 32000;
offset Integer := 1;
Length Number;
Begin
owa_util.mime_header('image/JPG');
Select BLOBDATA Into vblob From LOB_TABLE Where No = 'TEST1';
Length := dbms_lob.getlength(vblob);
While offset < Length Loop
dbms_lob.Read(vblob, buffer_size, offset, buffer);
htp.prn(utl_raw.cast_to_varchar2(buffer));
offset := offset + buffer_size;
End Loop;
Exception
When Others Then
htp.p(Sqlerrm);
End;
/hi
try something like this for retrieve.May it helps u.
DECLARE
directions CLOB;
directions_1 VARCHAR2(300);
directions_2 VARCHAR2(300);
chars_read_1 BINARY_INTEGER;
chars_read_2 BINARY_INTEGER;
offset INTEGER;
BEGIN
--Retrieve the LOB locator inserted previously
SELECT falls_directions
INTO directions
FROM waterfalls
WHERE falls_name='Munising Falls';
--Begin reading with the first character
offset := 1;
--Attempt to read 229 characters of directions, chars_read_1 will
--be updated with the actual number of characters read
chars_read_1 := 229;
DBMS_LOB.READ(directions, chars_read_1, offset, directions_1);
--If we read 229 characters, update the offset and try to
--read 255 more.
IF chars_read_1 = 229 THEN
offset := offset + chars_read_1;
chars_read_2 := 255;
DBMS_LOB.READ(directions, chars_read_2, offset, directions_2);
ELSE
chars_read_2 := 0;
directions_2 := '';
END IF;
--Display the total number of characters read
DBMS_OUTPUT.PUT_LINE('Characters read = ' ||
TO_CHAR(chars_read_1+chars_read_2));
--Display the directions
DBMS_OUTPUT.PUT_LINE(directions_1);
DBMS_OUTPUT.PUT_LINE(directions_2);
END;
sarah
Edited by: S@R@h on Oct 7, 2009 11:29 PM -
Integrated Excel and VB Macros...Problems
Hi,
We are running MAP transactions (RETAIL) that use integrated Excel for planning purposes. Once we open the transaction we have access to an excel application where we maintain data.
The problem is that we are trying to use some complex VB macros to validate online entries, but we are facing problems if we call the Excel from SAP (The file runnning on its own works fine):
- The events WORKBOOK.OPEN or AUTOOPEN do not seem to run. I need to run a macro when the workbook is started form SAP;
- I've been getting runtime erros and some are related to this: ACTIVECELL = nothing (?).
Have you found similar problems?
Where can I find VB programing guidelines for Integrated Excel in SAP.
Thanks
Leonardo De AraujoHi Tarun,
you are in the wrong forum. You are using the R/3 based Retail solution, this is based on the CO Planningprocessor Excel integration, it is not based on SEM or
BW-BPS. So you can not find the BPS predefined VBA macro exits.
In the R/3 solution there exist no predefined VBA macro exits. But you can add your code more or less at the same 'events':
- the backend triggers the SAP makros via Sub R3MacrosExecute() at each PAI, PBO cycle
- Sub R3PutValuesEnd() is called when the system has filled Excel with data at the end of the PBO cycle; here you can do adjustments and add your macros
- Sub R3GetRangesSingle is called at the beginning of the PAI cycle to the read the data from Excel and to do the transfer to the backend
- active cell problem: SAP makros to not set a selection explicitly, you can do this in your makro, e.g. the first data cell or first input ready cell
To implement a kind of 'validation' I suggest to trigger the check via Excel button; the problem is you can not control the PBO, PAI cycle from Excel, i.e. you can send error pop-up in Excel but you can not stop the PAI cycle. So you can not implement a real error handling.
Regards,
Gregor -
Upgrade from 11i to R12 - Custom Forms,Reports and Workflows
Dear Community Friends,
We are planning for upgrade from oracle apps 11.5.10.2 to R12.
We have custom Forms,Form Libraries,Reports and Workflows.
Kindly provide me for approach on how to migrate Custom form libraries,reports and Workflows.
I beleive, this thread will exists as one shot point for custom forms,reports,workflow upgradation from 11i to r12 with detailed steps.
I know that many links exists here in the forum for all the above objects mentioned,but still from all those i am able to get a clear picture for oracle forms but not for custom form libraries ,reports and workflows.
Also,this post will provide a low level,practical picture of the steps for those who are in line with this.
Links i have read for all these in our forum are:
For Custom Forms,
Re: Planning to upgrade from 11i to R12
Re: Custom forms: After upgrading 11i to R12
ofcourse,'n' number of links exists providing metalink notes also.
Hussain,Helios and some others also has given many updates regd this.
For custom workflow upgradation,
Upgrade Workflow 11i to R12
Workflow Upgrade
Workflow Upgrade
For reports,links mentioned the below metalink notes:
Do Not Compile EBS R12 Reports Using rwconverter.sh or Reports Builder from IDS 10gR2 [ID 786794.1]
Using the OracleAS 10.1.2 Forms and Reports Builders with Oracle Applications Release 12 [ID 444248.1]
Per my understanding, after searching in many threads,i am here by summarising the practical low level steps for custom forms migration
Please correct me,if i am wrong.
1) Download the Forms(.fmb's) and all PLL's(all the PLL from resource folder in AU_TOP) into a Local Machine Folder
2) Open the forms using Forms Developer 10G and connect to DB
3) Compile by clicking compilein Forms Developer and then save it.
4) Upload the Saved Forms(.fmb's) into the new R12 server(system) in the respective custom paths(paths similar to 11i Server)
5) Compile all the forms using the command like below(example command is shown below or f60 gen commands or frmcmp.sh utility) in the respective custom form paths,
this will generate the .fmx's.
frmcmp_batch module=FORMNAME.fmb userid=apps/apps output_file=FORMNAME.fmx compile_all=yes
Link for compiling forms: https://support.oracle.com/epmos/faces/ui/km/SearchDocDisplay.jspx?_afrLoop=359210362972527&type=DOCUMENT&id=1085928.1&displayIndex=3&_afrWindowMode=0&_adf.ctrl-state=c348xvwbg_98
6) Open the form and check in R12 instance
As per my understanding for custom form libraries,we can just copy paste the PLL's from 11i server to R12 server (Please correct me,if i am wrong)
Can anyone please help me out in custom reports and custom workflows.Sorry that,i could not get a practical and clear picture for reports and also for workflow even after referring many threads and metalink notes mentioned.
As for reports,some says that Developer Suite 10g can be used and .rdf can be used in R12.
Some says that reports should be converted to XML published as reports does not exists in R12.
So,i am not clear on this.
Thanks,
Ganesh
[email protected]Per my understanding, after searching in many threads,i am here by summarising the practical low level steps for custom forms migration
Please correct me,if i am wrong.
1) Download the Forms(.fmb's) and all PLL's(all the PLL from resource folder in AU_TOP) into a Local Machine Folder
2) Open the forms using Forms Developer 10G and connect to DB
3) Compile by clicking compilein Forms Developer and then save it.
4) Upload the Saved Forms(.fmb's) into the new R12 server(system) in the respective custom paths(paths similar to 11i Server)
5) Compile all the forms using the command like below(example command is shown below or f60 gen commands or frmcmp.sh utility) in the respective custom form paths,
this will generate the .fmx's.
frmcmp_batch module=FORMNAME.fmb userid=apps/apps output_file=FORMNAME.fmx compile_all=yes
Link for compiling forms: https://support.oracle.com/epmos/faces/ui/km/SearchDocDisplay.jspx?_afrLoop=359210362972527&type=DOCUMENT&id=1085928.1&displayIndex=3&_afrWindowMode=0&_adf.ctrl-state=c348xvwbg_98
6) Open the form and check in R12 instance
As per my understanding for custom form libraries,we can just copy paste the PLL's from 11i server to R12 server (Please correct me,if i am wrong)You are right, and the steps mentioned above should be sufficient.
Can anyone please help me out in custom reports and custom workflows.Sorry that,i could not get a practical and clear picture for reports and also for workflow even after referring many threads and metalink notes mentioned.
As for reports,some says that Developer Suite 10g can be used and .rdf can be used in R12.
Some says that reports should be converted to XML published as reports does not exists in R12.
So,i am not clear on this.You can still use RDF files in R12, and just follow the approach you mentioned above, and you do not have to migrate them to XML publisher (though it is recommended, but this can be done after the upgrade as an enhancement task).
For custom workflow, you need also to do the same thing, open them using workflow builder and make sure they work in R12 (correct the code if required and save them again in R12 once they work properly).
Thanks,
Hussein -
Occasional ora-6502 using forms 6i and 10g
Hi all.
We have been experiencing some weird and unexpected ora-6502 errors in some of our forms 6i modules running against 10g (rel 1 or 2).
Forms modules are correctly functioning and for some reason, one day an ora-6502 error suddenly pops up.
Now the weirdest thing is that after you put some messages on the trigger, so you can track down where the error is coming from, it disappears.
I know that this may sound hard to believe, but it has happened several times. All we do is put some message built in, recompile all, and the error is gone (for a while).
So my questions are:
- Is this a known issue beween forms 6i and 10g Db?.
- Is there a patch on Metalink ( we use Forms [32 bits] Versión 6.0.8.26.0 (Producción))
- A workaround?
and most important
- Have anyone been exposed to a similar situation?
Regards, Luis ...!Now the weirdest thing is that after you put some messages on the trigger, so you can track down where the error is coming from, it disappears.Sounds like the form has not been "clean compiled" against the server on which it is running. Try a "Compile All", which causes all previously compiled program units to be compiled fresh.
Or even better, clean out all the compiled code from your fmb before compiling the fmb on the server where it runs.
See this topic: Re: Why does this happen - find ';', replace with ';'? -
i want to use Oracle text (context index) for searching and oracle text is the best way .. but not im using form 6i and DB 10g R 2. my question is is thier any problem i will face it later while doing my system using context index ?? for example i will use CTXddl package .. can i use it in form 6i or i cant ???
regards,The first and most significant problem you are faced with is that Forms 6.0.8 is not supported to be used with Oracle 10.2.x. The second problem is that Forms 6.0.8 is obsolete and not supported any longer. Consider upgrading to the latest version before developing new applications. The latest version is included in Developer Suite and Application Server 10.1.2.0.2 (10.1.2.3 with the latest patches installed).
-
License for Oracle Forms 6i and Oracle Reports 6i
Hai there,
May I know if I can buy a license for 2 users for the development tools Forms 6i and Reports 6i.
How do I go ahead and buy the license on line. Where do I contact.
Please give me the details.
Thanks in advance.
ElizabethPlease be aware that this version of Forms is desupported in one months time.
You can download the software from otn but you should contact your Oracle Account Manager about licensing.
Regards
Grant Ronald
Forms Product Management
Maybe you are looking for
-
User tracking problem - lms 3.2
Noticed a pretty weird one. LMS 3.2 on windows 2008. Everything had been running normally. A while back we noticed the user tracking tables diminishing, and found out it was due to a bug in the code we were running on our 4500s. So we started an upgr
-
Upgrade CUCM 9.1 (BE6K) to CUCM 10.5
Hi All, We are facing the process to update CUCM and I&M on a BE6K platform from 9.1 version to the latest one (CUCM 10.5), The UCSS is still valid. Could someone put us on the right direction? Is Expressway Core and Edge already included if my CUCM
-
Hi All , As i have not done something like this before i have forced my self to ask all you, please guide me. I have 2 tabbed form , 1 tab is displaying data in tabular format and another tab in Form format. 2nd tab is wider than 1st one. So can anyo
-
Will fcp5 work on snow leopard?
I had Final Cut Pro 5 installed on my laptop and it worked fine for when I was just running leopard, when I upgraded to snow leopard the program would no longer open (I forget when the exact error message was, something on the lines of "can not open,
-
Hi all, dreaded but simple media management question here concerning rendered effects. Lynda.com has no tutorial on this matter... How do I manage them? Assume scratch disk, rendered audio/video, autosaves, etc, are all on the same drive, everything