ALV double-click
Hi,
I need to do a program in ABAP OO.
My problem is that I need to present 1 ALV in a first screen and then by clicking on one line it should go to another screen where there is another ALV (giving details of the selected line).
Can anyone give me some codings which can do this (especially going to another screen after double-click)?
Thanks!
Hiiii
See my code for interactive ALV...
Award points if useful
*& AS : Simple Interactive ALV report developed using OOPS *
REPORT ZALV_OOINTERACTIVE.
*Class definition for handling double click
CLASS event_class DEFINITION DEFERRED.*Internal table and work area declarations for dd02l and dd03l
DATA : it_dd02l TYPE TABLE OF dd02l,
wa_dd02l TYPE dd02l,
it_dd03l TYPE TABLE OF dd03l,
wa_dd03l TYPE dd03l.*data declarations for ALV Main list
DATA : ty_lay1 TYPE lvc_s_layo,
it_fieldcat TYPE lvc_t_fcat ,
ty_fieldcat TYPE lvc_s_fcat ,
c_alv1 TYPE REF TO cl_gui_alv_grid,
c_cont1 TYPE REF TO cl_gui_custom_container,
event_receiver TYPE REF TO event_class.*data declarations for ALV Interactive listDATA : ty_lay2 TYPE lvc_s_layo,
it_fcat TYPE lvc_t_fcat ,
ty_fcat TYPE lvc_s_fcat ,
c_alv2 TYPE REF TO cl_gui_alv_grid,
c_cont2 TYPE REF TO cl_gui_custom_container.
**Select options for multiple values and NOT ranges
SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.
* Initialization event
INITIALIZATION.*Start of selection event
START-OF-SELECTION.*fetch data into table and field characteristics
PERFORM fetch_data.*ALV display for output
PERFORM alv_output.
*& Form FETCH_DATA
* text
* --> p1 text
* <-- p2 text
FORM fetch_data .*Select the table details
SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l
WHERE tabname IN s_table
AND tabclass = 'TRANSP'.
ENDFORM. " FETCH_DATA*----------------------------------------------------------------------** CLASS lcl_event_receiver DEFINITION*----------------------------------------------------------------------*CLASS event_class DEFINITION.*Handling double click
PUBLIC SECTION. METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------** CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*CLASS event_class IMPLEMENTATION. METHOD handle_double_click. DATA : ls_dd02l LIKE LINE OF it_dd02l.*Reading the selected data into a variable
READ TABLE it_dd02l INDEX e_row-index INTO ls_dd02l.* *Select the field details of the selected table
SELECT * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l
WHERE tabname EQ ls_dd02l-tabname.
*calling the ALV containing the field values
CALL SCREEN 101. ENDMETHOD. "handle_double_clickENDCLASS. "lcl_event_receiver IMPLEMENTATION*&---------------------------------------------------------------------**& Module pbo_100 OUTPUT*&---------------------------------------------------------------------*MODULE pbo_100 OUTPUT.
*set pf-status 'XXX'.
*set titlebar 'XXX'.
ENDMODULE. " PBO_100 OUTPUT
*& Module alv_100 OUTPUT
*&---------------------------------------------------------------------*MODULE alv_100 OUTPUT.*Check if there is no custom container in screen 100
IF c_cont1 IS INITIAL.*Creating object of container
CREATE OBJECT c_cont1
EXPORTING
container_name = 'CCONT'.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*Creating object of alv
CREATE OBJECT c_alv1
EXPORTING
i_parent = c_cont1.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*alv layout
PERFORM alv_100_layout.*alv field catalogue
PERFORM alv_100_fieldcat.*Displaying the ALV grid
CALL METHOD c_alv1->set_table_for_first_display
EXPORTING
is_layout = ty_lay1
CHANGING
it_outtab = it_dd02l[]
it_fieldcatalog = it_fieldcat. IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*Create object of the event class and setting handler for double click
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR c_alv1. ENDIF.ENDMODULE. " ALV_100 OUTPUT*&---------------------------------------------------------------------**& Module pai_100 INPUT*&---------------------------------------------------------------------*MODULE pai_100 INPUT.
ENDMODULE. " pai_100 INPUT*----------------------------------------------------------------------** MODULE PBO_101 OUTPUT*----------------------------------------------------------------------*MODULE pbo_101 OUTPUT.
* SET PF-STATUS 'XXX'.
* SET TITLEBAR 'XXX'.
ENDMODULE. " PBO_101 INPUT*----------------------------------------------------------------------** MODULE ALV_101 OUTPUT*----------------------------------------------------------------------*
MODULE alv_101 OUTPUT.
*Check if the Custom container exists.
IF c_cont2 IS INITIAL.*Creating container object
CREATE OBJECT c_cont2
EXPORTING
container_name = 'CDCONT'.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*creating ALV grid for interactive list
CREATE OBJECT c_alv2
EXPORTING
i_parent = c_cont2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*ALV layout
PERFORM alv_101_layout.*ALV fieldcatalogue
PERFORM alv_101_fieldcat.*Sorting the output by field position
SORT it_dd03l BY position.*ALV for display field details
CALL METHOD c_alv2->set_table_for_first_display
EXPORTING
is_layout = ty_lay2
CHANGING
it_outtab = it_dd03l[]
it_fieldcatalog = it_fcat.
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.ENDMODULE. " ALV_101 OUTPUT
*&---------------------------------------------------------------------**& Module PAI_101 INPUT*&---------------------------------------------------------------------*MODULE pai_101 INPUT.ENDMODULE. " PAI_101 INPUT
*& Form ALV_OUTPUT
* text
* --> p1 text
* <-- p2 text
FORM alv_output .
CALL SCREEN 100.ENDFORM. " ALV_OUTPUT
*& Form ALV_100_LAYOUT
* text
* --> p1 text
* <-- p2 text
FORM alv_100_layout . ty_lay1-grid_title = 'TABLES'.
ty_lay1-zebra = 'X'.
ty_lay1-no_toolbar = 'X'.ENDFORM. " ALV_100_LAYOUT
*& Form ALV_100_FIELDCAT
* text
* --> p1 text
* <-- p2 text
FORM alv_100_fieldcat .
CLEAR ty_fieldcat.
ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 1.
ty_fieldcat-fieldname = 'TABNAME'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'TableName'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 2.
ty_fieldcat-fieldname = 'TABCLASS'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'CATEGORY'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 3.
ty_fieldcat-fieldname = 'AS4USER'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'CREATED'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 4.
ty_fieldcat-fieldname = 'AS4DATE'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'DATE'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 5.
ty_fieldcat-fieldname = 'AS4TIME'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'TIME'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 6.
ty_fieldcat-fieldname = 'CONTFLAG'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'Delivery Class'.
ty_fieldcat-outputlen = 15.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.ENDFORM. " ALV_100_FIELDCAT
*& Form ALV_101_LAYOUT
* text
* --> p1 text
* <-- p2 text
FORM alv_101_layout . ty_lay2-grid_title = 'FIELDS'.
ty_lay2-zebra = 'X'.
ty_lay2-no_toolbar = 'X'.ENDFORM. " ALV_101_LAYOUT
*& Form ALV_101_FIELDCAT
* text
* --> p1 text
* <-- p2 text
FORM alv_101_fieldcat . REFRESH it_fieldcat.
REFRESH it_fcat.
CLEAR ty_fcat. ty_fcat-row_pos = 1.
ty_fcat-col_pos = 1.
ty_fcat-fieldname = 'FIELDNAME'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'Fieldname'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat.
ty_fcat-row_pos = 1.
ty_fcat-col_pos = 2.
ty_fcat-fieldname = 'CHECKTABLE'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'CHECKTABLE'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat. ty_fcat-row_pos = 1.
ty_fcat-col_pos = 3.
ty_fcat-fieldname = 'KEYFLAG'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'Key Flag'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat.ENDFORM. " ALV_101_FIELDCAT
Edited by: ravee on Jun 3, 2008 5:50 PM
Edited by: ravee on Jun 3, 2008 5:51 PM
Similar Messages
-
Regarding ALV double click and error
hello all ,
suppose you have error in your report at particular line no. you are displaying that line no. in alv now if you double click on line no in alv ,it will open that report in se38 with cursor postion at that line no contain error.i think there should be FM but i donot know its name.
its urgent.
plz help me.
thanks in advance.I have an alv which has two column one is reort name and 2nd is for error (conatin line no where is error) that reort conatain.
now i duble click on error column it should open that report in se38 and cursor should be at that line no.
e.g. i have zsales report which has an error on line no.'11' .
when i double click on line no 11.report zsales should be open in se38 with cursor postion at 11th line no in report.
thanks -
Example of creating ALV double click event that can be used in ANY Program
Once you get the hang of OO you can really create useful generalized code that can be used in a huge number of situtations.
Double click on ALV is often wanted
Right here goes to implement a generalized double click action that returns the row, column and column name back to the caller.
In your CLASS in the DEFINITION part code as follows.
CLASS zcl_dog DEFINITION.
PUBLIC SECTION.
METHODS:
constructor
IMPORTING z_object type ref to zcl_dog,
i_parent type ref to cl_gui_custom_container,
PRIVATE SECTION.
on_dubbelklik FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no,
dubbleklik
IMPORTING
e_row type LVC_S_ROW
e_column TYPE LVC_S_COL
es_row_no type lvc_s_ROID
program type sy-repid.
code here any extra any methods you need.
In the CONSTRUCTOR method of the implementation
CLASS zcl_dog IMPLEMENTATION.
METHOD constructor.
CREATE OBJECT grid_container1
EXPORTING
container_name = 'CCONTAINER1'.
CREATE OBJECT grid1
EXPORTING
i_parent = grid_container1.
SET HANDLER z_object->on_user_command for grid1.
SET HANDLER z_object->on_toolbar for grid1.
SET HANDLER Z_OBJECT->handle_data_changed_finished FOR grid1.
SET HANDLER Z_OBJECT->on_dubbelklik FOR grid1.
endmethod.
METHOD on_dubbelklik.
CALL METHOD me->dubbleklik
exporting
e_row = e_row
e_column = e_column
es_row_no = es_row_no
program = sy-repid.
break-point 1.
method dubbleklik.
perform dubbleklik IN PROGRAM (program)
using
e_row
e_column
es_row_no.
ENDMETHOD.
endclass.
This will now perform a routine called dubbleklik in your application program whenever you double click a cell in the grid.
In the application program just code the following
DATA: z_object type ref to zcl_dog, "Instantiate our class
grid_container1 type ref to cl_gui_custom_container,
CREATE OBJECT z_object EXPORTING z_object = z_object.
call ANY method in the class which eventually displays the grid
CALL METHOD z_object->build_dynamic_structures
CHANGING it_fldcat = it_fldcat.
form dubbleklik using
e_row type LVC_S_ROW
e_column type LVC_S_col
es_row_no type lvc_s_roid.
break-point 1.
endform.
When you double click a cell you'should be at the break point in your routine in the application program.
You've got the cell that was clicked so by reading your table you can examine the data and take the appropriate action.
Cheers
JimboI suggest you purchase a case and have a dedicated support engineer work with you directly:
http://www.sdn.sap.com/irj/boc/gettingstarted
Or
http://store.businessobjects.com/store/bobjects/Content/pbPage.CSC_map_countyselector/pgm.67024400?resid=jFmmLgoBAlcAAALO-iYAAAAP&rests=1278687224728
If this is a bug you'll get a refund, if not post your enhancement request in the Idea Place. Or the Rep will suggest a better way to create your report. -
Adding the ABAP code to SAP Query to support Query's ALV Double click.
Hi, Expert.
I need to add some ABAP Code into SAP Query (or Infoset) to support the double click event on ALV cell of result of query.
Is it possible & How to do ?
Thank you very much.
Best Regard
Nattapash C.Hi, Gautham.
I've put BREAK-POINT in all code section e.g. INITIALIZATION, END-OF-SELECTION..
I found there are some section for add code that will be executed when query is processing before output data to ALV.
What I need to know is Where I can input the code after ALV output. For support the Double Click Event on Query's ALV cell.
Best Regard,
Nattapash C. -
hallow
i wont to use the event double click on my alv .
when i push on one field like org. unit iwont to open a list of all unit below .
please if some that now this evanet can help and explain that in sample becouse i never use that (evant or metod)
regardsHi,
REPORT Ztest_ALV
NO STANDARD PAGE HEADING
LINE-SIZE 180
MESSAGE-ID /EMN/SD.
*class lcl_event_receiver definition deferred.
T A B L E S *
TABLES : /EMN/DMS_DTLS. "DMS Details
Class Declarations
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
T Y P E D E C L A R A T I O N S *
Types for Selection Data
TYPES : BEGIN OF T_CHKINFO,
BELNR TYPE /EMN/DMS_DTLS-BELNR, "Invoice
YCHKNO TYPE /EMN/DMS_DTLS-YCHKNO, "Check no
YCHKDT TYPE /EMN/DMS_DTLS-YCHKDT, "Check Date
YCHKAM TYPE /EMN/DMS_DTLS-YCHKAM, "Check Amount
YAENAM TYPE /EMN/DMS_DTLS-YAENAM, "User ID
END OF T_CHKINFO.
Types for User Data
TYPES : BEGIN OF T_USR21,
BNAME TYPE USR21-BNAME, "User Name in User Master Record
PERSNUMBER TYPE USR21-PERSNUMBER, "Person number
END OF T_USR21.
Types for User Name Details
TYPES : BEGIN OF T_ADRP,
PERSNUMBER TYPE /EMN/DMS_DTLS-YCHKNO, "Person number
NAME_FIRST TYPE ADRP-NAME_FIRST, "First name
NAME_LAST TYPE ADRP-NAME_LAST, "Last name
END OF T_ADRP.
Types for ALV List
TYPES : BEGIN OF T_FINAL,
BELNR TYPE /EMN/DMS_DTLS-BELNR, "Invoice
YCHKNO TYPE /EMN/DMS_DTLS-YCHKNO, "Check no
YCHKDT TYPE /EMN/DMS_DTLS-YCHKDT, "Check Date
YCHKAM TYPE /EMN/DMS_DTLS-YCHKAM, "Check Amount
YAENAM TYPE /EMN/DMS_DTLS-YAENAM, "User ID
NAME_FIRST TYPE ADRP-NAME_FIRST, "First name
NAME_LAST TYPE ADRP-NAME_LAST, "Last name
END OF T_FINAL.
I N T E R N A L T A B L E D E C L A R A T I O N S
DATA: WA_FINAL TYPE T_FINAL.
DATA : DT_CHKINFO TYPE STANDARD TABLE OF T_CHKINFO WITH HEADER LINE ,
DT_USR21 TYPE STANDARD TABLE OF T_USR21,
DT_ADRP TYPE STANDARD TABLE OF T_ADRP,
DT_FINAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
ALV Internal tables (Standard Internal Tables)
Catalog of fields for ALV
DT_FIELDCAT TYPE LVC_T_FCAT,
Internal table of alv sort
DT_SORT TYPE LVC_T_SORT.
D A T A D E C L A R A T I O N S
DATA: DG_TABIX TYPE SY-TABIX,
DG_COL_POS TYPE I, " Column
DG_ROW_POS TYPE I, " Row
DG_DATE1(10), " Date
DG_EXIT(1) TYPE C, " Exit for no data
DG_GRID TYPE REF TO CL_GUI_ALV_GRID, " Grid Control
DG_TXT(255) TYPE C, " Text
DG_TIME(8), " Time
DG_DATE(10), " Date
DG_SUBJECT TYPE SIN_OBJ_DE, " Subject for Mail
DG_REASON TYPE SIN_OBJ_DE, " Reason
DG_CONTAINER TYPE SCRFNAME VALUE 'MODIFYDATEPROG',
" Container Name
DG_CUSTOM_CONTAINER TYPE REF
TO CL_GUI_CUSTOM_CONTAINER, " Custom Cont.
DG_SPLITTER TYPE REF
TO CL_GUI_SPLITTER_CONTAINER, " Splitter Cont.
DG_CONTAINER_1 TYPE REF TO CL_GUI_CONTAINER, " container 1
DG_CONTAINER_2 TYPE REF TO CL_GUI_CONTAINER, " container 2
DG_OK_CODE LIKE SY-UCOMM, " OK Code
DG_LOGO TYPE REF TO CL_DD_AREA, " Print logo
DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT, " Text
DG_REPID TYPE SY-REPID, " Program Name
EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
S T R U C T U R E D E C L A R A T I O N S
ALV List workareas
*Structure for Field catalog
DATA: DS_FIELDCAT_LN LIKE LINE OF DT_FIELDCAT,
Structure for ALV Grid layout properties
DS_LAYOUT TYPE LVC_S_LAYO,
Structure for alv sort
DS_SORT TYPE LVC_S_SORT.
C O N S T A N T D E C L A R A T I O N S
CONSTANTS: C_X(1) TYPE C VALUE 'X'. " Value X
I N P U T S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001."Selection
SELECT-OPTIONS : S_BELNR FOR /EMN/DMS_DTLS-BELNR, "Invoice no
S_YCHKDT FOR /EMN/DMS_DTLS-YCHKDT, "Check Date
S_YAENAM FOR /EMN/DMS_DTLS-YAENAM. "User ID
SELECTION-SCREEN END OF BLOCK B1.
CLASS DEFINITION
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
GET_DATA ,
HANDLE_ROW_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
DISPLAY_LIST.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS IMPLEMENTATION
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD GET_DATA.
CLEAR DG_REPID.
DG_REPID = SY-REPID.
PERFORM GET_DATA.
ENDMETHOD. "GET_DATA
METHOD HANDLE_ROW_CLICK.
READ TABLE DT_FINAL INTO WA_FINAL INDEX E_ROW_ID.
IF SY-SUBRC = 0.
EXPORT WA_FINAL FROM WA_FINAL TO MEMORY ID 'ZCHK'.
CALL TRANSACTION 'YDMSCHKINFO'.
ENDIF.
ENDMETHOD. "handle_row_click
METHOD DISPLAY_LIST.
IF DT_FINAL[] IS NOT INITIAL.
Display ALV Grid List
PERFORM DISPLAY_LIST.
ENDIF.
ENDMETHOD. "DISPLAY_LIST
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
Create object for Check Data
CREATE OBJECT EVENT_RECEIVER.
CALL METHOD EVENT_RECEIVER->GET_DATA.
E N D O F S E L E C T I O N
END-OF-SELECTION.
Display ALV GRID Report
CALL METHOD EVENT_RECEIVER->DISPLAY_LIST.
*& Form GET_DATA
Perform to Get Data
FORM GET_DATA .
DATA: WA_USR21 TYPE T_USR21,
WA_ADRP TYPE T_ADRP,
WA_CHKINFO TYPE T_CHKINFO.
CLEAR :DT_CHKINFO,DT_CHKINFO[].
Fetch the Check Info from /EMN/DMS_DTLS
SELECT BELNR
YCHKNO
YCHKDT
YCHKAM
YAENAM
FROM /EMN/DMS_DTLS
INTO TABLE DT_CHKINFO
WHERE BELNR IN S_BELNR
AND YCHKDT IN S_YCHKDT
AND YAENAM IN S_YAENAM.
IF SY-SUBRC = 0.
SORT DT_CHKINFO BY BELNR YAENAM.
Fetch the User Data from USR21
SELECT BNAME
PERSNUMBER
FROM USR21
INTO TABLE DT_USR21
FOR ALL ENTRIES IN DT_CHKINFO
WHERE BNAME = DT_CHKINFO-YAENAM.
IF SY-SUBRC = 0.
SORT DT_USR21 BY BNAME.
Fetch the User Name Details from ADRP
SELECT PERSNUMBER
NAME_FIRST
NAME_LAST
FROM ADRP
INTO TABLE DT_ADRP
FOR ALL ENTRIES IN DT_USR21
WHERE PERSNUMBER = DT_USR21-PERSNUMBER.
IF SY-SUBRC = 0.
LOOP AT DT_CHKINFO INTO WA_CHKINFO..
WA_FINAL-BELNR = WA_CHKINFO-BELNR.
WA_FINAL-YCHKNO = WA_CHKINFO-YCHKNO.
WA_FINAL-YCHKDT = WA_CHKINFO-YCHKDT.
WA_FINAL-YCHKAM = WA_CHKINFO-YCHKAM.
WA_FINAL-YAENAM = WA_CHKINFO-YAENAM.
READ TABLE DT_USR21 INTO WA_USR21 WITH KEY BNAME = WA_CHKINFO-YAENAM.
CLEAR WA_CHKINFO.
IF SY-SUBRC = 0.
READ TABLE DT_ADRP INTO WA_ADRP WITH KEY PERSNUMBER = WA_USR21-PERSNUMBER.
CLEAR WA_USR21.
IF SY-SUBRC = 0.
WA_FINAL-NAME_FIRST = WA_ADRP-NAME_FIRST.
WA_FINAL-NAME_LAST = WA_ADRP-NAME_LAST.
CLEAR WA_ADRP.
ENDIF.
ENDIF.
APPEND WA_FINAL TO DT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
MESSAGE I000 WITH 'No Data Found for Given criteria'.
ENDIF.
ENDFORM. " GET_DATA
*& Form display_list
Perform to Display the Data
FORM DISPLAY_LIST .
Build catalog and assign layout settings
PERFORM BUILD_HEADER.
Display ALV Grid List in screen 100 for Grid Control
CALL SCREEN 100.
ENDFORM. " display_list
*& Form build_header
Perform to Build the Heading for the Report
FORM BUILD_HEADER .
Field catalog
REFRESH DT_FIELDCAT.
Invoice Number
ADD 1 TO DG_ROW_POS.
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'BELNR'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '12'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'Invoice Number'.
DS_FIELDCAT_LN-SCRTEXT_M = 'Invoice Number'.
DS_FIELDCAT_LN-HOTSPOT = C_X.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
Check No
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'YCHKNO'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '10'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'Check No '.
DS_FIELDCAT_LN-SCRTEXT_M = 'Check No '.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
Check Date
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'YCHKDT'.
DS_FIELDCAT_LN-INTTYPE = 'D'.
DS_FIELDCAT_LN-OUTPUTLEN = '10'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'Check Date'.
DS_FIELDCAT_LN-SCRTEXT_M = 'Check Date'.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
*Check Amount
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'YCHKAM'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '14'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'Check Amount'.
DS_FIELDCAT_LN-SCRTEXT_M = 'Check Amount'.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
User ID
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'YAENAM'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '12'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'User ID'.
DS_FIELDCAT_LN-SCRTEXT_M = 'User ID'.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
User First Name
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'NAME_FIRST'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '25'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'First Name'.
DS_FIELDCAT_LN-SCRTEXT_M = 'First Name'.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
User Last Name
ADD 1 TO DG_COL_POS.
CLEAR DS_FIELDCAT_LN.
DS_FIELDCAT_LN-FIELDNAME = 'NAME_LAST'.
DS_FIELDCAT_LN-INTTYPE = 'C'.
DS_FIELDCAT_LN-OUTPUTLEN = '25'.
DS_FIELDCAT_LN-ROW_POS = DG_ROW_POS. " Position in row
DS_FIELDCAT_LN-COL_POS = DG_COL_POS. " Position in column
DS_FIELDCAT_LN-SELTEXT = 'Last Name'.
DS_FIELDCAT_LN-SCRTEXT_M = 'Last Name'.
APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
ENDFORM. " build_header
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
Set PF Status
SET PF-STATUS 'ZCHK'.
SET TITLEBAR 'ZTITLE'.
WRITE SY-UZEIT TO DG_TIME. " Time
WRITE SY-DATUM TO DG_DATE. " Date
ALV Layout
CLEAR DS_LAYOUT.
DS_LAYOUT-CWIDTH_OPT = C_X.
Create a custom container object
IF DG_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT DG_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = DG_CONTAINER
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Create Splitter container object in custom container
CREATE OBJECT DG_SPLITTER
EXPORTING
PARENT = DG_CUSTOM_CONTAINER
ROWS = 2
COLUMNS = 1
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 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.
Assigning container 1 to splitter container
CALL METHOD DG_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = DG_CONTAINER_1.
Assigning height to row
CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT
EXPORTING
ID = '1'
HEIGHT = 24
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 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.
Create Document object
CREATE OBJECT DG_DYNDOC_ID
EXPORTING STYLE = 'ALV_GRID'.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'DMS Check Info Report'
SAP_STYLE = CL_DD_AREA=>HEADING.
Add Line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'Invoice no'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for :
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = ':'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP
EXPORTING
WIDTH = 2.
Add Text for Heading
IF S_BELNR-LOW IS NOT INITIAL.
WRITE S_BELNR-LOW TO DG_TXT.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
if S_BELNR-low is not initial or S_BELNR-HIGH is not initial.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'To'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
endif.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for Heading
IF S_BELNR-HIGH IS NOT INITIAL.
WRITE S_BELNR-HIGH TO DG_TXT.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
Add Line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'Chk Date'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for :
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = ':'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP
EXPORTING
WIDTH = 2.
Add Text for Heading
IF S_YCHKDT-LOW IS NOT INITIAL.
WRITE S_YCHKDT-LOW TO DG_TXT MM/DD/YYYY.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
if S_YCHKDT-LOW is not initial or S_YCHKDT-HIGH is not initial.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'To'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
endif.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for Heading
IF S_YCHKDT-HIGH IS NOT INITIAL.
WRITE S_YCHKDT-HIGH TO DG_TXT MM/DD/YYYY.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
Add Line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'User ID'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for :
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = ':'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP
EXPORTING
WIDTH = 2.
Add Text for Heading
IF S_YAENAM-LOW IS NOT INITIAL.
WRITE S_YAENAM-LOW TO DG_TXT.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
if S_YAENAM-LOW is not initial or S_YAENAM-HIGH is not initial.
Add Text for Heading
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'To'
SAP_EMPHASIS = CL_DD_AREA=>STRONG.
endif.
Add Gap for Text
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
Add Text for Heading
IF S_YAENAM-HIGH IS NOT INITIAL.
WRITE S_YAENAM-HIGH TO DG_TXT.
ELSE.
CLEAR DG_TXT.
ENDIF.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = DG_TXT.
Add Logo
CALL METHOD DG_DYNDOC_ID->VERTICAL_SPLIT
EXPORTING
SPLIT_AREA = DG_DYNDOC_ID
SPLIT_WIDTH = '82%'
IMPORTING
RIGHT_AREA = DG_LOGO
EXCEPTIONS
INVALID_SPLIT_AREA = 1
SPLIT_AREA_EQ_RIGHT_AREA = 2
RIGHT_AREA_ALREADY_USED = 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 METHOD DG_LOGO->ADD_PICTURE
EXPORTING
PICTURE_ID = '/EMN/EASTMAN_LOGO'.
CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.
Display Heading document & Logo in container 1
CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT
EXPORTING
REUSE_CONTROL = C_X
PARENT = DG_CONTAINER_1
EXCEPTIONS
HTML_DISPLAY_ERROR = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Assigning container 2 in splitter container
CALL METHOD DG_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = DG_CONTAINER_2.
Display GRID control in container 2
CREATE OBJECT DG_GRID
EXPORTING
I_PARENT = DG_CONTAINER_2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DS_SORT-FIELDNAME = 'BELNR'.
ds_sort-group = 'X'.
APPEND DS_SORT TO DT_SORT.
CLEAR DS_SORT.
Display the ALV Grid Control in Report
CALL METHOD DG_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE = C_X
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE = 'A'
I_DEFAULT = 'X'
IS_LAYOUT = DS_LAYOUT
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
IT_OUTTAB = DT_FINAL[]
IT_FIELDCATALOG = DT_FIELDCAT[]
IT_SORT = DT_SORT[]
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2.
IF SY-SUBRC <> 0.
MESSAGE I000 WITH
'Error in calling SET_TABLE_FOR_FIRST_DISPLAY'.
ENDIF.
Call "set_focus" if you want to make sure that 'the cursor'
is active in your control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = DG_GRID
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 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.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_ROW_CLICK FOR DG_GRID.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
Process After Input
MODULE USER_COMMAND_0100 INPUT.
Send the methods from presentation server
CALL METHOD CL_GUI_CFW=>DISPATCH.
CASE SY-UCOMM.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 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.
Leave to selection screen
LEAVE TO SCREEN 0.
WHEN OTHERS.
do nothing
ENDCASE.
CLEAR DG_OK_CODE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Regards,
Sreevani -
Hi
can any one give me how we can use double click in ALV reports by giving one exampleHI
I HAD DEVELOPED ONE PROGRAM
YOU CAN EXECUTE THIS ONE AND SEE WHERE ITS HAPPENING
REWARD IF USEFULL
REPORT ZNARTESTAVLINT NO STANDARD PAGE HEADING
LINE-SIZE 650
MESSAGE-ID ZZ_9838.
TYPE-POOLS: SLIS.
*type declaration for values from ekko
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.
*type declaration for values from ekpo
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 .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATLOG
Fieldcatalog has all the field details from ekko
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
*& Form EVENT_CALL
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_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.
ENDFORM. "EVENT_CALL
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form data_retrieval
retreiving values from the database table ekko
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
*& Form bUild_listheader
text
-->I_LISTHEADEtext
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
*& Form display_alv_report
text
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_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. "display_alv_report
*& Form TOP_OF_PAGE
text
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*& Form BUILD_FIELDCATLOG_EKPO
text
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
*& Form event_call_ekpo
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_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.
ENDFORM. "event_call_ekpo
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form TOP_OF_PAGE
text
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
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.
REGARDS
NARESH -
Double click on field in ALV Report
hi everyone
i have written a program which displays data in an alv grid report, now i need to extend my program a bit more.
when i double click on any field value the corresponding record should be displayed
can anyone suggest if i need to call any fn module for this, if so wht's the fn module
if anyone can give an example that would be fine
Cheers,
ramaHi,
*& Report Z_REPORTFROMKNA1ANDT005T
REPORT Z_REPORTFROMKNA1ANDT005T
LINE-SIZE 180
MESSAGE-ID ZZ.
TABLES:EKKO.
TYPE-POOLS : SLIS.
Internal table for ALV
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "Field catalog
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "WA for Field catalog
IT_EVENT TYPE SLIS_T_EVENT, "events
WA_EVENT TYPE SLIS_ALV_EVENT, "WA for events
IT_COMMENT TYPE SLIS_T_LISTHEADER, "Header details
WA_COMMENT TYPE SLIS_LISTHEADER, "WA for header details
WA_LAYOUT TYPE SLIS_LAYOUT_ALV, "Layout
IT_SORT TYPE SLIS_T_SORTINFO_ALV, "Sort table
WA_SORT TYPE SLIS_SORTINFO_ALV, "WA for sort table
IT_KEYINFO TYPE SLIS_KEYINFO_ALV. "Pass key value
DATA : V_REPID LIKE SY-REPID.
V_REPID = SY-REPID.
DATA : V_DATE LIKE SY-DATUM.
color management.
DATA : IT_COLOR TYPE TABLE OF LVC_S_SCOL. "Color management.
Internal table declearation
DATA:BEGIN OF IT_EKKO OCCURS 0,
EBELN LIKE EKKO-EBELN,
BUKRS LIKE EKKO-BUKRS,
AEDAT LIKE EKKO-AEDAT,
END OF IT_EKKO.
DATA : BEGIN OF IT_EKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
NETWR LIKE EKPO-MENGE,
chk(1) type c,
END OF IT_EKPO.
DATA : BEGIN OF IT_EKBE OCCURS 0,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
BELNR LIKE EKBE-BELNR,
MENGE LIKE EKBE-MENGE,
MATNR LIKE EKBE-MATNR,
END OF IT_EKBE.
DATA : BEGIN OF IT_FINAL OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
NETWR LIKE EKPO-NETWR,
LINE_COLOR(4) TYPE C, "Used to store row color attributes
END OF IT_FINAL.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN.
PARAMETERS : RB1 RADIOBUTTON GROUP G1 MODIF ID Z1,
RB2 RADIOBUTTON GROUP G1 MODIF ID Z2,
RB3 RADIOBUTTON GROUP G1 MODIF ID Z3.
SELECTION-SCREEN END OF BLOCK BLK.
AT SELECTION-SCREEN OUTPUT.
PERFORM MODIFY_SCREEN.
START-OF-SELECTION.
PERFORM GET_DETAILS.
PERFORM GET_ALV.
*& Form modify_screen
text
--> p1 text
<-- p2 text
FORM MODIFY_SCREEN .
IF RB1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'Z1' .
SCREEN-INVISIBLE = 1.
SCREEN-ACTIVE = 0.
ELSE.
SCREEN-INVISIBLE = 0.
SCREEN-ACTIVE = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " modify_screen
*& Form GET_DETAILS
Get the details
FORM GET_DETAILS .
DATA: LD_COLOR(1) TYPE C.
SELECT EBELN
BUKRS
AEDAT
FROM EKKO
INTO TABLE IT_EKKO
WHERE EBELN IN S_EBELN.
IF SY-SUBRC = 0.
SORT IT_EKKO BY EBELN.
ELSE.
MESSAGE E000 WITH 'DATA NOT FOUND'.
ENDIF.
IF NOT IT_EKKO[] IS INITIAL.
SELECT EBELN
EBELP
MATNR
MENGE
MEINS
NETPR
NETWR
chk
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
SORT IT_EKPO BY EBELN.
ENDIF.
ENDIF.
LOOP AT IT_EKPO.
IT_FINAL-EBELN = IT_EKPO-EBELN.
IT_FINAL-EBELP = IT_EKPO-EBELP.
IT_FINAL-MATNR = IT_EKPO-MATNR.
IT_FINAL-MENGE = IT_EKPO-MENGE.
IT_FINAL-MEINS = IT_EKPO-MEINS.
IT_FINAL-NETPR = IT_EKPO-NETPR.
IT_FINAL-NETWR = IT_EKPO-NETWR.
ON CHANGE OF IT_FINAL-EBELN.
LD_COLOR = 7.
CONCATENATE 'C' LD_COLOR '10' INTO IT_FINAL-LINE_COLOR.
ENDON.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
ENDFORM. " GET_DETAILS
*& Form GET_ALV
text
FORM GET_ALV .
PERFORM GENERATE_FIELDCAT.
PERFORM GENERATE_LAYOUT.
PERFORM GENERATE_EVENTS.
PERFORM GENERATE_SORT.
PERFORM ALV_GRID_DISPLAY.
ENDFORM. " GET_ALV
*& Form GENERATE_FIELDCAT
Field catalog
FORM GENERATE_FIELDCAT .
IF RB1 = 'X' OR RB2 = 'X'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-COL_POS = '1'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'PO Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-COL_POS = '2'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Item Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-edit = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-COL_POS = '3'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Material Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-COL_POS = '4'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'PO Quantity'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-COL_POS = '5'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Order unit'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-COL_POS = '6'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Net price'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NETWR'.
WA_FIELDCAT-COL_POS = '7'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Net order value'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
wa_fieldcat-fieldname = 'CHK'.
wa_fieldcat-col_pos = '8'.
wa_fieldcat-just = 'C'.
wa_fieldcat-seltext_l = 'Check Box'.
wa_fieldcat-lowercase = 'X'.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to it_fieldcat.
ELSE.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_EKKO'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
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_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_EKPO'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
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.
ENDIF.
ENDFORM. " GENERATE_FIELDCAT
*& Form GENERATE_EVENTS
Generate Events
FORM GENERATE_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_EVENT
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.
IF NOT IT_EVENT[] IS INITIAL.
READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
ENDIF.
<b> READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
WA_EVENT-FORM = 'IT_USER_COMMAND'.
MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
ENDIF.</b>
ENDIF.
ENDFORM. " GENERATE_EVENTS
*& Form TOP_OF_PAGE
TOP_OF_PAGE
FORM TOP_OF_PAGE.
DATA : V_CONCATE(50) TYPE C.
DATA : V_SPACE(10) TYPE C.
CONCATENATE 'VIKRANTH' 'RAJESH' INTO V_CONCATE.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'USER :'.
WA_COMMENT-INFO = V_CONCATE.
APPEND WA_COMMENT TO IT_COMMENT.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'DATE:'.
WA_COMMENT-INFO = SY-DATUM.
APPEND WA_COMMENT TO IT_COMMENT.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'TIME:'.
WA_COMMENT-INFO = SY-TIMLO.
APPEND WA_COMMENT TO IT_COMMENT.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_COMMENT.
CLEAR IT_COMMENT.
ENDFORM. "TOP_OF_PAGE
*& Form ALV_GRID_DISPLAY
Grid display
FORM ALV_GRID_DISPLAY .
IF RB1 = 'X'.
PERFORM GRID_DISPLAY.
ELSEIF RB2 = 'X'.
PERFORM LIST_DISPLAY.
ELSE.
PERFORM HIERSEQ_DISPLAY.
ENDIF.
ENDFORM. " ALV_GRID_DISPLAY
*& Form GENERATE_LAYOUT
LAYOUT
FORM GENERATE_LAYOUT .
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "OPTIMIZING FIELD WIDTH
WA_LAYOUT-ZEBRA = 'X'. "PUTTING ZEBRA COLORS
WA_LAYOUT-TOTALS_TEXT = 'Total'.
WA_LAYOUT-SUBTOTALS_TEXT = 'SUB TOTAL'.
WA_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
ENDFORM. " GENERATE_LAYOUT
*& Form GENERATE_SORT
SORT
FORM GENERATE_SORT .
WA_SORT-FIELDNAME = 'EBELN'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
ENDFORM. " GENERATE_SORT
*& Form GRID_DISPLAY
GRID DISPLAY
FORM GRID_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'IT_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Purchase Order Details'
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_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
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_FINAL
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. " GRID_DISPLAY
*& Form LIST_DISPLAY
LIST DISPLAY
FORM LIST_DISPLAY .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
<b> I_CALLBACK_USER_COMMAND = 'IT_USER_COMMAND'</b>
I_STRUCTURE_NAME = I_STRUCTURE_NAME
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
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
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
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_FINAL
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. " LIST_DISPLAY
*& Form HIERSEQ_DISPLAY
HIERSEQ DISPLAY
FORM HIERSEQ_DISPLAY .
IT_KEYINFO-HEADER01 = 'EBELN'.
IT_KEYINFO-ITEM01 = 'EBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
IT_EVENT_EXIT = IT_EVENT_EXIT
I_TABNAME_HEADER = 'IT_EKKO'
I_TABNAME_ITEM = 'IT_EKPO'
I_STRUCTURE_NAME_HEADER = I_STRUCTURE_NAME_HEADER
I_STRUCTURE_NAME_ITEM = I_STRUCTURE_NAME_ITEM
IS_KEYINFO = IT_KEYINFO
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
IR_SALV_HIERSEQ_ADAPTER = IR_SALV_HIERSEQ_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB_HEADER = IT_EKKO
T_OUTTAB_ITEM = 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. " HIERSEQ_DISPLAY
<b>
*& Form IT_USER_COMMAND
text
FORM IT_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
FREE IT_FIELDCAT.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_FINAL INDEX RS_SELFIELD-TABINDEX.
PERFORM GET_EKBE.
PERFORM GET_FIELD_CATALOG.
PERFORM GET_LIST.
ENDCASE.
ENDFORM. "IT_USER_COMMAND</b>
*& Form GET_EKBE
text
FORM GET_EKBE .
IF NOT IT_FINAL[] IS INITIAL.
SELECT EBELN
EBELP
BELNR
MENGE
MATNR
INTO TABLE IT_EKBE
FROM EKBE
FOR ALL ENTRIES IN IT_FINAL
WHERE EBELN = IT_FINAL-EBELN
AND EBELP = IT_FINAL-EBELP.
ENDIF.
ENDFORM. " GET_EKBE
*& Form GET_FIELD_CATALOG
text
FORM GET_FIELD_CATALOG .
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-COL_POS = '1'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'PO Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-COL_POS = '2'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Item Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BELNR'.
WA_FIELDCAT-COL_POS = '3'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Material Document'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-COL_POS = '4'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Quantity'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-COL_POS = '5'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Material Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. " GET_FIELD_CATALOG
*& Form get_list
text
FORM GET_LIST .
IF RB1 = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_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 = 'SECONDARY LIST'
I_GRID_SETTINGS = I_GRID_SETTINGS
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
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_EKBE
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.
IF RB2 = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME = I_STRUCTURE_NAME
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
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
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
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_EKBE
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. " get_list
Thanks
Vikranth Khimavath
Message was edited by:
Khimavath Vikranth -
Need help in double click the column in ALV
hello all ,
I am new to Abap coding . I have got the following requirement .
there are 2 columns in my alv grid output list . First column shows both the sales orders and Quotation .
2nd column shows the document type ..If the document type is ZQT then that is recognised as Quotation . For the remaining documnets types all are sales orders. Please see sample list ..
Salesorder/quotation | Document type
| -
| -
| ZQT
| -
| -
So if the users double clicks on Sales order it has to go to VA02 transaction .
If the user double clicks on quotationin that same column it has to go to VA22 transaction .
Please tell me how to achieve thisfunctionality in the same column .
ThanksAs per your requirement i put one example so it will help to solve your issue
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = &2.
ls_fieldcat-cfieldname = &3.
ls_fieldcat-qfieldname = &4.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
TYPE-POOLS: slis. " ALV Global types
TYPES:
BEGIN OF ty_vbak,
vkorg TYPE vbak-vkorg, " Sales organization
kunnr TYPE vbak-kunnr, " Sold-to party
vbeln TYPE vbak-vbeln, " Sales document
netwr TYPE vbak-netwr, " Net Value of the Sales Order
waerk TYPE vbak-waerk, " Currency
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln, " Sales document
posnr TYPE vbap-posnr, " Sales document item
matnr TYPE vbap-matnr, " Material number
arktx TYPE vbap-arktx, " Short text for sales order item
kwmeng TYPE vbap-kwmeng, " Order quantity
vrkme TYPE vbap-vrkme, " Quantity Unit
netwr TYPE vbap-netwr, " Net value of the order item
waerk TYPE vbap-waerk, " Currency
END OF ty_vbap.
DATA :
gs_vbak TYPE ty_vbak,
* Data displayed in the first list
gt_vbak TYPE TABLE OF ty_vbak,
* Data displayed in the second list
gt_vbap TYPE TABLE OF ty_vbap.
SELECT-OPTIONS :
s_vkorg FOR gs_vbak-vkorg, " Sales organization
s_kunnr FOR gs_vbak-kunnr, " Sold-to party
s_vbeln FOR gs_vbak-vbeln. " Sales document
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
PERFORM f_read_data_vbak.
PERFORM f_display_data_vbak. -
Error when double clicking any field in Alv grid
Hi All,
I have created a custom container. To that custom container I am displaying an alv grid with all editable fields using oops concept.
Hence when I am double clicking on any on the field of the table I am getting a dump " an exception condition ERROR raised in CL_GUI_ALV_GRID_BASE in method SET_DRAG_DROP_ROWS".
Kindly helpHi,
Check the PF-STATUS. It seems that you have assigned F6 shortcut key for some event.
Remove the F6 assignment & activate the pf-status.
Best regards,
Prashant -
Double Click on ALV Report Output, Bringing to selections creen
Hello Gurus,
Please help me When i do double click on ALV Report output , it is going back to Selection screen, actually its working as Back button. Now how to stop it.. I did debugging but i cannot trace it.PERFORM SUB_CREATE_FCAT.
DATA W_REPID LIKE SY-REPID.
W_REPID = SY-REPID.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
PERFORM SUB_SORT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'C_USERCOMMAND '
* I_CALLBACK_TOP_OF_PAGE = ' '
* 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 = ls_layout
IT_FIELDCAT = IT_FIELDCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'U'
* IS_VARIANT =
* 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 = T_FINAL
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF. -
Double click on list field in ALV grid control
Hello all,
I developed a report with a ALV grid control. I would like to move some functionality from marking a line and pressing a button in the status line to double clicking a specific field in the output list and execute a command there (i.e. double click on PO number and go to PO display TAC then). Can anybody provide some example coding for that?
Thanks so much for your help!
TorstenHere is your sample program. Copy this code into a z program. Create the screen 100 with a container in it and name it "ALV_CONTAINER". Create the gui-status with "BACK".
report zrich_0001.
tables: ekko.
data: begin of i_alv occurs 0,
ebeln type ekko-ebeln,
end of i_alv.
* CLASS cl_event_receiver DEFINITION Handles Double Click
class cl_event_receiver definition.
public section.
methods handle_double_click
for event double_click of cl_gui_alv_grid
importing e_row e_column.
private section.
endclass.
* CLASS CL_EVENT_RECEIVER IMPLEMENTATION Handles Double Click
class cl_event_receiver implementation.
method handle_double_click.
perform drill_down using e_row-index.
endmethod.
endclass.
data: alv_container type ref to cl_gui_custom_container.
data: event_receiver type ref to cl_event_receiver.
data: alv_grid type ref to cl_gui_alv_grid.
data: layout type lvc_s_layo.
data: fieldcat type lvc_t_fcat.
selection-screen begin of block b1 with frame title text-001 .
select-options: s_ebeln for ekko-ebeln.
selection-screen end of block b1.
start-of-selection.
perform get_data.
call screen 100.
* Module status_0100 OUTPUT
module status_0100 output.
set pf-status '0100'.
set titlebar '0100'.
data: variant type disvariant.
variant-report = sy-repid.
variant-username = sy-uname.
* Create Controls
create object alv_container
exporting
container_name = 'ALV_CONTAINER'.
create object alv_grid
exporting
i_parent = alv_container.
* Create Event Receiver
create object event_receiver.
* Populate Field Catalog
perform get_fieldcatalog.
call method alv_grid->set_table_for_first_display
exporting
is_layout = layout
is_variant = variant
i_save = 'U'
i_structure_name = 'I_ALV'
changing
it_outtab = i_alv[]
it_fieldcatalog = fieldcat[].
* handler for ALV grid
set handler event_receiver->handle_double_click for alv_grid.
endmodule.
* Module USER_COMMAND_0100 INPUT
module user_command_0100 input.
case sy-ucomm.
when 'BACK' or 'CANC'.
if not alv_container is initial.
call method alv_container->free.
clear: alv_container.
free : alv_container.
endif.
if sy-subrc = 0.
set screen 0.
leave screen.
else.
leave program.
endif.
when 'EXIT'.
if not alv_container is initial.
call method alv_container->free.
clear: alv_container.
free : alv_container.
endif.
leave program.
endcase.
endmodule.
* FORM GET_DATA
form get_data.
select * into corresponding fields of table i_alv
from ekko
where ebeln in s_ebeln.
sort i_alv ascending by ebeln.
endform.
* Form Get_Fieldcatalog - Set Up Columns/Headers
form get_fieldcatalog.
data: ls_fcat type lvc_s_fcat.
refresh: fieldcat.
clear: ls_fcat.
ls_fcat-reptext = 'PO Number'.
ls_fcat-coltext = 'PO Number'.
ls_fcat-fieldname = 'EBELN'.
ls_fcat-ref_table = 'I_ALV'.
ls_fcat-outputlen = '12'.
ls_fcat-col_pos = 1.
append ls_fcat to fieldcat.
endform.
* DRILL_DOWN
form drill_down using index.
read table i_alv index index.
if sy-subrc = 0.
set parameter id 'BES' field i_alv-ebeln.
call transaction 'ME23' and skip first screen.
if not alv_container is initial.
call method alv_container->free.
clear: alv_container.
free : alv_container.
endif.
endif.
endform.
Regards,
Rich Heilman -
Double click on the node,ALV tree, subscreen
Hi,
I have a small requirement in ALV Tree
left side i get a tree and when i double click on one of it , i'm trying to display the subscreen. even though i am setting the paramaters to the screen but i'm unable to get those values in the subscreen.
example
Name Description subscreen 0101
xyz xyz desc (double click on this) name = XYZ
ABC abs desc descrip = xyz desc
This is what the requirement is:
Please help me out with the solution.
BhavanaHi Bhavana,
Register your double click event in the ALV Tree program. Then call the respective subscreen using sy-ucomm value.
IF NOT r_ucomm IS INITIAL.
CASE r_ucomm.
WHEN '&F03'.
SET SCREEN 100.
LEAVE SCREEN.
endif.
Refer the below code for setting the registering the event.
CALL METHOD tree->get_registered_events
IMPORTING
events = l_events_s.
l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
APPEND l_event TO l_events_s.
CALL METHOD tree->set_registered_events
EXPORTING
events = l_events_s
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
CREATE OBJECT l_events_receiver.
SET HANDLER l_events_receiver->handle_item_click FOR tree.
CLASS lcl_events_receiver DEFINITION. "#EC *
PUBLIC SECTION.
METHODS:
handle_item_click FOR EVENT item_double_click OF cl_gui_alv_tree
IMPORTING node_key fieldname.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_events_receiver IMPLEMENTATION.
METHOD handle_item_click.
PERFORM employee_data USING node_key fieldname.
CALL SCREEN 300.
ENDMETHOD. "HANDLE_ITEM_DOUBLE_CLICK
ENDCLASS. "lcl_events_receiver IMPLEMENTATION
Thanks.
Ganesh R K
Edited by: Ganesh.rk83 on Jun 23, 2011 11:21 AM -
Deactivate the double click/ hot spot for a particular row in alv grid.
Hello,
As per a certain condition how to deactivate the double click/ hot spot for a particular row in alv grid.
Regards,
Sarojwhere u define layout there is a field hotspot.like
data: var.
if con is true
var = 'X'. (show hotspot)
else.
var = ' '. (deactive hotspot)
elseif ws_fieldcat-fieldname = 'DMBTR'
AND ws_fieldcat-tabname = 'T_MTAB'.
ws_fieldcat-do_sum = C_X.
<b>ws_fieldcat-hotsopts = var.</b>
MODIFY Wt_fieldcat FROM ws_fieldcat
TRANSPORTING DO_SUM.
It is helpful for u. if any problen send me ur coding i will change it.
Regards
Manish Kumar -
ALV: Issue with double click event after sorting the ALV
Hello Experts,
I have an internal table that populates an ALV grid. When the user doubleclicks a row, my method HANDLE_DOUBLE_CLICK returns the e_row-index value from the ALV Grid. I use this index value to read the internal table, then retrieve additional data.
My problem is the user may sort the ALV grid before double clicking on a line. If this happens my internal table is not sorted to match the ALV grid, so reading the internal table with the e_row-index value returns the wrong information.
When the double click event occurs, is it possible to capture the value in column 1 instead of a value for e_row-index?
There is one more paramter in HANDLE_DOUBLE_CLICK for row id. It is coming blank in debugging . what is the purpose of this parameter and how i can make use of it ?
Regards
VivekHi,
I am Posting The Code Which Uses Double Click Event.
And This Code will provide the total information to you.
REPORT ZALVGRID_PG.
TABLES: SSCRFIELDS.
DATA: V_BELNR TYPE RBKP-BELNR.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: IRNO FOR V_BELNR.
PARAMETERS: P_GJAHR TYPE RBKP-GJAHR.
SELECTION-SCREEN END OF BLOCK B1.
DATA: WA TYPE ZALVGRID_DISPLAY,
ITAB TYPE STANDARD TABLE OF ZALVGRID_DISPLAY.
DATA: IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: L_TREE TYPE REF TO CL_GUI_ALV_TREE_SIMPLE.
TYPE-POOLS: SLIS,SDYDO.
DATA: L_LOGO TYPE SDYDO_VALUE,
L_LIST TYPE SLIS_T_LISTHEADER.
END-OF-SELECTION.
CLASS CL_LC DEFINITION.
PUBLIC SECTION.
METHODS: DC FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN.
ENDCLASS.
CLASS CL_LC IMPLEMENTATION.
METHOD DC.
DATA: WA1 TYPE ZALVGRID_DISPLAY.
READ TABLE ITAB INTO WA1 INDEX E_ROW-INDEX.
BREAK-POINT.
SET PARAMETER ID 'BLN' FIELD WA1-BELNR.
CALL TRANSACTION 'FB02'.
ENDMETHOD. "DC
ENDCLASS.
DATA: OBJ_CL TYPE REF TO CL_LC.
START-OF-SELECTION.
PERFORM SELECT_DATA.
IF SY-SUBRC = 0.
CALL SCREEN 100.
ELSE.
MESSAGE E000(0) WITH 'DATA NOT FOUND'.
ENDIF.
INCLUDE ZALVGRID_PG_STATUS_0100O01.
INCLUDE ZALVGRID_PG_LOGOSUBF01.
INCLUDE ZALVGRID_PG_SELECT_DATAF01.
INCLUDE ZALVGRID_PG_USER_COMMAND_01I01.
***INCLUDE ZALVGRID_PG_STATUS_0100O01 .
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'AB'.
* SET TITLEBAR 'xxx'.
IF IDENTITY IS INITIAL.
CREATE OBJECT IDENTITY
EXPORTING
CONTAINER_NAME = 'ALVCONTROL'.
CREATE OBJECT GRID
EXPORTING
I_PARENT = IDENTITY.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'ZALVGRID_DISPLAY'
CHANGING
IT_OUTTAB = ITAB.
CREATE OBJECT OBJ_CL.
SET HANDLER OBJ_CL->DC FOR GRID.
ENDIF.
IF L_IDENTITY IS INITIAL.
CREATE OBJECT L_IDENTITY
EXPORTING
CONTAINER_NAME = 'LOGO'.
CREATE OBJECT L_TREE
EXPORTING
I_PARENT = L_IDENTITY.
PERFORM LOGOSUB USING L_LOGO.
CALL METHOD L_TREE->CREATE_REPORT_HEADER
EXPORTING
IT_LIST_COMMENTARY = L_LIST
I_LOGO = L_LOGO.
ENDIF .
ENDMODULE. " STATUS_0100 OUTPUT
***INCLUDE ZALVGRID_PG_LOGOSUBF01 .
FORM LOGOSUB USING P_L_LOGO.
P_L_LOGO = 'ERPLOGO'.
ENDFORM. " LOGOSUB
***INCLUDE ZALVGRID_PG_SELECT_DATAF01 .
FORM SELECT_DATA .
SELECT RBKP~BELNR
RBKP~BLDAT
RSEG~BUZEI
RSEG~MATNR
INTO TABLE ITAB
FROM RBKP INNER JOIN RSEG
ON RBKP~BELNR = RSEG~BELNR
WHERE RBKP~BELNR IN IRNO
AND RBKP~GJAHR = P_GJAHR.
ENDFORM. " SELECT_DATA
***INCLUDE ZALVGRID_PG_USER_COMMAND_01I01 .
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
EXIT.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Warm Regards,
PavanKumar.G
Edited by: pavankumar.g on Jan 19, 2012 5:30 AM -
How do I execute Double click event in grid and list disaplay?
Hi
Kindly check the following threads:
Re: Double click event of alv grid control
double click on alv grid
Re: Using double click event in ALV Grid
you can find some code samples from the above links.
Hope this helps!
best regards,
Thangesh
Maybe you are looking for
-
How do you use Voice Memos?
I read in the Features Guide (link below) that it was possible to use a microphone and make voice recordings, but when I hook up a microphone nothing happens and the Voice Memos menu doesn't appear. What do I need to make this work? Thanks http://man
-
How do I add Multiple Home pages to open when I open FireFox?
I am trying to switch over from Internet explorer to Fire Fox. I would like to open several pages when I open Fire fox. I can do it in Internet Explorer but so far not in Fire Fox . Can I do this and if so how do I do this. Thanks
-
P2 Card Video/Audio Separate?
Hey everyone, I'm new to P2 footage and have recently shot on the HVX. Now first thing I notice, is that the audio and video are separate. Why is that? Is there a way in premiere to sync them up without linking every clip? Thanks in advance.
-
Re: Download Toshiba Bulletin Board for Windows 8
My wife has a Satellite L870-18V running Windows 8. She has noticed me using my Bulletin Board on my rather older Toshiba Satellite L650-12Q (with Windows 7) and wants one! Is it possible to download Bulletin Board to her computer, as it is not pre-l
-
I have over 9,000 music files in my itunes library. I hooked up an external hard drive to free up memory on my computer. I set up itunes to change the path of downloads to the new external hard drive. It worked fine until my husband forgot to turn on