Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV Grid - Popup

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

former_member219714
Participant
0 Kudos

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

13 REPLIES 13

former_member219714
Participant
0 Kudos

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

0 Kudos

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.

0 Kudos

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.

0 Kudos

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.  

0 Kudos

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.

0 Kudos

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.    

0 Kudos

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.

0 Kudos

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

0 Kudos

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!

0 Kudos

You are welcome, Steven. I'm glad I could help.

-----

Sincere regards,

George Shlyahov

Former Member
0 Kudos

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

himanshu_gupta13
Active Participant
0 Kudos

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

Former Member
0 Kudos

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