Printing with protected spool function

If you have sensitive data to print, you can use the Authorization function of the print output.

In the printer screen select Properties:

And then open the Spool Request leave and double click on the Authorization field:

Fill in the authorization value. And now continue to print.

Any normal user should not have rights to view other users spool (authorization object S_ADMI_FCD with activity SP01 and SPOS), but if they do, the protection is there:

This only works if the authorization team is as well careful with authorization object S_SPO_ACT (Spool actions). If they grant all via * then still everybody has authorization to view.

HANA FAQ and How-to OSS notes

The below is a list of HANA FAQ and How-to OSS notes:

  • 2600030 Parameter Recommendations in SAP HANA Environments

  • 2699939 SAP HANA Emergency Suitcase

  • 2100010 SAP HANA Popular Misconceptions

  • 1642148 FAQ: SAP HANA Database Backup & Recovery

  • 1999880 FAQ: SAP HANA System Replication

  • 1999930 FAQ: SAP HANA I/O Analysis

  • 1999997 FAQ: SAP HANA Memory

  • 1999998 FAQ: SAP HANA Lock Analysis

  • 2000000 FAQ: SAP HANA Performance Optimization

  • 2000002 FAQ: SAP HANA SQL Optimization

  • 2000003 FAQ: SAP HANA

  • 2014562 FAQ: SAP HANA LT Replication Server (SLT)

  • 2044468 FAQ: SAP HANA Partitioning

  • 2057046 FAQ: SAP HANA Delta Merges

  • 2057595 FAQ: SAP HANA High Availability

  • 2081591 FAQ: SAP HANA Table Distribution

  • 2100009 FAQ: SAP HANA Savepoints

  • 2100040 FAQ: SAP HANA CPU

  • 2101244 FAQ: SAP HANA Multitenant Database Containers

  • 2112604 FAQ: SAP HANA Compression

  • 2114710 FAQ: SAP HANA Threads and Thread Samples

  • 2115815 FAQ: SAP HANA Database Patches and Upgrades

  • 2116157 FAQ: SAP HANA Consistency Checks and Corruptions

  • 2124112 FAQ: SAP HANA Parsing

  • 2127458 FAQ: SAP HANA Loads and Unloads

  • 2142945 FAQ: SAP HANA Hints

  • 2147247 FAQ: SAP HANA Statistics Server

  • 2159014 FAQ: SAP HANA Security

  • 2160391 FAQ: SAP HANA Indexes

  • 2169283 FAQ: SAP HANA Garbage Collection

  • 2177064 FAQ: SAP HANA Service Restarts and Crashes

  • 2180119 FAQ: SAP HANA Smart Data Access

  • 2180165 FAQ: SAP HANA Expensive Statements Trace

  • 2186744 FAQ: SAP HANA Parameters

  • 2200772 FAQ: SAP HANA Statement Routing and Client Distribution Mode

  • 2220627 FAQ: SAP HANA LOBs

  • 2222110 FAQ: SAP HANA Load History

  • 2222200 FAQ: SAP HANA Network

  • 2222218 FAQ: SAP HANA Database Server Management Console (hdbcons)

  • 2222220 FAQ: SAP HANA DBACOCKPIT

  • 2222250 FAQ: SAP HANA Workload Management

  • 2222277 FAQ: SAP HANA Column Store and Row Store

  • 2336344 FAQ: SAP HANA Static Result Cache

  • 2340450 FAQ: SAP HANA Table Replication

  • 2366291 FAQ: SAP HANA Executed Statements Trace

  • 2380176 FAQ: SAP HANA Database Trace

  • 2393013 FAQ: SAP HANA Clients

  • 2399993 FAQ: SAP HANA Fast Data Access (FDA)

  • 2400005 FAQ: SAP HANA Persistence

  • 2400006 FAQ: SAP HANA Statement Hints

  • 2400007 FAQ: SAP HANA Runtime Dumps

  • 2400022 FAQ: SAP HANA Smart Data Integration (SDI)

  • 2412519 FAQ: SAP HANA SQL Trace Analyzer

  • 2416490 FAQ: SAP HANA Data Aging in SAP S/4HANA

  • 2470289 FAQ: SAP HANA Non-Uniform Memory Access (NUMA)

  • 2477204 FAQ: SAP HANA Services and Ports

  • 2502256 FAQ: SAP HANA Caches

  • 2506811 FAQ: SAP HANA Dynamic Result Cache

  • 2520774 FAQ: SAP HANA Performance Trace

  • 2535951 FAQ: SAP HANA Users and Schemas

  • 2570371 FAQ: SAP HANA Execution Engine (HEX)

  • 2573880 FAQ: SAP HANA Full System Info Dump

  • 2593571 FAQ: SAP HANA Integrated liveCache

  • 2596466 FAQ: SAP HANA XS Advanced

  • 2599949 FAQ: SAP HANA Extended SQL Executor (ESX)

  • 2600076 FAQ: SAP HANA Inverted Individual Indexes

  • 2600095 FAQ: SAP HANA Sequences

  • 2669621 FAQ: SAP HANA Capture and Replay

  • 2670064 FAQ: SAP HANA Multi-Dimensional Services (MDS)

  • 2700084 FAQ: SAP HANA Persistent Memory

  • 2799997 FAQ: SAP HANA Native Storage Extension (NSE)

  • 2799998 FAQ: SAP HANA Plan Stability

  • 2800006 FAQ: SAP HANA Cockpit

  • 2800007 FAQ: SAP HANA Temporary Tables

  • 2800008 FAQ: SAP HANA Fulltext Indexes

  • 2800020 FAQ: SAP HANA Triggers

  • 2800028 FAQ: SAP HANA Optimizer Statistics

  • 2800030 FAQ: SAP HANA Kernel Profiler

  • 2800048 FAQ: SAP HANA TREXviaDBSL

  • 2800055 FAQ: SAP HANA Kernel Sentinel

  • 2899330 FAQ: SAP HANA KPI Collector

  • 2975780 FAQ: SAP HANA LDAP Based Authentication and Authorization

  • 3007062 FAQ: SAP HANA Third Party Cluster Solutions

  • 3158257 FAQ: SAP HANA User Store (hdbuserstore)

  • 3266082 FAQ: SAP HANA Cloud

  • 3288971 FAQ: Pacemaker Cluster Resource Manager in SAP HANA System Replication Environments

  • 3300523 FAQ: SAP HANA in the Neo Environment

  • 3421606 FAQ: SAP HANA Auditing Activity

  • 1984422 How-To: Analyzing SAP HANA Out-of-memory (OOM) Dumps

  • 1986747 How-To: Analyzing internal Columns in SAP HANA Column Store

  • 1994962 How-To: Activation of Hybrid LOBs in SAP HANA

  • 1998599 How-To: Analyzing high SAP HANA Memory Consumption due to Translation Tables

  • 1999020 How-To: SAP HANA Troubleshooting when Database is no longer accessible

  • 1999993 How-To: Interpreting SAP HANA Mini Check Results

  • 2088971 How-To: Controlling the Amount of Records in SAP HANA Monitoring Views

  • 2092196 How-To: Terminating Sessions in SAP HANA

  • 2119087 How-To: Configuring SAP HANA Traces

  • 2154870 How-To: Understanding and defining SAP HANA Limitations

  • 2222217 How-To: Troubleshooting SAP HANA Startup Times

  • 2222249 How-To: Resolving SAP HANA Service Inconsistencies between Daemon and Topology

  • 2313619 How-To: Generating SAP HANA Call Stacks

  • 2388483 How-To: Data Management for Technical Tables

  • 2399979 How-To: Configuring automatic SAP HANA Data Collection with SAP HANASitter

  • 2399990 How-To: Analyzing ABAP Short Dumps in SAP HANA Environments

  • 2399996 How-To: Configuring automatic SAP HANA Cleanup with SAP HANACleaner

  • 2400024 How-To: SAP HANA Administration and Monitoring

  • 2445867 How-To: Interpreting and Resolving SAP HANA Alerts

  • 2469025 How-To: Upgrading to SAP HANA 2.0

  • 2498739 How-To: Analyzing Runtime Dumps with SAP HANA Dump Analyzer

  • 2529478 How-To: Configuring SAP HANA Statistics Server Parameters

  • 2572224 How-To: Repairing SAP HANA Tables

  • 2631805 How-To: Stopping SAP HANA

  • 2999990 How-To: SAP HANA Performance Analysis

Transaction tips and tricks

This blog contains some tips and tricks regarding SAP transactions.

Transaction tables

Transaction codes are defined in table TSTC.

Transaction code translations are defined in table TSTCT.

Values for transaction code authorizations are defined in table TSTCA.

Transaction code maintenance

Transactions are maintained via transaction SE93.

Transaction variants

Variants for transactions can be defined. Read more in this blog.

Transaction locking

Transactions can be locked for usage. Read more in this blog.

Transaction usage

For transaction usage there are 2 main sources:

  1. ST03 (read more in this blog)
  2. SAP audit log (read more in this blog)

S4HANA obsolete transactions

S4HANA obsolete transactions are described in OSS note 3118651 – How to identify, which Apps/Transaction codes are obsolete or replaced in SAP S/4 HANA, which refers to upgrade analysis tool described in this blog.

SAP BTP availability

SAP BTP is the new wave of SAP services which are running in the Cloud managed by SAP.

The technology involved in these services is in many cases a further development of a Netweaver stack or HANA database. They are not always cloud native developed.

While you are used that Google, Amazon and Microsoft cloud services are (almost) always available, SAP BTP has some steps to make. It already improved the last few year.

For the services you want to use the planned SLA maintenance windows are published by SAP here:

Maintenance Windows and Major Upgrade Windows for SAP Cloud Services

As example:

The product HANA cloud has Zero down-time maintenance and up to 4 times per year max 4 hours outage.

The product “SAP HANA service for SAP Business Technology Platform, enterprise edition” has each maintenance window of 4 hours.

Other example: ABAP stack;

Up to 24 hours maintenance 4 times per year.

These outages planned by SAP cannot be stopped (nor should they be). It is your job to check with your company and the business process to be supported, if you can deal with the planned outages. If your availability needs are lower then using SAP BTP is fine. If you needs are higher than the SLA from SAP, you need to reconsider.

ABAP dictionary check

In some cases you need to check the entire system for inactive objects.

For this you can use program RUTMSJOB (transaction S_SLN_44000018):

Select the checks and schedule the jobs with the button.

With the job overview you can see the running status:

When completed you can use the Results button:

By clicking on the glass icon, you can list the results of items that are not ok.

Other potential programs

Other potential programs are these ones:

DD_REPAIR_TABT_DBPROPERTIES, see OSS notes

RUTCONSCHECK and RUTCHKNT, see OSS note:

OAUTH call from ABAP

OAUTH can be called from custom ABAP. The explanation is given in this formal SAP help file. But it is quite complex.

In the example program below we will use OAUTH to call SAP BTP CPI.

First in SE80 we create a OAUTH client profile named ZOAUTH_CLIENT_PROFILE_CPI:

Then the rest of the ABAP coding is according to the SAP help file, including the error handling on issues you might face.

*&--------------------------------------------------------------------*
*& Report Z_CALL_API_USING_OAUTH
*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*

REPORT z_call_api_using_oauth.

PARAMETERS:
  zp_url   TYPE string                    LOWER CASE
                                          DEFAULT 'https://apimanagement.eu10.hana.ondemand.com/v1/api/hc/xxx/call_name',
  zp_sslid TYPE strustssl-applic          DEFAULT 'ANONYM',
  zp_profl TYPE oa2c_profiles-profile     DEFAULT 'ZOAUTH_CLIENT_PROFILE_CPI',
  zp_confg TYPE oa2c_client-configuration DEFAULT 'ZOAUTH_CLIENT_PROFILE_CPI'.

CONSTANTS:
  BEGIN OF zgcs_create_return,
    argument_not_found TYPE sy-subrc VALUE 1,
    plugin_not_active  TYPE sy-subrc VALUE 2,
    internal_error     TYPE sy-subrc VALUE 3,
    others             TYPE sy-subrc VALUE 4,
  END OF zgcs_create_return.

START-OF-SELECTION.

  " oData: restrict to two entries returned, via url
  DATA(zgv_api_url) = |{ zp_url }?$top=2|.

  cl_http_client=>create_by_url( EXPORTING  url                = zgv_api_url
                                            ssl_id             = zp_sslid
                                 IMPORTING  client             = DATA(zlo_http_client)
                                 EXCEPTIONS argument_not_found = zgcs_create_return-argument_not_found
                                            plugin_not_active  = zgcs_create_return-plugin_not_active
                                            internal_error     = zgcs_create_return-internal_error
                                            OTHERS             = zgcs_create_return-others ).

  CASE sy-subrc.
    WHEN zgcs_create_return-argument_not_found.
      MESSAGE 'Argument not found when trying to create http client instance' TYPE 'E'.
    WHEN zgcs_create_return-plugin_not_active.
      MESSAGE 'Plugin not active for creation of http client instance' TYPE 'E'.
    WHEN zgcs_create_return-internal_error.
      MESSAGE 'Internal error when trying to create http client instance' TYPE 'E'.
    WHEN zgcs_create_return-others.
      MESSAGE 'Generic error when trying to create http client instance' TYPE 'E'.
  ENDCASE.

  zlo_http_client->propertytype_logon_popup = zlo_http_client->co_disabled.

  TRY.
      DATA(zgo_oauth_client) = cl_oauth2_client=>create( i_profile       = zp_profl
                                                         i_configuration = zp_confg ).
    CATCH cx_oa2c_config_not_found.
      MESSAGE 'OAuth 2.0 Client Configuration not found' TYPE 'E'.
    CATCH cx_oa2c_config_profile_assign.
      MESSAGE 'OAuth 2.0 Client Config - Unassigned Profile' TYPE 'E'.
    CATCH cx_oa2c_kernel_too_old.
      MESSAGE 'OAuth 2.0 Client - Kernel too old' TYPE 'E'.
    CATCH cx_oa2c_missing_authorization.
      MESSAGE 'OAuth 2.0 Client missing authorization' TYPE 'E'.
    CATCH cx_oa2c_config_profile_multi.
      MESSAGE 'OAuth 2.0 Client Config - Profile assigned multiple times' TYPE 'E'.
  ENDTRY.

  " Set oAuth token to the http client
  TRY.
      zgo_oauth_client->set_token( io_http_client = zlo_http_client
                                   i_param_kind   = if_oauth2_client=>c_param_kind_header_field ).
    CATCH cx_oa2c_at_not_available
          cx_oa2c_at_expired.

      " When setting the token fails, first try and get a new token
      TRY.
          zgo_oauth_client->execute_cc_flow( ).
        CATCH cx_oa2c_badi_implementation.
          MESSAGE 'OAuth 2.0 Client BAdI Impl. Error' TYPE 'E'.
        CATCH cx_oa2c_not_supported.
          MESSAGE 'Not supported by Service Provider.' TYPE 'E'.
        CATCH cx_oa2c_not_allowed.
          MESSAGE 'OAuth 2.0 Client Runtime - Not Allowed' TYPE 'E'.
        CATCH cx_oa2c_prot_http_failure.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - HTTP Failure' TYPE 'E'.
        CATCH cx_oa2c_prot_other_error.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Other Error' TYPE 'E'.
        CATCH cx_oa2c_prot_unexpected_code.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Unexpected Code' TYPE 'E'.
        CATCH cx_oa2c_prot_http_forbidden.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - HTTP 403 - Forbidden' TYPE 'E'.
        CATCH cx_oa2c_prot_http_not_found.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - HTTP 404 - Not Found' TYPE 'E'.
        CATCH cx_oa2c_server_error.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Server Error' TYPE 'E'.
        CATCH cx_oa2c_temporarily_unavail.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Temporarily Unavailable' TYPE 'E'.
        CATCH cx_oa2c_unsupported_grant_type.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Unsupported Grant Type' TYPE 'E'.
        CATCH cx_oa2c_unauthorized_client.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Unauthorized Client' TYPE 'E'.
        CATCH cx_oa2c_invalid_scope.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Invalid Scope' TYPE 'E'.
        CATCH cx_oa2c_invalid_grant.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Invalid Grant' TYPE 'E'.
        CATCH cx_oa2c_invalid_client.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Invalid Client' TYPE 'E'.
        CATCH cx_oa2c_invalid_request.
          MESSAGE 'OAuth 2.0 Client Runtime Protocol - Invalid Request' TYPE 'E'.
        CATCH cx_oa2c_invalid_parameters.
          MESSAGE 'OAuth 2.0 Client Runtime - Invalid Parameters' TYPE 'E'.
        CATCH cx_oa2c_secstore_adm.
          MESSAGE 'OAuth 2.0 Client Runtime - SecStore Administration' TYPE 'E'.
        CATCH cx_oa2c_secstore.
          MESSAGE 'OAuth 2.0 Client Runtime - Secstore' TYPE 'E'.
        CATCH cx_oa2c_protocol_exception.
          MESSAGE 'OAuth 2.0 Client Runtime - Protocol Exception' TYPE 'E'.
      ENDTRY.

      " Set oAuth token to the http client
      TRY.
          zgo_oauth_client->set_token( io_http_client = zlo_http_client
                                       i_param_kind   = if_oauth2_client=>c_param_kind_header_field ).
        CATCH cx_oa2c_at_not_available.
          MESSAGE 'oAuth 2.0: Acces token not available' TYPE 'E'.
        CATCH cx_oa2c_at_expired.
          MESSAGE 'Access Token has expired.' TYPE 'E'.
        CATCH cx_oa2c_at_profile_not_covered.
          MESSAGE 'Access token has expired.' TYPE 'E'.
        CATCH cx_oa2c_not_supported.
          MESSAGE 'Not supported by Service Provider.' TYPE 'E'.
        CATCH cx_oa2c_badi_implementation.
          MESSAGE 'OAuth 2.0 Client BAdI Impl. Error' TYPE 'E'.
        CATCH cx_oa2c_secstore.
          MESSAGE 'OAuth 2.0 Client Runtime - Secstore' TYPE 'E'.
        CATCH cx_oa2c_invalid_parameters.
          MESSAGE 'OAuth 2.0 Client Runtime - Invalid Parameters' TYPE 'E'.
        CATCH cx_oa2c_icf_error.
          MESSAGE 'Unknown error received from ICF.' TYPE 'E'.
      ENDTRY.

    CATCH cx_oa2c_at_profile_not_covered.
      MESSAGE 'Access token has expired.' TYPE 'E'.
    CATCH cx_oa2c_not_supported.
      MESSAGE 'Not supported by Service Provider.' TYPE 'E'.
    CATCH cx_oa2c_badi_implementation.
      MESSAGE 'OAuth 2.0 Client BAdI Impl. Error' TYPE 'E'.
    CATCH cx_oa2c_secstore.
      MESSAGE 'OAuth 2.0 Client Runtime - Secstore' TYPE 'E'.
    CATCH cx_oa2c_invalid_parameters.
      MESSAGE 'OAuth 2.0 Client Runtime - Invalid Parameters' TYPE 'E'.
    CATCH cx_oa2c_icf_error.
      MESSAGE 'Unknown error received from ICF.' TYPE 'E'.
  ENDTRY.

  " From here on handle the http client for the API interaction
  zlo_http_client->request->set_version( if_http_request=>co_protocol_version_1_0 ).
  DATA(zlo_rest_client) = NEW cl_rest_http_client( io_http_client = zlo_http_client ).

" Get data from API
  TRY.
      zlo_rest_client->if_rest_client~get( ).
      " Collect response received from the REST API
      DATA(zli_response) = zlo_rest_client->if_rest_client~get_response_entity( ).
      DATA(zgv_http_status_code) = zli_response->get_header_field( `~status_code` ).
      DATA(zgv_status_reason)    = zli_response->get_header_field( `~status_reason` ).
      DATA(zgv_response_data)    = zli_response->get_string_data( ).

      " Record the response of the interface
      IF zgv_http_status_code BETWEEN 200 AND 299.
        " Success
        MESSAGE 'Call was succesful' TYPE 'S'.
      ELSE.
        MESSAGE 'Call failed' TYPE 'E'.
      ENDIF.

      WRITE / 'Response'.
      WRITE / zgv_response_data.

      " Issues with REST client must not lead to a short-dump
    CATCH cx_rest_client_exception INTO DATA(zlx_rest_client).
      IF zlx_rest_client->if_t100_message~t100key IS NOT INITIAL.
        DATA zlv_message TYPE string.
        MESSAGE ID zlx_rest_client->if_t100_message~t100key-msgid
                 TYPE 'E'
                 NUMBER zlx_rest_client->if_t100_message~t100key-msgno
                   WITH zlx_rest_client->if_t100_message~t100key-attr1
                        zlx_rest_client->if_t100_message~t100key-attr2
                        zlx_rest_client->if_t100_message~t100key-attr3
                        zlx_rest_client->if_t100_message~t100key-attr4.
      ELSE.
        MESSAGE 'Rest client Exception' TYPE 'E'.
      ENDIF.
  ENDTRY.

  zlo_http_client->close( ).

Security Services Tools

SAP offers on GitHub some extra Security Service Tools. These are custom Z ABAPs you can download and modify to your needs.

Link to GitHub:

GitHub – SAP-samples/security-services-tools: If you use security-related services and tools such as EWA, SOS, System Recommendations, Configuration Validation, or a security dashboard in SAP Solution Manager, the ABAP reports in this repository can help with further analysis and development.

Interesting programs from Security Service Tools

Some highlights from the Security Service Tools page:

  • Extensive cleanup program for weak hashes (including the password history data)
  • Workload statistics of RFC calls
  • Show SNC status of active users on application server
  • Show RFC gateway and logging settings
  • History of dynamic profile parameters
  • ….
  • Many more

SAP Focused Run LMDB and landscape management

SAP Focused Run LMDB is a great source of technical information. Especially with the new graphical view.

In SAP Focused Run LMDB is now part of Landscape Management.

LMDB administration (up to FRUN5.0)

With the LMDB administration page you can see the LMDB status:

Green is ok:

If not green, check the status for needed actions.

LMDB object maintenance

The LMDB Object Maintenance tile can be used to maintain a single LMDB entry:

Now select the system on the LMDB search screen:

And then push the button Display to go to the details:

On the left side you can choose a specific view on the system, like software, database, technical instances etc. If you click on the left side, the right side will show the details.

LMDB tools and graphical overview

The LMDB tools offer a graphical overview. First open the LDMB tools FIORI tile:

In Focused Run 5.0 there is a new tile for this:

Then select the technical system (in Focused Run 5.0 the main overview opens, and you need to select the technical systems on the left):

Now press the blue Hierarchy button to go to the graphical overview (in FRUN 5.0 simply click on the blue system name):

On the left is the graphical decomposition. On the right the details per object selected on the left side.

FRUN 5.0 landscape management

In Focused Run 5.0 there is a new tile replacing the LMDB and called Landscape Management:

The start page is an overview of all your systems and its status:

The other LMDB functions are still present on the left side of the screen.

API for LMDB

The SAP Focused Run LMDB has an API. For more details, read this blog.

LMDB updates

The LMDB updates are triggered automatically. This behavior can be changed in certain situations or even totally switched off. Read more on this SAP Focused Run export portal page. See also OSS note 3376303 – Support switch for disabling Agent deployments triggered by LMDB events for older versions.

Data archiving: customer and vendor master data

This blog will explain how to archive customer and vendor master data via objects FI_ACCRECV and FI_ACCPAYB. Generic technical setup must have been executed already, and is explained in this blog.

Most use of this archiving is when customers and vendors are created wrongly, to get them deleted from the system.

The below is mainly focusing on traditional ECC system. In S4HANA system both customers and vendors are integrated as business partners. For archiving sections of business partners for customer and / or vendors, read OSS note 3321585 – Archiving for Business Partner and Customer / Suppliers.

If you also want to archive/delete the LFC1 and KNC1 tables, also implement the FI_TF_DEB and FI_TF_CRE archiving objects.

Object FI_ACCRECV (customers)

Go to transaction SARA and select object FI_ACCRECV (customers).

Dependency schedule:

A lot of dependencies. Everywhere a customer number is used in an object. This makes it almost impossible to archive a customer master record. But still: it can be done to delete wrongly created master data if no transaction data is created yet.

Main tables that are archived:

  • KNA1: General customer master data
  • KNB1: Company code specific customer master data

Object FI_ACCPAYB (vendors)

Go to transaction SARA and select object FI_ACCPAYB (vendors).

Dependency schedule:

Quite some dependencies. Everywhere a customer number is used in an object. This makes it almost impossible to archive a vendor master record. But still: it can be done to delete wrongly created master data if no transaction data is created yet.

Main tables that are archived:

  • LFA1: General vendor master data
  • LFB1: Company code specific vendor master data

Technical programs and OSS notes

Write program customers: FI_ACCRECV_WRI

Delete program customers: FI_ACCRECV_DEL

Write program vendors: FI_ACCPAYB_WRI

Delete program vendors: FI_ACCPAYB_DEL

Relevant OSS notes:

Application specific customizing

There is no application specific customizing for customer and vendor archiving. You can use XD06 for customer master deletion flag setting and XK06 for vendor master deletion flag setting.

Executing the write run and delete run Customers

For customers: in transaction FI_ACCRECV select the write run:

Important is the consideration of the validation links and the deletion indicator. Customer deletion indicator flag can be set with transaction XD06.

Select your data, save the variant and start the archiving write run.

There is a sequence inconsistency. The online help has sequence FI, SD, general. The OSS note 788105 - Archiving FI_ACCRECV has sequence SD, FI, general.

You have to do the run three times: for FI, SD and general.

Deletion run is standard by selecting the archive file and starting the deletion run.

Executing the write run and delete run Vendors

For customers: in transaction FI_ACCPAYB select the write run:

Important is the consideration of the validation links and the deletion indicator. Vendor deletion indicator flag can be set with transaction XK06.

Select your data, save the variant and start the archiving write run.

You have to do the run three times: for FI, MM and general. A sequence is not given in OSS note, nor in online help.

Deletion run is standard by selecting the archive file and starting the deletion run.