1 / 60

SAP BC400

SAP BC400. 테크윈 IS 팀 서기준. 목 차. 1. System Architecture, Syntax ……………………… 3 2. 화면 설명 ………………………………………………………………………… 10 3. 소스 설명 ………………………………………………………………………… 14 4. Full Source Code ………………………………………………… 48 5. Subroutine ………………………………………………………………… 51

mei
Télécharger la présentation

SAP BC400

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SAP BC400 테크윈 IS팀 서기준

  2. 목 차 1. System Architecture, Syntax ……………………… 3 2. 화면 설명 ………………………………………………………………………… 10 3. 소스 설명 ………………………………………………………………………… 14 4. Full Source Code ………………………………………………… 48 5. Subroutine ………………………………………………………………… 51 6. TABLE JOIN ………………………………………………………………… 57

  3. 1. System Architecture, Syntax

  4. System Architecture • 3 Tier 구조 • Presentation Layer • Application Layer • DB Layer • MS • Dispatcher 작업 분배 • Dispatcher • 작업을 WP에 분배 • Work Process • 실제 작업

  5. ABAP Program 1.조회화면 2.F8(실행) 6.Write문 3.WP에서 프로그램 실행 5.Itab에 저장 4. DB 관련 명령어

  6. Interaction Between Server Layers Load-of-program. Initialization. START-OF-SELECTION. END-OF-SELECTION. Select, Insert 등 SQL문 Write문 등 출력문

  7. Activate • Saved Program • Saved 후 Activate하지 않으면 마지막으로 Save 된 것이 아니라 마지막으로 Activate 된 것이 Execute된다. • 실행 전 Activate 필수 • Activate • Save • Check • Activate • Activate를 자주하라.

  8. General ABAP Syntax I • Data선언 • SELECT ~ ENDSELECT • DB에서 조건에 맞는 DATA를 WA_SCARR에 가져옴. • NEW-LINE. (줄바꿈) • wa_scarr-carrid 외 2개 화면 출력. • . (마침표)

  9. General ABAP Syntax II Line 처음 ‘*’ line 주석문 ‘ “ ’ 더블 쿼테이션 다음에 주석문 ‘ : ’, ‘ , ’ 콜론 다음에 콤마가 나오면 앞에 나왔던 명령 계속 실행.(계속 WRITE)

  10. 2. 화면 설명

  11. 조회 화면

  12. 실행 화면

  13. Double Click

  14. 3. 소스 설명 • Data 선언, 15 • Local & Global Data Type 16 • Dictionary 17 • Structure, Work area & Internal Table 19 • Assignments 24 • Event 순서 26 > 조회 화면 > LOAD-OF-PROGRAM. 28 > INITIALIZATION. 28 > AT SELECTION-SCREEN. 29 > 처리 로직 > START-OF-SELECTION. 30 > DB ACCESS 31 > SYSTEM 변수 38 > 화면 출력 > END-OF-SELECTION. 39 > 더블 클릭 > AT SELECTION-SCREEN. 41 >제어문, 반복문 42 > DETAIL LIST 44 > HIDE AREA 46 Source 코드 설명

  15. Data 선언 DATA : gv_char(10) TYPE c, “Character length 10 gv_numc(4) TYPE n, “Numerical Char length 4 gv_pack(5) TYPE p DECIMALS2, “ Length 는 5바이트 소수점 2자리(length 5 아님) gv_date TYPE d, “Date (ex)2006.08.27 gv_time TYPE t, “Time (ex)12:30:26 gv_int TYPE i. “정수형 등이 있다.

  16. Local & Global Data Type * wa_scarr2 : Local Data Type * 프로그램 내에서 선언하면 Local Data Type DATA : BEGINOF wa_scarr2, carrid TYPE scarr-carrid, carrname TYPE scarr-carrname,ENDOF wa_scarr2. * scarr : Global Data Type * ABAP Dictionary에 정의되어 있으면 Global Data type DATA wa_scarr TYPE scarr.DATA it_scarr LIKETABLEOF wa_scarr.

  17. Using Dictionary Elements to Define Data Objects Within the Program • Data type 선언 • Dictionary 이용 • DATA name TYPE dictionary. • field : 하나의 값 • Work area : 여러 개의 값을 Set으로 저장. • Internal Table : Work area의 set DATA it_spfli TYPE spfli_tab Table Type

  18. Access to Structure Components Work Area – Fieldname 하나의 Data처럼 사용 가능

  19. Work Area, Internal Table 선언 * TYPE : ABAP Dictionary에 있는 것 사용. * Like : Program내에서 선언 된 것을 재사용. * Dictionary를 TYPE으로 가능하지만 권장 안함. DATA wa_scarr TYPE scarr. “Work areaDATA it_scarr LIKETABLEOF wa_scarr. “Itab DATA it_scarr TYPE TABLE OF scarr. “Itab DATA wa_scarr LIKE LINE OF it_scarr. “Work area DATA wa_scarr TYPE s_carr_id. “Data Element,W.A. DATA it_scarr TYPETABLEOF scarr. “Itab DATA it_scarr TYPE scarr_tab. “Table Type,Itab DATA wa_scarr LIKELINEOF it_scarr. “Work area

  20. Internal Table with Header line • DATA : BEGINOF it_scarr OCCURS0, carrid TYPE scarr-carrid, carrname TYPE scarr-carrname, currcode TYPE scarr-currcode, url TYPE scarr-url,ENDOF it_scarr.DATA it_scarr2 TYPETABLEOF scarrWITHHEADERLINE.

  21. Internal Table with Header line * 참고 • 일반적으로 1번 사용 • SAP에서 3번 권장. • 1번 = 2번 = 3번 • 1번의 LOOP At itab 다음에 “INTO itab.” 생략 1. LOOPAT itab. itab-carrid = itab-carrname.MODIFY itab.CLEAR itab.ENDLOOP. 2. LOOPAT itab INTO itab. itab-carrid = itab-carrname.MODIFY itab.CLEAR itab.ENDLOOP.3. LOOPAT itab INTO wa. wa-carrid = wa-carrname.MODIFY wa.CLEAR wa.ENDLOOP.

  22. Internal Tables with and Without Header Lines • 헤더라인 없는 Internal Table 사용 권장 Why? Class에서 헤더라인 있는 Internal Table을 사용할 수 없다. 그래서 헤더라인 없는 Internal Table + Work Area를 사용 권장

  23. Internal Table with Header line 1. 1번 라인을 헤더라인에 올려 데이터를 수정 2. MODIFY 하면 바디가 수정된다. 3. 2번 라인부터 마지막 라인까지 순차적으로 헤더라인에 올려 수정 후 MODIFY 하면 바디 수정 2 1

  24. Value Assignments carrid1 = c_qf Counter 1증가 Field를 Initial Value로 Clear

  25. Copying Structure Components with the Same Name Corresponding은 같은 Field name을 찾아 자동으로 Data의 값을 넣어 줌.

  26. Event 순서 • LOAD-OF-PROGRAM. & INITIALIZATION. Selection Screen 전 PARAMETERS & SELECT-OPTIONS의 초기 값을 넣어 준다. • AT SELECTION-SCREEN Selection Screen 값 또는 권한 체크 • START-OF-SELECTION. Select 등의 구문 • END-OF-SELECTION. 일반적으로 출력문. • AT SELECTION-SCREEN 더블 클릭 이벤트 더블 클릭 이벤트만 빼고 나머지는 위에서 아래의 순서로

  27. 조회 화면 PARAMETERS : pa_scarr TYPE s_carr_id. SELECT-OPTIONS : so_scarr FOR wa_scarr-carrid. Select-options에서 선언 한 so_scarr은 sign, option, low, high 값을 가지는 헤더라인을 가지는Internal table.

  28. 조회화면 실행 전 LOAD-OF-PROGRAM. so_scarr-sign = 'I'. so_scarr-option = 'BT'. so_scarr-low = 'AA'. so_scarr-high = 'AZ'.APPEND so_scarr. INITIALIZATION. pa_scarr = 'AB'. • 프로그램 Execute 시키면 조회화면 나오기 전 실행.

  29. 조회 조건 체크 • AT SELECTION-SCREEN.IF pa_scarr = 'AA'.MESSAGE'Another value input'TYPE'E'.ENDIF. • 위의 값이 ‘AA’이여서 ERROR Message

  30. Dialog Messages (예)MESSAGE i001(zm19) WITH es_row e_column. • ZM19부분을 더블 클릭하면 message_class로 들어갑니다. • 다음과 같이 입력하면 ‘&’ 부분에 es_row, e_column이 순서대로 들어갑니다. 최대 4개까지 가능합니다. • ‘&&’를 입력하면 화면에 ‘&’으로 출력됩니다.

  31. 프로그램 처리 부분 START-OF-SELECTION.SELECT *FROM scarrINTO CORRESPONDING FIELDSOFTABLE it_scarrWHERE carrid IN so_scarr.IF sy-subrc <> '0'.STOP.ENDIF. • Scarr table에서 where 조건을 만족하는 데이터를 select하여 it_scarr에 넣는다. • 조건을 만족하는 Data가 있으면 sy-subrc =‘0’ 없으면 sy-subrc = ‘4’

  32. Database Access (Architecture) • Open SQL • DB interface를 통해 Native SQL로 변경 • 검색 결과 Table buffer에 저장 • SELECT … • Native SQL • DB에 직접 Access DBMS에 Dependent • EXEC. ~ ENDEXEC.

  33. Database Read Access

  34. Reading Single Records • SELECT SINGLE… • WHERE 조건에 KEY값을 잘 설정해서 DATA 건수가 하나만 나올 수 있도록 해야 함. • DATA 건수가 하나 이상일 경우 제일 처음 만나는 것을 가져옴

  35. Suitable Target Structure for the Field List • SELECT SINGLE… • SELECT SINGLE 필드1, 필드2, 필드3, 필드4, 필드5 … • 필드1, 필드2, 필드3, 필드4, 필드5 … 순으로 Work Area에 들어간다.

  36. Fields in the Target Structure that have the Same Names as those in the Field List • SELECT SINGLE… INTO CORRESPONDING FIELDS OF … • 필드 name이 같은 것을 자동으로 찾아 Work area에 들어간다.

  37. Reading several rows using a loop • SELECT … ENDSELECT • DB Interface에서 순차적으로 Data를 가져오기 때문에 속도가 느리다. • 그렇기 때문에, 가능하면 사용하지 말자.

  38. Reading Several Rows Using an Array Fetch • SELECT … INTO TABLE ITAB … • DB Interface에서 Table 전체를 가져오기 때문에 속도가 빠르다. • … Into corresponding fields of table itab … 을 하면 fields name을 자동으로 찾아서 입력해 주기 때문에 에러 제거에 좋다.

  39. System 변수 • sy-subrc • Select문 Data 있으면 0, 없으면 4 • 그 외 true = 0, false <> 0 • sy-index • loop counter • DO. ~ ENDDO. DO n TIMES. ~ ENDDO. WHILE. ~ ENDWHILE. • sy-tabix • loop counter, LOOP AT itab. ENDLOOP. • sy-lsind • 화면의 깊이. BACK 가능한 화면. • sy-ucomm • SCREEN 화면에서 사용자 입력한 이벤트 명령어 • sy-langu • 사용 언어 • sy-datum • 현재 시간

  40. 화면 출력 • END-OF-SELECTION.LOOPAT it_scarr INTO wa_scarr.WRITE :/ wa_scarr-carrid, wa_scarr-carrname, wa_scarr-currcode.HIDE : wa_scarr-carrid, wa_scarr-carrname.CLEAR wa_scarr.ENDLOOP. • START-OF-SELECTION에서 가져온 값을 화면에 출력. it_scarr은 internal table이라서 data가 여러건 있다. it_scarr 순차적으로 wa_scarr에 넣어서 화면에 출력한다. HIDE는 더블 클릭하여 AT LINE-SELECTION.으로 값을 넘기기 위해 사용된다.

  41. CLEAR, REFRESH, FREE • CLEAR ITAB. 헤더만 지운다. • CLEAR ITAB[]. REFRESH ITAB. 바디를 지운다. • FREE ITAB. 할당 된 메모리를 지운다. 그런데 디버그 모드에서 ITAB이 사라지지 않는다. • CLEAR : 변수1, 변수2, 변수3. • Sort it_sflight by carrid. carrid로 it_sflight정렬

  42. 더블 클릭 Event • ATLINE-SELECTION.IF sy-lsind = '1'.SELECT *FROM sflightINTO CORRESPONDING FIELDSOFTABLE it_sflightWHERE carrid = wa_scarr-carrid.IF sy-subrc = '0'.WRITE:/ 'New Page Start'.ELSE.WRITE:/ 'No Data in Database'.ENDIF.LOOPAT it_sflight INTO wa_sflight.WRITE :/ wa_sflight-carrid, wa_sflight-connid, wa_sflight-fldate, wa_sflight-price.CLEAR wa_sflight.ENDLOOP.ENDIF.

  43. Conditional Branches(제어문)

  44. Loops(반복문) • Loop Counter • sy-index • DO. ~ ENDDO. • DO n TIMS. ~ ENDDO. • WHILE. ~ ENDWHILE. • sy-tabix • LOOP AT <ITAB>. ~ ENDLOOP.

  45. Generating a Details List • AT LINE-SELECTION. • Double click Event

  46. Generating Several Details Lists • sy-lsind • 1이면 더블 클릭 1번 한 화면 • 2이면 위처럼 더블 클릭 1번한 화면에서 다시 더블클릭 1: write 7: BACK 2: 더블클릭 4: 더블클릭 3: write 6: BACK 5: write

  47. Buffering Row-Specific Data in the Hide Area • Hide Area • Hide 를 하면 Data Area에 Line과 Field name과 Value를 저장하고 있다.

  48. Data Flow for the Row Selection • Hide Area • Double Click하여 At line-selection.으로 이동하면 Hide 값을 가지고 와서 사용할 수 있다.

  49. 4. Full Source Code

  50. Full Source 1/2 • REPORT zabap19_11.* Data typeDATA : gv_char(10) TYPEc, "Character Length 10 gv_numc(4) TYPE n, "Numerical character Length 4 gv_pack(5) TYPE p DECIMALS2, "Packed Number XXX.XX gv_date TYPE d, "Date 2006.08.27 gv_time TYPE t, "Time 12:16:30 gv_int TYPEi. "Integer* Local Data TypeDATA : BEGINOF wa_scarr2, carrid TYPE scarr-carrid, carrname TYPE scarr-carrname,ENDOF wa_scarr2.* scarr, sflight : Global Data TypeDATA wa_scarr TYPE scarr.DATA it_scarr LIKETABLEOF wa_scarr.DATA wa_sflight TYPE sflight.DATA it_sflight LIKETABLEOF wa_sflight.PARAMETERS : pa_scarr TYPE s_carr_id.SELECT-OPTIONS : so_scarr FOR wa_scarr-carrid.LOAD-OF-PROGRAM. so_scarr-sign = 'I'. so_scarr-option = 'BT'. so_scarr-low = 'AA'. so_scarr-high = 'AZ'.APPEND so_scarr.

More Related