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: 

Display popup with details when selecting a row in alv

Former Member
0 Kudos

Hi guys,

Currently i have a button "Display" with an ALV grid. I need to click on a row from the ALV records and then when i click the "Display" button, it will issue a popup box with the details of that same row with the relevant fields and values of each fields.

I am trying to use function POPUP_GET_VALUES at user command subroutine of the ALV grid. Something like:

When 'Display'.

IF rs_selfield-fieldname = 'DOC_NO'.

READ TABLE gt_table INDEX rs_selfield-tabindex.

<Code something here to populate the popup field values>

CALL FUNCTION 'POPUP_GET_VALUES'.

ENDIF.

Anyone can guide me in coding? Or is there a better way of doing this other than what i'm currently doing?

Thanks in advance.

3 REPLIES 3

Former Member
0 Kudos

Hi

Go through this program.

TYPE-POOLS SLIS.

TABLES: MARA, LFA1, KNA1, VBAK, VBAP.

DATA: BEGIN OF I_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

ERSDA LIKE MARA-ERSDA,

ERNAM LIKE MARA-ERNAM,

END OF I_MARA.

DATA: BEGIN OF I_LFA1 OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

LAND1 LIKE LFA1-LAND1,

END OF I_LFA1.

DATA: BEGIN OF I_KNA1 OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

LAND1 LIKE KNA1-LAND1,

END OF I_KNA1.

DATA: BEGIN OF I_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN,

ERDAT LIKE VBAK-ERDAT,

ERZET LIKE VBAK-ERZET,

ERNAM LIKE VBAK-ERNAM,

END OF I_VBAK.

DATA: BEGIN OF I_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

END OF I_VBAP.

DATA: IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELDCAT3 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELDCAT4 TYPE SLIS_T_FIELDCAT_ALV,

IT_FIELDCAT5 TYPE SLIS_T_FIELDCAT_ALV,

IT_EVENTS1 TYPE SLIS_T_EVENT,

WA_EVENTS1 TYPE SLIS_ALV_EVENT,

IT_EVENTS2 TYPE SLIS_T_EVENT,

WA_EVENTS2 TYPE SLIS_ALV_EVENT,

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

R_UCOMM LIKE SY-UCOMM,

G_UCOMM LIKE SY-UCOMM,

IS_VARIANT LIKE DISVARIANT,

G_SAVE TYPE C VALUE 'A'.

SELECTION-SCREEN: BEGIN OF BLOCK B1.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,

S_LIFNR FOR LFA1-LIFNR,

S_KUNNR FOR KNA1-KUNNR,

S_VBELN FOR VBAK-VBELN.

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN: END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

PERFORM F4_FOR_VARIANT.

START-OF-SELECTION.

PERFORM GET_MATERIAL_DATA.

END-OF-SELECTION.

PERFORM FIELD_CATALOGUE_MERGE.

PERFORM EVENT_BUILDER USING IT_EVENTS1[].

PERFORM EVENT_BUILDER1 USING IT_EVENTS2[].

PERFORM ALV_LIST_DISPLAY.

&----


*& Form get_material_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_MATERIAL_DATA .

SELECT MATNR

ERSDA

ERNAM

FROM MARA

INTO TABLE I_MARA

WHERE MATNR IN S_MATNR.

ENDFORM. " get_material_data

&----


*& Form field_catalogue_merge

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOGUE_MERGE .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'I_MARA'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT1

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'I_LFA1'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT2

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'I_KNA1'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT3

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'I_VBAK'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT4

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'I_VBAP'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT5

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

ENDFORM. " field_catalogue_merge

&----


*& Form event_builder

&----


  • text

----


  • -->P_IT_EVENTS[] text

----


FORM EVENT_BUILDER USING P_IT_EVENTS1 TYPE SLIS_T_EVENT.

WA_EVENTS1-NAME = 'TOP_OF_PAGE'.

WA_EVENTS1-FORM = 'TOP_OF_PAGE'.

APPEND WA_EVENTS1 TO P_IT_EVENTS1.

CLEAR WA_EVENTS1.

WA_EVENTS1-NAME = SLIS_EV_USER_COMMAND.

WA_EVENTS1-FORM = 'USER_COMMAND'.

APPEND WA_EVENTS1 TO P_IT_EVENTS1.

CLEAR WA_EVENTS1.

WA_EVENTS1-NAME = 'PF_STATUS_SET'.

WA_EVENTS1-FORM = 'TOOLBAR'.

APPEND WA_EVENTS1 TO P_IT_EVENTS1.

CLEAR WA_EVENTS1.

ENDFORM. " event_builder

&----


*& Form TOOLBAR

&----


  • TOOLBAR

----


FORM TOOLBAR USING EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'MENUBAR'.

ENDFORM.

&----


*& Form USER_COMMAND

&----


  • USER COMMAND

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'VEND'.

G_UCOMM = 'VEND'.

PERFORM GET_VENDOR_DETAILS.

WHEN 'CUST'.

G_UCOMM = 'CUST'.

PERFORM GET_CUSTOMER_DETAILS.

WHEN 'SD_HEADER'.

G_UCOMM = 'SD_HEADER'.

PERFORM GET_SALESDOC_HEADER_DET.

WHEN 'SD_ITEM'.

G_UCOMM = 'SD_ITEM'.

PERFORM GET_SALESDOC_ITEM_DET.

WHEN OTHERS.

G_UCOMM = 'MATE'.

ENDCASE.

ENDFORM.

&----


*& Form get_vendor_details

&----


  • text

----


FORM GET_VENDOR_DETAILS .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

IS_VARIANT-VARIANT = P_VARI.

SELECT LIFNR

NAME1

LAND1

FROM LFA1

INTO TABLE I_LFA1

WHERE LIFNR IN S_LIFNR.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

IF NOT I_LFA1[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_STRUCTURE_NAME = 'I_LFA1'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT2

I_SAVE = G_SAVE

IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENTS1

TABLES

T_OUTTAB = I_LFA1

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ENDIF.

ENDFORM. " get_vendor_details

&----


*& Form get_customer_details

&----


  • text

----


FORM GET_CUSTOMER_DETAILS .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

IS_VARIANT-VARIANT = P_VARI.

SELECT KUNNR

NAME1

LAND1

FROM KNA1

INTO TABLE I_KNA1

WHERE KUNNR IN S_KUNNR.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

IF NOT I_KNA1[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_STRUCTURE_NAME = 'I_KNA1'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT3

I_SAVE = G_SAVE

IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENTS1

TABLES

T_OUTTAB = I_KNA1

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ENDIF.

ENDFORM. " get_customer_details

&----


*& Form get_salesdoc_header_det

&----


  • text

----


FORM GET_SALESDOC_HEADER_DET .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

IS_VARIANT-VARIANT = P_VARI.

SELECT VBELN

ERDAT

ERZET

ERNAM

FROM VBAK

INTO TABLE I_VBAK

WHERE VBELN IN S_VBELN.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

IF NOT I_VBAK[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_STRUCTURE_NAME = 'I_VBAK'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT4

I_SAVE = G_SAVE

IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENTS1

TABLES

T_OUTTAB = I_VBAK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ENDIF.

ENDFORM. " get_salesdoc_header_det

&----


*& Form get_salesdoc_item_det

&----


  • text

----


FORM GET_SALESDOC_ITEM_DET .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

IS_VARIANT-VARIANT = P_VARI.

IF NOT I_VBAK[] IS INITIAL.

SELECT VBELN

POSNR

FROM VBAP

INTO TABLE I_VBAP

FOR ALL ENTRIES IN I_VBAK

WHERE VBELN = I_VBAK-VBELN.

ENDIF.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

IF NOT I_VBAP[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_STRUCTURE_NAME = 'I_VBAP'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT5

I_SAVE = G_SAVE

IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENTS1

TABLES

T_OUTTAB = I_VBAP

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ENDIF.

ENDFORM. " get_salesdoc_item_det

&----


*& Form alv_list_display

&----


  • text

----


FORM ALV_LIST_DISPLAY .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

IS_VARIANT-VARIANT = P_VARI.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_STRUCTURE_NAME = 'I_MARA'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT1

I_SAVE = G_SAVE

IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENTS2

TABLES

T_OUTTAB = I_MARA

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ENDFORM. " alv_list_display

&----


*& Form TOP_OF_PAGE

&----


  • Top Of Page

----


FORM TOP_OF_PAGE.

CASE G_UCOMM.

WHEN 'VEND'.

ULINE.

WRITE:/ 'Vendor Details'.

ULINE.

WHEN 'CUST'.

ULINE.

WRITE:/ 'Customer Details'.

ULINE.

WHEN 'SD_HEADER'.

ULINE.

WRITE:/ 'Sales Doc. Header Details'.

ULINE.

WHEN 'SD_ITEM'.

ULINE.

WRITE:/ 'Sales Doc Item Details'.

ULINE.

ENDCASE.

ENDFORM.

&----


*& Form TOP_OF_PAGE_FOR_MARA

&----


  • Top Of Page for material data

----


FORM TOP_OF_PAGE_FOR_MARA.

ULINE.

WRITE:/ 'Material Details'.

ULINE.

ENDFORM.

&----


*& Form event_builder1

&----


  • text

----


  • -->P_IT_EVENTS2[] text

----


FORM EVENT_BUILDER1 USING P_IT_EVENTS2 TYPE SLIS_T_EVENT.

WA_EVENTS2-NAME = 'TOP_OF_PAGE'.

WA_EVENTS2-FORM = 'TOP_OF_PAGE_FOR_MARA'.

APPEND WA_EVENTS2 TO P_IT_EVENTS2.

CLEAR WA_EVENTS2.

WA_EVENTS2-NAME = SLIS_EV_USER_COMMAND.

WA_EVENTS2-FORM = 'USER_COMMAND'.

APPEND WA_EVENTS2 TO P_IT_EVENTS2.

CLEAR WA_EVENTS2.

WA_EVENTS2-NAME = 'PF_STATUS_SET'.

WA_EVENTS2-FORM = 'TOOLBAR'.

APPEND WA_EVENTS2 TO P_IT_EVENTS2.

CLEAR WA_EVENTS2.

ENDFORM. " event_builder1

&----


*& Form f4_for_variant

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F4_FOR_VARIANT .

CLEAR IS_VARIANT.

IS_VARIANT-REPORT = SY-REPID.

CASE G_UCOMM.

WHEN 'VEND'.

IS_VARIANT-HANDLE = 'VEND'.

WHEN 'CUST'.

IS_VARIANT-HANDLE = 'CUST'.

WHEN 'SD_HEADER'.

IS_VARIANT-HANDLE = 'SD_HEADER'.

WHEN 'SD_ITEM'.

IS_VARIANT-HANDLE = 'SD_ITEM'.

WHEN OTHERS.

IS_VARIANT-HANDLE = 'MATE'.

ENDCASE.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = IS_VARIANT

I_SAVE = G_SAVE

IMPORTING

ES_VARIANT = IS_VARIANT

EXCEPTIONS

NOT_FOUND = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC = 1.

MESSAGE I000(OK).

ELSE.

P_VARI = IS_VARIANT-VARIANT.

ENDIF.

ENDFORM. " f4_for_variant

Regards

Haritha.

Former Member
0 Kudos

Sorry but that solution is not what i'm finding for. What i want is selecting a row in ALV grid and then display the details of that row in a popup box.

And then maybe later changing the data in that popup box so that the new modified data is passed back to the ALV grid (but that's another button function).

Former Member
0 Kudos

Hello,

I've got the same problem.

Did you find a solution ?