Application Development and Automation 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: 
Read only

Need Function Module

Former Member
0 Likes
377

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

2 REPLIES 2
Read only

Former Member
0 Likes
358

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

Read only

0 Likes
358

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