10-15-2013 12:17 PM
I have written a basic program to display SFLIGHT data in an ALV Grid.
I would like to add the functionality to double-click on a row in the ALV Grid to launch a popup showing all of the data from that row. I have looked at programs with this functionality built in but find them too complicated to understand.
Would be grateful for any help.
Thanks
Steven
10-15-2013 12:43 PM
Hi Steven!
Which ALV grid have you used - object-oriented or functional?
If functional ('REUSE_ALV_FIELDCATALOG_MERGE' FM), see this thread: http://wiki.scn.sap.com/wiki/display/Snippets/Capturing+entire+row+from+ALV+Grid+Display+on+Double+C...
If object-oriented (CL_GUI_ALV_GRID class), you can find solution here: https://scn.sap.com/thread/180812
-----
Best regards,
George Shlyahov
10-15-2013 12:43 PM
Hi Steven!
Which ALV grid have you used - object-oriented or functional?
If functional ('REUSE_ALV_FIELDCATALOG_MERGE' FM), see this thread: http://wiki.scn.sap.com/wiki/display/Snippets/Capturing+entire+row+from+ALV+Grid+Display+on+Double+C...
If object-oriented (CL_GUI_ALV_GRID class), you can find solution here: https://scn.sap.com/thread/180812
-----
Best regards,
George Shlyahov
10-15-2013 1:38 PM
Hi George,
Thanks for your reply. I am using a functional ALV grid...I have seen the thread that you have suggested but can't seem to tie it in with my code. I am new to SAP and ABAP programming so just trying to get my head around things. My code for displaying the ALV grid is below. What would I need to change in order to incorporate the code from your suggested thread.
Thanks again for your help.
Steven
*&---------------------------------------------------------------------*
*& Report Z_ALV_POPUP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_POPUP.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
10-15-2013 1:49 PM
Here is my code with the changes suggesting in the thread...what should I put in place of wa_example?
*&---------------------------------------------------------------------*
*& Report Z_ALV_POPUP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_POPUP.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
i_callback_user_comman = 'USER_COMMAND'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------\*
*& Form user_command
*&---------------------------------------------------------------------\*
* Call back Transaction
*----------------------------------------------------------------------\*
FORM user_command using w_ucomm like sy-ucomm
ls_selfield type slis_selfield.
case w_ucomm.
* Double Click Event
when '&IC1'.
if ls_selfield-tabindex > 0 and ls_selfield-sumindex le 0.
read table IT_sflight into WA_EXAMPLE index ls_selfield-tabindex.
SET PARAMETER ID 'value1' FIELD wa_example-field1. " this captures the value from field1 of the selected row to the value1
CALL TRANSACTION '<TCode name>'.
endif.
10-15-2013 2:04 PM
Steven, try to make your code like this:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM user_command USING w_ucomm LIKE sy-ucomm
ls_selfield TYPE slis_selfield.
DATA: wa_example LIKE LINE OF it_sflight. "wa_example is current line of table it_sflight
CASE w_ucomm.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
if sy-subrc = 0.
"Here you can call screen, transaction etc.
endif.
ENDIF.
ENDCASE.
ENDFORM.
10-15-2013 2:23 PM
Hi George,
Thank you for your patience and for helping me out...I have included your code and the program compiles with no errors. It also runs OK and displays the ALV grid containing the SFLIGHT data however nothing happens when I double click on a cell in the grid.
Will I need to include some code to tell it to open a popup and what the popup should contain?
I'm sorry if I'm being a complete pain!
My code with your updates is below.
*&---------------------------------------------------------------------*
*& Report Z_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
Data: it_example type standard table of sflight,
wa_example like line of it_example.
* ALV Catalog Build
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'it_example'
i_structure_name = '<your table/structure name>'
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* ALV Display Build
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------\*
*& Form user_command
*&---------------------------------------------------------------------\*
FORM user_command using w_ucomm like sy-ucomm
ls_selfield type slis_selfield.
case w_ucomm.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
if sy-subrc = 0.
"Here you can call screen, transaction etc.
endif.
ENDIF.
ENDCASE.
ENDFORM.
10-15-2013 3:23 PM
Steven, you can use following code as an example:
FORM user_command USING w_ucomm LIKE sy-ucomm
ls_selfield TYPE slis_selfield.
DATA: wa_example LIKE LINE OF it_sflight. "wa_example is current line of table it_sflight
CASE w_ucomm.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
IF sy-subrc = 0.
DATA:
lt_fcat TYPE lvc_t_fcat,
ls_layout TYPE lvc_s_layo.
ls_layout-no_toolbar = 'X'.
ls_layout-cwidth_opt = 'X'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = lt_fcat.
DATA:
ls_detail TYPE lvc_s_deta,
lt_detail TYPE lvc_t_deta.
FIELD-SYMBOLS:
<s_fcat> LIKE LINE OF lt_fcat,
<field> TYPE ANY.
LOOP AT lt_fcat ASSIGNING <s_fcat>.
CHECK <s_fcat>-tech IS INITIAL.
MOVE <s_fcat>-reptext TO ls_detail-columntext.
ASSIGN COMPONENT <s_fcat>-fieldname OF STRUCTURE wa_example TO <field>.
CHECK sy-subrc = 0.
MOVE <field> TO ls_detail-value.
APPEND ls_detail TO lt_detail.
ENDLOOP.
DATA: lt_det TYPE lvc_t_detm,
ls_det TYPE lvc_s_detm.
MOVE lt_detail TO ls_det-detailtab.
APPEND ls_det TO lt_det.
REFRESH lt_fcat.
DATA: ls_fcat LIKE LINE OF lt_fcat.
ls_fcat-fieldname = 'COLUMNTEXT'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'LANGUAGE'.
ls_fcat-outputlen = 4.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
ls_fcat-fieldname = 'VALUE'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'CGSTXT_M'.
ls_fcat-outputlen = 20.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
CALL FUNCTION 'LVC_ITEM_DETAIL'
EXPORTING
i_title = 'Details'
i_screen_start_column = 50
i_screen_start_line = 10
i_screen_end_column = 100
i_screen_end_line = 20
it_fieldcatalog = lt_fcat
is_layout = ls_layout
TABLES
t_outtab = lt_det.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM.
10-15-2013 4:03 PM
Hi George,
Thanks again for replying...I have included your code in mine and everything is syntactically correct but still no popup when clicking on a row.
As I don't understand the logic and functions you are using it is difficult for me to make any changes to test it's functionality. I am looking for a fully working version so that I can dissect it and see how the different parts work.
If you are feeling particularly charitable and are willing to give it one last go I would be forever grateful!
The updated program code is below:
*&---------------------------------------------------------------------*
*& Report Z_TEST_2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST_2.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM user_command USING w_ucomm LIKE sy-ucomm
ls_selfield TYPE slis_selfield.
DATA: wa_example LIKE LINE OF it_sflight. "wa_example is current line of table it_sflight
CASE w_ucomm.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
IF sy-subrc = 0.
DATA:
lt_fcat TYPE lvc_t_fcat,
ls_layout TYPE lvc_s_layo.
ls_layout-no_toolbar = 'X'.
ls_layout-cwidth_opt = 'X'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = lt_fcat.
DATA:
ls_detail TYPE lvc_s_deta,
lt_detail TYPE lvc_t_deta.
FIELD-SYMBOLS:
<s_fcat> LIKE LINE OF lt_fcat,
<field> TYPE ANY.
LOOP AT lt_fcat ASSIGNING <s_fcat>.
CHECK <s_fcat>-tech IS INITIAL.
MOVE <s_fcat>-reptext TO ls_detail-columntext.
ASSIGN COMPONENT <s_fcat>-fieldname OF STRUCTURE wa_example TO <field>.
CHECK sy-subrc = 0.
MOVE <field> TO ls_detail-value.
APPEND ls_detail TO lt_detail.
ENDLOOP.
DATA: lt_det TYPE lvc_t_detm,
ls_det TYPE lvc_s_detm.
MOVE lt_detail TO ls_det-detailtab.
APPEND ls_det TO lt_det.
REFRESH lt_fcat.
DATA: ls_fcat LIKE LINE OF lt_fcat.
ls_fcat-fieldname = 'COLUMNTEXT'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'LANGUAGE'.
ls_fcat-outputlen = 4.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
ls_fcat-fieldname = 'VALUE'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'CGSTXT_M'.
ls_fcat-outputlen = 20.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
CALL FUNCTION 'LVC_ITEM_DETAIL'
EXPORTING
i_title = 'Details'
i_screen_start_column = 50
i_screen_start_line = 10
i_screen_end_column = 100
i_screen_end_line = 20
it_fieldcatalog = lt_fcat
is_layout = ls_layout
TABLES
t_outtab = lt_det.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM.
10-16-2013 6:49 AM
Hi Steven,
here is the fully working version:
REPORT Z_ALV_POPUP.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->W_UCOMM text
* -->LS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING w_ucomm LIKE sy-ucomm
ls_selfield TYPE slis_selfield.
DATA: wa_example LIKE LINE OF it_sflight. "wa_example is current line of table it_sflight
CASE w_ucomm.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
IF sy-subrc = 0.
DATA:
lt_fcat TYPE lvc_t_fcat,
ls_layout TYPE lvc_s_layo.
ls_layout-no_toolbar = 'X'.
ls_layout-cwidth_opt = 'X'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = lt_fcat.
DATA:
ls_detail TYPE lvc_s_deta,
lt_detail TYPE lvc_t_deta.
FIELD-SYMBOLS:
<s_fcat> LIKE LINE OF lt_fcat,
<field> TYPE ANY.
LOOP AT lt_fcat ASSIGNING <s_fcat>.
CHECK <s_fcat>-tech IS INITIAL.
MOVE <s_fcat>-reptext TO ls_detail-columntext.
ASSIGN COMPONENT <s_fcat>-fieldname OF STRUCTURE wa_example TO <field>.
CHECK sy-subrc = 0.
MOVE <field> TO ls_detail-value.
APPEND ls_detail TO lt_detail.
ENDLOOP.
DATA: lt_det TYPE lvc_t_detm,
ls_det TYPE lvc_s_detm.
MOVE lt_detail TO ls_det-detailtab.
APPEND ls_det TO lt_det.
REFRESH lt_fcat.
DATA: ls_fcat LIKE LINE OF lt_fcat.
ls_fcat-fieldname = 'COLUMNTEXT'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'LANGUAGE'.
ls_fcat-outputlen = 4.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
ls_fcat-fieldname = 'VALUE'.
ls_fcat-tabname = 'LVC_S_DETA'.
ls_fcat-rollname = 'CGSTXT_M'.
ls_fcat-outputlen = 20.
ls_fcat-key = 'X'.
APPEND ls_fcat TO lt_fcat.
CALL FUNCTION 'LVC_ITEM_DETAIL'
EXPORTING
i_title = 'Details'
i_screen_start_column = 50
i_screen_start_line = 10
i_screen_end_column = 100
i_screen_end_line = 20
it_fieldcatalog = lt_fcat
is_layout = ls_layout
TABLES
t_outtab = lt_det.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. "user_command
10-16-2013 11:09 AM
Thank you George,
That works great...I will be able to go through this line by line and it will really help with my learning.
You are a life saver!
10-16-2013 11:16 AM
You are welcome, Steven. I'm glad I could help.
-----
Sincere regards,
George Shlyahov
10-16-2013 7:59 AM
Hallo Steve,
i think, there is a simple way to to this.
1) double click on which field: ( get field )
*&---------------------------------------------------------------------\*
*& Form user_command
*&---------------------------------------------------------------------\*
FORM user_command using w_ucomm like sy-ucomm
ls_selfield type slis_selfield.
case w_ucomm.
* Double Click Event
WHEN '&IC1'.
CASE rs_selfield-fieldname.
When 'fieldname_abc' .
something, something.
When 'fieldname_cde"
something, something.
Endcase.
endif.
ENDIF.
ENDCASE.
ENDFORM.
When you have the field. for Example: fieldname_abc, you have to get row. So, this is simple.
You can make something like this:
2) get row.
case w_ucomm.
* Double Click Event
WHEN '&IC1'.
CASE rs_selfield-fieldname.
When 'fieldname_abc' .
read table "alv_table" into "alv_structure" Index rs_fieldname-tabindex
When 'fieldname_cde"
something, something.
Endcase.
endif.
ENDIF.
ENDCASE.
ENDFORM.
You have your row in "alv_structure."
3) the you have to only popup this structure in some dynpro. You can use
POPUP_WITH_TABLE_DISPLAY or new dyn-pro. ( better new dyn-pro )
Hope I help.
Regard.
Marek
10-16-2013 8:10 AM
Dear Steven,
As the code define by the George you can also use this function module in place of "Here you can call screen, transaction etc." ref to below code to display your table in pop up window. It reduces your work to make an another screen to display your table area data.
* Double Click Event
WHEN '&IC1'.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
if sy-subrc = 0.
"Here you can call screen, transaction etc.
endif.
ENDIF.
ENDCASE.
ENDFORM.
CALL FUNCTION 'RKE_POPUP_TEXT_DECIDE_VARTEXT'
EXPORTING
* OPTIONS = '' "You can add push-buttons also
object_id = 'NA'
object = 'ZTEST000'
na_shorttext = 'X'
titel = 'Example to show table'
* IMPORTING
* ANSWER = "User decision can be captured here
TABLES
* T_PARAMS =
t_texttab = lt_text
EXCEPTIONS
docu_not_found = 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.
Many Thanks / Himanshu Gupta
10-16-2013 8:17 AM
HI STEVEN
u see under the code form user_command i think this helpful of u...
*&---------------------------------------------------------------------*
*& Report Z_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST.
* REPORT Z_TEST.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_sflight TYPE TABLE OF sflight.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Fetch data from the database
SELECT * FROM sflight INTO TABLE it_sflight.
*Build field catalog
wa_fieldcat-fieldname = 'CARRID'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'Airline Code'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-seltext_m = 'Con. No.'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-seltext_m = 'Date'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PLANETYPE'.
wa_fieldcat-seltext_m = 'Aircraft Type'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX'.
wa_fieldcat-seltext_m = 'Maximum Capacity Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC'.
wa_fieldcat-seltext_m = 'Occuppied Seats Economy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'PAYMENTSUM'.
wa_fieldcat-seltext_m = 'Total of current bookings'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_B'.
wa_fieldcat-seltext_m = 'Maximum Capacity Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_B'.
wa_fieldcat-seltext_m = 'Occuppied Seats Business'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSMAX_F'.
wa_fieldcat-seltext_m = 'Maximum Capacity First Classy'.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'SEATSOCC_F'.
wa_fieldcat-seltext_m = 'Occuppied Seats First Class'.
APPEND wa_fieldcat TO it_fieldcat.
**Pass data and field catalog to ALV function module to display ALV list
*
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*
* EXPORTING
*
* it_fieldcat = it_fieldcat
*
* TABLES
*
* t_outtab = it_sflight
*
* EXCEPTIONS
*
* program_error = 1
*
* OTHERS = 2.
Data: it_example type standard table of sflight,
wa_example like line of it_example.
* ALV Catalog Build
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
*
* EXPORTING
*
* i_program_name = sy-repid
*
* i_internal_tabname = 'it_example'
*
* i_structure_name = '<your table/structure name>'
*
* CHANGING
*
* ct_fieldcat = it_fieldcat
*
* EXCEPTIONS
*
* inconsistent_interface = 1
*
* program_error = 2
*
* OTHERS = 3.
*
*
* ALV Display Build
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------\*
*& Form user_command
*&---------------------------------------------------------------------\*
FORM user_command using w_ucomm like sy-ucomm
ls_selfield type slis_selfield.
case w_ucomm.
* Double Click Event
WHEN '&IC1'.
**************************************************
DATA V1 TYPE STRING.
DATA V2 TYPE STRING.
data v3(10) type c.
data v4(2) type c.
data v5(4) type c.
data v6(4) type c.
DATA : FIELD1(280) TYPE C.
DATA: BEGIN OF listtab OCCURS 1,
field(280),
END OF listtab.
IF ls_selfield-tabindex > 0 AND ls_selfield-sumindex LE 0.
READ TABLE it_sflight INTO wa_example INDEX ls_selfield-tabindex.
if sy-subrc = 0.
CLEAR : LISTTAB.
V1 = WA_EXAMPLE-CARRID.
V2 = WA_EXAMPLE-CONNID.
v3 = wa_example-fldate.
v4 = v3+6(2).
v5 = v3+4(2).
v6 = v3+0(4).
CONCATENATE v4 v5 v6 into v3 SEPARATED BY '.'.
CONCATENATE V1 V2 INTO FIELD1 SEPARATED BY ' '.
LISTTAB-FIELD = FIELD1.
APPEND LISTTAB TO LISTTAB.
CALL FUNCTION 'POPUP_WITH_TABLE'
EXPORTING
ENDPOS_COL = 100
ENDPOS_ROW = 2
STARTPOS_COL = 2
STARTPOS_ROW = 2
TITLETEXT = 'SELECTED LINE CONTENT'
* IMPORTING
* CHOICE =
TABLES
VALUETAB = LISTTAB
EXCEPTIONS
BREAK_OFF = 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.
ENDIF.
*********************************
ENDCASE.
ENDFORM.
Thanks&Regards
naveen