About ALV (Abap List Viewer) 1. ALV란?. 1. 2. 3. 2. ALV 속성. 1. 2. 3. 3. Class / Function Group. Field Catalog. Layout Structure. ALV Sample. 1. 2. 4. ALV 개요. ALV 목적. USE. Programming 기법. Example Program. ALV 기대효과. 1. ALV 란? ALV 란? 1-1. ALV 개요. ALV는 Abap List Viewer의 약자로써 SAP 에서 사용자의 편의성을 제공하기 위하여 Standard Function으로 만들어서 제공하며 여러가지 기능을 포함하고 있어서 사용자가 쓰기에 적합하도록 되어 있다. Abap List Viewer에서 제공하는 기능. a) Navigating Within the List. m) Optimizing the Column Width. b) Choosing Detail. n) Freezing to Columns and Unfreezing Columns. c) Sorting in Ascending/Descending Order. o) Choosing Display Variants. d) ABC Analysis. p) Defining the Current Display Variant. e) Selecting and Deselecting Rows. q) Saving Display Variants. f) Row indicator r) Management of Display Variants. g) Setting and Deleting Filters. s) Displaying The Basic List. h) Displaying and Deleting Sums. u) Finding Terms. I) Creating Subtotals. v) Printing Lists. j) Choosing Summation Levels. w) Sending Lists as Documents k) Defining the Breakdown of the Summation Levels. x) SpreadSheets. l) Displaying the List Status. y) Word Processing. z) Local File. 1. ALV 란? 1-2. ALV 목적. 기존의 Abap의 단순한 레포트에서 탈피하여 Function으로 제공하는 Standard를 적용함으로써 여러 기능들에 대한 불필요한 코딩을 줄이고 일의 효율성을 높힌다. 또한 단 시간 내에 Technical한 프로그램을 완료함으로써 고객의 신뢰를 얻는다. ALV 란? 1. ALV 란? 1-3. Use. Abap List Viewer는 아래와 같이 Report를 Controlling 하는데 주로 쓰인다. a) Reports from cost centers and business processes. b) Actual line from reports from cost centers and business processes. c) Commitment line item reports. d) Plan line item reports from cost centers, orders, business processes, cost objects. e) Budget reports. f) Cycle reports. g) Order selection (CO-PC). h) Flexible itemization (CO-PC). 이외의 모든 Report에 쓰일수 있으며 강력한 Function기능과 변형의 가능으로 거의 모든 레포트가 ALV로 바뀌고 있는 추세이며 ALV(Classic) -> ALV Grid Control로 바뀌는 추세이다. ALV 란? 2. ALV 속성. ALV 속성 2-1. Class / Function Group Class : SLIS. Group. Function Group Description. ALTR : ALV Tree Control : Services Modules KKBL : Internal Use KKRT : Hierarchy Display via field Catalog SALV : Abap List Viewer SFCC : Internal ALV Function enhancements SKBE : Extract Management SKBH : Internal Service Modules ALV SKBS : Display Variants list tool management SLVC : ALV Control service module SLVC_CONSISTENCY_CHECK : ALV Call consistency check SLVC_DIALOG : ALV Control : Dialog elements SLVC_FULLSCREEN : ALV Grid control full screen SLVC_ITEM_SELECTION : Selection Using grid control SLVC_SERVICES : Services SPCA : Call PC application in list processing SSN1 : Scan ABAP Source code 2. ALV 속성. ALV 속성 2-2. Field Catalog. 종류. Field Name. Comp. Type. Length. LVC_FNAME. CHAR(30) Description / Value Range. Reference to the FIELEDNAME Output Table Field name of output table(required). Reference to the Data REF_FIELD Dictionary SPACE, name of a field in the Data Dictionary that corresponds to a field in the output table. REF_TABLE LVC_RFNAME LVC_RTNAME CHAR(30) CHAR(30) SPACE, name of a structure or table from the Data Dictionary that corresponds to a field in the output table. Value Display With DECMFIELD Currency/Quantity Unit SPACE, field name of output table EDIT_MASK LVC_DFNAME LVC_EDTMSK SPACE, conv (conversion exit). ex) ==ALPHA CHAR(30) CHAR(60) 2. ALV 속성. 종류. ALV 속성 Field Name. Comp. Type. Length. LVC_CHECKB. CHAR(1) LVC_COLPOS INT4(10) Description / Value Range. Output Options CHECKBOX Of column SPACE, ‘X’ COL_POS Field에 대한 Column Positions. DO_SUM LVC_DOSUM CHAR(1) Field에 대한 SUM을 계산한다. EMPHASIZE LVC_EMPHASIZE CHAR(04) Field에 대한 COLOR을 지정. SPACE or ‘X’ or ‘Cxyz’ (X:1~9, y,z : ‘0’ = off ‘1’ = on) X : color number , Y : intensified display on/off , Z : inverse display on/off. HOTSPOT LVC_HOTSPOT CHAR(1) LVC_KEY CHAR(1) SPACE, ‘X’ KEY SPACE, ‘X’. (Field가 키가 되는 부분임을 설정한다) LOWERCASE LOWERCASE Field의 Upper / lower 를 설정한다. CHAR(1) 2. ALV 속성. 종류. ALV 속성 Field Name. Comp. Type. Length. LVC_NOOUT. CHAR(1) Description / Value Range. NO_OUT SPACE, ‘X’ 초기에 Display에 관한 설정. NO_SUM LVC_NOSIGN CHAR(1) SPACE,’X’ 필드에 대한 SUM을 할 것 인지에 관한 설정. OUTPUTLEN LVC_OUTLEN NUMC(06) 0, n 필드의 출력넓이를 설정한다. TECH LVC_TECH CHAR(1) SPACE, ‘X’ 설정할 경우 필드는 보여지지 않는다. Formatting Column CURRENCY Contents SPACE, 금액 필드일 경우 통화코드를 셋팅. CFIELDNAME CHAR(05) CHAR(30) SPACE, 금액 필드일 경우 참조통화 필드를 셋팅. CTABNAME SPACE, CFIELDNAME을 설정 했을 시 참조테이블을 셋팅 CHAR(30) 2. ALV 속성. 종류. ALV 속성 Field Name. Comp. Type. Length. LVC_EDTMSK. CHAR(60) Description / Value Range. EDIT_MASK SPACE, conv 출력필드에 대한 Conversion Exit를 설정할 시 쓰임. EXPONENT LVC_EXPONT CHAR(3) initial, integer ( Determines a fixed exponent for the field ) ICON LVC_ICON CHAR(1) SPACE, ‘X’ 아이콘을 사용할 경우 체크를 해준다. JUST SPACE, ‘R’, ‘L’, ‘C’. LVC_JUST CHAR(1) R = Right justified, L = Left justified, C = Center 필드의 내용을 오른쪽/왼쪽/중앙정렬을 결정한다. LZERO LVC_ZERO CHAR(1) SPACE, ‘X’ 체크 했을 시 zero값은 0이 display된다.(Type: NUMC) NO_SIGN LVC_NOSIGN CHAR(1) SPACE, ‘X’ 체크 했을 시 value가 sign 없이 출력된다. NO_ZERO LVC_NOZERO CHAR(1) SPACE, ‘X’ 체크 했을 시 value field가 initial이면 display되지 않는다. 2. ALV 속성. 종류. ALV 속성 Field Name. Comp. Type. Length. LVC_SYMBOL CHAR(1) Description / Value Range. SYMBOL SPACE, ‘X’ 필드를 symbol로 사용 시 셋팅한다. Texts SCRTEXT_L SCRTEXT_L CHAR(40) Data Dictionary를 참조하여 필드의 long text를 가지고 온다. SCRTEXT_M SCRTEXT_M CHAR(20) Data Dictionary를 참조하여 필드의 medium text를 가지고 온다. SCRTEXT_S SCRTEXT_S CHAR(10) Data Dictionary를 참조하여 필드의 shot text를 가지고 온다. REPTEXT_DDIC DD03P-REPTEXT CHAR(55) Data Dictionary의 field heading을 가지고 온다. DDICTXT CHAR(1) 참조할 필드의 text를 결정한다 S:Shot , M:Midium , L:Long 2. ALV 속성. 종류. ALV 속성 Field Name. Comp. Type. Length. LVC_ROLL CHAR(30) Description / Value Range. Parameters for fields ROLLNAME Without DDIC reference Dictionary에서 제공하지 않는 출력필드에 대해 F1 Help를 만들시 참조 Data Element 기술. Other Fields REPREP CHAR(1) SPACE, ‘X’ 레포트 인터페이스가 될때 설정을 하면 필드의 값이 넘어간다. SP_GROUP LVC_SPGRP CHAR(4) SPACE, Four-digit group key. 여러 필드를 Group으로 설정 2. ALV 속성. ALV 속성 2-3. Layout Structure. 종류. Field Name. Comp. Type. Length. Description / Value Range. Color ZEBRA CHAR(1) SPACE, ‘X’ Striped Pattern 을 보여준다. NO_VLINE CHAR(1) SPACE, ‘X’ Columns separated by space Totals Options NO_TOTLINE CHAR(1) SPACE, ‘X’ 이 필드가 체크되면 Subtotal만 표시되고 전체total은 표시가 되지 않는다. NUMC_TOTAL CHAR(1) SPACE, ‘X’ 이 필드가 체크되면 Total계산시 Data Type이 NUMC인것만 계산한다. Interaction Control KEYHOT CHAR(1) SPACE, ‘X’ 이 필드가 체크되면 모든 key field가 hotspot-sensitive된다. 3. ALV Sample. ALV Sample 3-1. Programming 기법. 기본적인 프로그래밍은 Standard Function에서 요구하는 인터널 테이블에 대해서 알맞은 데이터를 넘김으로써 프로그램이 되어진다. 또한 User–Define 부분이 있어서 필요에 따라 Define함으로써 필요한 기능을 추가 할 수 있다. Event를 정의 하여 인터널 테이블로 넘김으로써 필요한 Event시 User-Define한 부분을 실행 할 수 있다. 더욱더 자세한 것은 Example Program 에서 설명된다. 3. ALV Sample. ALV Sample 3-2. Example Program. System : 10.1.20.1 (대웅개발) System Number : 02 Program ID Description YALV_01 가장 기본적인 ALV List YALV_02 Check Box / Pf-status / User-command / Top-of-page Refresh / Check Box inactive / Line color 변경 YALV_03 Subtotal / Variant / Drill Down YALV_04 2개의 연관된 Internal Table을 Display 다른 Internal Table Append YALV_05 Popup_select YALV_06 Grid Control 3. ALV Sample. 1. YALV_01 출력화면 ALV Sample 3. ALV Sample. ALV Sample 1. YALV_01 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = g_repid <= 프로그램 이름 * i_callback_pf_status_set = g_status * i_callback_user_command = g_user_command is_layout = alv_layout <= 뒷장 a 참조 it_fieldcat = it_fieldcat <= 뒷장 b 참조 * it_special_groups = gt_special_group_table * it_sort = gt_sort_table it_events = alv_events <= 뒷장 c 참조 = it_bkpf <= 실제 화면에 보여줄 테이블 TABLES t_outtab EXCEPTIONS program_error = 1 OTHERS = 2. 3. ALV Sample. a. ALV Sample Alv_layout 설명. 출력되는 양식의 Display Options을 지정해주는 부분이다. b. 정의: Data: alv_layout type slis_layout_alv. 값설정: alv_layout-zebra = ‘X’. “ Striped Pattern it_fieldcat 설명. 넘기고자 하는 인터널 테이블의 속성을 지정하는 부분이다. 즉 필드의 이름과 Description, Type, 참조필드 등등을 설명한다. 정의: Data: it_fieldcat type slis_t_fieldcat_alv. 값설정: Data: lt_fieldcat type slis_fieldcat_alv. clear lt_fieldcat. lt_fieldcat-col_pos = 1. <- 보여줄 순서 lt_fieldcat-fieldname = ‘필드명’. lt_fieldcat-no_out = ‘X’ , ‘ ‘ <- ‘X’설정시 No-display …… append lt_fieldcat to it_fieldcat. <- 필드에 해당하는 모든 값을 지정하여 it_fieldcat 에 저장한다. 3. ALV Sample. c. ALV Sample Alv_event 설명. Event를 처리하는 부분으로 Event명과 Form명을 써준다. 정의: Data: alv_events type slis_event. 값설정: Data: ls_event type slis_alv_Event. ls_event-name = ‘TOP_OF_PAGE’. <- Event Name ls_event-form = ‘TOP-OF-PAGE’. <- Event발생시 수행하는 Form append ls_event to alv_event. ls_event-name = ‘END_OF_LIST’. <- Event Name ls_event-form = ‘END-OF-PAGE’. <- Event발생시 수행하는 Form append ls_event to alv_event. 3. ALV Sample. 2. YALV_02 출력화면 ALV Sample 3. ALV Sample. ALV Sample 1. YALV_02 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program * = g_repid <= 프로그램 이름 i_callback_pf_status_set = g_status <= 뒷장 a 참조 i_callback_user_command = g_user_command <= 뒷장 b 참조 is_layout = alv_layout <= 뒷장 c 참조 it_fieldcat = it_fieldcat <= 뒷장 d 참조 it_special_groups = gt_special_group_table <= 뒷장 e 참조 it_sort = gt_sort_table it_events = alv_events <= 뒷장 f 참조 = it_bkpf <= 실제 화면에 보여줄 테이블 TABLES t_outtab EXCEPTIONS program_error = 1 OTHERS = 2. 3. ALV Sample. a. ALV Sample G_status 설명. 출력되는 양식의 PF-STATUS을 지정해주는 부분이다. 정의: Data: g_status type slis_formname value ‘STATUS’. ALV에서는 PF-STATUS설정시 본 프로그램의 Form Status를 수행한다. 값설정: FORM status USING extab type slis_t_extab. set pf-status ‘STATUS’ excluding extab. ENDFORM. b g_user_command 설명. ALV에서 At User-Command / At Line-selection 를 수행할시 callback하여 본 프로그램에서 sy-ucomm에 따라 수행이 가능하게끔 지정하는 부분이다. 정의: Data: g_user_command type slis_formname value ‘USER_COMMAND’. ALV에서 Event를 수행시 Callback하여 본 프로그램의 Form User_command를 수행. 값설정: FORM user_Command using r_ucomm like sy-ucomm rs_selfield type slis_selfield. case r_ucomm. when ‘&IC1’. … endcase. ENDFORM. <= sy-ucomm <= 선택된 필드의 내용 3. ALV Sample. c. ALV Sample alv_layout 설명. 출력되는 양식의 Display Options을 지정해주는 부분이다. 정의: Data: alv_layout type slis_layout_alv. 값설정: alv_layout-zebra = ‘X’. “ Striped Pattern alv_layout-box_fieldname = 'BOX'. “ Box가 표시되는 필드이름 alv_layout-box_tabname = 'IT_BKPF'. “ 필드이름을 포함하는 테이블 alv_layout-info_fieldname = 'LISTINFO'. d. “ infofield for listoutput it_fieldcat 설명. 앞에서 설명이 되어졌고 프로그래머가 직접 값을 넣어 줄 수도 있고 Function ‘REUSE_ALV_FIELDCATALOG_MERGE’ 를 이용하여 인터널 테이블이나 Structure를 넘기고 it_fieldcat을 받을수도 있다. 이 함수를 거치면 인터널 테이블 정보가 그대로 it_fieldcat에 변환되어 넘어온다. CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’ EXPORTING I_program_name = g_repid I_internal_name = ‘IT_BKPF’ ct_fieldcat it_fieldcat. CHANGING = 3. ALV Sample. e. ALV Sample gt_special_group_table 설명 Current Display Variant의 필드그룹을 지정하는 기능을 한다. 정의: DATA: gt_special_group_table TYPE slis_t_sp_group_alv. 값설정: DATA: gt_special_group_line TYPE slis_sp_group_alv. FREE gt_special_group_table. CLEAR gt_special_group_line. gt_special_group_line-sp_group = 'A'. <= it_fieldcat-sg_group = ‘A’. gt_special_group_line-text = 'A Group'. <= TEXT APPEND gt_special_group_line TO gt_special_group_table. it_fieldcat을 정의시 sp_group = ‘A’로 지정된 필드를 Grouping을 한다. 이것은 화면에 아래와같이 보여진다. A Group을 선택하면 It_fieldcat-sg_group = ‘A’로 정의된 필드만 Hidden Field에 보여진다. 3. ALV Sample. f. ALV Sample Alv_event 설명 Event를 처리하는 부분으로 Event명과 Form명을 써준다 정의: Data: alv_events type slis_event. 값설정: Data: ls_event type slis_alv_Event. ls_event-name = ‘TOP_OF_PAGE’. <- Event Name ls_event-form = ‘TOP-OF-PAGE’. <- Event발생시 수행하는 Form append ls_event to alv_event. FORM top-of-page. format reset. format intensified off. write:/ text-002 centered. ENDFORM. " TOP-OF-PAGE 3. ALV Sample. 2. YALV_02 출력화면 ( Checkbox 체크후 저장버튼을 눌렀을시) 저장후 Checkbox Inactive ALV Sample 3. ALV Sample. • ALV Sample 체크박스를 선택하여 PF-STATUS의 “저장”버튼을 누르면 CallBack하여 FORM User_command를 수행하게 된다. 체크박스가 선택되어 있으면 itab-box = ‘X’가 표기되어 있고 아래와 같이 수정후 Modify하면 itab-box = ‘1’ <= Checkbox가 Inactive itab-box = ‘-’ <= Checkbox가 없어짐 itab-listinfo = ‘C01’. <= 라인 칼라지정 C : Default , 1~9 : Color , 1 : intensified display on 0: intensified display off rs_selfield-refresh = ‘X’. <= 화면 Refresh 3. ALV Sample. ALV Sample 3. YALV_03 입력화면 선택시 3. ALV Sample. 3. YALV_03 출력화면 ALV Sample 3. ALV Sample. ALV Sample 1. YALV_03 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' . <= YALV_01, YALV_02 Sample 참조. 단 여기서 추가된 부분은 Variant부분으로 … … … i_save = g_save is_variant = g_variant 을 추가해주면 아래와 같은 화면이 추가된다. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' <= Default Variant를 구한다. CALL FUNCTION 'REUSE_ALV_VARIANT_F4' <= F4 Help를 만든다. CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE' <= 해당 Variant가 존재하는지를 체크한다 3. ALV Sample. 4. YALV_04 출력화면 ALV Sample 3. ALV Sample. ALV Sample 1. YALV_04 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' <= 초기화시킴 EXPORTING i_callback_program = g_repid i_callback_user_command = g_user_command <= Sy-repid i_callback_pf_status_set = g_status. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND' <= 두개의 인터널 테이블 Display EXPORTING is_layout = alv_layout it_fieldcat = it_fieldcat1 is_keyinfo = gt_keyinfo <= 뒷장 a 참조 i_header_tabname = 'IT_HEADER' <= Header 가 되는 Internal Table i_item_tabname = 'IT_BODY' <= Body 가 되는 Internal Table it_events = alv_events TABLES t_outtab_header = it_header <= Header internal Table t_outtab_item = it_body. <= Body Internal Table 3. ALV Sample. ALV Sample CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' EXPORTING it_fieldcat = it_fieldcat <= Field Catalog is_layout = alv_layout i_tabname = 'IT_BSEG' it_events = alv_events it_sort = gt_sort_table <= Sort 순서 = it_bseg. <= Display 하고자 하는 테이블 <= Append 하고자 하는 인터널 테이블 TABLES t_outtab CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' <= 화면에 출력한다 EXPORTING is_print = gt_print. <= 뒷장 b 참조 3. ALV Sample. a. ALV Sample gt_keyinfo 설명 두개의 인터널 테이블의 연관성을 정의한다. 정의: DATA: gt_keyinfo 값설정: gt_keyinfo-header01 = 'BELNR'. gt_keyinfo-item01 TYPE slis_keyinfo_alv. = 'BELNR'. <= Header Table의 BELNR Field와 Body Table의 BELNR을 묶어서 Header Table의 BELNR을 기준으로 출력 b. gt_print 설명 프린트 Option을 설정한다. 정의: DATA: gt_print TYPE slis_print_alv. 3. ALV Sample. 5. YALV_05 출력화면 ALV Sample 3. ALV Sample. 1. ALV Sample YALV_05 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING I_TITLE = 'Sample Test' <= Popup화면 Title I_ZEBRA = 'X' i_tabname = 'IT_BSEG' <= 사용할 인터널 테이블 IT_FIELDCAT = it_fieldcat <= Field Catalog = ls_sel <= 선택되어진 라인정보 = it_bseg <= 출력되어질 인터널 테이블 IMPORTING ES_SELFIELD TABLES t_outtab * EXCEPTIONS * PROGRAM_ERROR = 1 * OTHERS = 2 3. ALV Sample. 6. YALV_06 출력화면 ALV Sample 3. ALV Sample. 1. ALV Sample YALV_06 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * i_callback_program = g_repid <= Sy-repid i_callback_pf_status_set = g_status <= PF-STATUS i_callback_user_command = g_user_command <= User_COMMAND i_background_id = 'ALV_BACKGROUND' <= Back Ground ID I_GRID_TITLE = '상세내역' is_layout = alv_layout <= Layout정의 it_fieldcat = it_fieldcat <= Field Catalog정의 it_sort = gt_sort_table <= Sort순서정의 i_save = g_save <= A, U:User-Specific is_variant = g_variant <= Variant it_events = alv_events <= Event 정의 = it_bseg. <= 실제 보여줄 테이블 TABLES t_outtab 3. ALV Sample. ALV Sample CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' <= Default Variant를 가져온다 EXPORTING i_save = g_save CHANGING cs_variant = gt_variant EXCEPTIONS not_found = 2. CALL FUNCTION 'REUSE_ALV_VARIANT_F4'‘ EXPORTING is_variant = g_variant i_save = g_save it_default_fieldcat = IMPORTING e_exit = g_exit es_variant = gt_variant EXCEPTIONS not_found = 2. <= F4 Help를 만든다. 3. ALV Sample. ALV Sample CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' <= List body comment block output EXPORTING * i_logo = 'HTMLCNTL_TESTHTM2_SAPLOGO' * i_logo = 'ENJOYSAP_LOGO' * i_logo = 'PMMN_LOGO' i_logo = 'Z_YMS' it_list_commentary = gt_list_top_of_page. a. <= Logo <= 아래 a 참조 gt_list_top_of_page 설명 Grid Control의 Header에 들어갈 내용을 인터널 테이블로 만든다. 정의: DATA: gt_list_top_of_page type slis_t_listheader. 값설정: 여기서 gt_list_top_of_page-typ : H : Header / S : Selection / A : Action을 의미한다 Header 부분 Selection 부분 Action 부분 3. ALV Sample. ALV Sample 값을 넣어줄때 * Header 정의 CLEAR lt_line. lt_line-typ = 'H'. <= Header lt_line-info = text-002. <= 전표리스트 APPEND lt_line TO it_top_of_page. * Selection 정의 CLEAR lt_line. lt_line-typ = 'S'. <= Selection lt_line-key = text-003. <= 회사코드 lt_line-info = p_bukrs. APPEND lt_line TO it_top_of_page. lt_line-key = text-005. lt_line-info = lt_text. APPEND lt_line TO it_top_of_page. <= 전기기간 * Action 정의 CLEAR lt_line. lt_line-typ = 'A'. lt_line-info = 'Detail List'. APPEND lt_line TO it_top_of_page. <= Action 4. ALV 기대효과. ALV의 기대되는 효과. a) 단 시간에 효율적인 레포트를 작성함으로써 일의 효율성을 높힌다. b) 하나의 레포트가 여러가지 기능을 제공함으로써 불 필요한 Add-on 프로그램을 줄일수 있다. c) 고객의 신뢰를 구축하고 다른 동종업계와 차별화를 이룬다. ALV 기대효과