This guide provides step-by-step instructions for setting up the SAP ABAP Cloud Developer Trial using Podman as the container runtime.
Important: Environment Information
This guide is for the ABAP Cloud Developer Trial containerized environment, which is designed for local development and testing purposes. The configuration steps documented here (particularly the BC_EXT_APPJOB_MANAGEMENT OData API setup) are applicable to:
SAP S/4HANA Public Cloud SAP S/4HANA Cloud Private Edition ABAP Platform Trial (this container) - Local development environment mimicking cloud behavior
NOT applicable to:
· SAP S/4HANA On-Premise (traditional ABAP stack) - Different API and configuration approach
· SAP NetWeaver ABAP - Legacy systems with different architecture
Key Characteristics of ABAP Cloud Environments:
· Uses Communication Management (Communication Users, Systems, Arrangements) instead of RFC destinations
· OData APIs follow SAP_COM_XXXX communication scenarios
· RESTful ABAP Programming (RAP) is the primary development model
· Follows ABAP Cloud development restrictions (clean core principles)
· Fiori Launchpad-based administration apps
Where Can You Use This Documentation?
This guide covers both local container setup (Podman) and API configuration that applies across multiple SAP cloud environments:
Fully Applicable To:
Environment Description Use Case
SAP S/4HANA Public Cloud Public Cloud Production cloud applications, multi-tenant SaaS
SAP S/4HANA Cloud Private
Edition Private Cloud Single-tenant cloud with SAP-managed infrastructure
ABAP Platform Trial
(Container) Local Development Development, learning, proof-of-concept, testing
API Configuration Steps (Section 5) are identical across all three environments:
· Communication Users, Systems, and Arrangements
· BC_EXT_APPJOB_MANAGEMENT OData API setup
· SAP_COM_0064 communication scenario
· Authentication and security model
NOT Applicable To:
Environment Why Not? Alternative Approach
SAP S/4HANA On-
Premise Traditional ABAP stack without Communication Management See On-Premise Configuration per SAP Note 3527503
SAP NetWeaver
AS ABAP Legacy architecture Different API exposure methods (ICF, Gateway, RFC)
Older SAP ECC
Systems No ABAP Cloud support Traditional development and integration patterns
Key Differences: ABAP Cloud vs. Traditional ABAP
Feature ABAP Cloud (This Guide) Traditional On-Premise
Authentication Communication Users (technical) Business/Service Users (SU01)
API Exposure Communication Arrangements with Scenarios /IWFND/MAINT_SERVICE + PFCG roles
Administration Fiori Launchpad apps Transaction codes (SM59, SICF, PFCG, etc.)
Development
Model RAP (RESTful ABAP Programming) Classical ABAP with full language access
OData
Services Managed via Communication Management Managed via transaction /IWFND/MAINT_SERVICE
Job Scheduling
API BC_EXT_APPJOB_MANAGEMENT (auto-configured) BC_EXT_APPJOB_MANAGEMENT (manual - SAP Note 3527503)
Authorization
Model Business Catalogs PFCG Roles with S_BTCH_JOB, S_PROGRAM, etc.
Configuration
Section Cloud Configuration On-Premise Configuration
Using This Guide
· Sections 1-4 (Prerequisites through Accessing): Specific to running the local ABAP Platform Trial container with Podman
· Section 5 - Cloud Configuration: For Public Cloud, Private Cloud, and Trial environments (ABAP Cloud)
· Section 5 - On-Premise Configuration: Complete guide for SAP S/4HANA On-Premise systems based on SAP Note 3527503
· Container Management & Troubleshooting: Universal across all environments with specific notes where applicable
Migration Note
If you're working with SAP S/4HANA On-Premise and planning to migrate to cloud:
1. This trial environment is an excellent sandbox to learn ABAP Cloud development patterns
2. Test your integrations using the Communication Management approach
3. Understand restrictions and approved APIs before starting cloud development
4. Use this to validate cloud-compatible code before deploying to SAP S/4HANA Public Cloud
Prerequisites
Software Requirements
· Podman installed on your system o Windows: Download from Podman Desktop
o Linux: Install via package manager (e.g., sudo apt install podman or sudo dnf install podman)
o macOS: Install via Homebrew (brew install podman)
· SAP GUI or ABAP Development Tools (ADT) for Eclipse
· Stable internet connection for downloading the container image (~30GB)
System Requirements
· CPU: 4 cores minimum (6 cores recommended)
· RAM: 16GB minimum; 28-32GB highly recommended to prevent HANA database crashes
· Storage: At least 150-170 GB of available disk space
· Architecture: x86_64 (amd64)
o Note: M-series Apple Silicon Macs are supported but require proper VM resource allocation
Installation Steps
Step 1: Initialize Podman Machine (macOS/Windows Only)
If you're running Podman on macOS or Windows, you need to initialize a virtual machine with sufficient resources:
# Initialize Podman machine with recommended resources
podman machine init --cpus 6 --memory 28672 --disk-size 170
# Start the Podman machine
podman machine start
# Verify the machine is running
podman machine list
Note: Linux users can skip this step as Podman runs natively.
Step 2: Pull the ABAP Cloud Developer Trial Image
Pull the latest ABAP Cloud Developer Trial image from Docker Hub:
# Pull the 2023 version (latest stable release)
podman pull sapse/abap-cloud-developer-trial:2023
Note: This download is approximately 30GB and may take significant time depending on your internet connection.
Step 3: Verify Image Download
# List downloaded images
podman images | grep abap-cloud-developer-trial
You should see output similar to:
sapse/abap-cloud-developer-trial 2023 <image-id> <date> 30GB
Step 4: Run the Container
Start the ABAP Cloud Developer Trial container with the following command:
podman run --stop-timeout 3600 -it \
--name abap-cloud-trial \
--hostname vhcala4hci \
-p 3200:3200 \
-p 3300:3300 \
-p 8443:8443 \
-p 3600:3600 \
-p 8000:8000 \
-p 44300:44300 \
sapse/abap-cloud-developer-trial:2023
Port Mapping Explanation:
· 3200: SAP GUI / RFC
· 3300: SAP GUI / RFC (additional)
· 8443: SAP Fiori Launchpad (HTTPS)
· 3600: SAP Cloud Connector
· 8000: ICM HTTP
· 44300: HANA Database
Important: The --stop-timeout 3600 parameter is critical—it allows up to 1 hour for the SAP HANA database to shut down cleanly when stopping the container.
Step 5: Wait for System Startup
The first startup takes approximately 30-45 minutes as the system initializes all components. Watch the console output for:
*** All services have been started. ***
***
*** To stop and be able to safely start again use Ctrl-C
*** Or use the stop command with timeout: docker stop -t 7200 ...
***
*** Have fun! ***
Configuration
Default System Information
Parameter Value
System ID A4H
Instance Number 00
Hostname somsapehost.example.com
Client 001
Language EN
Default Users
User Client Password Description
DEVELOPER 001 ABAPtr2023#00 ABAP Developer User
DDIC 000 ABAPtr2023#00 Data Dictionary User
SAP* 000 ABAPtr2023#00 Emergency/License User
Security Note: Change these default passwords immediately after first login.
Accessing the System
SAP GUI Connection
1. Open SAP Logon
2. Create a new connection with these details:
· Application Server: localhost (or your host IP)
· Instance Number: 00
· System ID: A4H
1. Log in with user DEVELOPER in client 001
ABAP Development Tools (ADT)
1. Open Eclipse with ADT plugins
2. Add a new ABAP Project
3. Connection details:
· System ID: A4H
· Application Server: localhost
· Instance Number: 00
· Client: 001
· User: DEVELOPER
· Password: ABAPtr2023#00
SAP Fiori Launchpad
Access via browser:
https://localhost:8443/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html
Note: You may need to accept the self-signed certificate warning.
Post-Installation Tasks
1. Update System License
The trial system includes a 3-month license. To extend it:
1. Log in to client 000 with user SAP*
2. Run transaction SLICENSE
3. Copy the Hardware Key 4. Visit SAP License Keys for Preview, Evaluation, and Developer Versions
5. Generate a new license key
6. Install the new license in transaction SLICENSE
2. Change Default Passwords
For security, change all default passwords:
* Run transaction SU01 to change user passwords
* Recommended: Use transaction SECPOL to enforce password policies
3. Configure Time Zone
1. Run transaction STZAC
2. Set your local time zone
3. Save and restart the system if needed
4. Optional: Enable External Access
If accessing from other machines on your network, replace localhost with your machine's IP address in connection strings.
5. Enable BC_EXT_APPJOB_MANAGEMENT OData API
The BC_EXT_APPJOB_MANAGEMENT OData API enables external scheduler integration, allowing external applications to manage and monitor Application Jobs programmatically.
Environment-Specific Configuration: The configuration steps differ based on your SAP environment:
ABAP Cloud Environments (Public Cloud, Private Cloud, Trial):
· Use Communication Management (Communication Users, Systems, Arrangements)
· Automatic service activation via scenario SAP_COM_0064
· See: Cloud Configuration
SAP S/4HANA On-Premise:
· Use Manual Service Activation (/IWFND/MAINT_SERVICE, PFCG roles)
· Requires external scheduler registration via program APJ_REGISTER_EXT_SCHED
· See: On-Premise Configuration
---
Cloud Configuration (Public, Private Cloud, Trial)
Applicable to:
· SAP S/4HANA Public Cloud
· SAP S/4HANA Cloud Private Edition
· ABAP Platform Trial (this container)
Configuration Method: Communication Management (Fiori Launchpad apps)
Prerequisites
· Business user with role containing business catalog SAP_CORE_BC_COM (e.g., SAP_BR_ADMINISTRATOR) · Access to Fiori Launchpad (https://localhost:8443)
· System fully started and licensed
Cloud Step 1: Create a Communication User
1. Log in to the Fiori Launchpad with an administrator user (e.g., DEVELOPER)
2. Search for and open the Maintain Communication Users app
3. Click New to create a new communication user
4. Fill in the details:
· User Name: APPJOB_API_USER (or your preferred name)
· Description: User for Application Jobs API
1. Click Propose Password to generate a secure password
2. Important: Copy and save the generated password securely - you'll need it for API authentication
3. Click Create to save the user
Cloud Step 2: Create a Communication System
1. In the Fiori Launchpad, search for and open the Communication Systems app
2. Click New to create a new system
3. Enter the following details:
· System ID: EXT_SCHEDULER_SYS (or your preferred ID)
· System Name: Will be auto-filled based on System ID
1. Click Create
2. In the Technical Data section:
· Check Inbound Only (since this is for external systems calling into SAP)
1. In the Users for Inbound Communication section:
· Click the + button to add a user
· Select User Name and Password as the authentication method
· Select the communication user created in Step 1 (APPJOB_API_USER)
· Click OK
1. Click Save
Cloud Step 3: Create a Communication Arrangement
1. In the Fiori Launchpad, search for and open the Communication Arrangements app
2. Click New to create a new arrangement
3. In the Scenario field, search for and select:
· Scenario ID: SAP_COM_0064 (External Scheduler Integration)
· Scenario Name: External Scheduler Integration
1. Provide an Arrangement Name (e.g., EXTERNAL_SCHEDULER_ARRANGEMENT)
2. Click Create
3. In the Common Data section:
· Communication System: Select the system created in Step 2 (EXT_SCHEDULER_SYS)
· The system will automatically populate the Inbound Communication user
1. In the Inbound Services section, you should see the OData service:
· Service Name: BC_EXT_APPJOB_MANAGEMENT
· Service Status: Should show as active (green)
· Service URL: Copy this URL - this is your API endpoint
1. Click Save
Cloud Step 4: Verify API Access
Test the API connection using a REST client (e.g., Postman, curl, or Python):
Example using curl:
# Get the service metadata
curl -X GET \
"https://localhost:8443/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/$metadata" \
-u "APPJOB_API_USER:<password>" \
-k
# List application job templates
curl -X GET \
"https://localhost:8443/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobTemplateSet" \
-u "APPJOB_API_USER:<password>" \
-k \
-H "Accept: application/json"
Example using Python:
import requests
from requests.auth import HTTPBasicAuth
# Configuration
base_url = "https://localhost:8443/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT"
username = "APPJOB_API_USER"
password = "<your_password>"
# Disable SSL warnings for self-signed certificates (development only!)
requests.packages.urllib3.disable_warnings()
# Test connection - Get job templates
response = requests.get(
f"{base_url}/JobTemplateSet",
auth=HTTPBasicAuth(username, password),
headers={"Accept": "application/json"},
verify=False # Only for development with self-signed certs
)
if response.status_code == 200:
print("✓ API connection successful!")
print(f"Response: {response.json()}")
else:
print(f"✗ API connection failed with status {response.status_code}")
print(f"Error: {response.text}")
Note: The -k flag in curl and verify=False in Python disable SSL certificate verification. This is acceptable for local development with self-signed certificates, but should never be used in production.
Cloud API Capabilities
The BC_EXT_APPJOB_MANAGEMENT API provides the following entity sets:
Entity Set Description Operations
JobTemplateSet Application job templates GET, POST
JobRunSet Scheduled and executed job runs GET, POST, DELETE
JobRunStepSet Individual steps within a job run GET
JobCountSet Job execution statistics GET
JobLogSet Job execution logs GET
Cloud Common API Operations
1. List all Job Templates:
GET /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobTemplateSet
2. Schedule a Job (On-Premise - Use Registered User):
POST /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobRunSet
Content-Type: application/json
{
"JobTemplateName": "YOUR_TEMPLATE_NAME",
"JobName": "MyScheduledJob_001",
"StartImmediate": true
}
Note: For On-Premise, authenticate with the registered technical user (e.g., ZAPPJOB_API) that was registered using APJ_REGISTER_EXT_SCHED. The system uses the authenticated user to validate the scheduler registration (via SAP_COM_0326 and table APJ_EXT_REG_2).
3. Check Job Status:
GET /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobRunSet('JOB_RUN_ID')
4. Get Job Logs:
GET /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobLogSet?$filter=JobName eq 'MyScheduledJob_001'
Cloud Troubleshooting
Issue: 401 Unauthorized Error
· Verify the communication user credentials
· Ensure the user is assigned to the communication system
· Check that the communication arrangement is active
Issue: 403 Forbidden Error
· Verify the business user has the required authorization catalog
· Check the communication arrangement configuration
· Ensure the inbound service is activated
Issue: Service URL not accessible
· Verify the container ports are properly mapped (port 8443)
· Check firewall settings
· Ensure the system is fully started
· Try accessing the Fiori Launchpad first to confirm connectivity
Issue: Certificate errors
· Accept the self-signed certificate in your browser first
· Use -k flag in curl or verify=False in requests library for development
· For production, import the certificate into your trusted store
Security Best Practices
1. Change Default Passwords: Always change the generated communication user password
2. Use HTTPS: Never transmit credentials over unencrypted connections
3. Limit Permissions: Grant only the minimum required authorizations
4. Monitor API Usage: Regularly review communication user activity logs
5. Rotate Credentials: Periodically update communication user passwords
6. IP Whitelisting: Consider restricting access to known IP addresses (in production)
Cloud Additional Resources · SAP Business Accelerator Hub - BC_EXT_APPJOB_MANAGEMENT · SAP Help - Application Jobs
· Transaction SM37 - Job Overview (for monitoring via SAP GUI)
· Transaction SCOT - SAPconnect Administration
---
On-Premise Configuration
Applicable to:
· SAP S/4HANA On-Premise
Configuration Method: Manual service activation, PFCG roles, external scheduler registration
Important: The configuration steps above (Cloud Configuration) apply to ABAP Cloud environments only (S/4HANA Public Cloud, S/4HANA Cloud Private Edition, Trial). For SAP S/4HANA On-Premise systems, follow the different approach documented below based on SAP Note 3527503.
On-Premise vs. Cloud Configuration Differences
SAP S/4HANA On-Premise systems use a traditional ABAP stack with different architecture and security models. The BC_EXT_APPJOB_MANAGEMENT API is available but requires manual configuration.
Critical On-Premise Requirement: To use BC_EXT_APPJOB_MANAGEMENT with SAP S/4HANA On-Premise, you must register the external scheduler using an ABAP program included with SAP Note 3527503. This step is not required in cloud environments where schedulers are automatically registered.
Aspect Cloud Configuration On-Premise Configuration
Configuration
Method Communication Arrangements Manual service activation
Service Activation Automatic via SAP_COM_0064 Transaction /IWFND/MAINT_SERVICE
Authentication Communication Users Business Users or Service Users
Authorization
Model Business Catalogs (SAP_CORE_BC_COM) PFCG Roles with specific auth objects
User Management Maintain Communication Users app Transaction SU01
Service Registry Automatic Manual registration in Gateway
Scheduler
Registration Automatic Required: Run program APJ_REGISTER_EXT_SCHED
SAP Note
Reference Standard cloud documentation SAP Note 3527503
On-Premise Prerequisites
· SAP S/4HANA On-Premise system (minimum version as per SAP Note 3527503)
· SAP Note 3527503 downloaded and reviewed (includes scheduler registration program)
· SAP Gateway component installed and configured
· Authorization to use transactions /IWFND/MAINT_SERVICE, /IWFND/GW_CLIENT, PFCG, SU01, SE38
· Basic understanding of OData service activation in SAP Gateway
· Access to SAP Support Portal to download SAP Note 3527503
On-Premise Step 1: Verify Service Availability
1. Log in to SAP GUI with an administrator user
2. Run transaction **/IWFND/MAINT_SERVICE** (Activate and Maintain Services)
3. Click Add Service
4. In the popup:
· System Alias: LOCAL (or your configured backend alias)
· External Service Name: BC_EXT_APPJOB_MANAGEMENT_0001 (check exact name in your system)
1. Click Get Services to search
2. If the service appears, it's available for activation
On-Premise Step 2: Activate the OData Service
1. In transaction /IWFND/MAINT_SERVICE
2. Select Add Service button
3. Search for and select BC_EXT_APPJOB_MANAGEMENT
4. Specify:
· Package Assignment: $TMP (for testing) or your custom package
· Service Name: Keep default or customize
· Description: "Application Jobs External Management API"
1. Click Add Selected Services
2. The system will register the service in the Gateway
On-Premise Step 3: Test Service Activation
1. In transaction /IWFND/MAINT_SERVICE, find your activated service
2. Click on the service line
3. Click SAP Gateway Client button (or use transaction /IWFND/GW_CLIENT)
4. Test the metadata endpoint:
· URI: /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/$metadata
· HTTP Method: GET
1. Click Execute
2. You should receive HTTP 200 with XML metadata
On-Premise Step 4: Create Service User
Unlike Communication Users in cloud, on-premise uses standard SAP users:
1. Run transaction **SU01** (User Maintenance)
2. Create a new user:
· User Type: System or Service
· User Name: ZAPPJOB_API (your naming convention)
· Password: Set a strong password
1. Assign initial authorization (will refine in next step)
On-Premise Step 5: Configure Authorization
The BC_EXT_APPJOB_MANAGEMENT API requires specific authorization objects:
1. Run transaction **PFCG** (Role Maintenance)
2. Create a new role: Z_APPJOB_API_ROLE
3. Go to Authorizations tab
4. Click Change Authorization Data
5. Add the following authorization objects manually:
Required Authorization Objects:
* Job Scheduling and Management
S_BTCH_JOB - Background Processing: Operations on Background Jobs
- JOBACTION: RELE (Release), SHOW (Display)
- JOBGROUP: * (or specific groups)
* Job Administration
S_BTCH_ADM - Background Processing: Background Administrator
- BTCADMIN: Y (Yes)
* Program Execution
S_PROGRAM - ABAP: Program Execution
- P_ACTION: SUBMIT
- P_GROUP: * (or specific groups)
* RFC Authorization (if needed for external calls)
S_RFC - Authorization Check for RFC Access
- RFC_TYPE: Function Module
- RFC_NAME: * (or specific functions)
- ACTVT: 16 (Execute)
* Optional: Service Execution
S_SERVICE - Check at Start of External Services
- SRV_NAME: BC_EXT_APPJOB_MANAGEMENT
- SRV_TYPE: HTTP
1. Generate the profile
2. Assign the role to user ZAPPJOB_API in transaction SU01
On-Premise Step 6: Configure ICF Service (If Required)
1. Run transaction **SICF** (HTTP Service Hierarchy Maintenance)
2. Navigate to: /default_host/sap/opu/odata/sap/BC_EXT_APPJOB_MANAGEMENT
3. Right-click the service → Activate
4. Check Service Data:
· Ensure Anonymous Logon is NOT enabled (security)
· Authentication should be set appropriately
On-Premise Step 7: Register External Schedulerd
Critical for On-Premise: Unlike cloud environments where schedulers are automatically registered, On-Premise systems require manual external scheduler registration before the BC_EXT_APPJOB_MANAGEMENT API can be used.
SAP Note 3527503 includes the ABAP program APJ_REGISTER_EXT_SCHED for scheduler registration:
1. Access the Registration Program:
· Program Name: **APJ_REGISTER_EXT_SCHED**
· Execute via transaction **SE38** or **SA38**
1. Run the Scheduler Registration Program: The program requires the following parameters:
Parameter Type Description Example
USER Communication User The technical user created in Step 4 ZAPPJOB_API
COMPANY Company/Organization Name of your company/organization ACME Corporation
PRODUCT Product Name Name of your external scheduler product Custom Scheduler v1.0
DELETE Checkbox Check to unregister instead of register Unchecked (for registration)
Program Execution: 3. How the Program Works:
· Uses Communication Scenario **SAP_COM_0326** (hardcoded in the program)
· Inserts registration into system table APJ_EXT_REG_2
· Creates entry with timestamp and creating user
· Each combination of CS_NAME + CA_USER must be unique
1. Expected Output: On Success: On Error (e.g., already exists):
2. Verify Registration:
· Check the program output for success message
o Alternatively, verify in table APJ_EXT_REG_2 using transaction **SE16** or **SE16N**:
o Table: APJ_EXT_REG_2
o Filter: CS_NAME = 'SAP_COM_0326' AND CA_USER = 'ZAPPJOB_API'
1. To Unregister a Scheduler:
· Run the same program
· Check the DELETE checkbox
· Provide the same USER parameter
· Success message: Scheduler successfully unregistered
Important Notes:
· The program automatically uses Communication Scenario SAP_COM_0326
· Each technical user (CA_USER) can only be registered once per communication scenario
· The COMPANY and PRODUCT parameters are metadata for identification purposes
· If you get "already exists" error, either use a different user or unregister first
· Registration is required before any API calls can be made
Program Source (from SAP Note 3527503):
REPORT APJ_REGISTER_EXT_SCHED.
DATA: wa TYPE apj_ext_reg_2,
ts TYPE timestampl.
PARAMETERS: user TYPE sy-uname OBLIGATORY,
company TYPE apj_ext_company OBLIGATORY,
product TYPE apj_ext_product OBLIGATORY,
delete TYPE c AS CHECKBOX.
GET TIME STAMP FIELD ts.
wa-cs_name = 'SAP_COM_0326'.
wa-ca_user = user.
wa-company = company.
wa-product = product.
wa-created_by = sy-uname.
wa-created_at = ts.
IF delete IS INITIAL.
INSERT apj_ext_reg_2 FROM wa.
IF sy-subrc = 0.
WRITE: / 'Scheduler successfully registered'.
ELSE.
WRITE: / 'Error. Maybe entry already exists'.
ENDIF.
ELSE.
DELETE FROM apj_ext_reg_2 WHERE cs_name = wa-cs_name
AND ca_user = wa-ca_user.
IF sy-subrc = 0.
WRITE: / 'Scheduler successfully unregistered'.
ELSE.
WRITE: / 'Error. No such registration'.
ENDIF.
ENDIF.
On-Premise Step 8: Test API Access
Using curl:
# Test from external system
curl -X GET \
"http://your-s4hana-host:8000/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobTemplateSet" \
-u "ZAPPJOB_API:password" \
-H "Accept: application/json"
Using Postman:
· Method: GET
· URL: http://your-s4hana-host:8000/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobTemplateSet
· Auth: Basic Authentication
· Username: ZAPPJOB_API
· Password: <your_password>
Using SAP Gateway Client (Transaction /IWFND/GW_CLIENT):
· Request URI: /sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT/JobTemplateSet
· HTTP Method: GET
· User: ZAPPJOB_API
On-Premise Specific Considerations
1. Network Configuration
· Firewall Rules: Ensure ports (typically 8000 for HTTP, 44300 for HTTPS) are open
· SAP Router: May be required for external access
· Reverse Proxy: Consider for production (SAP Web Dispatcher, nginx)
2. SSL/TLS Configuration
· On-premise systems require manual SSL certificate configuration
· Use transaction STRUST to manage SSL certificates
· Generate or import certificates for HTTPS endpoints
3. Authorization Strategy
On-premise offers more granular control:
· Limit job execution to specific users/groups using S_BTCH_JOB
· Restrict program execution with S_PROGRAM
· Use authorization traces (ST01) to identify missing permissions
4. Performance Considerations
· Gateway connection pooling configuration
· IDoc monitoring if jobs trigger IDoc processing
· Background job server group configuration (transaction RZ12)
On-Premise Troubleshooting
Issue: Service Not Found in /IWFND/MAINT_SERVICE
Solution:
1. Check SAP Note 3527503 for version compatibility
2. Verify SAP Gateway components are installed (transaction SMICM)
3. Run service registration report (program /IWFND/CL_SODATA_SRV_REGISTRATION)
Issue: Authorization Error (HTTP 403)
Solution:
1. Run authorization trace: Transaction ST01 or STAUTHTRACE
2. Execute the API call while trace is active
3. Review missing authorization objects
4. Add to role in transaction PFCG
Issue: Service Inactive
Solution:
1. Check ICF service status in transaction SICF
2. Navigate to service node and activate
3. Verify no transport locks on the service
Issue: Gateway Errors (HTTP 500)
Solution:
1. Check Gateway error log: Transaction /IWFND/ERROR_LOG
2. Review application log: Transaction SLG1
3. Check system log: Transaction SM21
4. Verify backend conne
Issue: Scheduler Not Registered / User Not Registered
Cause: External scheduler user has not been registered in the system (On-Premise only)
Solution:
1. Verify you have downloaded and reviewed SAP Note 3527503
2. Run program **APJ_REGISTER_EXT_SCHED** via transaction SE38 or SA38
3. Provide required parameters:
· USER: Technical user name (e.g., ZAPPJOB_API)
· COMPANY: Your company/organization name
· PRODUCT: Your scheduler product name
· DELETE: Leave unchecked for registration
1. Verify success message: "Scheduler successfully registered"
2. If you get "Error. Maybe entry already exists", check table APJ_EXT_REG_2 in SE16N
3. Retry API calls using the registered technical user for authentication
Error Symptoms:
· API returns authorization errors
· Job scheduling fails with "user not registered" or similar messages
· Missing entries in table APJ_EXT_REG_2 for communication scenario SAP_COM_0326
Verification Query:
-- Check in SE16N or SE16
Table: APJ_EXT_REG_2
Where: CS_NAME = 'SAP_COM_0326'
AND CA_USER = 'ZAPPJOB_API' (your user)
On-Premise SAP Note 3527503 Details
Reference: Consult SAP Note 3527503 in the SAP Support Portal for:
· Minimum release requirements
· Patch levels needed
· ABAP program APJ_REGISTER_EXT_SCHED for external scheduler registration
· Known issues and corrections
· Version-specific configuration steps
· Support component assignment
What's Included in the Note:
1. Registration Program: APJ_REGISTER_EXT_SCHED
· Source code for the registration program
· Inserts/deletes entries in table APJ_EXT_REG_2
· Uses communication scenario SAP_COM_0326
· Parameters: USER, COMPANY, PRODUCT, DELETE
1. Technical Details:
· Corrections to BC_EXT_APPJOB_MANAGEMENT service definition
· Authorization object requirements
· Database table structure (APJ_EXT_REG_2)
· Communication scenario details
1. Implementation Guide:
· Step-by-step configuration instructions
· Authorization setup recommendations
· Performance optimization notes
· Bug fixes for specific operations
Program Functionality:
· Registers technical users as external schedulers
· Links users to communication scenario SAP_COM_0326
· Stores metadata (company, product) for identification
· Provides unregister functionality via DELETE parameter
· Simple insert/delete operations with clear success/error messages
Comparison: When to Use Each Approach
Scenario Recommended Approach
Developing cloud-native applications Cloud Configuration - Use S/4HANA Public Cloud
Testing cloud integrations locally Cloud Configuration - Use this Podman trial
Integrating with existing S/4HANA
On-Premise On-Premise Configuration - Manual activation
Migrating from On-Premise to Cloud Start with On-Premise, test with Cloud trial, deploy to Public Cloud
Hybrid landscape (both environments) Implement both approaches, maintain parallel configurations
On-Premise to Cloud Migration Path
If you're planning to migrate from On-Premise to ABAP Cloud:
1. Document Current Setup: Export PFCG roles, note authorization requirements
2. Test in Trial: Use this Podman environment to validate cloud compatibility
3. Map Authorizations: Convert PFCG roles to Business Catalogs
4. Recreate as Communication Arrangements: Follow Section 5 approach
5. Test API Compatibility: Ensure existing integrations work with minimal changes
6. Deploy to Public Cloud: Use lessons learned from trial environment
On-Premise Quick Reference
Essential Steps Checklist:
· Download and review SAP Note 3527503
· Activate service in /IWFND/MAINT_SERVICE
· Create service user in SU01 (e.g., ZAPPJOB_API)
· Configure authorizations in PFCG (S_BTCH_JOB, S_BTCH_ADM, S_PROGRAM, S_RFC)
· Activate ICF service in SICF
· Run program APJ_REGISTER_EXT_SCHED to register the user
· Verify registration in table APJ_EXT_REG_2
· Test API using the registered user for authentication
Key Transactions:
· /IWFND/MAINT_SERVICE - Service activation
· /IWFND/GW_CLIENT - API testing
· SU01 - User management
· PFCG - Role/authorization management
· SICF - ICF service activation
· SE38 / SA38 - Run program APJ_REGISTER_EXT_SCHED
· SE16 / SE16N - View table APJ_EXT_REG_2 (verification)
· SM37 - Job monitoring
· /IWFND/ERROR_LOG - Gateway error analysis
Critical Parameters:
· Program Name: APJ_REGISTER_EXT_SCHED
· Communication Scenario: SAP_COM_0326 (automatically used by program)
· Registration Table: APJ_EXT_REG_2
· Technical User: Must be registered before API use (e.g., ZAPPJOB_API)
· Service URL: http(s)://host:port/sap/opu/odata/SAP/BC_EXT_APPJOB_MANAGEMENT
Registration Program Parameters:
· USER: Technical user name (mandatory)
· COMPANY: Your organization name (mandatory)
· PRODUCT: Your scheduler product name (mandatory)
· DELETE: Checkbox - check to unregister, uncheck to register
Common Pitfalls:
1. Forgetting to run APJ_REGISTER_EXT_SCHED → API calls fail with authorization errors
2. Missing S_BTCH_JOB authorization → Job submission denied
3. User already registered → Run program with DELETE checkbox to unregister first
4. Using unregistered user for API authentication → Scheduler validation fails
5. Using Communication Management approach → Wrong architecture for On-Premise
Container Management
Stop the Container
# Graceful shutdown (allows HANA to stop properly)
podman stop abap-cloud-trial
# This will take several minutes due to --stop-timeout 3600
Start Existing Container
# Start the previously created container
podman start -ai abap-cloud-trial
# Startup takes ~10-15 minutes
Check Container Status
# View running containers
podman ps
# View all containers (including stopped)
podman ps -a
# Check container logs
podman logs abap-cloud-trial
Remove Container
# Stop and remove the container
podman stop abap-cloud-trial
podman rm abap-cloud-trial
# Remove the image (optional)
podman rmi sapse/abap-cloud-developer-trial:2023
Troubleshooting
Issue: Container Crashes or HANA Fails to Start
Cause: Insufficient RAM allocation
Solution:
· Increase RAM to at least 28GB for Podman machine
· Close other memory-intensive applications
· Restart Podman machine:
· podman machine stop
· podman machine rm
· podman machine init --cpus 6 --memory 28672 --disk-size 170
· podman machine start
Issue: Cannot Connect via SAP GUI
Cause: Port forwarding not working or firewall blocking
Solution:
· Verify ports are exposed: podman port abap-cloud-trial
· Check Windows Firewall or antivirus settings
· Ensure Podman machine is running: podman machine list
Issue: "Disk Full" Error
Cause: Insufficient disk space allocated
Solution:
· Increase disk size when initializing machine
· Clean up unused containers and images:
· podman system prune -a
Issue: Slow Performance
Solutions:
· Allocate more CPU cores (6-8 recommended)
· Increase RAM allocation
· Ensure no other containers are running
· Check host system resource usage
Issue: Certificate Errors in Browser
Cause: Self-signed SSL certificate
Solution:
· Accept the certificate warning in your browser
· Or add the certificate to your trusted certificates
Additional Resources
Official Documentation · SAP ABAP Platform Trial Image Documentation · Docker Hub - ABAP Cloud Developer Trial
SAP Community · Get support by posting questions with tag #abap_trial on SAP Community · ABAP Cloud Developer Trial 2023 Announcement
Learning Resources · ABAP Development on SAP S/4HANA Public Cloud · SAP Learning Hub · openSAP Free Online Courses
Podman Documentation · Podman Official Documentation · Podman Desktop
Best Practices
1. Resource Management
· Always allocate sufficient resources before starting
· Monitor system resources during operation
· Use podman stats to check resource usage
1. Data Persistence
· Consider using volumes for persistent data
· Regular exports of development objects
· Backup important customizations
1. System Maintenance
· Regularly update the license (every 3 months)
· Keep Podman updated to the latest version
· Monitor HANA database health
1. Development Workflow
· Use transport requests for moving objects
· Follow ABAP Cloud development guidelines
· Test in the trial system before production
Quick Reference Commands
# Initialize and start Podman machine
podman machine init --cpus 6 --memory 28672 --disk-size 170
podman machine start
# Pull and run container
podman pull sapse/abap-cloud-developer-trial:2023
podman run --stop-timeout 3600 -it --name abap-cloud-trial \
--hostname vhcalnplci \
-p 3200:3200 -p 3300:3300 -p 8443:8443 -p 3600:3600 \
-p 8000:8000 -p 44300:44300 \
sapse/abap-cloud-developer-trial:2023
# Container management
podman start -ai abap-cloud-trial # Start existing container
podman stop abap-cloud-trial # Stop container (takes time!)
podman logs abap-cloud-trial # View logs
podman exec -it abap-cloud-trial bash # Access container shell
# Cleanup
podman stop abap-cloud-trial
podman rm abap-cloud-trial
podman system prune -a