ABAP 에서 Modulerized 할 수 있는 방법은 3가지

  1. Subroutine
  2. Funtion
  3. Object oriented techniques

Function은 Subroutine과 유사하게 기능별로 모듈화 하고 재사용이 가능하도록 지원

  • Subroutine이 Local Modularization이라면
    • 같은 프로그램내에서만 호출 가능
  • Function은 Global Modularization이다.
    • Function Group이라고 불리는 POOL에 속해야 한다.
    • 예외 처리 기능을 제공하여 에러가 발생하면 예외 사항을 호출한 프로그램에 전달 가능
    • 호출 프로그램에 상관없이 Stand-alone 모드에서 테스트 할 수 있다.
    • Function을 호출할 때 Input 파라미터를 입력하고 수행결과를 Output 파라미터로 받게 됨

  1. Function Module
    • 중앙 라이브러리 (R/3 Repository) 에 저장되는 Global Subroutine
    • 모듈화 하여 재사용하며 스크립트 수 줄임
    • R/3에는 이미 수많은 기본 Function Module이 제공되며 추가로 생성하여 사용할 수도 있다.
    • 기본 포함 인터페이스
      • Import Parameter
      • Export Parameter
      • Changing Parameter
      • Tables
      • Exceptions
  2. Function Group
    • Function Module을 모아 놓은 Container
    • Function이 실행될 때 이 Function이 소속된 Group 내의 모든 Function이 영향을 받는다 → 하나에서 에러가 발생하면 동일 Group의 Function이 실행되지 않는다.

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 04 Modularization  (0) 2021.01.26
Ch 03 OPEN SQL & NATIVE SQL - 3  (0) 2021.01.18
Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08

Modularization

  1. Subroutine 은 FORM으로 시작하여 END FORM으로 종료되는 구문
    • 스크립트의 모듈화, 재사용, 구조화를 주목적
    • ABAP 프로그램에서는 PERFORM 구문을 이용한 Subroutine으로 유사한 기능 제공
  2. Function Module - 파라미터 값을 주고 받음

Subroutine 정의

  • FORM으로 시작하여 ENDFORM 으로 종료되는 구문
  • Subroutine을 FORM문과 같은 것으로 간주하면 된다.
  • FORM 구문은 프로그램 내/외부에서 호출 가능

Subroutine 파라미터

  • 파라미터는 Subroutine을 호출하는 구문과 호출받는 구문 사이에 주고 받는 값
  • Actual Parameter = Subroutine을 호출할 때 사용되는 파라미터
  • Formal Parameter = Subroutine에서 사용되는 파라미터

파라미터 전달방법

  • Subroutine은 Using과 Changing 구문으로 파라미터를 주고 받음

    1. Call by Value

      • 넘겨주는 변수(Actual Parameter)와 받는 변수(Formal Parameter)가 물리적으로 다른 메모리 영역을 가지고 있다.

        FORM subr USING .. VALUE(pi) [TYPE <t>|LIKE <f>]
      • Subroutine을 호출할 때 Actual Parameter의 값은 Formal Parameter에 복사되지만 Formal Parameter의 값이 변하더라도 Actual Parameter에는 영향을 미치지 않는다.

    2. Call by Reference

      • 물리적으로 같은 메모리 영역을 공유하여 넘겨주며 값은 주소

      • CHANGING 키워드 다음에 파라미터를 사용하면 Subroutine에 전달된 파라미터 값이 변경된다.

        FORM subr CHANGING ... pi [TYPE <t>|LIKE <f>] ...
      • Subroutine의 Formal Parameter는 자신의 메모리를 가지지 않는다. Subroutine이 호출되는 동안 Actual parameter의 주솟값을 가지고 있을 뿐

      • Subroutine을 호출 한 프로그램의 메모리에서 작업하게 된다.

      • CHANGING 대신 USING 사용해도 에러 발생 안함

      • 단지 가독성 차원에서 사용, 병경한다는 걸 명시적으로 구분하기 위해 사용

      • Actual Parameter의 값이 Subroutine내에서 자동으로 변경되는 것을 피하려면 USING과 VALUE 구문을 함께 사용해야 한다.

    3. Call by Value and Result

      • 변수의 값을 넘겨주고 받는 구문에서 작업을 성공적으로 수행하였을 경우 변경된 값을 되돌려 준다. 물리적으로는 다른 영역

      • CHANGING 키워드 다음에 파라미터를 사용하고 VALUE 구문으로 완성

        FORM subr CHANGING..VALUE(pi) [TYPE <t>|LIKE <f>].
      • USING구문과 VALUE구문이 함께 사용되면 Subroutine이 정상적으로 종료될 경우 Actual Parameter 값이 변경된다.


파라미터 타입 정의

  • FORM 구문 내의 Formal Parameter는 TYPE과 LIKE 구문을 이용해 모든 ABAP 데이터 타입을 사용할 수 있다.
  • 타입을 명시적으로 지정하지 않으면 Generic Type으로 정의되고 Actual Parameter의 기술적 속성을 상속받게 된다.
  • Formal Parameter는 모든 ABAP Data Type이 허용되기에 구조체도 당연히 사용
    • 단 구조체를 전달할때 타입을 지정하지 않았으면 구조체 칼럼을 write하거나 인식하려 할 때 필드 심볼을 이용해야 함

파라미터와 인터널 테이블

  • USING CHANGING 구문
    • 인터널 테이블을 Subroutine의 파라미터로 사용할 때도 USING, CHANGING 키워드를 사용할 수 있다.
    • FORM문에 테이블 타입을 TYPE ANY TABLE을 주었다면 READ 구문을 동적으로 변경해야 한다. ( 이 부분 이해 안감, 2회독때 다시 보자)

TABLES 구문

  • USING과 CHANGING 구문 대신 사용 가능

Subroutine 호출

  • 호출하는 방법은 Internal, External 두가지 방법
* INTERNAL
PERFORM subr.
* EXTERNAL
PERFORM subr (prog) [IF FOUND].
  • 외부 External Subroutine 호출시에는 [IF FOUND] 구문을 사용하여 해당 Subroutine이 존재하는지 체크하는 것이 바람직, 체크하지 않았을 때 Subroutine이 존재하지 않으면 덤프에러 발생
  • 동적 호출 가능
  • LIST를 이용한 호출 가능
DO 2 TIMES.
    PERFORM SY-INDEX OF subr1 subr2.
ENDDO.

FORM subr1.
    WRITE / 'subr1 is called'.
ENDFORM

FORM subr2.
    WRITE / 'subr2 is called'.
ENDFORM

* 결과

*subr1 is called
*subr2 is called

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 04 FUNCTION  (0) 2021.02.02
Ch 03 OPEN SQL & NATIVE SQL - 3  (0) 2021.01.18
Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08

NativeSQL ( 책에서는 Oracle DB )

  • ABAP 프로그램에서는 NativeSQL은 OpenSQL에 비해 자주 사용되지는 않지만

  • OpenSQL에서 지원하지 않는 다양하고 복잡한 SQL을 사용할 수 있다.

  • 장점

    • ABAP Dictionary에 생성되지 않은 테이블에 접근할 수 있다.
    • 데이터베이스 의존 SQL구문이므로 OPEN SQL에서는 구현할 수 없는 SQL 가능!
  • 단점

    • EXEC ~ ENDEXEC 사이의 구문 점검이 수행되지 않아 DUMP Error가 발생 가능

    • NATIVE SQL이 포함된 ABAP프로그램은 다른 DB를 사용하는 환경에는 적용할 수 없다.

    • Client를 구분하는 MANDT 필드를 SQL 구문 내에 반드시 포함해야 함

      ※MANDT


기본구문

EXEC SQL.
    <NATIVE SQL statement>
ENDEXEC.
  • EXEC SQL로 시작해서 ENDEXEC. 로 종료
  • 변수명 앞에는 : 콜론 사용

PERFORMING 구문

  • 한 번에 여러 개의 데이터를 IT에 삽입
EXEC SQL PERFORMING <form>.
    <NATIVE SQL statement.
ENDEXEC.

JOIN 구문

EXEC SQL.
    ...
    FROM TABLE1 A, TABLE2 B
    WHERE A.MANDT = B.MANDT
        AND A.CARRID = B.CARRID
        AND A.MANDT = :SY-MANDT
        AND A.CARRID = :GV_CARRID
    ...
ENDEXEC.
  • OUTER JOIN을 사용하려면
EXEC SQL.
    ...
    FROM TABLE1 A, TABLE2 B
    WHERE A.MANDT(+) = B.MANDT
        AND A.CARRID(+) = B.CARRID
        AND A.MANDT = :SY-MANDT
        AND A.CARRID = :GV_CARRID
    ...
ENDEXEC.

SUBSTRING 구문

LV_CHAR = ABCDE "일때 BC를 추출하려면

* 아밥에서는
LV_CHAR+2(2)

* 오라클 NATIVE SQL에서는
SUBSTR( LV_CHAR, 2, 2)

Fetch Size

  • *보다는 개별 필드를 SELECT 하는것이 효과적
  • Fetch Size는 Oracle DB에서 사용하는 기술로 테이블에서 데이터를 가져와 Buffer Cache에 저장하고 나서 Fetch Size만큼 논리적인 단위로 읽기를 수행하는 방법

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 04 FUNCTION  (0) 2021.02.02
Ch 04 Modularization  (0) 2021.01.26
Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08

데이터 변경

  1. INSERT 구문

    • 테이블에 하나 또는 여러개의 데이터 삽입

      1) Single Line

    • 테이블 하나에 Line을 삽입하기 위한 문장

      INSERT INTO <target> VALUES <wa>.
      INSERT <target> FROM <wa>.

      2) Several Line

    • 인터널 테이블의 모든 값을 한 번에 테이블에 삽입

    • 같은 KEY값을 INSERT하게 되면 error가 발생하는데 이를 방지하기 위해 ACCEPTING DUPLICATE KEYS 구문을 사용한다.

      • 중복된 키가 입력된 값을 INSERT 하게 되면 신규행은 정상 입력 중복된 값을 미입력, INSERT 구문이 실패하면 SY-SUBRC 값 4를 반환
      INSERT <target> FROM TABLE <itab>
                                            [ACCEPTING DUPLICATE KEYS].
  2. UPDATE 구문

    • 테이블 하나 또는 여러 line을 변경함

      UPDATE INTO <target> <lines>.

      1) Single Line

      2) Several Lines

    • Work Area를 사용하는 것보다 UPDATE SET 구문을 이용해 개별 컬럼 값을 변경하는 것이 성능이 우수

      UPDATE <target> SET <set 1> <set 2> WHERE <cond>
  3. DELETE 구문

    • 테이블 하나 또는 여러 line의 데이터를 삭제

      1) Single Line

      2) Several Lines

  4. MODIFY 구문

    • UPDATE + INSERT 의 기능을 수행

    • 키 값을 가지는 데이터가 테이블에 존재하면 UPDATE

    • 존재하지 않으면 INSERT

      1) Single Line

      2) Several Lines


테이블의 데이터를 확인하는 방법

  1. SE11 : 테이블과 같은 오브젝트를 조회/수정/생성하는 용도
    • 데이터 조회버튼을 클릭하면 SE16이 호출됨
  2. SE16 : 데이터를 조회하는 용도

둘 중 익숙한 트랜잭션을 사용하면 됨.


효율적인 SQL문 구문 작성

  1. 적중 리스트 최소화
    • 결과 리스트가 최소화 되도록 WHERE 절을 구성
  2. 전송되는 데이터양의 최소화
    • 결과로 나오는 데이터양을 최소화 하여 전송 ( UP TO ~ROWS 와 같이 )
  3. LOOP에 소요되는 비용 최소화
    • Nested SELECT 구문 피하기
  4. 검색 비용의 최소화
    • index를 활용하고
    • OR 구문 피하기
    • AND와 EQ 구문으로 쿼리 구성
  5. 데이터베이스의 부담 제거
    • ORDER BY 보다는 SORT 사용
  6. 인덱스에 사용된 필드 모두 기술
    • 인덱스에 사용된 모든 필드는 될 수 있으면 모두 기술하기
    • RANGE 변수를 적극 활용하기
  7. 가급적 Application Server에서 실행
    • ORDER BY는 데이터베이스에서 수행
    • ORDER BY는 Application Server에서 실행

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 04 Modularization  (0) 2021.01.26
Ch 03 OPEN SQL & NATIVE SQL - 3  (0) 2021.01.18
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08
Ch 02 Data Type - 1  (0) 2021.01.07

R/3 Architecture

  • 세개의 Layer로 분류
  1. Presentation Layer
    • 개인 컴퓨터
    • SAP GUI를 통해 데이터를 입력 및 조회
    • SAP GUI는 단지 터미널의 역할
  2. Application Layer
    • 모든 프로그램은 Application Server에서 구성
    • Application Layer는 여러개의 Server와 하나의 Message Server로 구성
      • Message Server는 부하가 적은 서버에 사용자가 로그인 되도록 부하 분산 역할
    • OPEN SQL 사용시 Local Buffer가 데이터베이스까지 접근하지 않고 Local Buffer에서 데이터를 읽어옴
    • Dispather는 Work Process를 적절히 분배하는 역할
  3. Databas Layer
    • SAP의 모든 데이터를 데이터베이스 테이블에 저장하는 계층
    • 시스템 변수, 모든 프로그램의 소스 코드, 트랜잭션 데이터 등 저장

기존 프로그램과 SAP 프로그램의 차이점

  • JAVA ASP와 같은 프로그램과 달리 SAP는 일반 개발자에게 데이터베이스에 직접 접속하여 데이터를 수정하는 행위를 금지하고 있음.
  • 데이터 조회 권한 까지 일반 개발자에게 제한
  • 이러한 제한을 통해 무결성 일관성 안정성 투명성을 보장

ABAP 프로그램에 사용되는 오브젝트들 (Table, View, Structure, Types 등)을 ABAP Dictionary라고 부름

이러한 오브젝트들의 정보를 MetaData, Data Definition 또는 Schema라고 정의하여 데이터 구조를 정의하고 관리하는 역할을 ABAP Dictionary가 하게 됨


SQL

  • SQL 은 DML, DDL, DCL로 구분된다.
  • ABAP 프로그램의 OPEN SQL에서는 DML만 사용 가능

SQL에는 OPEN SQL과 NATIVE SQL이 있음

  1. OPEN SQL
    • ABAP언어에서만 사용 됨
    • Database Interface를 통해 NATIVE SQL로 번역 됨
    • Local Buffer 사용 가능
    • DML 만 사용 가능
  2. NATIVE SQL
    • OPEN SQL로 구현 할 수 없는 쿼리 사용시

SELECT 구문

SELECT <LINES> <COLUMNS> ...

  1. Single Line
    • 하나의 라인 값을 읽어오고자 할 때
    • WHERE 조건에 유일한 키 값이 추가되어야 하는데 여러 개의 라인을 읽어오면 임의의 라인을 반환
  2. Several Lines
    • 여러개 라인 값을 읽어오고자 할 때
    • DISTINCT 를 사용하면 중복 값 제외
    • INTO 구문의 결과가 저장되는 곳이 인터널 테이블이 아닌 필드나 Work Area(구조체)일 때에는 마지막에 ENDSELECT를 사용하여야 한다. 이 때 조건에 해당하는 값을 모두 읽어 올 때까지 LOOP를 수행한다.
      • SELECT ENDSELECT 구문은 수행 될때마다 Application Server와 Database 간의 인터페이스가 수행되어 조회 후 Loop 문보다 비효율적
  3. AS(Alias)
  4. 동적인 SELECT 구문

FROM 구문

  • 하나 또는 여러개의 테이블을 Join 하고 조회 할 수 있다.
  • Option
    • CLIENT SPECIFIED : 자동 CLIENT 설정 해제
    • BYPASSING BUFFER : BUFFER에서 값을 읽지 않음, BUFFERING이 설정되어 있더라도 바로 데이터베이스 테이블에서 SELECT 수행
    • UP TO n ROWS : SELECT 의 row 개수 제한

WHERE 구문

  1. Interval 조건

    SELECT ... WHERE <s> [NOT ] BETWEEN <f 1> AND <f 2>
  2. String 비교

    SELECT ... WHERE COL1 LIKE 'ABC%'. "*ABC 로 시작하는 조건 SELECT ... WHERE COL2 LIKE 'ABC_'. "*ABC 로 시작하는 4자리 조건
  3. LIST VALUE

    SELECT ... WHERE 거주지 IN ('서울', '수원'). "*서울 OR 수원에 거주하는 (여러) 조건에 속한 값
  4. FOR ALL ENTRIES

    SELECT ... FOR ALL ENTRIES IN <itab> WHERE <cond>
    • itab의 칼럽과 비교 대상 테이블의 칼럼 타입은 같아야 한다.
    • LIKE BETWEEN IN 과 같은 비교 구문 사용 불가
    • 중복된 값은 하나만 남는다. (Unique Key 기준)
    • itab이 NULL이면 모든 데이터를 읽는다.
    • itab의 수가 많으면 그만큼 효율이 떨어짐 ( 수만큼 select문 날림 )

    (주의사항 참조 : https://m.blog.naver.com/PostView.nhn?blogId=whiteme7&logNo=110132665367&proxyReferer=https:%2F%2Fwww.google.com%2F)

  5. GROUPING 구문

    SELECT <f1> <f2> [OPTION(값)] <값>... GROUP BY <f1> <f2>
    • 값들의 정보를 요약하여 조회되게 함.
    • OPTION : AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE
  6. GROUPING 조건 : HAVING

    • GROUP BY로 조회한 구문에 그룹의 조건 추가
  7. SORT 구문

    • ORDER BY를 사용하여 기술된 컬럼 기준으로 정렬
    • ORDER BY 사용하지 않으면 임의로 정렬된 결과
    • ASSENDING, DESCENDING 구문으로 정렬 사용 가능
  8. Subquery

    • where 조건에 또 다른 select문 추가하여 값을 제한 목적
    1. Scalar Subquery
      • 반드시 한 칼럼만을 반환해야 한다.
      • Nested Loop 방식
      • 실행되는 횟수는 row 수
      • 반복되는 코드나 유형의 테이블에서 효율적
    2. nonScalar Subquery
      • 결과가 존재하면 True 반환
      • 결과가 없다면 False 반환
      • EXISTS 구문으로 구현

구조체 ( Structure )

  • 테이블과 비슷하지만 차이가 있다.
  • 테이터의 유무 ( 테이블은 데이터 유, 구조체는 무 )
  • 개발 편의성을 위함 → 동일구조 Internal Table을 반복 사용시
  • 조회문에서 * 사용하면 성능 하락, 비효율적 → 구조체 사용하여 효율적으로 할 수 있다.

(출처 : http://egloos.zum.com/yhkim0614/v/1848428 )

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 03 OPEN SQL & NATIVE SQL - 3  (0) 2021.01.18
Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 02 Data Type - 2  (0) 2021.01.08
Ch 02 Data Type - 1  (0) 2021.01.07
Ch 01 Package & CTS  (0) 2021.01.05

( 출처 https://ljshappy.tistory.com/13 )


시스템변수 sy-datum과 sy-datlo의 차이점

  • sy-datum은 System Time Zone에 설정된 시간
  • sy-datlo은 User's Time Defalt Time 또는 사용자 프로파일에 설정된 Time Zone을 기준으로!

국내 기업의 경우에는 DATUM만 사용해도 크게 문제가 없다.

하지만 중국과 인도등 글로벌 업체의 예를 들면 같은 서버를 사용하는데 서버가 중국에 있다 라고 가정하면

동일 시점이라고 해도 시차에 의해 중국은 11시 15분 인도는 8시 45분이다.

그럼 인도에서 8시 45분에 기재한것이 DATUM을 사용하면 11시 15분으로 기재되게 되는데 이러면 항상 시차를 계산하고 염두해야 하는 경우가 생기기도 하고 이로 인해 혼동이 생길 수 있다.

그래서 글로벌적으로는 DATLO를 사용하는 경우가 발생하기도 한다.

위의 경우에 해당한다고 무조건 DATLO를 사용하는 것은 아니고 프로그램에 따라 혼용 될 수 있음에 유의하자


작은 따옴표 ' VS 그레이브 기호 `

Easy ABAP 2.0에 오기재 되어있는데 (참조 http://sapjoy.co.kr/?mid=BQNA&document_srl=92572 )

작은 따옴표 ' 을 사용하면 공백을 인식하지 못하고

그리이브기호 `을 사용하면 모든 공백을 인식한다.


데이터 타입에 대한 상세한 내용들이 많긴 하지만

주로 사용하는 방식이 정해져 있기에 2회차때 더 상세히 정리하기로 하였다.

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 1  (0) 2021.01.07
Ch 01 Package & CTS  (0) 2021.01.05
Easy ABAP 공부  (0) 2021.01.05

변명이지만 오늘은 야근도 있었고, 퇴근 후 내일채움공제 관련 PPT를 만들어야 해서

많이 하지 못했다...

내일은 더 많이 하도록 노력해보자!

ABAP 프로그램은

  • Data Type - 데이터의 타입 정의
  • Data Variable ( Data Object ) - 데이터 타입을 참고하여 값을 저장하는 변수

가 존재

TYPES 구문을 사용하여 Data Type을 선언하면 해당 프로그램에서 사용만 가능하기에 Local Data Type이라고 부름 ( 지역변수 )

(보통 내가 짜는 프로그램들을 이미 다 타입들이 정의되어있어서 like 를 사용해서 Data만 정의함)

Data Object

  • Data Variable은 실제 Data Object를 의미
  • 프로그램이 실행되는 동안 메모리를 점유하는 물리적 단위

Data Type은 크게 3종류

  1. Predefined ABAP Type
    • Kernel 레벨에서 정의된 기본 데이터 타입
    • C의 (c,f,l) 타입 처럼 이미 정의된 데이터 타입
  2. Local Data Type in Program
    • Predefined ABAP Type을 조합하여 여러 필드가 추가된 Strurure 타입을 정의하여 사용 가능
  3. Global Data Type in ABAP Dictionary
    • 모든 ABAP 프로그램에서 사용할 수 있는 TYPE
    • SE11에서 생성하는 ABAP Dictionary 오브젝트는 모든 프로그램에서 변수를 선언할 때 데이터 타입으로 사용 가능

Data Variable 선언

  1. Predefined ABAP Type 선언
DATA : gv_num  TYPE i,
             gv_data TYPE d.
  1. 프로그램의 Local Type을 이용하여 선언
*     로컬타입 선언부        
TYPE : BEGIN OF t_struct,
                    col1 TYPE c,
             END OF t_struct.

Data : gs_struct TYPE t_struct.
  1. ABAP Dictionary 의 Type을 이용하여 변수 선언
DATA : gv_matnr TYPE mara-matnr.

ABAP 기본 문법

  1. 문장은 마침표 기호로 마무리

    • WRITE gv_val.
  2. 주석은 두가지

      • 는 한 라인 전체 주석 처리
      • 은 뒷부분 문자열 주석 처리
  3. 문자열은 ' ' rlghfh cjfl

  4. 명령어는 공백을 두고 처리

     gv_val='ABAP'. "은 X
     gv_val = 'ABAP "이와같이

ABAP 이름 규칙

  1. ABAP Dictionary의 이름 규칙 = Z 혹은 Y로 시작

  2. INSERT , APPEND와 같은 키워드 사용 금지

  3. 개발리더 (컨설턴트) 가 정한 룰 따르자

  4. 변수명은 _ 포함하여 30자

  5. 변수의 앞 2자리는 범위와 데이터 유형을 나타내고

  6. _와 마지막 단어는 어떠한 역할 하는지

     DATA : GT_SFLIGHT TYPE SFLIGHT. " 이와 같이!
    • 필드는 V or D
    • 구조체 S
    • 상수 C
    • 인터널테이블 T
    • 클래스 O
    • Range R
    • 데이터 참조변수 F
  • 이름규직 점검은 T-CODE : SCI 실행해서 확인 가능
  • 혹은 Program - Check - Code Inspector 에서 점검 가능

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08
Ch 01 Package & CTS  (0) 2021.01.05
Easy ABAP 공부  (0) 2021.01.05

Package

  • Development Class
  • 프로그램과 같은 오브젝트를 기능별로 관리하고자
  • Package의 기능
    1. 오브젝트 (프로그램 등) 의 구조화
    2. 오브젝트 기능을 모듈화
    3. 오브젝트를 기능별로 구별
  • 모듈별로 프로그램 구분을 하게 됨
    • ex ) 영업은 ZSD, 생산은 ZPP와 같이...

Software Component

  • Package들을 모아 한 세트로 관리하는 상위의 그룹
  • 버전 별로 관리
  • SAP Upgrade 또는 Patch를 적용 하도록 설계
  • Software Componet > Package > Object에 할당되어 고객에게 배포-인도 됨
  • Support Package를 적용하는 것은 Software Component 버전을 생성하여

Package Create

  • T-CODE : SE21 또는 SPACKAGE 에서 패키지 생성

Transport Layer

  • 개발과 테스트 작업을 여러 시스템으로 분산할 수 있는 환경 제공
  • 오브젝트를 다른 시스템으로 전송하고 오브젝트의 변화와 관리를 기록하는 역할
  • T-CODE : STMS 를 통해서 Transport layer와 전송 경로를 정의
  • BC 관리자에게만 권한이 있고, 세팅함
  • 전체 서버는 3개로 구분 됨
    • APT (개발)
      • ZAPT 경로 : 고객사에서 프로그램 개발 및 IMG 세팅 사항을 다른 서버로 전송할 때 사용
        • IMG (Implementation Guide)
          • Customizing에 사용되는 일반적인 Tool
          • 스탠다드 프로그램을 고객사 환경에 맞게 변경하여 적용 가능
          • T-CODE : SPRO
      • SAP 경로 : SAP에서 Support Package를 반영할 때 사용
    • APQ (테스트)
    • APP (운영)

CTS ( Change Request )

  • CTS는 개발 서버에서 변경된 사항을 운영 서버에 반영하거나 고객 환경에 적합하도록 커스터마이징 하는 TOOL
  • 보통의 서버 환경은 3개의 독립된 서버로 구성
    • DEV(개발) QAS(테스트) PRD(운영)
    • 하나의 서버에 클라이언트로 구분하는 경우도 있음
  • CTS는 Repository(프로그램, 테이블 등) 의 버전을 관리하며 구성관리 TOOL로서의 역할도 수행
  • 마치 GitHub과 비슷한 느낌?

Transport Organizer

  • T-CODE : SE09
  • CTS를 관리하는 프로그램

Request No 생성

  • Request No는 실무에서 CR(Change Request), CTS NO와 같은 의미로 사용
  • CR은 클라이언트에서 다른 클라이언트로 전송 가능
  • CR은 시스템에서 다른 시스템의 클라이언트로 전송 가능

오브젝트들 Overwrite되며 문제 발생 가능하기에

Change Request를 반영할 때는 사용자가 시스템을 사용하지 않는 시간 권장

최악의 경우 운영 시스템 정지까지 발생할 수 있다.


NOTES

  • SAP Standard에서 버그가 발생한다면 NOTES를 반영하여 해결 가능
  • 버그 수정 뿐만 아니라 속도 개선, 기능 추가와 같은 솔루션도 제공
  • 소규모 Upgrade라고 정의 가능
  • T-CODE : SNOTE
  • 개발자가 직접 스탠다드 수정시에는 Access Key 받아서 수정하면 됨

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08
Ch 02 Data Type - 1  (0) 2021.01.07
Easy ABAP 공부  (0) 2021.01.05

실무에서 일하고 있지만

너무 많이 부족하다...

 

기본기도 부족하고 용어도 모르다보니

업무 로직 숙지만으로도 벅찬데 더더욱 혼동되고 벅차져서

 

근무시간 08:30 to 06:30 까지는 과제 및 업무를 맡고

            07:00 to 08:30 까지는 당일 업무 정리 및 보충

 

            09:00 to 10:30 까지는 Easy ABAP 2.0 교재를 기반으로 기본을 다지고자 한다.

 

'SAP > Easy ABAP' 카테고리의 다른 글

Ch 03 OPEN SQL & NATIVE SQL - 2  (0) 2021.01.14
Ch 03 OPEN SQL & NATIVE SQL - 1  (0) 2021.01.12
Ch 02 Data Type - 2  (0) 2021.01.08
Ch 02 Data Type - 1  (0) 2021.01.07
Ch 01 Package & CTS  (0) 2021.01.05

+ Recent posts