계속 managed 를 써오다가 갑자기 로그 테이블이랑 일반 테이블이랑 두개를 넣으려고하니까
Managed 를 사용하면 안된다고한다.
그래서 unmanaged with 를 사용해서 코딩을해봄.
당장은 create 만 가능하게 만들었다.

로그 테이블 - zppt_0010_t
데이터 들어가는 테이블 - zppt_0030_t
LEFT OUTER JOIN 을 사용한 이유는 왼쪽에 있는 테이블 (_item > ZPPT_0010_T)의 모든 레코드를 결과에 포함헤서이다.
[ zppt_0010_t ]
@EndUserText.label : 'ROG_T'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zppt_0010_t {
key client : abap.clnt not null;
key werks : werks_d not null;
key stlan : stlan not null;
key stlal : abap.char(2) not null;
key matnr : matnr not null;
zindex : abap.numc(20) not null;
idnrk : idnrk;
@Semantics.quantity.unitOfMeasure : 'zppt_0010_t.meins'
menge : menge_d;
meins : meins;
lgort : lgort_d;
beikz : beikz;
alpgr : cs_alpgr;
alprf : cs_alprf;
ewahr : ewahr;
@EndUserText.label : 'Approval Ind(Y/N)'
zappr : abap.char(1);
@EndUserText.label : 'PO Ind(Y/N)'
zpoyn : abap.char(1);
stlnr : pph_stnum;
createdby : abap.char(12);
createdat : abap.tims;
lastchangedby : abap.char(12);
lastchangedat : abap.tims;
locallastchanged : abap.tims;
}
[ zppt_0030_t ]
@EndUserText.label : '실제 들어가는 T'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zppt_0030_t {
key client : abap.clnt not null;
key werks : werks_d not null;
key stlnr : pph_stnum not null;
key stlan : stlan not null;
@EndUserText.label : 'Alternative BOM'
key stlal : abap.char(2) not null;
key matnr : matnr not null;
@EndUserText.label : 'Index Key'
zindex : abap.numc(20) not null;
ztype : abap.char(1) not null;
@EndUserText.label : 'Design Location 1'
zloc1 : abap.char(200);
@EndUserText.label : 'Design Location 2'
zloc2 : abap.char(200);
@EndUserText.label : 'Design Location 3'
zloc3 : abap.char(200);
@EndUserText.label : 'Design Location 4'
zloc4 : abap.char(200);
@EndUserText.label : 'Design Location 5'
zloc5 : abap.char(200);
@EndUserText.label : 'Design Location 6'
zloc6 : abap.char(200);
@EndUserText.label : 'Design Location 7'
zloc7 : abap.char(200);
@EndUserText.label : 'Design Location 8'
zloc8 : abap.char(200);
@EndUserText.label : 'Design Location 9'
zloc9 : abap.char(200);
@EndUserText.label : 'Design Location 10'
zloc10 : abap.char(200);
createdby : abp_creation_user;
createdat : abp_creation_tstmpl;
lastchangedby : abp_lastchange_user;
lastchangedat : abp_lastchange_tstmpl;
locallastchangedat : abp_locinst_lastchange_tstmpl;
}
[ ZR_PPT_0030_T] – Data Definition
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '##GENERATED ZPPT_0030_T'
define root view entity ZR_PPT_0030_T
as select from zppt_0030_t
{
key werks as Werks,
key stlnr as Stlnr,
key stlan as Stlan,
key stlal as Stlal,
key matnr as matnr,
zindex as Zindex,
ztype as Ztype,
zloc1 as Zloc1,
zloc2 as Zloc2,
zloc3 as Zloc3,
zloc4 as Zloc4,
zloc5 as Zloc5,
zloc6 as Zloc6,
zloc7 as Zloc7,
zloc8 as Zloc8,
zloc9 as Zloc9,
zloc10 as Zloc10,
@Semantics.user.createdBy: true
createdby as Createdby,
@Semantics.systemDateTime.createdAt: true
createdat as Createdat,
@Semantics.user.lastChangedBy: true
lastchangedby as Lastchangedby,
@Semantics.systemDateTime.lastChangedAt: true
lastchangedat as Lastchangedat,
@Semantics.systemDateTime.localInstanceLastChangedAt: true
locallastchangedat as Locallastchangedat
}
[ ZC_PPT_0030_T] – Data Definition
@AccessControl.authorizationCheck: #NOT_REQUIRED
@Metadata.allowExtensions: true
@EndUserText.label: 'Projection View for ZR_PPT_0030_T'
define root view entity ZC_PPT_0030_T
provider contract transactional_query
as projection on ZR_PPT_0030_T
{
key Werks,
key Stlnr,
key Stlan,
key Stlal,
key matnr,
Zindex,
Ztype,
Zloc1,
Zloc2,
Zloc3,
Zloc4,
Zloc5,
Zloc6,
Zloc7,
Zloc8,
Zloc9,
Zloc10,
Lastchangedat
}
[ ZI_PPT_0030_T] – Data Definition
: Interface View (데이터 소스를 직접 정의)
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'BOM CREATE'
@Metadata.ignorePropagatedAnnotations: true
@UI: {
headerInfo: {
typeName: 'BOM CREATE',
typeNamePlural: 'BOM CREATE',
title: { value: 'zIndex' },
description: { value: 'zIndex' }
}
}
define view entity ZI_PPT0030_T as select from zppt_0010_t as _item
left outer join zppt_0030_t as _loc on _item.werks = _loc.werks
and _item.stlnr = _loc.stlnr
and _item.stlan = _loc.stlan
and _item.stlal = _loc.stlal
and _item.matnr = _loc.matnr
{
key _item.werks as Plant,
key _item.stlan as zUsage,
key _item.matnr as matnr,
key _item.idnrk as Component,
_item.zindex as zIndex,
@Semantics.quantity.unitOfMeasure: 'ReqUnit'
_item.menge as ReqQty,
_item.meins as ReqUnit,
_item.lgort as StgeLoc,
_item.beikz as ProInd,
_item.alpgr as AltItemGrp,
_item.alprf as AltPR,
_item.ewahr as AltUsage,
_item.zappr as ApprInd,
_item.zpoyn as PoInd,
_loc.zloc1 as Zloc1,
_loc.zloc2 as Zloc2,
_loc.zloc3 as Zloc3,
_loc.zloc4 as Zloc4,
_loc.zloc5 as Zloc5,
_loc.zloc6 as Zloc6,
_loc.zloc7 as Zloc7,
_loc.zloc8 as Zloc8,
_loc.zloc9 as Zloc9,
_loc.zloc10 as Zloc10,
@Semantics.user.createdBy: true
_item.createdby as CreatedBy,
@Semantics.systemDateTime.createdAt: true
_item.createdat as CreatedAt,
@Semantics.user.lastChangedBy: true
_item.lastchangedby as LastChangedBy,
@Semantics.systemDateTime.lastChangedAt: true
_item.lastchangedat as LastChangedAt,
@Semantics.systemDateTime.localInstanceLastChangedAt: true
_loc.locallastchangedat as LocalLastChangedAt
}
[ZR_PPT_0030_T] – Behavior
managed implementation in class ZBP_PPT_0030_T unique;
strict ( 2 );
define behavior for ZR_PPT_0030_T
etag master lastchangedat
lock master
authorization master( global )
with unmanaged save
{
field ( mandatory : create )
Werks,
Stlnr,
Stlan,
Stlal;
field ( readonly : update )
Werks,
Stlnr,
Stlan,
Stlal;
create;
update;
delete;
}
[ZC_PPT_0030_T] – Behavior
projection;
strict ( 2 );
define behavior for ZC_PPT_0030_T
use etag
{
use create;
use update;
use delete;
}
[ZUI_PPT_0030_T] – SERVICE DEFINITION
@EndUserText.label: 'Service definition for ZC_PPT_0030_T'
define service ZUI_PPT_0030_T_O4 {
expose ZC_PPT_0030_T;
}
SERVICE BINDING
바인딩 만들때는 v2 로 진행한다.
Unmanaged 에서 create 가 안먹히기 때문
조회는 상관 없음
[ZBP_PPT_0030_T] CLASS
CLASS lsc_zr_ppt_0030_t DEFINITION INHERITING FROM cl_abap_behavior_saver.
PROTECTED SECTION.
METHODS save_modified REDEFINITION.
ENDCLASS.
CLASS lsc_zr_ppt_0030_t IMPLEMENTATION.
“Behavior 안에서 맵핑시키지 못해 따로 create 동작 코딩을 해줘야한다.
METHOD save_modified.
TYPES: tt_zppt_0030_t TYPE STANDARD TABLE OF zppt_0030_t WITH DEFAULT KEY.
DATA lt_create TYPE TABLE FOR CREATE zr_ppt_0030_t.
DATA lt_update TYPE TABLE FOR UPDATE zr_ppt_0030_t.
DATA lt_delete TYPE TABLE FOR DELETE zr_ppt_0030_t.
READ ENTITIES OF zr_ppt_0030_t IN LOCAL MODE
ENTITY zr_ppt_0030_t
ALL FIELDS
WITH VALUE #( FOR item IN create-zr_ppt_0030_t ( %key = item-%key ) )
RESULT DATA(lt_created).
READ ENTITIES OF zr_ppt_0030_t IN LOCAL MODE
ENTITY zr_ppt_0030_t
ALL FIELDS
WITH VALUE #( FOR item IN update-zr_ppt_0030_t ( %key = item-%key ) )
RESULT DATA(lt_updated).
IF lt_created IS NOT INITIAL.
DATA lt_insert TYPE tt_zppt_0030_t.
lt_insert = CORRESPONDING tt_zppt_0030_t( lt_created MAPPING
werks = werks
stlnr = stlnr
stlan = stlan
stlal = stlal
matnr = matnr
zindex = zindex
ztype = ztype
zloc1 = zloc1
zloc2 = zloc2
zloc3 = zloc3
zloc4 = zloc4
zloc5 = zloc5
zloc6 = zloc6
zloc7 = zloc7
zloc8 = zloc8
zloc9 = zloc9
zloc10 = zloc10
).
INSERT zppt_0030_t FROM TABLE @lt_insert.
ENDIF.
ENDMETHOD.
ENDCLASS.
CLASS lhc_zr_ppt_0030_t DEFINITION INHERITING FROM cl_abap_behavior_handler.
PRIVATE SECTION.
METHODS:
get_global_authorizations FOR GLOBAL AUTHORIZATION
IMPORTING
REQUEST requested_authorizations FOR zr_ppt_0030_t
RESULT result.
ENDCLASS.
CLASS lhc_zr_ppt_0030_t IMPLEMENTATION.
METHOD get_global_authorizations.
ENDMETHOD.
ENDCLASS.
'SAP HANA CLOUD' 카테고리의 다른 글
| [SAP RAP] ZBP (Behavior Pool Class) 와 ZCL (Regular Class) 의 차이 (0) | 2025.12.02 |
|---|---|
| [SAP RAP] LOOP AT와 ASSIGNING FIELD-SYMBOL의 차이 (0) | 2025.12.01 |
| [SAP RAP] association [0..*] 이란 ? (0) | 2025.11.21 |
| [SAP RAP] RESTful Application Programming Model 이 뭘까 ? (0) | 2025.11.20 |
| [SAP RAP] Interface 관련 GPMS/WMS/웹벤 이란 ? (0) | 2025.11.17 |