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

Check BOX problem in reports

Former Member
0 Likes
1,941

Hi ALL,

I have a requirement to delete the records from the output where we selected the record from the output.

here is my code, please help me out in this case,

the problem is how to delete the record if we check the check box from list output

here is my code.

&----


*& Report YTEST_VARUN

*&

&----


*&

*&

&----


REPORT YTEST_VARUN.

TABLES: KSSK,MARA.

TYPES: BEGIN OF T_KSSK.

INCLUDE STRUCTURE KSSK.

TYPES: END OF T_KSSK.

TYPES: BEGIN OF T_MARA.

INCLUDE STRUCTURE MARA.

TYPES: END OF T_MARA.

TYPES:BEGIN OF T_KSSK1,

FIELD(1).

INCLUDE STRUCTURE KSSK.

TYPES:END OF T_KSSK1.

DATA: WA_MARA TYPE T_MARA.

DATA: WA_KSSK TYPE T_KSSK.

DATA: WA_KSSK1 TYPE T_KSSK1.

DATA: I_KSSK TYPE TABLE OF T_KSSK.

DATA: I_KSSK1 TYPE TABLE OF T_KSSK1.

DATA: I_MARA TYPE TABLE OF T_MARA.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: Material for mara-matnr.

SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

SELECT * FROM KSSK INTO TABLE I_KSSK WHERE OBJEK IN MATERIAL.

IF SY-SUBRC EQ 0.

SORT I_KSSK BY OBJEK.

ENDIF.

SELECT * FROM MARA INTO TABLE I_MARA WHERE MATNR IN MATERIAL.

IF SY-SUBRC EQ 0.

SORT I_MARA BY MATNR.

ENDIF.

LOOP AT I_KSSK INTO WA_KSSK.

CLEAR WA_MARA.

READ TABLE I_MARA INTO WA_MARA WITH KEY MATNR = WA_KSSK-OBJEK.

IF SY-SUBRC NE 0.

MOVE-CORRESPONDING WA_KSSK TO WA_KSSK1.

APPEND WA_KSSK1 TO I_KSSK1.

ENDIF.

ENDLOOP.

IF I_KSSK1 IS INITIAL.

MESSAGE I000(0) WITH 'NO ORPHAN MATERIAL IS AVAILABLE'.

ELSE.

LOOP AT I_KSSK1 INTO WA_KSSK1.

WRITE:/ WA_KSSK1-FIELD AS CHECKBOX,

WA_KSSK1-OBJEK,

WA_KSSK1-MAFID,

WA_KSSK1-KLART,

WA_KSSK1-CLINT,

WA_KSSK1-ADZHL,

WA_KSSK1-ZAEHL,

WA_KSSK1-STATU,

WA_KSSK1-STDCL,

WA_KSSK1-REKRI,

WA_KSSK1-AENNR,

WA_KSSK1-DATUV,

WA_KSSK1-LKENZ.

MODIFY I_KSSK1 FROM WA_KSSK1 TRANSPORTING FIELD.

CLEAR WA_KSSK1.

ENDLOOP.

SET PF-STATUS 'ZTEST_VARUN'.

ENDIF.

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'DELETE'.

LOOP AT I_KSSK1 INTO WA_KSSK1.

ENDLOOP.

DELETE I_KSSK1 WHERE FIELD NE 'X'.

ENDCASE.

please help ma out.

Hi,

what Function code u ahve specified in the screen for DELETE have u used the exact name in the case statement.

20 REPLIES 20
Read only

Former Member
0 Likes
1,910

You have to read the lines after the user inputs the check box lik ethis.

do.

read line index sy-index.

if sy-subrc <> 0.

exit.

else.

*MOve the contents into the internal table and delete the marked ones.

endif.

enddo.

Read only

Former Member
0 Likes
1,910

Have a look at the help for the command

READ REPORT

There are some good examples.

Read only

Former Member
0 Likes
1,910

change to this and try

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'DELETE'.
LOOP AT I_KSSK1 INTO WA_KSSK1 where field ne 'X'..
DELETE table I_KSSK1 from wa_kssk1.
ENDLOOP.

Message was edited by:

Chandrasekhar Jagarlamudi

Read only

0 Likes
1,910

the same code i wrote, its not working please help me out other solution

Read only

0 Likes
1,910

Hi,

what Function code u ahve specified in the screen for DELETE have u used the exact name in the case statement.

Read only

0 Likes
1,910

its not the problem with the function code,

the check box field is not filling with the value "X'

Read only

Former Member
0 Likes
1,910
AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'DELETE'.
LOOP AT I_KSSK1 INTO WA_KSSK1 WHERE field = 'X'.
  DELETE TABLE I_KSSK1 FROM wa_kss1.
ENDLOOP.


ENDCASE.
Read only

Former Member
0 Likes
1,910

Hi Sridhar,

Please let me know if you can use a check-box to select the entry to be deleted and then on click of a button say 'DELETE' in Application tool bar this will be deleted. If this is the case I'll send the code neede for this functionality.

Regards,

Paul.

Read only

0 Likes
1,910

Hi Vijayananad,

yes Exactly this was my requirement, please send me the code, not ALV report

Read only

0 Likes
1,910

Hi,

Please forward me the code, its urgent please

Read only

0 Likes
1,910
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'SAVE'.
LOOP AT i_output INTO wa_output.
clear wa_output.
READ LINE SY-CUROW FIELD VALUE wa_output-cb.
IF sy-subrc <> 0.
EXIT.
ELSEIF wa_output-cb = 'X'.
MODIFY i_output FROM wa_output TRANSPORTING cb..
ENDIF.
ENDLOOP.
DELETE i_output WHERE cb = 'X'.
ENDCASE.

This will solve ur query, reward points if this helps.

Message was edited by:

Judith Jessie Selvi

Read only

0 Likes
1,910

chk this

<b>SAPBC420_SPTD_LIST_CHECKBOXES</b>

Read only

0 Likes
1,910

Hi,

I got the program

TRY <b>DEMO_LIST_READ_LINE</b>

Code as belwo:

  lines = sy-linno - 1.

SET PF-STATUS 'ZSTATUS'.

AT USER-COMMAND.

CASE sy-ucomm.
WHEN 'SAVE'.
      wa_output-cb = space.
      SET PF-STATUS 'ZSTATUS' EXCLUDING 'SAVE'.
      DO lines TIMES.
        READ LINE sy-index FIELD VALUE wa_output-cb.
          IF wa_output-cb = 'X'.
        MODIFY i_output  FROM wa_output INDEX sy-tabix TRANSPORTING cb.
        ENDIF.
      ENDDO.
      DELETE i_output WHERE cb = 'X'.

ENDCASE.

Reward if this helps.

Read only

Former Member
0 Likes
1,910

Hello,

DO like this.


AT USER-COMMAND.
 
CASE SY-UCOMM.
WHEN 'DELETE'.
DELETE I_KSSK1 where check = 'X'.
ENDCASE.

Vasanth

Read only

Former Member
0 Likes
1,910

Do something like this.

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN ?????

DO.

clear WA_KSSK1-FIELD.

READ LINE sy-index FIELD WA_KSSK1-FIELD.

IF sy-subrc <> 0.

EXIT.

ELSEIF WA_KSSK1-FIELD = 'X'.

..............

ENDIF.

ENDDO.

ENDCASE.

Read only

Former Member
0 Likes
1,910

Sreedhar,

Give me 10 mins I'll compile it for u.

Read only

Former Member
0 Likes
1,910

Hello,

Use this code directly in your report.

TYPES: BEGIN OF ty_kna1,

selected TYPE c,

record TYPE i,

kunnr TYPE kunnr,

land1 TYPE land1_gp,

name1 TYPE name1_gp,

name2 TYPE name2_gp,

END OF ty_kna1.

DATA: gt_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE,

gv_count TYPE i,

w_linepos TYPE i,

w_subrc LIKE sy-subrc,

w_tabix LIKE sy-tabix,

w_record LIKE sy-tabix,

w_selected(1) TYPE c.

SELECT-OPTIONS s_kunnr FOR gt_kna1-kunnr.

SELECT kunnr land1 name1 name2

FROM kna1

INTO CORRESPONDING FIELDS OF TABLE gt_kna1

WHERE kunnr IN s_kunnr.

LOOP AT gt_kna1.

gt_kna1-selected = 'X'.

gt_kna1-record = sy-tabix.

ENDLOOP.

PERFORM header.

LOOP AT gt_kna1.

FORMAT COLOR OFF.

WRITE:/ '|' UNDER text-l00,

gt_kna1-selected AS CHECKBOX UNDER text-cb1, '|' UNDER text-l00,

gt_kna1-kunnr UNDER text-h00, '|' UNDER text-l01,

gt_kna1-land1 UNDER text-h01, '|' UNDER text-l02,

gt_kna1-name1 UNDER text-h02, '|' UNDER text-l03,

gt_kna1-name2 UNDER text-h03, '|' UNDER text-l04,

'|' UNDER text-l05.

ENDLOOP.

ULINE.

AT USER-COMMAND.

CLEAR gv_count.

describe table gt_kna1 lines gv_count.

IF gv_count = 0.

EXIT.

ENDIF.

CASE sy-ucomm.

WHEN 'DELETE'.

PERFORM read_report.

PERFORM delete_data.

endcase.

&----


*& Form header

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM header .

WRITE:/ text-l01, text-cb1, "for check-box.

text-l00, text-h00, " For Kunnr

text-l02, text-h01, " for Land1

text-l03, text-h02, " for Name1

text-l04, text-h03, " for Name2

text-l05. "l01 - l05 = '|'.

ENDFORM. " header

&----


*& Form read_report

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM read_report .

w_linepos = 1.

*

CHECK 1 = 1.

w_subrc = 0.

*

WHILE w_subrc = 0.

*

w_tabix = sy-tabix.

*

CLEAR: w_record, w_selected.

*

READ LINE w_linepos FIELD VALUE gt_kna1-record INTO w_record.

w_subrc = sy-subrc.

IF w_subrc NE 0.

EXIT.

ENDIF.

*

IF NOT w_record IS INITIAL.

*

READ LINE w_linepos FIELD VALUE gt_kna1-selected

INTO w_selected.

READ TABLE gt_kna1 INDEX w_record.

gt_kna1-selected = w_selected.

*

IF sy-tabix > 0.

MODIFY gt_kna1 INDEX sy-tabix.

ENDIF.

ENDIF.

*

w_linepos = w_linepos + 1.

ENDWHILE.

ENDFORM. " read_report

&----


*& Form delete_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM delete_data .

LOOP AT gt_kna1 WHERE selected = 'X'.

w_tabix = sy-tabix.

*

  • Delete the record

*

*delete from kna1

*where kunnr = gt_kna1-kunnr.

endloop.

ENDFORM. " delete_data

Use your primary key combunation and delete the file from database.

The above code will display the report with checkboxes,

on selection of the checkboxes and selecting delete button from application tool bar it deletes only the selected entry from database.

You have to create a Button in Application tool bar with FCode - 'DELETE'.

Hope everything's fine.

Read only

Former Member
0 Likes
1,910

Use.......

Case Ok-CODE.

When 'DELETE'.

delete ITAB where FIELD EQ 'X'.

endcase.

Read only

Former Member
0 Likes
1,910

Sreedhar,

There is a small chage. You need to update the selected and record fields of table GT_KNA1 after selecting entries from KNA1 in this manner,

SELECT-OPTIONS s_kunnr FOR gt_kna1-kunnr.

SELECT kunnr land1 name1 name2

FROM kna1

INTO CORRESPONDING FIELDS OF TABLE gt_kna1

WHERE kunnr IN s_kunnr.

LOOP AT gt_kna1.

gt_kna1-selected = 'X'.

gt_kna1-record = sy-tabix.

modify gt_kna1 index sy-tabix. "add this extra statement

ENDLOOP.

With this all entries will be displayed checked in output.

Read only

Former Member
0 Likes
1,910

Have u solved ur problem,

refer this code if u want furtehr help.

END-OF-SELECTION.
  lines = sy-linno - 1.
SET PF-STATUS 'ZSTATUS'.

AT USER-COMMAND.
      wa_output-cb = space.
      SET PF-STATUS 'ZSTATUS' EXCLUDING 'SAVE'.
      DO lines TIMES.
        READ LINE sy-index FIELD VALUE wa_output-cb.
          IF wa_output-cb = 'X'.
        MODIFY i_output  FROM wa_output INDEX sy-tabix TRANSPORTING cb.
        ENDIF.
      ENDDO.

CASE sy-ucomm.
WHEN 'SAVE'.
      DELETE i_output WHERE cb = 'X'.

  ULINE.
  FORMAT INTENSIFIED OFF.
  FORMAT COLOR COL_HEADING.
  WRITE:/001 'CB' ,
         003 'Material No',
         015 'Mat type',
         024 'Mat group'.

  FORMAT COLOR OFF.
  FORMAT INTENSIFIED ON.
  ULINE.

  IF NOT i_output[] IS INITIAL.
    LOOP AT i_output INTO wa_output.
      WRITE:/001 wa_output-cb AS checkbox,
             003 wa_output-matnr,
             015 wa_output-mtart,
             024 wa_output-matkl.
      CLEAR wa_output.
    ENDLOOP.
  ENDIF.

WHEN 'BACK'.
LEAVE SCREEN.
ENDCASE.

revert back if u have any clarifications.

Reward and close the thraed.