Comma-delimited field values
Hello all,
Hope someone can help... :-)
I've been trying to put values from a comma-delimited
Database field into variables...
The field is called "Related_Products" and I can pull the
recordset fine... it's just the part of looping through the
comma-delimited field and placing them in variables that's killing
me...
The field will contain up to 6 comma-delimited values at
most.
And if the recordset field has 5 comma-delimited values... I
want 5 variables.. 2 comma-delimited values then 2 variables, etc.
<cfquery name="getRelatedProducts"
datasource="fikestudioDB">
SELECT New_category_dataport.Category_DataPort_Id,
New_category_dataport.Name, New_category_dataport.Hide,
New_category_dataport.Thumbnail, New_category_dataport.Sort_Order,
category_details.CategoryID, category_details.Related_Products
FROM New_category_dataport LEFT JOIN category_details ON
New_category_dataport.Category_DataPort_Id =
category_details.Category_DataPort_Id
WHERE (((category_details.CategoryID)=#URL.productID#))
</cfquery>
<!--- define and set variable --->
<cfparam name="ProductList" default="">
<cfset ProductList=getRelatedProducts.Related_Products
/>
<!--- define variables for however many comma-delimited
values exist.. up to 6 --->
<CFLOOP INDEX="i" LIST="#ProductList#" DELIMITERS=",">
<cfset variable1="">
<cfset variable2="">
... up to 6 values
</CFLOOP>
Hope someone can help :-)
Thanks so much,
John
Thanks for your help Sankalan...
But, when I use your code as such :
<!--- define variables for however many comma-delimited
values exist.. up to 6 --->
<CFLOOP INDEX="i" LIST="#ProductList#" DELIMITERS=",">
<cfset "variable_#i#"="">
</CFLOOP>
<cfoutput>
#variable_1#
</cfoutput>
and hoping for something like :
variable_1 = a
variable_2 = b
variable_3 = c
variable_4 = d
variable_5 = e
variable_6 = f
Variable_1 is undefined...
I think it's putting the value of the field in the variable
name and not of the value of variable_1 ........
think I need something like :
<CFLOOP INDEX="i" LIST="#ProductList#" DELIMITERS=",">
<cfset "variable_"="#i#">
</CFLOOP>
But not sure how to increment the variable name by 1 each
time ... like :
variable_1 = a
variable_2 = b
variable_3 = c
variable_4 = d
variable_5 = e
variable_6 = f
Hope this makes sense....
Thanks again,
John
Similar Messages
-
Import Format for Separte Debit and Credit Columns (comma delimited file)
I have a file that is comma delimited with a sparate debit column and a separate credit column:
Sample:
Ent,Acct,description,Dr,Cr
,1000,test,100,
,110010,another test,,100
My import format is this:
Comma delimited
Field Number Number of Fields Expression
Entity 1 5 SGB_ABC
Account 2 5
Amount 5 5 Script=DRCRSplit_Comma_Del.uss
I've tried writing the following script to pull the amount from the debit column into the credit column but it just skips the lines with no amount in field 5.
'Declare Variables
Dim Field4
Dim Field5
'Retrieve Data
Field4 = DW.Utilities.fParseString(strRecord, 4, 4, ",")
Field5 = DW.Utilities.fParseString(strRecord, 5, 5, ",")
'If Field4 has a value then fld 5 is to equal fld 4.
If IsNumeric(Field5) Then
Field5 = Field5
Else
Field5 = Field4
End If
'Return Result into FDM
SQFLD5 = Field5
End Function
Can anyone tell me what I am doing wrong?
Thanks!I got it to work using this script:
Function DRCR_Comma_Del(strField, strRecord)
'Hyperion FDM DataPump Import Script:
'Created By: testuser
'Date Created: 7/22/2009 9:31:15 AM
'Purpose: If Amount is in the DR column move it to the CR amount column.
Dim DR
Dim CR
DR = DW.Utilities.fParseString(strRecord, 5, 4, ",")
CR = DW.Utilities.fParseString(strRecord, 5, 5, ",")
If IsNumeric(DR) Then
strField = DR
Else
strField = "-" & CR
End If
DRCR_Comma_Del = strField
End Function -
Form field with comma delimited value list to cfc
I have a form that passes a field to an action page with a
comma delimited value.
For instance the field name is: Program_ID
value for program_ID is: 31, 32
I am able to treat this variable as a list and check its
length, and loop over the list prior to passing it to a cfc using
the attached code:
When I try and pass the variable as a string to a cfc and
invoke a query, cf no longer recognizes my var as a list.
Therefore the code attached does not function...
Is there a specific var type that will pass through as a list
and allow me to run the code block attached?
thanks
CraigOk answered my own question.. Here is the answer for those
who are interested...
initialize var for cfc in cfinvoke statement
<cfinvokeargument name="Program_ID"
value="#Form.Program_ID#">
pass argument to cfc as a string
<cfargument name="Program_ID" type="string"
required="true">
use listqualify to parse list in cfc and set new var
<cfset selectedProgramID =
ListQualify(Program_ID,"'",",","CHAR")>
use the new var in the following statement in sql code:
((Program_ID) IN (#PreserveSingleQuotes(selectedProgramID)#))
The following code handles a form field with a single value
or a comma delimited value. -
SQL to match a single value in a field with comma-delimited text
I have a column that can contain none, one or many recordIDs
(from another table) stored as comma-delimited text strings (i.e.,
a list). I need to retrieve all records that match a single value
within that list.
For example, if I want to match all values that equal
recordID 3, and I use ... WHERE MyColumn IN ('3') ... , I will get
all records that have EXACTLY 3 as the value of MyColumn, but not
any MyColumn records whose values include 3, if they are instances
such as "3,17" or the like.
Also using the LIKE operator -- as WHERE MyColumn LIKE '%3%'
-- will get me unwanted records with values such as 35 or 13 ...
Can I use some sort of intervening ColdFusion list processing
to output only the desired records?Normalize your database so that your data becomes
accessible. -
DRM Function to divide comma delimited string to list value
Hi
Any one knows how to seperate comma delimited string into list values.
ThanksAre you wanting to dynamically set the list values for a property? If so there are a couple options:
1. You can update them via the API.
2. You can write a sql script to update the table Property_List. This requires an application server restart and generally isn't recommended for support reasons but it makes sense in some instances.
Edited by: Naren Truelove on 16/02/2011 22:08 -
Is it possible to convert a table of values into a comma-delimited-list?
Hi,
I'd like to turn the following dataset:
Parent | Child
Charles | William
Charles | Harry
Anne | Peter
Anne | Zara
Andrew | Beatrice
Andrew | Eugenie
into this:
Parent | Children
Charles | Diana,Camilla
Anne | Peter,Zara
Andrew | Beatrice,Eugenie
In other words, I'd like to take a list of values pertaining to some key and produce them as a comma-delimited-list.
I know its is possible in T-SQL although the method is a bit of a nasty hack. Is it possible in PL-SQL?
Thaks in advance
JamieHi,
With model clause (10g)
with t as(
select 'Charles' parent, 'William' child from dual union
select 'Charles', 'Harry' from dual union
select 'Anne', 'Peter' from dual union
select 'Anne', 'Zara' from dual union
select 'Andrew', 'Beatrice' from dual union
select 'Andrew', 'Eugenie' from dual
select parent,substr(res,2) res
from t
model
return updated rows
partition by ( parent)
dimension by ( row_number()over(partition by parent order by child) rn)
measures(child, cast( null as varchar2(4000)) as res)
rules
iterate(100000)
until(presentv(res[iteration_number+2],1,0)=0)
( res[0]=res[0]||','||child[iteration_number+1]);
PARENT RES
Anne Peter,Zara
Andrew Beatrice,Eugenie
Charles Harry,William
3 rows selected. -
Regular Expression to Search Comma Delimited File for any of 3 Values
Hi,
I'd like to parse a table column that contains a comma delimited string for any of 3 values, 1200, 1400, 1600 just to see if they're present using Regexp_instr. If someone has an expression available please pass it along.
Thanks,
VictorOr you could do it like this too...
SQL> ed
Wrote file afiedt.buf
1 with t as (select 1 as id, '1000,2000,3000' as txt from dual union all
2 select 2, '1200,1300,1400' from dual union all
3 select 3, '1000,1300,1600' from dual)
4 -- end of test data
5 select *
6 from t
7* where regexp_like(txt,'(^|,)(1200|1400|1600)(,|$)')
SQL> /
ID TXT
2 1200,1300,1400
3 1000,1300,1600 -
REGEXP_SUBSTR for comma delimited list with null values
Hi,
I have a column which stores a comma delimited list of values. Some of these values in the list may be null. I'm having some issues trying to extract the values using the REGEXP_SUBSTR function when null values are present. Here are two things that I've tried:
SELECT
REGEXP_SUBSTR (val, '[^,]*', 1, 1) pos1
,REGEXP_SUBSTR (val, '[^,]*', 1, 2) pos2
,REGEXP_SUBSTR (val, '[^,]*', 1, 3) pos3
,REGEXP_SUBSTR (val, '[^,]*', 1, 4) pos4
,REGEXP_SUBSTR (val, '[^,]*', 1, 5) pos5
FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);
POS P POS P P
AAA BBB
SELECT
REGEXP_SUBSTR (val, '[^,]+', 1, 1) pos1
,REGEXP_SUBSTR (val, '[^,]+', 1, 2) pos2
,REGEXP_SUBSTR (val, '[^,]+', 1, 3) pos3
,REGEXP_SUBSTR (val, '[^,]+', 1, 4) pos4
,REGEXP_SUBSTR (val, '[^,]+', 1, 5) pos5
FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);
POS POS POS POS P
AAA BBB DDD FFFAs you can see neither of the calls works correctly. Does anyone know how to modify the regular expression pattern to handle null values? I've tried various other patterns but was unable to get anyone to work for all cases.
Thanks,
Martin
http://www.ClariFit.com
http://www.TalkApex.comHi, Martin,
This does what you want:
SELECT
RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 1), ',') pos1
,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 2), ',') pos2
,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 3), ',') pos3
,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 4), ',') pos4
,RTRIM (REGEXP_SUBSTR (val || ','
, '[^,]*,', 1, 5), ',') pos5
FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);The query above works in Oracle 10 or 11, but in Oracle 11, you can also do it with just REGEXP_SUBSTR, without using RTRIM:
SELECT
REGEXP_SUBSTR (val, '([^,]*),|$', 1, 1, NULL, 1) pos1
,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 2, NULL, 1) pos2
,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 3, NULL, 1) pos3
,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 4, NULL, 1) pos4
,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 5, NULL, 1) pos5
FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);The problem with your first query was that it was looking for sub-strings of 0 or more non-commas. There was such as sub-string. consisting of 3 characters, starting at position 1, so it returned 'AAA', as expected. Then there was another sub-string, of 0 characters, starting at position 4, so it returned NULL. Then there was a sub-string of 3 characters starting at position 5, so it returned 'BBB'.
The problem with your 2nd query was that it was looking for 1 or more non-commas. 'DDD' is the 3rd such sub-string.
Edited by: Frank Kulash on Feb 16, 2012 11:36 AM
Added Oracle 11 example -
Hi,
One my procedure's parameters is a PL/SQL table of id's (NUMBER) that the GUI sends it, based on the user's selections.
Now, I want to use the table's values in my select's where clause to return only the correct records.
However,
select ......
from ....
where id in (i_array_ids)
doesn't work of course, and my attempts of transfering the ids to a comma delimited list of numbers (as opposed to a lenghty varchar2 string) that could work between the ( ) have all failed.
ThanksAnd here's an example I gave with some more up-to-date syntax than in that old AskTom thread:
Re: DYNAMIC WHERE CLAUSE in PROCEDURE -
Using MISSING FIELD VALUES ARE NULL for external table
I want to place a null for values missing in the sub_account field. Here is my external table:
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_log_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\log';
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_bad_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\bad';
create table ext_INCOMING_ORDERS_table (
Account varchar(5),
Sub_Account varchar(1),
Override_Code varchar(1),
Nomenclature varchar(28),
chg_nbr varchar(3),
quantity integer,
U_I varchar(5),
zipcode varchar(5),
type_reject varchar(2)
organization external
type oracle_loader
default directory user_dir
access parameters
records delimited by newline
missing field values are null
badfile INCOMING_ORDERS_bad_dir:'INCOMING_ORDERS%a_%p.bad'
logfile INCOMING_ORDERS_log_dir:'INCOMING_ORDERS%a_%p.log'
fields
Account(1:5) char(5),
Sub_Account(7:7) char(1),
Override_Code(10:10) char(1),
Nomenclature(11:38) char(28),
chg_nbr(40:42) char(3),
quantity(44:48) integer external,
U_I(50:54) char(5),
zipcode(56:60) char(5),
type_reject(61:62) char(2)
location('PTCLICK.MANUAL.NOMEN.TXT','PTCLICK.ORDERS.TXT', 'EUR_RES.TXT', 'MQ.TXT', 'BPRO.TXT')
reject limit unlimited;
How can I place the MISSING FIELD VALUES ARE NULL for missing values for the sub_account?made the change I received this error:
SQL> select * from ext_INCOMING_ORDERS_table;
select * from ext_INCOMING_ORDERS_table
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-00554: error encountered while parsing access parameters
KUP-01005: syntax error: found "no": expecting one of: "comma, date_format,
defaultif, enclosed, ltrim, lrtrim, ldrtrim, notrim, nullif, optionally, ),
rtrim, terminated"
KUP-01007: at line 7 column 26
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_log_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\log';
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_bad_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\bad';
create table ext_INCOMING_ORDERS_table (
Account varchar(5),
Sub_Account varchar(1),
Override_Code varchar(1),
Nomenclature varchar(28),
chg_nbr varchar(3),
quantity integer,
U_I varchar(5),
zipcode varchar(5),
type_reject varchar(2)
organization external
type oracle_loader
default directory user_dir
access parameters
records delimited by newline
badfile INCOMING_ORDERS_bad_dir:'INCOMING_ORDERS%a_%p.bad'
logfile INCOMING_ORDERS_log_dir:'INCOMING_ORDERS%a_%p.log'
fields
Account(1:5) char(5),
Sub_Account(7:7) char(1) NO PRESERVE BLANKS,
Override_Code(10:10) char(1),
Nomenclature(11:38) char(28),
chg_nbr(40:42) char(3),
quantity(44:48) integer external,
U_I(50:54) char(5),
zipcode(56:60) char(5),
type_reject(61:62) char(2)
location('PTCLICK.MANUAL.NOMEN.TXT','PTCLICK.ORDERS.TXT', 'EUR_RES.TXT', 'MQ.TXT', 'BPRO.TXT')
reject limit unlimited; -
I've created an SSIS package to import a comma delimited file (csv) with double quotes for a text qualifier ("). Some of the fields contain the delimiter inside the qualified text. An example row is:
15,"Doe, John",IS2,Alabama
In SSIS I've specified the text qualifier as ". The sample output in the connection manager looks great. The package runs perfectly from VS and when manually executed on the SSIS server itself. The problem comes when I schedule the package to run via SQL
job. At this point the package ignores the text qualifier, and in doing so pushes half of a field into the next available column. But instead of having too many columns, it concatenates the last 2 columns ignoring the delimiter. For example (pipes are fields):
15|"Doe| John"|IS2,Alabama
So the failure happens when the last half of a field is too large to fit into the next available field. In the case above _John" is 6 characters where the IS2 field is char(3). This would cause a truncation failure, which is the error I receive from the
job history.
To further test this I created a failure flow in my data flow to capture the records failing to be pulled from the source csv. Out of ~5000 records, ~1200 are failing, and every one of the failures has a comma delimiter inside the quoted text with a 'split'
length greater than the next ordinal field. The ones without the comma were inserted as normal and records where the split fit into the next ordinal column where also imported, with the last field being concatenated w/delimiter. Example records when selected
from table:
25|"Allan Percone Trucking"|GI6|California --Imported as intended
36|"Renolds| J."|UI6,Colorado --Field position offset by 1 to right - Last field overloaded
To further ensure this is the problem, I changed the csv file and flat file connection manager to pipe delimited, and sure enough every record makes it in perfectly from the SQL job execution.
I've tried comma delimited on the following set ups. Each set up failed.
SSIS Server 2008 R2 RTM
DB Server 2008 RTM
DB Compat 80
SSIS Server 2008 R2 RTM
DB Server 2008 R2 RTM
DB Compat 80
SSIS Server 2008 R2 RTM
DB Server 2008 RTM
DB Compat 100
SSIS Server 2008 R2 RTM
DB Server 2008 R2 RTM
DB Compat 100
Since a lot of our data comes in via comma delimited flat files, I really need a fix for this. If not I'll have to rebuild all my files when I import them to use pipe delimiters instaed of commas. I'd like to avoid the extra processing overhead if possible.
Also, is this a known bug? If so can someone point me to the posting of said bug?
Edit: I can't ask the vendor to change the format to pipe delimited because it comes from a federal government site.Just wanted to share my experience of this for anyone else since I wasted a morning on it today.
I encountered the same problem where I could run the package fine on my machine but when I deployed to a server and ran the package via dtexec, the " delimeter was being replaced with _x0022_ and columns all slurped up together and overflowing columns/truncating
data etc.
Since I didn't want to manually hack the DTS XML and can't install updates, the solution I used was to set an expression on the textdelimiter field of the flat file connection with the value "\"" (a double quote). That way, even if the one stored in XML
gets bodged somewhere along the way, it is overridden with the correct value at run time. The package works fine everywhere now. -
Passing data to different internal tables with different columns from a comma delimited file
Hi,
I have a program wherein we upload a comma delimited file and based on the region( we have drop down in the selection screen to pick the region). Based on the region, the data from the file is passed to internal table. For region A, we have 10 columns and for region B we have 9 columns.
There is a split statement (split at comma) used to break the data into different columns.
I need to add hard error messages if the no. of columns in the uploaded file are incorrect. For example, if the uploaded file is of type region A, then the uploaded file should be split into 10 columns. If the file contains lesser or more columns thenan error message should be added. Similar is the case with region B.
I do not want to remove the existing split statement(existing code). Is there a way I can exactly pass the data into the internal table accurately? I have gone through some posts where in they have made use of the method cl_alv_table_create=>create_dynamic_table by passing the field catalog. But I cannot use this as I have two different internal tables to be populated based on the region. Appreciate help on this.
Thanks,
PavanHi Abhishek,
I have no issues with the rows. I have a file with format like a1,b1,c1,d1,e1, the file should be uploaded and split at comma. So far its fine. After this, if the file is related to region A say Asia, then it should have 5 fields( as an example). So, all the 5 values a1,b1..e1 will be passed to 5 fields of itab1.
I also have region B( say Europe) whose file will have only 4 fields. So, file is of the form a2,b2,c2,d2. Again data is split at comma and passed to itab2.
If some one loads file related to Asia and the file has only 4 fields then the data would be incorrect. Similar is the case when someone tries to load Europe file with 5 fields related data. To avoid this, I want to validate the data uploaded. For this, I want to count the no. of fields (seperated by comma). If no. of fields is 5 then the file is related to Asia or if no. of fields is 4 then it is Europe file.
Well, the no. of commas is nothing but no. of fields - 1. If the file is of the form a1,b1..e1 then I can say like if no. of commas = 4 then it is File Asia.But I am not sure how to write a code for this.Please advise.
Thanks,
Pavan -
Wrapping A SqlBulkCopy Class To Export A Proper Comma Delimited Table
Hello!
If anyone can point me in the right direction it would be greatly appreciated!
In my search, it seems SQL Server cannot export tables to a proper comma delimited format. I have not found a out of the box solution for SQL Server to properly escape commas and double quotes within fields on a record.
Which brings me here. I'm searching for a way to leverage the SqlBulkCopy class (or a alternative) to quickly export a record's values in a array or list so I can feed it into my custom DelimitedStringBuilder class.
So far it seems the out of the box SqlBulkCopy class only supports import into other tables and not a text file.
One thought (I have no idea how I would implement it) would be to attach a DataReader class to the SqlBulkCopy class and then pass the values from the DataReader to my DelimitedStringBuilder class.
Has anyone been able to write something like this? Or is there a simpler solution?Have you tried just using SQL and ExecuteNonQuery? Below is an example:
Dim TextConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & "C:\Documents and Settings\...\My Documents\My Database\Text" & ";" & _
"Extended Properties=""Text;HDR=NO;""")
TextConnection.Open()
'New table
Dim TextCommand As New System.Data.OleDb.OleDbCommand("SELECT * INTO [Orders#csv] FROM [Orders] IN '' [ODBC;Driver={SQL Server Native Client 11.0};Server=.\SQLExpress;Database=Northwind;Trusted_Connection=yes];", TextConnection)
TextCommand.ExecuteNonQuery()
TextConnection.Close()
Paul ~~~~ Microsoft MVP (Visual Basic) -
Suppliers is a field containing a comma delimited list of
Supplier ID's.
When a supplier logs in they should be able to view all the
auctions that they have been registered for
i.e if their supplierID is in the suppliers field.
have tried this and get an error:
<CFQUERY NAME="GetAuctions"
DATASOURCE="#Application.Datasource#">
SELECT * FROM Auctions
WHERE '#Session.SupplierID#' IN 'Auctions.Suppliers'
</CFQUERY>
have tried this and recordcount is 0 when it should be 3:
<CFQUERY NAME="GetAuctions"
DATASOURCE="#Application.Datasource#">
SELECT * FROM Auctions
WHERE '#Session.SupplierID#' LIKE 'Auctions.Suppliers'
</CFQUERY>You should avoid having a list value in a field and normalise
your table. But if you want to stick with your style(which is not
advisable), maybe you can do this. I believe your supplier id is a
string so the code below may cause slowness in your system:
<CFQUERY NAME="GetAuctions1"
DATASOURCE="#Application.Datasource#">
SELECT Suppliers FROM Auctions
</CFQUERY>
<cfoutput query="GetAuctions1">
<CFQUERY NAME="GetAuctions2"
DATASOURCE="#Application.Datasource#">
SELECT * FROM Auctions
WHERE '#Session.SupplierID#' IN(<cfqueryparam
values="#Suppliers#" cfsqltype="CF_SQL_VARCHAR" list="Yes">)
</CFQUERY>
</cfoutput>
But if your supplier id is a numeric value. then you can do
this:
<CFQUERY NAME="GetAuctions"
DATASOURCE="#Application.Datasource#">
SELECT A1.* FROM Auctions A1
WHERE #Session.SupplierID# IN(SELECT A2.Suppliers FROM
Auctions A2 WHERE A2.your_primary_key_for_table_Auctions =
A1.your_primary_key_for_table_Auctions)
</CFQUERY> -
Convert xls to comma delimited
hi all...
i have a xls file which needs to be converted to comma delimited dat file.
can somebody help me on this.
thnks,
i need it programatically pls!!Check the below program :
Upload xls file and you can see .txt file ( with comma delimted)
Input ( XLS file )
aaa 1245 2344 233 qwww
233 2222 qwww www www
Output ( .txt file with comma delimted)
aaa,1245,2344,233,qwww
233,2222,qwww,www,www
REPORT ZFII_MISSING_FILE_UPLOAD no standard page heading.
data : begin of i_text occurs 0,
text(1024) type c,
end of i_text.
Internal table for File data
data : begin of i_data occurs 0,
field1(10) type c,
field2(10) type c,
field3(10) type c,
field4(10) type c,
field5(10) type c,
end of i_data.
data : begin of i_download occurs 0,
text(1024) type c,
end of i_download.
data : v_lines type sy-index.
data : g_repid like sy-repid.
data v_file type string.
data: itab like alsmex_tabline occurs 0 with header line.
data : g_line like sy-index,
g_line1 like sy-index,
$v_start_col type i value '1',
$v_start_row type i value '1',
$v_end_col type i value '256',
$v_end_row type i value '65536',
gd_currentrow type i.
selection-screen : begin of block blk with frame title text.
parameters : p_file like rlgrap-filename obligatory.
selection-screen : end of block blk.
initialization.
g_repid = sy-repid.
at selection-screen on value-request for p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = g_repid
IMPORTING
FILE_NAME = p_file.
start-of-selection.
Uploading the data into Internal Table
perform upload_data.
download the file into comma delimted file.
perform download_data.
*& Form upload_data
text
--> p1 text
<-- p2 text
FORM upload_data.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = p_file
I_BEGIN_COL = $v_start_col
I_BEGIN_ROW = $v_start_row
I_END_COL = $v_end_col
I_END_ROW = $v_end_row
TABLES
INTERN = itab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
write:/10 'File '.
ENDIF.
if sy-subrc eq 0.
read table itab index 1.
gd_currentrow = itab-row.
loop at itab.
if itab-row ne gd_currentrow.
append i_data.
clear i_data.
gd_currentrow = itab-row.
endif.
case itab-col.
when '0001'.
first Field
i_data-field1 = itab-value.
second field
when '0002'.
i_data-field2 = itab-value.
Third field
when '0003'.
i_data-field3 = itab-value.
fourth field
when '0004'.
i_data-field4 = itab-value.
fifth field
when '0005'.
i_data-field5 = itab-value.
endcase.
endloop.
endif.
append i_data.
ENDFORM. " upload_data
*& Form download_data
text
--> p1 text
<-- p2 text
FORM download_data.
loop at i_data.
concatenate i_data-field1 ',' i_data-field2 ',' i_data-field3 ','
i_data-field4 ',' i_data-field5 into i_download-text.
append i_download.
clear : i_download,
i_data.
endloop.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME =
'C:\Documents and Settings\smaramreddy\Desktop\fff.txt'
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = i_download
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
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. " download_data
Thanks
Seshu
Maybe you are looking for
-
Multiple selections for 'use my phone for calls' Jabber 9.2.4
Could someone look into this? We have some users that are experiencing the following what shown in the screenshot. Only the above option works and somehow the second selection (Mark Hattink) has no purpose. I just can't figure out what's happening. I
-
How can I transfer music from my iPad to my iPhone without using a computer/iTunes?
Disclaimer: I am actually asking this for a family member, but I don't have an answer for her either. My family member has an iPad with music on it currently. This music is music bought from iTunes and music bought from other sources. Her computer
-
Tag selector not working in DW CS6 project
Hi. I'm using DW CS6 on a Mac. I'm working on a new web project, which is an HTML template. I'm in Design view and want to use the tag selector to select a tag, but whenever I try to select a child tag in the path, the only element selected is the pa
-
BUG 1.5: Parser error in worksheet.
I have the following statements in my worksheet. Putting the cursor in either the create... or the select.., F9 highlights both and runs the create.... I know I don't have an additional separator after the create... block, but the parser should be kn
-
Issues running installation file
I've downloaded the universal 32-bit installer for Windows on my PC which is a 32-bit system running Windows 7. When I attempt to run the file I get an error message that says that the file doesn't support 32-bit Windows systems. Is there another f