Deletion of a particular record from database table
hai friends,
i want to <b>delete</b> (or) <b>insert</b> particular record from predefined sap table... that is with out module pool programming... can i delete or insert a record to or from the table..
thanks in advance
@jay
hi,
ucan do it without module pool programming in your normal report program.
To insert a line into an index table, use the statement:
INSERT <line> INTO <itab> [INDEX <idx>].
<line> is either a work area that is convertible to the line type, or the expression INITIAL LINE. If you use <wa>, the system adds a new line to the internal table <itab> and fills it with the contents of the work area. INITIAL LINE inserts a blank line containing the correct initial value for each field of the structure.
To select the lines that you want to delete using a condition, use the following:
DELETE FROM <target> WHERE <cond> .
All of the lines in the database table that satisfy the conditions in the WHERE clause are deleted. The FROM expression must occur between the keyword and the database table.
You should take particular care when programming the WHERE clause to ensure that you do not delete the wrong lines. For example, if you specify an empty internal table in a dynamic WHERE clause, all of the lines in the table are deleted.
If at least one line is deleted, the system sets SY-SUBRC to 0, otherwise to 4. SY-DBCNT contains the number of lines deleted.
regards,
keerthi
Similar Messages
-
Retrive last inserted record from database table
Hi,
some body inserting a record into table 'A' through some procedure/java program.i want to retrive the last inserted record from database table.records are not stored in order.Can any body help me.In general, unless you are storing a timestamp as part of the row or you have some sort of auditing in place, Oracle has no idea what the "first" or "last" record in a table is. Nor does it track when a row was inserted.
- If you have the archived logs from the point in time when the row was inserted, you could use LogMiner to find the timestamp
- If the insert happened recently (i.e. within hours), you may be able to use flashback query to get the value
- If you're on 10g or later and the table was built with ROWDEPENDENCIES and the insert happened in the last few days and you can deal with a granularity of a few seconds and you don't need 100% accuracy, you could get the ORA_ROWSCN of the row and convert that to a timestamp.
If this is something you contemplate needing, you need to store the data in the row or set up some sort of auditing.
Justin -
Fetch last record from database table
hi,
how to fetch last record from database table.
plz reply earliest.
Regards,
Jyotsna
Moderator message - Please search before asking - post locked
Edited by: Rob Burbank on Dec 11, 2009 9:44 AMabhi,
just imagine the table to be BSEG or FAGLFLEXA... then what would be performance of the code ?
any ways,
jyotsna, first check if you have a pattern to follow like if the primary key field have a increasing number range or it would be great if you find a date field which stores the inserted date or some thing..
you can select max or that field or order by descending using select single.
or get all data.. sort in descending order.(again you need some criteria like date).
read the first entry. using read itab index 1 -
I want to delete the transactional record from database table
Hai,
I want to delete the transactional data from database table with out using the dialog programming is it there any trancation for this.
for master data we have the transaction code for delete the records. The t.code is 'OBR2'.
Plz help in that cse.
Thanks and regards,
P.Naganjana ReddyHai,
Plz help me urgent.
I am asking i want to delete transactional data from database table without using the dialog programming.
Thanks and Regards,
P.Naganjana -
Delete 70,000,000 records from a Table .... Please help
I am new to Oracle database. please help on
Oracle9i Enterprise Edition Release 9.2.0.1.0
We have one master table with 15,243,350 records and a child table 71,447,235 records in our Oracle database and the slow performance has been hitted our daily operation so bad recently. The two tables has quite intensive update during the day (around 60000 records a day)
I exported the whole database and import the database to a virtual machine for test.
I use the below statement to delete the record and it ran for around 20 hours (as this is on the test enviorment, there is no update activity during the delete process), it still takes quite long to delete.
delete from child_table where child_table.id in (select id from master_table where child_table.id=master_table.id and date <= to_date('01/08/2009 00:00:00','dd/mm/yyyy hh24:MILSS'))
Is that ok when I issue the same comment to delete the records in LIVE environment or please adivse other method(s) to do it....
BTW, do I need to rebuild the indices after deletion or Oracle will do it for me automatically ?Hi,
I can think 2 ways to do it.
If you are deleting more than 80% (or I would say, a big chunk) of the data from the table. Lets say the original table is T1 (71 million rows). Create a table T2 whith the records you want to 'keep'. Rename T1 to T_old and rename T2 to T1. You can drop/truncate T_old later, when you don't need it.
All you have to manage here, are the foreign key constraints. You need to drop and re-create the foreign keys.
Another way. If you will be doing this deletion operation after every few days, I would recommend you partition table T1 by range. With one partition for each day. For deleting data, you can simply truncate partitions. That will be really quick and won't generate any redo/undo (or generate very little).
Regards -
Latest record from database table
Hi all,
I am using select statement on a database table. The table contains records, and each one has an effective date.
effective dt record Rate
01/01/1800 R1 40
<b>01/01/2007 R1 30</b>
01/01/1800 R2 40
I want to select rates corresponding to R1 and R2. For R2, the rate is 40, but i need the rate 30 and not 40 for R1, because rate 30 has the most recent effective date. Please tell me if i can do this in the select query itself...
Please help me...
Thanks
Pranati.Hi,
Try this..
Ranges: r_bukrs for bkpf-bukrs.
LOOP AT l_t_records.
Build the range.
r_bukrs-sign = 'I'.
r_bukrs-option = 'EQ'.
r_bukrs-low = l_t_records.
append r_bukrs.
ENDLOOP.
SORT r_bukrs by low.
DELETE adjacent duplicates from r_bukrs comparing low.
SELECT max( zeff_dt ) bukrs zbrdn kostl hkont INTO TABLE l_t_brdncalc
FROM zfpbrdn
WHERE bukrs IN r_bukrs
GROUP BY zbrdn. " I am not sure of the record field..But you have to give
" GROUP BY clause..give the correct field..
Hope this helps..
Thanks,
Naren -
How to read a particular record from BRF+ table in ABAP
hi all,
I have a requirement where a particular record has to be read based on certain value for a set of columns from BRFplus Decision table to Delete/Update. I tried many methods of CL_FDT* but could not find any right one.
Could anyone please help me?
Thanks,
DeepikaHi Deepika,
There is one solution from my side.
1. Include the Decision table in a BRF+ function.
2. Set the input and result of the function.
3. Call the function in the ABAP.
4. Get the record from result.
Please find the call function logic in ABAP as below.
Data:
lo_admin_data TYPE REF TO if_fdt_admin_data,
lo_function TYPE REF TO if_fdt_function,
lo_context TYPE REF TO if_fdt_context,
lo_result TYPE REF TO if_fdt_result.
cl_fdt_factory=>get_instance_generic( EXPORTING iv_id = "functon id in general tab"
IMPORTING eo_instance = lo_admin_data ).
lo_function ?= lo_admin_data.
*Set input parameter
lo_context ?= lo_function->get_process_context( ).
lo_context->set_value( iv_name = "parameter name" ia_value ="parameter value" ).
lo_function->process( EXPORTING io_context = lo_context
IMPORTING eo_result = lo_result ).
lo_result->get_value( IMPORTING ea_value = "Result" ).
Best Regards
Clark Huang -
Select record from database table
how to select a record from data-base table for current month in module-pool, i.e if current month is august then records selected should between 1/08/10 to 31/08/10.
And, i also want to select records for last month i.e if current month is august then records selected should be between 1/07/10 to 31/07/10.
And one thing more, it should work for every scenario. Like for months are changing then it should work according to that.
Example: If month changes to October then current month ll be October and last month ll become September.
Plz help me out.
Moderator message: you chose a better forum this time, but the question is still too basic to be asked here, please (re)search yourself first, these forums are not catering to beginners.
locked by: Thomas Zloch on Aug 8, 2010 9:41 PMHi Nishant,
You can use the option <b>ORDER BY </b> in your SELECT clause.
This is the SAP Documentation for <b>ORDER BY </b> option.
<i>Variant 1</i>
<b>...ORDER BY PRIMARY KEY</b>
<b>Effect</b>
Sorts the selected lines in ascending order by the primary key of the database table. This variant is only permitted for SELECT * ....
<i>Notes</i>
Since views do not have a primary key, specifying ORDER BY PRIMARY KEY only makes sense with database tables. If, however, you do specify ORDER BY PRIMARY KEY with a view, all fields of the view are sorted in ascending order.
<i>Variant 2</i>
<b>ORDER BY f1 ... fn</b>
<i>Effect</i>
Sorts the selected records in ascending order by the specified column references f1 ... fn. If a list is also specified in the SELECT clause, the column references f1, ..., fn must appear in this list.
By supplementing the statement with DESCENDING, you can sort in descending order using any of the fields f1, ..., fn.
The default sort sequence is ascending order, but you can make this explicit by adding the addition ASCENDING.
Consider this code this will select the latest 10 records form DB table(Note can use <b>Variant 2</b> for DB tables also.
REPORT zarun_1.
DATA : it_mara TYPE STANDARD TABLE OF mara WITH HEADER LINE.
START-OF-SELECTION.
SELECT * FROM mara
INTO TABLE it_mara
<b>UP TO 10 ROWS "No of rows you need(give 1 here)
ORDER BY matnr DESCENDING. "Specify the Key Fields here.</b>
LOOP AT it_mara.
WRITE : / it_mara-matnr,
it_mara-mtart.
ENDLOOP.
Regards,
Arun Sambargi.
Message was edited by: Arun Sambargi -
Display records from database table
My database table has 495K records i want to display them all in se11 tcode and than download into excel ...but because of huge records it timeout.
Do I need to write a program for this?
Or is there any other smarter way.
Regards,
DNPHi,
Please follow the steps below:
1. Go to the selection screen of SE11 and provide your selection criteria (if required).
2. Click on Settings menu->User parameters->ALV Grid display.
3. Now click on Program menu->Execute in background->Provide output device name as LP01 or LOCAL or any valid printer parameters->Click continue->Click Immediate button->Click Save.
4. You can see the background job for this in SM37.
5. Once the background job is completed, it will appear in gleen color.
6. Click on the completed job and then click on Spool button.
7. Once the output is displayed in spool you can now easily download it to excel by clicking on System menu->List->Save->Local File.
Hope this will help you.
Regards,
Venkat -
How to delete the records from database table without using work area
Hi all,
The purpose of the down program is to delete the entire contents from all the tables. The deletion of the table should be in sorted manner. Is there any other way to write the code more efficiently,
TABLES: ZFFMCTL_AP, ZFFMHDR_AP, ZFFM_CHANGE_LOG, ZFFMDTL_AR, ZFFMHDR_AR, ZFFMDTL_JV, ZFFMHDR_JV, ZFFMDTL_SKF,ZFFMHDR_SKF,ZFINVOICE_DETAIL, ZFFMMASTER, ZFFMLOGREAD_CLUS, ZFFMCTL.
DELETE ZFFMCTL_AP.
IF SY-SUBRC = 0.
DELETE ZFFMMHDR_AP.
IF SY-SUBRC = 0.
DELETE ZFFM_CHANGE_LOG.
IF SY-SUBRC = 0.
DELETE ZFFMDTL_AR.
IF SY-SUBRC = 0.
DELETE ZFFMHDR_AR.
IF SY-SUBRC = 0.
DELETE ZFFMDTL_JV.
IF SY-SUBRC = 0.
DELETE ZFFMHDR_JV.
IF SY-SUBRC = 0.
DELETE ZFFMDTL_SKF.
IF SY-SUBRC = 0.
DELETE ZFFMHDR_SKF.
IF SY-SUBRC = 0.
DELETE ZFINVOICE_DETAIL.
IF SY-SUBRC = 0.
DELETE ZFFMMASTER.
IF SY-SUBRC = 0.
DELETE ZFFMLOGREAD_CLUS.
IF SY-SUBRC = 0.
DELETE ZFFMCTL.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Waiting for response,
Thanks in advance
JohnWrite this way....
TABLES: ZFFMCTL_AP, ZFFMHDR_AP, ZFFM_CHANGE_LOG, ZFFMDTL_AR, ZFFMHDR_AR, ZFFMDTL_JV, ZFFMHDR_JV, ZFFMDTL_SKF,ZFFMHDR_SKF,ZFINVOICE_DETAIL, ZFFMMASTER, ZFFMLOGREAD_CLUS, ZFFMCTL.
DELETE ZFFMCTL_AP.
CHECK SY_SUBRC = 0.
DELETE ZFFMMHDR_AP.
CHECK SY_SUBRC = 0.
DELETE ZFFM_CHANGE_LOG.
CHECK SY_SUBRC = 0.
DELETE ZFFMDTL_AR.
CHECK SY_SUBRC = 0.
DELETE ZFFMHDR_AR.
CHECK SY_SUBRC = 0.
DELETE ZFFMDTL_JV.
CHECK SY_SUBRC = 0.
DELETE ZFFMHDR_JV.
CHECK SY_SUBRC = 0.
DELETE ZFFMDTL_SKF.
CHECK SY_SUBRC = 0.
DELETE ZFFMHDR_SKF.
CHECK SY_SUBRC = 0.
DELETE ZFINVOICE_DETAIL.
CHECK SY_SUBRC = 0.
DELETE ZFFMMASTER.
CHECK SY_SUBRC = 0.
DELETE ZFFMLOGREAD_CLUS.
CHECK SY_SUBRC = 0.
DELETE ZFFMCTL. -
Deleting records from database table
Hi Experts,
In this program i used Table Control.
Here i want to delete the selected Rows. But Here if i say delete the selected row , it is deleting the last row. Why ?
Please help me It's Urgent.
Thanks,
Basu
MODULE USER_COMMAND_9000 INPUT.
DATA: LV_FCODE LIKE SY-UCOMM.
LV_FCODE = SY-UCOMM.
CASE LV_FCODE.
WHEN 'CHANGE'.
FLG = 'Y'.
WHEN 'DELETE'.
FLG = 'Y'.
LOOP AT I_MAKT.
DATA NUM TYPE N.
NUM = SY-TABIX.
READ TABLE I_MAKT INDEX NUM INTO I_MAKT1-EMPID.
MOVE I_MAKT1-EMPID TO I_MAKT2-EMPID.
ENDLOOP.
UPDATE ZEMPLOYE FROM TABLE I_MAKT.
DELETE I_MAKT WHERE EMPID = I_MAKT2-EMPID.
DELETE FROM ZEMPLOYE WHERE EMPID = I_MAKT2-EMPID.
MESSAGE S001(YTC).
WHEN 'INSERT'.
MODIFY ZEMPLOYE FROM TABLE I_MAKT.
MESSAGE S002(YTC).
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUTHi,
See following link:
http://www.sapmaterial.com/tablecontrol_sap.html
Reward points if helpful.
Regards.
Srikanta Gope. -
Form is not Pulling records from database table.
Hi all,
it seems very simple question for you, but i got stuck here.
I have created one table and insert some records in it from SQL.
then i create one form and create a data block and pull all the fields form the table, now when i run this form it will not show the records... why ?
is anything wrong am i doing ?
Thanks for any help.
AbidYes when i press Execute Query it shows the records.
can i add this on form level, i mean when form will load i can execute this query.
how will this work.
on_form_load
execute_query;
is that right ?
Thanks for giving me clue, you soloved my problem.
Abid -
Dynamic record deletion from database table
Hi,
I need to delete selected records from database table(dynamic names). Table names are being passed from main program with some of their field names. The record to be deleted from the database table is being decided based on the fields passed for the table and their contains passed from the main program.
It is not possible to write dynamic where clause for DELETE statement directly.
So, I created a dynamic internal table and i am trying to fetch all records using SELECT statement(for which we can write dynamic where condition, something like...SELECT...WHERE (itab). ) which need to be deleted in the iternal table.
Piece of code :
CONCATENATE c_im v_tablefield1 INTO v_imprtfield1.
CONCATENATE v_tablefield1 c_in v_imprtfield1
into s_condition separated by space.
APPEND s_condition TO t_condition.
PERFORM GET_DYNAMIC_ITAB USING s_flds_agtab-tabname
changing t_itab.
ASSIGN t_itab->* TO <itab>.
*Select the data (to be deleted) from the database table
SELECT * FROM (s_flds_agtab-tabname) INTO TABLE <itab>
WHERE (t_condition).
*Delete the records from the table
IF SY-SUBRC = 0.
DELETE (s_flds_agtab-tabname) FROM TABLE <itab>.
ENDIF.
Here t_condition is of standard table of WHERETXT.
t_condition at the run time before giving dump was:
SPART IN IM_SPART
AND KUNNR IN IM_KUNNR
Here IM_SPART is renge type of SPART and IM_KUNNR is renge of KUNNR.
I am getting a DUMP:
The WHERE condition has an unexpected format.
Error analysis
The current ABAP/4 program attempted to execute an ABAP/4 Open SQL
statement containing a WHERE condition of the form WHERE (itab) or
WHERE ... AND (itab). The part of the WHERE condition specified at
runtime in the internal table itab contains the operator
IN (v1, ..., vn)
in incomplete form.
How to correct the error
If the error occurred in a non-modified SAP program, you may be
able to find a solution in the SAP note system.
If you have access to the note system yourself, use the following
search criteria:
"SAPSQL_IN_ILLEGAL_LIST"
"SAPLZSD_TAB_REFRESH " or "LZSD_TAB_REFRESHU01 "
"Z_SD_REFRESH_AGTABLES"
If you cannot solve the problem yourself, please send the
following documents to SAP:
I would like to know whether "IN" operator is allowed in (itab) of WHERE clause. While testing I changed the "IN" to "=" specifying a suitable value there. It worked. So please let me know if i can give "IN" operator using renge table in the dynamic where clause.
Thanking you,
SuryaHi again, so if you can not use the IN in a dynamic where clause you might be forced to dynamically build the entire select statement, Here is a sample program which may give you some ideas, notice that we are writing the select statement code, putting it in another program and generating the subroutine at runtime, then call this routine. I'm sure that this will help you see what you need to do.
report zrich_0003 .
tables: kna1.
types: t_source(72).
data: routine(32) value 'DYNAMIC_SELECT',
program(8),
message(128),
line type i.
data: isource type table of t_source,
xsource type t_source.
ranges:
r_kunnr for kna1-kunnr.
data: ikna1 type table of kna1.
data: xkna1 type kna1.
r_kunnr-sign = 'I'.
r_kunnr-option = 'EQ'.
r_kunnr-low = '0001000500'.
append r_kunnr.
xsource = 'REPORT ZTEMP.'.
insert xsource into isource index 1.
xsource = 'FORM dynamic_select'.
insert xsource into isource index 2.
xsource = 'Tables r_kunnr ikna1.'.
append xsource to isource.
xsource = 'select * into table ikna1 from kna1'.
append xsource to isource.
xsource = 'where kunnr in r_kunnr.'.
append xsource to isource.
xsource = 'ENDFORM.'.
append xsource to isource.
generate subroutine pool isource name program
message message
line line.
if sy-subrc = 0.
perform (routine) in program (program) tables r_kunnr
ikna1.
else.
write:/ message.
endif.
loop at ikna1 into xkna1.
write:/ xkna1-kunnr.
endloop.
Regards,
Rich Heilman -
Deletion of Rec from Database table
Hi,
I need to delete records from database table based on a particular field as below.
DELETE FROM dbtable
WHERE specid = specid .
Can U please help me in the syntax of the code.
I promise to reward.
Thanks & regards.hi
try this
DELETE FROM ZICM_ORD_PRCTRC WHERE VBELN = WA_ZICM_ORD_PRCTRC-VBELN
AND
POSNR = WA_ZICM_ORD_PRCTRC-POSNR.
regards,
muralidhar. -
Hi,
To delete data from database table using internal table I am using following statement.
DELETE dbtab FROM TABLE itab.
Itab is a sorted table.Just wondering if table type matters while deleting database entries using internal table.which is efficient table type for deleting records from database table?
Regards
NileshHi Nilesh
The row type of the internal table must be a data object with at least the same length and alignment as the key structure of the database table. The key is read according to the structure of the table line, and not that of the row type. It is a good idea to define the row type with reference to the structure of the database table.
From SAP Help
DATA: BEGIN OF WA,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF WA,
ITAB LIKE HASHED TABLE OF WA
WITH UNIQUE KEY CARRID CONNID.
WA-CARRID = 'UA'. WA-CONNID = '0011'.
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'LH'. WA-CONNID = '1245'.
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'AA'. WA-CONNID = '4574'.
INSERT WA INTO TABLE ITAB.
DELETE SPFLI FROM TABLE ITAB.
Besides, it is so technical what algorithm is run to delete records from the DB table when an internal table is given. If you want you can have a quick test using GET TIME. However, it seems logical that if your internal table is sorted with respect to any index, especially the primary index, of the DB table this may increase performance.
Regards
*--Serdar <a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=qbk%2bsag%2bjiw%3d">[ BC ]</a>
Maybe you are looking for
-
Lost User from 7 home premium after upgrading to 8.1.
I was having installer problems with windows 7 home premium. Nothing would install and the computer was just generally was getting more and more non functional. I couldn't even make a backup system image or restore from a image I had made 6 months e
-
I keep getting the familiar message "MSVCR80 file is missing...I have read that the most recent update of I-tunes around January had a compatibility issue with Windows 7. Consequently the updates did not load properly. I am unable to open my I-Tun
-
If I have a web site on my screen that I want to send to someone, I right-click, click on "Yahoo", then click on "E-mail this page". My Yahoo in-box opens, rather than a blank e-mail compose page with the link in blue.
-
I'm having problems with my internet since I have upgraded. I am afraid to upgrade on my Macbook pro now. I don't want the upgrade to slow down my laptops. Any suggestions?
-
I'm new to creating fillable forms and I feel that this appoach would help to create HVAC proposals in quickly by editing a few fields within a PDF. I would like to then email the form that I created to my client, but I do not want them to be able to