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
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
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |