Behavior Definition of Managed Application

What is ‘additional save’ in the Managed RAP

application?

managed implementation in class cl_bp_r_budgetdocumenttp unique;
strict ( 2 );
with draft;
with privileged mode disabling NoCheckWhenPrivileged;
.
.
.
define behavior for R_BudgetDocumentTP alias BudgetDocumenthdr
persistent table bdgt_d_doc_hdr ##UNMAPPED_FIELD
draft table bdgt_d_hdr_dr query R_BudgetDocumentDraft
late numbering
with additional save with full data
lock master
total etag LastChangeDate
authorization master ( global, instance )

In SAP’s RESTful Application Programming Model (RAP), “additional save” allows developers to extend the standard save logic of a managed business object to include custom logic or save extra data alongside the core data. This is particularly useful for scenarios requiring data consistency, custom logic execution after a save, handling side effects, or optimizing performance.

Use Case

In some application scenarios, an external functionality must be invoked during the save sequence, after the managed runtime has gathered the changed data of business object instances, but before the final commit work has been executed.

For example, reuse services like change documents and the application log must be triggered during the save sequence and the changes of the current transaction must be written to change requests. Additional save SAP blog

Ref blog

What are the different types of Action in RAP?

Non-Factory Actions– These actions are used to implement custom logic that changes the state of an existing business object instance. They are typically instance-bound, meaning they operate on a specific instance of a business object.  Example: Approving a travel request or marking an order as shipped. 
Factory Actions:  These actions are used to create new instances of a business object.  They can be either instance-bound or static. Example: Creating a new sales order or generating a new customer record.  
Instance-bound factory actions are used to copy one or more BO instances and create new instances based on the copied data. 
Static factory actions are used to create instances with default values. Reference Blog

 // copy instance, assign new unique key value  
  factory action ( features : instance ) CopyBudget [1];
  factory action ( features : instance ) ReverseBudget [1];
 // create new instance with default values
  static factory action CreateOriginalBudget [1];
  static factory action CreateSupplementBudget [1];
  static factory action TransferBudget [1];
  static factory action ReturnBudget [1];
  static factory action ReleaseBudget [1];

What is Internal action?

Internal can be applied to the following operations:
standard operations
operations for associations
actions
functions
determine actions
draft actions

If an operation is marked as internal, feature control is not supported. Feature control is for external access control and is not required for internal operations.
precheck is not available for internal operations.
authorization:update, authorization:global, and authorization:instance are not available for internal operations.
Internal operations cannot be reused with the keyword use in a projection BDEF or in an interface BDEF, because they are not visible there.

managed implementation in class bp_demo_rap_internal unique;
strict ( 2 );

define behavior for DEMO_RAP_INTERNAL alias RootEntity
persistent table demo_dbtab_field
lock master
authorization master ( none )
{
  create;
  update;
  delete;

  field ( numbering : managed, readonly ) KeyField;

  internal action calculateTotalAmount;

  determination calcTotal on modify { create; }

  mapping for demo_dbtab_field
    {
      KeyField  = key_field;
      CharField = char_field1;
      Amount    = int_field1;
      Quantity  = int_field2;
      Total     = int_field3;
    }
}

The internal action multiplies the value of field Quantity with the value of field Amount and inserts the result into field Total per entity instance. It is executed from the ABAP behavior pool by the on modify determination calcTotal.

METHOD calcTotal. 
 
  MODIFY ENTITIES OF demo_rap_internal IN LOCAL MODE 
      ENTITY RootEntity 
        EXECUTE calculateTotalAmount 
          FROM CORRESPONDING #( keys ) 
          REPORTED DATA(lt_reported). 
 
ENDMETHOD.

Explain the import parameters %cid and %cid_ref .

Content ID, provided by the SADL framework but generally only useful for the
late numbering feature. This field is also useful for deep entity creation, where
the import parameter of the child entity will have another field %cid_ref that
contains the same value as the %cid field of the parent entity, thus enabling the
linking of records between both entities during runtime.

What is the significance of %tky in RAP?

%tky is a component group in BDEF derived types.  %tky contains three components: %key, %pid (used in late numbering)  and the draft indicator %is_draft as components, which make it particularly suitable for draft scenarios. Since %tky includes %key%tky can also be used in non-draft scenarios for referring to the primary keys. Its use in non-draft scenarios is even recommended as a preparation for a possible later switch to a draft scenario. In doing so, lots of adaptations to the code regarding the keys and the inclusion of %is_draft can be avoided.

USE- It is mainly used in case if validation and determination.

What is the use of the import parameter %control?

A structure that contains the name of all the properties of the entity and an additional property flag field that indicates whether the value of property field of
the entity was changed by the user or not. This field is essential when carrying
out updates on the underlying table in the database. The data type of this flag
field is ABP_BEHV_FLAG,

What are the different Draft Actions?

Draft Action Edit

The draft action EDIT copies an active instance to the draft database table. Feature and authorization control is available for the EDIT, which you can optionally define to restrict the usage of the action.

Draft Action Activate

The draft action ACTIVATE is the inverse action to EDIT. It invokes the PREPARE and a modify call containing all the changes for the active instance in case of an edit-draft, or a CREATE in case of a new-draft. Once the active instance is successfully created, the draft instance is discarded.

In contrast to the draft action Edit, the Activate does not allow feature or authorization control. Authorization is not available as the Activate only transfers the state of the draft buffer to the active buffer. Authorization is controlled when the active instance is saved to the database.

Draft Action Discard

The draft action DISCARD deletes the draft instance from the draft database table. No feature or authorization control can be implemented.

Draft Determine Action Prepare

The draft determine action PREPARE executes the determinations and validations that are specified for it in the behavior definition. The PREPARE enables validating draft data before the transition to active data.

Whenever we write determination and validation ON SAVE method, we need to call it inside draft determine action prepare.

Draft Action Resume

The draft action RESUME is executed when a user continues to work on a draft instance whose exclusive lock for the active data has already expired. It recreates the lock for the corresponding instance on the active database table. On a Fiori Elements UI, it is invoked when reopening and changing a draft instance whose exclusive lock is expired.

In case of a new draft, the same feature and authorization control is executed as defined for a CREATE. In case of an edit-draft, the same feature and authorization control is executed like in an Edit.

Draft Action Share

In relation to the collaborative draft, the draft action Share is executed as soon as other users are added to the user list or the user attempts to join the user list of a draft instance. It checks if the respective users are allowed to be added to the user list of the draft instance. In addition, the draft action Share switches an exclusive draft into collaborative draft if not done before.

Behavior for C_BdgtDocBdgtMgmt

projection;
strict ( 2 );
with managed instance filter;
use draft;
use side effects;

define behavior for C_BdgtDocBdgtMgmt alias BudgetDocument
use etag
{
  //use create;
  use update;
  use delete;
  use action Prepare;
  use action Resume;
  use action Edit;
  use action Activate;
  use action Discard;
  use action CreateOriginalBudget;
  use action TransferBudget;
  use action ReleaseBudget;
  use action ReturnBudget;
  use action CreateSupplementBudget;
  use action CopyBudget;
  use action ReverseBudget;
  use association _BudgetDocumentItemRcvr { create; with draft; }
  use association _BudgetDocumentItemSndr { create; with draft; }
  use association _HDMRelation { create; with dependent draft; }
  field ( suppress ) creationdate, creationtime, lastchangetime;
  field ( readonly ) BudgetProcessGroup, budgetcategoryusage;

}

define behavior for C_BdgtDocBdgtMgmtSender alias BudgetDocumentItemSndr
use etag
{
  use update;
  use delete;

  use action CopyItem;
  field ( readonly ) CompanyCode, FiscalYear, GrantID;
  use association _BudgetDocument { with draft; }
}

define behavior for C_BdgtDocBdgtMgmtReceiver alias BudgetDocumentItemRcvr
use etag
{
  use update;
  use delete;

  use action CopyItem;
  field ( readonly ) CompanyCode, FiscalYear, GrantID;
  use association _BudgetDocument { with draft; }
}

Behavior for R_BudgetDocumentTP

managed implementation in class cl_bp_r_budgetdocumenttp unique;
strict ( 2 );
with draft;
with privileged mode disabling NoCheckWhenPrivileged;
define authorization context NoCheckWhenPrivileged
{
  'F_DOC_BGT';
  'F_DOCGMBGT';
  'K_BDGT_DOC';
  '/S4PPM/BGT';
  'K_CSKS_BUD';
  '/S4PPM/PR1';
  'C_ARPL_WRK'; // Attachment API
  'C_ARPL_ART'; // Attachment API
  'C_DRAW_STA'; // Attachment API
  'C_DRAW_TCD'; // Attachment API
  'C_DRAW_TCS'; // Attachment API
}

define own authorization context
{
  'F_DOC_BGT';
  'F_DOCGMBGT';
  'K_BDGT_DOC';
  '/S4PPM/BGT';
  'K_CSKS_BUD';
  '/S4PPM/PR1';

  'C_ARPL_WRK'; // Attachment API
  'C_ARPL_ART'; // Attachment API
  'C_DRAW_STA'; // Attachment API
  'C_DRAW_TCD'; // Attachment API
  'C_DRAW_TCS'; // Attachment API
}

define behavior for R_BudgetDocumentTP alias BudgetDocumenthdr
persistent table bdgt_d_doc_hdr ##UNMAPPED_FIELD
draft table bdgt_d_hdr_dr query R_BudgetDocumentDraft
late numbering
with additional save with full data
lock master
total etag LastChangeDate
authorization master ( global, instance )
//authorization master ( global )
etag master LastChangeDate
{
  create ( precheck );
  update ( precheck );
  delete ( features : instance );
  // removing controlling area - TBD ControllingArea,
  field ( readonly ) BudgetDocument, BudgetDocumentYear, ControllingArea, BudgetDocumentYearForEdit, BudgetDocumentForEdit,
  budgettotalamount, senderbudgettotalamount, receiverbudgettotalamount, globalcurrency, BudgetDocumentStatus,
  CreatedByUser, CreationDate, CreationTime, LastChangedByUser, LastChangeDate, LastChangeTime, BudgetDocumentCreationDateTime, BudgetDocumentChangeDateTime;


  field ( features : instance ) PlanningCategory, BudgetDocumentType, PostingDate,
  DocumentDate, BudgetingResponsiblePersonName, BudgetDocumentDescription, ReversalRefBudgetDocument, ReversalReason;
  association _BudgetDocumentItemRcvr { create ( features : instance, authorization : update ); with draft; }
  association _BudgetDocumentItemSndr { create ( features : instance, authorization : update ); with draft; }


  static factory action CreateOriginalBudget [1];
  static factory action CreateSupplementBudget [1];
  static factory action TransferBudget [1];
  static factory action ReturnBudget [1];
  static factory action ReleaseBudget [1];
  factory action ( features : instance ) CopyBudget [1];
  factory action ( features : instance ) ReverseBudget [1];

  validation VALIDATE_BDGT_DOC_HDR on save { create; }
  validation CheckMandatoryFields on save { create; }
  validation HDR_CATEGORY_CHK on save { create; field PlanningCategory; }
  validation HDR_MASTER_DATA_EXISTENCE_CHK on save { field BudgetDocumentType; field ReversalReason; } ##NOT_ASSIGNED_TO_DETACT
  validation VALIDATE_BDGT_DOC_AMT on save { create; }
  validation validate_acdocp_items on save { create; }

  //  determine action validateCategory { validation HDR_CATEGORY_CHK; }

  //validation HDR_CTRLG_AREA_CHK on save { field ControllingAreaForEdit; }

  //validation HDR_GRANT_CHECKS on save { field GrantID; }

  // HDM adoption
    define pure key OwnKey { MaintWorkRequestAttchKey; }
    key ( OwnKey ) function ReadByOwnKey result selective [1] $self;
    association _HDMRelation using I_HDMRelationTP~HostObjectKey { create; with draft; to dependent using own OwnKey; }


  //determination SaveAttachment on save { create; update; }
  determination DETM_BDGT_DOC_HDR_ON_CRTE on modify { create; }
  determination DETM_BDGT_DOC_HDR_ON_updt on modify
  { create; field postingdate; field controllingareaforedit; field budgetdocumentyearforedit;
    field planningcategory; field grantid; field BudgetDocumentType; }
  determination BdgtDocOnSave on save { create; }

  internal action CalculateBudgetAmount;

  side effects
  { field GrantID affects field _BudgetDocumentItemSndr.SponsoredClass, field _BudgetDocumentItemSndr.SponsoredProgram,
        field _BudgetDocumentItemSndr.GteeMBudgetValidityNumber, field _BudgetDocumentItemSndr.CostCenter, field _BudgetDocumentItemSndr.BudgetPeriod,
        field _BudgetDocumentItemSndr.Fund, field _BudgetDocumentItemSndr.GrantID, field _BudgetDocumentItemSndr.GLAccount, field _BudgetDocumentItemSndr.CompanyCode,
        field _BudgetDocumentItemRcvr.SponsoredClass, field _BudgetDocumentItemRcvr.SponsoredProgram,
        field _BudgetDocumentItemRcvr.GteeMBudgetValidityNumber, field _BudgetDocumentItemRcvr.CostCenter, field _BudgetDocumentItemRcvr.BudgetPeriod,
        field _BudgetDocumentItemRcvr.Fund, field _BudgetDocumentItemRcvr.GrantID, field _BudgetDocumentItemRcvr.GLAccount, field _BudgetDocumentItemRcvr.CompanyCode;
    field PlanningCategory affects entity _BudgetDocumentItemRcvr, entity _BudgetDocumentItemSndr;
    field BudgetDocumentType affects entity _BudgetDocumentItemRcvr, entity _BudgetDocumentItemSndr;
    field PostingDate affects field BudgetDocumentYearForEdit, field BudgetDocumentYear, field _BudgetDocumentItemRcvr.FiscalYear, field _BudgetDocumentItemSndr.FiscalYear,
        field _BudgetDocumentItemRcvr.PostingDate, field _BudgetDocumentItemSndr.PostingDate;
PlanningCategory affects messages;
  }

  draft action Resume with additional implementation;
  draft action Edit;
  draft action Activate optimized;
  draft action Discard;
  //draft action Share;
  draft determine action Prepare
  {
    validation VALIDATE_BDGT_DOC_HDR;
    validation CheckMandatoryFields;
    validation HDR_CATEGORY_CHK;
    validation HDR_MASTER_DATA_EXISTENCE_CHK;
    validation VALIDATE_BDGT_DOC_AMT;
    validation BudgetDocumentItemSndr~VALIDATE_SENDER_ITEMS;
    validation BudgetDocumentItemRcvr~VALIDATE_RECEIVER_ITEMS;
    validation BudgetDocumentItemSndr~VALIDATE_DUPLICATE_SNDR_ITEMS;
    validation BudgetDocumentItemRcvr~VALIDATE_DUPLICATE_RECV_ITEMS;
    validation validate_acdocp_items;

  }

  mapping for bdgt_d_doc_hdr ##key_mismatch_ok
    {

      //ControllingAreaForEdit         = kokrs;
      //      BudgetDocumentYearForEdit      = docyear;
      BudgetDocumentYear             = docyear;
      ControllingArea                = kokrs;
      //BudgetDocumentForEdit          = docnr;
      BudgetDocument                 = docnr;
      BudgetDocumentType             = doctype;
      BudgetCategoryUsage            = budget_cat_usage;
      PlanningCategory               = category;
      GrantID                        = grant_nbr;
      PostingDate                    = postdate;
      DocumentDate                   = docdate;
      BudgetProcessGroup             = process_ui;
      BudgetingResponsiblePersonName = resppers;
      BudgetDocumentDescription      = text;
      BudgetDocumentStatus           = status;
      ReversalRefBudgetDocument      = rev_refnr;
      ReversalReason                 = reason_rev;
      CreatedByUser                  = crtuser;
      CreationDate                   = crtdate;
      CreationTime                   = crtime;
      LastChangedByUser              = chguser;
      LastChangeDate                 = chgdate;
      LastChangeTime                 = chgtime;
    }
}

define behavior for R_BudgetDocumentSenderTP alias BudgetDocumentItemSndr
persistent table acdocp ##UNMAPPED_FIELD
draft table bdgt_d_i_sndr_dr query R_BUDGETDOCUMENTSENDERDRAFT
late numbering
lock dependent by _BudgetDocument
authorization dependent by _BudgetDocument
etag dependent by _BudgetDocument
{
  update ( precheck, features : instance );
  delete ( features : instance );
  field ( readonly ) BudgetDocument, BudgetDocumentYear, ControllingArea, BudgetDocumentItem, BudgetProcess;
  field ( features : instance ) GteeMBudgetValidityNumber, SponsoredProgram, SponsoredClass, BudgetCategory, ControllingAreaForEdit,
  CompanyCode, GLAccount, CostCenter, FunctionalArea, FiscalYear, Fund, GrantID, BudgetPeriod, WBSElement, WBSElementInternalID, ProjectInternalID,
  FiscalPeriod, BudgetingType, AmountInTransactionCurrency, TransactionCurrency, AmountInCompanyCodeCurrency, CompanyCodeCurrency,
  AmountInGlobalCurrency, GlobalCurrency, AmountInObjectCurrency, ControllingObjectCurrency;
  association _BudgetDocument { with draft; }

  validation VALIDATE_SENDER_ITEMS on save { create; }
  validation VALIDATE_DUPLICATE_SNDR_ITEMS on save { create; }

  determination CALCULATE_TOTAL_BDGT_AMT on modify { field amountinglobalcurrency; }
  determination DETM_SNDR_ITM_ON_CRTE on modify { create; }
  determination DETM_SNDR_ITM_ON_updt on modify
  { field CostCenter, Fund, BudgetPeriod, BudgetingType, FunctionalArea,
    GLAccount, WBSElement; }
  //  field BudgetingType; field BudgetPeriod; field FunctionalArea; field Fund;
  //                                                   field GLAccount; field WBSElement; }

  // field CostCenter, field Fund, field BudgetPeriod, field BudgetingType, field FunctionalArea, field GLAccount, field WBSElement;
  factory action ( features : instance ) CopyItem [1];

  side effects
  { field SponsoredClass affects field GLAccount;
    field CostCenter affects field *, entity _BudgetDocument._BudgetDocumentItemRcvr;
    //    CompanyCode, field Fund, field CompanyCodeCurrency, field AmountInCompanyCodeCurrency, field AmountInGlobalCurrency,
    //        field GlobalCurrency, field FunctionalArea, field BudgetPeriod, field BudgetingType, field GLAccount, field WBSElement;

    field AmountInGlobalCurrency affects field _BudgetDocument.SenderBudgetTotalAmount, field _BudgetDocument.BudgetTotalAmount
    , entity _BudgetDocument._BudgetDocumentItemRcvr;


    field BudgetPeriod affects $self, entity _BudgetDocument._BudgetDocumentItemRcvr;
    //      field CostCenter, field Fund, field BudgetingType, field FunctionalArea, field GLAccount, field WBSElement;
    field Fund affects $self, entity _BudgetDocument._BudgetDocumentItemRcvr;
    //     , field CostCenter, field BudgetPeriod, field BudgetingType, field FunctionalArea, field GLAccount, field WBSElement;
    field BudgetingType affects $self;
    //     , field CostCenter, field Fund, field BudgetPeriod, field FunctionalArea, field GLAccount, field WBSElement;
    field FunctionalArea affects $self;
    //     , field CostCenter, field Fund, field BudgetPeriod, field BudgetingType, field GLAccount, field WBSElement;
    field GLAccount affects $self, entity _BudgetDocument._BudgetDocumentItemRcvr;
    //     , field CostCenter, field Fund, field BudgetPeriod, field BudgetingType, field FunctionalArea, field WBSElement;
    field WBSElement affects $self, entity _BudgetDocument._BudgetDocumentItemRcvr;
    //     , field CostCenter, field Fund, field BudgetPeriod, field BudgetingType, field FunctionalArea, field GLAccount;
    action CopyItem affects entity _BudgetDocument;
  }

  mapping for acdocp ##key_mismatch_ok
    {
      FinancialPlanningDataPacket   = DATAPAKID;
      FinancialPlanningReqTransSqnc = REQTSN;
      Ledger                        = RLDNR;
      PostingDate                   = budat;
      ControllingArea               = kokrs;
      BudgetDocument                = awref;
      BudgetDocumentYear            = aworg;
      BudgetDocumentItem            = record;
      BudgetCategory                = category;
      CompanyCode                   = rbukrs;
      GLAccount                     = racct;
      CostCenter                    = rcntr;
      FunctionalArea                = rfarea;
      FiscalYear                    = ryear;
      Fund                          = rfund;
      FinancialManagementArea       = fikrs;
      BudgetPeriod                  = rbudget_pd;
      GrantID                       = rgrant_nbr;
      SponsoredProgram              = rsponsored_prog;
      SponsoredClass                = rsponsored_class;
      GteeMBudgetValidityNumber     = rbdgt_vldty_nbr;
      WBSElement                    = ps_posid;
      WBSElementInternalID          = ps_psp_pnr;
      //      Project                     = ps_pspid;
      ProjectInternalID             = ps_prj_pnr;
      ProfitCenter                  = prctr;
      ChartOfAccounts               = KTOPL;
      FiscalYearVariant             = periv;
      FiscalPeriod                  = poper;
      FiscalYearPeriod              = fiscyearper;
      BudgetProcess                 = budget_process;
      BudgetingType                 = budget_subcategory;
      TransactionCurrency           = rwcur;
      AmountInTransactionCurrency   = wsl;
      CompanyCodeCurrency           = rhcur;
      AmountInCompanyCodeCurrency   = hsl;
      GlobalCurrency                = rkcur;
      AmountInGlobalCurrency        = ksl;
      ControllingObjectCurrency     = rco_ocur;
      AmountInObjectCurrency        = co_osl;
      FunctionalCurrency            = rfccur;
      AmountInFunctionalCurrency    = fcsl;
      Segment                       = segment;
      AccountAssignmentType         = accasty;
      ControllingObject             = objnr;
      JointVentureCostRecoveryCode  = recid;
      ReferenceDocumentType         = awtyp;
      ControllingDebitCreditCode    = co_belkz;
      SenderCreatedByUser           = usnam;
      BudgetDocWorkFlowStatus       = bdgt_doc_workflow_status;
      BudgetDocumentLineItemDesc = sgtxt;
    }
}

define behavior for R_BudgetDocumentReceiverTP alias BudgetDocumentItemRcvr
persistent table acdocp ##UNMAPPED_FIELD
draft table bdgt_d_i_rcvr_dr query R_BUDGETDOCUMENTRECEIVERDRAFT
late numbering
lock dependent by _BudgetDocument
authorization dependent by _BudgetDocument
etag dependent by _BudgetDocument
{
  update ( precheck, features : instance );
  delete ( features : instance );
  field ( readonly ) BudgetDocument, BudgetDocumentYear, ControllingArea, BudgetDocumentItem, BudgetProcess;
  field ( features : instance ) GteeMBudgetValidityNumber, SponsoredProgram, SponsoredClass, BudgetCategory, ControllingAreaForEdit,
  CompanyCode, GLAccount, CostCenter, FunctionalArea, FiscalYear, Fund, GrantID, BudgetPeriod, WBSElement, WBSElementInternalID, ProjectInternalID,
  FiscalPeriod, BudgetingType, AmountInTransactionCurrency, TransactionCurrency, AmountInCompanyCodeCurrency, CompanyCodeCurrency,
  AmountInGlobalCurrency, GlobalCurrency, AmountInObjectCurrency, ControllingObjectCurrency;
  field ( mandatory ) BudgetCategory;
  association _BudgetDocument { with draft; }

  validation VALIDATE_RECEIVER_ITEMS on save { create; }
  validation VALIDATE_DUPLICATE_RECV_ITEMS on save { create; }

  determination CALCULATE_TOTAL_BDGT_AMT on modify { field amountinglobalcurrency; }
  determination DETM_RCVR_ITM_ON_CRTE on modify { create; }
  //  determination DETM_DERIVEIVATION on save { create; }
  determination DETM_RCVR_ITM_ON_updt on modify
  { field CostCenter, Fund, BudgetPeriod, BudgetingType, FunctionalArea,
    GLAccount, WBSElement; }

  factory action ( features : instance ) CopyItem [1];


  side effects
  { field SponsoredClass affects field GLAccount;
    field AmountInGlobalCurrency affects field _BudgetDocument.ReceiverBudgetTotalAmount, field _BudgetDocument.BudgetTotalAmount
    ;
    //    field AmountInGlobalCurrency affects $self;
    field CostCenter affects field *;
    field BudgetPeriod affects $self;
    field Fund affects $self;
    field BudgetingType affects $self;
    field FunctionalArea affects $self;
    field GLAccount affects $self;
    field WBSElement affects $self;
    action CopyItem affects entity _BudgetDocument;

  }

  mapping for acdocp ##key_mismatch_ok
    {
      FinancialPlanningDataPacket   = DATAPAKID;
      FinancialPlanningReqTransSqnc = REQTSN;
      Ledger                        = RLDNR;
      PostingDate                   = budat;
      ControllingArea               = kokrs;
      BudgetDocument                = awref;
      BudgetDocumentYear            = aworg;
      BudgetDocumentItem            = record;
      BudgetCategory                = category;
      CompanyCode                   = rbukrs;
      GLAccount                     = racct;
      CostCenter                    = rcntr;
      FunctionalArea                = rfarea;
      FiscalYear                    = ryear;
      Fund                          = rfund;
      FinancialManagementArea       = fikrs;
      BudgetPeriod                  = rbudget_pd;
      GrantID                       = rgrant_nbr;
      SponsoredProgram              = rsponsored_prog;
      SponsoredClass                = rsponsored_class;
      GteeMBudgetValidityNumber     = rbdgt_vldty_nbr;
      WBSElement                    = ps_posid;
      WBSElementInternalID          = ps_psp_pnr;
      //      Project                     = ps_pspid;
      ProjectInternalID             = ps_prj_pnr;
      ProfitCenter                  = prctr;
      ChartOfAccounts               = KTOPL;
      FiscalYearVariant             = periv;
      FiscalPeriod                  = poper;
      FiscalYearPeriod              = fiscyearper;
      BudgetProcess                 = budget_process;
      BudgetingType                 = budget_subcategory;
      TransactionCurrency           = rwcur;
      AmountInTransactionCurrency   = wsl;
      CompanyCodeCurrency           = rhcur;
      AmountInCompanyCodeCurrency   = hsl;
      GlobalCurrency                = rkcur;
      AmountInGlobalCurrency        = ksl;
      ControllingObjectCurrency     = rco_ocur;
      AmountInObjectCurrency        = co_osl;
      FunctionalCurrency            = rfccur;
      AmountInFunctionalCurrency    = fcsl;
      Segment                       = segment;
      AccountAssignmentType         = accasty;
      ControllingObject             = objnr;
      JointVentureCostRecoveryCode  = recid;
      ReferenceDocumentType         = awtyp;
      ControllingDebitCreditCode    = co_belkz;
      SenderCreatedByUser           = usnam;
      BudgetDocWorkFlowStatus       = bdgt_doc_workflow_status;
      BudgetDocumentLineItemDesc = sgtxt;
    }
}

Implementation class

Scroll to Top