cancel
Showing results for 
Search instead for 
Did you mean: 

RAP: Creating a child entity with 'create by association' for an existing root entity fails

kheba
Discoverer
0 Kudos
4,301

Hello dear SAP community!

I would like to create an action in my RAP model that creates a child entity with the keys plant, material number and workcenter for an existing root with the keys plant and material number. The work centre is specified by the user in a dialogue window. The action is located on the object page of the root node.

If I click on the action and enter a work centre, I do not encounter an error but end up with an empty object page. A table entry with the new child is also created, but as soon as I click on the entry in the table in the app, the message 'The requested data was not found' is displayed.

Below are the corresponding screenshots of the code. Thanks in advance 🥳


View Entire Topic
patrick_winkler
Product and Topic Expert
Product and Topic Expert

@DanielSchneider 

To add an action to the object page header of entity A to create a child entity B, add the following to the behavior definition of entity A.

 

  factory action CreateChild parameter ZD_CreateChildP [1..*]  { default function GetDefaultsForCreateChild ; }
  side effects { action CreateChild affects $self; }

 

To add the action to the object page use the following annotation for entity A:

 

  @UI.identification: [ {
    position: 1 
  },{
    type: #FOR_ACTION, 
    dataAction: 'CreateChild', 
    label: 'Create Child'
  } ]

 

Example action implementation:

 

  METHOD CreateChild.
    MODIFY ENTITY IN LOCAL MODE ZI_Cubco4
      CREATE BY \_Cubco4Child
      AUTO FILL CID
      FIELDS ( ParentId ChildId ) WITH VALUE #( FOR key IN keys (
        %is_draft = if_abap_behv=>mk-on
        id = key-Id
        %target = VALUE #(
         ( %is_draft = if_abap_behv=>mk-on
           ParentId = key-Id
           ChildId = key-%param-Id )
          ) ) )
      REPORTED reported FAILED failed MAPPED mapped.
  ENDMETHOD.

 

Defaulting: https://community.sap.com/t5/technology-blogs-by-members/abap-rap-defaulting-action-parameters-with-...

DanielSchneider
Explorer
0 Kudos

Hi Patrick,

wow, thanks for the super fast response and for the provided snippets!!

It works like a charm. Those were the issues why it didn't work for me:

  • The EML create statement was missing the "auto fill cid" part
  • I had [1] instead of [1..*] in the action definition
    • When creating an associated entity the cardinality of [1] does work (the entity gets created), but after creation the generated app tries to navigate to the newly created root instance (which does not exist, since we did not create any)
    • Here a screenshot of the ABAP doc, maybe the part with "factory action always need to have a cardinality of [1]" could get adjusted

DanielSchneider_0-1726648706172.png

 

Thanks again for your awesome support and have a nice day!
Daniel

patrick_winkler
Product and Topic Expert
Product and Topic Expert
0 Kudos
@DanielSchneider you should be able to use cardinality [1] when you enable inline creation mode for the child table https://sapui5.hana.ondemand.com/sdk/#/topic/cfb04f0c58e7409992feb4c91aa9410b
bkeys
Newcomer
0 Kudos
I'd really like the button to be on top of the child entity list (inside of the parent entity page). Is there a way to do this?