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

Need Check Boxes in Table Control

Former Member
0 Likes
1,224

Hi Friends,

My Requirement.

In the screen i will give a PR Number, and the items will be displayed in the below table control, there i need a frist field as check box,, so that if the user want to cancel few items in the PR, then he selects the check boxes and save , in back ground i have written code for cancelling PR items.

How to add the frist field as check box.?

Regards

Kumar M

Hi Friends,

My Requirement.

In the screen i will give a PR Number, and the items will be displayed in the below table control, there i need a frist field as check box,, so that if the user want to cancel few items in the PR, then he selects the check boxes and save , in back ground i have written code for cancelling PR items.

How to add the frist field as check box.?

Regards

Kumar M

7 REPLIES 7
Read only

Former Member
0 Likes
1,184

Hi,

Instead of using check box for ur requirement, u can use this alternate way. In screen layout there is one option. go to screen painter: attributes. there u can find the field W/SELCOLUMN. by enabling this u can find one selcolumn in ur tablecontrol. If u select that particular cell then the entire row will select.

Then u can do anything with ur code.

Hope this will help u.

Thanks.

Read only

Former Member
0 Likes
1,184

hi ,

in dialogue programming there is wizard if u use that u dont want write even for addition or cancelng there are some key for table control

Read only

Former Member
0 Likes
1,184

check following link

[http://www.abapcode.info/2008/09/alv-report-code-to-add-check-box-for.html]

Read only

abap_team
Explorer
0 Likes
1,184

Hi Kumar

I hope the following post will help u to solve the problem

Read only

Former Member
0 Likes
1,184

Hi,

please check the below one u may get it...

PARAMETERS: file1 LIKE rlgrap-filename.

************************************************************************

*Internal Table Declarations

************************************************************************

DATA: BEGIN OF itab OCCURS 0,

matnr(18) TYPE c, "MaterialNumber

werks(4) TYPE c, "Plant

vdatu(10) TYPE c, "Valid From Date

bdatu(10) TYPE c, "Valid To Date

lifnr(10) TYPE c, "Vendor Number

ekorg(4) TYPE c, "Purchasing Organization

feskz TYPE c, "Fixed

autet TYPE c, "MRP Indicator

END OF itab.

DATA: bdcdata LIKE TABLE OF bdcdata WITH HEADER LINE.

************************************************************************

*VARIABLES Declarations

************************************************************************

DATA: wa1 LIKE LINE OF itab. "Workarea for ITAB

DATA: n TYPE i, "Check

count TYPE i.

DATA: cnt(2), "Counter

wa(15). "Workarea to hold concatenatedvalue

DATA v_msg(100).

DATA: flag.

DATA: file TYPE string.

************************************************************************

*Initialization event

************************************************************************

INITIALIZATION.

************************************************************************

*At-selection-screen event

************************************************************************

*To provide Input help for file name

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file1.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = file1.

***********************************************************************

*START-OF-SELECTION EVENT

***********************************************************************

START-OF-SELECTION.

MOVE file1 TO file.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = file

filetype = 'ASC'

has_field_separator = 'X'

TABLES

data_tab = itab

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

OTHERS = 17.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

*To populate BDCDATA and start data transfer

LOOP AT itab .

  • To validate Plant range

IF itab-werks = '1000' OR itab-werks = '2000'

OR itab-werks = '1008'.

AT NEW werks.

CLEAR: n.

cnt = 1.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0200'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EORD-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EORD-MATNR'

itab-matnr.

PERFORM bdc_field USING 'EORD-WERKS'

itab-werks.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.

CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.

PERFORM bdc_field USING 'BDC_CURSOR'

wa.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

ENDAT.

IF n = 12.

READ TABLE bdcdata WITH KEY fval = '=BU'.

bdcdata-fval = '=NS'.

MODIFY bdcdata INDEX sy-tabix TRANSPORTING fval.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EORD-VDATU(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

cnt = 2.

n = 2.

ENDIF.

CONCATENATE 'EORD-VDATU(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-vdatu.

CONCATENATE 'EORD-BDATU(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-bdatu.

CONCATENATE 'EORD-LIFNR(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-lifnr.

CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-ekorg.

CONCATENATE 'RM06W-FESKZ(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-feskz.

CONCATENATE 'EORD-AUTET(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-autet.

IF n <> 12.

n = cnt.

ENDIF.

cnt = cnt + 1.

AT END OF werks.

CALL TRANSACTION 'ME01' USING bdcdata

UPDATE 'S'

MODE 'A'.

CLEAR:bdcdata,bdcdata[].

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

lang = 'EN'

no = sy-msgno

v1 = sy-msgv1

v2 = sy-msgv2

v3 = sy-msgv3

v4 = sy-msgv4

IMPORTING

msg = v_msg.

WRITE:/ v_msg.

CLEAR: bdcdata,bdcdata[],flag.

ENDAT.

ENDIF.

ENDLOOP.

----


  • Start new screen *

----


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM.

----


  • Insert field values

----


FORM bdc_field USING fnam fval.

IF NOT fval IS INITIAL.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDIF.

CLEAR wa.

ENDFORM.

Sample code 2

THis is example to upload the Bank details of the Vendor which has the TC.

REPORT zprataptable2

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA : BEGIN OF itab OCCURS 0,

i1 TYPE i,

lifnr LIKE rf02k-lifnr,

bukrs LIKE rf02k-bukrs,

ekorg LIKE rf02k-ekorg,

ktokk LIKE rf02k-ktokk,

anred LIKE lfa1-anred,

name1 LIKE lfa1-name1,

sortl LIKE lfa1-sortl,

land1 LIKE lfa1-land1,

akont LIKE lfb1-akont,

fdgrv LIKE lfb1-fdgrv,

waers LIKE lfm1-waers,

END OF itab.

DATA : BEGIN OF jtab OCCURS 0,

j1 TYPE i,

banks LIKE lfbk-banks,

bankl LIKE lfbk-bankl,

bankn LIKE lfbk-bankn,

END OF jtab.

DATA : cnt(4) TYPE n.

DATA : fdt(20) TYPE c.

DATA : c TYPE i.

INCLUDE bdcrecx1.

START-OF-SELECTION.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\first1.txt'

filetype = 'DAT'

TABLES

data_tab = itab.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\second.txt'

filetype = 'DAT'

TABLES

data_tab = jtab.

LOOP AT itab.

PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF02K-LIFNR'

itab-lifnr.

PERFORM bdc_field USING 'RF02K-BUKRS'

itab-bukrs.

PERFORM bdc_field USING 'RF02K-EKORG'

itab-ekorg.

PERFORM bdc_field USING 'RF02K-KTOKK'

itab-ktokk.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-LAND1'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFA1-ANRED'

itab-anred.

PERFORM bdc_field USING 'LFA1-NAME1'

itab-name1.

PERFORM bdc_field USING 'LFA1-SORTL'

itab-sortl.

PERFORM bdc_field USING 'LFA1-LAND1'

itab-land1.

PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-KUNNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

cnt = 0.

LOOP AT jtab WHERE j1 = itab-i1.

cnt = cnt + 1.

CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-banks.

CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankl.

CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankn.

IF cnt = 5.

cnt = 0.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=P+'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(02)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

ENDIF.

ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB1-FDGRV'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFB1-AKONT'

itab-akont.

PERFORM bdc_field USING 'LFB1-FDGRV'

itab-fdgrv.

PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB1-ZTERM'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB5-MAHNA'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0310'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFM1-WAERS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFM1-WAERS'

itab-waers.

PERFORM bdc_dynpro USING 'SAPMF02K' '0320'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-LIFNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

PERFORM bdc_transaction USING 'XK01'.

ENDLOOP.

PERFORM close_group.

Header file:

1 63190 0001 0001 0001 mr bal188 b in 31000 a1 inr

2 63191 0001 0001 0001 mr bal189 b in 31000 a1 inr

TC file:

1 in sb 11000

1 in sb 12000

1 in sb 13000

1 in sb 14000

1 in sb 15000

1 in sb 16000

1 in sb 17000

1 in sb 18000

1 in sb 19000

1 in sb 20000

1 in sb 21000

1 in sb 22000

2 in sb 21000

2 in sb 22000

Read only

Former Member
0 Likes
1,184

Hi ,

just go to the layout of the screen , than above the Element List arrow there is one window for

Dictionary and program fields click on that window .

Now give the field or table name and click on get from Prog or dictionay pushbutton .

Now select that field wich you want to make as check box and last option on that window is copy as

text , chkb , radb .

click on ckhb and enter .

now save and activate the screen .

your prob will solved . This will work definately .

Regards ,

Nilesh Jain .

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,184

Hi Kumar M,

Screen 8002 (with table control) --> select records --> press a button --> move records to another internal table --> use you code to these records in second internal table

Instead of placing a checkbox in a table control, you can use the selection column in the attributes of the table control on screen.

Requirement : if you select say 3 records in table control, you need to process these records

Take another internal table and work area same as the initial internal table and work area used in screen 8002.

On screen 8002, take a button with function code 'PROCESS', on which user clicks the selected records can be processes.

Now, use this code, its working:-

Take the names of the input/output fields as work_area-field_name and select column in table control as work_area-flag.

Also take a flag field of size 1 datatype character as the last field in the internal table and work area while declaration.

You must have passed a code in PBO of the screen for reading internal table into the table control.

So it reads the internal table into the table control whenever you perform any action on use command.

All you need to do is to write a code to modify the internal table form the table control while performing any user action.

Remember to change the LINE SEL option in attributes of table control as MULTIPLE.

At SCREEN LOGIC,


PROCESS BEFORE OUTPUT.
  MODULE status_8002. "for pf-status
 
  LOOP WITH CONTROL po_tab. "po_tab is name of table control
    MODULE pass_data. "to pass data into table control from internal table
  ENDLOOP.
 
PROCESS AFTER INPUT.
  MODULE user_command_8002. "to handle other user commands (back and exit)
 
  LOOP WITH CONTROL po_tab. "po_tab is name of table control
    MODULE modify_data. "to modify data from table control into internal table
    MODULE process_data. "to move selected records into another internal table
  ENDLOOP.

In PBO,


*&---------------------------------------------------------------------*
*&      Module  STATUS_8002 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_8002 OUTPUT.
  SET pf-status 'ZAB_PFSTA'. " pf-status
 
  DATA : line_count TYPE i.
 
  DESCIRBE TABLE it_ekpo
  LINES line_count.
 
  po_tab-lines = line_count + 10.
  " to make table control scrollable
ENDMODULE.                 " STATUS_8002  OUTPUT
 
*&---------------------------------------------------------------------*
*&      Module  PASS_DATA  OUTPUT
*&---------------------------------------------------------------------*
MODULE pass_data OUTPUT.
  READ TABLE it_ekpo into wa_ekpo INDEX po_tab-current_line.
ENDMODULE.                 " PASS_DATA  OUTPUT
"it_ekpo is internal table and wa_ekpo is the work area

In PAI,


*&---------------------------------------------------------------------*
*&      Module  MODIFY_DATA  INPUT
*&---------------------------------------------------------------------*
MODULE MODIFY_DATA INPUT.
  MODIFY IT_EKPO INDEX PO_TAB-CURRENT_LINE FROM WA_EKPO.
  "modify records from table control into the internal table
ENDMODULE.                 " MODIFY_DATA  INPUT
 
*&---------------------------------------------------------------------*
*&      Module  PROCESS_DATA  INPUT
*&---------------------------------------------------------------------*
MODULE PROCESS_DATA INPUT.
  CASE sy-ucomm.
    WHEN 'PROCESS'.
      IF wa_ekpo-flag = 'X'.
        wa_ekpo1 = wa_ekpo.
        APPEND wa_ekpo1 TO it_ekpo1. "if record selected move to another internal table
      ENDIF.
  ENDCASE.
  "modify records from table control into the internal table
ENDMODULE.                 " PROCESS_DATA  INPUT

Now if you select some records in this table control the values will retain in internal table.

After you select some records in the table control, you need to move the selected records into another internal table and process records as per required.

Hope this solves your problem.

Thanks & Regards,

Tarun Gambhir