Friday, September 25, 2015

Adding BW objects from temporary into development package

This is common issue in BW systems. Especially in systems which are productive or golden ones where no any changes were foreseen. If in such a systems an objects like BW objects of type BEx query, Query Elements, DTP, InfoPacks, etc. were created they were assigned to local package $TMP. These objects in local package are not transportable. In case it is needed to transport thee objects an assignment from $TMP to real development package must take in place.

To do this we usually go into object directory entry and we assign the object into development package. However if the system is closed for an changes this re-assignment of the package is not possible. While doing such an attempt there is error messaged showed as below.

Therefore always plan ahead. If there is necessities to re-assign the development package in e.g. productive system make sure that you get your system opened. The opening of the system/client itself takes place in t-code SCC4.

System setting does not allow changes to be made to object ELEM 00O2SPCKTAN9FU9JJTONQD8BW

Message No. TO128


The system and namespace change option set for this SAP System does not allow any changes to be made to object ELEM 00O2SPCKTAN9FU9JJTONQD8BW.

System Response
Editing is terminated, the object can only be displayed.

If you want to edit the object ELEM 00O2SPCKTAN9FU9JJTONQD8BW in this SAP System, have your system administator set the SAP System to "modifiable" for this object.
This can affect the modifiability of the namespace /0CUST/ or the namespaces that correspond to the pattern /0CUST/, as well as the global setting of the system change option.
The system change option is set using the Transport Organizer tools (Transaction SE03). Expand the Administration node and execute the program Set system change option. The options are described there.

- Update 21/05/2017 –
Got a tip from a friend – Martin Kuma regarding below error that may occur while inserting BEx Query elements into transport request via Transport Connection:

Object ELEM 00O2TK9973U27J5NF6N1XHFOP is generated, and cannot be transported. Message No. RSO215

To overcome this error an adjustment of TADIR table’s field GENFLAG is needed for particular entry. Value X of the field GENFLAG shall be removed and then it is possible to collect the entry into the transport request. The GENFLAG field basically identifies entries that were generated directly in the NetWeaver system.

Tuesday, September 15, 2015

Maximum attachment size limit for an email sent from SAP

Sometimes it may happen that outgoing emails from SAP instance are not going through. They are stuck in queue and have red status saying following error:

Cannot process message; maximum size exceeded
Message No. XS850

This clearly indicates that email is too big to get it sent over. Case might be that it has an attachment which size is causing this. It is worth to investigate actual size of the email and the attachment. However one may end up having email already compressed and facing this issue. So further compressing of the email attachment makes no sense. Therefore chance is to check what actually the limit of the email size is. Parameters related to the size of email and its attachment are customizable. The customizing table is called SXPARAMS - SAPconnect: Parameter Table. Its maintenance is available t-code SOST -> Utilities -> General Parameters or via SM30 -> SXPARAMS.

Few parameters related to size of email and its components:

Parameter                                        Parameter value

MAXLEN_BODYPART_SMTP             0 ... 999999999999   size for a document
MAXLEN_BODYPART_ALI_SMTP       0 ... 999999999999   lists of the type ALI
MAXLEN_BODYPART_OTF_SMTP      0 ... 999999999999   SAPscript documents

MAXLEN_MIME_MESSAGE_SMTP     0 ... 999999999999   MIME MIME attachments

Update 02-08-2016
There is one more parameter of SCOT. It is related to size of email.
MAXLEN_BODYPART_EXT_SMTP      size for an attachment, default value: 10485760

How to recognize whether SNC is installed in SAP system?

SNC is very often used by SAP customers to secure the data exchange between SAP and external systems. Also communication form SAP GUI to SAP backend by default is not encrypted. To secure communication like these and SNC needs to be implemented in SAP systems landscape.

The SNC or Secure Network Communication is an interface securing communications between two secure SAP systems; it provides application-level, end-to-end level of security. Protection is usually provided by an external security product that is available to SAP system using SNC interface. The interface complies with internet standard Generic Security Services Application Programming Interface (GSS API) version 2. The default product provided by SAP is the SAP Cryptographic Library, which you can use for SNC between SAP System server components.

Sometime there is a question form customers whether they do have the SNC in place. How to quickly check this? There are couples of ways…

1. By running Function Module SNC_CHECK_ACTIVE: The FM has no import parameters. Therefore just open the tcode SE37 put the name of the FM and run it. In case the SNC is enabled in particular SAP system there is export parameter ACTIVE set to X returned.

2. table USRACL: it stored SNC Access Control List (ACL)for users. In case the SNC is enabled every user recognized in field BNAME has field PNAME populated. In that field a canonical name is stored in format:

3. t-code SU01: in case the SNC is enabled an particular user has following data in tab strip called SNC:
SNC Status: SNC is active on this application server
SNC Data: SNC Name: p:CN=@company_domain

Sunday, September 13, 2015

Can’t set more than 30 breakpoints

Sometimes it is very easy to set many breakpoints while digging into SAP system. Very common case for that is to set a breakpoint into every statement like MESSAGE. Then in case one still needs more breakpoints following messages pops-up:

Can’t set more than 30 breakpoints
Message No. SY407

It is a matter of fact that there is this hard limit on number of breakpoints = 30 per one login into the system. It is not possible to set more breakpoints than that. The breakpoints (session breakpoints) are managed by C function DEBUG_CNTL so it is not possible to tell where the list of the breakpoints already set are stored. Only in case of external breakpoints it is possible to determine no of these. They are stored in table ABDBG_BPS.

Now how to easily get rid of all the breakpoints currently set in the system? Deactivating and also removing the breakpoints can be achieved in following ways:

1. In ABAP Workbench (tcode SE38): while in source code, see menu:
Utilities -> Breakpoints -> Delete
Utilities -> External Breakpoints -> Delete

2. In ABAP Debugger, menu: Breakpoints -> Delete all BPs or Deactivate all BPs

3. tcode RSBREAKPOINTS -> Delete Breakpoints

More information on breakpoints topic:
Remote ABAP Debugging and more (btw: this blog was written almost exactly 6 years back from writing this blog J )