Saturday, 10 November 2012

POP UP IN ALV INTERACTIVE


*&---------------------------------------------------------------------*
*& Report  ZRA_TEST_045
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zra_test_045.
TABLES: vbak,vbap.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_vbak,
         vbeln TYPE vbeln_va,       "Sales Document
         erdat TYPE erdat,          "Date on Which Record Was Created
         erzet TYPE erzet,          "Entry time
       END OF ty_vbak,
       BEGIN OF ty_vbap,
         vbeln TYPE vbeln_va,    "Sales Document
         posnr TYPE posnr_va,       "Sales Document Item
         matnr TYPE matnr,          "Material Number
       END OF ty_vbap.
DATA : it_vbak TYPE STANDARD TABLE OF ty_vbak,
       wa_vbak TYPE ty_vbak,
       it_vbap TYPE STANDARD TABLE OF ty_vbap,
       wa_vbap TYPE ty_vbap,
       lv_vbeln TYPE vbeln.

DATA : i_fldcat TYPE slis_t_fieldcat_alv,
       w_fldcat TYPE slis_fieldcat_alv,
       w_layout TYPE slis_layout_alv,
       i_fldcat1 TYPE slis_t_fieldcat_alv,
       w_fldcat1 TYPE slis_fieldcat_alv,
       w_layout1 TYPE slis_layout_alv,
       v_repid TYPE sy-repid.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.

INITIALIZATION.
  v_repid = sy-repid.
  CLEAR: wa_vbak,
         wa_vbap.
  REFRESH: it_vbak,
           it_vbap.

START-OF-SELECTION.
  SELECT vbeln
         erdat
         erzet
  FROM vbak
  INTO TABLE it_vbak
  WHERE vbeln IN s_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbak BY vbeln.
  ENDIF.

END-OF-SELECTION.

  PERFORM create_fieldcatalog.
  PERFORM create_layout.
  PERFORM create_display.
*&---------------------------------------------------------------------*
*&      Form  create_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*------------------------------ ----------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_fieldcatalog .
  DATA: c_pos TYPE i VALUE 1,
        r_pos TYPE i VALUE 1.

  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'VBELN'.
  w_fldcat-seltext_l = 'SALES DOCUMENT'.
  w_fldcat-tabname = 'IT_VBAK'.

  APPEND w_fldcat TO i_fldcat.
  CLEAR: w_fldcat.

  c_pos = c_pos + 1.
  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'ERDAT'.
  w_fldcat-seltext_l = 'CREATED ON'.
  w_fldcat-tabname = 'IT_VBAK'.

  APPEND w_fldcat TO i_fldcat.
  CLEAR: w_fldcat.

  c_pos = c_pos + 1.
  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'ERZET'.
  w_fldcat-seltext_l = 'ENTRY TIME'.
  w_fldcat-tabname = 'IT_VBAK'.

  APPEND w_fldcat TO i_fldcat.
  CLEAR: w_fldcat.


ENDFORM.                    " create_fieldcatalog
*&---------------------------------------------------------------------*
*&      Form  create_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_layout .
  w_layout-colwidth_optimize = 'X'.
  w_layout-zebra = 'X'.

ENDFORM.                    " create_layout
*&---------------------------------------------------------------------*
*&      Form  create_display
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_display .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*    I_INTERFACE_CHECK                 = ' '
*    I_BYPASSING_BUFFER                = ' '
*    I_BUFFER_ACTIVE                   = ' '
     i_callback_program                = v_repid
*    I_CALLBACK_PF_STATUS_SET          = ' '
    i_callback_user_command           = 'USER_COMMAND'
*    I_CALLBACK_TOP_OF_PAGE            = ' '
*    I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*    I_CALLBACK_HTML_END_OF_LIST       = ' '
*    I_STRUCTURE_NAME                  =
*    I_BACKGROUND_ID                   = ' '
*    I_GRID_TITLE                      =
*    I_GRID_SETTINGS                   =
     is_layout                         = w_layout
     it_fieldcat                       = i_fldcat
*    IT_EXCLUDING                      =
*    IT_SPECIAL_GROUPS                 =
*    IT_SORT                           =
*    IT_FILTER                         =
*    IS_SEL_HIDE                       =
*    I_DEFAULT                         = 'X'
*    I_SAVE                            = ' '
*    IS_VARIANT                        =
*    IT_EVENTS                         =
*    IT_EVENT_EXIT                     =
*    IS_PRINT                          =
*    IS_REPREP_ID                      =
*    I_SCREEN_START_COLUMN             = 0
*    I_SCREEN_START_LINE               = 0
*    I_SCREEN_END_COLUMN               = 0
*    I_SCREEN_END_LINE                 = 0
*    I_HTML_HEIGHT_TOP                 = 0
*    I_HTML_HEIGHT_END                 = 0
*    IT_ALV_GRAPHICS                   =
*    IT_HYPERLINK                      =
*    IT_ADD_FIELDCAT                   =
*    IT_EXCEPT_QINFO                   =
*    IR_SALV_FULLSCREEN_ADAPTER        =
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER           =
*    ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = it_vbak
*  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.                    " create_display
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN '&IC1'.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = rs_selfield-value
        IMPORTING
          output = lv_vbeln.

      PERFORM get_vbap.
      PERFORM layout1.
      PERFORM popup_display1.

  ENDCASE.

ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  get_vbap
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_vbap .
  SELECT vbeln
         posnr
         matnr
  FROM vbap
  INTO TABLE it_vbap
  WHERE vbeln = lv_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbap BY vbeln.
  ENDIF.

ENDFORM.                    " get_vbap
*&---------------------------------------------------------------------*
*&      Form  layout1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM layout1 .
  w_layout1-colwidth_optimize = 'X'.
  w_layout1-zebra = 'X'.

ENDFORM.                                                    " layout1

*&---------------------------------------------------------------------*
*&      Form  popup_display1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form popup_display1 .
  DATA: c_pos TYPE i VALUE 1,
        r_pos TYPE i VALUE 1.
  refresh: i_fldcat1.
  clear: w_fldcat1.

  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'VBELN'.
  w_fldcat1-seltext_l = 'SALES DOCUMENT'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.

  c_pos = c_pos + 1.
  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'POSNR'.
  w_fldcat1-seltext_l = 'SALES DOCUMENT ITEM'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.

  c_pos = c_pos + 1.
  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'MATNR'.
  w_fldcat1-seltext_l = 'MATERIAL NUMBER'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.



CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
    EXPORTING
*     I_TITLE                       =
     I_SELECTION                   = 'X'
*     I_ALLOW_NO_SELECTION          =
     I_ZEBRA                       = 'X'
*     I_SCREEN_START_COLUMN         = 0
*     I_SCREEN_START_LINE           = 0
*     I_SCREEN_END_COLUMN           = 0
*     I_SCREEN_END_LINE             = 0
*     I_CHECKBOX_FIELDNAME          =
*     I_LINEMARK_FIELDNAME          =
*     I_SCROLL_TO_SEL_LINE          = 'X'
      i_tabname                     = 'IT_VBAP'
*     I_STRUCTURE_NAME              = ty_vbap
     IT_FIELDCAT                   = i_fldcat1
*     IT_EXCLUDING                  =
     I_CALLBACK_PROGRAM            = v_repid
*     I_CALLBACK_USER_COMMAND       =
*     IS_PRIVATE                    =
*   IMPORTING
*     ES_SELFIELD                   =
*     E_EXIT                        =
    tables
      t_outtab                      = it_vbap
*   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.                    " popup_display1

No comments: