| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- RAP CDS
- MTO
- PP흐름
- SD모듈공부
- RAPPACKAGE
- 환율조회
- CDS
- FI
- RAP설계
- RAP기초
- 도메인텍스트매핑
- RAPCDS
- TOPOFPAGE
- 월말계산
- 툴바제거
- CL_GUI_TIMER
- PP모듈공부
- 라디오 버튼 동적
- ABAP
- ABAP API
- VALUE #( FOR )
- 엑셀 템플릿 다운
- CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- CDSVIEW설게
- Rap
- TEXTVEIW
- texttable
- MM모듈공부
- ABAP환율
- MAKEFCAT변경
- Today
- Total
목록전체 글 (24)
셜록이2
글로벌 SAP 비즈니스 환경에서는 다국어 지원(Text Table)과 안전한 동시성 제어(Draft & Lock)가 필수적입니다. ABAP RAP 모델은 부모(헤더)와 자식(텍스트) 뷰를 Composition으로 강력하게 연결하여 하나의 비즈니스 오브젝트(BO)로 관리합니다. 여기에 Draft 기능을 추가하면, 사용자가 데이터를 작성하는 도중 임시 저장 테이블에 내용이 보관되며, 다른 사용자의 중복 편집을 막는 Lock이 자동으로 걸려 데이터 무결성을 완벽하게 보호할 수 있습니다. 1단계. 테이블 생성헤더 테이블 (zta10skill01) — 기본 정보 텍스트 테이블 (zta10skill_t) — 언어별 텍스트 (다국어 지원용)last_changed_at : abp_lastchange_tstmpl;..
배포 모델부터RAP을 배우는 이유는 결국 "어디서 개발하느냐"가 바뀌었기 때문이다.구분On-PremisePublic CloudPrivate Cloud서버 위치회사 자체 데이터센터SAP 데이터센터(멀티테넌트)SAP 데이터센터(단일테넌트)커스터마이징 자유도매우 자유로움 (SE11 GUI 다 됨)매우 제한적자유로움 (Classic + RAP 둘 다)개발 방식Classic ABAP 위주ABAP Cloud(define table 등)만 가능Classic + Cloud 둘 다업그레이드회사가 직접 관리SAP가 정기 강제 업데이트어느 정도 컨트롤 가능비용 구조초기 투자비 큼구독료(사용량 기반)구독료 + 커스텀 비용Public Cloud로 갈수록 GUI에서 마음대로 만드는 방식이 막힌다.그래서 코드(DDL)로 정의하는 ..
문법보다 이 챕터가 더 중요하다. RAP은 코딩이 아니라 설계다.itab이 아니라 View로데이터를 내부 테이블(itab)에 담아 처리하기보다, 스탠다드는 CDS View로 대체하는 게 좋다. S/4HANA 방향이 그렇다.프로그램에서 이 데이터를 어떻게 쓸지를 먼저 고민해야 한다.어디에 로직을 넣을 것인가목적어디에조회 / 표시View저장 시점의 검증 / 트랜잭션 로직Behavior"View에 넣을 문제인가, Behavior에 넣을 문제인가"를 구분하는 게 설계의 핵심이다. 이 기준은 앞으로 계속 나온다.실습 — SBOOK 월별 예약/취소 집계항공사별로 연도·클래스별 월간 예약/취소 건수를 집계하는 문제. 유지보수와 재사용성을 고려해 View를 5개로 쪼갠다.EX11 SBOOK 원본을 필드명 정규화해서 ..
Text View — 코드를 텍스트로DB 테이블에는 코드값만 있다. GESCH = '1'이 뭘 뜻하는지 테이블만 봐서는 알 수 없다. 화면에서는 코드와 텍스트를 같이 보여줘야 한다.도메인 Fixed Value의 텍스트는 SAP가 제공하는 인터페이스 뷰 I_DomainFixedValueText로 가져온다. 도메인 테이블(DD07T 등)을 직접 조인하지 않는다.@AbapCatalog.viewEnhancementCategory: [#NONE]@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.label: '[A10] 성별 Text (Domain Fixed Value)'@Metadata.ignorePropagatedAnnotations: truedefin..
클라우드 패키지 생성 ( 연습 ZLOCAL )패키지에 TABLE 만들기같은 Transparent Table이지만 만드는 방식과 지향점이 다르다.finshclient 가 생겼다. sap gui 랑 다름/LRN/437T_TRAVEL → 클라우드 기반으로 만들어진 테이블핵심 차이 정리구분(SE11) (define table)만드는 방법GUI 화면에서 클릭/입력ADT에서 코드(DDL)로 작성결과물동일하게 Transparent Table동일하게 Transparent Table개발 모델Classic ABAPABAP Cloud (RAP 지향)데이터 타입Data Element 경유abap.xxx built-in type 직접 사용유지보수SM30 등 자유로움dataMaintenance: #RESTRICTED로 제한 가능..
beforeWHEN gv_all_node. LOOP AT gt_data INTO gs_data WHERE belnr IS NOT INITIAL. APPEND gs_data TO gt_data_disp. ENDLOOP.WHEN gv_ar_node. LOOP AT gt_data INTO gs_data WHERE ar_ap = 'AR' AND belnr IS NOT INITIAL. APPEND gs_data TO gt_data_disp. gv_check_node = 'AR'. ENDLOOP.WHEN gv_ap_node. LOOP AT gt_data INTO gs_data WHERE ar_ap = 'AP' AND belnr IS NOT INITIAL. APPEND gs_data T..
SAP Module Pool 프로그램에서 ALV Grid 상단에 요약 정보를 표시할 때 cl_dd_document를 사용합니다. HTML의 영역처럼 텍스트, 아이콘, 테이블, 링크 등을 자유롭게 배치할 수 있는 동적 문서 오브젝트입니다.1. 전역 변수 선언 abapDATA: gcl_top_con TYPE REF TO cl_gui_container, " 상단 컨테이너 (Splitter에서 꺼낸 것) gcl_doc_top TYPE REF TO cl_dd_document. " TOP OF PAGE 문서 오브젝트 2. 오브젝트 생성 (FORM create_top_doc)cl_dd_document는 프로그램 시작 시 한 번만 CREATE OBJECT 합니다.set_top_page에서는 매번..
ABAP GUI Module Pool SAP ABAP Splitter Container 완벽 가이드 cl_gui_splitter_container로 화면을 상하·좌우·중첩 분할하는 모든 방법 개요 SAP Module Pool 프로그램에서 하나의 화면을 여러 영역으로 나눌 때 cl_gui_splitter_container를 사용합니다. 이 클래스는 HTML의 grid/flex 레이아웃과 유사하게, rows × columns 격자로 화면을 분할하고 각 셀에서 컨테이너를 꺼내 자식 GUI 오브젝트(ALV Grid, Tree, Chart 등)를 붙이는 방식으로 동작합니다. 핵심 원칙: Splitter는 부모 컨테이너를 분할하는 도구입니다. 최..
개요사용자에게 업로드용 엑셀 템플릿을 제공할 때 가장 깔끔한 방법은SMW0에 템플릿 파일을 등록해두고 DOWNLOAD_WEB_OBJECT로 내려받는 패턴임. 1단계 — SMW0 템플릿 등록SMW0 트랜잭션 → Binary Data 선택 → 업로드등록 후 Object ID를 기억해둠 (예: ZPE3QM_EXCEL)SAP는 등록된 파일 정보를 WWWDATA 테이블에 저장함.컬럼설명OBJIDObject ID (SMW0 등록명)RELID데이터 종류 구분 2단계 — 코드 구현① WWWDATA에서 키 조회 abapDATA ls_key TYPE wwwdatatab.SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_key FROM wwwdata WHERE objid = 'ZP..
배경CL_GUI_ALV_GRID 기본 툴바에는 편집용 버튼들이 기본으로 활성화되어 있음.조회 전용 ALV인데 사용자가 행 삭제/추가를 할 수 있으면 UX상 혼란을 줌.it_toolbar_excluding 파라미터로 원하는 버튼만 골라서 제거 가능. "불필요한 툴바 제거 gt_exclude = VALUE #( ( cl_gui_alv_grid=>mc_fc_loc_undo ) "UNDO 제거 ( cl_gui_alv_grid=>mc_fc_loc_cut ) "CUT ( cl_gui_alv_grid=>mc_mb_paste ) "PASTE ..
배경ALV에 코드값(SA, 01)만 표시하면 사용자가 의미를 알 수 없음.ZDE3_FI_BLART = SA → 일반전표 처럼 텍스트로 변환해서 보여줘야 함.SAP는 도메인 고정값(Fixed Values)의 텍스트를 DD07T 테이블에 저장함.DD07T 구조컬럼 설명DOMNAME도메인명 (예: ZDE3_FI_BLART)DOMVALUE_L코드값 (예: SA)DDTEXT텍스트 (예: 일반전표)DDLANGUAGE언어키 (WHERE 빠지면 전체 언어 조회됨 주의)코드 분석① 도메인 텍스트 Bulk SELECTSELECT domvalue_l AS key, ddtext INTO TABLE @DATA(lt_stgrd) FROM dd07t WHERE domname EQ 'ZDE3_FI_STGRD'.SORT lt_s..
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' EXPORTING day_in = sy-datum " Key date IMPORTING last_day_of_month = lv_date. " Date of last day of the month from key date DATA(ls_header) = VALUE zte3fi0002( bukrs = '1000' blart = 'SA' waers = 'KRW' budat = lv_date "월..
TOP 선언" ===== 트리 관련 전역 선언 =====" 노드 키 (filter_detail에서 루트 판단)DATA: gv_all_node TYPE lvc_nkey, gv_sel_node TYPE lvc_nkey." 데이터 테이블DATA : BEGIN OF gs_data, END OF gs_data, gt_data LIKE TABLE OF gs_data, " 트리용 마스터 gt_make_tree LIKE TABLE OF gs_data. " 트리 내부 outtab" CDS 기반 그리드용DATA: gs_item TYPE zcds_e3_cm_0001_i, gt_item LIKE TABLE OF gs_item." 컨테이너 / 트리 / 그리드 객체D..
딕셔너리에 있는 테이블만 가능함. itab 불가FORM set_fcat_layout . gs_layout-zebra = 'X'. gs_layout-cwidth_opt = 'A'. gs_layout-sel_mode = 'D'. gs_layout-grid_title = TEXT-t02. gs_layout-smalltitle = 'X'. gs_layout-stylefname = 'STYLE'. gs_stable-row = 'X'. gs_stable-col = 'X'. "================================================== " FCAT 생성 (DDIC 기준) "==============================================..
1. 도메인 fixed value 에 있는 값 받아서 바꾸기 2. 직접 지정해서 바꾸기 데이터를 받고 그 값을 루프 돌려서 필드를 바꿔준다.도메인 값을 받을 수도 있고 하나 하나 지정도 가능하다. stats 가 char(2) 여서 stats_txt 를 선언하고 필드에 추가하였음. 사용자가 알아보기 쉽다.
CL_GUI_TIMER 기본 구조" 선언DATA: gcl_timer TYPE REF TO cl_gui_timer, gcl_handler TYPE REF TO lcl_handler. " 이벤트 핸들러 클래스" 핸들러 클래스CLASS lcl_handler DEFINITION. PUBLIC SECTION. METHODS: on_timer FOR EVENT finished OF cl_gui_timer.ENDCLASS.CLASS lcl_handler IMPLEMENTATION. METHOD on_timer. " 타이머 실행 시 동작할 로직 ENDMETHOD.ENDCLASS. 활용 방안 5가지1. 저장 후 자동 화면 초기화METHOD on_timer. " 2초 후 화면 리셋 PE..
TCURR 스탠다드 프로그램 참고해서 CBO TABLE 생성 FORM get_api . gv_date = sy-datum. " 주말/공휴일 대비 최근 5일 재시도 DO 5 TIMES. CLEAR: gv_json, gt_json. gv_url = |https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON?| && |authkey={ gc_key }&searchdate={ gv_date }&data=AP01|. CALL METHOD cl_http_client=>create_by_url EXPORTING url = gv_url IMPORTING client =..
MTO(Make To Order)는고객 주문이 들어온 이후에 생산을 시작하는 방식이다.MTS와 달리 재고를 미리 쌓아두지 않고,👉 주문 단위로 맞춤 생산이 이루어진다.🔁 전체 흐름👉 판매오더 → MRP → 계획오더 → 생산오더 → 생산 → 납품 → 청구1️⃣ 판매 오더 (Sales Order)MTO는 반드시 고객 주문으로부터 시작된다.고객 요청 제품 / 수량 / 납기 확정해당 주문이 생산의 기준이 됨👉 “이 주문을 위해 생산한다”는 개념2️⃣ 자재 소요 계획 (MRP)판매 오더를 기반으로생산에 필요한 자재를 계산한다.✔ 수행 내용해당 주문에 필요한 자재 산출재고 확인부족 자재 식별✔ 결과내부 생산 → 계획오더 생성외부 조달 → 구매요청(PR) 생성👉 MTS와 다르게 “특정 주문에 종속된 MRP”..
SAP PP(Production Planning)에서 MTS(Make To Stock)는수요를 예측하여 미리 생산하고 재고로 판매하는 방식이다.즉, 고객 주문 전에 생산이 먼저 이루어진다.🔁 전체 흐름👉 생산계획 → MRP → 계획오더 → 생산오더 → 생산 → 생산실적입력1️⃣ 생산 계획 (Production Planning)생산 프로세스는 판매 계획을 기반으로 시작된다.과거 판매 데이터 및 예측 기반 계획 수립미래 수요를 대비한 생산량 결정예를 들어,👉 “3분기 판매를 위해 2분기에 미리 생산”즉, MTS는 재고 확보가 핵심 목적이다.2️⃣ 자재 소요 계획 (MRP)MRP(Material Requirements Planning)는생산에 필요한 자재가 충분한지 확인하는 단계다.✔ 수행 내용완제품 생..
SAP에서 자재 조달은 단순 구매가 아니라**생산 계획(PP) → 자재 소요 계산 → 구매(MM) → 회계(FI)**까지 이어지는 통합 프로세스다.🔁 전체 흐름👉 MRP → 구매요청(PR) → 구매오더(PO) → 입고(GR) → 송장 검증 → 대금 지급1️⃣ 자재 소요 계획 (MRP / CBP)프로세스는 PP 영역의 자재 소요 계산에서 시작된다.MRP(Material Requirements Planning)CBP(Consumption-Based Planning)이 단계에서는 다음을 수행한다.생산 계획 기반 자재 필요량 계산재고 확인부족 시 조달 필요 판단👉 결과: 필요 자재 수량 확정 + 구매 요청 생성2️⃣ 내부 생산 vs 외부 조달자재 부족이 발생하면 두 가지 선택지가 있다.✔ 내부 생산 (PP..