반응형

전체 글 73

[ABAP_신문법 9-2] GROUP BY 번외편 — LOOP AT GROUP과 REDUCE를 한 루프에서 같이 쓰기, 그리고 COLLECT였다면

# [ABAP] GROUP BY 번외편 — LOOP AT GROUP과 REDUCE를 한 루프에서 같이 쓰기, 그리고 COLLECT였다면> ABAPer의 ABAP린이 탈출기 🚀9편에서 그룹 내용물을 처리하는 두 가지 방법을 소개했다. 문(statement) 버전인 `LOOP AT GROUP`, 식(expression) 버전인 `FOR ... IN GROUP`(+`REDUCE`). 그때는 마치 **둘 중 하나를 고르는 관계**처럼 보였을 것이다.그런데 실무 요구사항은 보통 이렇게 온다.> "거래처별로 **명세서**를 만들어주세요. 주문 상세 라인을 쭉 보여주고, 맨 아래에 **정상 건만의 소계**를 붙여서요."상세 라인은 **행마다** 만들어야 하고(문의 영역), 소계는 그룹을 **값 하나로** 접어야 한..

ABAP 2026.08.26

[ABAP_신문법 9-1] GROUP BY 실전 5장면 — 소계, 패키지 처리, 버킷팅, 중복 검출, 목록 추출

ABAPer의 ABAP린이 탈출기 🚀지난 글(9편)에서 LOOP AT ... GROUP BY의 원리 — 2단계 실행, 두 가지 바인딩, 멤버 루프 — 를 정리했다. 이번엔 이론은 접어두고 실전이다. "이거 그룹핑으로 되는 일이었네?" 싶은 실무 장면 다섯 개를 골랐다. 전부 공식 문서의 예제(Examples of Grouping with LOOP)에 뿌리를 둔 패턴이고, 데이터는 시리즈 내내 쓰던 주문 테이블로 통일한다.TYPES: BEGIN OF ty_order, custid TYPE kunnr, " 거래처 matnr TYPE matnr, " 자재 budat TYPE d, " 전기일 amount ..

ABAP 2026.08.24

[ABAP_신문법 9] LOOP AT ... GROUP BY — "정렬하고 AT NEW" 중간합계는 이제 그만

[ABAP] LOOP AT ... GROUP BY — "정렬하고 AT NEW" 중간합계는 이제 그만ABAPer의 ABAP린이 탈출기 🚀장바구니를 카테고리별로 묶어서 소계를 내야 한다고 하자. 거래처별 주문 합계, 자재별 재고 소계 — 이름만 바꾸면 ABAP 리포트의 영원한 단골인 그 일이다. 그리고 우리가 배운 방법은 대개 이거였다.SORT lt_items BY catg. " 1. 먼저 정렬하고LOOP AT lt_items INTO ls_item. AT NEW catg. " 2. 그룹 시작에서 초기화 CLEAR lv_sum. ENDAT. lv_sum = lv_sum + ls_item-price. AT END OF catg. ..

ABAP 2026.08.21

[ABAP_신문법 8-1] FILTER 실전 5가지 — 분리 처리, 세미/안티 조인, 범위 추출, 3형제 합주

[ABAP] FILTER 실전 5장면 — 분리 처리, 세미/안티 조인, 범위 추출, 3형제 합주ABAPer의 ABAP린이 탈출기 🚀8편에서 FILTER 연산자의 문법과 결정적 조건 — 키(key) — 을 정리했다. 이번엔 실전이다. 키 요건 때문에 "선언부터 준비된 테이블"이 필요한 연산자인 만큼, 이 글의 예제는 전부 테이블 선언까지 포함해서 보여준다. 공식 문서의 예제(Examples of Table Filtering)에 뿌리를 둔 장면 다섯 개다.TYPES: BEGIN OF ty_order, custid TYPE kunnr, matnr TYPE matnr, budat TYPE d, amount TYPE p LENGTH 13 DECIMAL..

ABAP 2026.08.19

[ABAP_신문법 8] FILTER 연산자 — 거르기 전용 신문법, 대신 키(key)가 있어야 한다

[ABAP] FILTER 연산자 — 거르기 전용 신문법, 대신 키(key)가 있어야 한다ABAPer의 ABAP린이 탈출기 🚀6편에서 필터링을 VALUE #( FOR ... WHERE ( ... ) )로 했었다. 그런데 "행을 가공하지 않고 거르기만" 하는 경우라면, 공식 문서가 한 단계 더 좋은 걸 준다. FILTER 연산자다. 문서 표현 그대로, 테이블 필터링이라는 특수 케이스에 대한 단축형이면서 실행도 더 효율적이다." 6편 방식 — 되긴 되지만DATA(lt_fruit) = VALUE tt_items( FOR ls IN lt_items WHERE ( catg = '과일' ) ( ls ) )." FILTER — 거르기 전용DATA(lt_frui..

ABAP 2026.08.17

[SAP_SD] 자재 구매 수량 구간 별 단가 등록하기: 판가 생성(VK11)에서 Scale 설정 방법

1. 들어가며SAP SD에서는 동일한 자재라도 주문수량 구간에 따라 서로 다른 단가를 적용할 수 있다.예를 들어 자재 ZMAT100-A01의 가격정책이 다음과 같다고 가정해보자.주문수량적용 단가1 EA 이상100 USD100 EA 이상90 USD500 EA 이상80 USD판매오더에서 해당 자재를 120 EA 주문하면 100 EA 이상 구간의 단가인 90 USD가 적용된다.이를 SAP SD에서는 Quantity Scale, 즉 수량 Scale이라고 한다.SAP Pricing Scale은 조건레코드에 수량 또는 금액 구간별로 서로 다른 가격을 등록하는 기능이다. Scale 기준은 수량, 금액, 총중량, 순중량, 부피 또는 별도 공식으로 설정할 수 있으며, 조건유형의 Scale Basis 설정에 따라 결정된다..

SAP_SD 2026.08.10

[ABAP_신문법 7-2] REDUEC 응용: 객체 리덕션과 메서드 체인

[ABAP] REDUCE 번외편 — 숫자만 모으라는 법 있나: 객체 리덕션과 메서드 체인ABAPer의 ABAP린이 탈출기 🚀7편에서 REDUCE를 마트 계산대에 비유했다 — 계산기 리셋(INIT), 물건 하나씩(FOR), 계산기에 반영(NEXT). 그런데 곰곰이 생각해 보면, 점원 손에 꼭 계산기를 들려줘야 한다는 법은 없다. 공책을 들려주면 물건 이름을 받아 적을 것이고, 바구니를 들려주면 물건을 담을 것이다.REDUCE도 똑같다. INIT 변수의 타입에는 제한이 없다. 숫자, 문자열은 물론이고 — 객체 참조도 된다. 이번 번외편은 공식 문서의 이색 예제 두 개, "객체로 줄이기(Method Calls)"와 "중첩 테이블 줄이기(Multiple FOR)"를 해부한다. (근거는 SAP 공식 ABAP K..

ABAP 2026.08.07

[ABAP_신문법 7-1] REDUCE 활용 예제 5가지 — 오류 리포트 조립부터 전표 검증까지

[ABAP] REDUCE 활용 예제 5가지ABAPer의 ABAP린이 탈출기 🚀7편에서 REDUCE의 네 박자 — 계산기 리셋(INIT) → 한 행씩(FOR) → 계산기에 반영(NEXT) → 계산기 값이 결과 — 를 배웠다. 레시피 7개와 실무 상황 3가지도 봤다. 이번 글은 그 응용편이다. 본편의 레시피를 그대로 실무 문서에 갖다 댔을 때 한 끗이 모자라는 순간들 — 구분자가 하나 남고, 첫 행이 뭔지 모르고, 헤더와 라인이 안 맞는 순간 — 을 다섯 장면으로 골랐다. (근거는 SAP 공식 ABAP Keyword Documentation, Release 740 기준이다.)장면 1~3은 아래 공용 데이터를 끝까지 들고 간다.TYPES: BEGIN OF ty_order, docno TYPE..

ABAP 2026.08.05

[ABAP_신문법 7] REDUCE — 인터널 테이블에서 COLLECT, AT구문 대신 합계·카운트·조립을 한 문장으로

[ABAP] REDUCE 테이블 리덕션 — 합계 구하는 LOOP, 이제 한 문장으로 끝낸다ABAPer의 ABAP린이 탈출기 🚀ABAP를 하다 보면 하루에도 몇 번씩 쓰는 패턴이 있다. 변수 하나 만들어 놓고, 루프 돌면서 차곡차곡 더하기.DATA lv_total TYPE p LENGTH 10 DECIMALS 2.LOOP AT lt_items INTO DATA(ls_item). lv_total = lv_total + ls_item-price.ENDLOOP.합계, 건수 세기, 최대값 찾기, 문자열 이어붙이기 — 모양만 다르지 전부 이 패턴이다. 7.40부터는 이걸 표현식 한 문장으로 쓸 수 있다. 그 도구가 바로 REDUCE다.DATA(lv_total) = REDUCE ty_price( INIT sum ..

ABAP 2026.08.03

[ABAP_신문법 6-2] — CORRESPONDING vs VALUE FOR, "테이블에서 테이블 만들기"의 두 가지 방법

[ABAP] 테이블 컴프리헨션 번외편 — CORRESPONDING vs VALUE FOR, 두 도구의 경계선 긋기ABAPer의 ABAP린이 탈출기 🚀6편에서 VALUE #( FOR ... ) 컴프리헨션을 배우고 나면 묘한 기시감이 든다. "테이블에서 테이블 만들기"… 이거 1편의 CORRESPONDING #( )도 하던 일 아닌가? 맞다. 두 도구의 영역이 겹친다. [ABAP_신문법 6]VALUE #( FOR ... ) — LOOP + APPEND를 한 문장으로[ABAP] VALUE #( FOR ... ) 테이블 컴프리헨션 — LOOP + APPEND를 한 문장으로ABAPer의 ABAP린이 탈출기 🚀내부 테이블을 다루는 코드에서 제일 흔한 패턴을 하나만 꼽으라면 이거다. LOOP 돌면서 가공해서 AP..

ABAP 2026.07.31
반응형