‎2008 Mar 14 5:14 AM
Hi Frds
In my report ,Im display PO details and GR details in ALV output.
If i click GR Number in the output ,that should open the particular page in the same screen.
if there is any function module or codings,kindly give me.
Thanks
Pari
‎2008 Mar 14 5:40 AM
It doesn't need FM its the standard functionality of ALV. Just fedine hot spot for that field from which u want to click anothet transaction while clicking.
Coding wise
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'MBLNR'.
FIELDCAT_LN-TABNAME = 'ITAB2'.
FIELDCAT_LN-NO_OUT = ' '.
FIELDCAT_LN-SELTEXT_L = 'Doc Number'.
FIELDCAT_LN-HOTSPOT = 'X'.
FIELDCAT_LN-OUTPUTLEN = 10.
APPEND FIELDCAT_LN TO GT_FIELDCAT.
define FIELDCAT_LN-HOTSPOT = ' '. for next field column
AT LINE-SELECTION.
SET PARAMETER ID 'MBN' FIELD ITAB2-MBLNR.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
FORM FRM_ALV_USER_COMMAND USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CASE UCOMM.
WHEN '&IC1'.
IF SELFIELD-TABNAME = 'ITAB2'.
IF SELFIELD-FIELDNAME = 'MBLNR'.
READ TABLE ITAB2 INDEX SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'MBN' FIELD ITAB2-MBLNR.
SET PARAMETER ID 'MJR' FIELD ITAB2-MJAHR.
CALL TRANSACTION 'MB03' AND
SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. "frm_alv_user_command
hope it will help.
anya
‎2008 Mar 14 6:39 AM
hi anya,
im new to alv field. i develop simple code for display,
i dont known to insert that coding in my coding. ill send the coding to u. insert that and reply me. this is urgent today i have to submit it.
REPORT Z_R_POLINEITEM.
TYPE-POOLS:slis.
DATA:body TYPE slis_t_fieldcat_alv,
header TYPE slis_fieldcat_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
data : c type i,
d type i.
c = 1.
d = 1.
DATA : BEGIN OF itab OCCURS 0,
ebeln LIKE ekpo-ebeln,
bedat LIKE ekko-bedat,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
matde LIKE makt-maktx,
meins LIKE ekpo-meins,
menge LIKE ekpo-menge,
lifnr LIKE ekko-lifnr,
name1 LIKE lfa1-name1,
belnr LIKE ekbe-belnr,
meng1 LIKE ekbe-menge,
budat LIKE ekbe-budat,
dmbtr LIKE ekbe-dmbtr,
WAERS like ekbe-WAERS,
1belnr LIKE ekbe-belnr,
1menge LIKE ekbe-menge,
1budat LIKE ekbe-budat,
1dmbtr LIKE ekbe-dmbtr,
1WAERS like ekbe-WAERS,
txz01 like ekpo-txz01,
END OF itab.
DATA : BEGIN OF itab2 OCCURS 0,
ebeln LIKE ekpo-ebeln,
bedat LIKE ekko-bedat,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
matde LIKE makt-maktx,
meins LIKE ekpo-meins,
menge LIKE ekpo-menge,
lifnr LIKE ekko-lifnr,
name1 LIKE lfa1-name1,
belnr LIKE ekbe-belnr,
meng1 LIKE ekbe-menge,
budat LIKE ekbe-budat,
dmbtr LIKE ekbe-dmbtr,
WAERS like ekbe-WAERS,
1belnr LIKE ekbe-belnr,
1menge LIKE ekbe-menge,
1budat LIKE ekbe-budat,
1dmbtr LIKE ekbe-dmbtr,
1WAERS like ekbe-WAERS,
txz01 like ekpo-txz01,
END OF itab2.
DATA:BEGIN OF iekpo OCCURS 0,
bedat LIKE ekko-bedat,
lifnr like ekko-lifnr,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
txz01 LIKE ekpo-txz01,
meins LIKE ekpo-meins,
menge like ekpo-menge,
werks LIKE ekpo-werks,
bukrs LIKE ekpo-bukrs,
ebeln LIKE ekko-ebeln,
lifnr LIKE ekko-lifnr,
END OF iekpo.
CLEAR iekpo.
DATA:BEGIN OF imakt OCCURS 0,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF imakt.
CLEAR imakt.
DATA :BEGIN OF ilfa1 OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
END OF ilfa1.
CLEAR ilfa1.
DATA:BEGIN OF iekbe1 OCCURS 0,
belnr LIKE ekbe-belnr,
menge LIKE ekbe-menge,
budat LIKE ekbe-budat,
dmbtr LIKE ekbe-dmbtr,
vgabe LIKE ekbe-vgabe,
ebeln LIKE ekbe-ebeln,
ebelp LIKE ekbe-ebelp,
WAERS like ekbe-WAERS,
END OF iekbe1.
CLEAR iekbe1.
DATA:BEGIN OF iekbe2 OCCURS 0,
belnr LIKE ekbe-belnr,
menge LIKE ekbe-menge,
budat LIKE ekbe-budat,
dmbtr LIKE ekbe-dmbtr,
vgabe LIKE ekbe-vgabe,
ebeln LIKE ekbe-ebeln,
ebelp LIKE ekbe-ebelp,
WAERS like ekbe-WAERS,
END OF iekbe2.
CLEAR iekbe2.
SELECT-OPTIONS: plant FOR iekpo-werks OBLIGATORY.
SELECT-OPTIONS: company FOR iekpo-bukrs OBLIGATORY.
SELECT-OPTIONS: po_date FOR iekpo-bedat .
SELECT-OPTIONS: vendor FOR iekpo-lifnr .
AT SELECTION-SCREEN.
PERFORM fetch_ekko.
START-OF-SELECTION.
Get PO Details
PERFORM fetch_ekpo.
SORT iekpo BY bedat ebeln ebelp.
Get Material Desc
PERFORM fetch_makt.
Get Vendor Details
PERFORM fetch_lfa1.
Get GR Details
PERFORM fetch_ekbe_1.
*sort iekbe1 by budat ebeln ebelp.
Get IR Details
PERFORM fetch_ekbe_2.
*sort iekbe2 by budat ebeln ebelp.
PERFORM fetch_read.
perform po-ir.
PERFORM fieldcatalog.
PERFORM build_layout.
PERFORM alvdisplay.
*----
FORM fetch_ekpo.
SELECT abedat bebeln bebelp bmatnr b~txz01
bmeins bmenge alifnr bwerks bbukrs bloekz into
corresponding fields of table iekpo from ekko
as a inner join ekpo as b on bebeln = aebeln
WHERE b~werks IN plant
AND bbukrs IN company AND abedat in po_date
and bloekz = space and alifnr in vendor.
ENDFORM. "FETCH_ekpo
&----
*& Form fetch_makt
&----
text
----
FORM fetch_makt.
IF iekpo[] IS NOT INITIAL.
SELECT matnr maktx FROM makt INTO TABLE imakt FOR ALL ENTRIES IN
iekpo
WHERE matnr = iekpo-matnr.
CLEAR imakt.
ENDIF.
ENDFORM. "fetch_makt
&----
*& Form fetch_lfa1
&----
text
----
FORM fetch_lfa1.
IF iekpo[] IS NOT INITIAL.
SELECT lifnr name1 FROM lfa1 INTO TABLE ilfa1 FOR ALL ENTRIES
IN iekpo
WHERE lifnr = iekpo-lifnr.
CLEAR ilfa1.
ENDIF.
ENDFORM. "FETCH_lfa1
&----
*& Form FETCH_ekbe
&----
text
----
FORM fetch_ekbe_1.
IF iekpo[] IS NOT INITIAL.
SELECT belnr menge budat dmbtr vgabe ebeln ebelp WAERS FROM ekbe
INTO TABLE iekbe1 FOR ALL ENTRIES IN iekpo
WHERE ebeln = iekpo-ebeln AND ebelp = iekpo-ebelp
AND ( vgabe = '1' ).
ENDIF.
ENDFORM. "FETCH_ekbe_1
&----
*& Form fetch_ekbe_2
&----
text
----
Form fetch_ekbe_2.
if iekpo[] is NOT INITIAL.
SELECT belnr menge budat dmbtr vgabe ebeln ebelp WAERS FROM ekbe
INTO TABLE iekbe2 FOR ALL ENTRIES IN iekpo
WHERE ebeln = iekpo-ebeln and ebelp = iekpo-ebelp
and ( vgabe = '2').
ENDIF.
endform. "fetch_ekbe_2
&----
*& Form fetch_read
&----
text
----
FORM fetch_read.
loop at iekpo.
itab-ebeln = iekpo-ebeln.
itab-ebelp = iekpo-ebelp.
itab-bedat = iekpo-bedat.
itab-meins = iekpo-meins.
itab-menge = iekpo-menge.
itab-matnr = iekpo-matnr.
itab-lifnr = iekpo-lifnr.
read table imakt with key matnr = iekpo-matnr.
if iekpo-matnr = imakt-matnr.
itab-matde = imakt-maktx.
else.
itab-matde = iekpo-txz01.
endif.
read table ilfa1 with key lifnr = iekpo-lifnr.
itab-name1 = ilfa1-name1.
*loop at iekbe1 where ebeln = iekpo-ebeln and ebelp = iekpo-ebelp.
read table iekbe1 INDEX d.
if iekbe1-ebeln = iekpo-ebeln and iekbe1-ebelp = iekpo-ebelp.
itab-belnr = iekbe1-belnr.
itab-meng1 = iekbe1-menge.
itab-budat = iekbe1-budat.
itab-dmbtr = iekbe1-dmbtr.
itab-waers = iekbe1-waers.
ELSE .
d = d - 1.
endif.
append itab.
clear : iekbe1,itab.
d = d + 1.
clear : iekpo,ilfa1,imakt,iekbe1,iekbe2,itab.
endloop.
ENDFORM. "fetch_read
form po-ir.
loop at itab.
itab2-ebeln = itab-ebeln.
itab2-ebelp = itab-ebelp.
itab2-bedat = itab-bedat.
itab2-meins = itab-meins.
itab2-menge = itab-menge.
itab2-matnr = itab-matnr.
itab2-lifnr = itab-lifnr.
itab2-matde = itab-matde.
itab2-name1 = itab-name1.
itab2-belnr = itab-belnr.
itab2-meng1 = itab-meng1.
itab2-budat = itab-budat.
itab2-dmbtr = itab-dmbtr.
itab2-WAERS = itab-WAERS.
loop at iekbe2 where ebeln = itab-ebeln and ebelp = itab-ebelp.
read table iekbe2 INDEX c.
"with key ebeln = itab-ebeln ebelp = itab-ebelp.
if iekbe2-ebeln = itab-ebeln and iekbe2-ebelp = itab-ebelp.
itab2-1belnr = iekbe2-belnr.
itab2-1menge = iekbe2-menge.
itab2-1budat = iekbe2-budat.
itab2-1dmbtr = iekbe2-dmbtr.
itab2-1waers = iekbe2-waers.
ELSE .
c = c - 1.
endif.
append itab2.
clear : iekbe2,itab2.
*delete iekbe2 index sy-tabix.
c = c + 1.
endloop.
endloop.
endform.
&----
*& Form build_layout
&----
text
----
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
ENDFORM. " BUILD_LAYOUT
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM fieldcatalog .
header-col_pos = '1'.
header-seltext_l = 'PO_NO'.
header-tabname = 'ITAB2'.
header-fieldname = 'EBELN'.
APPEND header TO body.
CLEAR header.
header-col_pos = '2'.
header-seltext_l = 'PO_DATE'.
header-tabname = 'ITAB2'.
header-fieldname = 'BEDAT'.
APPEND header TO body.
CLEAR header.
header-col_pos = '3'.
header-seltext_l = 'LINEITEM'.
header-tabname = 'ITAB2'.
header-fieldname = 'EBELP'.
APPEND header TO body.
CLEAR header.
header-col_pos = '4'.
header-seltext_l = 'MATERIAL_NO'.
header-tabname = 'ITAB2'.
header-fieldname = 'MATNR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '5'.
header-seltext_l = 'MATERIAL_DESC'.
header-tabname = 'ITAB2'.
header-fieldname = 'MATDE'.
APPEND header TO body.
CLEAR header.
header-col_pos = '6'.
header-seltext_l = 'UOM'.
header-tabname = 'ITAB2'.
header-fieldname = 'MEINS'.
APPEND header TO body.
CLEAR header.
header-col_pos = '7'.
header-seltext_l = 'PO_QTY'.
header-tabname = 'ITAB2'.
header-fieldname = 'MENGE'.
header-do_sum = 'X'.
APPEND header TO body.
CLEAR header.
header-col_pos = '8'.
header-seltext_l = 'VENDOR_NO'.
header-tabname = 'ITAB2'.
header-fieldname = 'LIFNR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '9'.
header-seltext_l = 'VENDOR_NAME'.
header-tabname = 'ITAB2'.
header-fieldname = 'NAME1'.
APPEND header TO body.
CLEAR header.
header-col_pos = '10'.
header-seltext_l = 'GR_NO'.
header-tabname = 'ITAB2'.
header-fieldname = 'BELNR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '11'.
header-seltext_l = 'GR_DATE'.
header-tabname = 'ITAB2'.
header-fieldname = 'BUDAT'.
APPEND header TO body.
CLEAR header.
header-col_pos = '12'.
header-seltext_l = 'GR_QTY'.
header-tabname = 'ITAB2'.
header-fieldname = 'MENG1'.
header-do_sum = 'X'.
APPEND header TO body.
CLEAR header.
header-col_pos = '13'.
header-seltext_l = 'GR_VALUE'.
header-tabname = 'ITAB2'.
header-fieldname = 'DMBTR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '14'.
header-seltext_l = 'Currency'.
header-tabname = 'ITAB2'.
header-fieldname = 'WAERS'.
APPEND header TO body.
CLEAR header.
header-col_pos = '15'.
header-seltext_l = 'IR_NO'.
header-tabname = 'ITAB2'.
header-fieldname = '1BELNR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '16'.
header-seltext_l = 'IR_DATE'.
header-tabname = 'ITAB2'.
header-fieldname = '1BUDAT'.
APPEND header TO body.
CLEAR header.
header-col_pos = '17'.
header-seltext_l = 'IR_QTY'.
header-tabname = 'ITAB2'.
header-fieldname = '1MENGE'.
header-do_sum = 'X'.
APPEND header TO body.
CLEAR header.
header-col_pos = '18'.
header-seltext_l = 'IR_VALUE'.
header-tabname = 'ITAB2'.
header-fieldname = '1DMBTR'.
APPEND header TO body.
CLEAR header.
header-col_pos = '19'.
header-seltext_l = 'Currency'.
header-tabname = 'ITAB2'.
header-fieldname = '1WAERS'.
APPEND header TO body.
CLEAR header.
ENDFORM. " FIELDCATALOG
*&----
*& Form ALVDISPLAY
*&----
FORM alvdisplay .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'Z_PO_LINEITEM_STATUS'
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = body
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
TABLES
t_outtab = itab2
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. "alvdisplay