AVL : ABAP VIEW LIST 1. 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한 프로그램을 완료함으로써 고객의 신뢰를 얻는다. 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로 바뀌는 추세이다. 2. 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 속성. 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 속성. 종류. 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 속성. 종류. 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 속성. 종류. 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 속성. 종류. 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 속성. 종류. 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 속성. 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. 3-1. Programming 기법. 기본적인 프로그래밍은 Standard Function에서 요구하는 인터널 테이블에 대해서 알맞은 데이터를 넘김으로써 프로그램이 되어진다. 또한 User–Define 부분이 있어서 필요에 따라 Define함으로써 필요한 기능을 추가 할 수 있다. Event를 정의 하여 인터널 테이블로 넘김으로써 필요한 Event시 User-Define한 부분을 실행 할 수 있다. 더욱더 자세한 것은 Example Program 에서 설명된다. 3. ALV Sample. SELECT한 값을 REPORT할 경우 WRITE보다는 ALV를 많이 사용하게 됨 3. ALV Sample. ALV SAMPLE 프로그램 보기 3. ALV Sample. 3. ALV Sample. AVL 호출 : REUSE_ALV_GRID_DISPLAY 함수 보기 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY‘ “ALV 사용하는 펑션 호출 EXPORTING i_callback_program = g_program “프로그램 리턴??? i_callback_pf_status_set = 'PF_STATUS_SEG‘ “ 버튼을 만듦 FORM이름, 이문장자체가 PERFORM구문을 대신함 i_callback_user_command = 'USER_COMMAND1' is_layout = g_layout_s “전체적인 스크린을 그리는 LAYOUT값,SLTS_ALV변수 타입임 i_save = g_save “실행하고 나서 필요없는필드를 뺏을경우 LAYOUT값을 저장함 it_events = g_events_t[] “이벤트 정의, REUSE_ALV_EVENTS_GET이벤트가져오는 펑션 it_fieldcat = g_field_t[] “FIELD에 대한 카타로그 값, 개별 필드 레이아웃정보 IMPORTING e_exit_caused_by_caller = g_exit_caused_by_caller es_exit_caused_by_user = g_exit_caused_by_user_s TABLES t_outtab = g_itab_t. “데이터 (GATHER)수집 G_LAYOUT_S 변수의 설정값들 g_layout_s-detail_popup = 'X'. g_layout_s-zebra = 'X'. “조회 필드에 색상을 넣어줌 G_LAYOUT_S-EDIT = 'X'. “필드 수정가능하게,필드 카탈로그에서 많이해줌 G_LAYOUT_S-no_totalline = 'X'. “SUM금액을 보여주지 않음 G_LAYOUT_S-box_fieldname = 'CHECKBOX'. “CHECKBOX 보여줌 G_LAYOUT_S-colwidth_optimize = 'X'. “필드 길이를 최적화함 3. ALV Sample. ALV : ABAP LIST VIEW는 REPORT 화면을 DYNAMIC하게 구성할수 있게함 REUSE_ALV_GRID_DISPLAY 펑션을 호출하여 SELECT 결과, 기본 레이아웃, 이벤트 FORM alvprn_display. g_save = 'A'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = g_program i_callback_pf_status_set = 'PF_STATUS_SEG‘ “버튼 i_callback_user_command = 'USER_COMMAND‘ “USER_COMMAND가 FORM명이 됨 is_layout = g_layout_s “LAYOUT 구성 i_save = g_save it_events = g_events_t[] “AT LINE-SELECTION, AT USER-COMMAND등의 이벤트 사용시 이벤트 이름 정의 주로, BUTTON, AT USER-COMMAND를 많이 씀 it_fieldcat = g_field_t[] “각 필드에 대한 정보, 컬럼을 보여줄것인가, 색상등.. IMPORTING e_exit_caused_by_caller = g_exit_caused_by_caller es_exit_caused_by_user = g_exit_caused_by_user_s TABLES t_outtab = g_itab_t. “인터널 테이블에서 가져올 값들 GATHER 3. ALV Sample. 필드 카탈로그 생성 : REUSE_ALV_FIELDCATALOG_MERGE 함수를 호출하여 기본 카탈로그 정보를 가져옴. 기본 카탈로그 정보외에 효과는 소스를 추가하면됨 FORM alvprn_field_setting. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE‘ “함수를 호출해서 기본 필드 카탈로그 생성 EXPORTING i_program_name = g_program “PROGRAM 명 할당 i_internal_tabname = 'G_ITAB_T‘ “현 프로그램이 가지는 인터널 테이블 선언 i_inclname = g_program CHANGING ct_fieldcat = g_field_t[]. “인터널 테이블의 정보를 가지고 필드 카탈로그를 만들어냄 LOOP AT g_field_t INTO lt_cat. “위에서 만들어준 카탈로그 정보를 CUSTIMIZING함 IF lt_cat-fieldname = 'PRICE'. “필드 ID lt_cat-emphasize = 'C601'. “EMPHASIZE 강조를 줌 lt_cat-seltext_l = ' '. “필드명 변경 ENDIF. IF lt_cat-fieldname = 'CURRENCY'. lt_cat-no_out = 'X'. ENDIF. MODIFY g_field_t FROM lt_cat. “생성된 카탈로그를 적용함 필드명 변경 3. ALV Sample. 이벤트 : REUSE_ALV_EVENTS_GET * FORM CALL FUNCTION 'REUSE_ALV_EVENTS_GET‘ “함수를 호출하여 기본 이벤트 정보를 생성 이 평선이 버튼이벤트를 호출함 EXPORTING i_list_type = 0 IMPORTING et_events = g_events_t. “이베트 GATHER FORM pf_status_set USING p_extab TYPE slis_t_extab. “버튼 이벤트 수행 스크립트 DATA : l_pf TYPE slis_extab. IF gv_field = 'X'. l_pf-fcode = 'TEST'. APPEND l_pf TO p_extab. ELSE. l_pf-fcode = 'TEST1'. APPEND l_pf ENDIF. TO p_extab. 3. ALV Sample. 버튼을 클릭하게 되면 USER_COMMAND 가 수행되게 됨 ALV는 AT USER-COMMAND에서 하는게 아님 USER_COMMAND라는 것을 정의했음 이구문이 PERFORM구문을 대신함 FORM user_command USING p_ucomm "LIKE sy-ucomm “p_ucomm버튼 정보 p_selfield TYPE slis_selfield. “p_selfield :선택된 필드의 정보(순서등) READ TABLE g_itab_t INDEX p_selfield-tabindex. CASE p_ucomm. “수행 한 명 WHEN 'TEST'. “ TEST버튼을 클릭 gv_field = 'X'. WHEN 'TEST1'. “TEST1 버튼을 클릭 gv_field = ' '. ENDCASE. * ENDFORM. FORM alvprn_display. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = g_program i_callback_pf_status_set = 'PF_STATUS_SEG‘ i_callback_user_command = 'USER_COMMAND‘ 3. ALV Sample. UCOMM 화면 3. ALV Sample. 새로 조회해도 클릭한 위치 그대로 두어서 조회함 FORM user_command USING p_ucomm "LIKE sy-ucomm p_selfield TYPE slis_selfield. READ TABLE g_itab_t INDEX p_selfield-tabindex. P_SELFIELD-REFRESH = 'X'. P_SELFIELD-COL_STABLE = 'X'. P_SELFIELD-ROW_STABLE = 'X'. 새로 조회해도 그 위치 그대로임 3. 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 출력화면 3. 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 * it_sort it_events = gt_special_group_table = gt_sort_table = alv_events <= 뒷장 c 참조 TABLES t_outtab = it_bkpf EXCEPTIONS program_error =1 OTHERS = 2. <= 실제 화면에 보여줄 테이블 3. ALV Sample. a. 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_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 출력화면 3. ALV Sample. 1. YALV_02 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program 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 * <= 프로그램 이름 = g_repid it_sort it_events = gt_special_group_table <= 뒷장 e 참조 = gt_sort_table = alv_events <= 뒷장 f 참조 TABLES t_outtab = it_bkpf EXCEPTIONS program_error =1 OTHERS = 2. <= 실제 화면에 보여줄 테이블 3. ALV Sample. a. G_status 설명. 출력되는 양식의 PF-STATUS을 지정해주는 부분이다. 정의: type slis_formname value ‘STATUS’. Data: g_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_layout 설명. 출력되는 양식의 Display Options을 지정해주는 부분이다. 정의: Data: alv_layout type slis_layout_alv. 값설정: alv_layout-zebra = ‘X’. “ Striped Pattern alv_layout-box_fieldname = 'BOX'. alv_layout-box_tabname “ Box가 표시되는 필드이름 = 'IT_BKPF'. “ 필드이름을 포함하는 테이블 alv_layout-info_fieldname = 'LISTINFO'. “ infofield for listoutput d. 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’ CHANGING ct_fieldcat = it_fieldcat. 3. ALV Sample. e. 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_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 3. 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. 3. YALV_03 입력화면 선택시 3. ALV Sample. 3. YALV_03 출력화면 3. 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' CALL FUNCTION 'REUSE_ALV_VARIANT_F4' CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE' <= Default Variant를 구한다. <= F4 Help를 만든다. <= 해당 Variant가 존재하는지를 체크한다 3. ALV Sample. 4. YALV_04 출력화면 3. ALV Sample. 1. YALV_04 설명 - 사용된 함수 <= 초기화시킴 CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' EXPORTING i_callback_program = g_repid <= Sy-repid i_callback_user_command = g_user_command 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 i_header_tabname i_item_tabname it_events = gt_keyinfo <= 뒷장 a 참조 = 'IT_HEADER' = 'IT_BODY' <= Header 가 되는 Internal Table <= Body 가 되는 Internal Table = alv_events TABLES t_outtab_header t_outtab_item = it_header = it_body. <= Header internal Table <= Body Internal Table 3. ALV Sample. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' EXPORTING it_fieldcat = it_fieldcat <= Field Catalog is_layout = alv_layout <= Append 하고자 하는 인터널 테이블 i_tabname = 'IT_BSEG' it_events = alv_events it_sort = gt_sort_table <= Sort 순서 TABLES t_outtab = it_bseg. <= Display 하고자 하는 테이블 CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' EXPORTING is_print = gt_print. <= 뒷장 b 참조 <= 화면에 출력한다 3. ALV Sample. a. gt_keyinfo 설명 두개의 인터널 테이블의 연관성을 정의한다. 정의: DATA: gt_keyinfo 값설정: gt_keyinfo-header01 = 'BELNR'. TYPE slis_keyinfo_alv. gt_keyinfo-item01 = '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 출력화면 3. ALV Sample. 1. YALV_05 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING I_TITLE = 'Sample Test' I_ZEBRA = 'X' i_tabname = 'IT_BSEG' IT_FIELDCAT = it_fieldcat <= Popup화면 Title <= 사용할 인터널 테이블 <= Field Catalog IMPORTING ES_SELFIELD = ls_sel <= 선택되어진 라인정보 TABLES t_outtab * <= 출력되어질 인터널 테이블 = it_bseg EXCEPTIONS * PROGRAM_ERROR * OTHERS =2 =1 3. ALV Sample. 6. YALV_06 출력화면 3. ALV Sample. 1. YALV_06 설명 - 사용된 함수 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = g_repid i_callback_pf_status_set = g_status i_callback_user_command * <= Sy-repid <= PF-STATUS = g_user_command i_background_id = 'ALV_BACKGROUND' I_GRID_TITLE = '상세내역' is_layout it_fieldcat it_sort i_save = alv_layout = it_fieldcat <= User_COMMAND <= Back Ground ID <= Layout정의 <= Field Catalog정의 = gt_sort_table <= Sort순서정의 = g_save <= A, U:User-Specific is_variant = g_variant <= Variant it_events = alv_events <= Event 정의 TABLES t_outtab = it_bseg. <= 실제 보여줄 테이블 3. 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 es_variant EXCEPTIONS not_found = 2. = g_exit = gt_variant <= F4 Help를 만든다. 3. 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' <= Logo it_list_commentary = gt_list_top_of_page. <= 아래 a 참조 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. 값을 넣어줄때 * Header 정의 CLEAR lt_line. lt_line-typ = 'H'. lt_line-info = text-002. <= Header <= 전표리스트 APPEND lt_line TO it_top_of_page. * Selection 정의 CLEAR lt_line. lt_line-typ = 'S'. lt_line-key = text-003. lt_line-info = p_bukrs. <= Selection <= 회사코드 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) 고객의 신뢰를 구축하고 다른 동종업계와 차별화를 이룬다.