(p.346)
(BAPI는 OOP형식 데이터와 기능이 함께 있는 것 )
GetList, GetDetail, Create & Change & Delete & Cancel, AddOtem & RemoveItem
대부분 패턴으로 찾아서 call 하면 unit test, function test
클래스 ( Object + instance ) -> 속성과 각각 개체를 가지는 것
puclic / Proteceted / Private
Instance는 객체가 만들어져야 사용할 수 있지만 static 은 객체가 만들어지지 않아도 클래스 상태에서 사용할 수 있음.
Description에 method를 무한히 넣을 수 있지만 class가 추상화를 기본으로 하기 때문에 사칙연산을 더하기, 빼기, 나누기 등은 넣을 수 있지만 갑자기 write를 넣는 등의 완전 다른 method를 쓸 수는 없음.
class가 조금 더 복잡한 형태
method하나에 펑션모듈이 가지고 있는기능과 데이터를 넣을 수 있고 이벤트 구현이 가능하다는 것.
이벤트를 기본으로 프로그래밍을 한다는 것은 c,파이선, 자바는 절차적, 객체 지향으로 가서 이벤트로 한다는 것은 다른 이야기.
아밥은 레포트라는 프로그램 자체가 내부적으로 로드오브 프로그램., 이니셜라이그래이션, 에스셀렉션 스크린 아웃풋, 사용자 입력을 처리하는 뎃 셀렉션 스크린 이벤트, 스타트오브 셀렉션 이벤트 등으로 프로그램이 동작한다.
-> 이벤트 처리 : 절차적이 아닌 사용자의 인풋에(트리거)에 의해 무언가 트리거되어서 움직이는 것 (실제 운영되는 프로그램에 가까움)
exception 부분에서 ㅏ잡아주는것
Try와 catch 사이에 에러가 발생할 수 있는 원인이 들어가는 것.
각각의 캐치문에서 해당 문구를 받아 내부 인스턴스를 만들어서 처리해주는 것.
like -> 이미 선언된 데이터가 있다면 like로 선언할 수 있음.
type Ref -> 객체라고 하는 것은 이름이 없음. 예를들어 클래스 이름은 있지만 객체는 이름이 없음. 걔를 어떻게 가리키는지 주소(Ref)로 가리키기때문에 항상 tye ref로 써야함
associated type 더블클릭 시
소스코드를 보고 싶다면 method 해당 코드 더블클릭으로 포워드
모듈화의 핵심은 fomal type과 actual을 구분하는 것
돌아가고 싶으면 methods를 클릭
sigature 버튼 클릭하면 아래 파라미터를 볼 수 있음
display
소스코드에서 test enviroment (체크/액티브/ 3번버튼)
해당 창에서 excute로 test 가능
다음 자기 패키지 안에 넣고 p.365 Try 부터 endTry까지 입력
(원래는 패턴으로 불러올 수 있지만 다음에 하고 이번엔 직접 입력하기)
사용하지 않는 부분은 언코멘트창으로 만들기
(삭제해도 상관은 없음)
클래스를 만들고 ref1, ref2로 클래스를 가르키는 참조변수를 만드는 것
클래스를 참조하는 변수를 만드는 것 화살표 하나가 메모리 내부적으로 . 클래스는 1개지만 ABAP프로그램에서 로드되는 것은 인스턴스 2개
소스코드를 더블클릭해서 아래로 만들기
signature 를 보며 소스코드 집어넣기. 빌더에서 테스트.
(p.374)
모두 activation
(p.376)
ZCL_01_Compute 만들기
메서드에서 get_percentage 누른 후 static / public / description짧게 작성하기
파라미터로 돌아가서 아래와 같이 입력해주기
가운데 위 소스코드를 눌러서
active 로 활성화해주기
글로벌 클래스 1을 복사해서 2로 만들어주고
콜펑션 모듈을 코멘트 모드로 해주고 패턴을 클릭
아밥 오브젝트 패턴을 클릭 후 엔터
만들어 둔 클래스 인터페이스와 메서드를 입력 후 넣어주고
코멘트 된 부분을 풀고 결과값을 입력해주면 완성
local은 아밥에서 코딩창을 열고 class definition 후 클래스 implementation으로 불러와 쓰는 것 ( 선언부와 구현부를 나눠서 디자인 해야 함)
calss-methods 는 static method,end method필요없음 / method 는 instance , end method 필요
public먼저 정의 후 구현 -> 소스코드에서 열었던 것을 implementation(구현)에서 적어놓고 fomal parametal에서 구현. (시스템에서 하냐 로컬에서 하냐의 차이로 글로벌임을 알 수 있음)
서브루틴으로 볼 수 있음. (perform a / form-end form.)
complex한 data를 선언하겠다. 글로벌 타입을 활용한 structure을 만드는 것
se11 아밥 딕셔너리
데이터 엘리먼트들이 모여있는것을 스트럭처 타입이라고 하는데 이미 딕셔너리에 bc400이라는 스탠다드가 있음.아밥 딕셔너리를 이용해 데이터 타입을 이용한 아밥딕셔너리 정의
se11 (아밥딕셔너리)
데이터 타입 클릭 후
디스플레이 클릭
6개의 필드를 가지고 있다는 것을 알 수 있음
각각의 필드에 element (component type) 를 알 수 있음
-> hana3 에서는 스탠다드를 들고 올 때 사용하는 것만을 가지고 와야하기 때문에
셀프 디파인드(필요로 하는) 방법을 알고 있어야 함.
types : Begin of 변수명으로 시작해서 ,,정의하고 End of 변수명.
-(하이픈)을 통해 원하는 특정 필드에 접근.
또는 데이터 타입이 맞지 않아 생기는 오류이기 때문에 데이터 타입을 맞춰준다
(p.281)
레포트가 아닌 디버깅모드에서도 assignment에 체크하고 continue로 체크하면 내려온다는 것은 디버거에서도 스탑포인트를 찍을 수 있다.
Gv-count에 커서를 두고 와치포인트를 둔다는 것은
한 스텝들어가거나 서브루틴을 뛰어넘거나 빠져나오거나 혹은 브레이크 포인트까지 내려가는 기능밖에 없는데 와치포인트는 예를들어 gv_count값이 sy_index값에 따라 값이 빼기가 되다가 내려가면 값들이 아우터와 이너의 값이 커졌다 작아졌다 변하는데 스텝이 아닌 어떤 변수의 변화가 있을 때마다 관찰하고 싶을 때 와치포인트 (감시) 프로그램이 돌아가다가 변화가 있을 때 ( 순차적방법으로 모니터링 할 수 없을 때 )
빈공간에 커서를 두고 와치포인트를 쳤을 때
와치포인트에서 내가 추가한 와치포인트를 볼 수 있고 삭제가능
와치포인트를 건 값을 variable 에 넣고 continue를 누르면 값이 변화하는 것을 볼 수 있음.
클래식 아밥 디버거에서는 최대 10개 걸 수 있음.
do 가 두번. 이너와 아우터를 비교해보기가 task 3번문제
반복문에 exit를 만나면 빠져나가고 2개면 다시 걸려서 반복되는 것을 해보라고 하는 것
task 4
값이 같지 않으면 리턴해서 프로그램에서 빠져나가는 것.
return을 만나면 프로그램 종료. -> 바꿔보기
수정하고 5로 같게
continue 하면
문구가 출력되는걸 볼 수 있음.
값이 제대로 안들어간다면 디버깅 가능.. 팬슬로 값을 직접고치면서 가능
p.401
프로그램 생성
se11에서 주어진 BC400_s_flight 로 검색해서 component값을 타입으로 선언해줌
데이터 타입을 변수 선언
지역변수로 선언한 타입을 다시 데이터로 선언 해준다.
clss / interface 에서 메서드 두개를 드래그앤드랍해주기
try - end try 구문이 2개라서 하나로 합쳐줌.
(p.406)
라인 타입 : 스트럭처 모양이 어떻게 되어있는가. 필드가 몇 개 있는가
프라이머리 키 :(세컨더리도 있다는 말) 테이블에서 빨리 찾아야하는 키 값을 가지고 있다는 것
테이블 카인드 : 테이블의 종류 3가지, Standard(표준), sorted, hashed type (키와 value를 함께 가지고 있는 테이블)
key -> intner table에 데이터가 쌓일 때 sorting 알고리즘으로 쌓이게 됨.
예를 들어 콴타 에어라인을 찾고 싶을 때 q값을 어떻게 찾을지 .
대부분 binary (이진법) tree sortiing 로 검색 (오름차순으로 정렬되어 있어야 함). 가운데 값보다 크냐 작냐에 따라서 헥사코드를 따져서 반절을 버리고 반절을 버리는 등의 속도를 증가시킴
hashed는 sorting 을 할 수 없음. 키값을 넣어야 함.
(p.409)
table 타입은 3가지. line-> structure를 만들어놨으면 쉽게 만들 수 있음. 라인타입이 없어도 필드들로 억지로 만들 수 있음.
SE11 딕셔너리에서
인터널은 DATA TYPE에서 검색 display 눌러줌
bc400 더블클릭 포워딩
standard type table임을 알 수 있음
키값 3개가 셋팅되어있음을 알 수 있음
세컨더리는 대부분 잘 안함.
라인타입으로 만든 뒤 데이터로 정의. 안쓰면 스탠다드.
시험예제 ) 다음 중 인터널 테이블을 정의하는방법 중 잘못된 것을 고르시오
like line of 를 치면 테이블을 가지고 structure를 만들 수 있음.
필드안에 들어가있는걸 볼 수 있음.
패턴 넣기-아밥오브젝트
p.420
소팅알고리즘 _ 소팅을 하는 중에 스테이블 소팅의 경우 이미 소팅되어있는 것들은 건들이지 않고 소팅.
자동으로 생성되는 경우 실제 코딩에서 거의 쓰지 않음 (readability가 너무 떨어짐)
nested object( structure안에 table이 들어가는 모양) 에서는 헤더라인 테이블이 허용되지 않기 때문에 사용하지 않음
p.427
글로벌타입스트럭처는 스트럭처 타입으로, 테이블타입은 테이블 타입으로 선언해주기
패턴가지고 오기
받아오는 값이 없기 때문에 exporting 값은 코멘트로 설정해주고 et_connections 에 gt_connection을 넣어준다.