본문 바로가기
ERP-SAP/ABAP

<ABAP> Mainternance View Data 검색 가능하도록 만들기(유지보수뷰)

by 행복한워니의 기록 2011. 9. 15.
728x90
반응형


Table 의 데이터들을 쉽게 유저가 유지보수 할 수 있게  만들어 주는 것이 Mainternance View 이다.
그런데 그 뷰 안에 굉장히 많은 데이터들이 들어 있다면...
그리고 그 안에서 특정한 데이터 부분만 추출해서 보고 싶다면..?
(가령 AB* 이렇게 AB가 들어간 모든 데이터만 보던지.. 111111 의 값이 들어간 데이터만 보고 싶은 경우..)



Mainternance View 에서는 살짝 부족한 점이 있어서 프로그램을 하나 개발하면 된다.




REPORT  zor00023.
INCLUDE zor00023top.
INCLUDE zor00023evt.
INCLUDE zor00023f01.

/선언부/


*&---------------------------------------------------------------------*
*&  Include           ZO1ERDC030TOP
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TYPE & DATA
*----------------------------------------------------------------------*
TYPE-POOLS:
  abap.

TABLES:
  zoth0002.     "이 테이블의 데이터가 View로 만들어져 있다.

DATA:
  gt_sellist TYPE STANDARD TABLE OF vimsellist.  "Selection range for view maintenance

CONSTANTS:
  c_view_name TYPE dd02v-tabname VALUE 'ZOVH0002'.  <-이게 만들었던 뷰 네임이다.
 

*----------------------------------------------------------------------*
* SELECTION-SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-s01.
SELECT-OPTIONS:  s_matnr FOR zoth0002-matnr,    "자재명
                              s_land1  FOR zoth0002-LAND1,  "국가
                              s_stawn  for zoth0002-ZOFHS006. "HS코드
SELECTION-SCREEN END   OF BLOCK blk1.



이렇게 세가지의 조건으로 검색이 가능하도록 만들 것이다.



/Event부/

*&---------------------------------------------------------------------*
*&  Include           ZOR00023EVT                                      *
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM rangetab_to_sellist CHANGING gt_sellist.   <- 범위값을 만들어준다.


*----------------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.
  PERFORM call_maintenance_view USING c_view_name  <-뷰를 불러준다.
                                                              gt_sellist.






/F01부분/

*&---------------------------------------------------------------------*
*&  Include           ZOR00023F01                                      *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  rangetab_to_sellist
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_GT_SELLIST  text
*----------------------------------------------------------------------*
form rangetab_to_sellist CHANGING  pt_sellist TYPE STANDARD TABLE .


  DATA:
    ls_sellist TYPE vimsellist.
  DEFINE %add_selection_list.       "선택 텍스트 리스트를 만들어 준다.
    call function 'VIEW_RANGETAB_TO_SELLIST'
      exporting
        fieldname                = &1
        append_conjunction = &2
      tables
        sellist                     = pt_sellist
        rangetab                 = &3.
  END-OF-DEFINITION.

  %add_selection_list:
    'MATNR'    'AND'  s_matnr,
    'LAND1'     'AND'  s_LAND1,
    'ZOFHS006' 'AND'  S_STAWN.
endform.                    " rangetab_to_sellist
*&---------------------------------------------------------------------*
*&      Form  call_maintenance_view
*&---------------------------------------------------------------------*
FORM call_maintenance_view USING value(p_view_name) TYPE dd02v-tabname
                                                       pt_sellist TYPE STANDARD TABLE .
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                       = 'S'
      view_name                    = p_view_name
    TABLES
      dba_sellist                  = pt_sellist
    EXCEPTIONS
      client_reference             = 1
      foreign_lock                 = 2
      invalid_action               = 3
      no_clientindependent_auth    = 4
      no_database_function         = 5
      no_editor_function           = 6
      no_show_auth                 = 7
      no_tvdir_entry               = 8
      no_upd_auth                  = 9
      only_show_allowed            = 10
      system_failure               = 11
      unknown_field_in_dba_sellist = 12
      view_not_found               = 13
      maintenance_prohibited       = 14
      OTHERS                       = 15.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno DISPLAY LIKE 'W'
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

endform.                    " call_maintenance_view



이렇게 간단하게 만들면 검색 가능한 Mainternance View 가 된다.
참 간단한 문제이다...


728x90
반응형