
@EndUserText.label : 'Purchase contract'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zrk_t_pur_con {
key client : abap.clnt not null;
key con_uuid : sysuuid_x16 not null;
object_id : zrk_pur_con_id;
description : zrk_description;
buyer : zrk_buyer_id;
supplier : zrk_sup_no;
sup_con_id : zrk_sup_con_id;
comp_code : zrk_company_code;
stat_code : zrk_stat_code;
fiscl_year : zrk_fiscal_year;
valid_from : zrk_valid_from;
valid_to : zrk_valid_to;
created_by : abp_creation_user;
created_at : abp_creation_tstmpl;
last_changed_by : abp_locinst_lastchange_user;
last_changed_at : abp_lastchange_tstmpl;
locl_last_changed_at : abp_locinst_lastchange_tstmpl;
}
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'ZRK_I_PUR_CON_UD'
define root view entity ZRK_I_PUR_CON_UD as select from zrk_t_pur_con
{
key con_uuid as ConUuid,
object_id as ObjectId,
description as Description,
buyer as Buyer,
supplier as Supplier,
sup_con_id as SupConId,
comp_code as CompCode,
stat_code as StatCode,
fiscl_year as FisclYear,
valid_from as ValidFrom,
valid_to as ValidTo,
created_by as CreatedBy,
created_at as CreatedAt,
last_changed_by as LastChangedBy,
last_changed_at as LastChangedAt,
locl_last_changed_at as LoclLastChangedAt
}
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Project for unmanaged draft'
@Metadata.allowExtensions: true
define root view entity ZRK_C_PUR_CON_UD
provider contract transactional_query
as projection on ZRK_I_PUR_CON_UD
{
key ConUuid,
ObjectId,
Description,
Buyer,
Supplier,
SupConId,
CompCode,
StatCode,
FisclYear,
ValidFrom,
ValidTo,
CreatedBy,
CreatedAt,
LastChangedBy,
LastChangedAt,
LoclLastChangedAt
}
@Metadata.layer: #CORE
@UI: {
headerInfo: {
typeName: 'Purchase Contract',
typeNamePlural: 'Purchase Contracts',
description: {
type: #STANDARD,
value: 'Description'
},
title: {
// type: #STANDARD,
value: 'ObjectId'
}
}
}
annotate entity ZRK_C_PUR_CON_UD
with
{
@UI.facet: [ {
id: 'Header',
type: #HEADERINFO_REFERENCE,
label: 'Header',
purpose: #HEADER,
position: 10,
targetQualifier: 'Header'
},
{ id: 'General',
type: #IDENTIFICATION_REFERENCE,
purpose: #STANDARD,
label: 'General',
position: 20 ,
targetQualifier: 'General'},
{ id: 'Validities',
type: #IDENTIFICATION_REFERENCE,
label: 'Validities',
position: 30 ,
targetQualifier: 'Validities'}
]
@UI.hidden: true
@UI.lineItem: [{
position: 10 ,
type: #FOR_ACTION,
label: 'Forward',
dataAction: 'Forward'
}]
@UI.identification: [{
position: 10 ,
type: #FOR_ACTION,
label: 'Forward',
dataAction: 'Forward'
}]
ConUuid;
@UI:{ lineItem: [{ position: 10 }] , identification: [{ position: 10 , qualifier: 'General'}]}
@UI.selectionField: [{ position: 10 }]
ObjectId;
@UI.selectionField: [{ position: 20 }]
@UI:{ lineItem: [{ position: 20 }] , identification: [{ position: 20 , qualifier: 'General'}]}
Description;
@UI.selectionField: [{ position: 30 }]
@UI:{ lineItem: [{ position: 30 }] , identification: [{ position: 30 , qualifier: 'General'}]}
@Consumption.valueHelpDefinition: [{
entity: {
name: 'ZRK_I_BUYER',
element: 'BuyerId'
}
}]
Buyer;
@UI.selectionField: [{ position: 40 }]
@UI:{ lineItem: [{ position: 40 }] , identification: [{ position: 40 ,qualifier: 'General'}]}
@Consumption.valueHelpDefinition: [{ entity: {
name: 'ZRK_I_SUPPLIER',
element: 'SupNo'
} ,
useForValidation: true
}]
Supplier;
@UI:{ lineItem: [{ position: 50 }] , identification: [{ position: 50 ,qualifier: 'General'}]}
@Consumption.valueHelpDefinition: [{ entity: {
name: 'ZRK_I_SUP_CON',
element: 'SupConId'
} ,
additionalBinding: [{
localElement: 'Supplier',
localConstant: '',
element: 'SupNo',
usage: #FILTER_AND_RESULT
}] ,
useForValidation: true
}]
SupConId;
@UI.selectionField: [{ position: 50 }]
@UI:{ lineItem: [{ position: 50 }] , identification: [{ position: 55 ,qualifier: 'General'}]}
@Consumption.valueHelpDefinition: [{ entity: {
name: 'ZRK_I_COMP_CODE',
element: 'CompCode'
} ,
useForValidation: true
}]
CompCode;
@UI:{ lineItem: [{ position: 60 }] , identification: [{ position: 60 ,qualifier: 'Header'}]}
StatCode;
@UI:{ lineItem: [{ position: 70 }] , identification: [{ position: 70 , qualifier: 'Validities' }]}
ValidFrom;
@UI:{ lineItem: [{ position: 80 }] , identification: [{ position: 80 , qualifier: 'Validities' }]}
ValidTo;
@UI:{ lineItem: [{ position: 80 }] , identification: [{ position: 90 , qualifier: 'Validities' }]}
@Consumption.valueHelpDefinition: [{
entity: {
name: 'ZRK_I_FISCAL_YEAR',
element: 'fiscal_year'
}
}]
FisclYear;
@UI:{ lineItem: [{ position: 90 }] , identification: [{ position: 100, qualifier: 'General' , label: 'Created By' }]}
CreatedBy;
@UI.hidden: true
CreatedAt;
@UI.hidden: true
LastChangedBy;
@UI.hidden: true
LastChangedAt;
@UI.hidden: true
LoclLastChangedAt;
}
unmanaged implementation in class zbp_rk_i_pur_con_ud unique;
with draft;
define behavior for ZRK_I_PUR_CON_UD alias PurCon
//late numbering
draft table zrk_dt_pur_con_u
lock master total etag LoclLastChangedAt
authorization master ( instance )
etag master LoclLastChangedAt
{
field ( numbering : managed ) ConUuid;
field ( readonly ) ObjectId , CreatedBy;
create;
update;
delete;
//draft action Edit;
determination set_pc_num on modify { create; }
}
action Forward parameter ZRK_I_FWD_BUYER result [1] ZRK_I_PUR_CON_UD ;
METHOD Forward.
*/.. Get new buyer information
READ TABLE keys ASSIGNING FIELD-SYMBOL(<fs_key>) INDEX 1.
IF sy-subrc EQ 0.
DATA(lv_new_buyer) = <fs_key>-%param-Buyer.
ENDIF.
*/..Create a draft instance for all active instance
*/.. There could be multiple records mixed with draft/active when multi-select is enabled.
MODIFY ENTITIES OF zrk_i_pur_con_ud IN LOCAL MODE
ENTITY PurCon
EXECUTE edit FROM
VALUE #( FOR <fs_active_key> IN keys WHERE ( %is_draft = if_abap_behv=>mk-off )
( %key = <fs_active_key>-%key
%param-preserve_changes = 'X'
) )
REPORTED DATA(edit_reported)
FAILED DATA(edit_failed)
MAPPED DATA(edit_mapped).
DATA(lt_temp_keys) = keys.
LOOP AT lt_temp_keys ASSIGNING FIELD-SYMBOL(<fs_temp_keys>).
<fs_temp_keys>-%is_draft = if_abap_behv=>mk-on.
ENDLOOP.
*/.. Read the existing Data
READ ENTITIES OF zrk_i_pur_con_ud IN LOCAL MODE
ENTITY PurCon
FIELDS ( Buyer )
WITH CORRESPONDING #( lt_temp_keys )
RESULT DATA(lt_buyer).
*/.. Then modify the draft instance but not active instance
MODIFY ENTITIES OF zrk_i_pur_con_ud IN LOCAL MODE
ENTITY PurCon
UPDATE FIELDS ( Buyer )
WITH VALUE #( FOR <fs_rec_draft> IN lt_buyer ( %tky = <fs_rec_draft>-%tky
%is_draft = '01'
Buyer = lv_new_buyer ) )
REPORTED edit_reported
FAILED edit_failed
MAPPED DATA(lt_updated).
*/.. Read the data to send back to UI. / Optional - This is to check if the values are updated ?
READ ENTITIES OF zrk_i_pur_con_ud IN LOCAL MODE
ENTITY PurCon
ALL FIELDS
WITH CORRESPONDING #( lt_temp_keys )
RESULT DATA(lt_buyer_updated).
*/.. Pass the data to UI.
result = CORRESPONDING #( lt_buyer_updated ).
ENDMETHOD.
projection;
use draft;
define behavior for ZRK_C_PUR_CON_UD alias PurCon
{
use create;
use update;
use delete;
use action Forward ;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
5 | |
4 | |
4 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |