Business Server Pages April 2003 SDS www sds
대외비 선진경영관리 시스템 구축 프로젝트 Business Server Pages 개요 April, 2003 삼성SDS주식회사 www. sds. samsung. co. kr All rights reserved by Samsung SDS co. , ltd.
Web Application Server Architecture (620) • User Access – SAP GUI – Web Browser Internet Communication Manager • User Interface Programming – Dynpro – BSP (Business Server Pages) – JSP (Java Server Pages) Web Dynpro JSP BSP Proxies Presentation Layer Business Layer J 2 EE • Programming Language – ABAP – Java ABAP Integration Layer Web Application Server 1
Communication Channel Mail System COM+ XML based Services SMTP DCOM Connector HTTP/XML SAP Web AS SQL 2 DB System RFC Java Connector SOAP R/3 Application Java SOAP Client / Server 2
Web Application Builder Toolset • • • BSP Editor – T_CODE : SE 80 BSP에 대한 미리보기, 기본적인 Scripting, Syntax Check 등 실 제 구현을 하는 툴이다. ABAP Debugger – BSP Layout이나 Event-Handler 에 사용된 Code에 대해서 Debugging을 걸 수 있다. Tag Library – HTML, WML, XHTML과 같은 Mark-up Language 에서 사용하 는 Tag 에 대해서 Drag-and. Drop을 통해 Tag 및 Attribute도 사용할 수 있다. MIME Repository – BSP Application에서 사용될 임 의의 파일을 포함한다 Theme Editor – MIME Object의 집합 3
Business Server pages (BSP) • • ABAP, Javascript 를 이용한 serverside Script-Code 로 구성된다. 미리 정의된 Event에 대해서 Handling 할 수 있다. Layout Page Attributes Event Handler On. Create Data Tables Parameter … On. Request On. Initialization Scripting On. Inputprocessing Type Definition On. Manipulation Preview 5 On. Destroy
Layout 과 On. Initialization Business Server Page Attribute Typ. FLIGHTS TYPE Ass. Type FLIGHTTAB Page Attributes select * from sflight into table flights. <%@page language="abap"%> <html> <body> <table border=1> <tr> <th>Carrier</th> <th>Connection</th> <th>Date</th> </tr> <% data: wa like line of flights. loop at flights into wa. %> <tr> <td> <%= wa-carrid %> </td> <%= wa-connid %> </td> <%= wa-fldate %> </td> </tr> <% endloop. %> </table> </body> </html> 6 On. Initialization Layout HTML과 Server-Side Script가 혼용 되어 있는곳. On. Initializati on과 Layout 은 서로 Page Attribute를 공유한다. Layout에서 사용될 Data 를 정리하고 쌓아놓는 부 분
Event Handler Event는 Page의 Request 가 Processing 되는 동안 수 행된다. On. Initialization Page가 뿌려지기 전에 (Layout 이전에) 수행됨. On. Input. Processing 사용자의 Input에 의해 데이 터를 Server로 넘겨줄때 주로 사용. (event_id 사용) On. Input. Processing 페이지가 처음으로 뿌려질때 사용. 7
Page Attributes 모든 페이지 Event와 Layout Section에서 사용 가능한 변수 예) Table에서 data를 끌어와 Layout에서 뿌려주고 싶을 경우 Internal Table을 Page Attribute로 사용할 수 있음. 8
Type Definitions 모든 페이지 Event와 Layout Section에서 사용 가능한 Type 선언 예) Table에서 data를 끌어와 Layout에서 뿌려주고 싶을 경우 Internal Table및 Structure를 선언하여 사용할 수 있음. 9
MIME Repository Application 내에서 사용할 수 있는 각종 Image, Stylesheet, Javascript 등 MIME Object 들을 넣어 놓는 곳 (MIME: Multipurpose Internet Mail Extensions) 10
BSP Directives (지시어) • • Page Directive <%@ page language=("ABAP" | "JAVASCRIPT") %> • • Inline Code <% inline code %> • • Comments <%-- code comments or text --%> • • Include directive <%@ include file="relative URL"%> • • Transferring variables Value transfer: object = <%=varname%> 11
Flow with Simple BSP Pages (On. Inputprocessing) Second. Page. htm First. Page. htm Initialization User Runtime enters User enters That GET adetermines URL data and clicks requests a BSP App a button new page and Page HTTPPOST GET select * from. . . call function. . . Data retrieval depending on input parameters BSP Layout rendering of the page rendering Runtime of the page REDIRECT Response Input Processing event handling retrieval of user input navigation to next page 12 <HTML><BODY> <% loop at it %> <tr> <td><%=it-a%></td> <td><%=it-b%></td> </tr> <% endloop. %> <form> <input type=submit value=“On. Hugo“> </form> Case event_id. When ‘submit‘. . When ‚‘exit‘. Navigation->. . . Endcase.
State in Web Applications • Classical transaction – 정의된 시작/종료 지점 간 Session이 존 재한다. – 순서에 따라 여러 개의 Screen을 띄울 수 있다. – 사용자 별 Rollarea가 존재한다. – database locks – 서버 Session 개념을 갖는다. screen 1 13 screen 3 xyz. htm • Typical Web application – 다수의 유저 scenario – stateless connection – Session 개념이 없다 – 정의된 Transaction이 없다 – 다른 페이지로의 이동이 가능하다. screen 2 abc. htm <a href=“. . . > </a> <form. . . > <input type=text name=“stat e“. . . > </form> idx. htm <form. . . > <input type=text name=“stat e“. . . > </form> aaa. htm <form. . . > <input type=text name=“stat e“. . . > </form>
Stateless / Stateful BSP Applications • • • BSP Runt. first. htm Initial. BSP Runt. Stateful Application Class Instance는 처 음 Session에 대한 요청에 의해 생 성되어 Server 와 Session을 지속 시킨다. BSP Application 내의 모든 페이지 에서 동일한 instance는 가용하다. 모든 Attributes(임의의 objetcs) 전체 session 동안 지속된다. Application Class는 Session Data 에 대한 Container 역할을 한다. Page와 Page Attribute에 대한 14 Lifetime은 추가적으로 지정 가능하 Layout Layout first. htm BSP Runt. Input Pr. secd. htm Initial. BSP Runt. Layout lifetime of page attributes server forgets everything! Statful Lifetime Initial. Stateless Lifetime • • first. htm Stateles L. • Stateless HTTP Request Response Cycle 동안에 Session Life time을 갖는다. Layout과 Input processing 사이 에서 Server Context는 사라진다. No database locks Session data 는 browser cookies, hidden form fields, database 를 통한 방법으로 처리해 야한다. Stateless Lifetime • •
답 : Event Handler - On. Initialization 16
답 : Page Attributes Table Type 형 Page Attribute를 설정한다. Structure 형 Page Attribute를 설정한다. 17
답 : Layout <%@page language="abap"%> <html> <head> <link rel="stylesheet" href=". . /sap/public/bc/bsp/styles/sapbsp. css"> <title> default. htm </title> </head> <body class="bsp. Body 1"> 총 USER 및 AUTHOIZATION 현황 <TABLE border="2"> <TR bgcolor="silver"> <TD> User Name </TD> <TD> Modi-date </TD> <TD> Modi-time </TD> <TD> Last changed by </TD> <TD> Number of profiles or authorizations </TD> <TD> User profiles </TD> </TR> <% LOOP AT IT_USR 04 INTO WA_USR 04. %> <TR> <TD> <%= WA_USR 04 -BNAME %> </TD> <%= WA_USR 04 -MODDA %> </TD> <%= WA_USR 04 -MODTI %> </TD> <%= WA_USR 04 -MODBE %> </TD> <%= WA_USR 04 -NRPRO %> </TD> <%= WA_USR 04 -PROFS %> </TD> </TR> <% ENDLOOP. %> </TABLE> </body> </html> 18
답 : Event Handler - On. Input. Processing 21
답 : Page Attributes Table Type 형 Page Attribute를 설정한다. Structure 형 Page Attribute를 설정한다. 22
답 : Layout <%@page language="abap"%> <html><head> <link rel="stylesheet" href=". . /sap/public/bc/bsp/styles/sapbsp. css"> <title> default. htm </title> </head> <body class="bsp. Body 1"> <form name="form 1" method="POST"> <input type="text" name="USER" > <input type="hidden" name="On. Input. Processing(get)"> <input type="submit" value="사용자검색"> </form> <TABLE border="2"> <TR bgcolor="silver"> <TD> User Name </TD> <TD> Terminal ID </TD> <TD> Server </TD> <TD> Terminal </TD> <TD> Language </TD> <TD> Last logon date </TD> <TD> Last logon time </TD> </TR><TR> <% LOOP AT IT_USR 41 INTO WA_USR 41_2. %> <TD> <%= WA_USR 41_2 -BNAME %> </TD> <%= WA_USR 41_2 -TERMID %> </TD> <%= WA_USR 41_2 -SERVER %> </TD> <%= WA_USR 41_2 -TERMINAL %> </TD> <%= WA_USR 41_2 -SPRACHE %> </TD> <%= WA_USR 41_2 -LOGON_DATE %> </TD> <%= WA_USR 41_2 -LOGON_TIME %> </TD> </TR> <% ENDLOOP. %> </TABLE> </body></html> 23
Thank You ! jhyang@dfocus. net 02 -6000 -2900 25
- Slides: 26