본문 바로가기

분류 전체보기21

[ABAP] 출력 제어(Output Control) - Inbound Delivery 및 Invoice 생성하기 처음 목표와는 다르게 글 올라가는 간격이 벌어지네요ㅠㅠ업무가 바쁘다는 핑계로 며칠만에 글을 올립니다. 매일 반복되는 구매 발주서 인쇄, 거래명세서 출력 등 이런 단순 반복 업무를 별도의 프로그램으로 만들어 제공 하고 있을 것입니다.이런것은 그냥 생성(또는 릴리즈) 되면 자동으로 됐으면 좋겠다. 라는 생각을 한번쯤 하셨을 것입니다. 그래서 오늘은 SAP 출력제어(Output Control)를 알아볼까 합니다. 제가 MM담당자 이므로 많은 출력제어 중 Inbound Delivery 및 Invoice를 자동으로 만드는 것을 해보겠습니다. 이런 기능은 SAP에서 제공하고 있습니다. 출력 제어는 조건 결정 기법(Condition Technique)이라는 똑똑한 로직을 사용합니다. 이름은 어렵지만 원리는 간단해.. 2025. 7. 10.
[ABAP] Part 2 - 시점별 재고 ( 전통적인ABAP + ALV 리포트) 이번엔 전통적인 ABAP로 구현해 보겠습니다. 특정 시점의 재고를 확인하기 위해서는 처음부터 모든 전표의 입고/출고를 계산하면 됩니다.문제는 모든 전표를 계산하기에는 데이터가 많을수록 성능에 문제가 발생할 것입니다.그래서 월 마감 재고와 알고자하는 날짜의 1일~ 검색일까지의 변동분을 전표 테이블에서 계산하면 됩니다. 이전일 PART 1 CDS VIEW 구현2025.07.05 - [ABAP] - [ABAP] Part 1 - 시점별 재고 (CDS View + ALV 리포트)핵심 로직: 월 마감 재고 + 해당 월 변동분 계산단순히 과거부터 모든 자재 이동 내역(MSEG)을 읽어와 합산하면 데이터가 많을 경우 엄청난 성능 저하를 유발합니다. 가장 효율적인 방법은 아래와 같습니다.기준일 재고 = (조회하려는 달.. 2025. 7. 5.
[ABAP] Part 1 - 시점별 재고 (CDS View + ALV 리포트) 실제로 SAP 유지보수를 하다면 과거 재고를 알고 싶어 하는 니즈가 많습니다. 여러분들도 한번쯤은 요청을 받은 내용일 것이라 생각합니다. 이런 요구사항이 있을때는 제일 먼저 이야기 하는것인 MB5B가 있습니다. 스탠다드 프로그램이죠~이것을 소개해 드리면 "이미 이런것이 있었군요. 라고 하며 확인 해 보겠다고 합니다."하지만 십중팔구는 "좋긴한데요... 제가 원하는것과는 잘 안맞는것 같아요." 라고 답변이 옵니다. 물론 MB5B 좋은 레포트긴 하지만 아마도 활용도는 떨어집니다.말이 길었지만 아래와 같은 이야기를 많이 할것입니다. '기초 재고'의 의미: MB5B의 '기초 재고(Opening Stock)'는 조회 시작일의 00:00시 재고가 아니라, 전일 마감 재고를 의미합니다. 예를 들어 7월 5일을 조회 .. 2025. 7. 5.
[ABAP] 표준 자재 검색(F4)에 나만의 탭 추가하기 (Append Search Help) 프로젝트 및 운영업무 중 ABAP 개발을 하다 보면 "표준 기능에 딱 하나만 더 있었으면..." 하는 아쉬운 순간을 자주 마주합니다. 특히, 자재 마스터를 찾는 F4 Search Help는 강력하지만, 우리 회사만의 기준으로 자재를 찾은 요구사항이 거의 백이면 백 존재합니다.표준으로 써도 될것 같은데 약간의 불편함(?)..이렇게 말하면 고객지향이 아니겠죠?회사 業만의 특성에 따라 검색을 편리하게 바꿔 달라는 요구사항이 있습니다.지금 회사에서도 역시 그런 요구사항이 나왔습니다.특정 자재가 1물 2코드가 되었다. ECC에서 사용하는 자재코드인데 마이그레이션과 과거 데이타로 한시적으로 사용된다.그러나 반품이 있기에 삭제는 불가능한다. 사용자들의 그 자재를 선택하지 못하도록 검색에서부터 없애 달라..라는 요구사.. 2025. 7. 2.
[ABAP] 재고는 있는데 재고 부족? BAPI 이슈 해결 주말은 주식장이 안 열리기에 주중에 있던 것을 정리해봤습니다.그중에서 미스터리 소설 같았던 기술적 난제를 해결한 경험을 공유하려 합니다.시스템은 분명 "재고가 있다"고 하는데, 정작 BAPI는 "재고가 없다"고 외치는, 개발자라면 뒷목 잡게 만드는 그런 상황이었죠. 제가 겪었던 문제의 본질, LUW(Logical Unit of Work) 처리방안을 공유하겠습니다.사건의 발단: 복합적인 STO 입고 취소 프로세스먼저 저희 업무 시나리오를 이해하셔야 합니다. 플랜트 간 재고를 이전하는 STO(Stock Transport Order) 프로세스와 생산 오더가 얽혀있는 복잡한 구조입니다.STO 입고(MM): 입고 플랜트에서 해당 자재를 입고합니다. (이동유행 101)생산(PP): 입고된 자재를 사용하여 생산 .. 2025. 6. 29.
[ABAP] 엑셀로 구매정보레코드(Info Record) 대량 생성/변경 제가 주로 운영/개발하는 모듈은 MM 입니다. 공급업체와의 단가 계약이 갱신되거나 신규 자재가 대량으로 입고될 때마다 수많은 정보레코드를 수작업으로 수정해야 하는 불편함이 있습니다. 이런 단순 반복 작업에 드는 시간을 줄이고, 더 가치 있는 일에 집중하고 싶다는 생각, 다들 한 번쯤 해보셨을 겁니다.그래서 오늘은, 이러한 반복 작업을 자동화하고 더 나아가 시스템 간 데이터 마이그레이션까지 대응하기 위해 정보레코드 일괄 처리 프로그램을 공유해볼까 합니다.지난번에 PO생성 프로그램에 이어 이번에는 정보레코드 생성 프로그램입니다.2025.06.28 - [ABAP] - [ABAP] BAPI_PO_CREATE1(엑셀 업로드) [ABAP] BAPI_PO_CREATE1(엑셀 업로드)이번엔 엑셀업로드로 PO 만드는 .. 2025. 6. 29.