Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Table Control

Former Member
0 Likes
513

Hi,

I want to delete the selected records from the table control these records are in database , i want to delete these records in database also and i want delete when i press delete row button plzz help me.

Reward helpful answer

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
478

Hi,

See my example code by using this i delete the records from database table through table control

MODULE user_command INPUT.

CASE ok_code.

WHEN c_edel. " To delete the selected records

PERFORM delete_record USING it_timesheet.

ENDCASE.

ENDMODULE. " USER_COMMAND INPUT

"----


  • FORM DELETE_RECORD

"----


  • This Subroutine is used for delete records in the database

"----


  • -->pr_IT_TIMESHEET Internal table like table control

"----


FORM delete_record USING pr_it_timesheet LIKE it_timesheet.

IF fs_timesheet-lno IS NOT INITIAL.

LOOP AT pr_it_timesheet INTO fs_timesheet WHERE c_box EQ c_char_x.

PERFORM fill_timesheet USING fs_timesheet

CHANGING fs_temp_ts.

DELETE zcl_timesheet FROM fs_temp_ts.

IF sy-subrc EQ c_zero.

MESSAGE s007.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " DELETE_RECORD

"----


  • FORM FILL_TIMESHEET

"----


  • This Subroutine is used for fill fieldstring fs_temp_ts

"----


  • <--PR_fs_temp_ts fieldstring like database table

"----


FORM fill_timesheet USING pr_fs_timesheet LIKE fs_timesheet

CHANGING pr_fs_temp_ts TYPE zcl_timesheet.

CLEAR pr_fs_temp_ts.

pr_fs_temp_ts-empid = w_empid.

pr_fs_temp_ts-workdate = pr_fs_timesheet-date.

pr_fs_temp_ts-groupid = w_groupid.

pr_fs_temp_ts-projectid = pr_fs_timesheet-pid.

pr_fs_temp_ts-projectname = pr_fs_timesheet-pname.

pr_fs_temp_ts-objectid = pr_fs_timesheet-oid.

pr_fs_temp_ts-objectname = pr_fs_timesheet-oname.

pr_fs_temp_ts-activityid = pr_fs_timesheet-aid.

pr_fs_temp_ts-activityname = pr_fs_timesheet-aname.

pr_fs_temp_ts-timeworked = pr_fs_timesheet-wtime.

pr_fs_temp_ts-description = pr_fs_timesheet-desc.

pr_fs_temp_ts-taskstatus = pr_fs_timesheet-tstat.

pr_fs_temp_ts-billstatus = pr_fs_timesheet-bstat.

IF pr_fs_timesheet-lno IS INITIAL.

SELECT linenum " Line number

FROM zcl_timesheet

INTO w_linenum

WHERE empid EQ w_empid

AND workdate EQ pr_fs_timesheet-date.

ENDSELECT. " SELECT LINENUM

IF sy-subrc NE c_zero.

pr_fs_temp_ts-linenum = 1.

ELSE.

w_linenum = w_linenum + 1.

pr_fs_temp_ts-linenum = w_linenum.

ENDIF. " IF SY-SUBRC NE C_ZERO

ELSE.

pr_fs_temp_ts-linenum = pr_fs_timesheet-lno.

ENDIF. " IF pr_fs_TIMESHEET-LNO IS INITIAL

IF pr_fs_timesheet-pid NE c_leave

AND pr_fs_timesheet-pid NE c_hol.

pr_fs_temp_ts-wstatus = c_char_w.

ELSEIF pr_fs_timesheet-pid EQ c_leave.

pr_fs_temp_ts-wstatus = c_char_l.

ELSEIF pr_fs_timesheet-pid EQ c_hol.

pr_fs_temp_ts-wstatus = c_char_h.

ENDIF. " IF pr_fs_TIMESHEET-PID NE C_LEAVE

IF sy-ucomm EQ c_save.

pr_fs_temp_ts-appstatus = c_char_s.

ELSEIF sy-ucomm EQ c_submit.

pr_fs_temp_ts-appstatus = c_char_x.

ENDIF. " IF SY-UCOMM EQ C_SAVE

ENDFORM. " FILL_TIMESHEET

Note :

Write the module in table control in middle of chain and endchain and use your own field string and your own table name and one more thig you can able to delete database record based on my code your field string is also must be same type of database table and fill field string

Plzz Reward if it is useful,

Mahi.

4 REPLIES 4
Read only

Former Member
0 Likes
478

hi,

First.

u just move ur selected table control fields to one internal table,

Then.

when 'DELETE'.

DELETE dbtable FROM TABLE internaltable.

commit work.

that's all,

reward points if useful,

sehu.

Read only

former_member196299
Active Contributor
0 Likes
478

hi ,

Follow the logic :

Loop at the table control and collect the records to be deleted into an internal table .

Delete the records from DB table and do a commit work so that the selecte records will be deleted from the

Then the rest of the data will be shown except the delete records ...

Regards,

Ranjita

Read only

Former Member
0 Likes
478

Hi,

PROCESS AFTER INPUT.

LOOP AT ITAB_PHONELIST .

MODULE EXTRACT_USERDATA.

ENDLOOP.

module delete.

In se38

MODULE EXTRACT_USERDATA INPUT.

CASE SAVE_CODE.

WHEN 'DELE'.

IF ITAB_PHONELIST-SELECTION EQ 'X' AND

confirmation = 'G'.

ITAB_PHONELIST-SELECTION = 'X'.

modify ITAB_PHONELIST index TCTRL_PHONELIST-CURRENT_line.

ENDIF.

ENDMODULE. " EXTRACT_USERDATA INPUT

MODULE delete INPUT.

CASE SAVE_CODE.

WHEN 'DELE'.

DELETE ITAB_PHONELIST where selection eq 'X'.

endcase.

ENDMODULE. " delete INPUT

Read only

Former Member
0 Likes
479

Hi,

See my example code by using this i delete the records from database table through table control

MODULE user_command INPUT.

CASE ok_code.

WHEN c_edel. " To delete the selected records

PERFORM delete_record USING it_timesheet.

ENDCASE.

ENDMODULE. " USER_COMMAND INPUT

"----


  • FORM DELETE_RECORD

"----


  • This Subroutine is used for delete records in the database

"----


  • -->pr_IT_TIMESHEET Internal table like table control

"----


FORM delete_record USING pr_it_timesheet LIKE it_timesheet.

IF fs_timesheet-lno IS NOT INITIAL.

LOOP AT pr_it_timesheet INTO fs_timesheet WHERE c_box EQ c_char_x.

PERFORM fill_timesheet USING fs_timesheet

CHANGING fs_temp_ts.

DELETE zcl_timesheet FROM fs_temp_ts.

IF sy-subrc EQ c_zero.

MESSAGE s007.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " DELETE_RECORD

"----


  • FORM FILL_TIMESHEET

"----


  • This Subroutine is used for fill fieldstring fs_temp_ts

"----


  • <--PR_fs_temp_ts fieldstring like database table

"----


FORM fill_timesheet USING pr_fs_timesheet LIKE fs_timesheet

CHANGING pr_fs_temp_ts TYPE zcl_timesheet.

CLEAR pr_fs_temp_ts.

pr_fs_temp_ts-empid = w_empid.

pr_fs_temp_ts-workdate = pr_fs_timesheet-date.

pr_fs_temp_ts-groupid = w_groupid.

pr_fs_temp_ts-projectid = pr_fs_timesheet-pid.

pr_fs_temp_ts-projectname = pr_fs_timesheet-pname.

pr_fs_temp_ts-objectid = pr_fs_timesheet-oid.

pr_fs_temp_ts-objectname = pr_fs_timesheet-oname.

pr_fs_temp_ts-activityid = pr_fs_timesheet-aid.

pr_fs_temp_ts-activityname = pr_fs_timesheet-aname.

pr_fs_temp_ts-timeworked = pr_fs_timesheet-wtime.

pr_fs_temp_ts-description = pr_fs_timesheet-desc.

pr_fs_temp_ts-taskstatus = pr_fs_timesheet-tstat.

pr_fs_temp_ts-billstatus = pr_fs_timesheet-bstat.

IF pr_fs_timesheet-lno IS INITIAL.

SELECT linenum " Line number

FROM zcl_timesheet

INTO w_linenum

WHERE empid EQ w_empid

AND workdate EQ pr_fs_timesheet-date.

ENDSELECT. " SELECT LINENUM

IF sy-subrc NE c_zero.

pr_fs_temp_ts-linenum = 1.

ELSE.

w_linenum = w_linenum + 1.

pr_fs_temp_ts-linenum = w_linenum.

ENDIF. " IF SY-SUBRC NE C_ZERO

ELSE.

pr_fs_temp_ts-linenum = pr_fs_timesheet-lno.

ENDIF. " IF pr_fs_TIMESHEET-LNO IS INITIAL

IF pr_fs_timesheet-pid NE c_leave

AND pr_fs_timesheet-pid NE c_hol.

pr_fs_temp_ts-wstatus = c_char_w.

ELSEIF pr_fs_timesheet-pid EQ c_leave.

pr_fs_temp_ts-wstatus = c_char_l.

ELSEIF pr_fs_timesheet-pid EQ c_hol.

pr_fs_temp_ts-wstatus = c_char_h.

ENDIF. " IF pr_fs_TIMESHEET-PID NE C_LEAVE

IF sy-ucomm EQ c_save.

pr_fs_temp_ts-appstatus = c_char_s.

ELSEIF sy-ucomm EQ c_submit.

pr_fs_temp_ts-appstatus = c_char_x.

ENDIF. " IF SY-UCOMM EQ C_SAVE

ENDFORM. " FILL_TIMESHEET

Note :

Write the module in table control in middle of chain and endchain and use your own field string and your own table name and one more thig you can able to delete database record based on my code your field string is also must be same type of database table and fill field string

Plzz Reward if it is useful,

Mahi.