Tuesday, December 16, 2008

RC 6 or RC 14 While Implementing Enhancement Package 3...

Just a note to you guys out there implementing Enhancement Package 3.
Basically this applies to anything imported using SPAM/SAINT.
If you run in to errors that stop the import process in any of the phases, just restart the import. Most of these are timing problems or miscellaneous quirks that are corrected automatically when you retry.

Hope this helps...

Monday, December 15, 2008

Syntax error in program SAPFGIDB in step XPRA Enhancement Package 3...

When performing the Enhancement Package 3 for ERP 6.0 upgrade, during step XPRA we ran into the following error message:

Error in the ABAP Application ProgramThe current ABAP program "RGICGLU1" had to be terminated because it has come across a statement that unfortunately cannot be executed.The following syntax error occurred in program "SAPFGIDB " in include "FGIDBF26" inline 240:"No component exists with the name "WRITE_SI_FOR_BCF". ."

After doing a lot of digging I found a reference to "WRITE_SI_FOR_BCF" in SAP Note 1153947.
The problem is, all of the changes listed in the note had already been applied to our system through support package 14 for SAP_APPL. It seems the upgrade will cause these changes, particularly steps 4 and 5 in the solution in Note 1153947.

After manually re-implementing steps 4 and 5, the upgrade finished successfully.

I hope this helps...

Tuesday, December 9, 2008

Error during Upgrade to Enhancement Pack 3 for ERP 6.0...

When Upgrading to Enhancement Package 3 for ERP 6.0, you may run into an error during the DD Activation Phase for EA_APPL. The objects that my upgrade kept failing on were the table EMMA_BPC and the view V_EMMA_BPC. The problem is that the view is built with a field that no longer exists in the source table. A quick consistency check in SE11 will tell you that.

The solution is to register V_EMMA_BPC, remove the erroneous field (CLASSJOB), and activate both the view and the table.

Then just restart your upgrade from where you left off.

You have no idea how much of a headache this was causing me the past few days.

UPDATE: This may occur on several different views on tables changed by Enhancement Pack 3. I recently ran into this same problem with view J_1AVEBRCH which had 2 erroneous fields.

Hope this helps...

Thursday, October 30, 2008

ASP.NET v2.0.50727 is not present in Web Services Extension in IIS manager...

ASP.NET v2.0.50727 is not present in Web Services Extension in IIS manager.
How do you make it appear and set it as an “allowed” service?
Open up a DOS command prompt and run teh following command:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe – i

or for 64 bit

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe – i

ASP.NET will register itself and show up in Web Service Extensions

Hope this helps...

Tuesday, October 21, 2008

Juniper VPN Timeout Issues / iTunes Conflict

If you have iTunes installed on your laptop it is possible that it may have a conflict with the Juniper VPN client.
Typically this will manifest itself by killing your connection within 30 seconds to a minute after connecting.
The problem is that the ‘Bonjour’ music sharing service (an add-on to iTunes) changes settings with DNS (techie geek stuff) and causes the connection to drop with the VPN.

To resolve this, the ‘Bonjour’ service needs to be turned off and disabled.
Don’t worry, you will still be able to use iTunes to listen to music and copy over to your MP3 player, etc.
Steps to turn off and disable ‘Bonjour’:
1. Go to Start->Run
2. Input ‘services.msc /s’ into the command line (without the tic marks)
3. In the new window that opens up, scroll down the selection list to the right to find the ‘Bonjour’ service
4. Right-click on the ‘Bonjour’ service and select ‘Properties’
5. In the ‘Startup Type’ drop-down, select ‘Disabled’
6. If the service status is ‘Running’ or ‘Started’ select the ‘Stop’ button
7. Click the ‘Okay’ button
8. Close the services window

After doing this, attempt to connect to the VPN again, and you should have more success.

Tuesday, October 7, 2008

Some Memory Settings to Help with Swaps...

If you are running a Central Instance on a server that is also hosting the database, you may run into a problem with high swaps as seen in transaction ST02. The problem is that typically when SAP is installed, the default settings will allocate all of the system memory to SAP, leaving nothing for the database or other applications that may be running on the server. This will mean your page file will need to be very large (sometimes 3x the amount of system memory) in order for SAP to even start up.
If you are in this situation, try the following:

First, you will want to dictate to the database how much memory to use.
With SQL Server 2005, I prefer to allocate 6 GB of system memory as long as the system has 16 GB or more installed. SQL Server Management Studio is the tool to use to do this. Check with your RDBS guidelines to see how much your database host is required to have available and do not go under that.

Secondly, you will need to decide how much memory to assign to SAP.
You can assign the balance of the system memory to SAP, but if you have other applications that run on the system you will want to take that into consideration as well. In a system with 16 GB of memory that has 6 GB dedicated to the DB, I assign 10 GB of memory to SAP. This is done so by setting the PHYS_MEMSIZE parameter (MB) in the Instance Profile. I have a few systems with two Central Instances installed on the same 16 GB server, so I assign 6 GB to SQL Server, and 5 GB to each SAP instance.

Third, if you are still getting high swaps in ST02, you will want to look at the settings of each buffer parameter.
Inside ST02 under the "Current Parameters" button you will find what parameter settings you are running with. the defaults are supposed to be a good starting point for the typical SAP install, but here are the parameters I like to set:

rsdb/ntab/ftabsize = 60000
rsdb/ntab/entrycount = 40000
rsdb/ntab/irbdsize = 12000
rsdb/cua/buffersize = 6000
rsdb/obj/buffersize = 8192
abap/buffersize = 600000
zcsa/table_buffer_area = 60000000
zcsa/presentation_buffer_area = 8800000


Using these settings I rarely get high swaps in my SAP systems, but you will need to study each parameter and tweak them for your specific install.

I hope this helps...

Tuesday, September 23, 2008

ADS RFC Test Results: Forbidden

We recently ran into another issue with ADS on a different client site.
When running the Connection Test from SM59 for the ADS RFC, we came up with the result "Forbidden."

This will happen if you also get prompted for credentials when you call http://wsnavigator.
If this is the case, you will need to alter the security settings for the application/service.
Open your Visual Admin tool and to go Services>Security Provider.
Choose Policy Configuration > sap.com/com.sap.engine.services.webservices.tool~wsnavigator
Select the tab Security Roles. The applied security role for WSNavigatorRole needs to be "all."
The ADS RFC Connection in transaction SM59 should work now.

Hope this helps...

Tuesday, September 16, 2008

Single Sign-On within Citrix Metaframe...

I ran into a little bit of an issue today while trying to configure single sign-on (SSO) in an environment in which the SAPGui is used through Citrix Metaframe (CM). It was working fine from the server-side as well as from desktops with the SAPGui installed locally. However, through the CM I kept getting the following error while trying to utilize SSO:

--- Unable to load the GSS-API DLL named 'sncgss32.dll' ---

To make a long story short, sncgss32.dll is the default library used when one has not been specified via an environment variable (EV) in Windows. When SAPSSO.msi is executed, it creates a User EV tied to the user performing the install. In the CM environment, there is a different context for each user utilizing the application. So the fix was to create the System EV SNC_LIB and point it to the correct DLL in the system directory. This resolved the problem.

Hope this helps...

Tuesday, August 12, 2008

Change the SAP Splash Screen...

Most of my customers like to be able to add their company logo or other image into the splash screen area of the SAP GUI. It is fairly simple to do:

1. Go to transaction SMW0 (SAP Web Repository)
2. Select "Binary Data for WebRFC Applications"
3. Create a new object and give it a name starting with "Z"
4. Import the object from the desktop (must be a .GIF)
- If it warns you about not having a MIME type setup, first create a new MIME type for GIF images under Settings > Maintain MIME Types
- You can also assign an editor for the MIME type, and MSPAINT works well for GIF images
5. Go to SM30 and maintain the SSM_CUST table
6. Enter the object name you created in step 3 into the START_IMAGE field
- If the START_IMAGE field does not exist, simply create it
- If you do not want the image to stretch with the SAPGUI size, set NO in the RESIZE_IMAGE field

Hope this helps...

Tuesday, August 5, 2008

Address Layout in SAP...

If you are tired of seeing the address data laid out n European format (street first, house number next, etc) it can be changed in the IMG.

Call transaction SPRO, select Reference IMG and go to the following path:
SAP Netweaver > Application Server > Basis Services > Address Management > International Settings >Choose Address Screen Layout

Choose US settings and you will be happy.

One place you can check this is in transaction SU01. On the Address tab for a new or existing user, select the 'Assign New Company Address' button, enter a name for the new address an dthe following screen will ask for the detailed address info. If the street name preceeds the house number, you know the system is set to the European address format.

Hope this helps...

Monday, August 4, 2008

Don't Forget to Set JAVA Environment Variables...

When installing ECC on a Windows server, the JDK install has to happen before you begin. There are two Environment Variables that must be set in order for the install complete. I always run into this, but now is the first time I thought to go ahead and put an entry in here about it.

JAVA_HOME and SAPINST_JRE_HOME both need to be set, pointing to the Java install directory, most commonly C:\j2sdk1.4.2***

Hope this helps things go a little smoother for you guys.

Tuesday, July 29, 2008

SAP ERP ECC 6.0 on a 32-bit Platform...

As of SAP media release SR3, ECC 6.0 will not install a Central Instance on a 32-bit platform. In order to get a new install of ECC 6.0 onto 32-bit hardware/OS, you will need to obtain the SR2 media. The SR2 media does not have the 64-bit restriction, but you will have to manually apply the SP stacks to get you to the same level as SR3. You can however install a Dialog Instance on a 32-bit system without having to perform the workaround.
I highly recommend, however, not using 32-bit hardware in new installs, because it is very likely that 64-bit will become a hard requirement for running not only new releases of SAP software but also for applying future support packages.

Hope this helps...

Saturday, May 31, 2008

Change SAP System and Default User Time Zone...

It is pretty simple. Just run transaction STZAC and change the System Time Zone and the User Default Time Zone to the correct 3-digit code. You will ave to do the User Default Time Zone in each client. Then just save it.

By the way, the client has to be set to Modifiable in order to make the change.

Friday, May 30, 2008

SAP User Administration

I just thought I'd share an entry from my personal collection for those new to SAP User Administration...

SAP User Administration

This document is intended to help with basic SAP user administration functions (creating, copying, changing and dropping users). Keep in mind that all user changes are client-dependent, meaning that the changes made to users in one client on a system will not be reflected in the other clients on that system.

Create a User
Before you create a new user, you will have to decide on a User ID for that user. The user name should follow whatever naming convention in place at your company, but it is most commonly a combination of the user’s first initial and last name or first name and last initial. Remember that it is a violation of the SAP license to create generic users, or user ID’s that more than 1 person has access to login as. The steps for creating a user are as follows:
1. In transaction SU01, enter the user ID in the user field that you wish to create.
2. Hit the Create button (F8).
3. Enter the user information in each tab.
4. Save
There are nine information tabs that you can enter information about the user in. The only requirements to create a user are an entry in the Last Name field on the Address tab, and a Password on the Logon Data tab. You can choose to have these users as detailed or basic as you like.
The tabs in the Maintain User screen are as follows:
Address: Personal, Communication, and Company information about the user.
Logon Data: Alias information, User type, Password, Groups, Validity period, and cost center information.
Default Data: Start menu, Language, decimal/date formats, default printing device, time zone.
Parameters: Certain fields in SAP transactions can have a default value set for a user, this is tracked here.
Roles: Authorization roles assigned to this user will populate here, but this is not the correct place to add a user to a role.
Profiles: Authorization profiles assigned directly to this user. An authorization role is made up of one or more authorization profiles.
Groups: All groups, if any, that this user is assigned to will show up here.
Personalization: Advanced settings for user personalization.
License Data: Contractual user type is set here, but is not necessary.

Copy a User
If you have a new user to create, but you want to make him a copy of an existing user, you have the capability to do just that. When copying a new user you can choose to copy as much or little data as you wish, depending on which tabs you want to copy. The steps are as follows:
1. In transaction SU01, enter the user ID in the user field that you wish to create.
2. Hit the Copy button (Shift + F5).
3. Enter the user you wish to copy from and to.
4. Select the tabs that you wish to copy.
5. Enter, set the Last Name and Password
6. Save

Change a User
Making a change to a user is simple after you know how to create and copy users. The steps are as follows:
1. In transaction SU01, enter the user ID in the user field that you wish to create.
2. Hit the Change button (Shift + F6).
3. Make the desired user information changes in each tab.
4. Save

Drop a User
When somebody leaves the company or no longer needs access to SAP, there are several ways you may lock access to the user:
Lock the user: In transaction SU01, enter the user name and hit the lock/unlock button (Ctrl + F5)
Set an expired validity date: In the Logon Data tab under transaction SU01, there is a field called Validity Date. In here you can assign a date in the past that invalidates the user and prevents him from logging in.
Delete the user: In transaction SU01, enter the user name and hit the delete button (Shift + F2)
Typically when a user leaves a position or no longer needs access to SAP, somebody else needs an equivalent level of access to fill that position. If this is the case, you do not want to delete the current user account; otherwise you will have to create the new user from scratch rather than copying the old user. It is recommended that you use one of the first two options to deny login rights to the existing user, but keep the user account in the system in case you want to copy it. After an acceptable period of time has passed and the position has been filled, then you can clean up the system and delete out old user accounts.

Thursday, May 8, 2008

SAP Adobe Document Services (ADS) Issues...

For the past several days, I have been struggling with an issue at a client site with configuring Adobe Document Services (ADS). After following all the configuration guide steps meticulously, I was still unable to get the thing to work correctly.

To make a really really long story short: always verify the Java support pack level is appropriate and that the ADS version is current. After pulling much of my increasingly-gray hair out, it was suggested by a colleague that I verify the SP levels on the Java AS. Okay! Kudos to her. That fixed it!

So, if you ever find you are having trouble with ADS, make sure to check the Java SP and ADS version first, and save yourself the headache of fruitless troubleshooting...

Hope this helps someone out there.

Tuesday, April 29, 2008

SAP Backup/Recovery Planning...

SAP Backup/Recovery Planning

In order to protect your SAP systems, it is recommended that full and transactional backups be created regularly and kept separate from the system hardware, preferably in a remote location.

Full Backups
A full backup contains the entirety of the database at a given point in time. In the event of a hardware failure or data corruption, it is necessary to have a full backup of the database to restore. The main benefit of having a full backup available for restore is obvious: your company does not have to lose critical business data in the event of a failure. It is recommended that a full backup be taken at least once daily.

Transactional Backups
Full backups alone are not sufficient for most businesses. If a failure occurs just before or during a full backup, then data created or altered since the prior backup will be lost. Transactional backups are designed to save the changes made to a database after full backups are taken, that way those changes are protected. If your backups are setup to run daily at 12:00 AM, and you have transactional backups every hour, then if a failure occurs at 11:59 PM, you potentially would only lose 59 minutes worth of productive changes. Depending on your business requirements, transactional backups can be taken as frequently as you need. It is recommended that transactional backups be taken every 15 minutes for a production system.

Multiple Points of Failure
Taking full and transactional backups, however, does not mean that your data is sufficiently protected. If your backups are stored on the same physical device that houses the database, they can be subject to the same hardware failure that can corrupt or destroy the database. If your backups are on the same array as the data, and the array is lost, then you have lost both your live data and your backups, making your data unrecoverable. If your backups are on a different array, but still attached to the same server as the database, a server loss will potentially make your system unrecoverable. This is where the concept of multiple points of failure comes into play. You do not want any single event to be able to make your SAP system unrecoverable. The ideal scenario is for your database backups (both full and transactional) to be written to tape and taken to a secure remote location so that the live data and the backups are less likely to be destroyed in a single event, like a power surge or even acts of nature such as a flood or tornado.

Recovery Planning
No matter how extensive your backup scenario is, it is useless if there is not a recovery plan in place. Your company needs to have a recovery plan in place and periodic recovery tests need to be performed so that documentation is kept updated and the validity of the backup/recovery scenario is verified. It is recommended that recovery scenarios be tested and updated at least once annually.

Hope this helps...

Monday, April 28, 2008

SAP Java ConfigTool...

Since most of you know my experience with Java is very limited, it shouldn't surprise you that I was just recently introduced to the Java ConfigTool for SAP.
A client was having issues with some of the Java process dropping off while SAP was running, so I opened a customer message for them.
The solution was to change the Global Server Config -> Managers-> ClusterManager-> ms.confirmation.timeout parameter inside the ConfigTool.
The ConfigTool can be found here:
usr\sap\\\j2ee\configtool\configtool.bat

Hope this helps.

Thursday, April 24, 2008

SAPGUI Logon Screen Message...

You want to display a customer-specific text on the SAPGui logon screen?

Go to Transaction SE61and select the document class General Text (selection using F4 help), and create a text with the name ZLOGIN_SCREEN_INFO in the system language determined with the profile parameter zcsa/system_language. If the text does not exist in the system language, no output is made. Note that there is space on the logon screen for 16 lines for every 45 fixed-font characters or for approximately 60 proportional font characters. Title lines (can be recognized by format keys starting with a 'U') are highlighted in the display. You may also output icons at the beginning of lines by using an icon code (for example, @1D@ for the STOP icon). You can get a list of icon codes from Report RSTXICON. Pay attention to the codes with two '@' symbols displayed by the report. You cannot include text symbols. The function 'include character' cannot be used.
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 The text can be changed in the original system only (see TADIR entry R3TR DOCT ZLOGIN_SCREEN_INFO). When making a change in a non-original system, a modified text would be generated which cannot be represented sensefully on the initial screen.

Try this example text on for size:

Client 100: Development/Customizing
Client 200: Unit Test
Client 900: Sandbox

@1A@ Warning.
You are about to logon to the Development System for
COMPANY NAME

Unauthorized Access is Prohibited.

If you encounter any problems, please
contact your System Administrator.

Thursday, March 20, 2008

TP.exe (or STMS) Hangs While Importing or Adding Transports to the Buffer...

There are many reasons why TP.exe (the underlying executable that STMS calls on the OS) may hang while trying to make changes to one of the system transport buffers. The reason we came across yesterday was this: there was something corrupt inside the usr/sap/trans/tmp directory. Now, the tmp directory contains a lot of really important stuff for TP.exe, and then again it also can contain a lot of unnecessary junk. I DO NOT recommend deleting this directory. In fact, the best way to fix this is to simply rename that directory and create a new, empty tmp directory, then attempt to manipulate the buffer again with the TP.exe commands or transaction STMS. The tools will work fine with an empty tmp directory, but if you are interested in finding out what file caused this problem you can always copy the files from the original directory one-by-one and run test commands each time to single out which file is the culprit. But I don't have time for any of that. I just left the old tmp directory (now name tmp_old) in place and went about my busy little life.

Hope this helps...

DTS Packages in SQL2005...

Have DTS packages in SQL2000 and now your are upgrading to SQL2005?
I know, I know... the "correct" answer (according to Microsoft) is to migrate all DTS packages into SQL Server Integration Services packages, but... The migration tool is less than stellar, and the Microsoft Visual Studio tool is much more complex and complicated than the simple flowchart-style DTS package editor window. Unless you have a developer on hand to dedicate to the manual migration and translation of DTS packages into SSIS packages, perhaps you may want to take another route.
First, you will want to install the Microsoft SQL Server 2000 DTS Designer Component for SQL Server 2005, which can be found here: DOWNLOAD.
Next, export your DTS packages. This will create neat, simple files on the OS that you can cut and paste wherever you like.
Then, in the Microsoft SQL Server Management Studio go to the server you want to put the package on, navigate to Management -> Legacy -> Data Transformation Services, right click in the results window and select Import Package File (which you just exported in the previous step).
Finally, right click on the imported package and choose the "open" option to edit the package in the oh-so-familiar DTS Editor window.

Now you have your DTS packages on your SQL Server 2005 instance, and a warm fuzzy for knowing you haven't lost the years of blood, sweat and tears that went into creating them.

Now, if you would like to schedule these packages to run as a SQL Job, it is pretty simple.
Just create a SQL Job that calls an external command, and have it execute DTSRun.exe. If you go to a command prompt and type in DTSRun.exe -help it will give you a list of the parameters you can feed it, like what server to run it on, what user context to use and which package to execute.

Hope this helps...

Thursday, March 13, 2008

Cannot Send Transports Due to "TP Import is Running" Error...

We used to see this problem fairly frequently when we were using the command line to send all transports, but when SAP unveiled STMS this problem all but disappeared. That is until we saw it again this week. We had a scheduled transport job that started about 1 minute before we had to take down a system for emergency hardware maintenance. When we brought it back up, lo and behold the little truck was still showing on the front of our system transport queue and we could not send any new transports to that system. "TP Import is Running"

So I had to dig into the old file cabinet to find the cure.

Inside the DB there is a table called TPSTAT. This table contains information about import requests in the system. If any row has a value of 'R' in the STATUS field, TP is rendered inoperable. Change the value to 'F' or delete the row altogether in SM30 or through a SQL query at the Database level and you will be ready to go.

Upgrade to ECC 6.0 Fails at step PARCONV_UPG

If you are upgrading from 4.6c to ECC 6.0 AND are moving to BASIS SP12, you will have problems in the PARCONV_UPG phase of the upgrade. SAP recommends that you not upgrade to BASIS SP12, but rather go to that SP level either before or after the upgrade. If you are in the middle of the upgrade, then you must implement the corrections referenced in the following two notes: 1069463 and 1042435. In 1069463 you simply run a script that creates some database objects that the upgrade phase needs in order to complete, and note 1042435 is a set of changes that R3Trans.exe makes using a data file that you download.

Good Luck!

Wednesday, March 12, 2008

Change the Transport Number Range

When upgrading an SAP Environment, it is most commonly done over an extended period of time. During the process of dual maintenance it can be difficult to keep up with transport numbers for both the original system and the upgraded system. To help take the edge off a little, there is a way to tell the upgraded system to start from a higher number so that the upgrade transports are more easily identified.
You need to update the entry for TRKORR in table E070L to the next number that you want a new transport to have.
If your old DEV environment is assigning numbers in the DEVK930000 range, perhaps change the new environment to start at DEVK940000. This way you know that all transports in the DEVK940000 range are for the upgraded system.

Tuesday, March 11, 2008

I/O Device Error Using SQL Backup

Friends and Neighbors,
We recently implemented new HP Ultrium 448 stand-alone tape drives for use in our backup solution for SQLServer 2000 on Windows 2000 Advanced Server. The Ultrium 448 is slated to soon replace the Ultrium 460 (which we had deployed in our environment) so we thought we would be pro-active and deploy the new drives before the old drives reached end of life. Immediately upon installation we started getting the following errors while trying to access these drives using SQLServer:

  • “BackupMedium::ReportIoError: write failure on backup device '\\.\Tape0'. Operating system error 1117(The request could not be performed because of an I/O device error.).”

    “Executed as user: SAPDOM\SQLServer. Write on 'Tape1' failed, status = 1117. See the SQL Server error log for more details. [SQLSTATE 42000] (Error 3202) BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013). The step failed.”

The same drives, however, were operating just fine using Symantec BackupExec software.

To make a long story short, it turns out that the Ultrium 448 drives will run using any drivers provided by HP for the Ultrium2 family, but in order for SQLServer to recognize them they must be running with the HP Ultrium 2 drivers dated 03/02/2007 or later, and the driver installation must be followed by a system reboot (whether it prompts you to or not.)

The moral of the story: When replacing a tape device, test all products that will be accessing that device before deploying it, and figure in some downtime for reboots.

I hope this saves some of you headaches in the future.

Monday, March 10, 2008

Dual Maintenance for Upgrades

When performing and upgrade, it usually takes several months from the time the upgrade begins in the development system until the time the upgrade completes in the production system. During that time, it is often necessary to make changes in order to conduct day-to-day business, so freezing the transport system throughout the upgrade process is not practical. In order to facilitate change management during the upgrade, a process of dual maintenance must be introduced.

  1. Upgrading the Development System:
    a. Rename the 4.6c DEV system (from SAPDEV to DEVOLD) and build the ECC 6.0 DEV system on new hardware.
    b. The 4.6c DEV system will still be used to changes and transports within the 4.6c environment.
    c. Any changes made to the 4.6c DEV system will also need to be made to the ECC 6.0 DEV system, so that functionality used by the business is not lost after the upgrade. Since transports cannot be sent between a 4.6c system and an ECC 6.0 system, the changes must be manually applied to the upgrade system and saved in the transport queue for the ECC 6.0 environment until the upgraded TST system is built.
  2. Upgrading the Test System:
    a. Rename the 4.6c TST system (from SAPTST to TSTOLD) and build the ECC 6.0 TST system on new hardware.
    b. All transports created in the ECC 6.0 DEV system will need to be sent to the ECC 6.0 TST system.
  3. Upgrading the Production System:
    a. Rename the 4.6c PRD system (from SAPPRD to PRDOLD) and build the ECC 6.0 PRD system on new hardware.
    b. All transports created in the ECC 6.0 DEV and sent to the ECC 6.0 TST system will need to also be sent to the ECC 6.0 PRD system.

After the ECC 6.0 PRD System is in place and in productive use the hardware used for the 4.6c DEV and TST systems can be decommissioned and put to use elsewhere in the business. The 4.6c PRD system will need to be kept available offline for 30 days before being decommissioned.

Thursday, March 6, 2008

SAP Logical Spool Servers

A somewhat new functionality that is available for SAP printing is the concept of the Logical Spool Server. It goes a little like this: if one of your main spool server kicks the bucket, it is a very painful process to move all of the print devices to a different server in order to facilitate printing until that spool server becomes available again. The Logical Spool Server is a logical destination inside SAP that devices can be directed to which in turn directs spool requests to actual Spool Servers, including a primary and alternative server. If the primary spool server crashes, the spooling will be switched over to the alternative server. If the alternative server is also down, pushing the spooling duties onto yet another server is handled by simply modifying the Logical Spool Server rather than modifying each individual printing device. Also, the Logical Spool Server can be configured for load balancing so that print jobs are handled by either the primary or alternative server depending on the workload of either.
  • To set up a Logical Spool Server, run transaction SPAD.
  • Under the Devices/Servers tab, select the Spool Servers button.
  • Go into Change mode by selecting the "pencil" icon from the toolbar.
  • Choose the Spool Server -> Create option, name the server and select the Logical Server box and the Load Balancing box.
  • Enter your preferred mapping server and alternate server and you're done.
  • Now all you have to do is assign your print devices to this Logical Spool Server.
  • Give yourself a pat on the back.

Thursday, February 28, 2008

Restore QAS from PRD backup

You can script it like this:

RESTORE DATABASE QAS
FROM Tape0, Tape1, Tape2
WITH NORECOVERY,
FILE = 4,

MOVE 'PRDDATA1' TO 'H:\DATA1\QASDATA1.MDF',
MOVE 'PRDDATA2' TO 'H:\DATA2\QASDATA2.NDF',
MOVE 'PRDDATA3' TO 'H:\DATA3\QASDATA3.NDF',
MOVE 'PRDDATA4' TO 'H:\DATA4\QASDATA4.NDF'

RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251240.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251410.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251425.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251440.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251455.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251510.TRN' WITH NORECOVERY;
RESTORE LOG TS2 FROM DISK = 'Q:\FROM_PRD\PRD_tlog_200801251525.TRN' WITH RECOVERY;


-- "Tape0, Tape1, Tape2" is the device that the backup is being restored from. In this case, three tape drives in parallel.

-- The MOVE statements tell SQL Server where the original DB files from PRD will now be located on the QAS server.

-- The Q:\ drive here is a location that contains the transaction logs copied over from the PRD system.

-- Always make sure you use the NORECOVERY option in every step before you are finished applying logs, and use the RECOVERY option with the last log you want to apply. Once you use the RECOVERY option, no more logs can be applied and a new CHECKPOINT is set in the DB, so make sure you get it right the first time.

Wednesday, February 20, 2008

ST03 Performance monitoring in ECC 6.0

Starting in ECC 6.0, SAP changed the programs used to populate performance data tables for transaction ST03. The following programs are now being used: SWNCCOLL, SWNCTOTAL and SWNCREORG. Make sure that you have scheduled jobs that run these programs with the following frequency:
  • SWNCCOLL - Hourly, 7 days a week
  • SWNCTOTAL - Once daily, 7 days a week
  • SWNCREORG - Every 3 hours, 7 days a week

Tuesday, February 19, 2008

SQLServer Reorg Necessary?

If you are coming from an Oracle environment, the term "reorg" is a big deal. In an Oracle DB, if you have done any archiving, a full reorg of the affected tables would have to be performed in order to utilize the space freed up by archiving. This is not so in SQLServer 2000 and above (and I believe SQL 7 as well). SQLServer will automatically utilize the free space in a datafile at the block level so that reorgs are not necessary to regain free space.

Now, if you are performing a reorg in order to increase performance, you should consider ordering your data in such a way that SQLServer spreads the data across all datafiles evenly. All datafiles would then have a somewhat equal portion of High and Low I\O rows, thus optimizing overall performance.

It is possible to manage performance at the table level and assigning tables to specific datafiles that you have placed on a faster array, but this level of granularity is likely more work than it is worth.

Friday, February 1, 2008

Mass Locking/Unlocking Users in SAP

Create the following report and execute it with the a list of users you do not want locked in the sapmnt\IGNORE_USERS_.txt and it will generate a list of locked users in sapmnt\LOCKED_USERS_.txt:


REPORT ZLOCKUSR.

TABLESUSR02.

PARAMETERSFUNCT_(1TYPE C DEFAULT SPACE.

PARAMETERSIGNOR_(65TYPE C DEFAULT
'\\SAPSID\sapmnt\ignore_users_CLI.txt',
LOCKD_
(65TYPE C DEFAULT
'\\SAPSID\sapmnt\locked_users_CLI.txt'.

DATAYULOCK TYPE X VALUE '80'"Gesperrt durch Falschanmeld.
      YUSLOC 
TYPE X VALUE '40'"Gesperrt durch Administrator

DATAMESSAGE_TITLE(40),
      MESSAGE_TEXT
(60),
      NUM_LOCKED 
TYPE I.

DATAUSER LIKE USR02-BNAME.

DATABEGIN OF IGNORE_TAB OCCURS 0,
BNAME 
LIKE USR02-BNAME,
END OF IGNORE_TAB.

DATALOCKED LIKE USR02-BNAME,
UNLOCKED 
LIKE USR02-BNAME,
ANSWER 
TYPE C.

INITIALIZATION.
REPLACE 'SAPSID' WITH SY-HOST(5INTO IGNOR_.
REPLACE 'SAPSID' WITH SY-HOST(5INTO LOCKD_.
REPLACE 'CLI' WITH SY-MANDT INTO IGNOR_.
REPLACE 'CLI' WITH SY-MANDT INTO LOCKD_.

START
-OF-SELECTION.
PERFORM MAIN.


USER 
'ZUSER'.


*&---------------------------------------------------------------------*
*& Form MAIN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAIN.
PERFORM CHECK_FUNCTION.
* perform status_message.
ENDFORM" MAIN
*&---------------------------------------------------------------------*
*& Form CHECK_FUNCTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_FUNCTION.
CASE FUNCT_.
WHEN 'L'.
PERFORM LOCK_USERS.
WHEN 'U'.
PERFORM UNLOCK_USERS.
WHEN 'l'.
PERFORM LOCK_USERS.
WHEN 'u'.
PERFORM UNLOCK_USERS.
WHEN OTHERS.
PERFORM STATUS_MESSAGE.
ENDCASE.
ENDFORM" CHECK_FUNCTION
*&---------------------------------------------------------------------*
*& Form LOCK_USERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOCK_USERS.
MESSAGE_TITLE 
'Warning!'.
MESSAGE_TEXT 
'Users not in file will be locked.'.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION 
'Y'
TEXTLINE1 
MESSAGE_TEXT
TEXTLINE2 
'OK to proceed?'
TITEL 
MESSAGE_TITLE
IMPORTING
ANSWER 
ANSWER
EXCEPTIONS
OTHERS 1.
IF ANSWER 'J'.
NUM_LOCKED 
0.
CLEAR IGNORE_TAB.
REFRESH IGNORE_TAB.
OPEN DATASET LOCKD_ FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
OPEN DATASET IGNOR_ FOR INPUT IN TEXT MODE ENCODING DEFAULT.
READ DATASET IGNOR_ INTO IGNORE_TAB.
IF SY-SUBRC 0.
DO.
APPEND IGNORE_TAB.
READ DATASET IGNOR_ INTO IGNORE_TAB.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
ENDDO.
ENDIF.
SORT IGNORE_TAB.
SELECT FROM USR02 WHERE BNAME NE 'SAP*'
AND BNAME NE 'DDIC'
AND BNAME NE 'SAPCPIC'.
READ TABLE IGNORE_TAB WITH KEY USR02-BNAME BINARY SEARCH.
IF SY-SUBRC NE 0.
IF USR02-UFLAG YULOCK AND USR02-UFLAG YUSLOC.
PERFORM LOCK_USER(SAPMS01JUSING USR02-BNAME.
NUM_LOCKED 
NUM_LOCKED + 1.
LOCKED 
USR02-BNAME.
TRANSFER LOCKED TO LOCKD_.
ENDIF.
ENDIF.
ENDSELECT.
CLOSE DATASET LOCKD_.
MESSAGE_TITLE 
'Information'.
MESSAGE_TEXT 
' Users Locked'.
MOVE NUM_LOCKED TO MESSAGE_TEXT(5).
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL 
MESSAGE_TITLE
TXT1 
MESSAGE_TEXT
TXT2 
SPACE
EXCEPTIONS
OTHERS 1.
ELSE.
EXIT.
ENDIF.
ENDFORM" LOCK_USERS

*&---------------------------------------------------------------------*
*& Form UNLOCK_USERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UNLOCK_USERS.
REFRESH IGNORE_TAB.
CLEAR IGNORE_TAB.
MESSAGE_TITLE 
'Warning!'.
MESSAGE_TEXT 
'Users in file will be unlocked.'.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION 
'Y'
TEXTLINE1 
MESSAGE_TEXT
TEXTLINE2 
'OK to proceed?'
TITEL 
MESSAGE_TITLE
IMPORTING
ANSWER 
ANSWER
EXCEPTIONS
OTHERS 1.
IF ANSWER 'J'.
OPEN DATASET LOCKD_ FOR INPUT IN TEXT MODE ENCODING DEFAULT.
READ DATASET LOCKD_ INTO IGNORE_TAB.
IF SY-SUBRC 0.
DO.
APPEND IGNORE_TAB.
READ DATASET LOCKD_ INTO IGNORE_TAB.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
ENDDO.
ENDIF.
SORT IGNORE_TAB.
LOOP AT IGNORE_TAB.
SELECT SINGLE FROM USR02 WHERE BNAME IGNORE_TAB-BNAME.
IF SY-SUBRC EQ 0.
* if usr02-uflag o yusloc.
PERFORM UNLOCK_USER(SAPMS01JUSING USR02-BNAME.
NUM_LOCKED 
NUM_LOCKED + 1.
* endif.
ENDIF.
CLOSE DATASET LOCKD_.
ENDLOOP.
MESSAGE_TITLE 
'Information'.
MESSAGE_TEXT 
' Users UnLocked'.
MOVE NUM_LOCKED TO MESSAGE_TEXT(5).
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL 
MESSAGE_TITLE
TXT1 
MESSAGE_TEXT
TXT2 
SPACE
EXCEPTIONS
OTHERS 1.
ENDIF.
ENDFORM" UNLOCK_USERS

*&---------------------------------------------------------------------*
*& Form EXIT_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXIT_MESSAGE.

ENDFORM" EXIT_MESSAGE
*&---------------------------------------------------------------------*
*& Form STATUS_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM STATUS_MESSAGE.
CLEAR MESSAGE_TEXT.
MESSAGE_TITLE 
'Information'.
MESSAGE_TEXT 
'Please enter U (unlock) or L (lock)'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL 
MESSAGE_TITLE
TXT1 
MESSAGE_TEXT
TXT2 
SPACE
EXCEPTIONS
OTHERS 1.

ENDFORM" STATUS_MESSAGE