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

ALV using Oops...

Former Member
0 Likes
390

Hi,

is it pssblt o select a particular row in alv using Oops??

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
359

Hi Chris,

check this link....

reward if useful...

regards,

Shashi..

2 REPLIES 2
Read only

Former Member
0 Likes
360

Hi Chris,

check this link....

reward if useful...

regards,

Shashi..

Read only

Former Member
0 Likes
359

Hi,

You have to use method SET_SELECTED_ROWS.

Here have a look at a sample report ZUS_SDN_ALV_EDITABLE_1A (routine SET_SELECTED_ROWS):

&----


*& Report ZUS_SDN_ALV_EDITABLE

*&

&----


  • Flow logic of screen '100' (no elements, ok-code => gd_okcode 😞

**PROCESS BEFORE OUTPUT.

    • MODULE STATUS_0100.

***

**PROCESS AFTER INPUT.

    • MODULE USER_COMMAND_0100.

&----


REPORT zus_sdn_alv_editable_1a.

TYPE-POOLS: abap.

CONSTANTS:

gc_tabname TYPE tabname VALUE 'KNB1'.

TYPES: BEGIN OF ty_s_outtab.

INCLUDE TYPE knb1.

TYPES: END OF ty_s_outtab.

TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab

WITH DEFAULT KEY.

DATA:

gd_okcode TYPE ui_func,

gd_repid TYPE syst-repid,

*

gt_fcat TYPE lvc_t_fcat,

gs_layout TYPE lvc_s_layo,

gs_variant TYPE disvariant,

go_docking TYPE REF TO cl_gui_docking_container,

go_grid TYPE REF TO cl_gui_alv_grid.

DATA:

gs_outtab TYPE ty_s_outtab,

gt_outtab TYPE ty_t_outtab,

gt_outtab_pbo TYPE ty_t_outtab.

DATA:

gd_answer TYPE c.

START-OF-SELECTION.

SELECT * FROM (gc_tabname) INTO TABLE gt_outtab UP TO 99 ROWS.

gt_outtab_pbo = gt_outtab. " set PBO data

PERFORM init_controls.

  • ok-code field = GD_OKCODE

CALL SCREEN '0100'.

END-OF-SELECTION.

&----


*& Form INIT_CONTROLS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM init_controls .

  • Create docking container

CREATE OBJECT go_docking

EXPORTING

parent = cl_gui_container=>screen0

ratio = 90

EXCEPTIONS

OTHERS = 6.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • Create ALV grid

CREATE OBJECT go_grid

EXPORTING

i_parent = go_docking

EXCEPTIONS

OTHERS = 5.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

" NOTE: not required

  • set handler:

  • lcl_eventhandler=>handle_data_changed for go_grid.

  • Build fieldcatalog and set hotspot for field KUNNR

PERFORM build_fieldcatalog.

PERFORM set_layout_and_variant.

  • Display data

CALL METHOD go_grid->set_table_for_first_display

EXPORTING

is_layout = gs_layout

is_variant = gs_variant

i_save = 'A'

CHANGING

it_outtab = gt_outtab

it_fieldcatalog = gt_fcat

EXCEPTIONS

OTHERS = 4.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • NOTE:

  • Documenation of I_SAVE ("An Easy Reference for ALV Grid Control")

*I_SAVE

*Determines the options available to the user for saving a layout:

*? 'X': global saving only

*? 'U': user-specific saving only

*? 'A': corresponds to 'X' and 'U'

*? SPACE: no saving

PERFORM set_selected_rows.

  • Link the docking container to the target dynpro

gd_repid = syst-repid.

CALL METHOD go_docking->link

EXPORTING

repid = gd_repid

dynnr = '0100'

  • CONTAINER =

EXCEPTIONS

OTHERS = 4.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " INIT_CONTROLS

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_0100'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

" NOTE: retrieve changed data from frontend (grid control) into

" the backend (itab in ABAP)

go_grid->check_changed_data( ).

CASE gd_okcode.

WHEN 'BACK' OR

'EXIT' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

WHEN 'SAVE'.

IF ( gt_outtab = gt_outtab_pbo ).

MESSAGE 'No data changed' TYPE 'S'.

ELSE.

CLEAR: gd_answer.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

  • TITLEBAR = ' '

  • DIAGNOSE_OBJECT = ' '

text_question = 'Save data?'

  • TEXT_BUTTON_1 = 'Ja'(001)

  • ICON_BUTTON_1 = ' '

  • TEXT_BUTTON_2 = 'Nein'(002)

  • ICON_BUTTON_2 = ' '

  • DEFAULT_BUTTON = '1'

  • DISPLAY_CANCEL_BUTTON = 'X'

  • USERDEFINED_F1_HELP = ' '

  • START_COLUMN = 25

  • START_ROW = 6

  • POPUP_TYPE =

  • IV_QUICKINFO_BUTTON_1 = ' '

  • IV_QUICKINFO_BUTTON_2 = ' '

IMPORTING

answer = gd_answer

  • TABLES

  • PARAMETER =

EXCEPTIONS

text_not_found = 1

OTHERS = 2.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF ( gd_answer = '1' ). " yes

MESSAGE 'Data successfully saved' TYPE 'S'.

gt_outtab_pbo = gt_outtab. " update PBO data !!!

ELSE.

MESSAGE 'Action cancelled by user' TYPE 'S'.

ENDIF.

ENDIF.

WHEN OTHERS.

ENDCASE.

CLEAR: gd_okcode.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form BUILD_FIELDCATALOG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_fieldcatalog .

  • define local data

DATA:

ls_fcat TYPE lvc_s_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = gc_tabname

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = gt_fcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ls_fcat-edit = abap_true.

MODIFY gt_fcat FROM ls_fcat

TRANSPORTING edit

WHERE ( key NE abap_true ).

ENDFORM. " BUILD_FIELDCATALOG

&----


*& Form SET_LAYOUT_AND_VARIANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM set_layout_and_variant .

CLEAR: gs_layout,

gs_variant.

gs_layout-cwidth_opt = abap_true.

gs_layout-zebra = abap_true.

gs_variant-report = syst-repid.

gs_variant-handle = 'GRID'.

ENDFORM. " SET_LAYOUT_AND_VARIANT

&----


*& Form SET_SELECTED_ROWS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM set_selected_rows .

  • define local data

DATA: ls_row TYPE lvc_s_row,

lt_rows TYPE lvc_t_row.

ls_row-index = 1.

APPEND ls_row TO lt_rows.

ls_row-index = 3.

APPEND ls_row TO lt_rows.

ls_row-index = 5.

APPEND ls_row TO lt_rows.

CALL METHOD go_grid->set_selected_rows

EXPORTING

it_index_rows = lt_rows

  • it_row_no =

  • is_keep_other_selections =

.

ENDFORM. " SET_SELECTED_ROWS

reward if helpful,

regards,

preet