목록SAP/ABAP (27)
쌓고 쌓다
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcG7ZF/btsL7y4FBe7/Kvlx3a7ELKKGutI5ycKf1k/img.png)
AT SELECTION-SCREENAT SELECTION-SCREEN 부분에서는 Checks이 있다.Input / Authorization Check가 이뤄진다. ON 로 필드 값 검증을 할 수 있다. SELECTION SCREEN BLOCK에 NAME이라는 필드를 선언했다. 이 NAME 필드에 값을 유효성 검사를 하길 원한다. 예를 들어 NAME 필드에 값을 반드시 넣어야하는 유효성 검사를 한다고 하자. AT SELECTION-SCREEN ON 구문에 맞춰AT SELECTION-SCREEN ON NAME을 작성하고조건문을 걸어서 조건에 맞지 않으면 TYPE 'E'로 에러 메시지를 출력하면 된다. NAME 필드를 입력하지 않고 실행했더니AT SELECTION-SCREEN 구문에 걸려 에러 메시지가 출력..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JCrCg/btsL6VMMDcm/C9VFuPkFs0GkTnwjsGvHKK/img.png)
Range VariableSELECT문의 WHERE절에 사용하는 조건문을 동적으로 추가할 수 있다. Range 변수는 Internal Table이다.이 Internal Table에 조건을 넣고WHERE 필드 IN 로Internal Table에 넣어진 조건들을 OR로 묶어서WHERE 조건절을 완성할 수 있다. 'B'와 'P' 값이 존재하는 컬럼이 있다. PA_ALL : CUSTTYPE이 B, P 모두 조회PA_PRI : 'P' 값을 같는 ROW 조회PA_BIZ : 'B' 값을 같는 ROW 조회를 위한 RADIOBUTTON이다. SELECT 쿼리를 날릴때사용자가 선택한 상황에 따라 조건건문을 동적으로 생성하고자 한다. Range 변수 선언은 TYPE RANGE OF로 한다.해당 변수는 Internal T..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/SXRVi/btsL6js7bkE/JJhBfboNYYbI9g7YQRoGeK/img.png)
ALV Grid EventALV Grid에 데이터를 클릭 했을때 해당 Row 또는 Col 정보를 받아 처리하거나HOTSPOT(밑줄) 된 데이터를 클릭했을 때 실행할 로직을 등록하거나툴바에 메뉴를 추가하고 메뉴를 클릭했을때 동작과 같은 이벤트들을 생성, 관리할 수 있다. 더블 클릭시ES_ROW_NO에는 ROW에 대한 정보를 갖는 컴포넌트NUM, ROW_ID 컴포넌트가 존재한다. ES_ROW_NO에 ROW_ID 필드가 있는데 몇번째 ROW를 더블클릭했는지 인덱스를 리턴.E_COLUMN에 COLUMN_ID 필드는 어느 컬럼에서 클릭했는지 컬럼이름을 리턴. E_COLUMN에는 COL에 대한 정보들을 갖는COLUMN_ID, FIELDNAME 컴포넌트가 있다. Field Catalog 조작할때 LVS_S_FCAT..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bisL3h/btsL6I61mXX/bSGaryl1IFtABxJzylbpy0/img.png)
Field CatalogField Catalog는 표시할 데이터의 포맷을 설명하는것이다. 이전의 ALV는 I_STRUCTURE_NAME으로 ABAP Dictionary에 정의된 스트럭쳐를 사용했기에자동적으로 Field Catalog가 생성된 것이다. Field Catalog는 Internal Table 타입이며, 조작하여 표시될 데이터를 조작할 수 있다.Internal Table 타입은 LVC_T_FCAT,테이블 타입의 Work area로 LVC_S_FCAT 이다. IT_FIELDCATALOGSET_TABLE_FOR_FIRST_DISPLAY의 파라미터에 IT_FIELDCATALOG가 있다.이곳에 Field Catalog를 위해 선언한 LVC_T_FCAT 타입 변수 GT_FCAT를 넘겨주면 된다. 이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/diXtVL/btsL4oHnEFd/oPY7XYqkkcP33ObpVAluS1/img.png)
Secondary INDEXPRIMARY INDEX는 키 필드로 자동으로 생성된다.Non-Key Field로 Secondary INDEX를 생성할 수 있다. 예를 들어사원 테이블에서 사원 이름을 통해 검색이 자주 일어난다고 하자.그러나 사원 이름은 키 필드가 아니라서 Secondary INDEX가 필요하다. 사원 테이블의 사원 이름을 Secondary INDEX로 설정해보자. T-CODE : SE11에서 테이블을 변경한다.Indexes 탭에서 인덱스를 생성할 수 있다. INDEX명은 Z나 Y로 시작한다. Description을 입력하고 Table Fields를 누른다. 사용할 필드를 누르고 Copy를 누르면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/URdry/btsL5uzRYOY/bNV4lhIfVICGkQGOvo0Zq1/img.png)
DataBase의 Table 생성은 SE11에서 할 수 있다. 테이블의 생성 과정에 Technical Setting 탭에서Data Class : 데이터가 저장될 물리적 공간의 키를 지정. Size Category : 데이터를 저장하다가 공간이 줄어들면 확장의 크기를 얼마나 할 것인가Logging : 로그 기록. 변경 이력은 Log Table에 이뤄진다. 수업때 일단 USER를 사용하라고 배웠다.실무에서는 테이블의 용도에 따라 Data Class를 지정하는 것 같다. 외래 키 (Foreign Key)직원의 부서 코드는항상 부서 테이블에 존재하는 부서 코드여야 한다. 이럴때 직원(EMP)와 부서(DEPT)는 외래키로 관계를 맺을 수 있다. 부서 코드 필드인 ORGEH가 있다고 하자. 직원(EMP) 테이블의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bIXf9w/btsL2PTcfq8/MYcG7ayhvKGhfqESkKZd90/img.png)
Subroutines서브루틴은 프로그램내에 중복된 코드들을 줄일 수 있으며 유지보수에 용이하다.단, 서브루틴은 프로그램내에 선언되며 다른 프로그램에서 호출하여 사용할 수 없다. 프로그램을 우클릭하여 서브루틴을 생성할 수 있다. 서브 루틴 선언FORM subroutine_name USING ... CHANGING ...ENDFORM.FORM USING ... CHANGING ... ENDFORM 형태로 선언한다. 서브 루틴 호출PERFORM subroutine_name USING ... CHANGING ....PERFROM USING ... CHANGING ... 형태로 호출한다. Actual Parameter, Fo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RvY8G/btsL3OFjax2/hL4WtEN30vAJ2MeVl97m10/img.png)
Layout StructureALV의 Layout을 변경할때 LVC_S_LAYO 타입의 변수를 사용하여 변경이 가능하다. 메소드 SET_TABLE_FOR_FIRST_DISPLAY 호출 이전에Layout Structure의 컴포넌트 값을 변경하여 설정하고메소드 호출의 파라미터 IS_LAYOUT의 값에 Layout Structure를 넣어주면 된다. LVC_S_LAYO 타입의 몇가지 컴포넌트를 보면 GRID_TITLE : 제목ZEBRA : 홀 짝 ROW의 색깔 달리CWIDTH_OPT : 컬럼 Width 자동 조정NO_TOOLBAR : 툴자 제거NO_HEADERS : 컬럼 헤더 제거TOTALS_BEF : 토탈을 맨 위 ROW에 표시 SEL_MODE : Select Mode로 Cell의 선택 옵션 설정info_..