Somehow I always forget the syntax for this….
TYPES: BEGIN OF ty_test.
INCLUDE TYPE z_table.
TYPES: my_new_field TYPE string,
END OF ty_test.
Somehow I always forget the syntax for this….
TYPES: BEGIN OF ty_test.
INCLUDE TYPE z_table.
TYPES: my_new_field TYPE string,
END OF ty_test.
https://just-install.github.io/
https://github.com/microsoft/winget-cli
For installing some basic software: https://ninite.com/
Create group of motion sensors in groups.yaml
https://www.home-assistant.io/integrations/group/
cellar_motion:
name: Cellar Presence
icon: mdi:motion-sensor
entities:
- binary_sensor.bewegungsmelder_xxx_ias_zone
- binary_sensor.bewegungsmelder_xxx_ias_zone
Next, if you have more than one light you’d like to control, create a group of lights in your configuration.yaml
https://www.home-assistant.io/integrations/light.group/
# Light Groups
light:
- platform: group
name: Cellar Lights
entities:
- light.ikea_of_sweden_tradfri_bulb_e27_ww_806lm_xxx_level_on_off
- light.ikea_of_sweden_tradfri_bulb_e27_ww_806lm_xxx_level_on_off
And finally use both in an automation
alias: My motion activated lights
description: Turn on a light when motion is detected.
trigger:
- platform: state
entity_id: group.cellar_motion
from: 'off'
to: 'on'
condition: []
action:
- service: light.turn_on
target:
entity_id: light.cellar_lights
data: {}
- wait_for_trigger:
platform: state
entity_id: group.cellar_motion
from: 'on'
to: 'off'
- delay: 120
- service: light.turn_off
target:
entity_id: light.cellar_lights
data: {}
mode: restart
max_exceeded: silent # https://www.home-assistant.io/docs/automation/modes/
https://sap.github.io/cloud-sdk/docs/js/features/connectivity/destination
const { getDestination } = require("@sap-cloud-sdk/connectivity")
const myDestination= await getDestination("myDestination")
if (myDestination === null) throw Error(`Destination "myDestination" not found`)
for (let key in myDestination) {
console.log(key, myDestination[key])
}

If the default port 4004 is already open and you want to see what is bound to it, select View -> Find Command -> Ports Preview
Solution to kill another “watch.js” process using/blocking the port: https://answers.sap.com/questions/13016130/sap-business-application-studio-stop-running-serve.html
To archive the same in a single command use:
lwctl -c basic-tools kill -9 $(lwctl -c basic-tools ps aux | grep watch.js | awk '{print $2}')
As alternative, change the default port by adding a new port in package.json to the start script, for example: “start”: “cds run –port 4003” and use npm run start instead of cds watch.
Update 20.02.2023: Just had the problem again due to a VPN disconnect. But this time I had an application running using cds run. Therefore, I had to change the command from watch.js to cds.js:
lwctl -c basic-tools kill -9 $(lwctl -c basic-tools ps aux | grep cds.js | awk '{print $2}')
Update 10.05.2023: A better approach seems to be killing the node process. This should work in both situation.
lwctl -c basic-tools kill -9 $(lwctl -c basic-tools ps aux | grep node | awk '{print $2}')
Update 29.02.2024: With the BAS migration to Code – OSS the previous commands were not working anymore, but this new command seems to work:
kill -9 $(ps aux | grep cds.js | awk '{print $2}')
# or
kill -9 $(ps aux | grep cds-dk | awk '{print $2}')
Update 15.07.2025:
kill -9 $(ps aux | grep cds | awk '{print $2}')
const sfsfSrv = await cds.connect.to('sfsf')
// Option 1: Query Notation
const response = await sfsfSrv.run(SELECT`teamMembersSize`.from`User`.where`userId = ${req.user.id}`)
console.log("option 1: " + response[0].teamMembersSize)
// Option 2: HTTP method-style
const response2 = await sfsfSrv.get(`/User('${req.user.id}')/teamMembersSize/$value`)
console.log("option 2: " + response2)
An easy way to test your approuter is using the user-api-service. For that add the following route to your xs-app.json
{
"source": "^/user-api(.*)",
"target": "$1",
"service": "sap-approuter-userapi"
}
And after deployment, open the application router URL and add /user-api/currentUser to it. You should see your Email and other User details. This is testing that the application router is actually getting the security token from the UAA instance.
After connecting to a local dev container using Visual Studio Code and trying to clone a private project from Github I got the following error:
Cloning into 'myProject'...
warning: url has no scheme: helperselector
fatal: credential url cannot be parsed: helperselector
The only way I could remove this error was deleting the helperselector settings. So open the git config with:
git config --edit --global

and remove the the helperselector block (the first two lines). You will now get asked again for your credentials when cloning a project.