Using 2 tables to edit db information
Hello;
I am writting an edit form type section for a web site and it
uses 2 tables. I have it done in pieces and now am working on
sewing it together. Here is my problem.
First I have 2 tables. One is Categories, and the other is
Projects. here is what sections I have in these 2 tables:
Categories Table:
CategoryID
Name
MYFile
Description
Projects Table:
ProjectID
CategoryID
Name
Description
I have 2 types of edit pages, one is for just adding and
editing the Category Table the other to add and edit the Project
table. Now what I am trying to do it the following. (I am going to
break this down into parts, doing one part at a time. So this is a
multi part question) I want to take the Project page and have the
Category Name be the order by for the page, wich means I need an
innerjoin. I am kind of at a loss how I would write that and still
be able to edit the record without the innerjoin getting in the
way. (This will also be used on the Category page as a nav link to
edit all the projects with the corresponding category and that will
be the only projects that will appear is the ones assigned to that
category.
But first I need just to ORDER BY Categories.Name in my
Querry so that if you just choose to go to this page and view /
edit all categories you can.
Here is my code so far. I need to have the Project manager
page organize all the projects by Category.Name
<cfquery name="proMan" datasource="#sitedatasource#"
username="#siteUserID#" password="#sitePassword#">
SELECT Projects.Name AS PName, Projects.CategoryID,
Projects.ProjectID AS ID
Categories.Name AS CName, Categories.CategoryID
INNERJOIN Projects ON Categories
FROM Projects, Categories
</cfquery>
<head>
</head>
<body>
<cfoutput query="proMan">
Project Name: #PName#
Project category: #CName#
<form action="Project-Action.cfm" method="post">
<input type="hidden" name="ID" value="#ID#">
<input type="submit" name="proj_Edit" value=" Edit ">
<input type="submit" name="proj_Delete" value="Delete">
</form>
</cfoutput>
I know this is wrong, so How do I make it work?
(Then I will go into the next phase of the question about
being able to go from teh Category Manager page to edit the
projects just associated to the respective category, unless it is
easier to do that part now. Then I will post the code from the
Categories page so we can do an innerjoin there and make a link to
edit projects in that category.)
Thank you. I know this is conveluted, but it is a big section
and a lot of little odds and ends to tie in.
Phoenix
</body>
Wow. can't believe I missed that..
Ok, now for phase 2 of this.
I need the category-manager page to have a link on it. the
way it is set up is this:
The Category page has and edit category button, and delete
category button. I need to add an edit projects for this category
link. This will link to the Project-manager page we just fixed up
the innerjoin page.
This is my code for teh Category-manager page:
<cfquery name="catMan" datasource="#sitedatasource#"
username="#siteUserID#" password="#sitePassword#">
SELECT Categories.Name AS ViewField1, Categories.CategoryID
AS ID, Projects.ProjectID
FROM Categories INNER JOIN Projects ON Categories.CategoryID
= Projects.CategoryID
</cfquery>
<head>
</head>
<body>
<cfoutput query="catMan">
#ViewField1#
<a href="projectCat-edit.cfm?CategoryID=#ID#"
class="navA">Edit Category</a>
<a href="project-edit.cfm?ID=#ProjectID#"
class="navA">Edit Projects</a>
<form action="ProjectCat-Action.cfm" method="post">
<input type="hidden" name="ID" value="#ID#"><input
type="submit" name="proj_Delete" class="formButtons"
onMouseOver="this.style.backgroundColor='##0099CC'"
onMouseOut="this.style.backgroundColor='##00659A'"
value="Delete"></form>
</cfoutput>
</body>
What do I need to do on the Projects-manager page to make
just the projects attached to selected category appear using the
code posted that was just made with teh innerjoin?
<cfquery name="proMan" datasource="#sitedatasource#"
username="#siteUserID#" password="#sitePassword#">
SELECT Projects.Name AS PName, Projects.CategoryID,
Projects.ProjectID AS ID,
Categories.Name AS CName, Categories.CategoryID
FROM Projects INNER JOIN Categories ON projects.CategoryID =
Categories.CategoryID
ORDER BY Categories.Name
</cfquery>
<head>
</head>
<body>
<cfoutput query="proMan">
Project Name: #PName#
Project category: #CName#
<form action="Project-Action.cfm" method="post">
<input type="hidden" name="ID" value="#ID#">
<input type="submit" name="proj_Edit" value=" Edit ">
<input type="submit" name="proj_Delete" value="Delete">
</form>
</cfoutput>
</body>
Thanks for all the help. I am not sure my category code is
correct, including the link to edit the projects.
Phoenix
Similar Messages
-
Can you make table width editable in a template
I am new to html and am trying to use a template to create a
site that will eventually have 10-12 pages. All of the pages will
have the same basic design, but some need 1 main body section and
some need 2 (1 main and 1 smaller off to the side). After doing 4
pages, I realized I could use a template so I wouldn't have to
re-enter all the links in the nav bar, etc., but if I do a page
with just one main section, I would like that section to be wider.
The template will not allow me to adjust the table. Is there a way
to make the table width editable/adjustable? Thanks for any help
you can give me... I'm sure to have many more questions once this
gets solved!Well, it's OK, but I'm not sure where you want to go with
this. I'm not
crazy about how you have used the CSS - there are things
there that I think
are unnecessary....
Consider this -
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 80%;
color: #000;
background-color: #FFF;
margin: 0 0 0 15px;
padding: 0;
color: #000;
#wrapper {
width:720px;
div {
border:thin solid #FFF;
#banner {
background-image:
url(
http://homepage.mac.com/nminicozzi37/PFC_Web_Test_Site/ahsban_02.gif);
background-repeat: no-repeat;
height: 20px;
#main {
font-size: 90%;
#spacer {
background-color: #FFF;
height: 32px;
#welcome {
font-size: 125%;
font-weight: bold;
background-color: #FFCC00;
height: 40px;
padding-left: 5px;
padding-top: 18px;
#BlueSpacer {
background-color: #00C;
height: 20px;
#welcome2 {
font-weight: bold;
color: #00C;
background-color: #FC0;
height: 45px;
padding-left: 5px;
padding-top: 18px;
-->
</style>
</head>
<body>
<div id="wrapper">
<div id="banner"></div>
<div id="spacer">Content for id "spacer" Goes
Here</div>
<div id="welcome">Welcome to the Agoura High School
Parent Faculty Club
(AHS
PFC) </div>
<div id="welcome2"> Your source for all the latest PFC
news and
information </div>
<div id="BlueSpacer"></div>
<div id="main">Content for id "main" Goes
Here</div>
</div>
</body>
</html>
Don't get into additive trouble with percent sized fonts.
Remember, when
you have an element with font-size:100%, that's 100% of 80%,
and when you
have one with font-size:60%, that's 60% of 80%.
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"AH_Nancy" <[email protected]> wrote in
message
news:[email protected]...
> Thank you thank you thank you for your helpful
suggestions, Murray.
>
> I am definitely prepared for time in the trenches.
Anything worth doing is
> worth doing right. You can see what I have done so far
>
http://homepage.mac.com/nminicozzi37/PFC_Web_Test_Site/.
(The top graphic
> will
> be replace by the correct one when I get it.) Any
comments/suggestions
> welcome.
>
> Of the ways you suggested to organize the CSS, is there
one you would
> recommend over the others, or is it simply a matter of
personal
> preference?
>
> Nancy
>
> -
Using a table in a page fragment
I moved my table into a page fragment and now the "pagination" buttons on the table do not work. It is always on page 1. I have a table in a page fragment that is in included in a jsp page. I fill the table using the ObjectListDataProvider in the jsp page, see below (where RawDataTable is located in the fragment):
RawDataTable rawDataTableBean = (RawDataTable)getBean("RawDataTable");
ObjectListDataProvider objectListDataProvider =
rawDataTableBean.getObjectListDataProvider();
try {
objectListDataProvider.setList(
(java.util.List)getValue(dataContext));
rawDataTableBean.setObjectListDataProvider(objectListDataProvider);
} catch (Exception e) { }The table fills in with information fine, but when I uses the pagination buttons to advance to the next page I get the first page again.
When the table was part of the jsp page itself (i.e. NOT in the fragment) it seemed to work.
Any thoughts?I have reported this bug to Creator engineering team, the bug id is 6483486.
Thanks,
Chary
Message was edited by:
CharyKanaparthi -
Managing statistics for object collections used as table types in SQL
Hi All,
Is there a way to manage statistics for collections used as table types in SQL.
Below is my test case
Oracle Version :
SQL> select * from v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
SQL> Original Query :
SELECT
9999,
tbl_typ.FILE_ID,
tf.FILE_NM ,
tf.MIME_TYPE ,
dbms_lob.getlength(tfd.FILE_DATA)
FROM
TG_FILE tf,
TG_FILE_DATA tfd,
SELECT
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) tbl_typ
WHERE
tf.FILE_ID = tfd.FILE_ID
AND tf.FILE_ID = tbl_typ.FILE_ID
AND tfd.FILE_ID = tbl_typ.FILE_ID;
Elapsed: 00:00:02.90
Execution Plan
Plan hash value: 3970072279
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 194 | 4567 (2)| 00:00:55 |
|* 1 | HASH JOIN | | 1 | 194 | 4567 (2)| 00:00:55 |
|* 2 | HASH JOIN | | 8168 | 287K| 695 (3)| 00:00:09 |
| 3 | VIEW | | 8168 | 103K| 29 (0)| 00:00:01 |
| 4 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 8168 | 16336 | 29 (0)| 00:00:01 |
| 5 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | TG_FILE | 565K| 12M| 659 (2)| 00:00:08 |
| 7 | TABLE ACCESS FULL | TG_FILE_DATA | 852K| 128M| 3863 (1)| 00:00:47 |
Predicate Information (identified by operation id):
1 - access("TF"."FILE_ID"="TFD"."FILE_ID" AND "TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
2 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
Statistics
7 recursive calls
0 db block gets
16783 consistent gets
16779 physical reads
0 redo size
916 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed Indexes are present in both the tables ( TG_FILE, TG_FILE_DATA ) on column FILE_ID.
select
index_name,blevel,leaf_blocks,DISTINCT_KEYS,clustering_factor,num_rows,sample_size
from
all_indexes
where table_name in ('TG_FILE','TG_FILE_DATA');
INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS CLUSTERING_FACTOR NUM_ROWS SAMPLE_SIZE
TG_FILE_PK 2 2160 552842 21401 552842 285428
TG_FILE_DATA_PK 2 3544 852297 61437 852297 852297 Ideally the view should have used NESTED LOOP, to use the indexes since the no. of rows coming from object collection is only 2.
But it is taking default as 8168, leading to HASH join between the tables..leading to FULL TABLE access.
So my question is, is there any way by which I can change the statistics while using collections in SQL ?
I can use hints to use indexes but planning to avoid it as of now. Currently the time shown in explain plan is not accurate
Modified query with hints :
SELECT
/*+ index(tf TG_FILE_PK ) index(tfd TG_FILE_DATA_PK) */
9999,
tbl_typ.FILE_ID,
tf.FILE_NM ,
tf.MIME_TYPE ,
dbms_lob.getlength(tfd.FILE_DATA)
FROM
TG_FILE tf,
TG_FILE_DATA tfd,
SELECT
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
tbl_typ
WHERE
tf.FILE_ID = tfd.FILE_ID
AND tf.FILE_ID = tbl_typ.FILE_ID
AND tfd.FILE_ID = tbl_typ.FILE_ID;
Elapsed: 00:00:00.01
Execution Plan
Plan hash value: 1670128954
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 194 | 29978 (1)| 00:06:00 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 194 | 29978 (1)| 00:06:00 |
| 3 | NESTED LOOPS | | 8168 | 1363K| 16379 (1)| 00:03:17 |
| 4 | VIEW | | 8168 | 103K| 29 (0)| 00:00:01 |
| 5 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 8168 | 16336 | 29 (0)| 00:00:01 |
| 6 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 7 | TABLE ACCESS BY INDEX ROWID | TG_FILE_DATA | 1 | 158 | 2 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | TG_FILE_DATA_PK | 1 | | 1 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | TG_FILE_PK | 1 | | 1 (0)| 00:00:01 |
| 10 | TABLE ACCESS BY INDEX ROWID | TG_FILE | 1 | 23 | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
8 - access("TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
9 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
filter("TF"."FILE_ID"="TFD"."FILE_ID")
Statistics
0 recursive calls
0 db block gets
16 consistent gets
8 physical reads
0 redo size
916 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed
Thanks,
BThanks Tubby,
While searching I had found out that we can use CARDINALITY hint to set statistics for TABLE funtion.
But I preferred not to say, as it is currently undocumented hint. I now think I should have mentioned it while posting for the first time
http://www.oracle-developer.net/display.php?id=427
If we go across the document, it has mentioned in total 3 hints to set statistics :
1) CARDINALITY (Undocumented)
2) OPT_ESTIMATE ( Undocumented )
3) DYNAMIC_SAMPLING ( Documented )
4) Extensible Optimiser
Tried it out with different hints and it is working as expected.
i.e. cardinality and opt_estimate are taking the default set value
But using dynamic_sampling hint provides the most correct estimate of the rows ( which is 2 in this particular case )
With CARDINALITY hint
SELECT
/*+ cardinality( e, 5) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Elapsed: 00:00:00.00
Execution Plan
Plan hash value: 1467416936
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 5 | 10 | 29 (0)| 00:00:01 |
| 1 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 5 | 10 | 29 (0)| 00:00:01 |
| 2 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
With OPT_ESTIMATE hint
SELECT
/*+ opt_estimate(table, e, scale_rows=0.0006) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Execution Plan
Plan hash value: 4043204977
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 5 | 485 | 29 (0)| 00:00:01 |
| 1 | VIEW | | 5 | 485 | 29 (0)| 00:00:01 |
| 2 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 5 | 10 | 29 (0)| 00:00:01 |
| 3 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
With DYNAMIC_SAMPLING hint
SELECT
/*+ dynamic_sampling( e, 5) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Elapsed: 00:00:00.00
Execution Plan
Plan hash value: 1467416936
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 4 | 11 (0)| 00:00:01 |
| 1 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 2 | 4 | 11 (0)| 00:00:01 |
| 2 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
Note
- dynamic sampling used for this statement (level=2)I will be testing the last option "Extensible Optimizer" and put my findings here .
I hope oracle in future releases, improve the statistics gathering for collections which can be used in DML and not just use the default block size.
By the way, are you aware why it uses the default block size ? Is it because it is the smallest granular unit which oracle provides ?
Regards,
B -
hi gurus,
iam using VL01 and VL02 in my programs.It is advised to use T180 table instead.
But, i am not able to understand the exact need of table T180, when everything else is working fine right now.
Please let me know the use of table T180.
thnx ,
shivaa.hi shiva,
Actually VA22 and other transactions of SAPMV45A program fetch
the information on SET/GET parameters from table T180. See
subroutine VBAK-VBELN_GET_PARAMETER. The name of Set/get
parameter depends on T180-TRVOG field. Actually for VA22 the
parameter is AGN.
regards
karthik
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Apr 10, 2008 3:21 PM -
How can we see status of all Requests at a time using any tables?
How can we see status of all Requests at a time in the Info cube or ODS using any tables? what I am facing was while I run a Process Chain in some data targets red requests remains and due to this all other requests doesnot available for reporting.
Now is there any T-Code or Table to view all requests in a single shot.
Thanks in advance,
RajHi Go for RSMONICDP give timestamp and u'll have it.
Please assign points if useful
Edited by: Aadil on Jan 21, 2008 7:43 AM -
Namedquery using same table field multiple times with the use of a label
Hi all,
i'm having some trouble with a namedquery. I'm trying to
use the following namedquery in Toplink to retrive some
data out of a database.
select proj.id
, proj.code
, proj.name
, proj.budget
, proj.status
, proj.startdate
, proj.enddate
, proj.mdr_id projleader_id
, med_leader.name projleader
, proj.mdr_id_valt_onder promanager_id
, med_promanager.name promanager
, proj.mdr_id_is_account_from accmanager_id
, med_accmanager.name accmanager
from uur_projecten proj
, uur_medewerkers med_leader
, uur_medewerkers med_promanager
, uur_medewerkers med_accmanager
where ( #p_name is not null or #p_search_string is not null )
and med_leader.id = proj.mdr_id
and ( proj.mdr_id = nvl( #p_name, proj.mdr_id )
or proj.mdr_id_valt_onder = nvl( #p_name, proj.mdr_id )
or proj.mdr_id_is_account_van = nvl( #p_name, proj.mdr_id ))
and (( #p_status is not null
and substr( proj.status, 1, 1 ) = upper( #p_status ))
or ( #p_status is null ))
and ( upper( proj.code ) like upper( '%' || #p_search_string || '%' )
or upper( proj.name ) like upper( '%' || #p_search_string || '%' ))
and med_promanager.id = proj.mdr_id_valt_onder
and med_accmanager.id = proj.mdr_id_is_account_van
order by decode( substr( proj.status, 1, 1 )
, 'A', 2, 'T', 3, 'F', 4, 1 ), proj.code desc
As you all can see the table ‘uur_medewerkers’ is been used trice to
determine the name for the corresponding ID. I have a Java class with
the fields for the results and created a Toplink descriptor to map
the fields to the database fields.
The problem is that for the 'projleader', 'promanager' and 'accmanager'
fields the results are null. The reason is probably that Toplink doesn't
recognize the fields because of the label for the tables.
Is there a way to make this work?
Greets, RenéPost Author: quafto
CA Forum: .NET
Your query is not too clear so I'll do my best to answer it broadly.
You mentioned that you have a .NET web application where your users enter data on one screen and then may retrieve it on another. If the data is written in real time to a database then you can create a standard Crystal Report by adding multiple tables. The tables should be linked together using the primary and foreign keys in order to optimize the database query and give you a speedy report. Using unlinked tables is not recommended and requires the report engine to index the tables (it is quite slow).
You also mentioned you have a "PropID" to be used in a WHERE clause. This is a great place to use a parameter in your report. This parameter can then be used in your record selection formula inside Crystal Reports. The report engine will actually create the WHERE clause for you based on the parameter value. This is helpful because it allows you to simply concentrate on your code rather than keeping track of SQL queries.
Now, what Crystal does not do well with is uncertainty. When you design a report with X number of tables the report engine expects X number of tables to be available at processing time. You should not surprise the print engine with more or less tables because you could end up with processing errors or incorrect data. You may need to design multiple reports for specific circumstances.
Regarding the group expert question. I'm not sure how you would/could use the group expert to group a table? A table is a collection of fields and cannot be compared to another table without a complex algorithm. The group expert is used to group and sort records based on a field in the report. Have a look at the group expert section of the help file for more information.
Hopefully my comments have given you a few ideas. -
Here's how to do ALV (OO) with dynamic fcat, int table and editable data
Hi everybody
Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
You don't need to add the class via SE24 -- done fron this ABAP.
When you run it click Edit for the first time.
After editing data press ENTER and the break point should bring you into the relevant method.
Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
The code should work without any changes on any system >=6.40.
All you need to do is to create a blank screen 100 via SE51 with a custom container on it called CCONTAINER1.
The rest of the code can just be uploaded into your system using the SE38 upload facility.
When running the program click on the EDIT button to enable the edit functionality of the grid.
Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
Have fun and award points if useful.
Cheers
Jimbo.
<b>PROGRAM zdynfieldcat.
Simple test of dynamic ITAB with user defined (not ddic) fields
Build dynamic fcat
use ALV grid to display and edit.
*When edit mode set to 1 toolbar gives possibility of adding and
*deleting rows.
*Define subclass of cl_gui_alv_grid so we can use protected attributes
*and methods.
Add event handler to intercept user entering data and pressing the
*ENTER key.
When enter key is pressed get actual value of NEW table (all rows)
rather than just the changed data.
*use new RTTI functionality to retrieve internal table structure
*details.
Create a blank screen 100 with a custom container called CCONTAINER1.
James Hawthorne
include <icon>.
define any old internal structure NOT in DDIC
types: begin of s_elements,
anyfield1(20) type c,
anyfield2(20) type c,
anyfield3(20) type c,
anyfield4(20) type c,
anyfield5(11) type n,
end of s_elements.
types: lt_rows type lvc_t_roid.
Note new RTTI functionality allows field detail retrieval
at runtime for dynamic tables.
data: wa_element type s_elements ,
wa_data type s_elements,
c_index type sy-index,
c_dec2 type s_elements-anyfield5,
wa_it_fldcat type lvc_s_fcat,
it_fldcat type lvc_t_fcat,
lr_rtti_struc TYPE REF TO cl_abap_structdescr, "RTTI
lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
ls_comp LIKE LINE OF lt_comp, "RTTI
zog like line of lr_rtti_struc->components, "RTTI
struct_grid_lset type lvc_s_layo,
l_valid type c,
new_table type ref to data.
field-symbols: <dyn_table> type standard table,
<actual_tab> type standard table,
<fs1> type ANY,
<FS2> TYPE TABLE.
data: grid_container1 type ref to cl_gui_custom_container.
class lcl_grid_event_receiver definition deferred.
data: g_event_receiver type ref to lcl_grid_event_receiver.
data: ls_modcell type LVC_S_MODI,
stab type ref to data,
sdog type s_elements. .
class lcl_grid_event_receiver definition.
public section.
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed,
toolbar for event toolbar of cl_gui_alv_grid
importing e_object
e_interactive,
user_command for event user_command of cl_gui_alv_grid
importing e_ucomm.
endclass.
*implementation of Grid event-handler class
class lcl_grid_event_receiver implementation.
method handle_data_changed.
code whatever required after data entry.
various possibilites here as you can get back Cell(s) changed
columns or the entire updated table.
Data validation is also possible here.
perform check_data using er_data_changed.
endmethod.
Method for handling all creation/modification calls to the toolbar
method toolbar.
data : ls_toolbar type stb_button.
Define Custom Button in the toolbar
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EDIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Edit' to ls_toolbar-text.
move icon_change_text to ls_toolbar-icon.
move 'Click2Edit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'UPDA' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Update' to ls_toolbar-text.
move icon_system_save to ls_toolbar-icon.
move 'Click2Update' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EXIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Exit' to ls_toolbar-text.
move icon_system_end to ls_toolbar-icon.
move 'Click2Exit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
endmethod.
method user_command.
case e_ucomm .
when 'EDIT'. "From Tool bar
perform set_input.
perform init_grid.
when 'UPDA'. "From Tool bar
perform refresh_disp.
perform update_table.
when 'EXIT'. "From Tool bar
leave program.
endcase.
endmethod.
endclass.
class zcltest definition inheriting from cl_gui_alv_grid.
define this as a subclass so we can access the protected attributes
of the superclass cl_gui_alv_grid
public section.
methods: constructor, disp_tab.
endclass.
need this now to instantiate object
as we are using subclass rather than the main cl_gui_alv_grid.
class zcltest implementation.
METHOD constructor.
CALL METHOD super->constructor
exporting i_appl_events = 'X'
i_parent = grid_container1.
endmethod.
method disp_tab.
FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
break-point 1.
mt_outtab is the data table held as a protected attribute
in class cl_gui_alv_grid.
ASSIGN me->mt_outtab->* TO <outtab>. "Original data
do whatever you want with <outtab>
contains data BEFORE changes each time.
Note that NEW (Changed) table has been obtained already by
call to form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Entered data is in table defined by <fs2>
In this method you can compare original and changed data.
Easier than messing around with individual cells.
do what you want with data in <fs2> validate / update / merge etc
endmethod.
endclass.
data :
ok_code like sy-ucomm,
save_ok like sy-ucomm,
i4 type int4,
Container Object [grid_container]
now created via method constructor
in the subclass zcltest.
Control Object [grid]
grid1 type ref to zcltest,
Event-Handler Object [grid_handler]
grid_handler type ref to lcl_grid_event_receiver.
start-of-selection.
call screen 100.
module status_0100 output.
now display it as grid
if grid_container1 is initial.
create object grid_container1
exporting
container_name = 'CCONTAINER1'.
create object grid1.
break-point 1.
create object grid_handler.
set handler:
grid_handler->user_command for grid1,
grid_handler->toolbar for grid1,
grid_handler->handle_data_changed for grid1.
perform create_dynamic_fcat.
perform create_dynamic_itab.
perform populate_dynamic_itab.
perform init_grid.
perform register_enter_event.
set off ready for input initially
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endif.
endmodule.
module user_command_0100 input.
*PAI not needed in OO ALV anymore as User Commands are handled as events
*in method user_command.
*we can also get control if the Data entered and the ENTER is pressed by
*raising an event.
Control then returns to method handle_data_changed.
endmodule.
form create_dynamic_fcat.
get structure of our user table for building field catalog
Use the RTTI functionality
lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
Build field catalog just use basic data here
colour specific columns as well
loop at lr_rtti_struc->components into zog.
c_index = c_index + 1.
clear wa_it_fldcat.
wa_it_fldcat-fieldname = zog-name .
wa_it_fldcat-datatype = zog-type_kind.
wa_it_fldcat-inttype = zog-type_kind.
wa_it_fldcat-intlen = zog-length.
wa_it_fldcat-decimals = zog-decimals.
wa_it_fldcat-lowercase = 'X'.
if c_index eq 2.
wa_it_fldcat-emphasize = 'C411'.
endif.
if c_index eq 3.
wa_it_fldcat-emphasize = 'C511'.
endif.
append wa_it_fldcat to it_fldcat .
endloop.
endform.
form create_dynamic_itab.
Create dynamic internal table and assign to field sysmbol.
Use dynamic field catalog just built.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = it_fldcat
importing
ep_table = new_table.
assign new_table->* to <dyn_table>.
endform.
form populate_dynamic_itab.
load up a line of the dynamic table
c_dec2 = c_dec2 + 11.
wa_element-anyfield1 = 'Tabbies'.
wa_element-anyfield2 = 'ger.shepards'.
wa_element-anyfield3 = 'White mice'.
wa_element-anyfield4 = 'Any old text'.
wa_element-anyfield5 = c_dec2.
append wa_element to <dyn_table>.
endform.
form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Get altered data back
ASSIGN p_er_data_changed->mp_mod_rows TO <FS1>.
stab = p_er_data_changed->mp_mod_rows.
ASSIGN STAB->* TO <FS2>.
LOOP AT <FS2> INTO sdog.
ALV grid display with altered data is now in <fs2>.
do any extra processing you want here
endloop.
now display new table
call method grid1->disp_tab.
endform.
form exit_program.
call method grid_container1->free.
call method cl_gui_cfw=>flush.
leave program.
endform.
form refresh_disp.
call method grid1->refresh_table_display.
endform.
form update_table.
The dynamic table here is the changed table read from the grid
after user has changed it
Data can be saved to DB or whatever.
loop at <dyn_table> into wa_element.
do what you want with the data here
endloop.
switch off edit mode again for next function
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form set_input.
i4 = 1.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form switch_input.
if i4 = 1.
i4 = 0.
else.
i4 = 1.
endif.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form init_grid.
Enabling the grid to edit mode,
struct_grid_lset-edit = 'X'. "To enable editing in ALV
struct_grid_lset-grid_title = 'Jimbos Test'.
call method grid1->set_table_for_first_display
exporting
is_layout = struct_grid_lset
changing
it_outtab = <dyn_table>
it_fieldcatalog = it_fldcat.
endform.
form register_enter_event.
call method grid1->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
Instantiate the event or it won't work.
create object g_event_receiver.
set handler g_event_receiver->handle_data_changed for grid1.
endform.</b>Hi there
IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
I'll copy the stuff to the wiki when I've got the browser sorted out.
Cheers
jimbp -
XML Publisher Report Fails While using Pivot Table in R12 Oracle EBS
Hello All,
Need your help. I am trying to create a report with a Pivot table. I have created the .rtf file using the Oracle BI Publisher Template Builder for word 10.1.3.4.1. the data comes correctly in preview but when i register it in EBS and run the concurrent program it competes in warning and no output is displayed.
The error message looks like as follows.
[9/3/10 4:03:17 PM] [19934:RT444621] Executing post-processing actions for request 444621.
[9/3/10 4:03:17 PM] [19934:RT444621] Starting XML Publisher post-processing action.
[9/3/10 4:03:17 PM] [19934:RT444621]
Template code: XXECOHCGEN
Template app: XXECO
Language: en
Territory: 00
Output type: EXCEL
[9/3/10 4:03:31 PM] [19934:RT444621] Output file was found but is zero sized - Deleted
[9/3/10 4:03:31 PM] [UNEXPECTED] [19934:RT444621] java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:599)
at oracle.apps.xdo.common.xml.XSLT10gR1.invokeNewXSLStylesheet(XSLT10gR1.java:611)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:239)
at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:182)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1044)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:997)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:212)
at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1665)
at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:975)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:5936)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3459)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3548)
at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:302)
at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:176)
Caused by: oracle.xdo.parser.v2.XPathException: Namespace prefix 'crosstab' used but not declared.
at oracle.xdo.parser.v2.XSLProcessor.reportException(XSLProcessor.java:806)
at oracle.xdo.parser.v2.XSLProcessor.newXSLStylesheet(XSLProcessor.java:571)
... 17 more
would appreciate some pointers to fix this issue.
Regards,
Abhijeet K
Edited by: Abhijeet K on Sep 3, 2010 8:10 AMHI, was there a Solution Ever found for this post other than the Workaround.
I am at the Same issue now, Any Valuable inputs will Help me finish my Report ASAP, becos currently this is my only Show stopper
we have Oracle Apps R12 realease 12.1.3 we use XMLpublisher built in R12
The issue i have is .
I created a XMLPublisher Report using PIVOT TABLE i would like to have my output to be in Excel, When i Preview it works fine, when i execute via Concurrent Program it gives the Following Log file
XXTPC Custom Application: Version : UNKNOWN
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
TPC_ITEM_COUNT_RPT module: TPC ITEM COUNT RPT
Current system time is 25-JUN-2012 11:00:39
XDO Data Engine Version No: 5.6.3
Resp: 21676
Org ID : 101
Request ID: 2149483
All Parameters: report_name=RUN BY ORDER TYPE:org_name=HQF:org_choice=TPC US:item_selection=1001:order_type=k-us:pstatus=entered,waved,notwaved,shipped:transit_days=:first_receipt_date=01-jun-2012:last_receipt_date=22-jun-2012
Data Template Code: TPC_ITEM_COUNT_RPT
Data Template Application Short Name: XXTPC
Debug Flag: N
{first_receipt_date=01-jun-2012, org_choice=TPC US, item_selection=1001, report_name=RUN BY ORDER TYPE, pstatus=entered,waved,notwaved,shipped, org_name=HQF, last_receipt_date=22-jun-2012, order_type=k-us, transit_days=}
Calling XDO Data Engine...
Start of log messages from FND_FILE
End of log messages from FND_FILE
Executing request completion options...
Output file size:
29148
------------- 1) PUBLISH -------------
Beginning post-processing of request 2149483 on node HQTERPAS1LX at 25-JUN-2012 11:00:51.
Post-processing of request 2149483 failed at 25-JUN-2012 11:00:52 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
------------- 2) PRINT -------------
Not printing the output of this request because post-processing failed.
Finished executing request completion options.
Concurrent request completed
Current system time is 25-JUN-2012 11:00:52
I have requested my DBA to get me the OPP file..
Thanks in advance for any solution. -
HT3354 how can i use one table for reference to another
how can i use a table for a referance to another eg when i type a word in a cell, i will like it to match the word with another table then return the information in the cell i am using
you can use vlookup() (or any of the lookup family of functions) to locate an item based on a key value:
Here is an example of something you can do with two tables:
The table on the right is title "Data" and stores a list of names with age and favorite color.
The table on the left uses the value in the first column to lookup up information in the table Data
in the table on the left:
B2=IFERROR(A2&" is " & VLOOKUP(A2, Data :: A:D, 2, 0)&" years old and likes the color "& VLOOKUP(A2, Data :: A:D, 3, 0), "NOT FOUND")
I know this look complicated. so I'll break it up into smalled pieces:
first the "&" is called the concatenate operator and joins two strings. like this:
a string is a set of characters between double quotes.
so "string 1" & "string 2" becomes "string 1string2" or "Sam " & "Jones" becomes "Sam Jones"
you can use cell references instead of strings directly in which case the concatenation is performed on the contents of the cells.
so if cell A1 contains "Hi " and the cell A2 contains "There" then A1 & A2 will result in "Hi There"
so you could add the formula
A3=A1 & A2
this is short hand for select cell A3 then type everything including the A3 so that A3 contains "=A1 & A2" (omit the double quote)
OK. So the formula I provided concatenates several items together:
it concatenates A2, then the string " is " then a formula, then the string " years old and likes the color " then a formula
the two formulas (highlighted in blue) perform a lookup of the value in cell A2 in columns A thru D of the table named "Data". If if finds the value in cell A2 in the first column of the lookup range in the table Data (column A) then it returns the value from the same row but in the second or third column.
all that is in a function calld iserror() to trap the condition where the calue you enter in A2 does not exist in the table Data:
You will find the Numbers users guide and function reference helpful. You can download then from Apple here:
http://support.apple.com/manuals/#productivitysoftware -
How to use multiple table in single control file?
Hi,
How to use multiple table and data file in sigle control file? I have a four table and four csv file i mean data file for that. I am running concurrent program to load the data from csv file to custom table. based on my input data file name, it has to take automatically from one control file.
Can anyone share with me how can i acheive this?
ThanksHi,
Can't we acehive like below. I don't this exactly corrcect.
OPTIONS (SKIP=1)
LOAD DATA
INFILE << file name 1 >>
APPEND INTO TABLE XXCZ_VA_SAMPLE1
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
PARENT_ITEM "TRIM(BOTH FROM :PARENT_ITEM)"
LOAD DATA
INFILE << file name 2 >>
APPEND INTO TABLE XXCZ_VA_SAMPLE2
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
ITEM_NUMBER "TRIM(BOTH FROM :ITEM_NUMBER)"
)Edited by: orasuriya on Sep 14, 2009 3:03 AM -
How to change default value in a table using ALTER TABLE
Hi,
How to change default value in a table
I have a table TEST which has 2 fields CODE of Datatype VARCHAR2(10) and Indicator as VARCHAR2(1).
I want to change the default value using ALTER TABLE TEST of field Indicator to 'I'.
Any help will be needful for me
Thanks and Regardsuser598986 wrote:
Hi,
How to change default value in a table
I have a table TEST which has 2 fields CODE of Datatype VARCHAR2(10) and Indicator as VARCHAR2(1).
I want to change the default value using ALTER TABLE TEST of field Indicator to 'I'.
ALTER TABLE test
MODIFY (indicator DEFAULT 'I');
Incidentally, INDICATOR is a keyword in Oracle, so you may have problems using it as a column name. If so, you'll have to enclose the column name in double-quotes, and be careful to use capital letters inside the quotes.
Edited by: Frank Kulash on Aug 26, 2009 11:42 AM -
How can I use PowerPivot tables like Excel tables -- printing, etc.?
I can't seem to find any information on this anywhere, and even more surprisingly, no one else seems to have even asked this question...
How can I use tables I create in the Excel PowerPivot window in the same ways I use tables that are in ordinary Excel worksheets, to accomplish tasks such as printing? I am able to use the powerful capabilities of PowerPivot to produce tables with precisely
the information I need for reports -- connecting data from multiple tables/sources, filtering, etc. -- but then there doesn't seem to be any way to actually print what I'm seeing, nor can I seem to access cells in these PowerPivot tables from Excel worksheets.
If a PowerPivot table is conceptually an Excel table with additional power in terms of pulling in data and relating it, it would seem appropriate that all the power of Excel could be brought to bear on these PowerPivot tables, but on the contrary, the available
operations are limited. if, instead, a PowerPivot table is more correctly viewed as a data source that Excel worksheets can connect to, that would be fine, and indeed, one
can use a PowerPivot table as a data source -- except it can't be brought into an Excel worksheet as an ordinary Excel table, unlike most other data sources.
I hope I'm missing something really obvious, and that someone can point out what it is. Thanks.Kirchh,
When PowerPivot was first designed, the decision was to integrate closely to Sharepoint to allow for team sharing. We are constantly evaluating customer feedback to add more features, and this has been one of the feedbacks we have received. We will consider
supporting this in the future but with no gurantee.
Chu
-- This posting is provided "AS IS" with no warranties, and confers no rights
I'm not questioning why PowerPivot is closely integrated with SharePoint. I'm asking why connecting to the PowerPivot model from within Excel was intentionally blocked by Microsoft, when all the functionality to do so appears to be present.
Is creating an OLE DB connection in Excel to PowerPivot as $Embedded$ supported?
No support. It was originally designed for SharePoint. This changed with Power Pivot for Excel 2013 (it's packaged with it). Originally the scope (in 2010 through 2012) was that it was for SharePoint users. So it became more obvious through that to market it
toward all Excel users. Thus the recent changes.
Ed Price, Power BI & SQL Server Customer Program Manager (Blog,
Small Basic,
Wiki Ninjas,
Wiki)
Answer an interesting question?
Create a wiki article about it! -
How to Use a table UI for input ?
Hi All ,
I just want to ask how to use a Table UI in webdynpro ABAP to insert , change and delete rows ?? and can we give a drop down facility in table columns ? . This is really urgent .
Thanks in advance.
Regards,
LASHi LAS,
Everything is possible. I am providing the logic here which will help you a lot.
For insert, Change, Delete:
Just get the all the elements into temp internal table and get the lead slected index. Now instrt one row in the lead selected index position. then again bind the temporary internal table to your table node. Thats all it works like inserting the row.
In the same way you can do the change and delete rows also.
For Dropdown:
Here i am providing the code for Dropdown. It will help you out.
Just create the Dropdown view for the columns for which you want dropdown. And do the coding for that.
Here in my scenario IT is the Table node which holds the information. And i am providing the dorpdown key for the column "BSCHL".
If you have any dobts just reply to me . i will respond it.
Code:
data : ls_outtab type /kyk/s_fb01_line,
lt_outtab type table of /kyk/s_fb01_line,
lv_node_sd type ref to if_wd_context_node,
lv_node_it type ref to if_wd_context_node,
lv_node_info type ref to if_wd_context_node_info,
lv_node_sapmf05a_0106 type ref to if_wd_context_node,
lv_node_waers type ref to if_wd_context_node,
lv_node_layout type ref to if_wd_context_node,
lv_rowcount type i,
lv_buzei type i,
lv_waers type waers,
lt_bschl_set type wdy_key_value_table,
bschl_key_item type wdy_key_value.
bind to context
lv_node_sd = wd_context->get_child_node( name = 'SD' ).
lv_node_it = lv_node_sd->get_child_node( name = 'IT' ).
call method lv_node_it->bind_table
EXPORTING
new_items = lt_outtab.
fill Dropdown Help for posting Key
bschl_key_item-key = '40'.
bschl_key_item-value = cl_wd_utilities=>get_otr_text_by_alias( '/KYK/FIN_FI/DEBIT_GL_ACCOUNT' ).
insert bschl_key_item into table lt_bschl_set.
bschl_key_item-key = '50'.
bschl_key_item-value = cl_wd_utilities=>get_otr_text_by_alias( '/KYK/FIN_FI/CREDIT_GL_ACCOUNT' ).
insert bschl_key_item into table lt_bschl_set.
bschl_key_item-key = '21'.
bschl_key_item-value = cl_wd_utilities=>get_otr_text_by_alias( '/KYK/FIN_FI/DEBITVENDOR' ).
insert bschl_key_item into table lt_bschl_set.
bschl_key_item-key = '31'.
bschl_key_item-value = cl_wd_utilities=>get_otr_text_by_alias( '/KYK/FIN_FI/CREDITVENDOR' ).
insert bschl_key_item into table lt_bschl_set.
lv_node_info = lv_node_it->get_node_info( ).
lv_node_info->set_attribute_value_set( name = 'BSCHL' value_set = lt_bschl_set ).
Warm Regards,
Vijay -
How to read specific lines from a text file using external table or any other method?
Hi,
I have a text file with delimited data, I have to pick only odd number rows and load into a table...
Ex:
row1: 1,2,2,3,3,34,4,4,4,5,5,5,,,5 ( have to load only this row)
row2: 8,9,878,78,657,575,7,5,,,7,7
Hope this is enough..
I am using Oracle 11.2.0 version...
ThanksThere are various ways to do this. I would be inclined to use SQL*Loader. That way you can load it from the client or the server and you can use a SQL*Loader sequence to preserve the row order in the text file. I would load the whole row as a varray into a staging table, then use the TABLE and MOD functions to load the individual numbers from only the odd rows. Please see the demonstration below.
SCOTT@orcl12c> HOST TYPE text_file.csv
1,2,2,3,3,34,4,4,4,5,5,5,,,5
8,9,878,78,657,575,7,5,,,7,7
101,201
102,202
SCOTT@orcl12c> HOST TYPE test.ctl
LOAD DATA
INFILE text_file.csv
INTO TABLE staging
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(whole_row VARRAY TERMINATED BY '/n' (x INTEGER EXTERNAL),
rn SEQUENCE)
SCOTT@orcl12c> CREATE TABLE staging
2 (rn NUMBER,
3 whole_row SYS.OdciNumberList)
4 /
Table created.
SCOTT@orcl12c> HOST SQLLDR scott/tiger CONTROL=test.ctl LOG=test.log
SQL*Loader: Release 12.1.0.1.0 - Production on Tue Aug 27 13:48:37 2013
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
Path used: Conventional
Commit point reached - logical record count 4
Table STAGING:
4 Rows successfully loaded.
Check the log file:
test.log
for more information about the load.
SCOTT@orcl12c> CREATE TABLE a_table
2 (rn NUMBER,
3 data NUMBER)
4 /
Table created.
SCOTT@orcl12c> INSERT INTO a_table (rn, data)
2 SELECT s.rn,
3 t.COLUMN_VALUE data
4 FROM staging s,
5 TABLE (s.whole_row) t
6 WHERE MOD (rn, 2) != 0
7 /
17 rows created.
SCOTT@orcl12c> SELECT * FROM a_table
2 /
RN DATA
1 1
1 2
1 2
1 3
1 3
1 34
1 4
1 4
1 4
1 5
1 5
1 5
1
1
1 5
3 101
3 201
17 rows selected.
Maybe you are looking for
-
We're deploying new Dell pc's. Unfortunately we have a large existing install base of Office Home and Business in the field due to customers buying Office bundled on Dell machines. Buying Open License Outlook licenses is more cost effective than upg
-
Problem in Schedule line data in sales order creation
Hi, I am using the BAPI_SALESORDER_CREATEFROMDAT2 to transfer the sales order from one system to other. My problem is that the Schedule line data is not created in the new system and because of that order quantity is not appearing in the item level d
-
WebElements Can't get rid of border inside iFrame when CR report is loaded
I am runing reports from the CR Crystal report 2008 view that launches from Infoview and I can't get rid of a border that is in the inside of the iframe when the iframe has a CR loaded within it . (I uploaded screenshots here... https://cw.sdn.sap
-
ProgressBar Component and Streaming Video
Is it possible to connect the ProgressBar component to an FLVPlayback component which is streaming?
-
Hello I've got a 8.7GB .mov video file here and my DVD are only 4.7GBs. I've got about 7 videos this size that I need to burn onto DVDs. I'm curious what settings you would choose to complete this task. If at all possible I'd like to not have to end