SAP 프로그램 실행 시 기본 프로세스를 정리해보았다.

 

EVENT 흐름

AT SELECTION-SCREEN -> INITIALIZATION -> AT SELECTION-SCREEN OUTPUT -> AT SELECTION-SCREEN [ON] [VALUE-REQUEST FOR] -> START-OF-SELECTION -> END-OF-SELECTION

 

1. AT SELECTION-SCREEN
실행조건 입력받는 화면으로, PARAMETER/SELECT-OPTION으로 값 입력

 

2. INITIALIZATION
PARAMETER/SELECT-OPTION 초기값 세팅으로, 프로그램 실행되는 순간 AT SELECTION-SCREEN 직전에 실행

 

3. AT SELECTION-SCREEN OUTPUT
선택한 화면 수정

 

4. AT SELECTION-SCREEN [ON] [VALUE-REQUEST FOR]
변수 및 레이아웃 등의 값을 미리 입력할 수 있는 구문으로, 원하는 필드에 Search Help 설치

 

5. START-OF-SELECTION
실행(F8) 시 SELECTION-SCREEN 구동하기 위한 구문으로, 명시하지 않으면 모든 코드가 속하게 되는 이벤트 블록
프로그램의 메인으로, 로직 구현부 시작 명시

 

6. END-OF-SELECTION
화면 종료 구문

 

구현 예시

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

[ABAP] Internal Table 선언  (0) 2021.12.02

SD(Sales and Distribution, 영업) 프로세스에서 발생되는 문서에 대해 정리해보았다.

 

SD 문서 생성 프로세스

S/O -> D/O -> G/I -> [Billing Due] -> Billing

 

S/O(Sales Order, 주문)

주문유형, 고객, 자재, 수량 필수

- T-code

VA01~VA03

- Table

Header : 고객정보, 계좌정보 등 주문 관련 정보 - VBAK
Item : 해당 주문 별 제품 정보 - VBAP
Schedule Line : 배송 정보 - VBEP

- 용어

Sold-to party : 구매처
Ship-to party : 배송받을 곳(인도처)
Bill-to party : 청구처(세금계산서 발행 대상)
Payer : 지급처(실제 돈 지불 대상)

 

D/O(Outbound Delivery, 출고지시)

S/O의 Shipping point, Delivery date, Ship-to party에 따라 N:N 관계
1개의 주문에도 제품 별 위의 값이 상이하면 여러 D/O 생성
D/O가 생성되면 Delivery note(거래명세서 등)이 생성되어 물류센터 직원이 확인 후 물건 이동

- T-code

VI01~03

- Table

Header : 인도처 고객정보, 출하일정정보 등 - LIKP
Item : 제품 정보 - LIPS

 

G/I(Posting Goods Issue, 납품/출고)

실제 공장에서의 재고 데이터가 변하는 시점
G/I 이후의 문서는 단순 변경/삭제 등 불가능

- T-code

VI01~03

- Table

Billing Header에 G/I 문서 번호 포함 - VBRP

 

Billing

- T-code

VF01~VF03

- Table

Header - VBRK
Item - VBRP

 

ABAP 개발을 하다보니, Internal Table을 선언하는 문법(구문, 방식)을 다양하게 접하며 헷갈리기 시작했다.
그래서 크게 2가지의 경우로 정리해보았다.

  1. 실제 DB 기반 Internal Table 선언
  2. 개발자가 필요한 컬럼들로 구성한 Internal Table 선언

먼저 Internal Table의 기본 정의와 종류에 대해서 설명한 후 선언 방식을 정리하였다.

- Internal Table 이란?

DB의 데이터에 접근 및 조작할 때, Local 메모리 영역에 담아두어 사용하는 것
매번 DB에 직접적으로 접근하지 않아도 되어 부하를 줄일 수 있다.

- Internal Table 종류

  • Standard Table 
    : 순차적으로 Index를 가지는 테이블로 Index로 조작할 수 있다.
      Key는 항상 non-unique
  • Sorted Table
    : Key로 자동 정렬되며 Index와 Key로 조작할 수 있다. 
      Key에 WITH UNIQUE 사용 가능
      SORT 명령어 사용 불가능
      INSERT는 사용 가능하나 APPEND는 불가능
  • Hashed Table
    : Index가 없어서 READ TABLE ~ INDEX 구문 사용 불가능
      Hash로 계산된 Key값으로 조회할 수 있어, READ TABLE ~ WITH [TABLE] KEY 구문 사용 가능
      반드시 Unique하게 선언되어야 한다.

- 실제 DB 기반 Internal Table 선언

#1
(internal) LIKE TABLE OF (DB) WITH HEADER LINE.
#2
(internal) LIKE (DB) OCCURS 0 WITH HEADER LINE.
  • LIKE TABLE OF 과 OCCURS 0 동시 사용 불가능
    : OCCURS 0 -> 메모리 제한을 두지 않겠다는 것(무한대)
  • WITH HEADER LINE 
    : Header(Work Area)를 생성할 때 사용하며, 대부분 사용하는 것이 더 편하다.

    # WITH HEADER LINE 사용하는 경우(가공 필요X)
    LOOP AT (internal) ~ ENDLOOP.
    # LOOP를 돌면서 Header가 자동으로 올라와서 반복문 바로 수행

    # WITH HEADER LINE 사용하지 않는 경우(가공 필요O)
    LOOP AT (internal) INTO (struct) ~ ENDLOOP.
    # LOOP를 돌면서 한 line씩 structure에 넣어서 반복문 수행

 

- 개발자가 필요한 컬럼들로 구성한 Internal Table 선언

#1
DATA : BEGIN OF (struct),
              (val1) LIKE (table1-val1),
              (val2) LIKE (table2-val2),
          ENDOF (struct),
      
(internal) LIKE TABLE OF (struct) [WITH HEADER LINE].
#2
DATA : BEGIN OF (struct),
              (val1) LIKE (table1-val1),
              (val2) LIKE (table2-val2),
         ENDOF (struct),
       
 (internal) LIKE (struct) OCCURS 0 [WITH HEADER LINE].
  • #1, #2 : structure를 생성 후 위의 <실제 DB 기반 Internal Table 선언>과 같이 internal table 선언
#3
DATA : BEGIN OF (internal) OCCURS 0,
              (val1) LIKE (table1-val1),
              (val2) LIKE (table2-val2),
         ENDOF (internal),
  • structure와 internal table 구분하지 않고 선언하는 방식으로, 테이블 구조 선언 부에 OCCURS 0 을 사용한다.

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

[ABAP] EVENT 구문  (0) 2021.12.27

+ Recent posts