04-23-2007 1:33 PM
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
04-23-2007 1:41 PM
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
04-23-2007 1:48 PM
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
04-23-2007 9:00 PM
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
04-24-2007 5:38 AM
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