메뉴 건너뛰기

SAP 한국 커뮤니티



REPORT z_demo_alv_sort_2

노름마치 2007.11.05 13:00 조회 수 : 2884

REPORT z_demo_alv_sort_2.
*---------------------------------------------------------------------*
* This program lists orders (VBAK) with sort for 'Sales organization' *
* (VKORG), 'sold-to-party' (KUNNR) and 'Document number' (VBELN)      *
*---------------------------------------------------------------------*
* Author : Michel PIOUD                                               *
* Email : mpioud@yahoo.fr  HomePage : http://www.geocities.com/mpioud *
*---------------------------------------------------------------------*
TYPES :
  BEGIN OF ty_vbak,
    vkorg TYPE vbak-vkorg,             " Sales organization
    kunnr TYPE vbak-kunnr,             " Sold-to party
    vbeln TYPE vbak-vbeln,             " Sales document
    audat TYPE vbak-audat,             " Document date
  END OF ty_vbak.


DATA :
  vbak    TYPE vbak,
  gt_vbak TYPE TABLE OF ty_vbak.


SELECT-OPTIONS :
  s_vkorg FOR vbak-vkorg,              " Sales organization
  s_kunnr FOR vbak-kunnr,              " Sold-to party
  s_vbeln FOR vbak-vbeln.              " Sales document


SELECTION-SCREEN SKIP.


SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_1 FOR FIELD p_page.
PARAMETERS p_page RADIOBUTTON GROUP optn.
SELECTION-SCREEN END OF LINE.


SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_2 FOR FIELD p_ligne.
PARAMETERS p_ligne RADIOBUTTON GROUP optn.
SELECTION-SCREEN END OF LINE.


SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_3 FOR FIELD p_nthng.
PARAMETERS p_nthng RADIOBUTTON GROUP optn.
SELECTION-SCREEN END OF LINE.


SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_4 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.


*---------------------------------------------------------------------*
INITIALIZATION.


  v_1 = 'New page at ''Sales Org.'' break'.
  v_2 = 'Underline at ''Sales Org.'' break'.
  v_3 = 'Nothing'.
  v_4 = 'Maximum of records to read'.


*---------------------------------------------------------------------*
START-OF-SELECTION.


  PERFORM f_read_data.


  PERFORM f_display_data.


*---------------------------------------------------------------------*
*      Form  f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.


  SELECT vkorg kunnr vbeln audat
      UP TO p_max ROWS
    INTO TABLE gt_vbak
    FROM vbak
   WHERE kunnr IN s_kunnr
     AND vbeln IN s_vbeln
     AND vkorg IN s_vkorg.


ENDFORM.                               " F_READ_DATA
*---------------------------------------------------------------------*
*      Form  f_display_data
*---------------------------------------------------------------------*
FORM f_display_data.


  TYPE-POOLS: slis.                    " ALV Global types


* Macro definition
  DEFINE m_fieldcat.
    add 1 to ls_fieldcat-col_pos.
    ls_fieldcat-fieldname   = &1.
    ls_fieldcat-ref_tabname = 'VBAK'.
    append ls_fieldcat to lt_fieldcat.
  END-OF-DEFINITION.


  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    ls_sort-up        = 'X'.
    ls_sort-group     = &2.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.


  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_layout   TYPE slis_layout_alv,
    ls_grid_settings TYPE lvc_s_glay.
*
  ls_grid_settings-top_p_only = 'X'.


  m_fieldcat 'VKORG'.
  m_fieldcat 'KUNNR'.
  m_fieldcat 'VBELN'.
  m_fieldcat 'AUDAT'.


  IF p_page = 'X'.
    m_sort 'VKORG' '*'.                " Sort by vkorg + Page break
  ELSEIF p_ligne = 'X'.
    m_sort 'VKORG' 'UL'.               " Sort by vkorg + Underline
  ELSE.
    m_sort 'VKORG' ' '.                " Sort by vkorg
  ENDIF.
  m_sort 'KUNNR' ' '.                  " Sort by kunnr
  m_sort 'VBELN' ' '.                  " Sort by vbeln


  ls_layout-colwidth_optimize = 'X'.
  ls_layout-zebra             = 'X'.
  ls_layout-cell_merge        = 'X'.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program     = sy-cprog
            i_callback_top_of_page = 'TOP_OF_PAGE'
            is_layout              = ls_layout
            i_grid_settings        = ls_grid_settings
            it_fieldcat            = lt_fieldcat
            it_sort                = lt_sort
       TABLES
            t_outtab               = gt_vbak.


ENDFORM.                               " F_DISPLAY_DATA
*---------------------------------------------------------------------*
*       FORM top_of_page                                              *
*---------------------------------------------------------------------*
FORM top_of_page.                                           "#EC CALLED


  ULINE.
  WRITE : sy-title(65) CENTERED, 'Page :' , sy-pagno .
  ULINE.


ENDFORM.
**************** END OF PROGRAM Z_DEMO_ALV_SORT_2 *********************