#PARAN SILVERLIGHT#
  • Tistory
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

ALV GRID - SLIS Package

ERP/SAP/R/3 2011. 7. 19. 20:01


ALV(abap list viwer)
SAP Standard에서 제공되는 View함수를 사용하는 프로그램
ALV를 통해 조회된 DATA를 수정/변경 할 수 있으며 신규 데이터도 입력 가능하다.

-주요기능-
정렬기능
필터링기능
열의 크기 변경
레이아웃 변경
더블클릭에 의한 추가 정보 제공
기본적인 계산 수행 기능
엑셀 파일 및 워드 문서 저장


실무에선 write로 된 리폿은 거의 안쓴다고.. ALV를 쓴다고 한다. 하긴... write 리폿은 너무 어려워..;;

강의시간에 배울 땐 어렵게 느껴졌는데, 집에와서 책보고 해보니 별거 아니라능..

PERFORM BUILD_FIELDCAT : 화면에 디스플레이할 필드를 정의
PERFORM BUILD_SORTCAT : 원하는 필드로 정렬하기 위한 레이아웃을 생성
PERFORM BUILD_EVENTCAT : 페이지의 header를 작성
PERFORM ALV_WRITE : field data 및 레이아웃 속성값과 인터널테이블 데이타를 Function Module인 'REUSE_ALV_LIST_DISPLAY'에 임포트


굳이 PERFORM문을 쓸 필요는 없지만 코딩은 깔끔하고 가독성이 있어야죠..

TYPE-POOLS : slis.
SLIS를 type-pool로 선언하여 프로그램에서 사용하겠다는 의미. TYPE-POOL이란 SAP에서 제공하는 각종 타입 및 Constants가 선언되어 있는 그룹이다.

*필드카탈로그
DATA : fieldcat TYPE slis_t_fieldcat_alv,
fieldcat_ln LIKE LINE OF fieldcat. "워크에어리아 생성 , 헤드만 있다.
*소트카탈로그
DATA : sortcat TYPE slis_t_sortinfo_alv,
sortcat_ln LIKE LINE OF sortcat.
*이벤트카탈로그
DATA : eventcat TYPE slis_t_event,
eventcat_ln LIKE LINE OF eventcat.
*write 카탈로그
DATA : pgm LIKE sy-repid.
pgm = sy-repid.
*디스플레이
DATA : ls_layout TYPE slis_layout_alv.


기존의 데이터베이스 테이블의 데이터를 가져오는 소스코드에서 추가하면 된다. ALV로 만들꺼..
주석달아서 필드, 소트, 이벤트, write 카탈로그 데이터를 선언한다.
slis_t_fieldcat_alv를 더블클릭하면 slis type-pool로 들어가는데.. 그곳에 type이 모두 정의되어 있다.. 백문이불여일견

PERFORM build_sortcat.
PERFORM build_eventcat.

fieldcat과 wirte는 그냥 프로그램에 써주었고 나머지는 인클루드시켜 perform으로 가져왔다.

DATA : BEGIN OF itab OCCURS 0,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
fldate LIKE sflight-fldate,
cityfrom LIKE spfli-cityfrom,
cityto LIKE spfli-cityto,
planetype LIKE sflight-planetype,
END OF itab.

SELECT a~carrid a~connid a~fldate a~planetype b~cityfrom
INTO CORRESPONDING FIELDS OF TABLE itab
FROM sflight AS a
INNER JOIN spfli AS b ON a~carrid EQ b~carrid
WHERE a~carrid EQ 'LH'
AND a~planetype EQ 'A319'.

*LOOP AT itab.
* WRITE :/ itab-carrid,
* itab-connid,
* itab-fldate,
* itab-cityfrom,
* itab-cityto,
* itab-planetype.
*ENDLOOP.

*build field catalog

DATA : col_pos TYPE i.
*CLEAR : itab, itab[].


ADD 1 TO col_pos. "필드포지션 COL_POS에 + 1 1번
fieldcat_ln-fieldname = 'CARRID'. "반드시대문자
fieldcat_ln-reptext_ddic = '항공사번호'.
fieldcat_ln-col_pos = col_pos."조회하면 첫번채
fieldcat_ln-key = 'x'. "결과화면에서 화살표를 클릭해도 요 필드는 고정되어 있다.
fieldcat_ln-emphasize = 'C500'. "필드에 색깔주기
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos. " COL_POS = COL_POS + 1
fieldcat_ln-fieldname = 'CONNID'.
fieldcat_ln-reptext_ddic = '항공기번호'.
fieldcat_ln-col_pos = col_pos."조회하면 두번째필드
fieldcat_ln-key = 'x'.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'FLDATE'.
fieldcat_ln-reptext_ddic = '비행날짜'.
fieldcat_ln-col_pos = col_pos."조회하면 세번채
fieldcat_ln-key = ''.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'PLANETYPE'.
fieldcat_ln-reptext_ddic = '항공사'.
fieldcat_ln-col_pos = col_pos."조회하면 네번채
fieldcat_ln-key = ''.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'CITYFROM'.
fieldcat_ln-reptext_ddic = '도착도시'.
fieldcat_ln-col_pos = col_pos."조회하면 다번번
fieldcat_ln-key = 'X'.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.


필드카테고리부분의 작성이다. col_pos를 이용해 1씩증가하게하여 각 필드의 위치를 잡는다.
속성들은 파악하지 못했다..
APPEND를 꼭 해주어야 한다. fieldcat_ln의 헤더라인에 있는 데이터를 fieldcat이라는 인터널테이블로 반드시 넣어주어야 한다.

*Build Layout
ls_layout-colwidth_optimize = 'X'.
무슨말인지 모르겠다.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_callback_program = pgm
I_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = fieldcat
it_sort = sortcat
it_events = eventcat
I_SAVE = 'A'
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.


REUSE_ALV_GRID_DISPLAY를 call하면 익스포팅과 임포팅부분에 많은 변수들이 세팅되는데 필요한것만 골라 쓰면된다.

기본적인것들 ls_layout, fieldcat, sortcat, eventcat 등 그리고 테이블은 itab..


출처 :http://anyframe.tistory.com/83

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

카테고리

  • Inforamtion Technology (281)
    • DESIGN PATTERN (33)
      • 실용주의 디자인패턴 (29)
    • SOFTWARE ENGINEERING (21)
      • Art Of Readable Code (12)
      • Object Oriented Programming (6)
      • TDD (2)
    • FRAMEWORK (22)
      • Spring.net (2)
      • LightSwitch (20)
    • PROGRAMING (58)
      • C# (20)
      • .NET (6)
      • HTML5 (7)
      • ASP.NET (9)
      • SILVERLIGHT (7)
      • Ruby On Rails (6)
    • PROJECT MANAGEMENT (10)
      • SW Version Management (7)
      • Schedulring Management (1)
    • BOOKS (18)
    • MOBILE APP (1)
      • SENCHA TOUCH (1)
    • SECURITY (5)
    • MES (1)
    • B2B (14)
      • WEBMETHODS (4)
    • ERP (53)
      • SAP/R/3 (51)
    • ABOUT TOOLS (2)
    • FUNDAMENT CONCEPT (21)
    • SOA BPM (22)
    • PORTFOLIO (0)

태그목록

  • 프로그래밍
  • 동시성
  • 병렬

최근에 받은 트랙백

글 보관함

링크

파란실버라이트

블로그 이미지

To remember the time when I started learning Silver Light!

LATEST FROM OUR BLOG

RSS 구독하기

LATEST COMMENTS

BLOG VISITORS

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바