Application Development 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: 

alv

Former Member
0 Kudos

i have header details in one layout. when click the header details i have to get the item details below that layout. how to do this requirement.

regards,

g.pavan kumar

4 REPLIES 4

Former Member
0 Kudos

u have to use secondary alv which is like interactive reports.

check below code which is used to secondary ALV...

&----


*& Report ZFI_DOC_STATUS_REPORT *

*& *

&----


*& *

*& *

&----


REPORT zfi_doc_status_report LINE-SIZE 120

LINE-COUNT 60

MESSAGE-ID zz.

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

  • TABLES *

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

TABLES: zfap_history,

bkpf,

bseg,

t001.

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

  • TYPE POOLS *

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

TYPE-POOLS: slis.

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

  • TYPES *

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

TYPES: BEGIN OF ty_zfap_history,

zbukrs TYPE bukrs,

zbelnr TYPE belnr_d,

zapprlevel TYPE zapprlevel,

zdate TYPE crdat,

ztime TYPE cvdicrtime,

zsapuserid TYPE zuserid,

zstatus TYPE zstat,

END OF ty_zfap_history,

BEGIN OF ty_doc_data,

blart TYPE blart,

budat TYPE budat,

stblg TYPE stblg,

stodt TYPE stodt,

waers TYPE waers,

kzwrs TYPE kzwrs,

bukrs TYPE bukrs,

belnr TYPE belnr_d,

END OF ty_doc_data,

BEGIN OF ty_final_data,

zbelnr TYPE belnr_d,

blart TYPE blart,

budat TYPE budat,

waers TYPE waers,

wrbtr TYPE wrbtr,

kzwrs TYPE kzwrs,

dmbe2 TYPE dmbe2,

name TYPE char80,

zdate TYPE crdat,

zstatus TYPE zstat,

stblg TYPE stblg,

stodt TYPE stodt,

writ TYPE char20,

time TYPE p decimals 2,

END OF ty_final_data,

BEGIN OF ty_sec_final,

zbelnr TYPE belnr_d,

name TYPE char80,

approver TYPE zrole_desc,

date TYPE zbegdat,

zstatus TYPE zstat,

END OF ty_sec_final,

BEGIN OF ty_time,

zbukrs type bukrs,

zbelnr type belnr_d,

diff type p decimals 2,

END OF ty_time.

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

  • I N T E R N A L T A B L E S *

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

DATA: it_zfap_history TYPE STANDARD TABLE OF ty_zfap_history,

wa_it_zfap_history TYPE ty_zfap_history,

it_temp1 TYPE STANDARD TABLE OF ty_zfap_history,

wa_it_temp1 TYPE ty_zfap_history,

it_temp2 TYPE STANDARD TABLE OF ty_zfap_history,

wa_it_temp2 TYPE ty_zfap_history,

it_zfap_hist TYPE STANDARD TABLE OF ty_zfap_history,

wa_it_zfap_hist TYPE ty_zfap_history,

it_doc_data TYPE STANDARD TABLE OF ty_doc_data,

wa_it_doc_data TYPE ty_doc_data,

it_final_data TYPE STANDARD TABLE OF ty_final_data,

wa_it_final_data TYPE ty_final_data,

it_sec_final TYPE STANDARD TABLE OF ty_sec_final,

wa_it_sec_final TYPE ty_sec_final,

it_time TYPE STANDARD TABLE OF ty_time,

wa_it_time TYPE ty_time,

it_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,

it_fcat_sec TYPE slis_t_fieldcat_alv WITH HEADER LINE.

*--Structure for layout settings

DATA: wa_layout TYPE slis_layout_alv.

*--Internal table and structure for events

DATA: it_events TYPE slis_t_event,

wa_events TYPE slis_alv_event.

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

  • Variable Declaration

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

DATA : w_doc_no TYPE belnr_d ,

w_repid TYPE sy-repid ,

w_diff TYPE p decimals 2.

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

  • S E L E C T I O N S C R E E N *

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

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.

SELECTION-SCREEN: SKIP.

SELECT-OPTIONS: s_bukrs FOR t001-bukrs,

s_blart FOR bkpf-blart,

s_crdat FOR zfap_history-zdate,

s_userid FOR zfap_history-zsapuserid,

s_budat FOR bkpf-budat.

SELECTION-SCREEN: END OF BLOCK b1.

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

  • S T A R T O F S E L E C T I O N *

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

START-OF-SELECTION.

  • to get history data

PERFORM get_history_data.

  • to get elpased time

PERFORM get_elapsed_time.

  • to get document data

PERFORM get_doc_data.

  • to move data to final table

PERFORM move_data.

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

  • E N D O F S E L E C T I O N *

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

END-OF-SELECTION.

  • to display data

PERFORM display_data.

  • to list secondary list

  • PERFORM sec_list_data.

&----


*& Form GET_HISTORY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_history_data .

SELECT zbukrs

zbelnr

zapprlevel

zdate

ztime

zsapuserid

zstatus

FROM zfap_history

INTO TABLE it_zfap_history

WHERE zbukrs IN s_bukrs AND

zdate IN s_crdat AND

zsapuserid IN s_userid AND

zstatus = 'Submitted'.

SELECT zbukrs

zbelnr

zapprlevel

zdate

ztime

zsapuserid

zstatus

FROM zfap_history

INTO TABLE it_zfap_hist

FOR ALL ENTRIES IN it_zfap_history

WHERE zbukrs = it_zfap_history-zbukrs

AND zbelnr = it_zfap_history-zbelnr.

ENDFORM. " GET_HISTORY_DATA

&----


*& Form GET_DOC_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_doc_data .

SELECT blart

budat

stblg

stodt

waers

kzwrs

bukrs

belnr

FROM bkpf

INTO TABLE it_doc_data

FOR ALL ENTRIES IN it_zfap_history

WHERE bukrs = it_zfap_history-zbukrs

AND belnr = it_zfap_history-zbelnr

AND blart IN s_blart

AND budat IN s_budat.

ENDFORM. " GET_DOC_DATA

&----


*& Form MOVE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM move_data .

DATA : l_wrbtr TYPE wrbtr,

l_dmbe2 TYPE dmbe2,

l_persnumber TYPE ad_persnum,

l_name_first TYPE ad_namefir,

l_name_last TYPE ad_namelas.

LOOP AT it_zfap_history INTO wa_it_zfap_history.

READ TABLE it_doc_data INTO wa_it_doc_data

WITH KEY bukrs = wa_it_zfap_history-zbukrs

belnr = wa_it_zfap_history-zbelnr.

IF sy-subrc = 0.

wa_it_final_data-zbelnr = wa_it_zfap_history-zbelnr.

wa_it_final_data-blart = wa_it_doc_data-blart.

wa_it_final_data-budat = wa_it_doc_data-budat.

wa_it_final_data-waers = wa_it_doc_data-waers.

IF wa_it_doc_data-kzwrs is INITIAL.

wa_it_final_data-kzwrs = 'USD'.

ELSE.

wa_it_final_data-kzwrs = wa_it_doc_data-kzwrs.

ENDIF.

wa_it_final_data-zdate = wa_it_zfap_history-zdate.

wa_it_final_data-zstatus = wa_it_zfap_history-zstatus.

wa_it_final_data-stblg = wa_it_doc_data-stblg.

wa_it_final_data-stodt = wa_it_doc_data-stodt.

SELECT SINGLE wrbtr dmbe2

FROM bseg

INTO (l_wrbtr, l_dmbe2)

WHERE bukrs = wa_it_doc_data-bukrs

AND belnr = wa_it_doc_data-belnr.

wa_it_final_data-wrbtr = l_wrbtr.

wa_it_final_data-dmbe2 = l_dmbe2.

SELECT SINGLE persnumber

FROM usr21

INTO l_persnumber

WHERE bname = wa_it_zfap_history-zsapuserid.

SELECT SINGLE name_first name_last

FROM adrp

INTO (l_name_first, l_name_last)

WHERE persnumber = l_persnumber.

CONCATENATE l_name_last l_name_first INTO wa_it_final_data-name

SEPARATED BY space.

if wa_it_final_data-name is initial.

wa_it_final_data-name = wa_it_zfap_history-zsapuserid.

endif.

wa_it_final_data-writ = ' '.

read table it_time into wa_it_time

with key zbukrs = wa_it_zfap_history-zbukrs

zbelnr = wa_it_zfap_history-zbelnr.

if sy-subrc = 0.

wa_it_final_data-time = wa_it_time-diff.

endif.

APPEND wa_it_final_data TO it_final_data.

ENDIF.

CLEAR : wa_it_zfap_history, wa_it_doc_data, wa_it_final_data,

l_wrbtr, l_persnumber, l_name_first, l_name_last, l_dmbe2.

ENDLOOP.

ENDFORM. " MOVE_DATA

&----


*& Form DISPLAY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_data .

w_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = w_repid

i_internal_tabname = 'IT_SRCTRANS'

i_inclname = w_repid

CHANGING

ct_fieldcat = it_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.

IF NOT it_final_data[] IS INITIAL.

IF it_fcat[] IS INITIAL.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'ZBELNR'.

it_fcat-seltext_l = 'Document Number'.

it_fcat-col_pos = 1.

it_fcat-outputlen = 15.

it_fcat-key = 'X'.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'BLART'.

it_fcat-seltext_l = 'Document Type'.

it_fcat-col_pos = 2.

it_fcat-outputlen = 13.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'BUDAT'.

it_fcat-seltext_l = 'Posting Date'.

it_fcat-col_pos = 3.

it_fcat-outputlen = 12.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'WAERS'.

it_fcat-seltext_l = 'Document Currency'.

it_fcat-col_pos = 4.

it_fcat-outputlen = 17.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'WRBTR'.

it_fcat-seltext_l = 'Doc Curr Amt'.

it_fcat-col_pos = 5.

it_fcat-outputlen = 22.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'KZWRS'.

it_fcat-seltext_l = 'Group Currency'.

it_fcat-col_pos = 6.

it_fcat-outputlen = 14.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'DMBE2'.

it_fcat-seltext_l = 'Grp Curr Amt'.

it_fcat-col_pos = 7.

it_fcat-outputlen = 22.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'NAME'.

it_fcat-seltext_l = 'Name of Submitter/Requestor'.

it_fcat-col_pos = 8.

it_fcat-outputlen = 60.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'ZDATE'.

it_fcat-seltext_l = 'Creation Date'.

it_fcat-col_pos = 9.

it_fcat-outputlen = 13.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'ZSTATUS'.

it_fcat-seltext_l = 'Status'.

it_fcat-col_pos = 10.

it_fcat-outputlen = 6.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'TIME'.

it_fcat-seltext_l = 'Elpsed time in Mins'.

it_fcat-col_pos = 11.

it_fcat-outputlen = 20.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'STBLG'.

it_fcat-seltext_l = 'Reversal No'.

it_fcat-col_pos = 12.

it_fcat-outputlen = 12.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'STODT'.

it_fcat-seltext_l = 'Reversal Posting Date'.

it_fcat-col_pos = 13.

it_fcat-outputlen = 20.

APPEND it_fcat.

CLEAR it_fcat.

it_fcat-tabname = 'IT_FINAL_DATA'.

it_fcat-fieldname = 'WRIT'.

it_fcat-seltext_l = 'Work Item'.

it_fcat-col_pos = 14.

it_fcat-outputlen = 20.

APPEND it_fcat.

ENDIF.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = it_events

EXCEPTIONS

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

wa_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = w_repid

is_layout = wa_layout

i_callback_user_command = 'USER_COMMAND_ACCT'

i_grid_title = 'Document Status Report'

it_fieldcat = it_fcat[]

  • IT_SORT = IT_SORT[]

it_events = it_events

TABLES

t_outtab = it_final_data[]

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDIF.

ENDFORM. " DISPLAY_DATA

&----


*& Form user_command_acct

&----


  • text

----


  • -->P_UCOMM text

  • -->P_SELFLD text

----


FORM user_command_acct USING p_ucomm TYPE sy-ucomm

p_selfld TYPE slis_selfield.

CASE p_ucomm.

*when double clicked on ALV grid , report id is passed to transaction

WHEN '&IC1'. "Double click

clear p_ucomm.

IF p_selfld-fieldname = 'ZBELNR'.

w_doc_no = p_selfld-value.

*--Form to get second list records based on Doc number

PERFORM sec_list_data.

IF NOT it_sec_final IS INITIAL .

*--Form to get the second list fieldcatolog

PERFORM fill_fieldcat_sec.

.

*Perform to display the Second ALV report

PERFORM display_sec_list.

ENDIF.

ELSE.

MESSAGE i001(zz) WITH text-004.

ENDIF.

ENDCASE.

ENDFORM. "user_command_acct

&----


*& Form SEC_LIST_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM sec_list_data .

DATA: l_role_id TYPE zroleid,

l_zrole_desc TYPE zrole_desc,

l_persnumber TYPE ad_persnum,

l_name_first TYPE ad_namefir,

l_name_last TYPE ad_namelas.

CLEAR : it_sec_final .

REFRESH : it_sec_final .

LOOP AT it_zfap_hist INTO wa_it_zfap_hist WHERE zbelnr = w_doc_no.

IF wa_it_zfap_hist-zstatus = 'Submitted'.

CLEAR : wa_it_sec_final.

wa_it_sec_final-zbelnr = wa_it_zfap_hist-zbelnr.

SELECT SINGLE persnumber

FROM usr21

INTO l_persnumber

WHERE bname = wa_it_zfap_hist-zsapuserid.

SELECT SINGLE name_first name_last

FROM adrp

INTO (l_name_first, l_name_last)

WHERE persnumber = l_persnumber.

CONCATENATE l_name_last l_name_first INTO wa_it_sec_final-name

SEPARATED BY space.

ENDIF.

IF wa_it_zfap_hist-zstatus NE 'Submitted'. " 'Approve'.

wa_it_sec_final-date = wa_it_zfap_hist-zdate.

wa_it_sec_final-zstatus = wa_it_zfap_hist-zstatus.

SELECT SINGLE persnumber

FROM usr21

INTO l_persnumber

WHERE bname = wa_it_zfap_hist-zsapuserid.

SELECT SINGLE name_first name_last

FROM adrp

INTO (l_name_first, l_name_last)

WHERE persnumber = l_persnumber.

CONCATENATE l_name_last l_name_first INTO wa_it_sec_final-approver

SEPARATED BY space.

APPEND wa_it_sec_final TO it_sec_final.

CLEAR : l_role_id, l_zrole_desc.

ENDIF.

CLEAR : wa_it_zfap_hist.

ENDLOOP.

sort it_sec_final by zbelnr .

delete adjacent duplicates from it_sec_final .

ENDFORM. " SEC_LIST_DATA

&----


*& Form fill_fieldcat_sec

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_fieldcat_sec .

CLEAR : it_fcat_sec[] .

REFRESH : it_fcat_sec[].

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = w_repid

i_internal_tabname = 'IT_SEC_FINAL'

i_inclname = w_repid

CHANGING

ct_fieldcat = it_fcat_sec[]

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.

IF NOT it_sec_final[] IS INITIAL.

IF it_fcat_sec[] IS INITIAL.

CLEAR it_fcat_sec.

it_fcat_sec-tabname = 'IT_SEC_FINAL'.

it_fcat_sec-fieldname = 'ZBELNR'.

it_fcat_sec-seltext_l = 'Document Number'.

it_fcat_sec-col_pos = 1.

it_fcat_sec-outputlen = 15.

it_fcat_sec-key = 'X'.

APPEND it_fcat_sec.

CLEAR it_fcat_sec.

it_fcat_sec-tabname = 'IT_SEC_FINAL'.

it_fcat_sec-fieldname = 'NAME'.

it_fcat_sec-seltext_l = 'Name'.

it_fcat_sec-col_pos = 2.

it_fcat_sec-outputlen = 40.

APPEND it_fcat_sec.

CLEAR it_fcat_sec.

it_fcat_sec-tabname = 'IT_SEC_FINAL'.

it_fcat_sec-fieldname = 'APPROVER'.

it_fcat_sec-seltext_l = 'Approver'.

it_fcat_sec-col_pos = 3.

it_fcat_sec-outputlen = 12.

APPEND it_fcat_sec.

CLEAR it_fcat_sec.

it_fcat_sec-tabname = 'IT_SEC_FINAL'.

it_fcat_sec-fieldname = 'DATE'.

it_fcat_sec-seltext_l = 'Date'.

it_fcat_sec-col_pos = 4.

it_fcat_sec-outputlen = 17.

APPEND it_fcat_sec.

CLEAR it_fcat_sec.

it_fcat_sec-tabname = 'IT_SEC_FINAL'.

it_fcat_sec-fieldname = 'ZSTATUS'.

it_fcat_sec-seltext_l = 'Status'.

it_fcat_sec-col_pos = 5.

it_fcat_sec-outputlen = 40.

APPEND it_fcat_sec.

ENDIF.

ENDIF.

ENDFORM. " fill_fieldcat_sec

&----


*& Form display_sec_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_sec_list .

wa_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = w_repid

is_layout = wa_layout

i_grid_title = 'Document Status Report - Approver'

it_fieldcat = it_fcat_sec[]

  • IT_SORT = IT_SORT[]

it_events = it_events

TABLES

t_outtab = it_sec_final[]

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. " display_sec_list

&----


*& Form get_elapsed_time

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form get_elapsed_time .

DATA: date1 type d,

date2 type d,

time1 type t,

time2 type t,

date type p,

time type p.

it_temp1[] = it_zfap_hist[].

it_temp2[] = it_zfap_hist[].

delete it_temp1 where zstatus NE 'Submitted'.

delete it_temp2 where zstatus NE 'Approve'.

sort it_temp1 by zbukrs zbelnr zdate ztime descending.

delete adjacent duplicates from it_temp1 comparing zbukrs zbelnr.

sort it_temp2 by zbukrs zbelnr zdate ztime descending.

delete adjacent duplicates from it_temp1 comparing zbukrs zbelnr.

loop at it_temp1 into wa_it_temp1.

read table it_temp2 into wa_it_temp2

with key zbukrs = wa_it_temp1-zbukrs

zbelnr = wa_it_temp1-zbelnr.

if sy-subrc = 0.

date1 = wa_it_temp1-zdate.

date2 = wa_it_temp2-zdate.

time1 = wa_it_temp1-ztime.

time2 = wa_it_temp2-ztime.

PERFORM datetime_diff using date1 date2 time1 time2

changing time date.

IF DATE > 0.

DATE = DATE * 86400.

TIME = DATE + TIME.

w_DIFF = TIME / 60.

ELSE.

w_diff = TIME / 60.

ENDIF.

else.

w_diff = space.

endif.

wa_it_time-zbukrs = wa_it_temp1-zbukrs.

wa_it_time-zbelnr = wa_it_temp1-zbelnr.

wa_it_time-diff = w_diff.

append wa_it_time to it_time.

clear : wa_it_temp1, wa_it_temp2, date1, date2, time1, time2,

date, time, w_diff, wa_it_time.

endloop.

endform. " get_elapsed_time

&----


*& Form datetime_diff

&----


  • text

----


  • -->P_DATE1 text

  • -->P_DATE2 text

  • -->P_TIME1 text

  • -->P_TIME2 text

  • <--P_TIME text

  • <--P_DATE text

----


form datetime_diff using date1 type d

date2 type d

time1 type t

time2 type t

changing time type p

date type p.

DATA: D1 TYPE D, D2 TYPE D, T1 TYPE T, T2 TYPE T.

D1 = DATE1.

T1 = TIME1.

D2 = DATE2.

T2 = TIME2.

  • Calculate hours difference

TIME = T2 - T1.

  • If no date difference then exit

IF D2 = D1.

DATE = 0.

EXIT.

ENDIF.

  • Check for time underflow and correct second date

IF TIME > T2.

D2 = D2 - 1.

ENDIF.

  • Calculate date difference

DATE = D2 - D1.

endform. " datetime_diff

Former Member
0 Kudos

this is program please create PF status(don't forget ok naa)

type-pools:

slis.

data: fs_fieldcat type slis_t_fieldcat_alv.

DATA: W_NAME LIKE SY-REPID.

data: fs_layout type slis_layout_alv.

DATA: BEGIN OF FS_TAB,

CARRID TYPE SPFLI-CARRID,

CONNID TYPE SPFLI-CONNID,

END OF FS_TAB.

DATA: T_TAB LIKE STANDARD TABLE OF FS_TAB.

DATA: BEGIN OF FS_TAB1,

CARRID TYPE SFLIGHT-CARRID,

CONNID TYPE SFLIGHT-CONNID,

FLDATE TYPE SFLIGHT-FLDATE,

END OF FS_TAB1.

DATA: T_TAB1 LIKE STANDARD TABLE OF FS_TAB1.

DATA: BEGIN OF FS_SPFLI,

ROW(4),

BOX(1),

CARRID TYPE SPFLI-CARRID,

CONNID TYPE SPFLI-CONNID,

COUNTRYFR TYPE SPFLI-COUNTRYFR,

CITYFROM TYPE SPFLI-CITYFROM,

AIRPFROM TYPE SPFLI-AIRPFROM,

COUNTRYTO TYPE SPFLI-COUNTRYTO,

CITYTO TYPE SPFLI-CITYTO,

AIRPTO TYPE SPFLI-AIRPTO,

FLTIME TYPE SPFLI-FLTIME,

DEPTIME TYPE SPFLI-DEPTIME,

ARRTIME TYPE SPFLI-ARRTIME,

DISTANCE TYPE SPFLI-DISTANCE,

DISTID TYPE SPFLI-DISTID,

FLTYPE TYPE SPFLI-FLTYPE,

PERIOD TYPE SPFLI-PERIOD,

END OF FS_SPFLI.

DATA: T_SPFLI LIKE

STANDARD TABLE

OF FS_SPFLI.

DATA: BEGIN OF FS_SFLIGHT,

ROW(4),

BOX(1),

CARRID TYPE SFLIGHT-CARRID,

CONNID TYPE SFLIGHT-CONNID,

FLDATE TYPE SFLIGHT-FLDATE,

PLANETYPE TYPE SFLIGHT-PLANETYPE,

SEATSMAX TYPE SFLIGHT-SEATSMAX,

SEATSOCC TYPE SFLIGHT-SEATSOCC,

PAYMENTSUM TYPE SFLIGHT-PAYMENTSUM,

SEATSMAX_B TYPE SFLIGHT-SEATSMAX_B,

SEATSOCC_B TYPE SFLIGHT-SEATSOCC_B,

SEATSMAX_F TYPE SFLIGHT-SEATSMAX_F,

SEATSOCC_F TYPE SFLIGHT-SEATSOCC_F,

END OF FS_SFLIGHT.

data: t_sflight like

standard table

of fs_sflight.

DATA: T_SBOOK LIKE

SBOOK OCCURS 0 WITH HEADER LINE.

FS_LAYOUT-BOX_FIELDNAME = 'BOX'.

FS_LAYOUT-INFO_FIELDNAME = 'ROW'.

SELECT *

FROM SPFLI

INTO CORRESPONDING FIELDS OF TABLE T_SPFLI.

W_NAME = SY-REPID.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = W_NAME

I_CALLBACK_PF_STATUS_SET = 'DEMO'

I_CALLBACK_USER_COMMAND = 'SEC_LIST'

I_STRUCTURE_NAME = 'SPFLI'

IS_LAYOUT = FS_LAYOUT

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS = FS_EVENT

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = T_SPFLI

  • EXCEPTIONS

  • PROGRAM_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. " IF SY-SUBRC <> 0.

FORM DEMO USING TAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STATUS' .

ENDFORM. " FORM DEMO

FORM SEC_LIST USING UCOMM LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

READ TABLE T_SPFLI INDEX SELFIELD-TABINDEX INTO FS_SPFLI.

LOOP AT T_SPFLI INTO FS_SPFLI.

IF FS_SPFLI-BOX = 'X'.

MOVE FS_SPFLI-CARRID TO FS_TAB-CARRID.

MOVE FS_SPFLI-CONNID TO FS_TAB-CONNID.

APPEND FS_TAB TO T_TAB.

FS_SPFLI-ROW = 'C610'.

FS_SPFLI-BOX = '0'.

MODIFY T_SPFLI FROM FS_SPFLI TRANSPORTING ROW BOX.

ENDIF. " IF FS_SPFLI-BOX = 'X'.

ENDLOOP. " LOOP AT T_SPFLI

IF T_TAB IS INITIAL.

MESSAGE 'POSITION ON CHECK BOX ' TYPE 'E'.

ENDIF.

SELFIELD-REFRESH = 'X'.

select carrid

connid

fldate

planetype

seatsmax

seatsocc

seatsmax_b

seatsocc_b

seatsmax_f

seatsocc_f

paymentsum "up to 100 rows

from sflight

into corresponding fields of table t_sflight

FOR ALL ENTRIES IN T_TAB

WHERE CARRID EQ T_TAB-CARRID

AND CONNID EQ T_TAB-CONNID.

REFRESH T_TAB.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = W_NAME

I_CALLBACK_PF_STATUS_SET = 'DEMO2'

I_CALLBACK_USER_COMMAND = 'THIRD_LIST'

I_STRUCTURE_NAME = 'SFLIGHT'

IS_LAYOUT = fs_layout

  • IT_FIELDCAT = fs_fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = t_sflight

EXCEPTIONS

PROGRAM_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. " IF SY-SUBRC <> 0.

ENDFORM. " LIST_SECOND

FORM DEMO2 USING TAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STATUS1' .

ENDFORM. " DEMO2

FORM THIRD_LIST USING UCOMM1 LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

READ TABLE T_SFLIGHT INDEX SELFIELD-TABINDEX INTO FS_SFLIGHT.

LOOP AT T_SFLIGHT INTO FS_SFLIGHT.

IF FS_SFLIGHT-BOX = 'X'.

MOVE FS_SFLIGHT-CARRID TO FS_TAB1-CARRID.

MOVE FS_SFLIGHT-CONNID TO FS_TAB1-CONNID.

MOVE FS_SFLIGHT-FLDATE TO FS_TAB1-FLDATE.

APPEND FS_TAB1 TO T_TAB1.

FS_SFLIGHT-ROW = 'C610'.

FS_SFLIGHT-BOX = '0'.

MODIFY T_SFLIGHT FROM FS_SFLIGHT TRANSPORTING ROW BOX.

ENDIF. " IF FS_SFLIGHT-BOX = 'X'.

ENDLOOP. " LOOP AT T_SFLIGHT...

IF T_TAB1 IS INITIAL.

MESSAGE 'POSITION ON CHECK BOX ' TYPE 'E'.

ENDIF.

SELFIELD-REFRESH = 'X'.

SELECT *

FROM SBOOK

INTO CORRESPONDING FIELDS OF TABLE T_SBOOK

FOR ALL ENTRIES IN T_TAB1

WHERE CARRID EQ T_TAB1-CARRID

AND CONNID EQ T_TAB1-CONNID

AND FLDATE EQ T_TAB1-FLDATE.

REFRESH T_TAB1.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

I_STRUCTURE_NAME = 'SBOOK'

  • IS_LAYOUT = FS_LAYOUT

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = T_SBOOK

  • EXCEPTIONS

  • PROGRAM_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. " IF SY-SUBRC <> 0.

reward if it helps u ,

Vijay Pawar

uwe_schieferstein
Active Contributor
0 Kudos

Hello Pavan

The following sample report show customer data ("Header"; KNB1) in the first ALV list and sales areas ("Detail"; KNVV) for the selected customer in the second ALV list.

*&---------------------------------------------------------------------*
*& Report  ZUS_SDN_TWO_ALV_GRIDS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zus_sdn_two_alv_grids.




DATA:
  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:
  gt_knb1          TYPE STANDARD TABLE OF knb1,
  gt_knvv          TYPE STANDARD TABLE OF knvv.





*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.

  PUBLIC SECTION.
    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_knb1      TYPE knb1.

    CHECK ( sender = go_grid1 ).

    READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
    CHECK ( ls_knb1-kunnr IS NOT INITIAL ).

    CALL METHOD go_grid1->set_current_cell_via_id
      EXPORTING
*        IS_ROW_ID    =
*        IS_COLUMN_ID =
        is_row_no    = es_row_no.


*   Triggers PAI of the dynpro with the specified ok-code
    CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).



  ENDMETHOD.                    "handle_double_click

ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION






START-OF-SELECTION.

  SELECT        * FROM  knb1 INTO TABLE gt_knb1
         WHERE  bukrs  = '1000'.


* 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 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 = 'KNB1'
      is_layout        = gs_layout
    CHANGING
      it_outtab        = gt_knb1
    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 = 'Customers Details (Sales Areas)'.
  CALL METHOD go_grid2->set_table_for_first_display
    EXPORTING
      i_structure_name = 'KNVV'
      is_layout        = gs_layout
    CHANGING
      it_outtab        = gt_knvv  " 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
  CALL METHOD go_docking->link
    EXPORTING
      repid                       = syst-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_row      TYPE i,
    ls_knb1     TYPE knb1.

  CALL METHOD go_grid1->get_current_cell
    IMPORTING
      e_row = ld_row.

  READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.
  CHECK ( syst-subrc = 0 ).

  SELECT        * FROM  knvv INTO TABLE gt_knvv
         WHERE  kunnr  = ls_knb1-kunnr.



ENDFORM.                    " ENTRY_SHOW_DETAILS

Regards

Uwe

sonu_p2
Active Participant
0 Kudos

Hello Pavan,

Check out the code which I am forwarding u. Might help.

PROGRAM ZSAC_DBCLK_ALVOO MESSAGE-ID ZSAC_PUR_MSG.

type-pools : slis.

tables :

ekko, "Purchasing Document Header

ekpo. "Purchasing Document Item

**********************FOR DOCKING CONTAINER LEFT**********************

DATA : dock_left type ref to cl_gui_docking_container,

sd_container type ref to cl_gui_custom_container,

s_grid_dock_left type ref to cl_gui_alv_grid.

***********************FOR DOCKING CONTAINER RIGHT**********************

*

*

*DATA : dock_right type ref to cl_gui_docking_container,

  • sd_container type ref to cl_gui_custom_container,

  • s_grid_dock_right type ref to cl_gui_alv_grid.

DATA : s_container type ref to cl_gui_custom_container,

s_grid type ref to cl_gui_alv_grid,

gt_fieldcat type lvc_t_fcat,

gs_fieldcat like line of gt_fieldcat.

DATA : s_container1 type ref to cl_gui_custom_container,

s_grid1 type ref to cl_gui_alv_grid,

gt_fieldcat1 type lvc_t_fcat,

gs_fieldcat1 like line of gt_fieldcat1.

TYPES : BEGIN OF IT_EKKO_STRUCT,

ebeln TYPE ekko-ebeln, "Purchasing Document Number

bukrs TYPE ekko-bukrs, "Company Code

END OF IT_EKKO_STRUCT.

DATA : IT_EKKO TYPE TABLE OF IT_EKKO_STRUCT,

IT_EKKO_WA LIKE LINE OF IT_EKKO.

DATA: ok_code TYPE sy-ucomm ,

TXT_PURDOC LIKE ekpo-ebeln.

TYPES : BEGIN OF IT_EKPO_STRUCT,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

matnr TYPE ekpo-matnr,

werks TYPE ekpo-werks,

kunnr TYPE ekpo-kunnr,

bukrs TYPE ekko-bukrs,

END OF IT_EKPO_STRUCT.

DATA : IT_EKPO TYPE TABLE OF IT_EKPO_STRUCT,

IT_EKPO_WA LIKE LINE OF IT_EKPO.

----


  • CLASS Z_MAIN DEFINITION

----


*

----


CLASS Z_MAIN DEFINITION.

PUBLIC SECTION.

METHODS : SELECTION , FIRSTDIS ,SECONDDIS , DOCKING.

METHODS on_dblclick FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row.

METHODS handle_dbclk

FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row.

ENDCLASS. "Z_MAIN DEFINITION

----


  • CLASS Z_MAIN IMPLEMENTATION

----


*

----


CLASS Z_MAIN IMPLEMENTATION.

                      • METHOD FOR SELECTING RECORDS *******************

METHOD SELECTION.

SELECT ebeln ebelp matnr werks kunnr

FROM EKPO

INTO CORRESPONDING FIELDS OF TABLE IT_EKPO

WHERE ebeln = TXT_PURDOC.

SELECT ebeln bukrs

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE it_ekko

WHERE ebeln = TXT_PURDOC.

ENDMETHOD. "SELECTION

                      • DISPLAYING FIRST ALV GRID *******************

METHOD FIRSTDIS.

PERFORM fld_cat.

IF s_container is INITIAL.

CREATE OBJECT s_container

EXPORTING container_name = 'SS_CONTAINER'.

CREATE OBJECT s_grid

EXPORTING i_parent = s_container.

CALL METHOD s_grid->set_table_for_first_display

CHANGING

it_outtab = it_ekko

it_fieldcatalog = gt_fieldcat.

ENDIF.

ENDMETHOD. "FIRSTDIS

                      • DISPLAYING SECOND ALV GRID *******************

METHOD SECONDDIS.

PERFORM fld_cat1.

IF s_container1 is INITIAL.

CREATE OBJECT s_container1

EXPORTING container_name = 'SP_CONTAINER'.

CREATE OBJECT s_grid1

EXPORTING i_parent = s_container1.

CALL METHOD s_grid1->set_table_for_first_display

CHANGING

it_outtab = it_ekpo

it_fieldcatalog = gt_fieldcat1.

ENDIF.

ENDMETHOD. "SECONDDIS

                      • DOUBLE CLICK EVENTS *******************

<b> METHOD on_dblclick.

READ TABLE it_ekko INDEX e_row INTO it_ekko_wa.

LEAVE TO SCREEN 0400.

ENDMETHOD. "on_dblclick</b>*********** DISPLAYING DOCKING CONTAINER *******************

METHOD DOCKING.

PERFORM fld_cat.

IF sd_container is INITIAL.

CREATE OBJECT sd_container

EXPORTING

container_name = 'SS_DOCK'

EXCEPTIONS

OTHERS = 1.

ENDIF.

IF dock_left is INITIAL.

CREATE OBJECT dock_left

EXPORTING side = cl_gui_docking_container=>dock_at_left

ratio = 25.

ENDIF.

CREATE OBJECT s_grid_dock_left

EXPORTING i_parent = dock_left.

CALL METHOD s_grid_dock_left->set_table_for_first_display

CHANGING

it_outtab = it_ekko

it_fieldcatalog = gt_fieldcat.

ENDMETHOD. "DOCKING

<b> METHOD handle_dbclk.

READ TABLE it_ekko INDEX e_row INTO it_ekko_wa.

ENDMETHOD. "handle_hotspot_click</b>

ENDCLASS. "Z_MAIN IMPLEMENTATION

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

DATA : obj1 type ref to Z_MAIN.

CREATE OBJECT : obj1.

CALL METHOD obj1->SELECTION.

CASE SY-UCOMM.

WHEN 'SEARCH'.

LEAVE TO SCREEN 0300.

WHEN 'DOCK'.

LEAVE TO SCREEN 0500.

WHEN 'CANCEL'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0300 OUTPUT

&----


  • text

----


MODULE STATUS_0300 OUTPUT.

SET PF-STATUS 'ALV1'.

CALL METHOD obj1->FIRSTDIS.

<b> SET HANDLER obj1->on_dblclick FOR s_grid.</b>ENDMODULE. " STATUS_0300 OUTPUT

&----


*& Form fld_cat

&----


  • text

----


FORM fld_cat.

gs_fieldcat-fieldname = 'EBELN'.

gs_fieldcat-tabname = 'IT_EKKO'.

gs_fieldcat-reptext = 'Purchasing Document'.

gs_fieldcat-outputlen = 20.

APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.

gs_fieldcat-fieldname = 'BUKRS'.

gs_fieldcat-tabname = 'IT_EKKO'.

gs_fieldcat-reptext = 'Company Code'.

gs_fieldcat-outputlen = 20.

APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.

ENDFORM. "fld_cat

&----


*& Form fld_cat1

&----


  • text

----


FORM fld_cat1.

gs_fieldcat1-fieldname = 'EBELN'.

gs_fieldcat1-tabname = 'IT_EKPO'.

gs_fieldcat1-reptext = 'Purchasing Document'.

gs_fieldcat1-outputlen = 20.

APPEND gs_fieldcat1 TO gt_fieldcat1.

CLEAR gs_fieldcat1.

gs_fieldcat1-fieldname = 'EBELP'.

gs_fieldcat1-tabname = 'IT_EKPO'.

gs_fieldcat1-reptext = 'Item Number'.

gs_fieldcat1-outputlen = 20.

APPEND gs_fieldcat1 TO gt_fieldcat1.

CLEAR gs_fieldcat1.

gs_fieldcat1-fieldname = 'WERKS'.

gs_fieldcat1-tabname = 'IT_EKPO'.

gs_fieldcat1-reptext = 'Plant'.

gs_fieldcat1-outputlen = 20.

APPEND gs_fieldcat1 TO gt_fieldcat1.

CLEAR gs_fieldcat1.

ENDFORM. "fld_cat1

&----


*& Module STATUS_0400 OUTPUT

&----


  • text

----


MODULE STATUS_0400 OUTPUT.

SET PF-STATUS 'ALV2'.

CALL METHOD obj1->SECONDDIS.

ENDMODULE. " STATUS_0400 OUTPUT

&----


*& Module USER_COMMAND_0300 INPUT

&----


  • text

----


MODULE USER_COMMAND_0300 INPUT.

*

ENDMODULE. " USER_COMMAND_0300 INPUT

&----


*& Module USER_COMMAND_0400 INPUT

&----


  • text

----


MODULE USER_COMMAND_0400 INPUT.

ENDMODULE. " USER_COMMAND_0400 INPUT

&----


*& Module STATUS_0500 OUTPUT

&----


  • text

----


MODULE STATUS_0500 OUTPUT.

SET PF-STATUS 'DOCKINGCONTAINER'.

CALL METHOD obj1->DOCKING.

<b>SET HANDLER obj1->handle_dbclk FOR s_grid_dock_left.</b>ENDMODULE. " STATUS_0500 OUTPUT

&----


*& Form handle_double_click

&----


  • text

----


  • -->IS_ROW_NO text

  • -->I_COLUMN_ID text

----


<b>FORM handle_double_click USING is_row_no TYPE lvc_s_roid

i_column_id TYPE lvc_s_col.

READ TABLE it_ekko INTO it_ekko_wa INDEX is_row_no-row_id.

ENDFORM. "handle_double_click</b>

<b>Reward with point if helpful :-)</b>

Thanks,

Sachin