Senin, 29 Oktober 2012

ALV Pop Up

Berikut contoh program ALV Pop Up.

*&---------------------------------------------------------------------*
*& Report  ZALV_POPUP                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  zalv_popup                              .
TYPE-POOLS : slis.

DATA:
    ls_fieldcatlog TYPE slis_fieldcat_alv,
    lt_fieldcatlog TYPE slis_t_fieldcat_alv,
    lt_layout TYPE slis_layout_alv.

DATA : BEGIN OF t_data OCCURS 0,
       matnr TYPE mara-matnr,
       maktx TYPE makt-maktx,
       matkl TYPE mara-matkl,
       meins TYPE mara-meins,
      END OF t_data,

      BEGIN OF t_makt OCCURS 0,
      matnr TYPE makt-matnr,
      maktx TYPE makt-maktx,
      END OF t_makt.

START-OF-SELECTION.
  PERFORM : fm_get_data,
            fm_display_alv.



*&---------------------------------------------------------------------*
*&      Form  fm_get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fm_get_data .
  FIELD-SYMBOLS : LIKE LINE OF t_data.

  SELECT matnr matkl meins
    FROM mara
    INTO CORRESPONDING FIELDS OF TABLE t_data
    UP TO 10 ROWS.

  IF t_data[] IS NOT INITIAL.
    SELECT matnr maktx
    FROM makt
    INTO CORRESPONDING FIELDS OF TABLE t_makt
    FOR ALL ENTRIES IN t_data
    WHERE matnr = t_data-matnr
      AND spras = sy-langu.

    SORT t_data BY matnr.
    SORT t_makt BY matnr.
    LOOP AT t_data ASSIGNING .
      READ TABLE t_makt WITH KEY matnr = -matnr BINARY SEARCH.
      IF sy-subrc = 0.
        -maktx = t_makt-maktx.
      ENDIF.
    ENDLOOP.

  ENDIF.
ENDFORM.                    " fm_get_data

*&---------------------------------------------------------------------*
*&      Form  fm_display_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fm_display_alv .
  PERFORM : fm_build_cat,
            fm_build_layout,
            fm_alv.
ENDFORM.                    " fm_display_alv

*&---------------------------------------------------------------------*
*&      Form  fm_build_cat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fm_build_cat .
  CLEAR ls_fieldcatlog.

  ls_fieldcatlog-row_pos   = '1'.
  ls_fieldcatlog-col_pos   = '1'.
  ls_fieldcatlog-fieldname = 'MATNR'.
  ls_fieldcatlog-tabname   = 'T_DATA'.
  ls_fieldcatlog-seltext_m = 'Material'.
  APPEND ls_fieldcatlog TO lt_fieldcatlog.

  CLEAR ls_fieldcatlog.

  ls_fieldcatlog-row_pos   = '1'.
  ls_fieldcatlog-col_pos   = '2'.
  ls_fieldcatlog-fieldname = 'MAKTX'.
  ls_fieldcatlog-tabname   = 'T_DATA'.
  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 = 'MATKL'.
  ls_fieldcatlog-tabname   = 'T_DATA'.
  ls_fieldcatlog-seltext_m = 'Material Group'.
  APPEND ls_fieldcatlog TO lt_fieldcatlog.

  CLEAR ls_fieldcatlog.

  ls_fieldcatlog-row_pos   = '1'.
  ls_fieldcatlog-col_pos   = '4'.
  ls_fieldcatlog-fieldname = 'MEINS'.
  ls_fieldcatlog-tabname   = 'T_DATA'.
  ls_fieldcatlog-seltext_m = 'UOM'.
  APPEND ls_fieldcatlog TO lt_fieldcatlog.
ENDFORM.                    " fm_build_cat

*&---------------------------------------------------------------------*
*&      Form  FM_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fm_build_layout .
  lt_layout-zebra = 'X'.

  lt_layout-colwidth_optimize = 'X'.
ENDFORM.                    " FM_BUILD_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  FM_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fm_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program    = sy-repid
      i_grid_title          = 'MATERIAL MASTER'
      is_layout             = lt_layout
      it_fieldcat           = lt_fieldcatlog
      i_screen_start_column = 20
      i_screen_start_line   = 10
      i_screen_end_column   = 90
      i_screen_end_line     = 30
    TABLES
      t_outtab              = t_data
    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.                    " FM_ALV


Output:

Tidak ada komentar:

Posting Komentar