Tables in SAP basis area

As basis you are sometimes confronted with special requests. For these special requests, you will need to know for part SAP uses which tables so you can use SE16N for internal lookup of information.

The below is a list of tables used in SAP basis.

Disclaimer 1: table list is not complete. 
Disclaimer 2: tables can change each SAP version.

SAP mail / SCOT

BCSD_BLMODULE
BCSD_BREAKLOOP
BCSD_RQST
BCSD_STML
SXADMINTAB
SXCONVERT
SXCONVERT2
SXCOS
SXCOS_T
SXCPDEF
SXCPRECV
SXCPSEND
SXDEVTYPE
SXDEVTYPL
SXDOMAINS
SXJOBS
SXNODES
SXPARAMS
SXRETRY
SXROUTE
SXSERV
SXTELMOIN
SXTELMOOUT

USMM user management

TUAB_ANNOTATION
TUAB_WF_TYPE
TUAB_WF_TYPE_T
TUAPP
TUAPPT
TUAPUSG
TUCON
TUGRP
TUJOB
TUL_AC_UNIT
TUL_AC_UNITT
TUL_ACRES
TUL_ACTTC
TUL_CLIENTS
TUL_CONTROL
TUL_CPU
TUL_CPU_RAW
TUL_ENG_PL
TUL_ENG_PROT
TUL_ENG_RESULT
TUL_ENG_RESULT_1
TUL_ENGINES
TUL_ENGINEST
TUL_JOB
TUL_MEMOS
TUL_MSG
TUL_TRANS
TUL_TRSTAT
TUL_UNIT
TUL_UNITT
TULAPP_PL
TULTRANS
TUMRES
TUMSG
TUPL
TUPLT
TUPRO
TUSERSETTING
TUSERSETTINGPROD
TUSTAT
TUTYHLP
TUTYP
TUTYPA
TUTYPASYS
TUTYPNOWSYS
TUTYPP
TUTYPPL
TUZUSSYS

STMS transports and settings

TMSBCIBOX
TMSBCIIBOX
TMSBCIJOY
TMSBCINEX
TMSBCINTAB
TMSBCIOBJ
TMSBCIXBOX
TMSCDES
TMSCDES_S
TMSCDESD
TMSCDIST
TMSCDOL
TMSCDOM
TMSCDOMT
TMSCNFS
TMSCNFST
TMSCROUTE
TMSCSYS
TMSCSYST
TMSCTOK
TMSFSYSH
TMSFSYSL
TMSMCONF
TMSPCONF
TMSPVERS
TMSSRV
TMSTCRI
TMSTLOCKP
TMSTLOCKR
TMSTOUT
TMSUCONF

E070L

E071

E071K

STMS History

TMSQLASTWL
TMSQNOTES
TMSQNOTESH
TMSQWL
TMSQWLF
TMSQWLFH
TMSQWLH

Database connections

DBCON

DBCONUSR

Files

FILENAME
FILENAMECI
FILEPATH
FILESYS
FILETEXT
FILETEXTCI
OPSYSTEM
OPTEXT
PARAMVALUE
PATH
PATHTEXT
USER_DIR

STRUST settings

SSF_PSE_D
SSF_PSE_H
SSF_PSE_T
SSFAPPLICT
SSFARGS
STRUSTCAB
STRUSTCERT
STRUSTCRL
STRUSTCRP
STRUSTCRPT
STRUSTCRR
STRUSTCRRT
STRUSTCRS
STRUSTCRT
STRUSTSSL
STRUSTSSLT
STRUSTWSSE
STRUSTWSSET
TWPSSO2ACL
USERINFO_STORAGE
USRACLEXT
USRCERTMAP
USRCERTRULE

Content server and SAP DMS settings

CREP_FTP
CREP_RPC
CREP
CREP_FILE
CREP_HTTP
CREP_LREP
CREP_R3DB
CREP_RFC
CREP_TREE
CREPDESCR
CREPDOCSP

SWU3 workflow settings

SWFGPACTIVITIES
SWFGPCONF
SWFGPDEPLOY
SWFGPGENOBJNUM
SWFGPREUSE
SWFGPROLEDEF
SWFGPROLEINST
SWFGPWULACDEF
SWFGPWULDATOBJ
SWFGPWULFLOWS
SWFGPWULTASKS

Classic TVARV

TVARUVN
TVARV
TVARVC

SICF nodes

ICF_SESSION_CNTL
ICFALIAS
ICFAPPLICATION
ICFBUFFER
ICFDELTA
ICFDOCU
ICFHANDLER
ICFHANDTREE
ICFIMPORT
ICFINSTACT
ICFLOGORDER
ICFNOHANLDER
ICFSECPASSWD
ICFSERVICE
ICFSERVLOC
ICFVIRHOST

Start menu settings

SSM_CUST

Webservices logical ports & soap runtime

SRT_LP
SRT_LP_FEAT
SRT_LP_OP_FEAT
SRT_LP_SXI_ADDR
SRT_LP_T

SPROXMSGREL
SRT_SLT_HOSTS
SRT_ASSIGN_DATA
SRT_ASSIGN_DIR
SRT_ASSIGN_DIR_T
SRT_AU_TEST_RECI
SRT_CACHE
SRT_CC_CHANGES
SRT_CC_CHANGES_H
SRT_CC_MIF_CDATA
SRT_CC_MIF_CDIR
SRT_CC_MIF_LDATA
SRT_CC_PC
SRT_CC_PP
SRT_CC_ST_ACT
SRT_CSTC
SRT_CDTC_C_DET
SRT_CDTC_CHD_ID
SRT_CDTC_DESCR_T
SRT_CDTC_G_DET
SRT_CDTC_S_DET
SRT_CFG_BNDG
SRT_CFG_CFGVAL
SRT_CFG_CHG_TAB
SRT_CFG_CLI_ASGN
SRT_CFG_DATA
SRT_CFG_DEF_ASGN
SRT_CFG_DIR
SRT_CFG_DIR_T
SRT_CFG_ICF_DET
SRT_CGF_ICF_USE
SRT_CFG_LOG_HDR
SRT_CFG_LOG_ITEM
SRT_CFG_LOG_SRCH
SRT_CFG_MLP_DATA
SRT_CFG_SRV_ASGN
SRT_CFG_STS_ASGN
SRT_CFG_SV_ASN_T
SRT_CFG_TPLC_DAT
SRT_CFG_TPLC_DIR
SRT_CFG_TRC
SRT_CFG_TRC_ADM
SRT_CFG_VAL_DET
SRT_CFG_VAL_DIR
SRT_CFG_VAL_UPD
SRT_CFG_VALUES
SRT_CG_SYST_ATTR
SRT_CG_SYST_DIR
SRT_CG_WSDL_CONT
SRT_CG_WSDL_URL
SRT_CHECK_HEADER
SRT_CHECK_RESULT
SRT_CHECK_STATUS
SRT_CLI_NR
SRT_CNTRL_TASKS
SRT_CON_SYSTEMS
SRT_CTRL_TSK_MSG
SRT_DEST_CFGV
SRT_DEST_DATA
SRT_DEST_DIR
SRT_DEST_DIR_T
SRT_DEST_DIR_V
SRT_DEST_WSDL
SRT_DOMAIN_SYS
SRT_DOMAIN_SYS_T
SRT_DOMN_DIR
SRT_DOMN_DIR_T
SRT_DOMN_SYSTS
SRT_DT_CFG_DATA
SRT_DT_CFG_DIR
SRT_DT_CFG_DIR_T
SRT_DT_CHG_DIR
SRT_DT_CHG_DIR_L
SRT_DT_CHG_STAT
SRT_DT_CHG_STATL
SRT_FALLBACK_LPS
SRT_FW_SETTINGS
SRT_GEN_CLNT_DIR
SRT_IDENTIFIER
SRT_ISO_SET_C
SRT_ISO_SET_P
SRT_LOG_TENANT
SRT_LOG_TENANT_R
SRT_LP
SRT_LP_FEAT
SRT_LP_OP_FEAT
SRT_LP_SXI_ADDR
SRT_LP_T
SRT_LP_URL_ASGN
SRT_LRD_HEADER
SRT_LRD_ROUTING
SRT_MED_SYS
SRT_MED_SYS_T
SRT_MIG_HIST
SRT_NAME_CACHE
SRT_OBSERV_DATA
SRT_PEND_TASK
SRT_PRF_CFG_DIR
SRT_PRF_CFGVAL
SRT_PRF_DATA
SRT_PRF_DIR
SRT_PRE_DIR_T
SRT_PRE_DIR_V
SRT_PRO_WKL
SRT_PROF_ASSIGN
SRT_PRULE_ASSIGN
SRT_PRULE_DATA
SRT_PRULE_DIR
SRT_PRX_CLNT_DIR
SRT_PRX_EX_CHECK
SRT_PT_INDEX
SRT_PX_MSG_ASGN
SRT_REG_ADRMAP
SRT_REG_BACKUPR
SRT_REG_BIND
SRT_REG_CONFIG
SRT_REG_OPERAT
SRT_REGISTRY
SRT_REGISTRYT
SRT_REQ_DATA_C
SRT_REQ_DATA_CON
SRT_REQ_DATA_P
SRT_REQ_DATA_PIF
SRT_REQ_DATA_PRO
SRT_REQ_DIR
SRT_REQ_DIR_T
SRT_REV_PROXY
SRT_RTC_BNDG
SRT_RTC_CFGVAL
SRT_RTC_CG_DATA
SRT_RTC_CG_DATAL
SRT_RTC_CG_DIR
SRT_RTC_DATA
SRT_RTC_DATA_RT
SRT_RTC_DATAL
SRT_RTC_DIR
SRT_RTC_DT_IF_SD
SRT_RTC_DT_RT
SRT_RTC_DT_RT_MD
SRT_RTC_WSIL
SRT_RTC_WSILL
SRT_SAVED_SEARCH
SRT_SCP_ASSIGN
SRT_SDN_URL_C
SRT_SECSTORE_LNK
SRT_SOAM_CONNECT
SRT_SR_CLASS_S_T
SRT_SR_CLASS_SYS
SRT_SR_CLASS_V_T
SRT_SR_CLASS_VAL
SRT_SR_SEP
SRT_SR_SEP_T
SRT_SR_SYSTEM
SRT_SR_UDDI_ROW
SRT_SR_VW_ASSIGN
SRT_SR_VM_DETAIL
SRT_SR_VM_HEADER
SRT_SR_WSD
SRT_SR_WSD_T
SRT_ST_ACT_A
SRT_ST_ACT_C
SRT_ST_ACT_C_C
SRT_ST_ACT_P
SRT_ST_ACT_P_C
SRT_ST_REQ_A
SRT_ST_REQ_C
SRT_ST_REQ_P
SRT_SYS_NR
SRT_SYS_SETTINGS
SRT_SYST_APPL
SRT_SYST_APPL_HT
SRT_SYST_CL_DATA
SRT_SYST_CL_DIR
SRT_SYSTEM_DIR
SRT_TEST_CONCATE
SRT_TMP_CG_DATA
SRT_TMP_CG_DATAL
SRT_TRACE_USERS
SRT_TRANSP
SRT_TRANSP_A
SRT_TRANSP_KEYS
SRT_TRC_ASSIGN
SRT_TRC_COUNTER
SRT_TRC_FILES
SRT_U_ASSIGN_DAT
SRT_U_ASSIGN_DIR
SRT_UASSIGN_DIR
SRT_USER_DATA
SRT_USER_DIR
SRT_USER_DIR_T
SRT_WHITE_LIST
SRT_WSDL_CACHE_P
SRT_WSDL_DIR
SRT_WSDL_DIR_T
SRT_WSDL_DS_ASGN
SRT_WSDL_ENTITY
SRT_WSIL_CACHE_C
SRT_WSIL_CACHE_P
SRT_WSIL_TMP
SRT_WSP_WSDL_FLA
SRTFT_ASSIGN
SRTFT_ASSIGN_IF
SRTFT_ASSIGN_SEC
SRTFT_NM_CFG_MAP
SRTFT_QDATA_LOG
SRTFT_QUEUE
SRTFT_QUEUE_DATA
SRTFT_QUEUE_LG_T
SRTFT_QUEUE_LOG

Content server settings

CREP_FTP
CREP_RPC
CREP
CREP_FILE
CREP_HTTP
CREP_LREP
CREP_R3DB
CREP_RFC
CREP_TREE
CREPDESCR
CREPDOCSP

Idoc settings WE20, WE21

EDMA
EDP12
EDP13
EDP21
EDPP1
EDIPO
EDIPO2
EDIPOA
EDIPOD
EDIPOF
EDIPOI
EDIPORT
EDIPOX
EDIPOXH

SAP license key

SAPLIKEY

OS commands SM49, SM69

SXPGCOSTAB
SXPGCOTABE
SXPGHISTOR

SNC

SNCSYSACL

TXCOMSECU
USRACL
TSP0U

RFC’s SM59

RFCTA
RFCTYPE
RFCLIST
RFC_TT_ACL
RFCATTRIB
RFCCBWHITELIST
RFCCHECK
RFCCMC
RFCDES
RFCDESSECU
RFCDOC
RFCGO
RFCSTXTAB
RFCSYSACL
RFCSYSACL_CLNT
RFCTRUST

ALE distribution model BD64

TBDLI
TBDLS
TBDLST
TBDLT
TBDBR
TBDBRF
TBDA2
TBD00
TBD00T
TBD03
TBD05
TBD06
TBD20
TBD30
TBDTPBDF
TBDTPBR
TBDTPMD

TBLSYSDEST
TBSPECDEST

ALV grids

LTDX
LTDXD
LTDXT

Secstore

RSECACHK
RSECACTB
RSECSESSION_CL
RSECTAB
RSECVAL
RSECVAL_CL

Spools and printers

TSP03
TSP03A
TSP03C
TSP03D
TSP03L
TSP03POCCNF
TSP03POCPRE
TSP03T
TSPCMDS
TSPLOMS
TSPROMS
TSPSV

User menu

SMEN_BUFFC

SLT data replication tips and tricks

SAP SLT server can be used to replicate data from SAP system to a target system. In this blog we will not discuss if it is a good or bad architecture to replicate source data directly or not. Focus is on the technical setup and operation of the SAP SLT server for data replication.

SAP references

Help.sap.com reference for SLT can be found here.

SLT performance optimization guide can be found here.

SAP learning on SLT can be found here.

DMIS plugin updates in source and replication server

For replication to work properly, do regularly update the DMIS plugin in both source and replication server. Since S4HANA DMIS is integrated into the core: 2572945 – DMIS compatibility with SAP S/4HANA.

The OSS notes for SLT must be updated on both source and replication server. Read more in this blog.

SLT monitoring

Monitoring is described in OSS note 2008039 – How to monitor the replication process – SLT.

Make sure job /1LT/IUC_HEALTH_C with program R_DMC_HC_RUN_CHECKS runs.

SAP Focused Run has special tools for monitoring SLT. Read more in this blog.

ZDO upgrades and SLT

If you are running SLT and want to use ZDO upgrade, please be aware they use very similar technology. When performing ZDO upgrade when SLT is running, do take the proper upgrade path including SLT.

Change data capture

DHCDCMON (CDS View Replication Monitor) is the monitoring transaction for the SAP Change Data Capture (CDC) framework used by ABAP CDS-based data replication.

SAP has developed a stability contract concept and an annotation that marks CDS Views as extraction enabled, and SAP commits to keep these CDS Views Stable and compatible (or replace them by compatible views, once the original ones get deprecated).

Call CL_DD_RTOBJ_FACTORY=>READ_ACTIVE_RTOBJ( name_of_your_cds_view ). You will get an object offering the method IF_DD_RTOBJ_TBFUNCDEP_SOURCE~GET_TABLE_FUNC_DEPENDENCIES( ). The returned table contains a list of AMDPs that might be called when using the CDS View is used. This list does contain only the AMDPs directly called from the CDS artefacts, but not AMDPs called by the listed AMDPs. If the list is empty, you are safe that no AMDP is called.

Data migration cockpit interference

The new SAP data migration cockpit will use, for some use cases, the DMIS component as well. See S4HANA migration cockpit as successor of LSMW – Saptechnicalguru.com and Setting up SAP S/4 HANA FIORI Migrate Your Data – … – SAP Community.

If you get into issues, check these OSS notes:

OSS notes

Trouble shooting OSS notes:

Functionality related OSS notes:

SAM4U: Software Asset Manager

SAP has released the SAM4U tool to manager your software licenses for SAP. This tool is especially useful in large SAP landscapes.

The SAM4U tool helps you to optimize the licenses. It does not replace the formal license submission tool SLAW2.

Benefits of SAM4U

  1. Improved SAP license cost control
    SAM4U continuously analyzes actual SAP usage and compares it with purchased license entitlements. It helps identify: over-licensed users, under-licensed users, users automatically classified into expensive license categories.
    Opportunities to reduce license costs through reclassification.
  2. Proactive audit readiness
    Instead of waiting for an SAP audit: License consumption is continuously monitored. Compliance gaps become visible early. Entitlements and usage are maintained in one place. This reduces surprises during SAP license audits.
  3. Consolidated View Across Multiple SAP Systems

Usage data from ECC, S/4HANA and other ABAP systems is consolidated. License consumption is tracked centrally. Landscape-wide reporting becomes possible.

  1. User classification optimization

SAM4U analyzes: actual usage, authorizations, assigned roles.

It highlights users who may be consuming more expensive license types than necessary and suggests optimization opportunities.

  1. Authorization analysis

The tool provides: current vs. target user classifications, detailed authorization object analysis, role and profile impact assessments.

This is useful for Basis, Security, and GRC teams performing role redesign or license optimization exercises.

  1. Transaction usage analysis

SAM4U tracks: active user behavior, transaction code usage, historical activity.

Transaction analysis can be leveraged for authorization role redesign.

  1. SAP HANA consumption insights

SAM4U includes: historical HANA memory consumption, database growth trends, HANA enterprise edition analytics. This gives visibility into HANA utilization over time.

  1. Simulation capability

According to the SAM4U user guide, the tool can simulate: changes to roles
changes to authorizations, impact on required license quantities.

This allows “what-if” analysis before implementing role changes.

  1. No data leaves the customer network

License data remains inside the customer’s environment. SAP does not receive operational usage data through SAM4U. This addresses common security and confidentiality concerns.

  1. No additional license cost. SAM4U tool is free of charge.

Time to implement the tool is not for free.

Set up of SAM4U

The setup of the SAM4U tool is clearly described on the SAP help file for SAM4U. SAP also offers help with a service to implement the tool on their SAM4U site.

Central installation

The first part is the installation of the central tool on the central system.

Choose a system with a high S4HANA version. Do not use SAP solution manager.

First make sure on the central system the bug fix notes listed in 3646933 – SAM4U Solution | Fiori Application | V2 are applied. And apply the notes for 3292019 – SAM4U Data Extractor.

Once done goto the installation and upgrade part of the SAP help file for SAM4U:

F0llow all the steps:

Hints: the first 2 steps are confusing. It tells you to start transaction /n/SAM4U/START, but that only works when step 2 is done, where you create the actual start variant.

After completing all the steps when starting transaction /n/SAM4U/START the FIORI page should launch:

Connecting the SAP systems

Per SAP system you want to connect, first apply the notes for 3292019 – SAM4U Data Extractor. The per connected system follow the steps in the SAP help file for SAM4U for the Data Extractor Guide:

Choose between RFC based or file based data extraction. Important in both cases to give the user ID’s the appropriate authorizations as described in both Required Authorizations section as in the Data Gathering section. Make sure the data extractor job runs regularly.

The data of the extractors is stored in table /SAM4U/BEXDUSE. Looking at the content of this table as basis person can also help you to get insights into how end users are using the system. You can find transaction start, but also Remote Function calls.

Administration of systems

Before usage you must administer all your systems in the solution. This part is explained in the SAP help file for SAM4U:

After setting up the proper authorizations go to the Administration section:

In the SAM4U tool add the system by clicking the + sign:

In the popup that comes select the RFC you created from the central system to the backend system. Make sure the user in your RFC has the rights to run and read the SAM4U tables, and has the rights to run the SAM4U RFC modules. If the rights are not ok, the tool will make the connection Red (without further detail). To get the details of what is missing in the target system role, run an ST01 or STAUTHTRACE in the target system for the user ID used in the RFC.

First do one system to test the entire function. When you are happy, repeat for all backend systems.

Next step is to download the ruleset xls which is attached to OSS note 3113382 – Authorization-based SAP S/4HANA User Simulation / FUE Projection. Upload the downloaded xls with the Upload button:

Next step is to download License Entitlement file from me.sap.com. Instructions are given on top. Use the upload button to upload the file:

Running the tool

On the landscape tab run the tool per landscape to gather the data, by pressing the Go button:

Wait until the results are done.

Go to the Consolidation tab and create a consolidation and execute it:

Now the data sections in the Analytics and License entitlement are visible with the data:

For all the functions here, the SAP help file for SAM4U links is excellent to explain the details:

OSS notes and SAP references

If you need bug fix notes search on me.sap.com with the term SAM4U.

Link to the official SAM4U marketing. Small and simple blog on SAM4U.

Link to the YouTube explanation of SAM4U.

SAP GUI 8.10

SAP GUI 8.10 is released now and is supported until 30.06.2029. The first patch level is also release. Future patch levels are published in OSS note 1053737 – Expected release dates for SAP GUI for Windows. PL2 for SAP GUI 8.10 is scheduled for October 2026.

The old SAP GUI 8.00 is supported until 31.07.2027.

General SAP GUI 8.10 help file reference; link. SAP blog page: link.

SAP GUI 8.10 changes

All formal changes are list in OSS note 3549180 – New and changed features in SAP GUI for Windows 8.10.

Caching: 3579956 – Download and caching of multiple types of remote configuration files as of SAP GUI for Windows 8.10.

Custom theming

SAP GUI 8.10 allows custom theming. If you want to use it read the corresponding SAP help file.

32 vs 64 bit

Both are still supported, but only 1 per pc / laptop. See this blog.

Bex components

Bex components are removed from the default SAP GUI 8.10 build. If still needed, read OSS note 3691456 – SAP BW Business Explorer 7.x is no longer included with SAP GUI for Windows 8.10 DVD compilation and must be installed separately.

SAP script components

Some older systems and users might still require SAP script legacy editor: 2221815 – SAPscript Legacy Text Editor controls are not packed in SAP Windows GUI Installation.

SAP Router tips and tricks

This blog will give tips and tricks on SAP Router.

SAP router versions and maintenance can be found in this OSS note: 1897597 – SAProuter: Release rollout.

OSS note 1895350 – Secure configuration of SAProuter covers the security aspects of SAP router. To store encrypted passwords in SAP Router, follow the instructions of OSS note 2046942 – Support encrypted passwords in saprouttab.

SAP router documentation is listed in OSS note 30289 – SAProuter documentation. Public documentation of SAProuter. Help link on help.sap.com on SAP router.

For trouble shooting network issues, follow the instructions in OSS note 1227116 – Creating network traces.

In case you need reverse invoke of the SAP router follow the instructions from this help.sap.com link.

Support backbone configuration

The support backbone configuration is explained in OSS note 2827658 – Automated Configuration of new Support Backbone Communication – Update 02. STC01 task list SAP_BASIS_CONFIG_OSS_COMM can be used to speed up the setup:

When switching SAP router:

  1. Update the SOAMANAGER Consumer Proxy CO_CLS_SCWN__SVT__SNO_ANST_SEA to point to the new SAP Router hostname.
  2. Update the RFC Destination SAP-SUPPORT_PORTAL to point to the new SAP Router hostname.
  3. Update the RFC Destination SAP-SUPPORT_NOTE_DOWNLOAD to point to the new SAP Router hostname.

OSS notes:

HANA Cleaner Monitoring Setup in FRUN

Introduction

Maintaining SAP HANA systems requires regular housekeeping activities, and one of the critical components is the HANA Cleaner. Monitoring its activity ensures that log cleanup and housekeeping jobs are running as expected.

In this blog, it is explained how we implemented HANA Cleaner monitoring in SAP Focused Run (FRUN) using custom metrics via template maintenance, without requiring custom scripts. This approach leverages standard FRUN capabilities and provides a scalable and maintainable monitoring solution.

Solution Overview

The objective of this monitoring setup is:

  • Track the execution of HANA Cleaner jobs
  • Detect inactivity or failure scenarios
  • Alert operations teams proactively

We achieved this using:

  • Custom Metric based on File Monitoring
  • FRUN Template Maintenance
  • Diagnostic Agent (push) data collection

How It Works

The monitoring logic is simple but effective:

  1. The system monitors the last modified timestamp of HANA Cleaner log files
  2. A custom metric evaluates this timestamp continuously
  3. If no update is detected beyond a defined threshold (e.g., 2 days), an alert is triggered

This ensures immediate visibility into any issues with the HANA Cleaner process.

Implementation Details

Step 1: Create Custom Metric in FRUN

Navigate to:

Advanced System Management → System Monitoring → Template Maintenance

Create or enhance a metric such as:

HANA Cleaner Run Status

Category:

Exceptions

Step 2: Configure Data Collection

From the screenshot setup, the following configuration is used:

Data Collector Type

Diagnostic Agent (push)

Data Collector Name

File Information

Collection Interval

5 Minutes

Step 3: Maintain Collector Input Parameters

Here are the key parameters used:

Parameter IDDescription
DATEPATTERNDate format used (yyyy-MM-dd)
FILEPATTERNHANA Cleaner log file pattern
FOLDERPath to log directory
KEY_FIGMetric to evaluate
RECURSIVEEnable/disable recursive search

Actual Values Used

Plain Text

DATEPATTERN = yyyy-MM-dd

FILEPATTERN = hanacleanerlog_*

FOLDER = /usr/sap/${SAP_HDBSystemID}/${SAPSystemName}/hanacleaner/output

KEY_FIG = Last Modified age in seconds

RECURSIVE = False
Show more lines

✅ This configuration ensures the system monitors the latest file modification time in the HANA Cleaner output directory.

Step 4: Define Metric Logic

The key figure:

Last Modified Age in Seconds

This indicates how long it has been since the log file was updated.

Step 5: Threshold Configuration

Define thresholds based on your operational requirements.

Example:

ConditionThreshold
Green< 24 hours
Yellow24–48 hours
Red> 48 hours

This ensures alerts are triggered if HANA Cleaner hasn’t executed in expected time.

Step 6: Assign Metric to Template

Assign the custom metric to:

  • Relevant HANA systems
  • Both Production and Non-Production landscapes

This ensures full coverage across your environment.

Monitoring Output

Once configured, FRUN displays:

  • Historical trend of HANA Cleaner activity
  • Status indicators (Green/Yellow/Red)
  • Alerts in case of inactivity

From your reference screenshot:

  • The metric appears under Exceptions
  • A graph shows activity progression
  • Alerts are triggered if thresholds are breached
  • System Monitoring
  • (Optional) Root Cause Analysis

Coverage

This setup can be implemented:

  • Across the entire HANA landscape
  • For all S/4HANA or standalone HANA systems
  • In both:
    • Production
    • Non-Production environments

Advantages of This Approach

No Custom Coding Required
Uses standard FRUN capabilities
Can be applied across multiple systems via templates
Frequent monitoring (every 5 minutes)
Detects failures before business impact
Simple file-based monitoring logic

Key Learnings & Best Practices

  • Always ensure correct file path and pattern
  • Validate that Diagnostic Agent has access to directory
  • Fine-tune thresholds based on:
    • HANA Cleaner job frequency
    • Business requirements
  • Use template-based rollout for consistency

Conclusion

Monitoring housekeeping activities like HANA Cleaner is critical for maintaining system health. By leveraging FRUN custom metrics and file monitoring, we can implement an efficient, scalable, and proactive monitoring solution.

This approach eliminates the need for custom scripts while fully utilizing standard SAP monitoring capabilities.

Transport RC-8 errors, reasons and solutions

This blog will list several RC-8 transport errors, explanation of the reason, and solution to solve the RC-8.

Import options

The transport import has a tab for options:

In the below solutions there is reference to the use of these options.

Adding transport again to the import queue

To re-import transport again, go to transaction STMS, go to the import queue, select the menu Extra, Other Requests, Add. Enter the transport request and tick the box Import Again:

Local repair

For some reason the ABAP code was changed locally in the target system.

The text looks like “was repaired in this system”:

Solution: re-import with the overwrite originals flag, and set the flag overwrite objects in unconfirmed repairs.

Component version mismatch

A very frequent cause of transport errors can be component version mismatch. This means that the system detects a difference in components between the source and target (more on components in this blog). That can be a component (like add on) that is already installed on the source , but not yet on target. Or that in the source the ST-PI or ST-A/PI is already patched, but not on the target.

In most cases this version mismatch can be ignored and you can set the “Ignore Invalid Component Version” flag.

When not to set this flag:

  1. Transports related to newly installed addon like customizing/workbench needing the new component
  2. Transports with OSS notes related to this component (for example OSS notes on top of ST-PI)

Missing ABAP object references

A very common cause of RC-8 is that an ABAP program needs an object, which the developer stored in a different transport. To fix the RC-8: import first the transport with the object, then the ABAP program transport. Or import them both at the same time.

To avoid such RC-8’s always run the transport sequence check tool, as explained in this blog.

Table analysis tool

In some cases transaction SE16 might not be allowed to be used in a productive system. But as basis you need to analysis a table (for example to count amount of entries).

As alternative you can use the table analysis tool.

Start transaction ST13, and choose tool TABLE_ANALYSIS:

The output:

As alternative, you can also use SA38 to run program /SSA/CAG.

Bug fix OSS notes:

Top 20 tables per system in SAP Focused Run

The me.sap.com data volume management function was terminated. This blog will explain how you can use SAP Focused Run to get an overview of the top 20 tables on HANA based system. There data volume really matters for both cost of the infrastructure and HANA database license costs.

Set up

The setup is part of SAP Focused Run System Analysis. Select the System Analysis tile:

Then select the HANA system for which you want to perform the analysis. Select the tool HANA Tables:

Depending on your SSI settings data might be shown already. If not, select the configuration item to open the configuration screen:

Click the Configure Aggregation and Capabilities button. In the next screen make sure the switch for SAP HANA Table Size is green:

If it is not green yet, click on the grey diamond to activate it:

Hit the Activate button to confirm activation.

After activation wait 1 day for data collection.

Top 20 results

Now you can see the results. On the left hand side the current top 20 tables, and on the right hand side the growth:

SAP background

Background material can be found on the SAP Focused Run Expert portal.

Optionally you can set the function default as active in the SSI by going to table RCA_SSI_CONF with SM30 and add the entry HANA_TABLE_SIZE with activation X.

Mass clean up program for non production database size reduction

For production systems you need to be very careful running clean up programs. When you want to clean up data there, it does take time to do proper analysis and do it carefully.

When you have a sandbox, development or test system, launching and planning all the diverse clean up programs can take quite some time. Even more time than the storage gain.

Solution: install below Z mass clean up program.

Install and run this program at your own risk! 

The program will trigger several clean up programs. If you want to change anything: you can do so at your own risk.

There are 2 built-in failsafes:

  1. Authorization check for NADM (basis admin)
  2. Check not to run in production system (based on SCC4 client settings)

After the initial clean up program in batch, the next run is scheduled automatically.

Objects, Programs, job frequency and references:

ObjectProgram(s)Job frequencyReference
Table loggingRSTBPDELDailyTable logging
IdocsRSETESTD
RSRLDREL
RSRLDREL2
Hourly
Daily
Daily
Idocs
Application logsSBAL_DELETEDailyGeneral technical clean up
WorkflowsRSWWWIDEDailyGeneral technical clean up
SAP OfficeRSBCS_REORG
RSBCS_ADRVP
RSBCS_SREQ_EXPIRE
RSBCS_SREQ_INITIAL_RELEASE
RSBCS_DELETE_QUEUE
RSSODFRE
RSSO_DELETE_PRIVATE
RSGOSRE02
Daily
Daily
Daily
Daily
Daily
Daily
Daily
Daily
Deleting SAP office documents
Old RFC dataRSARFCER
RSTRFCES
Daily
Daily
General technical clean up
Change documentsRSCDOK99DailyGeneral technical clean up
Change pointersRBDCPCLR2DailyChange pointers
ABAP where usedRS_DEL_WBCROSSGT
SAPRSEUB
Only onceGeneral technical clean up and ABAP where used index
Old batch jobsRSBTCDEL2DailyGeneral technical clean up
Saved listsRSAQQLRE_MASSDailyTable AQLDB clean up
BW loggingRSDDSTAT_DATA_DELETE
RSBATCH_DEL_MSG_PARM_DTPTEMP
RSPM_HOUSEKEEPING
RSBKCLEANUPBUFFER
ODQ_CLEANUP
Daily
Daily
Daily
Daily
Technical clean up for BI

*&---------------------------------------------------------------------*
*& Report ZMASSCLEANUP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmasscleanup.

DATA(zlv_fcode) = 'NADM'. "authorization check object
DATA: zls_t000 TYPE t000.

DATA:
zlt_params TYPE TABLE OF rsparams,
zls_param TYPE rsparams.
DATA zlv_variant_text TYPE varid.
DATA zls_vari_text TYPE varit.
DATA zlt_vari_text TYPE TABLE OF varit.

PARAMETERS: p_cl TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_cld TYPE i DEFAULT '365'.
PARAMETERS: p_id TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_idd TYPE i DEFAULT '365'.
PARAMETERS: p_al TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_ald TYPE i DEFAULT '365'.
PARAMETERS: p_wi TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_wid TYPE i DEFAULT '365'.
PARAMETERS: p_so TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_sod TYPE i DEFAULT '365'.
PARAMETERS: p_rf TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_rfd TYPE i DEFAULT '7'.
PARAMETERS: p_cd TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_cdd TYPE i DEFAULT '365'.
PARAMETERS: p_cp TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_cpd TYPE i DEFAULT '365'.
PARAMETERS: p_sl TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_sld TYPE i DEFAULT '365'.
PARAMETERS: p_bj TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_bwd TYPE i DEFAULT '30'.
PARAMETERS: p_bw TYPE char1 DEFAULT ' ' AS CHECKBOX .
PARAMETERS: p_bjd TYPE i DEFAULT '7'.
PARAMETERS: p_vh TYPE char1 DEFAULT ' ' AS CHECKBOX .

INITIALIZATION.
%_p_cl_%_app_%-text = 'Delete table change logging'.
%_p_cld_%_app_%-text = 'Days to keep table change logging'.
%_p_id_%_app_%-text = 'Delete Idocs'.
%_p_idd_%_app_%-text = 'Days to keep idocs'.
%_p_al_%_app_%-text = 'Delete application logs'.
%_p_ald_%_app_%-text = 'Days to keep application'.
%_p_wi_%_app_%-text = 'Delete Workflow items'.
%_p_wid_%_app_%-text = 'Days to keep Workflows'.
%_p_so_%_app_%-text = 'Delete SAP office items'.
%_p_sod_%_app_%-text = 'Days to keep SAP office items'.
%_p_rf_%_app_%-text = 'Delete old RFC data'.
%_p_rfd_%_app_%-text = 'Days to keep old RFC data'.
%_p_cd_%_app_%-text = 'Delete old Change Documents'.
%_p_cdd_%_app_%-text = 'Days to keep old Change Documents'.
%_p_cp_%_app_%-text = 'Delete old Change Pointers'.
%_p_cpd_%_app_%-text = 'Days to keep old Change Pointers'.
%_p_sl_%_app_%-text = 'Delete old Saved lists'.
%_p_sld_%_app_%-text = 'Days to keep old Saved lists'.
%_p_bj_%_app_%-text = 'Delete old batch jobs'.
%_p_bjd_%_app_%-text = 'Days to keep old batch jobs'.
%_p_bw_%_app_%-text = 'Delete old BW jobs'.
%_p_bwd_%_app_%-text = 'Days to keep old BW jobs'.
%_p_vh_%_app_%-text = 'WBCROSSGT table clean up'.

START-OF-SELECTION.

* check for basis adminstration access
AUTHORITY-CHECK OBJECT 'S_ADMI_FCD'
ID 'S_ADMI_FCD' FIELD zlv_fcode.

IF sy-subrc = 0.
"User has administration authorization for that function

* Fetch the client properties
SELECT SINGLE * FROM t000 INTO zls_t000 WHERE mandt = sy-mandt.
IF zls_t000-cccategory = 'P'.
* Forbid to run on productive client
WRITE: / 'Do not run on productive client: Productive (Production client)'.
ELSE.
IF p_cl EQ 'X'.
PERFORM cleanup_table_change_log USING p_cld.
ENDIF.
IF p_id EQ 'X'.
PERFORM cleanup_idocs USING p_idd.
ENDIF.
IF p_al EQ 'X'.
PERFORM cleanup_application_logs USING p_ald.
ENDIF.
IF p_wi EQ 'X'.
PERFORM cleanup_workflows USING p_wid.
ENDIF.
IF p_so EQ 'X'.
PERFORM cleanup_sapoffice USING p_sod.
ENDIF.
IF p_rf EQ 'X'.
PERFORM cleanup_rfcdata USING p_rfd.
ENDIF.
IF p_cd EQ 'X'.
PERFORM cleanup_changedocuments USING p_cdd.
ENDIF.
IF p_cp EQ 'X'.
PERFORM cleanup_changepointers USING p_cpd.
ENDIF.
IF p_bj EQ 'X'.
PERFORM cleanup_batchjobs USING p_bjd.
ENDIF.
IF p_sl EQ 'X'.
PERFORM cleanup_savedlists USING p_sld.
ENDIF.
IF p_bw EQ 'X'.
PERFORM cleanup_bwlogs USING p_bwd.
ENDIF.
IF p_vh EQ 'X'.
PERFORM cleanup_wbcrossgt USING p_cdd.
ENDIF.
ENDIF.

ELSE.
"No authorization
MESSAGE e398(00) WITH |No admin authorization (S_ADMI_FCD={ zlv_fcode })|.
ENDIF.
*&---------------------------------------------------------------------*
*& Form start_job
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM start_job
USING
ziv_progname TYPE progname
ziv_variant TYPE raldb_vari
ziv_timing TYPE char1.

DATA: ziv_jobname TYPE tbtcjob-jobname.
DATA: zcv_jobcount TYPE tbtcjob-jobcount.
DATA: zlv_prddays TYPE tbtcjob-prddays.
DATA: zlv_prdhours TYPE tbtcjob-prdhours.

ziv_jobname = ziv_progname+0(32).

"-------------------------------
" 1) Open job
"-------------------------------
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = ziv_jobname
IMPORTING
jobcount = zcv_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.

"-------------------------------
" 2) Add step (program + variant)
"-------------------------------
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
jobname = ziv_jobname
jobcount = zcv_jobcount
authcknam = sy-uname
report = ziv_progname
variant = ziv_variant
language = sy-langu
EXCEPTIONS
bad_priparams = 1
bad_xpgflags = 2
invalid_jobdata = 3
jobname_missing = 4
job_notex = 5
job_submit_failed = 6
lock_failed = 7
program_missing = 8
prog_abap_and_extpg = 9
OTHERS = 10.

IF sy-subrc <> 0.
"Best-effort cleanup: close job without releasing it

CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobname = ziv_jobname
jobcount = zcv_jobcount
strtimmed = space
EXCEPTIONS
OTHERS = 1.

MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.

"-------------------------------
" 3) Close job and start immediately
"-------------------------------

IF ziv_timing EQ 'D'.
zlv_prddays = 1.
zlv_prdhours = 0.

ELSEIF ziv_timing EQ 'H'.
zlv_prddays = 0.
zlv_prdhours = 1.
ELSEIF ziv_timing EQ 'X'. "run only once
zlv_prddays = 0.
zlv_prdhours = 0.
ENDIF.

CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobname = ziv_jobname
jobcount = zcv_jobcount
prddays = zlv_prddays
prdhours = zlv_prdhours
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.

WRITE: / 'Job',ziv_jobname, zcv_jobcount,' scheduled:', ziv_progname, ziv_variant, 'immediate'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form create_variant
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM create_variant
TABLES zit_params
USING
ziv_report TYPE progname
ziv_variant TYPE raldb_vari.

REFRESH zlt_vari_text.

zlv_variant_text-report = ziv_report.
zlv_variant_text-variant = ziv_variant.
zlv_variant_text-environmnt = 'A'.
zls_vari_text-vtext = zlv_variant_text.
zls_vari_text-report = ziv_report.
zls_vari_text-variant = ziv_variant.
APPEND zls_vari_text TO zlt_vari_text.

CALL FUNCTION 'RS_CREATE_VARIANT'
EXPORTING
curr_report = ziv_report
curr_variant = ziv_variant
vari_desc = zlv_variant_text
TABLES
vari_contents = zit_params
vari_text = zlt_vari_text
EXCEPTIONS
illegal_report_or_variant = 1
illegal_variantname = 2
not_authorized = 3
not_executed = 4
report_not_existent = 5
report_not_supplied = 6
variant_exists = 7
variant_locked = 8
OTHERS = 9.

IF sy-subrc = 0.
WRITE: / 'Variant created:', ziv_report, ziv_variant.
ELSE.
WRITE: / 'Variant creation failed. SY-SUBRC=', sy-subrc.
ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form cleanup_table_change_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM cleanup_table_change_log USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.

CLEAR zls_param.
REFRESH zlt_params.
zls_param-selname = 'P_DAYS'. " amount of days to keep
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSTBPDEL' zlv_variant.
PERFORM start_job USING 'RSTBPDEL' zlv_variant 'D'.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form cleanup_idocs
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_IDD
*&---------------------------------------------------------------------*
FORM cleanup_idocs USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.
zls_param-selname = 'GP_TEST'. " test flag to be removed
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_COM'. " commit counter
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = '100'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'GP_MAXCT'. " max amount of idocs
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = '1000000'.
APPEND zls_param TO zlt_params.


zls_param-selname = 'GS_CREDA'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.


PERFORM create_variant TABLES zlt_params USING 'RSETESTD' zlv_variant.
PERFORM start_job USING 'RSETESTD' zlv_variant 'H'.

CLEAR zls_param.
REFRESH zlt_params.

zlv_date = sy-datum - 9999.
zls_param-selname = 'G_DSINCE'. " start date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - ziv_days.
zls_param-selname = 'G_DUNTIL'. " to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'G_TABLE'. " table
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'IDOCREL'.
APPEND zls_param TO zlt_params.


PERFORM create_variant TABLES zlt_params USING 'RSRLDREL2' zlv_variant.
PERFORM start_job USING 'RSRLDREL2' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zlv_date = sy-datum - 9999.
zls_param-selname = 'G_DSINCE'. " start date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - ziv_days.
zls_param-selname = 'G_DUNTIL'. " to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'G_OBJTYP'. " table
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'IDOC'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'G_NONE'. " no existance check
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'G_PKSZ'. " package size
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 250.
APPEND zls_param TO zlt_params.

zls_param-selname = 'G_CTSZ'. " package size
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 250.
APPEND zls_param TO zlt_params.

PERFORM create_variant TABLES zlt_params USING 'RSRLDREL' zlv_variant.
PERFORM start_job USING 'RSRLDREL' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_application_logs
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_ALD
*&---------------------------------------------------------------------*
FORM cleanup_application_logs USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.
zls_param-selname = 'P_BEF_OK'. " delete all logs
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_BCK'. " schedule background jobs
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - 9999.
zls_param-selname = 'P_BEGDAT'. " start date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - ziv_days.
zls_param-selname = 'P_ENDDAT'. " end date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'SBAL_DELETE' zlv_variant.
PERFORM start_job USING 'SBAL_DELETE' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_workflows
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_WID
*&---------------------------------------------------------------------*
FORM cleanup_workflows USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.
zls_param-selname = 'I_DISPLY'. " delete immediately
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'I_DELERR'. " delete errors as well
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'I_DELLOG'. " delete log as well
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'I_TOPLVL'. " top level only
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'IT_CD'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSWWWIDE' zlv_variant.
PERFORM start_job USING 'RSWWWIDE' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_sapoffice
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_SOD
*&---------------------------------------------------------------------*
FORM cleanup_sapoffice USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PACKSIZE'. " package size
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 500.
APPEND zls_param TO zlt_params.


zls_param-selname = 'SRDEL'. " send docs
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'DOCDEL'. " not send docs
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.


zls_param-selname = 'CREATED'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBCS_REORG' zlv_variant.
PERFORM start_job USING 'RSBCS_REORG' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'ADRVP'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'ADRV'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PACKSIZE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 5000.
APPEND zls_param TO zlt_params.

PERFORM create_variant TABLES zlt_params USING 'RSBCS_ADRVP' zlv_variant.
PERFORM start_job USING 'RSBCS_ADRVP' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'FULL_LOG'. " detailled log
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CR_DAT'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBCS_SREQ_EXPIRE' zlv_variant.
PERFORM start_job USING 'RSBCS_SREQ_EXPIRE' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CRDAT'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBCS_SREQ_INITIAL_RELEASE' zlv_variant.
PERFORM start_job USING 'RSBCS_SREQ_INITIAL_RELEASE' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'SNDDAT'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBCS_DELETE_QUEUE' zlv_variant.
PERFORM start_job USING 'RSBCS_DELETE_QUEUE' zlv_variant 'D'.

zls_param-selname = 'P_AGE'. " amount of days to keep
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'TESTMODE'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'DELETE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'NOT_SENT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'SENDER'.
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'CP'.
zls_param-low = '*'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSSODFRE' zlv_variant.
PERFORM start_job USING 'RSSODFRE' zlv_variant 'D'.

zls_param-selname = 'USER'.
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'CP'.
zls_param-low = '*'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'INBOX'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'ALL'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'READONLY'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'RESUB'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PRIVDOC'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'TRASH'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'REPLY'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_AGE'. " amount of days to keep
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'TEST'. " remove test mode
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'OUTDOCS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PACKSIZE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 100.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSSO_DELETE_PRIVATE' zlv_variant.
PERFORM start_job USING 'RSSO_DELETE_PRIVATE' zlv_variant 'D'.

zls_param-selname = 'PPSIZE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 500.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PTEST'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - ziv_days.
zls_param-selname = 'P_UNTIL'. " end date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - 9999.
zls_param-selname = 'PDDSINCE'. " start date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSGOSRE02' zlv_variant.
PERFORM start_job USING 'RSGOSRE02' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_rfcdata
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_RFD
*&---------------------------------------------------------------------*
FORM cleanup_rfcdata USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'PAKET'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = '10000'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CPIC'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'REC'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'FAIL'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'SENT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'EXEC'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'LOAD'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'RETRY'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'NORETRY'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PCLNT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = sy-mandt.
APPEND zls_param TO zlt_params.

zls_param-selname = 'DAY'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSARFCER' zlv_variant.
PERFORM start_job USING 'RSARFCER' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'NRDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'BLK_SIZE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 5000.
APPEND zls_param TO zlt_params.

zls_param-selname = 'DELSTATE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'SYSFAIL'.
APPEND zls_param TO zlt_params.

PERFORM create_variant TABLES zlt_params USING 'RSTRFCES' zlv_variant.
PERFORM start_job USING 'RSTRFCES' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_changedocuments
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_CDD
*&---------------------------------------------------------------------*
FORM cleanup_changedocuments USING ziv_days.



DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'OBJECT'.
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'CP'.
zls_param-low = '*'.
APPEND zls_param TO zlt_params.

zlv_date = sy-datum - ziv_days.

zls_param-selname = 'TO_DATE'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'TESTRUN'. "testrun
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_ALV'. "display
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_STAT'. "counting
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_SIZE'. "package size
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 1500.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_LINSHW'. "package size
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 1500.
APPEND zls_param TO zlt_params.

zls_param-selname = 'AUD_DATE'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSCDOK99' zlv_variant.
PERFORM start_job USING 'RSCDOK99' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_WBCROSSGT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_CDD
*&---------------------------------------------------------------------*
FORM cleanup_wbcrossgt USING p_p_cdd.
DATA: zlv_variant TYPE raldb_vari.
CLEAR zlv_variant.
PERFORM start_job USING 'RS_DEL_WBCROSSGT' zlv_variant 'X'.
PERFORM start_job USING 'SAPRSEUB' zlv_variant 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_batchjobs
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_BJD
*&---------------------------------------------------------------------*
FORM cleanup_batchjobs USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'PRELIM'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'SCHED'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'FIN'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'ABORT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'PORTION'. "commit counter
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 1000.
APPEND zls_param TO zlt_params.

zls_param-selname = 'TESTRUN'. "testrun
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'APREDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'BPREDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CPREDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'ASCHDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'BSCHDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CSCHDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'AFINDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'BFINDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CFINDAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'AABODAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'BABODAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zls_param-selname = 'CABODAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBTCDEL2' zlv_variant.
PERFORM start_job USING 'RSBTCDEL2' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_savedlists
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_SLD
*&---------------------------------------------------------------------*
FORM cleanup_savedlists USING ziv_days.


DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P_DATE'. " up to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zlv_date = sy-datum - ziv_days.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_TEST'. "testrun
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_WSID'. "local
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSAQQLRE_MASS' zlv_variant.
PERFORM start_job USING 'RSAQQLRE_MASS' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P_DATE'. " up to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zlv_date = sy-datum - ziv_days.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_TEST'. "testrun
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_WSID'. "global
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }2|.

PERFORM create_variant TABLES zlt_params USING 'RSAQQLRE_MASS' zlv_variant.
PERFORM start_job USING 'RSAQQLRE_MASS' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_bwlogs
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_BWD
*&---------------------------------------------------------------------*
FORM cleanup_bwlogs USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P_DATE'. " up to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zlv_date = sy-datum - ziv_days.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_OWN'. "
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_QUERY'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_LOGG'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_AGHPA'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_DELE'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_BIA'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_DTP'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_WHM'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_WSP'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_AP'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_SL'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSDDSTAT_DATA_DELETE' zlv_variant.
PERFORM start_job USING 'RSDDSTAT_DATA_DELETE' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'DEL_MSG'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'DEL_PAR'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'DEL_DTP'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBATCH_DEL_MSG_PARM_DTPTEMP' zlv_variant.
PERFORM start_job USING 'RSBATCH_DEL_MSG_PARM_DTPTEMP' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P_DAYS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_SIMU3'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_REORG'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_PKG'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 10000.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSPM_HOUSEKEEPING' zlv_variant.
PERFORM start_job USING 'RSPM_HOUSEKEEPING' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'DATE_S'. " from date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.

zls_param-selname = 'DATE_E'. " to date
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zlv_date = sy-datum - ziv_days.
zls_param-low = zlv_date.
APPEND zls_param TO zlt_params.
zls_param-selname = 'CROSS'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RSBKCLEANUPBUFFER' zlv_variant.
PERFORM start_job USING 'RSBKCLEANUPBUFFER' zlv_variant 'D'.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P_CL0RT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_CL1RT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_SIMU'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = ' '.
zls_param-low = ziv_days.
APPEND zls_param TO zlt_params.
zls_param-selname = 'P_RECRT'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 24.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'ODQ_CLEANUP' zlv_variant.
PERFORM start_job USING 'ODQ_CLEANUP' zlv_variant 'D'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form cleanup_changepointers
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_CPD
*&---------------------------------------------------------------------*
FORM cleanup_changepointers USING ziv_days.

DATA: zlv_variant TYPE raldb_vari.
DATA: zlv_date TYPE sy-datum.

CLEAR zls_param.
REFRESH zlt_params.

zls_param-selname = 'P2_DATE'. " creation date
zls_param-kind = 'S'.
zls_param-sign = 'I'.
zls_param-option = 'BT'.
zlv_date = sy-datum - 9999.
zls_param-low = zlv_date.
zlv_date = sy-datum - ziv_days.
zls_param-high = zlv_date.
APPEND zls_param TO zlt_params.


zls_param-selname = 'P_TEST'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = ' '.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P1_OLD'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zls_param-selname = 'P_PACK'.
zls_param-kind = 'P'.
zls_param-sign = 'I'.
zls_param-option = 'EQ'.
zls_param-low = 'X'.
APPEND zls_param TO zlt_params.

zlv_variant = |ZCL{ ziv_days }|.

PERFORM create_variant TABLES zlt_params USING 'RBDCPCLR2' zlv_variant.
PERFORM start_job USING 'RBDCPCLR2' zlv_variant 'D'.

ENDFORM.