Está en la página 1de 6

ALV in a Pop up window and ALV in a dialog box

By Swarna S, Tata Consultancy Services

*AS : User selects infotypes from a pop up alv .The details of


*infotypes selected are displayed in a ALV dialog box.
*author : Swarna.S.
*Published at SAPTechnical.COM
REPORT ZALV_POPDIALOG.
*Type pools for ALV declarations
TYPE-POOLS : slis.
*Internal table and wa declarations for T582A.
DATA : it_t582a TYPE STANDARD TABLE OF t582a INITIAL SIZE 0,
wa_t582a TYPE t582a.
*Internal table and wa declarations for T582S.
DATA : it_text TYPE STANDARD TABLE OF t582s,
wa_text TYPE t582s.
*Structure declaration for output
TYPES : BEGIN OF ty_output,
infty TYPE infty,
zeitb TYPE dzeitb,
itext TYPE intxt,
pnnnn TYPE pnnnn_d,
dname TYPE dianm,
namst TYPE namst,
edynr TYPE edynp,
ldynr TYPE ldynp,
stypt TYPE stypt,
sytxt TYPE sytxt,
zbtab TYPE dzbtab,
checkbox(1),
END OF ty_output.
*Internal table and work area declaration for output in pop up
DATA : it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
wa_output TYPE ty_output.
*Internal table and workarea declaration for alv dialog display
DATA : it_display TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
wa_display TYPE ty_output.
*data declarations for ALV
DATA:ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcatlog TYPE slis_fieldcat_alv,
lt_fieldcatlog TYPE slis_t_fieldcat_alv,
lt_layout TYPE slis_layout_alv.
*Initialization event
INITIALIZATION.
*Start of selection event
START-OF-SELECTION.
*Select to fetch all the infotypes and details in sap system
SELECT *
FROM t582a
INTO CORRESPONDING FIELDS OF TABLE it_t582a.
*Select to fetch the infotypes text
IF it_t582a[] IS NOT INITIAL.
SELECT * FROM t582s INTO CORRESPONDING FIELDS OF TABLE it_text
FOR ALL ENTRIES IN it_t582a WHERE infty = it_t582a-infty
AND sprsl = 'E'.
ENDIF.
*Appending the selected values to the output table
LOOP AT it_t582a INTO wa_t582a.
wa_output-infty = wa_t582a-infty.
wa_output-zeitb = wa_t582a-zeitb.
wa_output-pnnnn = wa_t582a-pnnnn.
wa_output-dname = wa_t582a-dname.
wa_output-namst = wa_t582a-namst.
wa_output-edynr = wa_t582a-edynr.
wa_output-ldynr = wa_t582a-ldynr.
wa_output-stypt = wa_t582a-stypt.
wa_output-sytxt = wa_t582a-sytxt.
wa_output-zbtab = wa_t582a-zbtab.
READ TABLE it_text INTO wa_text WITH KEY infty = wa_t582a-infty.
wa_output-itext = wa_text-itext.
APPEND wa_output TO it_output.
CLEAR wa_output.
ENDLOOP.
*Subroutine to display the pop up values.
PERFORM popup_display.
*Subroutine to display the ALV dialog display
PERFORM alv_output.
*----------------------------------------------------------------*
* Form popup_display
*------------------------------------------------------------*
FORM popup_display.
*field catalogue for pop up
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '1'.
ls_fieldcat-fieldname = 'CHECKBOX'.
ls_fieldcat-tabname = 'IT_OUTPUT'.
ls_fieldcat-seltext_m = 'SELECT'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '2'.
ls_fieldcat-fieldname = 'ITEXT'.
ls_fieldcat-tabname = 'IT_OUTPUT'.
ls_fieldcat-seltext_m = 'DESCRIPTION'.
ls_fieldcat-outputlen = 50.
APPEND ls_fieldcat TO lt_fieldcat.
* Display data in a POPUP
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_zebra = 'X'
it_fieldcat = lt_fieldcat
i_tabname = 'IT_OUTPUT'
i_checkbox_fieldname = 'CHECKBOX'
TABLES
t_outtab = it_output.
*Appending the selected infotypes only to internal table
LOOP AT it_output INTO wa_output WHERE checkbox = 'X'.
wa_display-itext = wa_output-itext.
wa_display-infty = wa_output-infty.
wa_display-zeitb = wa_output-zeitb.
wa_display-pnnnn = wa_output-pnnnn.
wa_display-dname = wa_output-dname.
wa_display-namst = wa_output-namst.
wa_display-edynr = wa_output-edynr.
wa_display-ldynr = wa_output-ldynr.
wa_display-sytxt = wa_output-sytxt.
wa_display-stypt = wa_output-stypt.
wa_display-zbtab = wa_output-zbtab.
APPEND wa_display TO it_display.
CLEAR wa_display.
ENDLOOP.
ENDFORM. " popup_display
*&-------------------------------------------------------------*
*& Form alv_output
*&-------------------------------------------------------------*
FORM alv_output .
*fieldcatalogue for ALV dialog
PERFORM build_fieldcat.
*Layout for ALV dialog
PERFORM build_layout.
**ALV dialog output
PERFORM alv.
ENDFORM. " alv_output
*&------------------------------------------------------------*
*& Form build_fieldcat
*&------------------------------------------------------------*
FORM build_fieldcat .
*fieldcatalogue for alv dialog
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '1'.
ls_fieldcatlog-fieldname = 'INFTY'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Infotype'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '2'.
ls_fieldcatlog-fieldname = 'ITEXT'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Description'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '3'.
ls_fieldcatlog-fieldname = 'ZEITB'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'TimeConstraint'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '4'.
ls_fieldcatlog-fieldname = 'PNNNN'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Structure'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '5'.
ls_fieldcatlog-fieldname = 'DNAME'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'DialogModule'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '6'.
ls_fieldcatlog-fieldname = 'NAMST'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Subtypefield'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '7'.
ls_fieldcatlog-fieldname = 'EDYNR'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Singlescreenno'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '8'.
ls_fieldcatlog-fieldname = 'LDYNR'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Listscreenno'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '9'.
ls_fieldcatlog-fieldname = 'STYPT'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'SubtypTable'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '10'.
ls_fieldcatlog-fieldname = 'SYTXT'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'Subtyptexttable'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '11'.
ls_fieldcatlog-fieldname = 'ZBTAB'.
ls_fieldcatlog-tabname = 'IT_DISPLAY'.
ls_fieldcatlog-seltext_m = 'SubtypeTCTable'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
ENDFORM. " build_fieldcat
*&----------------------------------------------------------*
*& Form build_layout
*&----------------------------------------------------------*
*Layout for ALV dialog
FORM build_layout .
lt_layout-zebra = 'X'.
lt_layout-colwidth_optimize = 'X'.
ENDFORM. " build_layout
*&---------------------------------------------------------------*
*& Form alv
*&---------------------------------------------------------------*
*Alv dialog output.
FORM alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = 'INFOTYPE DETAILS'
is_layout = lt_layout
it_fieldcat = lt_fieldcatlog
i_screen_start_column = 10
i_screen_start_line = 20
i_screen_end_column = 100
i_screen_end_line = 40
TABLES
t_outtab = it_display
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. " alv

Pop up ALV to select infotype


ALV as dialog box to display the infotype details