제일 많이 사용하지만 그럴수록 손에 익어서 점점

어? 이게 지금 뭐가 다르더라..! 하는 TYPE / TABLE OF/ LIKE / LINE OF 를 정리해보았습니다. 

 

처음 배울 때는 직접 그림을 그려가며 이해했었는데, 

프로젝트를 하면서 top에서는 같은 구조로 사용하다보니 개념을 까먹고 사용하고 있는 것 같아서 한번 정리 하고 싶었어요 !

 


✏️1. TYPE / LIKE

키워드 역할 예시 설명
TYPE 데이터 타입 기준으로 선언 DATA lv_num TYPE i. “정수형 변수”처럼 타입 이름을 기준으로 변수 생성
LIKE 기존 변수나 필드의 속성을 복사 DATA lv_num2 LIKE lv_num. 이미 존재하는 변수의 구조나 타입을 그대로 따라감
  • TYPE → 타입 정의 기준
  • LIKE → 실제 변수(또는 필드) 기준

 

✏️ 2. TABLE OF / LINE OF

구분  의미 예시 설명
TABLE OF 내부 테이블을 정의할 때 TYPE TABLE OF zsmk01ap02 ztstudent 구조를 여러 줄로 담는 테이블 생성
LINE OF 내부 테이블의 “한 줄 구조”를 참조 LIKE LINE OF gt_alv_0100 내부테이블의 한 줄 구조 복사
  • TABLE OF → “전체 표(리스트)”
  • LINE OF → “그 표의 한 줄(Row)”

 

✏️ 3. 로직으로 이해하기

DATA : gs_alv_0100 TYPE zsmk01ap02,          "한 줄 구조(Structure)
       gt_alv_0100 TYPE TABLE OF zsmk01ap02. "내부 테이블(Structure 여러 개)

 

변수명 의미  예시
gs_alv_0100 zsmk01ap02 구조로 된 한 줄(Row) 엑셀의 한 행
gt_alv_0100 같은 구조를 여러 줄 담는 내부 테이블 엑셀 전체 시트

✏️ 4. 이런 조합으로 사용할 수 있어요

구문 설명 사용 위치
TYPE TABLE OF zstruct 구조 기반 테이블 선언 내부테이블 선언 시
LIKE LINE OF itab itab의 한 줄 구조 따라감 워크에리어 선언 시
TYPE LINE OF itab itab의 한 줄 구조 타입만 참조 타입 선언 시 (변수 아님)

TYPE은 “타입 정의 기준”,

LIKE는 “이미 존재하는 변수 기준”.

TABLE OF는 “리스트(표)”,

LINE OF는 “그 리스트의 한 줄(Row)”.


🍅 5. 조금 더 쉽게 이해하자면,

  • TYPE → 기준: 데이터 타입(Data Element, Structure)
  • LIKE → 기준: 이미 만들어진 변수(Variable, Field)

(1) 예시 — TYPE

DATA gv_num TYPE i.   "정수형 변수
DATA gv_char TYPE c LENGTH 10. "문자형 변수

TYPE은 "이런 타입으로 새로 만들어줘" 라는 뜻

→ 타입 이름(i, c, d 등)이나 딕셔너리 객체(Data Element, Structure)를 직접 지정함

 

 

(2) 예시 — LIKE

DATA gv_name TYPE c LENGTH 10.
DATA gv_copy LIKE gv_name.

LIKE는 "저 변수랑 똑같이 만들어줘"라는 뜻.

→ gv_name이 어떤 타입·길이든 그대로 따라감.

 

 

(3) 예시 — 딕셔너리 구조체를 사용 할 때는

" 딕셔너리 구조 ZSMK01AP02를 기준으로 변수 선언
" ZSMK01AP02은 Structure Table

DATA gs_ap1 TYPE zsmk01ap02. "TYPE: 구조체 자체를 기준으로 만듦
DATA gs_ap2 LIKE gs_ap1.     "LIKE: 이미 만든 gs_ap1을 그대로 복사

 

구분 기준 의미
TYPE zsmk01ap02 딕셔너리 구조체 SAP에 정의된 구조를 기반으로 생성
LIKE gs_ap1 기존 변수(gs_ap1) gs_ap1과 완전히 동일한 형태로 생성

 

 

(4) 예시 — 내부 테이블에서 함께 쓰는 경우

DATA: gt_ap TYPE TABLE OF zsmk01ap02, "내부테이블 (인터널테이블)
      gs_ap LIKE LINE OF gt_ap.        "한줄구조 (워크에리아/스트럭쳐/구조체)
  • TYPE TABLE OF → 이 구조를 테이블로 만들어줘!
  • LIKE LINE OF →그 테이블의 한줄 구조랑 똑같이 만들어줘!

 

(5) 예시 정리

구분 기준 사용 목적
TYPE 데이터 타입 / 구조체 이름 타입(형태)을 지정해 새로 만듦
LIKE 이미 선언된 변수 / 필드 그 변수의 속성을 복사함
TABLE OF 구조 전체를 테이블로 내부 테이블 생성
LINE OF 테이블의 한 행 구조 워크에리어 생성

'ABAP' 카테고리의 다른 글

[ABAP]DB _ CRUD 3  (0) 2025.08.30
[ABAP]DB _ CRUD 2  (0) 2025.08.30
[ABAP] CLEAR는 언제 하는게 좋을까요?  (0) 2025.08.30
[ABAP-ALV] 선택된 행에서 정보 가져오기  (0) 2025.08.28
[ABAP-ALV] 신호등 LAYOUT  (0) 2025.08.28

결재시스템 (AP: PO 결재 프로그램)

Q) 어떻게 구현하는게 좋을까요?

원래는 사용자에게 권한을 가진 세션을 부여해서 하는게 맞지만, 현재 SAP세션을 받아서 쓰고 있다 보니, 그럴 수 없어서 
두 가지의 경우로 나누어 보아 1차 구상 해보았다. 

  • 리포트프로그램으로 구현시
    • 특정 권한만 가진 사원을 기준으로 잡고 진행
    • 예를들어 내가 특정 권한만 가진 사원인거임(내가 유저)나한테 온 문서에 대한 반려/승인은 가능, 다른건 불가
    • 결재 기안은 가능. 나에게 할당된 문서만 볼 수 있음
  • 모듈풀로 구현시
    • 시나리오상: 모든 권한을 가진 팀장이라고 생각하고 진행결재문서도 날릴 수 있고 / 반려 / 승인 .. / 등을 할 수 있는 것
    • 예를들어, 모든 권한을 가진 팀장이라고 생각하고 진행 하는 것

승인/반려 모듈풀

  1. 구매요청 생성 후 [기안] 버튼 누르면 해당 상세페이지 팝업으로 띄우고 <결재 권한자 선택> 후,
    -> [기안] 하면 "기안올리시겠습니까?" 이렇게 뜨고
    -> [확인] 누르면 <결재대기 상태로 바뀜>
  2. 결재(승인/반려) 프로그램에서 <결재대기> 상태로 위의 문서가 들어옴
  3. 결재문서를 <PO번호 핫스팟으로 PO상세페이지>를 넘어가서 확인 후에 맞으면 [승인]
  4. 반려면 [반려] 하고 <반려 사유> 작성하게 함

궁금한 점
1번 후에 고민사항은 원래 회사에서는 여기서 결재를 날리는지 이렇게 뭐를 넘기면,
그룹웨어로 가서 거기서 결재선 상세 선택 + 결재 올리는 문구 이렇게 하는지 궁금함

 

결재 시나리오

✏️ 1차 구현 시나리오

① 구매요청 단계 (PR)

  • 유저가 구매요청 생성
  • [기안] 버튼 클릭 → 결재 요청 발생
  • ZTMKAP(결재 테이블)에 INSERT
  • PR 상태: ‘결재대기(P)’
  • 팀장 프로그램에서 결재 승인/반려 처리
    • 승인 시: PR 상태 = ‘승인(A)’
    • 반려 시: PR 상태 = ‘반려(R)’, 반려사유 저장

② 구매오더 단계 (PO)

  • 결재가 승인된 PR만 PO 생성 가능
  • PO 생성 후에는 결재 프로세스 없이 바로 GR팀으로 전달
  • (이 부분은 후에 필요하면 “금액 기준 결재”로 확장 가능)

✅ 구매팀 프로세스 반영

  • PR 단계에서 예산/구매 필요성 승인
  • 승인 후 PO 작성 → 구매팀 발주 진행
  • PO단계 결재는 보통 금액이 크거나 외주건일 때만 추가로 건다고 알고 있음

✅ 정리

단계 결재 여부 설명

구매요청(PR) ✅ 있음 결재 프로세스 시작(기안/승인/반려)
구매오더(PO) ❌ 없음 승인된 요청만 발주 가능

구매요청에서 결재 기안 → 승인 시 2. PO 작성 가능

 

'SAP ERP 프로젝트 > 설계' 카테고리의 다른 글

[AP] PO 결재 프로그램 설계  (0) 2025.10.09
[설계] PO-INVOICE-GL / SO-INVOICE-GL  (0) 2025.10.03
[시나리오] PO-GR-GL  (0) 2025.09.19
[설계] PO 스크린 설계 2  (0) 2025.09.19
[설계] PO 스크린 설계 1  (0) 2025.09.19

1차 설계안 (251008)

테이블 설계

 

PO HEADER 테이블 확장

파란색 부분이 추가된 필드

 


2차 설계안 (251009)

 

담당부서 및 결재자/결재 요청자를 구분해서 결재에 대한 책임 소재를 더욱 구분케함.

지금은 세션관리를 하지 못하는 상황이지만, 본인 세션에만(아이디에만) 해당되는 검색조건으로 결재 문서들을 조회할 수 있도록 하기 위해서.
특히나 나는 해당 사용자가 <구매N팀의 팀장> 이라는 특정 포지션의 페르소나(가상의 인물)을 설정하고 구현한 AP프로그램이기에 위에처럼 설계를 확장함. 

+ Recent posts