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

Reg.Double click concept in classes

Former Member
0 Likes
918

Hello,

I had developed a program which is extracting data from kna1 and vbak table.Now i am facing a problem when iam using a concept called doubleclick.In my first screen data from kna1 table is displayed.Now i want to see respective data from vbak table when i double click one particular custnumber.How can i use concept doubleclick for that.can anybody explain me in detail.

1 ACCEPTED SOLUTION
Read only

uwe_schieferstein
Active Contributor
0 Likes
894

Hello Priyanka

The sample report ZUS_SDN_TWO_ALV_GRIDS_0 shows how to display sales orders per customer using two ALV grids.

&----


*& Report ZUS_SDN_TWO_ALV_GRIDS_0

*&

&----


*& Description: Display KNA1 in 1st ALV grid,

*& select VBAK data by double-clicking

&----


*& SDN:

&----


*& Screen '0100' contains no elements.

*& ok_code -> assigned to GD_OKCODE

*&

*& Flow logic:

  • PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

**

  • PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

*&

&----


REPORT zus_sdn_two_alv_grids.

DATA:

gd_repid TYPE syrepid,

gd_okcode TYPE ui_func,

*

go_docking TYPE REF TO cl_gui_docking_container,

go_splitter TYPE REF TO cl_gui_splitter_container,

go_cell_top TYPE REF TO cl_gui_container,

go_cell_bottom TYPE REF TO cl_gui_container,

go_grid1 TYPE REF TO cl_gui_alv_grid,

go_grid2 TYPE REF TO cl_gui_alv_grid,

gs_layout TYPE lvc_s_layo.

DATA:

gs_knb1 TYPE knb1,

gt_header TYPE STANDARD TABLE OF kna1,

gt_position TYPE STANDARD TABLE OF vbak.

----


  • CLASS lcl_eventhandler DEFINITION

----


*

----


CLASS lcl_eventhandler DEFINITION.

PUBLIC SECTION.

CLASS-DATA:

md_customer TYPE kunnr READ-ONLY.

CLASS-METHODS:

handle_double_click FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING

e_row

e_column

es_row_no

sender.

ENDCLASS. "lcl_eventhandler DEFINITION

----


  • CLASS lcl_eventhandler IMPLEMENTATION

----


*

----


CLASS lcl_eventhandler IMPLEMENTATION.

METHOD handle_double_click.

  • define local data

DATA:

ls_header LIKE LINE OF gt_header.

CHECK ( sender = go_grid1 ).

READ TABLE gt_header INTO ls_header INDEX e_row-index.

CHECK ( ls_header-kunnr IS NOT INITIAL ).

md_customer = ls_header-kunnr.

  • Triggers PAI of the dynpro with the specified ok-code

  • cl_gui_cfw=>set_new_ok_code( 'DETAIL' ). " not 4.6c

CALL METHOD cl_gui_cfw=>set_new_ok_code

EXPORTING

new_code = 'DETAIL'

  • IMPORTING

  • RC =

.

ENDMETHOD. "handle_double_click

ENDCLASS. "lcl_eventhandler IMPLEMENTATION

START-OF-SELECTION.

SELECT * FROM kna1 INTO TABLE gt_header UP TO 500 ROWS.

  • 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.

CALL METHOD go_docking->set_extension

EXPORTING

extension = 99999 " full-screen

EXCEPTIONS

cntl_error = 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.

  • Create splitter container

CREATE OBJECT go_splitter

EXPORTING

parent = go_docking

rows = 2

columns = 1

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

cntl_error = 1

cntl_system_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.

  • Get cell container

CALL METHOD go_splitter->get_container

EXPORTING

row = 1

column = 1

RECEIVING

container = go_cell_top.

CALL METHOD go_splitter->get_container

EXPORTING

row = 2

column = 1

RECEIVING

container = go_cell_bottom.

  • Create ALV grids

CREATE OBJECT go_grid1

EXPORTING

i_parent = go_cell_top

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.

  • Set event handler

SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.

CREATE OBJECT go_grid2

EXPORTING

i_parent = go_cell_bottom

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.

  • Display data

gs_layout-grid_title = 'Customers'.

CALL METHOD go_grid1->set_table_for_first_display

EXPORTING

i_structure_name = 'KNA1'

is_layout = gs_layout

CHANGING

it_outtab = gt_header

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.

gs_layout-grid_title = 'Sales Order per Customer'.

CALL METHOD go_grid2->set_table_for_first_display

EXPORTING

i_structure_name = 'VBAK'

is_layout = gs_layout

CHANGING

it_outtab = gt_position " empty !!!

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.

  • 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.

  • NOTE: dynpro does not contain any elements

CALL SCREEN '0100'.

  • Flow logic of dynpro (does not contain any dynpro elements):

*

*PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

**

*PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

END-OF-SELECTION.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"

  • SET TITLEBAR 'xxx'.

  • Refresh display of detail ALV list

CALL METHOD go_grid2->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

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.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

CASE gd_okcode.

WHEN 'BACK' OR

'END' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

  • User has pushed button "Display Details"

WHEN 'DETAIL'.

PERFORM entry_show_details.

WHEN OTHERS.

ENDCASE.

CLEAR: gd_okcode.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form ENTRY_SHOW_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM entry_show_details .

  • define local data

DATA:

ld_title TYPE lvc_title.

SELECT * FROM vbak INTO TABLE gt_position

WHERE kunnr = lcl_eventhandler=>md_customer. " Sold-to-party

CONCATENATE 'Sales Order of customer' lcl_eventhandler=>md_customer

INTO ld_title

SEPARATED BY space.

CALL METHOD go_grid2->set_gridtitle

EXPORTING

i_gridtitle = ld_title.

ENDFORM. " ENTRY_SHOW_DETAILS

Regards

Uwe

Hello,

I had developed a program which is extracting data from kna1 and vbak table.Now i am facing a problem when iam using a concept called doubleclick.In my first screen data from kna1 table is displayed.Now i want to see respective data from vbak table when i double click one particular custnumber.How can i use concept doubleclick for that.can anybody explain me in detail.

7 REPLIES 7
Read only

Former Member
0 Likes
894

Hi Priyanka ,

Check the code below:

&----


*& Report Z_INTERACTIVEREPORT1 *

*& *

&----


*& OBJECTIVE: The objective of this report is to display one basic list

*& from which we can access two secondary lists.The user can move to

*& transaction 'MM02' by clicking on matnr value in the second

*& secondary list. *

&----


REPORT z_interactivereport1 NO STANDARD PAGE HEADING LINE-SIZE 255.

  • PROVIDE TABLES WORK AREA IN THE APPLICATION SERVER.

TABLES: lfa1,ekko,ekpo,mara.

  • DESIGN SELECTION SCREEN WITH SELECT-OPTIONS.

SELECT-OPTIONS: vendor FOR lfa1-lifnr.

  • DEFINE STRUCTURE FOR BASIC LIST.

TYPES: BEGIN OF s_lfa1,

vendor TYPE lfa1-lifnr,

name1 TYPE lfa1-name1,

END OF s_lfa1.

  • DEFINE AN INTERNAL TABLE BASED ON S_KNA1 STRUCTURE.

DATA: it_lfa1 TYPE STANDARD TABLE OF s_lfa1 WITH HEADER LINE WITH

DEFAULT

KEY.

  • DEFINE STRUCTURE FOR FIRST SECONDARY LIST.

TYPES: BEGIN OF s_ekko,

ebeln TYPE ekko-ebeln,

aedat TYPE ekko-aedat,

END OF s_ekko.

  • DEFINE AN INTERNAL TABLE BASED ON S_EKKO STRUCTURE.

DATA: it_ekko TYPE STANDARD TABLE OF s_ekko WITH HEADER LINE WITH

DEFAULT KEY.

  • DEFINE STRUCTURE FOR SECOND SECONDARY LIST.

TYPES: BEGIN OF s_ktab,

ebelp TYPE ekpo-ebelp,

matnr TYPE mara-matnr,

END OF s_ktab.

  • DEFINE AN INTERNAL TABLE BASED ON S_KTAB STRUCTURE.

DATA: it_ktab TYPE STANDARD TABLE OF s_ktab WITH HEADER LINE WITH

DEFAULT KEY.

  • DEFINE VARIABLES FOR GET CURSOR LOGIC.

DATA: fname(10), fval(10).

  • PROVIDE LOGIC TO PASS DEFAULT VALUES TO SELECTION-SCREEN.

INITIALIZATION.

vendor-low = 1000.

vendor-high = 1007.

vendor-sign = 'I'.

vendor-option = 'BT'.

APPEND vendor.

  • PROVIDE LOGIC REQUIRED FOR BASIC LIST.

START-OF-SELECTION.

SELECT lifnr name1 FROM lfa1 INTO TABLE it_lfa1 WHERE

lifnr IN vendor.

  • PROCESSING SCREEN LOGIC FOR BASIC LIST.

LOOP AT it_lfa1.

WRITE:/ it_lfa1-vendor HOTSPOT, it_lfa1-name1.

HIDE it_lfa1-vendor.

ENDLOOP.

  • PROVIDE logic for first secondary list.

AT LINE-SELECTION.

CASE sy-lsind.

WHEN 1.

SELECT ebeln aedat FROM ekko INTO TABLE it_ekko WHERE lifnr =

it_lfa1-vendor.

  • PROCESSING SCREEN LOGIC FOR first secondary list.

LOOP AT it_ekko.

WRITE:/ it_ekko-ebeln HOTSPOT, it_ekko-aedat.

HIDE it_ekko-ebeln.

ENDLOOP.

  • PROVIDE LOGIC REQUIRED FOR SECOND SECONDARY LIST.

WHEN 2.

SELECT ekpoebelp maramatnr INTO it_ktab FROM ekpo INNER JOIN mara ON

ekpomatnr = maramatnr.

APPEND it_ktab.

ENDSELECT.

  • PROCESSING SCREEN LOGIC FOR SECOND SECONDARY LIST.

LOOP AT it_ktab.

WRITE:/ it_ktab-ebelp, it_ktab-matnr HOTSPOT.

HIDE it_ktab-matnr.

ENDLOOP.

  • PROVIDE LOGIC TO MOVE THE CURSOR FROM REPORT TO TRANSACTION.

WHEN 3.

GET CURSOR FIELD fname VALUE fval.

  • PROVIDE THE MEMORY ID OF THE FIELD.

SET PARAMETER ID 'MAT' FIELD fval.

  • PROVIDE LOGIC TO MOVE TO SCREEN.

CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.

ENDCASE.

  • PROVIDE THE LOGIC TO MAINTAIN HEADERS.

TOP-OF-PAGE.

WRITE:/ 'VENDOR DETAILS'.

TOP-OF-PAGE DURING LINE-SELECTION.

CASE sy-lsind.

WHEN 1.

WRITE:/ 'First Secondary List'.

WHEN 2.

WRITE:/ 'Second Secondary List'.

ENDCASE.

Kindly Reward Points If You Find The Reply Helpful.

Cheers,

Chaitanya.

Read only

0 Likes
894

Thanx 4 u'r reply.But i need the same by using objects.

Read only

Former Member
0 Likes
894

Hi,

For this you have to create a local class whose definition will look like this...

CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

*---Double-click handler

handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row e_column.

ENDCLASS.

And the implementation of this class will look like this...

CLASS lcl_event_receiver IMPLEMENTATION.

*================Handle Double-Click=============

METHOD handle_double_click.

DATA: lv_value TYPE char40.

*---Check for the field on which double-click is made and display

*---corresponding details.

CASE e_column-fieldname.

WHEN 'AUFNR'.

*---Get current cell value which will be work order number.

CLEAR: lv_value.

CALL METHOD v_detgrid->get_current_cell

IMPORTING

e_value = lv_value.

*---Display the work order in transaction IW33

SET PARAMETER ID 'ANR' FIELD lv_value.

CALL TRANSACTION 'IW33' AND SKIP FIRST SCREEN.

ENDCASE.

ENDMETHOD. "handle_double_click

ENDCLASS.

Give me a shot if you need further details...

You may have a look at my sample report ZUS_SDN_THREE_ALV_GRIDS in thread

ALV

Reward points if found helpful...

Cheers,

Chandra Sekhar.

Read only

0 Likes
894

Thanx .I got the program.

Read only

Former Member
0 Likes
894

hi,

try like this

&----


*& Report ZALV_OOP

*&

&----


*&

*&

&----


REPORT zalv_oop.

----


  • CLASS lcl_event_handler DEFINITION

----


*

----


CLASS lcl_event_handler DEFINITION .

PUBLIC SECTION .

METHODS:

*--Double-click control

handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row e_column es_row_no.

PRIVATE SECTION.

ENDCLASS. "lcl_event_handler DEFINITION

----


  • CLASS lcl_event_handler IMPLEMENTATION

----


*

----


CLASS lcl_event_handler IMPLEMENTATION .

*--Handle Double Click

METHOD handle_double_click .

PERFORM handle_double_click USING e_row e_column es_row_no .

ENDMETHOD . "handle_double_click

ENDCLASS . "lcl_event_handler IMPLEMENTATION

TABLES : mseg.

DATA : BEGIN OF itab OCCURS 0,

mblnr LIKE mseg-mblnr,

matnr LIKE mseg-matnr,

menge LIKE mseg-menge,

END OF itab.

DATA : gr_alvgrid TYPE REF TO cl_gui_alv_grid,

gr_ccontainer TYPE REF TO cl_gui_custom_container,

gt_fcat TYPE lvc_t_fcat,

gs_layo TYPE lvc_s_layo.

DATA gr_event_handler TYPE REF TO lcl_event_handler .

DATA : ok_code LIKE sy-ucomm.

DATA : t_mat LIKE mara-matnr.

SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_mblnr FOR mseg-mblnr.

SELECTION-SCREEN : END OF BLOCK blk1.

START-OF-SELECTION.

SET SCREEN 100.

CREATE OBJECT gr_event_handler .

PERFORM get_data.

PERFORM dis_data.

&----


*& Form get_data

&----


  • text

----


FORM get_data.

SELECT mblnr matnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab

WHERE mblnr IN s_mblnr.

ENDFORM. "get_data

&----


*& Form dis_data

&----


  • text

----


FORM dis_data.

IF gr_alvgrid IS INITIAL.

CREATE OBJECT gr_ccontainer

EXPORTING

container_name = 'CC_ALV'

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

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 OBJECT gr_alvgrid

EXPORTING

i_parent = gr_ccontainer

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

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.

PERFORM create_fcat CHANGING gt_fcat.

PERFORM create_layout CHANGING gs_layo.

CALL METHOD gr_alvgrid->set_table_for_first_display

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

  • I_SAVE = 'A'

  • I_DEFAULT = 'X'

is_layout = gs_layo

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

  • IR_SALV_ADAPTER =

CHANGING

it_outtab = itab[]

it_fieldcatalog = gt_fcat

  • IT_SORT =

  • IT_FILTER =

  • EXCEPTIONS

  • INVALID_PARAMETER_COMBINATION = 1

  • PROGRAM_ERROR = 2

  • TOO_MANY_LINES = 3

  • 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.

SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid .

ENDIF.

ENDFORM. "dis_data

&----


*& Form create_fcat

&----


  • text

----


  • <--P_GT_FCAT text

----


FORM create_fcat CHANGING pt_fcat TYPE lvc_t_fcat.

DATA : ls_fcat TYPE lvc_s_fcat.

ls_fcat-fieldname = 'MBLNR'.

ls_fcat-coltext = 'Material Doc.'.

APPEND ls_fcat TO pt_fcat.

ls_fcat-fieldname = 'MATNR'.

ls_fcat-coltext = 'Material'.

APPEND ls_fcat TO pt_fcat.

ls_fcat-fieldname = 'MENGE'.

ls_fcat-coltext = 'Quantity'.

APPEND ls_fcat TO pt_fcat.

ENDFORM. " create_fcat

&----


*& Form create_layout

&----


  • text

----


  • <--P_GS_LAYO text

----


FORM create_layout CHANGING ps_layo TYPE lvc_s_layo.

ps_layo-zebra = 'X'.

ENDFORM. " create_layout

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'ZALV_OOP'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

ok_code = sy-ucomm.

CASE ok_code.

WHEN 'BACK' OR 'UP' OR 'CANC'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form handle_double_click

&----


  • text

----


  • -->I_ROW text

  • -->I_COLUMN text

  • -->IS_ROW_NO text

----


FORM handle_double_click USING i_row TYPE lvc_s_row

i_column TYPE lvc_s_col

is_row_no TYPE lvc_s_roid.

READ TABLE itab INDEX is_row_no-row_id .

IF sy-subrc = 0 .

IF i_column = 'MATNR'.

t_mat = itab-matnr.

SET PARAMETER ID 'MAT' FIELD t_mat.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

SET PARAMETER ID 'MAT' FIELD space.

ELSEIF i_column = 'MBLNR'.

CALL TRANSACTION 'MIGO'.

ENDIF .

ENDIF.

ENDFORM . "handle_double_click

reward if useful....

Read only

uwe_schieferstein
Active Contributor
0 Likes
895

Hello Priyanka

The sample report ZUS_SDN_TWO_ALV_GRIDS_0 shows how to display sales orders per customer using two ALV grids.

&----


*& Report ZUS_SDN_TWO_ALV_GRIDS_0

*&

&----


*& Description: Display KNA1 in 1st ALV grid,

*& select VBAK data by double-clicking

&----


*& SDN:

&----


*& Screen '0100' contains no elements.

*& ok_code -> assigned to GD_OKCODE

*&

*& Flow logic:

  • PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

**

  • PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

*&

&----


REPORT zus_sdn_two_alv_grids.

DATA:

gd_repid TYPE syrepid,

gd_okcode TYPE ui_func,

*

go_docking TYPE REF TO cl_gui_docking_container,

go_splitter TYPE REF TO cl_gui_splitter_container,

go_cell_top TYPE REF TO cl_gui_container,

go_cell_bottom TYPE REF TO cl_gui_container,

go_grid1 TYPE REF TO cl_gui_alv_grid,

go_grid2 TYPE REF TO cl_gui_alv_grid,

gs_layout TYPE lvc_s_layo.

DATA:

gs_knb1 TYPE knb1,

gt_header TYPE STANDARD TABLE OF kna1,

gt_position TYPE STANDARD TABLE OF vbak.

----


  • CLASS lcl_eventhandler DEFINITION

----


*

----


CLASS lcl_eventhandler DEFINITION.

PUBLIC SECTION.

CLASS-DATA:

md_customer TYPE kunnr READ-ONLY.

CLASS-METHODS:

handle_double_click FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING

e_row

e_column

es_row_no

sender.

ENDCLASS. "lcl_eventhandler DEFINITION

----


  • CLASS lcl_eventhandler IMPLEMENTATION

----


*

----


CLASS lcl_eventhandler IMPLEMENTATION.

METHOD handle_double_click.

  • define local data

DATA:

ls_header LIKE LINE OF gt_header.

CHECK ( sender = go_grid1 ).

READ TABLE gt_header INTO ls_header INDEX e_row-index.

CHECK ( ls_header-kunnr IS NOT INITIAL ).

md_customer = ls_header-kunnr.

  • Triggers PAI of the dynpro with the specified ok-code

  • cl_gui_cfw=>set_new_ok_code( 'DETAIL' ). " not 4.6c

CALL METHOD cl_gui_cfw=>set_new_ok_code

EXPORTING

new_code = 'DETAIL'

  • IMPORTING

  • RC =

.

ENDMETHOD. "handle_double_click

ENDCLASS. "lcl_eventhandler IMPLEMENTATION

START-OF-SELECTION.

SELECT * FROM kna1 INTO TABLE gt_header UP TO 500 ROWS.

  • 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.

CALL METHOD go_docking->set_extension

EXPORTING

extension = 99999 " full-screen

EXCEPTIONS

cntl_error = 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.

  • Create splitter container

CREATE OBJECT go_splitter

EXPORTING

parent = go_docking

rows = 2

columns = 1

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

cntl_error = 1

cntl_system_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.

  • Get cell container

CALL METHOD go_splitter->get_container

EXPORTING

row = 1

column = 1

RECEIVING

container = go_cell_top.

CALL METHOD go_splitter->get_container

EXPORTING

row = 2

column = 1

RECEIVING

container = go_cell_bottom.

  • Create ALV grids

CREATE OBJECT go_grid1

EXPORTING

i_parent = go_cell_top

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.

  • Set event handler

SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.

CREATE OBJECT go_grid2

EXPORTING

i_parent = go_cell_bottom

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.

  • Display data

gs_layout-grid_title = 'Customers'.

CALL METHOD go_grid1->set_table_for_first_display

EXPORTING

i_structure_name = 'KNA1'

is_layout = gs_layout

CHANGING

it_outtab = gt_header

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.

gs_layout-grid_title = 'Sales Order per Customer'.

CALL METHOD go_grid2->set_table_for_first_display

EXPORTING

i_structure_name = 'VBAK'

is_layout = gs_layout

CHANGING

it_outtab = gt_position " empty !!!

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.

  • 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.

  • NOTE: dynpro does not contain any elements

CALL SCREEN '0100'.

  • Flow logic of dynpro (does not contain any dynpro elements):

*

*PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

**

*PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

END-OF-SELECTION.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"

  • SET TITLEBAR 'xxx'.

  • Refresh display of detail ALV list

CALL METHOD go_grid2->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

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.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

CASE gd_okcode.

WHEN 'BACK' OR

'END' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

  • User has pushed button "Display Details"

WHEN 'DETAIL'.

PERFORM entry_show_details.

WHEN OTHERS.

ENDCASE.

CLEAR: gd_okcode.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form ENTRY_SHOW_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM entry_show_details .

  • define local data

DATA:

ld_title TYPE lvc_title.

SELECT * FROM vbak INTO TABLE gt_position

WHERE kunnr = lcl_eventhandler=>md_customer. " Sold-to-party

CONCATENATE 'Sales Order of customer' lcl_eventhandler=>md_customer

INTO ld_title

SEPARATED BY space.

CALL METHOD go_grid2->set_gridtitle

EXPORTING

i_gridtitle = ld_title.

ENDFORM. " ENTRY_SHOW_DETAILS

Regards

Uwe

Read only

0 Likes
894

Thanx for u'r detail explanation.