天天看點

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

*&---------------------------------------------------------------------*

*& Report  ZALV_POPDIALOG                                              *

*&                                                                     *

*&---------------------------------------------------------------------*

*&                                                                     *

*&                                                                     *

*&---------------------------------------------------------------------*

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 eventINITIALIZATION.

*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.

*&----------------------------------------------------------*

*&      Form  build_layout

*&----------------------------------------------------------*

*Layout for ALV dialog

FORM build_layout .

 lt_layout-zebra = 'X'.

 lt_layout-colwidth_optimize = 'X'.ENDFORM.                    "

*&---------------------------------------------------------------*

*&      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