‎2007 Oct 05 8:40 PM
Hi Folks,
Is double clicking option possible in alv hierarchical list .
Regards
rock
‎2007 Oct 05 9:20 PM
you should set the field f2code of the layout structure with the value &ETA
and create an "AT USER COMMAND" event
‎2007 Oct 05 8:48 PM
‎2007 Oct 05 9:20 PM
you should set the field f2code of the layout structure with the value &ETA
and create an "AT USER COMMAND" event
‎2007 Oct 06 10:31 AM
hi,
ya possible check this.
&----
*& Report ZRAW_COST
*&
&----
*&
*&
&----
REPORT ZRAW_COST.
TYPE-POOLS:slis.
TABLES:mseg,
lfa1,
mkpf,
ekpo,
mara,
j_1iexchdr,
mbew.
DATA:BEGIN OF itab_vend OCCURS 0,
lifnr LIKE lfa1-lifnr, "Vendor Code
END OF itab_vend.
DATA:BEGIN OF itab_data OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
mblnr LIKE mseg-mblnr, "Material Doc.
charg LIKE mseg-charg, "Batch
matnr LIKE mseg-matnr, "Material
maktx LIKE makt-maktx, "Description
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount
budat LIKE mkpf-budat, "G.R.Date
xblnr LIKE mkpf-xblnr, "Delivery Note(Bill No.)
frbnr LIKE mkpf-frbnr, "Bill of Lading(Bill Date)
netpr LIKE ekpo-netpr, "Basic Rate
matkl LIKE ekpo-matkl, "Material Group
END OF itab_data.
DATA:BEGIN OF itab_itm OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
name1 LIKE lfa1-name1, "Vendor Name
matkl LIKE ekpo-matkl, "Material Group
wgbez LIKE t023t-wgbez, "Material Group Name
mblnr LIKE mseg-mblnr, "Material Doc.
matnr LIKE mseg-matnr, "Material
maktx LIKE makt-maktx, "Description
xblnr LIKE mkpf-xblnr, "Delivery Note(Bill No.)
frbnr LIKE mkpf-frbnr, "Bill of lading(Bill Date)
budat LIKE mkpf-budat, "G.R.Date
exnum LIKE j_1iexchdr-exnum, "Ex.Bill No.
exdat LIKE j_1iexchdr-exdat, "Ex.Bill Date
charg LIKE mseg-charg, "Batch
menge LIKE mseg-menge, "Quantity
netpr LIKE ekpo-netpr, "Basic Rate
verpr LIKE mbew-verpr, "Costing Rate
dmbtr LIKE mseg-dmbtr, "Amount
END OF itab_itm.
DATA:BEGIN OF itab_head OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
name1 LIKE lfa1-name1, "Vendor Name
matkl LIKE ekpo-matkl, "Material Group
wgbez LIKE t023t-wgbez, "Material Group Name
END OF itab_head.
DATA:fcat TYPE slis_t_fieldcat_alv,
eve TYPE slis_t_event,
alv_keyinfo TYPE slis_keyinfo_alv,
gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot.
DATA:ex_doc LIKE j_1iexchdr-exnum,
ex_dat LIKE j_1iexchdr-exdat,
mov_pr LIKE mbew-verpr,
name LIKE lfa1-name1,
gr_nm LIKE t023t-wgbez,
t_mblnr LIKE mseg-mblnr,
yr LIKE mseg-mjahr.
DATA: BEGIN OF record OCCURS 0,
act(003),
rfd(003),
matdoc(010),
docyr(004),
END OF record.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:dt FOR mkpf-budat OBLIGATORY,
vend FOR lfa1-lifnr,
mat_gr FOR mara-matkl.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_cat USING fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
&----
*& Form build_cat
&----
text
----
-->T_FCAT text
----
FORM build_cat USING t_fcat TYPE slis_t_fieldcat_alv.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-seltext_m = 'Vendor Name'.
wa_fcat-outputlen = '30'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'WGBEZ'.
wa_fcat-seltext_m = 'Material Group Name'.
wa_fcat-outputlen = '30'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Product Name'.
wa_fcat-outputlen = '40'.
wa_fcat-just = 'L'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'XBLNR'.
wa_fcat-seltext_m = 'Bill.No.'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'FRBNR'.
wa_fcat-seltext_m = 'Bill Date'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'BUDAT'.
wa_fcat-seltext_m = 'G.R.Date'.
wa_fcat-outputlen = '10'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'EXNUM'.
wa_fcat-seltext_m = 'Ex.Bill.No.'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'EXDAT'.
wa_fcat-seltext_m = 'Ex.Bill Date'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'CHARG'.
wa_fcat-seltext_m = 'Batch'.
wa_fcat-outputlen = '15'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Qty'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'NETPR'.
wa_fcat-seltext_m = 'Basic Rate'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '12'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'VERPR'.
wa_fcat-seltext_m = 'Costing Rate'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '12'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'DMBTR'.
wa_fcat-seltext_m = 'Amount'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'NAME1'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
subtot-spos = 2.
subtot-fieldname = 'WGBEZ'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
ENDFORM. "build_cat
&----
*& Form build_eve
&----
text
----
FORM build_eve.
DATA:t_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE eve INTO t_eve WITH KEY name = 'USER_COMMAND'.
IF sy-subrc = 0.
t_eve-form = 'USER_COMMAND'.
MODIFY eve FROM t_eve TRANSPORTING form WHERE name = t_eve-name.
ENDIF.
ENDFORM. "build_eve
&----
*& Form get_data
&----
text
----
FORM get_data.
SELECT DISTINCT mseg~lifnr INTO CORRESPONDING FIELDS OF TABLE itab_vend
FROM mseg INNER JOIN mkpf
ON msegmblnr = mkpfmblnr
WHERE mkpfbudat IN dt AND mseglifnr IN vend.
LOOP AT itab_vend.
SELECT mseglifnr msegmblnr msegmatnr maktmaktx msegcharg msegmenge msegdmbtr mkpfbudat mkpfxblnr mkpffrbnr ekponetpr ekpomatkl
INTO CORRESPONDING FIELDS OF TABLE itab_data
FROM mseg INNER JOIN mkpf ON
msegmblnr = mkpfmblnr
INNER JOIN ekpo ON
msegebeln = ekpoebeln AND msegmatnr = ekpomatnr
INNER JOIN makt ON
msegmatnr = maktmatnr
WHERE mkpfbudat IN dt AND mseglifnr IN vend AND msegbwart = '101' AND msegebeln <> '' AND ekpo~matkl IN mat_gr.
ENDLOOP.
SORT itab_data BY lifnr matkl matnr mblnr.
LOOP AT itab_data.
CLEAR: ex_doc,ex_dat,mov_pr,name,gr_nm.
MOVE-CORRESPONDING itab_data TO itab_itm.
SELECT SINGLE name1 FROM lfa1 INTO name WHERE lifnr = itab_data-lifnr.
SELECT SINGLE wgbez FROM t023t INTO gr_nm WHERE matkl = itab_data-matkl.
SELECT SINGLE exnum exdat FROM j_1iexchdr INTO (ex_doc,ex_dat) WHERE rdoc = itab_data-mblnr.
SELECT SINGLE verpr INTO mov_pr FROM mbew WHERE matnr = itab_data-matnr AND bwtar = itab_data-charg.
itab_itm-exnum = ex_doc.
itab_itm-exdat = ex_dat.
itab_itm-verpr = mov_pr.
itab_itm-name1 = name.
itab_itm-wgbez = gr_nm.
APPEND itab_itm.
ENDLOOP.
SORT itab_itm . "BY lifnr matkl mblnr matnr charg.
DELETE ADJACENT DUPLICATES FROM itab_itm.
ENDFORM. "get_data
&----
*& Form dis_data
&----
text
----
FORM dis_data.
alv_keyinfo-header01 = 'LIFNR'.
alv_keyinfo-item01 = 'LIFNR'.
alv_keyinfo-header02 = 'MATKL'.
alv_keyinfo-item02 = 'MATKL'.
REFRESH itab_head.
LOOP AT itab_itm.
ON CHANGE OF itab_itm-lifnr OR itab_itm-matkl .
MOVE-CORRESPONDING itab_itm TO itab_head.
APPEND itab_head.
ENDON.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZRAW_COST'
it_fieldcat = fcat
it_sort = gt_subtot
it_events = eve
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITM'
is_keyinfo = alv_keyinfo
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_itm
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.
ENDFORM. "dis_data
&----
*& Form user_command
&----
text
----
-->U_COM text
-->SEL_FIELD text
----
FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.
CASE u_com.
WHEN '&IC1'.
READ TABLE itab_itm INDEX sel_field-tabindex.
IF sy-subrc = 0.
t_mblnr = itab_itm-mblnr.
SELECT SINGLE mjahr FROM mseg INTO yr WHERE mblnr = record-matdoc.
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
i_action = 'A04'
i_refdoc = 'R02'
i_notree = 'X'
i_no_auth_check = ' '
i_skip_first_screen = 'X'
i_deadend = 'X'
i_okcode = 'OK_GO'
i_mblnr = t_mblnr.
i_mjahr = yr.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR sel_field-tabindex.
ENDIF.
ENDCASE.
ENDFORM. "user_command
reward if useful.