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

regarding ALV

Former Member
0 Likes
1,151

Hi,

plz tell me how can i make ALV intractive?

Hi,

plz tell me how can i make ALV intractive?

9 REPLIES 9
Read only

Former Member
0 Likes
1,099

hi,

plz refer the links.

you will get all material.

1. Please give me general info on ALV.

http://www.sapfans.com/forums/viewtopic.php?t=58286

http://www.sapfans.com/forums/viewtopic.php?t=76490

http://www.sapfans.com/forums/viewtopic.php?t=20591

http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.

2. How do I program double click in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=11601

http://www.sapfans.com/forums/viewtopic.php?t=23010

3. How do I add subtotals (I have problem to add them)...

http://www.sapfans.com/forums/viewtopic.php?t=20386

http://www.sapfans.com/forums/viewtopic.php?t=85191

http://www.sapfans.com/forums/viewtopic.php?t=88401

http://www.sapfans.com/forums/viewtopic.php?t=17335

4. How to add list heading like top-of-page in ABAP lists?

http://www.sapfans.com/forums/viewtopic.php?t=58775

http://www.sapfans.com/forums/viewtopic.php?t=60550

http://www.sapfans.com/forums/viewtopic.php?t=16629

5. How to print page number / total number of pages X/XX in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)

6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.

http://www.sapfans.com/forums/viewtopic.php?t=64320

http://www.sapfans.com/forums/viewtopic.php?t=44477

7. How can I set the cell color in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=52107

8. How do I print a logo/graphics in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=81149

http://www.sapfans.com/forums/viewtopic.php?t=35498

http://www.sapfans.com/forums/viewtopic.php?t=5013

9. How do I create and use input-enabled fields in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=84933

http://www.sapfans.com/forums/viewtopic.php?t=69878

10. How can I use ALV for reports that are going to be run in background?

http://www.sapfans.com/forums/viewtopic.php?t=83243

http://www.sapfans.com/forums/viewtopic.php?t=19224

11. How can I display an icon in ALV? (Common requirement is traffic light icon).

http://www.sapfans.com/forums/viewtopic.php?t=79424

http://www.sapfans.com/forums/viewtopic.php?t=24512

12. How can I display a checkbox in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=88376

http://www.sapfans.com/forums/viewtopic.php?t=40968

http://www.sapfans.com/forums/viewtopic.php?t=6919

Go thru these programs they may help u to try on some hands on

ALV Demo program

BCALV_DEMO_HTML

BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode

BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode

BCALV_GRID_DEMO Simple ALV Control Call Demo Program

BCALV_TREE_DEMO Demo for ALV tree control

BCALV_TREE_SIMPLE_DEMO

BC_ALV_DEMO_HTML_D0100

Regards,

Roshani

Read only

Former Member
0 Likes
1,099

Hi,

The following sample code will help u to get the interactive ALV

report. Have a look on the following code.

An Interactive ALV Report without Header list based on particular field only.

  • Use “set parameter id ‘BES’ “

TYPE-POOLS SLIS.

TYPES: BEGIN OF I_EKKO,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

BUKRS LIKE EKKO-BUKRS,

BSART LIKE EKKO-BSART,

LIFNR LIKE EKKO-LIFNR,

END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,

WA_EKKO TYPE I_EKKO.

TYPES: BEGIN OF I_EKPO,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,

WA_EKPO TYPE I_EKPO.

DATA: V_REPID TYPE SY-REPID,

I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,

I_FLDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

WA_FLDCAT1 TYPE SLIS_FIELDCAT_ALV.

DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST ALV REPORT',

I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDARY ALV REPORT'.

INITIALIZATION.

V_REPID = SY-REPID.

PERFORM FLDCATALOG.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

PERFORM DISPLAY_ALV_REPORT.

FORM FLDCATALOG.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'EBELN'.

WA_FLDCAT-SELTEXT_M = 'PO NUMBER'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'AEDAT'.

WA_FLDCAT-SELTEXT_M = 'DATE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'BUKRS'.

WA_FLDCAT-SELTEXT_M = 'DOCUMENT TYPE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'LIFNR'.

WA_FLDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

ENDFORM.

FORM DATA_RETRIEVAL.

SELECT EBELN AEDAT BUKRS BSART LIFNR

FROM EKKO INTO TABLE IT_EKKO.

ENDFORM.

FORM DISPLAY_ALV_REPORT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_GRID_TITLE = I_TITLE_EKKO

IT_FIELDCAT = I_FLDCAT[]

I_SAVE = 'A'

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.

FORM USER_COMMAND USING R_COMM TYPE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_COMM.

WHEN '&IC1'.

IF RS_SELFIELD-FIELDNAME = 'EBELN'.

SET PARAMETER ID 'BES' FIELD WA_EKKO-EBELN. " BES is data element of EBELN

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

PERFORM FLDCAT_EKPO.

PERFORM DATA_RETRIEVAL_EKPO.

PERFORM DISPLAY_ALV_REPORT_EKPO.

ENDIF.

ENDCASE.

ENDFORM.

FORM FLDCAT_EKPO.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'EBELN'.

WA_FLDCAT1-SELTEXT_M = 'PO NUMBER'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'EBELP'.

WA_FLDCAT1-SELTEXT_M = 'LINE NO'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'MATNR'.

WA_FLDCAT1-SELTEXT_M = 'MATERIAL NUMBER'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'MENGE'.

WA_FLDCAT1-SELTEXT_M = 'QUANTITY'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'MEINS'.

WA_FLDCAT1-SELTEXT_M = 'BASE UNIT OF MEASURE'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

WA_FLDCAT1-TABNAME = 'IT_EKPO'.

WA_FLDCAT1-FIELDNAME = 'NETPR'.

WA_FLDCAT1-SELTEXT_M = 'PRICE'.

APPEND WA_FLDCAT1 TO I_FLDCAT1.

CLEAR WA_FLDCAT1.

ENDFORM.

FORM DATA_RETRIEVAL_EKPO.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR

INTO TABLE IT_EKPO

FROM EKPO.

ENDFORM.

FORM DISPLAY_ALV_REPORT_EKPO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

I_GRID_TITLE = I_TITLE_EKPO

IT_FIELDCAT = I_FLDCAT1[]

I_SAVE = 'A'

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.

ENDFORM.

Reward,if it is useful.

Thanks,

Chandu

Read only

0 Likes
1,099

Hi,

Try This Code



*&---------------------------------------------------------------------*
*& Report  ZPSALVCOL_187
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*



REPORT  zpsalvcol_187.


TYPE-POOLS: slis.
TABLES: vbap.
TYPES : BEGIN OF t_vbap,
	 vbeln TYPE vbeln_va,
	 posnr TYPE posnr,
	 matnr TYPE matnr,
	 charg TYPE charg_d,
	 matkl TYPE matkl,
	 meins TYPE meins,
	 brgew TYPE brgew,
	 ntgew TYPE ntgew,
	 gewei TYPE gewei,
*        col(4) TYPE c,
END OF t_vbap.

DATA:   i_vbap TYPE STANDARD TABLE OF  t_vbap,
	 wa_vbap TYPE t_vbap,
        wa_vbap_fc TYPE slis_fieldcat_alv,
        i_vbap_fc TYPE STANDARD TABLE OF  slis_fieldcat_alv,
        wa_layout TYPE slis_layout_alv,
        i_layout TYPE slis_layout_alv,
        it_events TYPE slis_t_event,
        wa_events TYPE slis_alv_event.

*DATA: i_index TYPE sytabix.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln.
SELECTION-SCREEN: END OF BLOCK b1.

SELECT vbeln
	posnr
	matnr	
	charg
	matkl
	meins
	brgew
	ntgew
	gewei
FROM vbap
INTO TABLE i_vbap
WHERE vbeln IN s_vbeln.






wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_OF_PAGE'.
APPEND wa_events TO it_events.


wa_events-name = 'END_OF_LIST'.
wa_events-form = 'END_OF_LIST'.
APPEND wa_events TO it_events.


wa_events-name = 'USER_COMMAND'.
wa_events-form = 'USER_COMMAND'.
APPEND wa_events TO it_events.


wa_vbap_fc-col_pos = '1'.
wa_vbap_fc-fieldname = 'VBELN'.
wa_vbap_fc-tabname = 'i_vbap'.
wa_vbap_fc-seltext_l = 'Sales Document' .
wa_vbap_fc-hotspot = 'X'.
wa_vbap_fc-emphasize = 'C110'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.


wa_vbap_fc-col_pos = '2'.
wa_vbap_fc-fieldname = 'POSNR'.
wa_vbap_fc-tabname = 'i_vbap_fc'.
wa_vbap_fc-seltext_l = 'Sales Document Item' .
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C210'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '3'.
wa_vbap_fc-fieldname = 'MATNR'.
wa_vbap_fc-seltext_l = 'Material Number' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C310'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '4'.
wa_vbap_fc-fieldname = 'CHARG'.
wa_vbap_fc-seltext_l = 'Batch Number' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C410'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '5'.
wa_vbap_fc-fieldname = 'MATKL'.
wa_vbap_fc-seltext_l = 'Material group' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C510'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '6'.
wa_vbap_fc-fieldname = 'MEINS'.
wa_vbap_fc-seltext_l = 'Base Unit of Measure' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C610'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '7'.
wa_vbap_fc-fieldname = 'BRGEW'.
wa_vbap_fc-seltext_l = 'Gross Weight of the Item' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C710'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '8'.
wa_vbap_fc-fieldname = 'NTGEW'.
wa_vbap_fc-tabname = 'i_vbap_fc'.
wa_vbap_fc-seltext_l = 'Net Weight' .
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C100'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.

wa_vbap_fc-col_pos = '9'.
wa_vbap_fc-fieldname = 'GEWEI'.
wa_vbap_fc-seltext_l = 'Weight Unit' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C300'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.



CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
*    I_INTERFACE_CHECK                 = ' '
*    I_BYPASSING_BUFFER                = ' '
*    I_BUFFER_ACTIVE                   = ' '
     i_callback_program                = sy-repid
*    I_CALLBACK_PF_STATUS_SET          = ' '
*    I_CALLBACK_USER_COMMAND           = ' '
*    i_callback_top_of_page            = 'HEADER'
*    I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*    I_CALLBACK_HTML_END_OF_LIST       = ' '
*    I_STRUCTURE_NAME                  =
*    I_BACKGROUND_ID                   = ' '
*    I_GRID_TITLE                      =
*    I_GRID_SETTINGS                   =
     is_layout                         = wa_layout
     it_fieldcat                       = i_vbap_fc
*    IT_EXCLUDING                      =
*    IT_SPECIAL_GROUPS                 =
*    IT_SORT                           =
*    IT_FILTER                         =
*    IS_SEL_HIDE                       =

*    I_DEFAULT                         = 'X'
*    I_SAVE                            = ' '
*    IS_VARIANT                        =
     it_events                         = it_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
*    I_HTML_HEIGHT_TOP                 = 0
*    I_HTML_HEIGHT_END                 = 0
*    IT_ALV_GRAPHICS                   =
*    IT_HYPERLINK                      =
*    IT_ADD_FIELDCAT                   =
*    IT_EXCEPT_QINFO                   =
*    IR_SALV_FULLSCREEN_ADAPTER        =
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER           =
*    ES_EXIT_CAUSED_BY_USER            =
     TABLES
     t_outtab                          = i_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.
	

*INCLUDE zpsalv1_187_get_dataf01.

*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page.

DATA:  t_header TYPE slis_t_listheader,
       wa_header TYPE slis_listheader.

* Title
wa_header-typ  = 'H'.
wa_header-info = 'Order Table Report'.
*  wa_header-col = 'C100'.
APPEND wa_header TO t_header.
CLEAR wa_header.


CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    it_list_commentary       = t_header
   i_logo                   = 'Z_CAP_LOGO'
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
          .


ENDFORM.                    "TOP_OF_PAGE


*&---------------------------------------------------------------------*
*&      Form  END_OF_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM end_of_list.

  DATA: t_header TYPE slis_t_listheader,
          wa_header TYPE slis_listheader.
  CLEAR wa_header.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'Order Table Report FOOTER'.
*  wa_header-col = 'C100'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary       = t_header
     i_logo                   = 'Z_CAP_LOGO'
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
            .


ENDFORM.                    "END_OF_LIST




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

  CASE r_ucomm.
    WHEN '&IC1'.

      CASE rs_selfield-sel_tab_field.

        WHEN 'i_vbap-VBELN'.

          SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
          CALL TRANSACTION 'VA02'.

      ENDCASE.

  ENDCASE.
ENDFORM.                    "USER_COMMAND

When u click on the first Cloumn it will open Transaction VAO2

Regards

Sandipan

Read only

Former Member
0 Likes
1,099

Hi,

Check out the sample code. This is an example for interactive report. ie, User command for click operation

FORM user_command USING lp_ucomm TYPE syucomm

lp_selfield TYPE slis_selfield. "#EC *

CASE lp_ucomm.

  • User command for click operation

WHEN '&IC1'.

CLEAR gwa_line .

CHECK gt_line IS NOT INITIAL.

READ TABLE gt_line INTO gwa_line INDEX lp_selfield-tabindex .

CASE lp_selfield-fieldname .

WHEN 'MBLNR' .

IF gwa_line-mblnr IS NOT INITIAL .

IF gwa_line-iblnr IS NOT INITIAL .

  • Setting the value of material document number in the transaction

SET PARAMETER ID 'IBN' FIELD gwa_line-iblnr .

CALL TRANSACTION 'MI03' AND SKIP FIRST SCREEN .

ELSE.

MESSAGE w004 WITH text-t48 gwa_line-matnr.

ENDIF.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " user_command

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' "#EC *

EXPORTING

i_callback_program = gf_repid

is_layout = gwa_layout

it_fieldcat = gt_catalog

it_sort = gt_sort

it_events = gt_events

i_save = gf_save

is_variant = gwa_variant

i_callback_user_command = 'USER_COMMAND'

TABLES

t_outtab = gt_line

EXCEPTIONS

program_error = 1

OTHERS = 2.

Reward if helpful.

Regards,

Ramya

Read only

Former Member
0 Likes
1,099

Hi

TYPE-POOLS : slis.

TYPES : BEGIN OF st_ekko,

ebeln TYPE ekko-ebeln, "Purchasing Document Number

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

to copy the tool bar....goto se80----in function group...give SLAV.....and in that GUI STATUS....right click and copy..then it wil ask target program....then goto se41....there give the GUI STATUS name which u gave in se80..in the above example it is STANDARD.....save and activate..

Read only

Former Member
0 Likes
1,099

Hai.

check the example code.

report yh645_secndry_alv.

type-pools: slis.

data: fieldcat type slis_t_fieldcat_alv,

fieldcat_ln like line of fieldcat,

fs_layout type slis_layout_alv,

t_layoout like standard table

of fs_layout.

data: begin of fs_spfli,

carrid type spfli-carrid,

connid type spfli-connid,

countryfr type spfli-countryfr,

cityfrom type spfli-cityfrom,

airpfrom type spfli-airpfrom,

countryto type spfli-countryto,

cityto type spfli-cityto,

airpto type spfli-airpto,

fltime type spfli-fltime,

deptime type spfli-deptime,

arrtime type spfli-arrtime,

distance type spfli-distance,

distid type spfli-distid,

fltype type spfli-fltype,

period type spfli-period,

checkbox,

color(3),

end of fs_spfli.

data:

begin of fs_table,

carrid type spfli-carrid,

connid type spfli-connid,

end of fs_table.

data: begin of fs_sflight,

check,

color(3).

include type sflight.

data:end of fs_sflight.

data:

begin of fs_table1,

carrid type sflight-carrid,

connid type sflight-connid,

fldate type sflight-fldate,

end of fs_table1.

data:

t_spfli like standard table

of fs_spfli.

data:

t_table like standard table

of fs_table.

data:

t_table1 like standard table

of fs_table1.

data:

t_sflight like standard table

of fs_sflight.

data:

t_sbook like standard table

of sbook.

data t_layout type slis_layout_alv.

select *

into corresponding fields of table t_spfli

from spfli.

perform start_list_viewer.

perform get_spfli_details.

&----


*& Form SUB1

&----


  • text

----


  • -->RT_EXTAB text

----


form sub1 using rt_extab type slis_t_extab.

data: flight type slis_extab.

flight-fcode = 'SFLIGHT'.

append flight to rt_extab.

set pf-status 'SFLIGHT'. " EXCLUDING RT_EXTAB.

endform. "SUB1

&----


*& Form START_LIST_VIEWER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form start_list_viewer .

data: pgm like sy-repid.

pgm = sy-repid.

fs_layout-box_fieldname = 'CHECKBOX'.

fs_layout-info_fieldname = 'COLOR'.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

i_callback_program = pgm

i_callback_pf_status_set = 'SUB1'

i_callback_user_command = 'USER_COMMAND'

i_structure_name = 'SPFLI'

is_layout = fs_layout

tables

t_outtab = t_spfli

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

*******Process Call Back Events (Begin)**************************

form user_command using ucomm like sy-ucomm

selfield type slis_selfield.

case ucomm.

when 'SFLIGHT'.

selfield-refresh = 'X'.

perform get_spfli_details.

select *

from sflight

into corresponding fields of table t_sflight

for all entries in t_table

where carrid eq t_table-carrid

and connid eq t_table-connid.

perform display_sflight.

when 'SBOOK'.

selfield-refresh = 'X'.

perform get_sflight_details.

select *

from sbook

into corresponding fields of table t_sbook

for all entries in t_table1

where carrid eq t_table1-carrid

and connid eq t_table1-connid

and fldate eq t_table1-fldate.

perform display_sbook.

endcase.

endform. "USER_COMMAND

&----


*& Form SUB2

&----


  • text

----


  • -->RT_EXTAB text

----


form sub2 using rt_extab type slis_t_extab.

data: flight type slis_extab.

flight-fcode = 'SBOOK'.

append flight to rt_extab.

set pf-status 'SBOOK'. " EXCLUDING RT_EXTAB.

endform. "SUB2

&----


*& Form DISPLAY_SFLIGHT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form display_sflight .

data: pgm like sy-repid.

pgm = sy-repid.

clear t_layout.

fs_layout-box_fieldname = 'CHECK'.

fs_layout-info_fieldname = 'COLOR'.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

i_callback_program = pgm

i_callback_pf_status_set = 'SUB2'

i_callback_user_command = 'USER_COMMAND'

i_structure_name = 'SFLIGHT'

is_layout = fs_layout

tables

t_outtab = t_sflight

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

&----


*& Form GET_SPFLI_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form get_spfli_details .

loop at t_spfli into fs_spfli.

if fs_spfli-checkbox = 'X'.

fs_spfli-color = 'C51'.

fs_spfli-checkbox = '1'.

fs_table-carrid = fs_spfli-carrid.

fs_table-connid = fs_spfli-connid.

append fs_table to t_table.

modify t_spfli from fs_spfli.

endif.

endloop.

endform. " GET_SFLIGHT_DETAILS

&----


*& Form GET_SFLIGHT_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form get_sflight_details .

loop at t_sflight into fs_sflight.

if fs_sflight-check = 'X'.

fs_sflight-color = 'C71'.

fs_sflight-check = '1'.

fs_table1-carrid = fs_sflight-carrid.

fs_table1-connid = fs_sflight-connid.

fs_table1-fldate = fs_sflight-fldate.

append fs_table1 to t_table1.

modify t_sflight from fs_sflight.

endif.

endloop.

endform. " GET_SFLIGHT_DETAILS

&----


*& Form DISPLAY_SBOOK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form display_sbook .

data: pgm like sy-repid.

pgm = sy-repid.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

i_callback_program = pgm

i_structure_name = 'SBOOK'

tables

t_outtab = t_sbook

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

-


EXAMPLES

Creating Detail Lists

REPORT demo_list_interactive_1.

START-OF-SELECTION.

WRITE: 'Basic List, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

WRITE: 'Secondary List, SY-LSIND =', sy-lsind.

When you run the program, the basic list appears. The GUI status automatically permits the function Choose (F2). When you choose a list line, the system triggers the AT LINE-SELECTION event, and the first detail list overlays the basic list. This list has no standard page header. It also inherits the GUI status of the basic list. By choosing Choose, the user can now create up to 19 of these lists. Trying to produce more than 19 lists results in a runtime error. Using Back , the user can return to previous lists.

Navigation in detail lists.

REPORT demo_list_interactive_2.

START-OF-SELECTION.

WRITE: 'Basic List, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

IF sy-lsind = 3.

sy-lsind = 0.

ENDIF.

WRITE: 'Secondary List, SY-LSIND =', sy-lsind.

When you run the program, the basic list appears:

Basic List, SY-LSIND = 0

The GUI status automatically permits the function Choose (F2). If the user positions the cursor on the list line and chooses Choose to trigger the AT LINE-SELECTION event, the system displays a detail list that contains the following line:

Secondary List, SY-LSIND = 1

Choosing Choose again produces:

Secondary List, SY-LSIND = 2

Back leads to the previous list level. Choosing Choose for the third time produces a detail list that contains the following line (because of the IF condition):

Secondary List, SY-LSIND = 0

The system deletes list levels 1 and 2. Choosing Back returns to the point at which the list processing started. If you choose Choose, the system creates a detail list with index 1. However, the list on level 0 is no longer a basic list (no page header), but is itself a detail list.

Page Headers for Detail Lists

REPORT demo_list_interactive_3.

START-OF-SELECTION.

WRITE 'Basic List'.

AT LINE-SELECTION.

WRITE 'Secondary List'.

TOP-OF-PAGE DURING LINE-SELECTION.

CASE sy-lsind.

WHEN 1.

WRITE 'First Secondary List'.

WHEN 2.

WRITE 'Second Secondary List'.

WHEN OTHERS.

WRITE: 'Secondary List, Level:', sy-lsind.

ENDCASE.

ULINE.

When you run the program, the basic list appears. The user can choose Choose to create detail lists. The detail lists have page headers that are set according to the value of SY-LSIND.

Messages on Detail Lists

REPORT demo_list_interactive_4 NO STANDARD PAGE HEADING.

AT LINE-SELECTION.

WRITE 'Basic List'.

MESSAGE s888(sabapdocu) WITH text-001.

AT LINE-SELECTION.

IF sy-lsind = 1.

MESSAGE i888(sabapdocu) WITH text-002.

ENDIF.

IF sy-lsind = 2.

MESSAGE e888(sabapdocu) WITH text-003 sy-lsind text-004.

ENDIF.

WRITE: 'Secondary List, SY-LSIND:', sy-lsind.

When the program runs, the system displays the basic list and the success message 100 in the status line. A single click triggers the AT-LINE-SELECTION event. When the system creates the first detail list, it displays a dialog box with the information message 100. You cannot create the second detail list, because the message 200 has message type E:

regards.

sowjanya.b

Read only

Former Member
0 Likes
1,099

Hi.

Check out this code.....

&----


*& Report ZGENALV2

*&

&----


*&

*&

&----


REPORT YPR_RCK_ALVLISTS.

TABLES: vbak,vbap,ekko,ekpo.

type-pools: slis. "ALV Declarations

*Data Declaration

TYPES : BEGIN OF i_vbak,

vbeln TYPE vbak-vbeln,

erdat TYPE vbak-erdat,

vbtyp TYPE vbak-vbtyp,

auart TYPE vbak-auart,

ernam TYPE vbak-erdat,

netwr TYPE vbak-netwr,

matnr TYPE vbap-matnr,

END OF i_vbak.

TYPES: Begin of t_ekpo,

ebeln type ekpo-ebeln,

ebelp type ekpo-ebelp,

bukrs type ekpo-bukrs,

werks type ekpo-werks,

lgort type ekpo-lgort,

matnr type ekpo-matnr,

END of t_ekpo.

DATA: it_vbak TYPE STANDARD TABLE OF i_vbak initial size 0,

wa_vbak TYPE i_vbak.

DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,

wa_ekpo TYPE t_ekpo.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

fieldcatalog_sec type slis_t_fieldcat_alv with header line.

************************************************************************

*Start-of-selection.

*START-OF-SELECTION.

SELECT-OPTIONS : s_SONum FOR VBAK-VBELN.

  • s_SODate for vbak-erdat.

PARAMETERS : p_NOSDoc TYPE I.

At Selection-Screen.

If s_sonum = ''.

message 'enter the valid order no:' type 'I'.

leave screen.

endif.

if p_NOSDoc < 1.

message 'enter valid positive integer ' type 'E'.

leave screen.

endif.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


form build_fieldcatalog.

fieldcatalog-fieldname = 'VBELN'.

fieldcatalog-seltext_m = 'Sales Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'ERDAT'.

fieldcatalog-seltext_m = 'Creation Date'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'VBTYP'.

fieldcatalog-seltext_m = 'CategorY'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AUART'.

fieldcatalog-seltext_m = 'Type'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'ERDAT'.

fieldcatalog-seltext_m = 'CreatorName'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETWR'.

fieldcatalog-seltext_m = 'NetSalesValue'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'MaterialNo'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

&----


*& Form BUILD_LAYOUT

&----


  • Build layout for ALV grid report

----


form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

&----


*& Form DISPLAY_ALV_REPORT

&----


  • Display report using ALV grid

----


form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

  • 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 = fieldcatalog[]

  • it_special_groups = gd_tabgroup

  • IT_EVENTS = GT_XEVENTS

i_save = 'X'

  • is_variant = z_template

tables

t_outtab = it_vbak

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

&----


*& Form DATA_RETRIEVAL

&----


  • Retrieve data form EKPO table and populate itab it_ekko

----


form data_retrieval.

select a~vbeln

a~erdat

a~vbtyp

a~auart

a~erdat

a~netwr

b~matnr

up to p_NOSdoc rows

from vbak as a inner join vbap as b

on avbeln = bvbeln

into table it_vbak where a~vbeln in s_SONum.

endform. " DATA_RETRIEVAL

&----


*& Form interactiveData_retreival

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM interactiveData_retreival.

select ebeln

ebelp

bukrs

werks

lgort

matnr

from ekpo into table it_ekpo where matnr = wa_vbak-matnr.

ENDFORM. " interactiveData_retreival

&----


*& Form interactivebuild_fieldcatalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM interactivebuild_fieldcatalog .

refresh fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'EBELN'.

fieldcatalog_sec-seltext_m = 'Purchase Order'.

fieldcatalog_sec-col_pos = 0.

fieldcatalog_sec-outputlen = 10.

fieldcatalog_sec-emphasize = 'X'.

fieldcatalog_sec-key = 'X'.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'EBELP'.

fieldcatalog_sec-seltext_m = 'Item Number'.

fieldcatalog_sec-col_pos = 1.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'BUKRS'.

fieldcatalog_sec-seltext_m = 'Company Code'.

fieldcatalog_sec-col_pos = 2.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'WERKS'.

fieldcatalog_sec-seltext_m = 'Plant'.

fieldcatalog_sec-col_pos = 3.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'LGORT'.

fieldcatalog_sec-seltext_m = 'Storage Location'.

fieldcatalog_sec-col_pos = 4.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

fieldcatalog_sec-fieldname = 'MATNR'.

fieldcatalog_sec-seltext_m = 'Material Number'.

fieldcatalog_sec-col_pos = 5.

append fieldcatalog_sec to fieldcatalog_sec.

clear fieldcatalog_sec.

ENDFORM. " interactivebuild_fieldcatalog

&----


*& Form interactivebuild_layout

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM interactivebuild_layout .

clear gd_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'hello'.

ENDFORM. " interactivebuild_layout

&----


*& Form display_alv_interactiveReport

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_alv_interactiveReport .

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

  • 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 = fieldcatalog_sec[]

  • it_special_groups = gd_tabgroup

  • IT_EVENTS = GT_XEVENTS

i_save = 'X'

  • is_variant = z_template

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.

ENDFORM. " display_alv_interactiveReport

&----


*& Form user_command

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM USER_COMMAND using p_ucomm like sy-ucomm p_selfield Type slis_selfield.

CASE p_ucomm.

*when double clicked on ALV grid , report id is passed to transaction

WHEN '&IC1'. "Double click

IF p_selfield-fieldname = 'MATNR'.

gd_repid = sy-repid.

  • Refresh it_vbak.

read table it_vbak into wa_vbak index p_selfield-tabindex.

perform interactiveData_retreival.

perform interactivebuild_fieldcatalog.

perform interactivebuild_layout.

perform display_alv_interactiveReport.

endif.

endcase.

ENDFORM. " user_command

Read only

venkat_o
Active Contributor
0 Likes
1,099

Hi,

Here is the procedure to handle Interactive ALV.

1.

declare events table like this.

data :
      i_events  type slis_t_event,
      w_events  like line of i_events.

2.

Build events table .

w_events-name = 'USER_COMMAND' .
w_events-form = 'USER_COMMAND' .
append w_events to i_events.
clear w_events.

w_events-name = 'PF_STATUS_SET' .
w_events-form = 'PF_STATUS_SET' .
append w_events to i_events.
clear w_events.

3.

pass this events table through REUSE_ALV_GRID_DISPLAY.

4.

USER_COMMAND and PF_STATUS_SET call back subroutines should be like this in your case. These are nowhere called using PERFORM statement in ur program.

5.

USER_COMMAND subroutine should be like this.

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
form user_command using ucomm like sy-ucomm
                  selfield type slis_selfield.
  case ucomm .
    when '&IC1'. This is for double click on ALV output.
      skip 10.
      position 10.
      write 'Double click was executed'.
  endcase.

endform.                    "user_command

selfield structure

You can also handle Interactive ALV using this structure.

types: begin of slis_selfield,
         tabname type slis_tabname,
         tabindex like sy-tabix,
         sumindex like sy-tabix,
         endsum(1) type c,
         sel_tab_field type slis_sel_tab_field,
         value type slis_entry,
         before_action(1) type c,
         after_action(1) type c,
         refresh(1) type c,
         col_stable(1) type c,
         row_stable(1) type c,
*        colwidth_optimize(1) type c,
         exit(1) type c,
         fieldname type slis_fieldname,
         grouplevel type i,
         collect_from type i,
         collect_to type i,
       end of slis_selfield.

6.

PF_STATUS_SET' subroutine should be like this.

*&---------------------------------------------------------------------*
*&      Form  pf_status_set
*&---------------------------------------------------------------------*
form pf_status_set    using extab type slis_t_extab.
 set pf-status 'STATUS1' excluding g_extab.

endform.                    "pf_status_set

I hope that u will get it.

Regards,

Venkat.O

Read only

Former Member
0 Likes
1,099

Hi,

Check this code, it works fine.

TYPE-POOLS:SLIS.

data:g_ebeln TYPE ekko-ebeln.

SELECT-OPTIONS:

S_ebeln FOR g_ebeln.

data: it_ekko type standard table of ekko,

it_ekpo type standard table of ekpo,

wa_ekko like ekko,

wa_ekpo like ekpo.

data: G_PROG TYPE SY-REPID,

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT LIKE LINE OF IT_FIELDCAT,

IT_EVENTCAT TYPE SLIS_T_EVENT,

WA_EVENTCAT LIKE LINE OF IT_EVENTCAT.

*data: it_scarr1 type table of ty_it_scarr1.

*data: wa_scarr1 type ty_it_scarr1.

*

START-OF-SELECTION.

SELECT *

FROM ekko

INTO TABLE it_ekko

WHERE ebeln IN S_ebeln.

g_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_PROG

I_CALLBACK_USER_COMMAND = 'FETCH'

I_STRUCTURE_NAME = 'EKKO'

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.

FORM FETCH USING COMMAND LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

READ TABLE IT_EKKO INTO WA_EKKO INDEX SELFIELD-TABINDEX.

CASE COMMAND.

WHEN '&IC1'.

SELECT *

FROM EKPO

INTO TABLE IT_EKPO

WHERE EBELN EQ WA_EKKO-EBELN.

G_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = 'EKPO'

CHANGING

CT_FIELDCAT = IT_FIELDCAT

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_PROG

IT_FIELDCAT = IT_FIELDCAT

IT_EVENTS = IT_EVENTCAT

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.

ENDCASE.

ENDFORM.

Plz reward points if helpful.

Thanks.