10-19-2007 2:04 PM
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.
10-19-2007 2:07 PM
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.
10-19-2007 2:13 PM
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).
01-02-2008 4:58 PM