06-25-2008 1:04 PM
we are having a ztable. now our requirement is to delete entries in the ztable through
the zreport.
in the selection screen we give the material num and date(which is stored in the field of a ztable)
based on this we need to delete the entries.
please tell me how to do this , either we need to have internal table or directly delete the
ztable,
in selection screen we declared the parameter of int i . so user can give 4 or 5 or 10 .
means if he gives 10 it means sydate-10 days before. before 10 days data should be deleted
and after 10 days data to till date should be kept in the table.
so please give me a sample code .so tell me the best way to achieve this.
Thank you for all the replies.
06-25-2008 1:20 PM
Hi,
Plz try this:
data: old_date type sy-datum,
p_num type i.
parameters: p_date type sy-datum.
old_date = p_date - p_num. " suppose 10
SELECT matnr
date...
.......
FROM ztable
INTO TABLE ztable_1
WHERE date BETWEEN p_date AND old_date.
IF sy-subrc = 0.
DELETE ztable
FROM TABLE ztable._1
IF sy-subrc = 0.
MESSAGE i029 WITH sy-dbcnt text-002 . " records deleted
ENDIF.
ENDIF.
Hope this helps you.
Plz reward if useful.
Thanks,
Dhanashri.
Edited by: Dhanashri Pawar on Jun 25, 2008 2:22 PM
06-25-2008 1:08 PM
hi shiva,
1. retrieve all the data that you need to be deleted based on the selection-screen parameters into an internal table
2. process your internal table and remove records which does not need to be deleted.
3. use this code to delete the data from your z table.
delete ztable from table itab.
sy-subrc returns 0 if the process is executed successfuly. otherwise, it returns 4.
regards,
Peter
06-25-2008 1:10 PM
hi,
check this sample code.
TABLES : xyz.
select-options : s_datum for xyz-datum.
DELETE FROM xyz WHERE name = 'ABC'
AND datum in s_datum.
IF sy-subrc = 0.
MESSAGE 'RECORDS DELETED SUCCESFULLY' TYPE 'S'.
ENDIF.
06-25-2008 1:14 PM
REPORT ZTEST_SOURAV15.
data: wa_ztable type ztable.
select-options:
s_matnr for wa_ztable-matnr.
PARAMETERS:
p_count type i obligatory.
start-of-selection.
data: l_date type datum.
l_date = sy-datum - p_count.
delete from ztable
where matnr in s_matnr and
zzdate lt l_date.
if sy-subrc = 0.
message s000(ztest) with 'Data deleted sucessfully'.
endif.
06-25-2008 1:15 PM
DELETE
FROM ZTABLE
WHERE parameer = ''
AND ZTABLE-date BETWEEN sy-datum AND p_date
06-25-2008 1:16 PM
Hi,
You requirment can be broken up into 2 parts first is to get the date based on the parameter before to which you want to delete data from the table based on that date you can find out the date using some FM or simple sydatum - date as on selection screen should also do the trick.
For the second part you can use a simple delete statement delete ztab where date is less than date as you have calculated.
Regards,
Himanshu
06-25-2008 1:17 PM
get the date based on the input provided by user. i;e, from selection screen.
and use that date in delete ztable where date > (date).
Regards,
Siva.
06-25-2008 1:19 PM
Hi,
You can this way-
Parameters: p_num type i obligatory.
Data: w_date type sy-datum.
w_date = sy-datum - p_num.
Delete * from ztable where date <= w_date.
if sy-subrc = 0.
Message 'records deleteed successfully' type 'I'.
Endif.
Thanks
06-25-2008 1:20 PM
Hi,
Plz try this:
data: old_date type sy-datum,
p_num type i.
parameters: p_date type sy-datum.
old_date = p_date - p_num. " suppose 10
SELECT matnr
date...
.......
FROM ztable
INTO TABLE ztable_1
WHERE date BETWEEN p_date AND old_date.
IF sy-subrc = 0.
DELETE ztable
FROM TABLE ztable._1
IF sy-subrc = 0.
MESSAGE i029 WITH sy-dbcnt text-002 . " records deleted
ENDIF.
ENDIF.
Hope this helps you.
Plz reward if useful.
Thanks,
Dhanashri.
Edited by: Dhanashri Pawar on Jun 25, 2008 2:22 PM