cancel
Showing results for 
Search instead for 
Did you mean: 

check box in report

Former Member
0 Kudos

I have a field GW_FINAL-DECISION of char1 in an internal table.

After executing the selection screen the data from internal table is displayed on the list using write statements.

WRITE : GW_FINAL-DECISION AS CHECKBOX.

when I select the check box from the list, the value of the internal table is to be updated as 'X'.

please help me in this regard ASAP.

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

If u want to display a check box in the report means u want to use a parameter

t_layout-box_fieldname = 'RSMARK'. in the ALV layout area..

Also plz declare this in the iinternal tableas a char field

REWARD if useful

try this

&----


*& Report YITRSDREP_SHPNG_END *

*& *

&----


*& Created By : A.Thuyavan

*

*& Created On : 16.07.2006

*

&----


REPORT ZITRSDREP_SHPNG_END.

TYPE-POOLS : slis.

DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

G_REPID LIKE SY-REPID,

G_EVENTS TYPE SLIS_T_EVENT,

G_EVENTWA TYPE SLIS_ALV_EVENT,

T_LAYOUT TYPE SLIS_LAYOUT_ALV.

Data:

Begin Of Intab Occurs 0.

INCLUDE STRUCTURE VTTK.

Data: VendName(40),

AdditionalText1(40),

AdditionalText2(40),

rsmark(1),

line_color(4) type c.

Data: End Of Intab.

DATA: BEGIN OF BDCDATA OCCURS 0.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDCDATA.

Data : Begin Of VenTab Occurs 0,

Lifnr Like Lfa1-Lifnr,

Name1 Like Lfa1-Name1,

End Of VenTab.

TABLES : VTTK.

SELECT-OPTIONS :

TKNUM FOR VTTK-TKNUM,

TDLNR FOR VTTK-TDLNR,

TPLST FOR VTTK-TPLST,

DATBG FOR VTTK-DATBG NO-EXTENSION,

VSBED FOR VTTK-VSBED.

INITIALIZATION.

G_REPID = SY-REPID.

Start-of-selection.

PERFORM RETREIVE-DATA.

PERFORM GET-VENDOR-NAME.

PERFORM SET-LAYOUT.

PERFORM fieldcat_init USING gt_fieldcat[].

PERFORM FUNC_REUSE_ALV.

&----


*& Form SET-LAYOUT

&----


  • text

----


FORM SET-LAYOUT.

T_LAYOUT-ZEBRA = 'X'.

T_LAYOUT-GET_SELINFOS = 'X'.

T_LAYOUT-DETAIL_POPUP = 'X'.

  • T_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

  • G_EVENTWA-NAME = 'TOP_OF_PAGE'.

  • G_EVENTWA-FORM = 'TOP_OF_PAGE'.

t_layout-box_fieldname = 'RSMARK'.

T_layout-coltab_fieldname = 'CELL_COLOR'.

APPEND G_EVENTWA TO G_EVENTS.

ENDFORM. "SET-LAYOUT

&----


*& Form FIELDCAT_INIT

&----


  • text

----


  • -->RT_FIELDCAT text

----


FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: POS TYPE I VALUE 0.

clear: ls_fieldcat, rt_fieldcat[].

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'TKNUM'.

LS_FIELDCAT-TABNAME = 'INTAB'.

LS_FIELDCAT-REF_FIELDNAME = 'TKNUM'.

LS_FIELDCAT-REF_TABNAME = 'VTTK'.

LS_FIELDCAT-DO_SUM = 'X'.

ls_fieldcat-key = 'X'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'TDLNR'.

LS_FIELDCAT-TABNAME = 'INTAB'.

LS_FIELDCAT-REF_FIELDNAME = 'TDLNR'.

LS_FIELDCAT-REF_TABNAME = 'VTTK'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'VENDNAME'.

LS_FIELDCAT-TABNAME = 'INTAB'.

LS_FIELDCAT-REF_FIELDNAME = 'NAME1'.

LS_FIELDCAT-REF_TABNAME = 'LFA1'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'SIGNI'.

LS_FIELDCAT-TABNAME = 'INTAB'.

LS_FIELDCAT-REF_FIELDNAME = 'SIGNI'.

LS_FIELDCAT-REF_TABNAME = 'VTTK'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'TEXT1'.

LS_FIELDCAT-TABNAME = 'INTAB'.

  • LS_FIELDCAT-REF_FIELDNAME = 'TEXT1'.

  • LS_FIELDCAT-REF_FIELDNAME = 'VTTK'.

  • ls_fieldcat-seltext_L = 'TEXT1'.

ls_fieldcat-seltext_l = 'Additional.Text1 '.

ls_fieldcat-outputlen = 40.

ls_fieldcat-datatype = 'CHAR'.

ls_fieldcat-Input = 'X'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

POS = POS + 1.

ls_fieldcat-col_pos = POS.

LS_FIELDCAT-FIELDNAME = 'TEXT2'.

LS_FIELDCAT-TABNAME = 'INTAB'.

  • LS_FIELDCAT-REF_FIELDNAME = 'TEXT1'.

  • LS_FIELDCAT-REF_FIELDNAME = 'VTTK'.

  • ls_fieldcat-seltext_L = 'TEXT1'.

ls_fieldcat-seltext_l = 'Additional.Text2 '.

ls_fieldcat-outputlen = 40.

ls_fieldcat-datatype = 'CHAR'.

ls_fieldcat-Input = 'X'.

ls_fieldcat-no_out = 'X'.

append ls_fieldcat to rt_fieldcat.

ENDFORM. "FIELDCAT_INIT

&----


*& Form FUNC_REUSE_ALV

&----


  • text

----


FORM FUNC_REUSE_ALV.

call function 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

i_callback_pf_status_set = 'SET_STANDARD'

i_callback_user_command = 'USER_COMMAND'

is_layout = t_layout

it_fieldcat = gt_fieldcat[]

I_SAVE = 'A'

IT_EVENTS = G_EVENTS[]

TABLES

T_OUTTAB = INTAB

EXCEPTIONS

program_error = 1

others = 2.

ENDFORM. "FUNC_REUSE_ALV

&----


*& Form RETREIVE-DATA

&----


  • text

----


FORM RETREIVE-DATA.

SELECT * INTO TABLE INTAB

FROM VTTK WHERE Tknum In Tknum

And TDLNR IN TDLNR

AND TPLST IN TPLST

AND DATBG IN DATBG

AND VSBED IN VSBED

AND STTEN = '' .

ENDFORM. "RETREIVE-DATA

&----


*& Form set_standard

&----


  • text

----


  • -->EXTAB text

----


Form set_standard using extab type slis_t_extab. "REUSE

set pf-status 'STANDARD'.

EndForm. "set_standard

&----


*& Form user_command

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


Form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield. "REUSE

Case r_Ucomm.

When '&POST'.

Perform BDC-Close-Shipping.

Leave To Screen 0.

EndCase.

EndForm. "user_command

&----


*& Form BDC-Close-Shipping

&----


  • text

----


Form BDC-Close-Shipping.

Loop At Intab Where Rsmark = 'X'.

perform bdc_dynpro using 'SAPMV56A' '0011'.

perform bdc_field using 'BDC_CURSOR'

'VTTK-TKNUM'.

perform bdc_field using 'BDC_OKCODE'

'=UETP'.

perform bdc_field using 'VTTK-TKNUM'

Intab-Tknum. " '227634'.

  • To Select General Data Tab.

perform bdc_dynpro using 'SAPMSSY0' '0120'.

perform bdc_field using 'BDC_OKCODE'

'=TKAL'.

perform bdc_dynpro using 'SAPMV56A' '0020'.

perform bdc_field using 'BDC_OKCODE'

'=ST07'.

perform bdc_field using 'BDC_CURSOR'

'VTTK-VSBED'.

  • To Close Shipping

perform bdc_dynpro using 'SAPMV56A' '0020'.

perform bdc_field using 'BDC_OKCODE'

'=H_AI'.

perform bdc_field using 'BDC_CURSOR'

'VTTK-VSBED'.

  • To Update Text1 & 2

perform bdc_dynpro using 'SAPMV56A' '0020'.

perform bdc_field using 'BDC_OKCODE'

'=SICH'.

Perform bdc_field using 'BDC_CURSOR'

'VTTK-TEXT2'.

perform bdc_field using 'VTTK-TEXT1'

Intab-Text1. " 'Test1'.

perform bdc_field using 'VTTK-TEXT2'

Intab-Text2. " 'Test2 Test3'.

Call transaction 'VT02' using bdcdata mode 'E' update 'S'.

Refresh BdcData.

EndLoop.

EndForm. "BDC-Close-Shipping

----


  • Start new screen *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. "BDC_DYNPRO

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDFORM. "BDC_FIELD

&----


*& Form Get-Vendor-Name

&----


  • text

----


Form Get-Vendor-Name.

Data : Currrow Type I.

If Not Intab[] is Initial.

Select Lifnr Name1 Into Table VenTab

From Lfa1

For All Entries In Intab

Where Lifnr = Intab-Tdlnr.

EndIf.

Loop At Intab.

Currrow = Sy-Tabix.

Read Table VenTab With Key Lifnr = Intab-Tdlnr.

If Sy-Subrc = 0.

Intab-VendName = Ventab-Name1.

Modify Intab Index Currrow..

EndIf.

EndLoop.

EndForm. "Get-Vendor-Name

Former Member
0 Kudos

hi,

i dont know therre may be a different way other ex[perts can suggest.

may be this may help

But what i had done was

this code was on user command on press of some button

LOOP AT itab ASSIGNING <fs_itab>.

READ LINE sy-tabix LINE VALUE INTO wa_itab.

*this will give you the complete record in the work area.

IF wa_itab-DECISION= 'X'.

*check if checkbox is ticked

<fs_itab>-DECISION = 'X'.

*update internal table and further processing if any

ENDIF.

ENDLOOP.

Former Member
0 Kudos

hi,

i dont know therre may be a different way other ex[perts can suggest.

may be this may help

But what i had done was

this code was on user command on press of some button

LOOP AT itab ASSIGNING <fs_itab>.

READ LINE sy-tabix LINE VALUE INTO wa_itab.

*this will give you the complete record in the work area.

IF wa_itab-DECISION= 'X'.

*check if checkbox is ticked

<fs_itab>-DECISION = 'X'.

*update internal table and further processing if any

ENDIF.

ENDLOOP.

Former Member
0 Kudos

Hi Reddy,

For this you have to use the handle_data_changed event.

eg :

&----


  • Event Handler Declarations

&----


----


  • CLASS lcl_event_receiver DEFINITION

----


CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid

IMPORTING er_data_changed.

ENDCLASS. "lcl_event_receiver DEFINITION

----


  • CLASS LCL_EVENT_RECEIVER IMPLEMENTATION

----


CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_data_changed.

PERFORM handle_data_changed USING er_data_changed.

ENDMETHOD. "handle_data_changed

ENDCLASS. "lcl_event_receiver IMPLEMENTATION

FORM handle_data_changed USING ir_data_changed

TYPE REF TO cl_alv_changed_data_protocol.

DATA: lwa_mod_cell TYPE lvc_s_modi,

lwa_row_no TYPE lvc_s_roid,

lwa_column_id TYPE lvc_s_col.

LOOP AT ir_data_changed->mt_mod_cells

INTO lwa_mod_cell.

CASE lwa_mod_cell-fieldname.

WHEN c_status.

CLEAR wa_final.

READ TABLE i_final INTO wa_final

INDEX lwa_mod_cell-row_id.

IF sy-subrc = 0.

wa_final-status = lwa_mod_cell-value.

wa_final-mark = 'X'.

MODIFY i_final FROM wa_final

INDEX lwa_mod_cell-row_id

TRANSPORTING status mark.

IF sy-subrc NE 0.

ENDIF.

ENDIF.

ENDCASE.

ENDLOOP.

ENDFORM. " handle_data_changed

Dont forget to register the events.

Reward If Useful.

Regards,

Chitra

Former Member
0 Kudos

use alv.

refer this

TYPE-POOLS slis. " Global ALV types

DATA : cdhdr TYPE cdhdr. " Change document header

SELECT-OPTIONS :

s_objcls FOR cdhdr-objectclas OBLIGATORY,

s_objtid FOR cdhdr-objectid,

s_chngnr FOR cdhdr-changenr,

s_usrnam FOR cdhdr-username DEFAULT sy-uname,

s_udate FOR cdhdr-udate DEFAULT sy-datum,

s_time FOR cdhdr-utime,

s_tcode FOR cdhdr-tcode,

s_plncnr FOR cdhdr-planchngnr,

s_chngno FOR cdhdr-act_chngno,

s_wsplnd FOR cdhdr-was_plannd,

s_chngid FOR cdhdr-change_ind.

SELECTION-SCREEN SKIP.

PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.

----


TYPES :

BEGIN OF ty_s_cdhdr.

INCLUDE STRUCTURE cdhdr.

TYPES : checkbox,

END OF ty_s_cdhdr,

BEGIN OF ty_s_cdpos.

INCLUDE STRUCTURE cdpos.

TYPES : checkbox,

END OF ty_s_cdpos.

----


DATA :

  • Layout for ALV

gs_layout TYPE slis_layout_alv,

  • Change document header

t_cdhdr TYPE TABLE OF ty_s_cdhdr.

----


START-OF-SELECTION.

  • Read Change document header

SELECT * INTO TABLE t_cdhdr

UP TO p_max ROWS

FROM cdhdr

WHERE objectclas IN s_objcls

and objectid in s_objtid

and changenr in s_chngnr

AND username IN s_usrnam

AND udate IN s_udate

AND utime IN s_time

AND tcode IN s_tcode

AND planchngnr IN s_plncnr

AND act_chngno IN s_chngno

AND was_plannd IN s_wsplnd

AND change_ind IN s_chngid.

gs_layout-zebra = 'X'.

gs_layout-colwidth_optimize = 'X'.

gs_layout-box_fieldname = 'CHECKBOX'.

  • Display ALV

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

i_structure_name = 'CDHDR'

is_layout = gs_layout

TABLES

t_outtab = t_cdhdr.

----


  • FORM USER_COMMAND *

----


FORM user_command USING u_ucomm TYPE syucomm

us_selfield TYPE slis_selfield. "#EC CALLED

  • Macro definition

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-up = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA :

ls_cdhdr TYPE ty_s_cdhdr,

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv,

  • Change document items

lt_cdpos TYPE TABLE OF ty_s_cdpos.

CASE u_ucomm.

WHEN '&IC1'.

PERFORM check_marked USING us_selfield.

  • Read Change document items

LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = 'X'.

SELECT * APPENDING TABLE lt_cdpos

FROM cdpos

WHERE objectclas = ls_cdhdr-objectclas

AND objectid = ls_cdhdr-objectid

AND changenr = ls_cdhdr-changenr.

ENDLOOP.

m_sort 'CHANGENR'.

  • Display ALV

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_structure_name = 'CDPOS'

is_layout = gs_layout

it_sort = lt_sort

TABLES

t_outtab = lt_cdpos.

ENDCASE.

ENDFORM. " USER_COMMAND

----


  • Form CHECK_MARKED

----


  • What has been marked in t_cdhdr

----


FORM check_marked USING us_selfield TYPE slis_selfield.

FIELD-SYMBOLS :

<cdhdr> TYPE ty_s_cdhdr.

READ TABLE t_cdhdr TRANSPORTING NO FIELDS WITH KEY checkbox = 'X'.

IF NOT sy-subrc IS INITIAL AND

NOT us_selfield-tabindex IS INITIAL.

READ TABLE t_cdhdr INDEX us_selfield-tabindex ASSIGNING <cdhdr>.

<cdhdr>-checkbox = 'X'.

ENDIF.

ENDFORM. " CHECK_MARKED

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

additional references:

REfer the program:

BCALV_EDIT_04

use code like this....

ElseiF w_fcat1-fieldname = 'CHEK_BOX'.

w_fcat1-col_pos = 1.

w_fcat1-seltext_l = 'EDIT'.

w_fcat1-Checkbox = 'X'.

w_fcat1-EDIT = 'X'.

MODIFY t_fcat1 FROM w_fcat1.

Regards

Vasu