목록SAP/ABAP (27)
쌓고 쌓다
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mvlSp/btsLM667YGT/ViSWPFREXvkqb1xrkI9MUk/img.png)
Status IconScreen의 Layout의 사이드바에 Status Icon을 누른다. ICON의 Element 이름을 작성하자. 프로그램의 TOP에 이전에 선언한 Element 이름과 동일하게 변수명을 선언한다.TYPE은 ICONS_TEXT이다. 아이콘을 표시할 스크린의 PBO에 아이콘 출력을 위한 모듈을 생성한다. 아이콘의 표시는 'ICON_CREATE' Function을 호출하여 한다.NAME은 표시하고자 하는 아이콘 종류의 NAMERESULT는 아이콘을 표시하고자 하는 Element Name이 온다. EXPORTING의 TEXT에는 표시하고자하는 텍스트를 넣을 수 있다.텍스트가 잘려서 나온다면 해당 Element의 Attribute Vis.Length를 늘려주자. 아이콘의 종류는 데이터베이스 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RCPUh/btsLM84TA4T/c9ahkuIrzsh0PglAKXfrdK/img.png)
Field Input Check with ErrorPAI에서 인풋 값을 검증하는 모듈을 추가할 수 있다.에는 검증할 Screen Element Name이 온다.MODULE에는 검증 코드가 들어간 모듈을 추가해준다.예시로 CHECK_INPUT 모듈이 적혀져 있다. 검증 코드가 들어간 모듈에서는 MESSAGE로 메시지를 던지면 된다. 에러 메시지가 출력된다.이때 검증에 실패한 Input/Output Field는Input 필드로 바뀌고검증에 성공한 필드들은Output 필드로 변경된다. Checking Group of Field여러개의 필드를 검증하고싶다면 CHAIN ~ ENDCHAIN 구문과 함께필드를 ,(콤마)로 구분한다. A,B,C,D 모두 Input/Ouput 필드였으나C,D 에 걸리면서 A,B는 Out..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5Pzvt/btsLLMWfb0P/4grI5p91KKxKiI3NHMEQ70/img.png)
Check BoxScreen Painter의 사이드바에 Checkbox가 있다. Name과 FctCode를 작성하자.예시로 CHK1을 작성했다. TOP Include에 체크박스의 엘리먼트 네임 OPT1으로 선언 체크박스 이름 OPT1이 초기값이라면 언체크된 상태이고그게 아니라면 체크된 상태이다.IS INITIAL로 체크가 되었는지 안되었는지 분기점을 만들면 된다. Radio ButtonScreen Painter의 사이드바에 해당 아이콘이 Radio Button 생성이다. 라디오 버튼 3개를 만들고해당 버튼에 맞춰 TITLE을 바꾸는 예제를 보자. 라디오 버튼의 Name은 TITLE1, TITLE2, TITLE3으로 생성했다. 라디오 버튼을 Ctrl 키를 누르며 3개를 모두 클릭한 뒤우클릭하여 Radio ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HeSBN/btsLJLQ37UB/sQdnkFMhYERajzcVIxaZNK/img.png)
User Interface를 재정의하기 위해서 GUI TITLE과 GUI STATUS를 사용한다. GUI STATUS에서 설정 가능한 것- Menu bar- Standard toolbar- Application Toolbar- Key setting : F1과 F3와 같은 키 누름시 이벤트 GUI TITLE에서 설정 가능한 것- 예시 Flight Connection Data Display와 같은 제목 GUI TITLE스크린의 PBO에서 "MOUDLE STAUS_스크린번호"를 주석 해제한다.더블 클릭하여 생성. SET TITLEBAR에 타이틀 코드를 작성한다.그리고 타이틀 코드 더블 클릭. Title 부분에 원하는 타이틀을 작성하면 된다.타이틀의 일부를 동적으로 바꿀 수 있는 방법으로변수를 넣어줄 수 있는데..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/euDhtX/btsLK1SOLfD/GxA9BYlu22wKvEO2zk3aTK/img.png)
먼저 다수의 Screen이 존재할때Screen의 이동 방식에대해 이해해보자. 100 스크린에서 Enter를 입력하면100번 스크린에서 PAI 모듈을 거치고다음 스크린의 PBO로 이동한다. 위의 방식으로 스크린 이동이 이뤄진다. Static Screen SequencesScreen의 Attribute를 보면 Next Dynpro 속성이 있다.이 속성은 현재 스크린에서 Enter를 입력한다면 이동하는 스크린이다. Dynamic Screen SequenceRun Time에 일시적으로Static Screen Sequence에서 봤던 다음 스크린인static Next Screen(Next Dynpro)을 덮어쓸 수 있는데SET SCREEN 키워드를 사용한다. 스크린 이동 코드는 PAI에서 작성한다.인풋을 처리하고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NJSY6/btsLKvz3zo2/Xek1HeKKZHk44p3bZP7FRk/img.png)
Screen Element들의 static attribute는 PBO 이벤트전에 스크린 시스템 테이블에 복사된다. Screen System Table은 다음과 같은 형태이다.NAMEGROUP1GROUP2GROUP2GROUPLENGTHINPUTOUTPUTREQUIRED...FIELD1SEL 20110 Screen Table의 Line Type은 SCREEN이다.Element Name이 FIELD1인 요소의 속성들의 정보들을 저장하고 있다. 그래서 우리는 PBO 모듈에서Screen Elemen의 Attribute를 동적으로 변경할 수 있다. 위의 Line Type에 보이듯 INPUT, OUTPUT 필드를 이용하는것이다.SCREEN-INPUT = 0 과 같이 변경한다. PBO에서 위의 구문으로 스크린 요..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xEWB0/btsLIdz7cjp/8UdJhgnx3UCDhaWY0LFJo1/img.png)
ABAP Program의 종류가 여러가지가 있는데 일부로Executable Program(Type 1)과 Module Pool(Type M)이 있다. Executable Program (Type 1)이제껏 사용한 1000번 스크린(SELECTION SCREEN)을 사용한 프로그램은모두 "레포트 프로그래밍"이였다. SELECTION SCREEN에 입력된 데이터를 가지고DB Table에 읽어와서 결과 리스트로 데이터를 출력하는 것이다. 이는 데이터베이스에서 조회한 데이터를 뿌려주는 목적의 프로그램이다.수정 삭제 삽입등은 안된다. Module Pool (Type M)스크린 프로그램이다. 위의 Executable Program (Type 1)인 Report Program의 READ뿐만 아니라생성, 수정, 삭제 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lVbM4/btsLHN8h5Iy/1axNhWui6gMoGcdtGOSxDk/img.png)
Internal table에 CRUD를 하기위해서똑같은 형태의 Structure Variable이 있어야 한다. CRUD를 위한 이 Structure Variable를 "Work Area"라고 한다. INSERTinternal table인 gt_flightinfo를 정의하고LIKE LINE OF 구문으로 위의 테이블에 사용될 work area를 정의한다.이렇게 internal table 정의와 work area 정의를 많이하는 것 같다. "Structure변수명-컴포넌트 = 값" 으로 Structure 타입에 값을 채우고INSERT (Structure) INTO TABLE (Internal table) 로ROW를 INSERT 할 수 있다. INSERT 라인에 디버깅을 해보면 값이 Internal Ta..