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

Abt Interactive ALV ?

Former Member
0 Likes
407

Dear Experts,

I want to develop an interactive ALV.This is the first time I got such requirement.In my ALV report if I am displaying the output when I am clidking any fields in the ALV report it should process to another ALV report.

How should I proceed for that interactive ALV.What function module I want to use? Any referal codes would be appericiated and awarded.

Thanks,

Sakthi C

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
390

Hi Sakthi..

you can go thrum this code...

CODE:

----


  • STRUCTURE DECLARATIONS

  • INTERNAL TABLE DECLARATIONS

  • WORKAREA DECLARATIONS

  • TYPE-POOLS DECLARATION

----


TYPE-POOLS : slis.

TYPES : BEGIN OF st_ekko,

ebeln TYPE ekko-ebeln,

bstyp TYPE ekko-bstyp, "Purchasing Document Category

bsart TYPE ekko-bsart, "Purchasing Document Type

aedat TYPE ekko-aedat, "record created on

ernam TYPE ekko-ernam, "Person who Created the Object

check(1),

END OF st_ekko.

TYPES : BEGIN OF st_ekpo,

ebeln TYPE ekko-ebeln,

ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document

ematn TYPE ekpo-ematn, "Material number

matkl TYPE ekpo-matkl, "Material group

netpr TYPE ekpo-netpr, "Net price in purchasing document

END OF st_ekpo.

TYPES : BEGIN OF st_ebeln,

ebeln TYPE ekpo-ebeln,

END OF st_ebeln.

TYPES : BEGIN OF st_eine,

ebeln TYPE ekko-ebeln,

ekorg TYPE eine-ekorg,

ekgrp TYPE eine-ekgrp,

END OF st_eine.

TYPES : BEGIN OF st_check,

check(1),

END OF st_check.

DATA : it_ekpo TYPE STANDARD TABLE OF st_ekpo,

it_ekko TYPE STANDARD TABLE OF st_ekko,

wa_ekko LIKE LINE OF it_ekko,

it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF it_fieldcat,

wa_layout TYPE slis_layout_alv,

it_events TYPE slis_t_event,

st_event LIKE LINE OF it_events,

it_listheadr TYPE slis_t_listheader ,

wa_listheadr LIKE LINE OF it_listheadr,

st_printparams TYPE slis_print_alv,

it_sortinfo TYPE slis_t_sortinfo_alv,

wa_sortinfo LIKE LINE OF it_sortinfo,

it_ekposortinfo TYPE slis_t_sortinfo_alv,

wa_ekposortinfo LIKE LINE OF it_ekposortinfo,

it_filter TYPE slis_t_filter_alv,

it_ebeln TYPE STANDARD TABLE OF st_ebeln,

it_eine TYPE STANDARD TABLE OF st_eine,

wa_eine TYPE st_eine,

it_popup TYPE STANDARD TABLE OF st_eine,

wa_popup TYPE st_eine,

it_check TYPE STANDARD TABLE OF st_check,

wa_check TYPE st_check.

DATA : v_ebeln TYPE ekko-ebeln.

----


  • SELECTION-SCREEN

----


SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE tit.

SELECT-OPTIONS: so_ebeln FOR v_ebeln OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b.

----


  • INITIALIZATION

----


INITIALIZATION.

tit = text-000.

----


  • AT SELECTION-SCREEN ON

----


AT SELECTION-SCREEN ON so_ebeln.

PERFORM validate_ebeln.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

PERFORM get_ekko_data.

PERFORM get_eine_data.

----


  • END-OF-SELECTION

----


END-OF-SELECTION.

PERFORM populate_fieldcat1.

PERFORM populate_layout.

PERFORM get_eventlist.

PERFORM get_ekkosortinfo.

PERFORM ekkodisplay_onalv.

&----


*& Form POPULATE_FIELDCAT1

&----


FORM populate_fieldcat1.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSTYP'.

wa_fieldcat-seltext_l = text-005.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSART'.

wa_fieldcat-seltext_l = text-006.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'AEDAT'.

wa_fieldcat-seltext_l = text-007.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'ERNAM'.

wa_fieldcat-seltext_l = text-008.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "POPULATE_FIELDCAT1

&----


*& Form populate_fieldcat2

&----


FORM populate_fieldcat2 .

CLEAR wa_fieldcat.

CLEAR it_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

  • wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EBELP'.

wa_fieldcat-seltext_l = text-009.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EMATN'.

wa_fieldcat-seltext_l = text-010.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'MATKL'.

wa_fieldcat-seltext_l = text-011.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'NETPR'.

wa_fieldcat-seltext_l = text-012.

wa_fieldcat-datatype = 'CURR'. "Obligatory to perform SUM

wa_fieldcat-do_sum = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "populate_fieldcat2

&----


*& Form GET_EVENTLIST

&----


FORM get_eventlist.

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.

READ TABLE it_events WITH KEY name = slis_ev_pf_status_set INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'SET_PF_STATUS1'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

READ TABLE it_events WITH KEY name = slis_ev_end_of_page INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'END_OF_PAGE'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

ENDFORM. "GET_EVENTLIST

&----


*& Form ekpodisplay_onalv

&----


FORM ekpodisplay_onalv .

IF it_ekpo[] IS INITIAL.

MESSAGE 'NO DATA FOUND' TYPE 'I'.

ELSE.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS'

i_callback_user_command = 'AT_USER_COMMAND1'

i_callback_top_of_page = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE = I_GRID_TITLE

  • I_GRID_SETTINGS = I_GRID_SETTINGS

is_layout = wa_layout

it_fieldcat = it_fieldcat

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

it_sort = it_ekposortinfo[]

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

  • it_events = it_events

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS = IT_ALV_GRAPHICS

  • IT_HYPERLINK = IT_HYPERLINK

  • IT_ADD_FIELDCAT = IT_ADD_FIELDCAT

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

t_outtab = it_ekpo

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.

ENDIF.

ENDFORM. "ekpodisplay_onalv

&----


*& Form SET_PF_STATUS1

&----


FORM set_pf_status1 USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'MENU' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS1

&----


*& Form SET_PF_STATUS

&----


FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS

&----


*& Form AT_user_command

&----


FORM at_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

IF rs_selfield-fieldname EQ 'EBELN'.

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

SELECT ebeln ebelp ematn matkl netpr

FROM ekpo

INTO TABLE it_ekpo

WHERE ebeln EQ wa_ekko-ebeln.

PERFORM populate_fieldcat2.

PERFORM populate_layout2.

PERFORM get_ekposortinfo.

PERFORM ekpodisplay_onalv.

ELSE.

MESSAGE i020(z50871msg) WITH text-013.

ENDIF.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

WHEN 'DISP'.

PERFORM get_popupdata.

PERFORM get_popupfcat.

PERFORM display_popup.

ENDCASE.

ENDFORM. "AT_user_command

&----


*& Form TOP_OF_PAGE

&----


FORM top_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = text-001.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[]

i_logo = 'ENJOYSAP_LOGO'. "From OAER transaction

ENDFORM. "TOP_OF_PAGE

&----


*& Form build_print_params

&----


FORM build_print_params.

st_printparams-reserve_lines = '3'. "Lines reserved for footer

st_printparams-no_coverpage = 'X'.

ENDFORM. "build_print_params

&----


*& Form end_of_page

&----


FORM end_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = sy-pagno.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[].

ENDFORM. "end_of_page

&----


*& Form GET_EKPOSORTINFO

&----


FORM get_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 1.

wa_ekposortinfo-fieldname = 'EBELP'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 2.

wa_ekposortinfo-fieldname = 'EMATN'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

ENDFORM. "GET_EKPOSORTINFO

*

&----


*& Form POPULATE_LAYOUT

&----


FORM populate_layout.

wa_layout-colwidth_optimize = 'X'. "column width

wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-box_fieldname = 'CHECK'.

wa_layout-box_tabname = 'IT_EKKO'.

wa_layout-window_titlebar = 'PURCHASE ORDER HEADER DETAILS'.

ENDFORM. "POPULATE_LAYOUT

&----


*& Form get_EKKOsortinfo

&----


FORM get_ekkosortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 1.

wa_sortinfo-fieldname = 'EBELN'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 2.

wa_sortinfo-fieldname = 'BSTYP'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 3.

wa_sortinfo-fieldname = 'AEDAT'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

ENDFORM. "get_EKKOsortinfo

&----


*& Form EKKODISPLAY_ONALV

&----


FORM ekkodisplay_onalv.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS1'

i_callback_user_command = 'AT_USER_COMMAND'

is_layout = wa_layout

it_fieldcat = it_fieldcat

it_sort = it_sortinfo[]

it_filter = it_filter

it_events = it_events[]

TABLES

t_outtab = it_ekko[]

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. "EKKODISPLAY_ONALV

&----


*& Form validate_ebeln

&----


FORM validate_ebeln.

SELECT ebeln

FROM ekpo

INTO TABLE it_ebeln

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-014.

ENDIF.

ENDFORM. "validate_ebeln

&----


*& Form populate_layout2

&----


FORM populate_layout2 .

CLEAR wa_layout.

wa_layout-colwidth_optimize = 'X'. "column width

  • wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-window_titlebar = 'PURCHASE ORDER DETAILS SECOND SCREEN'.

ENDFORM. " populate_layout2

&----


*& Form GET_POPUPDATA

&----


FORM get_popupdata .

LOOP AT it_ekko INTO wa_ekko WHERE check = 'X'.

READ TABLE it_eine INTO wa_eine WITH KEY ebeln = wa_ekko-ebeln.

IF sy-subrc NE 0.

MESSAGE i020(z50871msg) WITH text-015 wa_ekko-ebeln .

ELSE.

wa_popup-ebeln = wa_eine-ebeln.

wa_popup-ekorg = wa_eine-ekorg.

wa_popup-ekgrp = wa_eine-ekgrp.

APPEND wa_popup TO it_popup.

ENDIF.

ENDLOOP.

ENDFORM. " GET_POPUPDATA

&----


*& Form GET_POPUPFCAT

&----


FORM get_popupfcat .

CLEAR wa_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKORG'.

wa_fieldcat-seltext_l = text-016.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKGRP'.

wa_fieldcat-seltext_l = text-017.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. " GET_POPUPFCAT

&----


*& Form DISPLAY_POPUP

&----


FORM display_popup .

LOOP AT it_ekko INTO wa_ekko WHERE check EQ 'X'.

wa_check-check = wa_ekko-check.

APPEND wa_check TO it_check.

ENDLOOP.

IF it_check[] IS INITIAL.

MESSAGE i020(z50871msg) WITH text-018.

ENDIF.

IF NOT it_popup[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = text-003

i_allow_no_selection = 'X'

i_scroll_to_sel_line = 'X'

i_tabname = 'IT_POPUP'

it_fieldcat = it_fieldcat

i_callback_program = sy-repid

TABLES

t_outtab = it_popup

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.

ENDIF.

REFRESH it_check.

REFRESH it_popup.

ENDFORM. " DISPLAY_POPUP

&----


*& Form get_ekko_data

&----


FORM get_ekko_data .

SELECT ebeln bstyp bsart aedat ernam

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE it_ekko

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-019.

ENDIF.

ENDFORM. " get_ekko_data

&----


*& Form get_eine_data

&----


FORM get_eine_data .

SELECT ebeln ekorg ekgrp

FROM eine

INTO TABLE it_eine

WHERE ebeln IN so_ebeln.

ENDFORM. " get_eine_data

&----


*& Form at_user_command1

&----


FORM at_user_command1 USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

ENDCASE.

ENDFORM. "at_user_command1

Regards

sandeep

3 REPLIES 3
Read only

Former Member
0 Likes
390

Hi,

Try below code


INTERACTIVE ALV

REPORT Z50651_ALV_INTERACTIVE MESSAGE-ID ZMSG_50651
LINE-SIZE 100
LINE-COUNT 60
NO STANDARD PAGE HEADING.

*******************TABLES DECLARATION******************
TABLES : VBAP,MARA.

******************TYPE POOLS***************************
TYPE-POOLS : SLIS.

*****************INTERNAL TABLES***********************
DATA : BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
END OF IT_VBAP.

*****************TEMPORARY VARIABLES*******************
DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE

******************FIELD CATALOG************************
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

*****************LAYOUT********************************
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

****************VARIANT********************************
DATA : G_VARIANT LIKE DISVARIANT.

*****************SAVE**********************************
DATA : G_SAVE(1) TYPE C.

******************EVENTS*******************************
DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
G_EVENTS TYPE SLIS_T_EVENT.

*******************PF STATUS***************************
DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.

*******************USER COMMAND*************************
DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
R_UCOMM LIKE SY-UCOMM.

*****************SELECTION SCREEN*************************
SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.

****************AT SELECTION SCREEN**********************
AT SELECTION-SCREEN.
PERFORM VALIDATE.

***************START-OF-SELECTION***************************
START-OF-SELECTION.
PERFORM GET_DETAILS.
PERFORM FIELDCAT.
PERFORM LAYOUT.
PERFORM VARIANT.
PERFORM SAVE.
PERFORM EVENTS.
PERFORM ALV_DISPLAY.

**********************FORMS********************************************
&---------------------------------------------------------------------
*& Form validate
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM VALIDATE .
SELECT SINGLE VBELN
FROM VBAP
INTO V_VBELN
WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'enter valid vbeln'.
ENDIF.
ENDFORM. " validate
&---------------------------------------------------------------------
*& Form get_details
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM GET_DETAILS .
SELECT VBELN
POSNR
MATNR
FROM VBAP
INTO TABLE IT_VBAP
WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'no details found'.
ENDIF.
ENDFORM. " get_details
&---------------------------------------------------------------------
*& Form fieldcat
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM FIELDCAT .
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'POSNR'.
WA_FIELDCAT-OUTPUTLEN = 6.
WA_FIELDCAT-SELTEXT_L = 'ITEM'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-OUTPUTLEN = 18.
WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.

ENDFORM. " fieldcat

&---------------------------------------------------------------------
*& Form LAYOUT
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM LAYOUT .
WA_LAYOUT-ZEBRA = 'X'.
ENDFORM. " LAYOUT
&---------------------------------------------------------------------
*& Form VARIANT
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM VARIANT .
CLEAR G_VARIANT.
G_VARIANT-REPORT = SY-REPID.

ENDFORM. " VARIANT
&---------------------------------------------------------------------
*& Form SAVE
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM SAVE .
CLEAR G_SAVE.
G_SAVE = 'A'.
ENDFORM. " SAVE
&---------------------------------------------------------------------
*& Form EVENTS
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM EVENTS .
CLEAR XS_EVENTS.
XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
XS_EVENTS-FORM = 'TOP_OF_PAGE'.
APPEND XS_EVENTS TO G_EVENTS.
ENDFORM. " EVENTS

&--------------------------------------------------------------------
*& Form TOP_OF_PAGE
&--------------------------------------------------------------------

text 
---------------------------------------------------------------------
FORM TOP_OF_PAGE.
WRITE :/ ' INTELLI GROUP'.
ENDFORM. "TOP_OF_PAGE

&---------------------------------------------------------------------
*& Form ALV_DISPLAY
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM ALV_DISPLAY .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING

I_INTERFACE_CHECK = ' ' 
I_BYPASSING_BUFFER = 
I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = PF_STATUS
I_CALLBACK_USER_COMMAND = USER_COMMAND

I_STRUCTURE_NAME = 
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT

IT_EXCLUDING = 
IT_SPECIAL_GROUPS = 
IT_SORT = 
IT_FILTER = 
IS_SEL_HIDE = 
I_DEFAULT = 'X' 
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = G_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 
IMPORTING 
E_EXIT_CAUSED_BY_CALLER = 
ES_EXIT_CAUSED_BY_USER = 
TABLES
T_OUTTAB = IT_VBAP
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. " ALV_DISPLAY

&--------------------------------------------------------------------
*& Form SET_PF_STATUS
&--------------------------------------------------------------------

text 
---------------------------------------------------------------------
FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.
ENDFORM. "SET_PF_STATUS

&--------------------------------------------------------------------
*& Form SET_USER_COMMAND
&--------------------------------------------------------------------

text 
---------------------------------------------------------------------
FORM SET_USER_COMMAND USING R_UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'DC'.
READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SELECT SINGLE MTART
FROM MARA
INTO V_MTART
WHERE MATNR = IT_VBAP-MATNR.
IF SY-SUBRC 0.
MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
ELSE.
WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
WRITE :/ 'MATERIAL TYPE :' , V_MTART.

ENDIF.
ENDIF.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CLOSE'.
CALL TRANSACTION 'SE38'.
ENDCASE.
ENDFORM. "SET_USER_COMMAND

Regards,

Chandru

Read only

Former Member
0 Likes
390

You can do it by two ways:

1. Using User-command

2. Hotspot

User command

Add User command functionality to ALVgrid report

In order to add user command functioality to the ALV grid you need to perform the following steps:

1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include 'USER_COMMAND' FORM

2. Create 'USER_COMMAND' FORM


 call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program      = gd_repid
            i_callback_top_of_page   = 'TOP-OF-PAGE'  
            I_callback_user_command = 'USER_COMMAND'   "see FORM 
            is_layout               = gd_layout
            it_fieldcat             = fieldcatalog[]
            i_save                  = 'X'
       tables
            t_outtab                = it_ekko
       exceptions
            program_error           = 1
            others                  = 2.


*------------------------------------------------------------------*
*       FORM USER_COMMAND                                          *
*------------------------------------------------------------------*
*       --> R_UCOMM                                                *
*       --> RS_SELFIELD                                            *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                  rs_selfield TYPE slis_selfield.

* Check function code
  CASE r_ucomm.
    WHEN '&IC1'.
*   Check field clicked on within ALVgrid report
    IF rs_selfield-fieldname = 'EBELN'.
*     Read data table, using index of row user clicked on
      READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
*     Set parameter ID for transaction screen field
      SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
*     Sxecute transaction ME23N, and skip initial data entry screen
      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDCASE.
ENDFORM.

Hotspot



REPORT zdemoab.

TYPE-POOLS: slis.
TABLES: mara.

TYPES: BEGIN OF t_itab,
       matnr TYPE mara-matnr,
       mtart TYPE mara-mtart,
       END OF t_itab.

DATA: itab TYPE TABLE OF t_itab,
      wa_itab like line of itab.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
      wa_fieldcat LIKE LINE OF i_fieldcat,
      i_layout TYPE slis_layout_alv,
      g_repid TYPE sy-repid.


SELECT matnr mtart INTO TABLE itab FROM mara UP TO 10 ROWS.


CLEAR: wa_fieldcat.
wa_fieldcat-col_pos = 0.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'MARA'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR: wa_fieldcat.

wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MTART'.
wa_fieldcat-tabname = 'MARA'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR: wa_fieldcat.


i_layout-colwidth_optimize = 'X'.
i_layout-hotspot_fieldname = 'MATNR'.

g_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
   i_callback_program                = g_repid
   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND '
   is_layout                         = i_layout
   it_fieldcat                       = i_fieldcat[]
  TABLES
    t_outtab                          = itab
 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.

FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.

*   Check field clicked on within ALVgrid report
    IF rs_selfield-fieldname = 'MATNR'.
*     To pass the material no in ME22 transaction
      READ TABLE itab INTO wa_itab INDEX rs_selfield-tabindex.
*     Set parameter ID for transaction screen field
      SET PARAMETER ID 'BES' FIELD wa_itab-matnr.
*     Sxecute transaction ME23N, and skip initial data entry screen
      CALL TRANSACTION 'MM03'.
*
    ENDIF.
ENDFORM.

Read only

Former Member
0 Likes
391

Hi Sakthi..

you can go thrum this code...

CODE:

----


  • STRUCTURE DECLARATIONS

  • INTERNAL TABLE DECLARATIONS

  • WORKAREA DECLARATIONS

  • TYPE-POOLS DECLARATION

----


TYPE-POOLS : slis.

TYPES : BEGIN OF st_ekko,

ebeln TYPE ekko-ebeln,

bstyp TYPE ekko-bstyp, "Purchasing Document Category

bsart TYPE ekko-bsart, "Purchasing Document Type

aedat TYPE ekko-aedat, "record created on

ernam TYPE ekko-ernam, "Person who Created the Object

check(1),

END OF st_ekko.

TYPES : BEGIN OF st_ekpo,

ebeln TYPE ekko-ebeln,

ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document

ematn TYPE ekpo-ematn, "Material number

matkl TYPE ekpo-matkl, "Material group

netpr TYPE ekpo-netpr, "Net price in purchasing document

END OF st_ekpo.

TYPES : BEGIN OF st_ebeln,

ebeln TYPE ekpo-ebeln,

END OF st_ebeln.

TYPES : BEGIN OF st_eine,

ebeln TYPE ekko-ebeln,

ekorg TYPE eine-ekorg,

ekgrp TYPE eine-ekgrp,

END OF st_eine.

TYPES : BEGIN OF st_check,

check(1),

END OF st_check.

DATA : it_ekpo TYPE STANDARD TABLE OF st_ekpo,

it_ekko TYPE STANDARD TABLE OF st_ekko,

wa_ekko LIKE LINE OF it_ekko,

it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF it_fieldcat,

wa_layout TYPE slis_layout_alv,

it_events TYPE slis_t_event,

st_event LIKE LINE OF it_events,

it_listheadr TYPE slis_t_listheader ,

wa_listheadr LIKE LINE OF it_listheadr,

st_printparams TYPE slis_print_alv,

it_sortinfo TYPE slis_t_sortinfo_alv,

wa_sortinfo LIKE LINE OF it_sortinfo,

it_ekposortinfo TYPE slis_t_sortinfo_alv,

wa_ekposortinfo LIKE LINE OF it_ekposortinfo,

it_filter TYPE slis_t_filter_alv,

it_ebeln TYPE STANDARD TABLE OF st_ebeln,

it_eine TYPE STANDARD TABLE OF st_eine,

wa_eine TYPE st_eine,

it_popup TYPE STANDARD TABLE OF st_eine,

wa_popup TYPE st_eine,

it_check TYPE STANDARD TABLE OF st_check,

wa_check TYPE st_check.

DATA : v_ebeln TYPE ekko-ebeln.

----


  • SELECTION-SCREEN

----


SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE tit.

SELECT-OPTIONS: so_ebeln FOR v_ebeln OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b.

----


  • INITIALIZATION

----


INITIALIZATION.

tit = text-000.

----


  • AT SELECTION-SCREEN ON

----


AT SELECTION-SCREEN ON so_ebeln.

PERFORM validate_ebeln.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

PERFORM get_ekko_data.

PERFORM get_eine_data.

----


  • END-OF-SELECTION

----


END-OF-SELECTION.

PERFORM populate_fieldcat1.

PERFORM populate_layout.

PERFORM get_eventlist.

PERFORM get_ekkosortinfo.

PERFORM ekkodisplay_onalv.

&----


*& Form POPULATE_FIELDCAT1

&----


FORM populate_fieldcat1.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSTYP'.

wa_fieldcat-seltext_l = text-005.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSART'.

wa_fieldcat-seltext_l = text-006.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'AEDAT'.

wa_fieldcat-seltext_l = text-007.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'ERNAM'.

wa_fieldcat-seltext_l = text-008.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "POPULATE_FIELDCAT1

&----


*& Form populate_fieldcat2

&----


FORM populate_fieldcat2 .

CLEAR wa_fieldcat.

CLEAR it_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

  • wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EBELP'.

wa_fieldcat-seltext_l = text-009.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EMATN'.

wa_fieldcat-seltext_l = text-010.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'MATKL'.

wa_fieldcat-seltext_l = text-011.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'NETPR'.

wa_fieldcat-seltext_l = text-012.

wa_fieldcat-datatype = 'CURR'. "Obligatory to perform SUM

wa_fieldcat-do_sum = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "populate_fieldcat2

&----


*& Form GET_EVENTLIST

&----


FORM get_eventlist.

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.

READ TABLE it_events WITH KEY name = slis_ev_pf_status_set INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'SET_PF_STATUS1'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

READ TABLE it_events WITH KEY name = slis_ev_end_of_page INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'END_OF_PAGE'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

ENDFORM. "GET_EVENTLIST

&----


*& Form ekpodisplay_onalv

&----


FORM ekpodisplay_onalv .

IF it_ekpo[] IS INITIAL.

MESSAGE 'NO DATA FOUND' TYPE 'I'.

ELSE.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS'

i_callback_user_command = 'AT_USER_COMMAND1'

i_callback_top_of_page = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE = I_GRID_TITLE

  • I_GRID_SETTINGS = I_GRID_SETTINGS

is_layout = wa_layout

it_fieldcat = it_fieldcat

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

it_sort = it_ekposortinfo[]

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

  • it_events = it_events

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS = IT_ALV_GRAPHICS

  • IT_HYPERLINK = IT_HYPERLINK

  • IT_ADD_FIELDCAT = IT_ADD_FIELDCAT

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

t_outtab = it_ekpo

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.

ENDIF.

ENDFORM. "ekpodisplay_onalv

&----


*& Form SET_PF_STATUS1

&----


FORM set_pf_status1 USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'MENU' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS1

&----


*& Form SET_PF_STATUS

&----


FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS

&----


*& Form AT_user_command

&----


FORM at_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

IF rs_selfield-fieldname EQ 'EBELN'.

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

SELECT ebeln ebelp ematn matkl netpr

FROM ekpo

INTO TABLE it_ekpo

WHERE ebeln EQ wa_ekko-ebeln.

PERFORM populate_fieldcat2.

PERFORM populate_layout2.

PERFORM get_ekposortinfo.

PERFORM ekpodisplay_onalv.

ELSE.

MESSAGE i020(z50871msg) WITH text-013.

ENDIF.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

WHEN 'DISP'.

PERFORM get_popupdata.

PERFORM get_popupfcat.

PERFORM display_popup.

ENDCASE.

ENDFORM. "AT_user_command

&----


*& Form TOP_OF_PAGE

&----


FORM top_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = text-001.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[]

i_logo = 'ENJOYSAP_LOGO'. "From OAER transaction

ENDFORM. "TOP_OF_PAGE

&----


*& Form build_print_params

&----


FORM build_print_params.

st_printparams-reserve_lines = '3'. "Lines reserved for footer

st_printparams-no_coverpage = 'X'.

ENDFORM. "build_print_params

&----


*& Form end_of_page

&----


FORM end_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = sy-pagno.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[].

ENDFORM. "end_of_page

&----


*& Form GET_EKPOSORTINFO

&----


FORM get_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 1.

wa_ekposortinfo-fieldname = 'EBELP'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 2.

wa_ekposortinfo-fieldname = 'EMATN'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

ENDFORM. "GET_EKPOSORTINFO

*

&----


*& Form POPULATE_LAYOUT

&----


FORM populate_layout.

wa_layout-colwidth_optimize = 'X'. "column width

wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-box_fieldname = 'CHECK'.

wa_layout-box_tabname = 'IT_EKKO'.

wa_layout-window_titlebar = 'PURCHASE ORDER HEADER DETAILS'.

ENDFORM. "POPULATE_LAYOUT

&----


*& Form get_EKKOsortinfo

&----


FORM get_ekkosortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 1.

wa_sortinfo-fieldname = 'EBELN'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 2.

wa_sortinfo-fieldname = 'BSTYP'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 3.

wa_sortinfo-fieldname = 'AEDAT'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

ENDFORM. "get_EKKOsortinfo

&----


*& Form EKKODISPLAY_ONALV

&----


FORM ekkodisplay_onalv.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS1'

i_callback_user_command = 'AT_USER_COMMAND'

is_layout = wa_layout

it_fieldcat = it_fieldcat

it_sort = it_sortinfo[]

it_filter = it_filter

it_events = it_events[]

TABLES

t_outtab = it_ekko[]

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. "EKKODISPLAY_ONALV

&----


*& Form validate_ebeln

&----


FORM validate_ebeln.

SELECT ebeln

FROM ekpo

INTO TABLE it_ebeln

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-014.

ENDIF.

ENDFORM. "validate_ebeln

&----


*& Form populate_layout2

&----


FORM populate_layout2 .

CLEAR wa_layout.

wa_layout-colwidth_optimize = 'X'. "column width

  • wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-window_titlebar = 'PURCHASE ORDER DETAILS SECOND SCREEN'.

ENDFORM. " populate_layout2

&----


*& Form GET_POPUPDATA

&----


FORM get_popupdata .

LOOP AT it_ekko INTO wa_ekko WHERE check = 'X'.

READ TABLE it_eine INTO wa_eine WITH KEY ebeln = wa_ekko-ebeln.

IF sy-subrc NE 0.

MESSAGE i020(z50871msg) WITH text-015 wa_ekko-ebeln .

ELSE.

wa_popup-ebeln = wa_eine-ebeln.

wa_popup-ekorg = wa_eine-ekorg.

wa_popup-ekgrp = wa_eine-ekgrp.

APPEND wa_popup TO it_popup.

ENDIF.

ENDLOOP.

ENDFORM. " GET_POPUPDATA

&----


*& Form GET_POPUPFCAT

&----


FORM get_popupfcat .

CLEAR wa_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKORG'.

wa_fieldcat-seltext_l = text-016.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKGRP'.

wa_fieldcat-seltext_l = text-017.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. " GET_POPUPFCAT

&----


*& Form DISPLAY_POPUP

&----


FORM display_popup .

LOOP AT it_ekko INTO wa_ekko WHERE check EQ 'X'.

wa_check-check = wa_ekko-check.

APPEND wa_check TO it_check.

ENDLOOP.

IF it_check[] IS INITIAL.

MESSAGE i020(z50871msg) WITH text-018.

ENDIF.

IF NOT it_popup[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = text-003

i_allow_no_selection = 'X'

i_scroll_to_sel_line = 'X'

i_tabname = 'IT_POPUP'

it_fieldcat = it_fieldcat

i_callback_program = sy-repid

TABLES

t_outtab = it_popup

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.

ENDIF.

REFRESH it_check.

REFRESH it_popup.

ENDFORM. " DISPLAY_POPUP

&----


*& Form get_ekko_data

&----


FORM get_ekko_data .

SELECT ebeln bstyp bsart aedat ernam

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE it_ekko

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-019.

ENDIF.

ENDFORM. " get_ekko_data

&----


*& Form get_eine_data

&----


FORM get_eine_data .

SELECT ebeln ekorg ekgrp

FROM eine

INTO TABLE it_eine

WHERE ebeln IN so_ebeln.

ENDFORM. " get_eine_data

&----


*& Form at_user_command1

&----


FORM at_user_command1 USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

ENDCASE.

ENDFORM. "at_user_command1

Regards

sandeep