$expand

The $expand query option allows to connect to other entities.

youtube OData $expand command. join objects

Item("A001")?$select=ItemCode,ItemWareHouse&$expand=ItemWareHouse
{"ItemCode":"A001",ItemWareHouse:[
  {"WhsCode":"01","OnHand":10.5}
  {"WhsCode":"02","OnHand":5.3}
  ]
}
 
If you do not define the $expand function, the Beas Service Layer returns this as a single line. This is not an ODATA standard, but a function available in Beas Service Layer.
 
Item("A001")?$select=ItemCode,ItemWareouse
{"ItemCode":"A001","WhsCode":"01","OnHand":10.5},
{"ItemCode":"A001","WhsCode":"02","OnHand":5.3}

 

Attention

If you work with KeyPredicate in combination with a join without the $expand function, the result is not fully defined.

 

Example:

BatchNumber("A0001",1003):
{"value":
      {"ItemCode":"A001"...}
}
 
BatchNumber("A001",1003)?$select=Batch,BatchNumberStock/WhsCode
 
If you have more than one result:
{"value":{"Batch":"5000","Quantity":3}         ]
}
 
If you have more results, an array is created:
{"value":[
   {"Batch":"5000","Quantity":3},{"Batch":"5000","Quantity":2}
         ]
}
 
It is preferred to work with the $expand function so that the structure of the result is always defined:
BatchNumber("A001",1003)?$select=Batch,BatchNumberStock/WhsCode&$expand=BatchNumberStock

 

Limitations with multiple levels:

More than one level is not allowed.

Example: BatchNumber -> BatchNumberStock -> WareHouseName

Result of this example is as follows:

BatchNumber("A11896",1)?$select=Batch,BatchNumberStock,BatchNumberStock/WareHouse/WhsName&$expand=BatchNumberStock
 
{"value": {
        "Batch": "BRM0011",
        "BatchNumberStock": [
            {
                "ItemCode": "A11896",
                "SystemNumber": 1,
                "Quantity": 0,
                "WhsCode": "01",
                "WhsName": "General Warehouse1"
            },
            {
                "ItemCode": "A11896",
                "SystemNumber": 1,
                "Quantity": 0,
                "WhsCode": "QC",
                "WhsName": "QC-Warehouse"
            }
        ]
    }
}

 

All sub-sub objects are on the same level as the sub-object, in this case "BatchNumberStock".

 

Nested information in $expand

The $expand option works with nested information. The nested information is surrounded by brackets as follows:

$expand=EntityObject(UrlString),EntityOPbject(UrlString) ...

 

For example:

Workorder?$select=Workorder.DocEntry,WorkorderPos

 $expand=WorkorderPos($select=ItemCode,UoM&$expand=UoM)

 

This creates the following structure:

  Workorder (Docentry)

      WorkorderPos (ItemCode)

            UoM (all fields)

 

All parameter types are allowed in nested commands. Nested commands are also allowed inside nested commands.

$expand=EntityObject($select=..$expand=x($select=..$expand=y(...)))

The format types can also be mixed.

 

Attention:

JSON + XML substrucutre is not a JSON compatible string, but it is possible to combine JSON and with JSON array.