BADI’s in 5 Minutes
Generally if you are a developer you know all about BADI’s, if you are a functional person you possibly only know that they exist. This is what every functional person, at least needs to know about them:
A BADI is similar to a user exit.
It stands for Business Add In.
BADIs are object orientated.
You do not need to register the code change in SAP SSCR. (SAP Software change registration).
In ECC the transaction code to display/change/create a BADI definition is SE18.
In SE18 you can also see detailed descriptions of the use and examples of standard SAP BADI’s for example use: ME_DEFINE_CALCTYPE - To reset the calculation type in a purchase order.
In ECC you can see the business implementation that calls the BADI in transaction SE19.
- In the definition, SE18 you create an enhancement that is called from the application code
- In the implementation, SE19 you save the code for the functions for the enhancement
How do you find a BADI:
Go to the transaction code you wish to check, for example MM02. Click on a field, select help, select technical details. (F1-F9), then double click on the program name.
- Search in the program for the string CL_EXITHANDLER you should find the string “CALL METHOD CL_EXITHANDLER=>GET_INSTANCE” where you will find the relevant BADI.
- Alternatively you can find out the BADI name by following this post: http://saptricks.com/2438/find-a-badi
Remove “Copy From” in Solman title
Do you wish to remove the “Copy From” prefix of a document title in Solman?
When copying a document in Solution Manager, the original title gets “Copy From” as a prefix for the new title. When the length of a document title approaches the limit of 64 characters, relevant parts at the end can get truncated by putting this prefix at the beginning.
To solve this you can simply remove the prefix by using a simple SAP note - 1605780. This correction avoids the prefix and thus keeps the original title for the copied document.
How to unprotect a variant
Quite often, program variants are protected to avoid any unauthorised users from changing them.
For example, if this variant is for a program which is part of a batch plan, you don’t want to this variant to be modified as it will disturb your automatic processes. So you protect your variants. But a protected variant can only been changed by the user who has protected this variant.
The issue could arise when the original user has left the company or the variant is required to be changed for an urgent issue?
The solution – Go to transaction SE38, execute program RSVARENT, “Cancel Variant Protection” enter the program and the variant you want to unprotect and execute. The program variant is now available for any changes.
Submitted by Robin Ferali – Thank you for contributing to the webs largest database of SAP tricks!
Find a BADI
There are some cases where we need to add some functionality when a transaction is called or an action is done in SAP.
In some cases we are not able to know which BADI to change in order to have our customized behaviour for a determined action.
Well, following the following steps we will be able to identify the BADI that we will need to change:
Step 1: SE37 display Function Module – SXV_GET_CLIF_BY_NAME.
Step 2: Set a BREAKPOINT on call function SXV_ADD_PREFIX .
Step 3: In another SESSION run the desired transaction, parameter ‘name‘ gives the BADI; (parameter ‘clif ‘ gives implementation, e.g. for TCode MIGO name = MB_MIGO_BADI, clif = CL_EX_MB_MIGO_BADI.)
Submitted by an anonymous SAPtricks User – Thank you for contributing to the webs largest database of SAP tricks!
How to activate or deactivate MS-Word as default text editor
When you want to activate/deactivate MS Word as the text editor for SAPscript/Smartforms.
- Call transaction se38, enter program RSCPSETEDITOR and press Execute (F8). On the next screen, select the checkbox SAPScript/Smartforms and press ‘Activate’.
- This is a fantastically fast method to produce multiple texts in multiple languages provided they are supported by your code page. Check out the OSS note below for comprehensive instructions on MS Word setup and available options.
OSS Note: 742662.
Submitted by an anonymous SAPtricks User – Thank you for contributing to the webs largest database of SAP tricks!
EDI IDOC Tables
Requirement: You wish to investigate the contents of an IDoc. Or you need to locate a specific IDoc based upon a specific IDoc segment value.
Solution: The best solution is not to use tables, but instead to use the standard SAP transaction WE09. (The IDoc search for business content.) Here you can locate for example, all Sales Order IDocs that were for a specific product. (You search for a value (material) in a field (IDTNR) within a segment for example (E1EDP19) for a Basic Type for example (ORDERS05).
In some instances you may wish to use the tables in which case there are 3 main reference tables:
- Control Record Table = EDIDC
- Data Record Table = EDID4
- Status Record Table = EDIDS
Search Transports by IMG
So picture the scenario: You see an article which is configured has been changed in the IMG, but you do not know which transport was responsible. You could search with SE10 via table names , but did you know there is an easier method?
If you are trying to locate a transport/s of a specific IMG activity or object it is very easy to do, without even using the table names, simply use transaction SE 10 with the following steps:
1) Select Transport and organizer tools (Shift +F6).
2) Select “Search for Objects in Requests/Tasks”.
3) Select 1/2 down the page for “IMG Activity” then select F4.
4) Now select the place in the IMG, the lowest drill down level possible, for which you wish to search for transports, which include those changed objects.
5) Then select the date range and Status “modifiable” or “Released” and execute.
Customer Master FI SD Integration
Picture the scenario: Due to Sarbanes-Oxly or some other reason the FI part of the customer master is created by the Finance team. After which the SD part of the customer master is created by the Sales team. It is possible that the two teams have failed to communicate to eath other and customer master records can be sitting in your system as incomplete.
To report on these you can use the transaction OV50. This will show you the sales area created customer master records for which there are missing company code views, or visa versa. (A great little utility.)
Submit your own SAP Tips & Tricks
You are now able to submit your own SAP tips and tricks. Find more of what you need! Engage and share content with other SAP professionals. Simply submit a Tip or Trick on the right hand side of every page. Help establish the largest resource of SAP Tips and Tricks on the web.
BW BI Tables
Transfer Structure
RSTS Transfer Structure List
RSTSFIELD Transfer Structure fields
RSTSRULES Transfer Structure rules
RSAROUTT Text name of Transfer Routine
DD03T Text for R/3 Transfer structure Objects
Update Rules
RSUPDROUT Update rules List
RSUPDDAT Update rules with routines
RSUPDKEY Update rule key fields
RSUPDINFO InfoProvider to Infosource correlation
Embedded ABAP coding for Transfer / Update Rules
RSAABAP ABAP source code per object routine
InfoPackage
RSLDPIO Links datasource to infopackages
RSLDPIOT InfoPackage Text Description
RSLDPRULE ABAP source code for InfoPackages
RSLDPSEL Hardcoded selections in InfoPackages
RSMONICDP Contains the request-id number by data target
RSPAKPOS List of InfoPackage Groups / InfoPackages
ProcessChain
RSEVENTCHAIN Event Chain Processing Event Table
RSEVENTHEAD Header for the event chain
RSEVENTHEADT Header for the event chain
RSPCCHAIN Process chain details
RSPCCHAINATTR Attributes for a Process Chain
RSPCCHAINEVENTS Multiple Events with Process Chains
RSPCCHAINT Texts for Chain
RSPCCOMMANDLOG System Command Execution Logs (Process Chains)
RSPCLOGCHAIN Cross-Table Log ID / Chain ID
RSPCLOGS Application Logs for the Process Chains
RSPCPROCESSLOG Logs for the Chain Runs
RSPCRUNVARIABLES Variables for Process Chains for Runtime
RSPC_MONITOR Monitor individual process chains
Queries
RSZELTDIR Directory of the reporting component elements
RSZELTTXT Texts of reporting component elements
RSZELTXREF Directory of query element references
RSRREPDIR Directory of all reports (Query GENUNIID)
RSZCOMPDIR Directory of reporting components
RSZRANGE Selection specification for an element
RSZSELECT Selection properties of an element
RSZELTDIR Directory of the reporting component elements
RSZCOMPIC Assignment reuseable component <-> InfoCube
RSZELTPRIO Priorities with element collisions
RSZELTPROP Element properties (settings)
RSZELTATTR Attribute selection per dimension element
RSZCALC Definition of a formula element
RSZCEL Query Designer: Directory of Cells
RSZGLOBV Global Variables in Reporting
Workbooks
RSRWBINDEX List of binary large objects (Excel workbooks)
RSRWBINDEXT Titles of binary objects (Excel workbooks)
RSRWBSTORE Storage for binary large objects (Excel workbooks)
RSRWBTEMPLATE Assignment of Excel workbooks as personal templates
RSRWORKBOOK Where-used list for reports in workbooks
Web templates
RSZWOBJ Storage of the Web Objects
RSZWOBJTXT Texts for Templates/Items/Views
RSZWOBJXREF Structure of the BW Objects in a Template
RSZWTEMPLATE Header Table for BW HTML Templates
InfoObject
RSDIOBJ Directory of all InfoObjects
RSDIOBJT Texts of InfoObjects
RSDIOBJ Directory of all InfoObjects
RSDIOBJT Texts of InfoObjects
RSDATRNAV Navigation Attributes
RSDATRNAVT Navigation Attributes
RSDBCHATR Master Data Attributes
RSDCHABAS Basic Characteristics (for Characteristics,Time Characteristics, and Units)
RSDCHA Characteristics Catalog
RSDDPA Data Package Characteristic
RSDIOBJCMP Dependencies of InfoObjects
RSKYF Key Figures
RSDTIM Time Characteristics
RSDUNI Units
InfoCube
RSDCUBE Directory of InfoCubes
RSDCUBET Texts on InfoCubes
RSDCUBEIOBJ Objects per InfoCube (where-used list)
RSDDIME Directory of Dimensions
RSDDIMET Texts on Dimensions
RSDDIMEIOBJ InfoObjects for each Dimension (Where-Used List)
RSDCUBEMULTI InfoCubes involved in a MultiCube
RSDICMULTIIOBJ MultiProvider: Selection/Identification of InfoObjects
RSDICHAPRO Characteristic Properties Specific to an InfoCube
RSDIKYFPRO Flag Properties Specific to an InfoCube
RSDICVALIOBJ InfoObjects of the Stock Validity Table for the InfoCube
Aggregates
RSDDAGGRDIR Directory of Aggregates
RSDDAGGRCOMP Description of Aggregates
RSDDAGGRT Text on Aggregates
RSDDAGGLT Directory of the aggregates, texts
ODS Object
RSDODSO Directory of all ODS Objects
RSDODSOT Texts of all ODS Objects
RSDODSOIOBJ InfoObjects of ODS Objects
RSDODSOATRNAV Navigation Attributes for ODS Object
RSDODSOTABL Directory of all ODS Object Tables
PSA
RSTSODS Directory of all PSA Tables
DataSource (= OLTP Source)
ROOSOURCE Header Table for SAP BW DataSources (SAP Source System/BW System)
RODELTAM BW Delta Procedure (SAP Source System)
RSOLTPSOURCE Replication Table for DataSources in BW
InfoSource
RSIS Directory of InfoSources with Flexible Update
RSIST Texts on InfoSources with Flexible Update
RSISFIELD InfoObjects of an InfoSource
Communications Structure
RSKS Communications Structure for InfoSources with Flexible Update
RSKS Communications Structure (View) for Attributes for an InfoSource with
Direct Update
RSKSFIELD Texts on InfoSources with Flexible Update
RSISFIELD InfoObjects of an InfoSource with Flexible Update
Transfer Structure
RSTS Transfer Structure in SAP BW
ROOSGEN Generated Objects for a DataSource (Transfer Structure, for example in SAP
Source System)
Mapping
RSISOSMAP Mapping Between InfoSources and DataSources (=OLTP Sources)
RSOSFIELDMAP Mapping Between DataSource Fields and InfoObjects
InfoSpoke
RSBSPOKESELSET InfoSpoke Directory and Selection Options
RSBSPOKEVSELSET InfoSpoke Directory with Selection Options and Versioning
SAP BW Statistics
RSDDSTAT Basic Table for InfoCubes/Queries
RSDDSTATAGGR Detail Table for Aggregate Setup
RSDDSTATAGGRDEF Detail Table of Navigation for each InfoCube/Query
RSDDSTATCOND InfoCube Compression
RSDDSTATDELE InfoCube Deletions
RSDDSTATWHM Warehouse Management
Misc
RSSELDONE InfoPackage selection and job program
RSPSADEL PSA Table deletion
TBTCP Job Schedule Definition
TBTCO Job Schedule Result
RSMONMESS Monitor Messages
RSERRORLOG Check loading errors in table
V_RSZGLOBV Report Variables view table
DEVACCESS Developer Keys table
TSTC All Transactions in the system
RSDDAGGRDIR Directory of the aggregates
ROIDOCPRMS Control parameters for data transfer from the source system
SMEN_BUFFC Objects in User’s Favorites
Web Item
RSZWITEM Header Table for BW Web Items
RSZWMDITEM BW Web Metadata: Template Item ( Dataprovider, Item, … ).
Archiving
RSARCHIPRO BW Archiving: General Archiving Properties
RSARCHIPROIOBJ BW Archiving: General Archiving Properties
RSARCHIPROLOC BW ARchiving: General Local Properties
RSARCHIPROLOCSEL BW Archiving: Archived Data Area
RSARCHIPROPID BW Archiving: Program References of InfoProvider
RSARCHREQ BW Archiving: Archiving Request
RSARCHREQFILES BW Archiving: Verfified Archive Files
RSARCHREQSEL BW Archiving: Request-Selections
Execute a Function Module without using SE37
A number of companies restrict the execution of function modules in quality, pre-prod and prod environments, for good reason. Therefore you may find you do not have access to the transaction code SE37. Generally experienced developers may however have access to SE38.
So how do you execute or test a function module in a system/client but wish to get around the authorization issue? Simply use SE38 with program RSFUNCTIONBUILDER.
TIP – You can sometimes use the same technique by using SE93 with the problem transaction and using the program name however do not expect to be able to bypass all authorizations.
Change SAP menu
Do you know you can set the default area menu that all users will go to when opening a new session, system wide. This is beneficial should you wish to create a specific area menu for your company. If no setting is made, the standard entry point (area menu S000) is used.
The SAP menu entry point is specified in the transaction SSM2.
Customer-specific text on the SAP Gui logon screen
Why change the SAP login Screen?
Some companies choose to modifiy the login screen to:
- Give security notice warnings to potential unauthorised access.
- List client numbers and their use within a system.
The history:
Before Release 4.6 the logon screen was modified through program SAPMSYST screen 0020. From release 4.6 onwards it is simply modified using transaction SE61.
Proceed as follows:
Go to Transaction SE61and select the document class ‘General Text’ (selection using F4 help).
Create a text with the name ZLOGIN_SCREEN_INFO in the system language. (If the text does not exist in the system language, no output is made.)
TIP – Check profile parameter “zcsa/system_language” in transaction RZ11 to determine your system language.
Title lines may be used, as well as very basic text formatting. You may also include standard SAP icons within the message. A tip is to change the editor from within SE61 (Goto–>change editor), this will clearly show you the available character and paragraph codes.
Note: Creating/changing this text requires a changeable system. Therefore, for production systems, SAP recommends maintaining the text in the upstream system and then transporting it. To do this, select a transportable (customer) development class when you create the text and save the active version prior to the export.
The transport is done via the transport object R3TR DOCT ZLOGIN_SCREEN_INFO
What to use to measure performance improvement
You know of ST05, ST01 and SE30. But do you know why you would use one transaction code and not the other? What are the main purposes of each one when it comes to performance improvement and measurement?
To measure and improve performance of ABAP programs – Use SE30 to measure:
- Excessive or unnecessary use of modularization units
- CPU-intensive program functions
- User-specific functions that could be replaced with ABAP statements
- Inefficient or redundant database access.
In addition you may want to analyze or fine-tune a program’s database accesses – Use ST05 to measure:
- Database accesses (SQL trace)
- Table buffers
- RFC calls
- Lock operations (client side)
If you wishto fine tune the system – use ST01 to measure:
- Authorization checks
- Kernel functions
- Kernel module
In addition ST01 encompasses the majority of the functionality of ST05.
How to find the IP address of a SAP system
Scenario – You wish to connect to your SAP system from a remote connection, you require your SAP system IP address and port.
Option 1 – There are a few methods to discover the IP address of a system the easiest being to simply use the menu path:
System–>Status–> then press (SHIFT+F5) –> You will see your current systems IP address under the System Information.
Option 2 – Alternativly you may use SM59 then select R/3 connections and double click on the system (RFC destination), then select the menu path:
System Information–>Target System –> You will see the target systems IP address under the “Network address”.
Check IDoc number
Is there any way to check the IDOC number from a sending system, within a receiving system?
Yes there is a way to do this. In the receiving system, execute transaction BD87. Select the node for analysis and select “Trace IDOCS”. You will then see all IDOCS as well as the field, IDOC No. partner. (The external IDOC number).
Currency and Decimal Places in SAP
The number of decimal places varies for currencies. Currencies which do not have two decimal places must be defined in SAP in table TCURX (decimal places for currency codes).
You can maintain this table in the IMG as follows: SAP Customizing Implementation Guide–>SAP NetWeaver–>General Settings–>Currencies–>Set Decimal Places for Currencies. (Transaction code Oy04)
Never delete a currency or change the decimal place value of a currency in SAP.
Some common Customizing settings for table TCURX:
ISO Currency Decimal places
Code
————————————————————————
ADP Andoran Peseta 0
AFA Afghani Afghani 0
BEF Belgian franc 0
BHD Bahraini dinar 3
BIF Burundi franc 0
BYB Belorussian rubel (old) 0
BYR Belorussian rubel (new) 0
CLP Chilean peso 0
COP Columbian peso 0
DEM3 (Internal) German Mark (3 Dec.) 3
DJF Djibouti franc 0
ECS Ecuadorian sucre 0
ESP Spanish peseta 0
GNF Guinea franc 0
GRD Greek drachma 0
HUF Hungarian forint 0
IDR Indonesian rupiah 0
IQD Iraqui dinar 3
ITL Italian lira 0
JOD Jordan dinar 3
JPY Japanese yen 0
KMF Comoros franc 0
KRW South Korean won 0
KWD Kuwaiti dinar 3
LAK Laos new kip 0
LUF Luxembourg franc 0
LYD Libyan dinar 3
MGF Madagascan franc 0
MZM Mozambique metical 0
OMR Omani rial 3
PTE Portugese escudo 0
PYG Paraguay guarani 0
ROL Roumanian Lei 0
RWF Rwanda franc 0
TJR Tadzhikistani rubel 0
TMM Turkmenistani manat 0
TND Tunesian dinar 3
TPE Timor escudo 0
TRL Turkish lira 0
TWD New Taiwan dollar 0
UGX Uganda shilling 0
USDN (Internal) US Dollar (5 dec.pl.) 5
VND Vietnamese dong 0
VUV Vanuata vatu 0
XAF CFA Franc BEAC 0
XOF CFA Franc BCEAO 0
XPF CFP Franc 0
The contents of this table is only delivered with new installations of SAP and never upgraded.
For upgrade installations, new or changed contents of Table TCURX are not delivered.
Currency codes and decimal places for currency codes are defined in ISO standard 4217. For the specification of decimal places for currency codes, SAP uses this ISO standard.
SGEN – The SAP Load Generator
The SAP Load Generator is executed through transacion code SGEN. SGEN may be required to be executed after a large upgrade or release of functionality in a system. If you don’t run SGEN and try to access specific objects the programs may start to be compiled as they are individually accessed.
Quick Overview
- SGEN is used to “compile” ABAP programs.
- It can be used to re-generate all the SAP programs after you change version of your SAP kernel, upgrade your SAP system or apply support packages.
- It is best to execute it during a period of time with very low user activity.
- SGEN is a client independent transaction.
- SGEN can also be used to re-generate objects within a Transport Request from SGEN menu–>Regenerate Existing Load
- If you want to regenerate loads, make sure that there is enough space available in the database. The space required can be several hundred MB. Generation over all components requires around 2 GB of free space.
- The runtime depends on the type of hardware configuration and number of objects being generated. (It would not be uncommon for this to take 5 hours.)
- You can limit the components to be generated, in order to reduce the runtime.
- You can schedule RSGENINVLAS to automatically regenerate invalidated loads. (Note this report has no selection screen)
Use
1. Select the generation task.
On the initial screen of transaction SGEN you can select the task that suits the purpose of the generation:
Generate all Objects of Selected Software Components
Choose this strategy if you want to generate the loads of all objects of certain software components. This may be the case, for example, if your system has been reinstalled. Here, the loads that are required for operation are not yet available and must be regenerated.
After selecting this task, the Selection of the Generation Set by Software Components screen appears. Here, you can restrict the amount of objects to be generated by selecting software components. Use the pushbuttons to select the software components you require.
Regenerate After an SAP System Upgrade
After an upgrade, you have to regenerate the ABAP object load in the system.
Regenerate the Objects of the Last Run
This task is suitable, for example, in the following cases:
- The generation of objects of the generation set that was used in the previous run was terminated and you want to regenerate the remaining objects.
- You want to regenerate all objects of the generation set that was used in the previous run.
After selecting this task, the following two options are available to you:
- Restart
The generation set that was used in the previous run in transaction SGEN is used. Only those objects that were not generated in the previous run or whose generation was terminated due to a system error, are generated.
- Generation:
All objects of the generation set used in the previous run of transaction SGEN are generated.
Regenerate Existing Loads
This task allows you to regenerate all ABAP loads and invalidated loads that exist in your system, and to generate loads for objects of a Support Package queue. You have the following options:
- Generate all Objects with Existing Load
- Generate Objects with Invalidated Load Only
An object load is invalidated if, since the time the load was generated, activated changes were made to the object or to objects used by this object, such as includes or tables. This may occur by importing a Support Package (SPAM) or a kernel patch.
If you want to generate loads for objects from a Support Package queue, start the task after importing the queue. The task determines the generation set using the invalidated loads in the system. Unlike the Generate objects of a transport request task, this task also takes into account ABAP loads that were invalidated by modified Dictionary objects.
Note: You can also periodically schedule an automatic regeneration of invalidated loads (every night, or at other times when the system load is low, for example). To do this, schedule the RSGENINVLAS report for the relevant time and period. The report then determines the invalidated loads for every type of host in your system at the specified time, and regenerates them.
Generate Objects from a Transport Request
You can use this generation task to regenerate the ABAP load for all objects in a transport request that can be generated. However, this task does not take into consideration ABAP loads that were invalidated by modified Dictionary objects. To include these loads, choose Regenerate Existing Loads -> Generate Objects with Invalidated Load Only.
After choosing this task, a screen appears that allows you to search for the name of the transport request using the selection button, or to specify it directly.
Generation of BSP Applications
This task enables you to generate BSP applications of selected software components.
Each Business Server Page is realized technically by an ABAP object class. When BSP applications are generated, these classes and their ABAP loads are generated. BSP applications are not included in the generation sets of the Generate All Objects of Selected Software Components, Regenerate After an SAP System Upgrade and Regenerate All Existing Loads tasks, since they are optional. You can use this task to deal with these.
After selecting this task, the Selection of the Generation Set by Software Components screen appears. Here you can restrict the amount of BSP applications to be generated by selecting software components. Use the pushbuttons to select the software components you require.
If you quit the generation of BSP applications before it has finished, or if the system terminates generation, the Regenerate the Objects of the Last Run task allows you to resume the generation.
2. Select the servers for parallel generation.
The generation is based on a method where the generation set is divided into small subsets that are processed by parallel processes. Depending on resources, available servers are included in the parallel processing, whereby multiple parallel processes run on one server.
From the Selection of Servers for Parallel Generation screen, you can select the servers that are to be used in the parallel processing. Note that loads depend on the machine type (MT) of a host. This means that it only makes sense to parallel process the generation set of servers of the same machine type.
The default selection uses the server that you are logged on to. It corresponds to your logon server and all servers on your system that have the same machine type. If you want to use the default selection, choose Continue.
If you want to exclude individual servers from the generation, or if you want to generate the load for a particular machine type that is different to that of the logon server, then use the pushbutton to select the corresponding servers and choose Continue.
Note: The parallel servers are depicted via the logon groups in transaction RZ12. For transaction SGEN, logon group ‘parallel_generators‘ is created. Do not use this group for your own purposes, as transaction SGEN uses and continually redefines this group.
After you have selected the servers, the system starts to define the generation set dynamically, and stores it in the database (database table GENSETC). This can take several minutes.
Job Monitor Pushbutton
This function allows you to call the job process control directly, without redefining the generation set. By choosing Job Monitor -> Job Overview -> Spool or Job Log, you can display logs from previous generation jobs.
Measure specific portions of ABAP Runtime
Most people know about SE30 which can be used to do an ABAP runtime analysis. However did you know that you are able to dynamically call the runtime analysis for a portion of source code for example a section of a user exit, or for a specific function module?
This is easily done by changing the user variant as follows:
- Open SE30
- On Measurement restrictions (1/2 way down the page) create/change your user defined variant.
- Within the variant under program parts, select the “particular Units” check box and save.
Now from within SE38 for the code you wish to measure – set your breakpoint for the position from which you wish to measure and another for the position to which you wish to measure.
Go back to SE30 and execute your code when you reach the breakpoint activate the runtime analysis from System–>Utilities–>Runtime Analysis –> Switch On.
Run through the code by selecting F8.
When you reach your end point de-activate the analysis by selecting System–>Utilities–>Runtime Analysis –> Switch Off.
TIP: You can activate the runtime performance analysis start by entering the command prompt code /RON in the transaction box. You can de-activate the analysis by using the command prompt code /ROFF.
NOTE: If you get the message “The Particular “units” option is not selected – S7100. It means you are not using your new changed default user variant for the execution.
Debug and change in SE16
Not a very common procedure – however you may have an instance where you are required to change a value of a record or field in a table. If you are unable to change the value using SM30. You may wish to debug and manipulate the abap controls of the field permissions using SE16. You can do this as follows:
1) SE16 using the table name, extract the record you wish to change.
2) /h to enter debug mode.
3) Double click on the record you wish to change.
4) Press F7.
5) Change the code from “SHOW” to “EDIT” by changing the field contents.
6) Press F8 to run to end.
The authorization to proceed in step 5 should generally only be available for advanced ABAP developers who are in an integrated or development environment and need to adjust variables to develop their code. It is very possible that the majority of the readers of this site will not have the authorization.
BD56 and WE20 ALE IDoc Segment Filtering
Problem with ALE IDoc segment filtering?
A common problem related to ALE IDoc segment filtering is a mis-alignment between the partner profile settings in WE20 and the segment filtering settings in BD56. Normally the settings in BD56 are maintained and transported where the values in WE20 are maintained manually in each system. If the settings in WE20 are not maintained with the same expected parameters in BD56 the segment filtering will not work. Specifically one needs to make special note that:
- BD56 – Message Type = WE20 – Message Type
- BD56 – Logical System Type = WE20 – Partner Type
- BD56 – Receiver = WE20 – Partner Number
- BD56 – Receiver Role = WE20 – Partner Role
Specifically if Receiver Role is blank then Partner role must be blank. Alternatively if a value exists such as LS (Logical System) the same value must be in both fields.
How to create a Price Report in 15 minutes
Objective: You wish to create a report listing specific condition records with associated condition record validity dates, but you wish to extract data relevant for a specific customer across multiple condition types. This would normally entail you having to do multiple extracts or creating a specific query/custom ABAP program. A standard SAP solution is to create a price report, which can be done very quickly and effectivly.
Procedure to Create a SAP Price Report:
- Access the IMG: SAP Customizing Implementation Guide–>Sales and Distribution–>Basic Functions–>Pricing–>Maintain Pricing Report
- Select “Create Pricing Report”
- Enter a Name and Title
- Now select a field which is part of the condition table within your access sequence assigned to your condition type. For example you may select the field KUNNR. (Be careful as more than 1 technical field may have the same Field name description). (A good tip is to not select too many fields.)
- Select the OR or AND buttons depending on the number of fields you have selected.
- You will now have a list of all the pricing tables which contain the field you have selected. Select the tables for which you would like the report to extract the data. (Be careful as each field which is represented in a table will need to be represented in the final report, so you may not wish to have too many variables.)
- Now select the Next Step (F5)You can select which fields are used as selection parameters or not. All fields must have a position assigned in the report; Page Header –Group Header –Item level –
Result: You can now execute the report with transaction V/LD.
Transport of Copies
Issue: Imagine you create and release a few transports before setting up the target system and Landscape. Because of this, the transports can be released without target clients. How do you fix this problem?
Fix: Fix is done using Transport of Copies Method:
- Execute transaction SE10
- Select the create icon.
- Select “Transport of Copies”
- Enter short description and save, this will create your transport number.
- Now follow the menu path to place your objects into this transport copy:
- Request Type–>Object List–>Include Objects
- Select “Object List from Request” and enter your old transport number.
Thats it! Your new transport is a copy of your old transport with all associated objects.
———-
Post contributed by: Sundar Raghuraman
Contact: sundar.raghuraman@gmail.com
How to Scan ABAP Sources for Specific Strings
It is simple to locate a string within a program but have you ever wondered how to find all programs where a specific ”string”, or line of text, or object name, is used.
There is a wonderful report which is I use to find ABAP programs related to specific search terms.
- The Report name is – RPR_ABAP_SOURCE_SCAN
- You can execute it from transaction SA38 or SE38.
Some useful benefits of this report are:
You can limit the search range of the programs for example to your custom built developments only for example all programs starting with Y* or Z*.
Tip - Another similar program is RKCTSEAR.
Where Customized in the IMG
Today someone asked me how do they find the place an object is customized if they only have the table or view name. The technique is very simple you can do the following:
- Transaction SM30
- Enter the table or view name and select the button “Customizing”
- You will then see a dialogue box where you may enter a project – or simply select “Continue without specifying project”
- You will then see a list of place in the IMG where that table/view is edited/customized. Simply select the entry.
You can view which tables are customizing tables, by looking at the table in SE10 and then selecting the button “technical Settings”. You will see the “Data class” as APPL2 – Organization and customizing.
So which system is connected?
I work on a large landscape of 110 SAP systems (not clients). Every now and then someone asks if a specific system is connected to another, there is no way I can remember which systems are connected. Depending on what system they are referring to one may be able to execute a system specific transaction. However as a dependable alternative one may simply use SM59 and view the connected systems.
Here you can view the following connections:
- R/3 connections
- HTTP Connections to R/3 System
- Internal connections
- Logical destinations
- TCP/IP connections
- Connections via ABAP/4 driver
Tip – Depending on your settings (If the logon data is saved on the Logon/security tab) you may even be able to login to a connected system remotely from within SM59, simply select the R/3 connection and selecting “Remote logon” button.




