There are several methods to update the license but:
- the sapgui method fails to install telling me the system number doesn't match
- the docker method works, but the installed license is invalid, the reason is explained below:
When I start my abap trial container based on the ABAPTRIAL_2022_SP01 official image I get a new hardware key:
# abaptrial is the name of my container, yours might be different
docker logs abaptrial 2>&1|grep "^Hardware Key" --textresults in something like:
Hardware Key . . : J1851296352 (of this computer)
Hardware Key . . : N2022165548 (of this computer)
Hardware Key . . : V0990772505 (of this computer)
Hardware Key . . : J0944475970 (of this computer)
Hardware Key . . : Z1805147772 (of this computer)
The trick is to pause the container initialization long enough to generate a new key right after it printed the current hardware key.
docker exec -it abaptrial bash
# now we're inside the container
rm /opt/sap/ASABAP_license
# first time you do this you'll get an error because the license file don't exist. Ignore it
vi /usr/local/bin/asabap_license_updateInside this script, there's an instruction to print the current hardware key, around line 19:
su - a4hadm -c "saplikey pf=/sapmnt/A4H/profile/DEFAULT.PFL -get"
followed by a few instructions and the following instruction around line 27:
if [ -f ${ABAP_LICENSE_FILE} ]; then
Insert this code just before the statement above:
wait_for_file() {
local file="$1"
local timeout="$2"
local start_time=$(date +%s)
local end_time=$((start_time + timeout))
while [ ! -f "$file" ]; do
current_time=$(date +%s)
if [ "$current_time" -ge "$end_time" ]; then
echo "Timeout reached. File '$file' was not created."
return 1
fi
sleep 1
done
echo "File '$file' found."
return 0
}
echo Waiting creation of license file ${ABAP_LICENSE_FILE}. Go to https://go.support.sap.com/minisap to generate one
echo you have a minute to complete the process
# you might want to comment the next line out unless you're trying to install a license
wait_for_file ${ABAP_LICENSE_FILE} 60 # a minute will be enoughThen go to the license genaration page and enter all data except the hardware key, then restart the container and display the logs:
# this must run out of the container
docker restart abaptrial
docker logs -f abaptrialAs soon as you get the last key, enter it in the key generation page and save the new key file then copy it to the container:
docker cp ~/Downloads/A4H_Multiple.txt abaptrial:/opt/sap/ASABAP_license