Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
HeaderLight: #4BBFC3
HeaderDark: #4BBFC3
Error: #f88
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

Also see [[AdvancedOptions]]
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox where print preview displays the noscript content */
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
How To Run /SDF/MON To Collect and Display performance snap hots.

This can be very usefull in a situation where you require performance troubleshooting as you can see exactly what was running when, how much memory/cpu utilization etc. Run transaction /SDF/MON or go to SA38 and execute job /SDF/MON.
Fill in the desired parameters like the duration of the analysis and the interval for the snapshot and execute
Once this is done go back to /SDF/MON and click on EXECUTE
Double click on the line to access the MONITORING DATA page.
On this page you can double click on the DIA/CPU/FREE MEM etc. to get and overview of what was running on the system at that exact time.

The data is stored in a couple tables (prefix ''/sdf/*'') and can be cleaned up by running report /SDF/MON_REORG (Job SNAPSHOT MONITORING REORG), which has been part of the standard jobs since NW 710 SP1.
302 Found

The requested resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests.  This response is only cacheable if indicated by a Cache-Control or Expires header field.

The temporary URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s).

If the 302 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

Note: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request.  However, most existing user agent implementations treat 302 as if it were a 303 response, performing a GET on the Location field-value regardless of the original request method. The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected of the client.

You can determine whether a SAP system is Unicode as follows:

1) Using System - Status
This method is the usual one available to all SAP ABAP users using the SAPGUI user interface; Just click //System - Status // and look under ''SAP System Data''

2) Create an RFC destination from a SAP system to any system that you wish to test. Perform a Unicode test from within the RFC destination. If you get 1 byte returned then the target is a non-Unicode system. If the value is 2 bytes, then the target system is a Unicode system.
3) Run ABAP report RSCPINST, it shows on the right side of the screen either Unicode or (Latin 1 or MDMP => non-unicode).

4) From the operating system command line as sidadm:
{{{disp+work -v|more}}}

5) If you have no access to the operating system level, you can use ABAP report: RSBDCOS0
During support situations you might often be asked to upgrade the executables of your system (often called kernel) to a current release.
Here are several methods to determine the version of an SAP executable. Only the first two require a working ABAP system.
''1. Using transaction SM51''
Transaction SM51 provides the list of ABAP servers in your SAP System. It also provides a Release Information Push Button which delivers you the output of method 5.

This method does only deliver the release information of disp+work.exe . Some other executables (all contained in dw.sar) are based on disp+work.exe and will have the same version - if not the system will not start at all. This method need administrative rights within the ABAP System.
''2. Using System - Status'' 
This method is the usual one available to all SAP ABAP users using the SAPGUI user interface.
Just click System - Status - and the Other Kernel Info Button (yellow arrow).

''3. Using SAPMMC''
Right-click on System - Instance - All Tasks - Version Info
a new Dialog box will appear and show you the versions of some selected executables:

''4. Using sapcontrol.exe''
If you prefer the command line, have access to ABAP report RSBDCOS0, line tools or need a command line tool output for scripting there is a second method available in sapcontrol.exe:
./sapcontrol.exe -prot PIPE -nr 01 -function GetVersionInfo  

The previous methods have the disadvantage, that you need a running sapstartsrv.exe (or SAP<SID>_<NR> Windows Service) in order to get this information. In situations where the service did not start - or you have some executables in a working directory where you are interested in the version information, they will not help you.
''3. Using Windows Explorer''
Navigate to the ...\DVEBMGS01\exe or ...\D01\exe directory, right-click on the executable of your interest an press Properties:
Unfortunately Microsoft has removed some information in the Details Tab as of Windows Server 2008. Only in Windows Server 2003 you can use this method to find out whether this executable is an EXT one or not.
''4. Using Windows Powershell''
using powershell to retrieve the full version information for a single Executable:
(dir disp+work.exe).VersionInfo | Format-List -Property *  

or for multiple files in a directory:
(dir *.exe,*.dll).VersionInfo | Select-Object FileName, ProductVersion  
This last method has the advantage that you can see at a glance whether you are running with mixed versions or not. The kernel executables are delivered in two main packages: SAPEXE.SAR and SAPEXEDB.SAR. These two packages are delivered in the 720 code line as stack kernels 3-4 times a year. Stack kernels do have patchlevel numbers 100,200,300,... However, it is common to upgrade parts of the kernel (R3trans and tp, for example) separately from upgrading the rest of the kernel.
When updating a kernel you should therefore unpack the last stack kernel (sapexe and sapexedb) followed by the last dw.sar, libdbsl.sar and possible other executable specific archives. Following this rule you will never end up with a version mix like this one:
disp+work.exe PL 514, dbmssslib.dll PL 100 and r3trans.exe PL 525
''5. Using command line parameter -v''
The last method shown here is to invoke the executable with -v parameter.
./disp+work.exe -v  
Not all SAP executable will show there version information when invoked from command line. On Windows method 3 or 4 is more reliable. The disp+work.exe -v method has the advantage that it also delivers information about the corrections supplied with this kernel: a list of SAP Notes describing the fixes contained in this kernel is appended to the release information. All SAP Notes listed here are supposed to be fixed.
[[ABAP Syntax Highlighting in Notepad++]]
[[Edit / Create an ABAP object without a Developer Key]]
[[ABAP Debugging Tips]]

[[EXCEL to ABAP Dates]]
[[IDOCS Summary]]
[[How To Find Associated User Exits for a T-Code]]
[[Transporting Program Variants]]
[[Use SE11 to download Data Dictionary structure into local file]]
[[Next Generation ABAP Runtime Analysis (SAT) – How to analyze program flow|]]
[[Do SAT trace on applications which could not be launched by SAT|]]
[[Send an Email with a PDF Attachment]]

[[Simplest ALV Code]]
[[Simple OOPS ALV with Docking Container]]

Below is the ABAP code to produce a list of icons including what they look like, name and code.
*& Report  ZICONS                                              *



   WRITE:   /(5) <F>, 20 '@',21 ICON-ID+1(2),23 '@',ICON-OLENG,
__''Debugging popups''__
Create a file  debug.txt and save it on desktop.
resize your SAPGUI screen and move th file around your desktop so that you can see both. Execute your transaction. When you get to the popup, drag the file and drop it on to the popoup

__''External Debugging of another user''__
SAP introduced this functionality with particular kernel levels. Permission must be granted by the 'target' user'. In other words, for user-A to debug user-b, then 
#''user-A'' defines an appropriate breakpoint via SE80  /SE37 / SE38
#''user-A'' must maintain user-B's id in the External Debugger username  via SE80  /SE37 / SE38, menu path Utilities, Settings, and the ABAP Editor, Debugging tabs
#''user-B'' specifies ///hext user = user-B// (note correct use of spaces)

More details
[[SAP Note 1919888|]]
kernel 7.21 pl 138
kernel 7.40 pl 46
kernel 7.41 pl 14
kernel 7.42 pl 315
kernel 7.45 sp 28
[[842635 - Session Management for Web Dynpro Applications|]]
[[1458171 - Cross Site Request Forgery Protection for BSP|]]
[[1481392 - Cross Site Request Forgery Protection for ITS|]]
# Download [[ABAP.xml|ABAP.xml]]
# Open Notepad++, go to Menu Path Language > Define your language, and click on Import button.
# Choose ABAP.xml file, you should get popup ‘Import successful’.
# Restart Notepad++

Testing (2 methods)
# Put abap code in text file with extension .abap, and open it in Notepad++.
# Put abap code in text file with any other extension, then go to Menu > Language > ABAP
|!Table |!Description|
|USR01 |User master record (runtime data) |
|USR02 |Logon Data (Kernel-Side Use) |
|USR03 |User address data |
|USR04 |User master authorizations |
|USR05 |User Master Parameter ID |
|USR06 |Additional Data per User |
|USR07 |Object/values of last authorization check that failed |
|USR08 |Table for user menu entries |
|USR09 |Entries for user menus (work areas) |
|USR10 |User master authorization profiles |
|USR11 |User Master Texts for Profiles (USR10) |
|USR12 |User Master Authorization Values |
|USR13 |Short Texts for Authorizations |
|USR14 |Surchargeable Language Versions per User |
|USR15 |SAP Table - External User Name (Replaced By Table USRACL) |
|USR16 |Values for Variables for User Authorizations |
|USR20 |Date of last user master reorganization |
|USR21 |User Name/Address Key Assignment |
|USR22 |Logon data without kernel access |
# Copyright (c) 1993-2009 Microsoft Corp.
# Regularly check the standard HOSTS file provided by Amazon
#          AWS -- STANDARD       localhost
::1             localhost
#          AWS  -- END
#          BASISSAP.COM -- START
#          BASISSAP.COM -- Sydney      solman71      nw731      nw731-2012       nw740 
#          BASISSAP.COM -- END
#          HANA -- START
#          HANA -- Singapore	imdbhdb
#          HANA -- END
1) In transaction SICF, locate the services listed below, by path, and activate them - make sure you select the '2nd yes' to activate the underlying services as well

2) In transaction SE80, locate, via the menu, ''Utilities > Settings'' and find the ''Internet Transaction Server''.
On the ''Publish'' tab, check that ''Integrated ITS'' is selected.
For earlier releases, check ''On Selected Site'' and set it to ''INTERNAL''.

This restricts the publication in the next step to the integrated (internal) ITS.

3) Still using SE80, 
locate the Internet Service ''SYSTEM''
Publish the Internet Service with the Context Menu ''Publish -> Complete Service''
locate the Internet Service ''WEBGUI''
Publish the Internet Service with the Context Menu ''Publish -> Complete Service''

4) Now Browse to [[http://<server>:<icmport>/sap/bc/gui/sap/its/webgui/!|http://<server>:<icmport>/sap/bc/gui/sap/its/webgui/!]] and login to the webgui.

As an alternative, in transaction SICF, find the ''webgui'' service and select ''Test Service'' from the context menu.  This will fire off the appropriate URL in your default browser, which you can bookmark.
[[OSS Note 1088717|]] 
Several services may be executed when you call a URL, so you must activate all *service* nodes in the SICF tree. As a result, the URL path is represented in ICF subnodes (services). If, for example, you want to activate services for the URL ''/sap/public/icman'', you must activate the service tree default_host in transaction SICF. You must then activate the individual services sap, public and icman.

An alternative is to use the report ''rsicf_service_activation'' to activate a group of ICF nodes that can be predefined. When you execute this report, you can use the following predefined groups (technical name):
      Group for the Web Dynpro ABAP development. Note that this setting is not supported for production operation.
      Group for test applications. Note that this setting is not supported for production operation.
For the Android code, see

For building the API key, you need to get your SHA1 key from the Android key-store. I have included the windows code to do this below. When the ''keytool'' program asks you for the key-store password, enter ''android''

Note that for a default install of Android windows, for Windows, the keystore is usually called ''C:\Users\<user name>\.android\debug.keystore'', and in unix systems it usually called ''~/.android/debug.keystore''

c:\>cd %HOMEPATH%\.android
C:\Users\????\.android>keytool -exportcert -alias androiddebugkey -keystore debug.keystore -list -v
Enter keystore password:
Alias name: androiddebugkey
Creation date: 10/09/2014
Entry type: PrivateKeyEntry
Certificate chain length: 1
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 7035b798
Valid from: Wed Sep 10 12:09:53 EST 2014 until: Fri Sep 02 12:09:53 EST 2044
Certificate fingerprints:
         MD5:  27:28:EF:F8:21:CA:44:B6:FF:78:70:A4:40:8D:AD:4D
         SHA1: 67:32:99:45:9C:28:A5:02:DA:2B:DA:EF:94:4E:EF:20:5B:6B:CC:3E
         SHA256: 27:FD:B4:B7:32:C9:33:3C:1E:6C:BF:33:39:23:95:72:D8:6B:47:E4:5E:D3:8C:57:A2:88:59:7F:B0:85:4F:E3
         Signature algorithm name: SHA256withRSA
         Version: 3


#1: ObjectId: Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: DF 78 F9 E6 D6 F5 27 90   7C 3B 6C 6A 96 BB F5 CF  .x....'..;lj....
0010: 97 BE B4 B2                                        ....


The SHA1 key we get needs to be combined with the package name of our app. In the ''androidManifest.xml'' of your app, you will see that the first two or three lines will contain something similar to 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""
    package="com.example.application" >
This indicates that our package name is "com.example.application". This means the full signature of this app will be {{{67:32:99:45:9C:28:A5:02:DA:2B:DA:EF:94:4E:EF:20:5B:6B:CC:3E;com.example.application}}}
This is the signature that Google will ask for in order to give us the API key.

Now request the API key from the [[Google.API Console|]]
APIs & auth --> credentials
Apart from editing a menu in transaction PFCG, you can also add a custom menu in the main SAP Menu via the SAP Area Menu Transaction SE43.

Transaction SE43 -> Area menu: Z_EXAMPLE
Press “change” and position cursor on the level to add to the area menu:
[img[add node in menu 01.png]]

[img[add node in menu 02.png]]

[img[add node in menu 03.png]]

Depending on where you want the node to go, select the button “add entry as subnode” or “add entry at same level”.
[img[add node in menu 04.png]]

Enter the Text and the appropriate transaction for this node. If you want to create a folder, do not enter a transaction and press  “save”.
[img[add node in menu 05.png]]

Run the Area Menu T-code: Z_EXAMPLE. Please note, that to integrate the new Area Menu Z_EXAMPLE into the standard SAP menus, it has to be created as a sub-node in the area menu for the appropriate menu (for example, the manin menu which is 'S000').
To align a cell so that its text displays at the top rather than the center, add 


at the beginning of the cell.
* Register domain name. Your registrar ''**MUST**'' allow you to modify the DNS records

* In [[EC2|]], start / create your instance
* Go to ''Elastic IPs''
* ''Allocate Address'' 
* ''Associate IP Address'' to the appropriate instance

* In [[Route 53|]], set up *Hosted Zone*
* Select *Domain Name* then *Go to Record Sets*
* ''Create Record Set''
* Add the domain / sub domain name in ''Name'' and the IP address allocated above in ''Value''

* Return to where you registered the domain and modify the NS records to reflect those shown in [[Route 53|]].
Also known as ''Country Chart of Accounts''

This [[Chart of Accounts]] contains the GL accounts necessary to meet the specific statutory/legal requirements of a company from which a Company Code operates. 

When the operative [[Chart of Accounts]] and the Alternate [[Chart of Accounts]] are different, a link needs to be established by entering the GL account number from the Alternate [[Chart of Accounts]] in the GL master record (under the Company Code section) of the Operative [[Chart of Accounts]]  in the field Alternate Account Number.

The assignment of this [[Chart of Accounts]] to a Company Code is optional.  It is quite common that both the operative and the country chart of accounts are one and the same. In this case, you will not need two different charts of accounts.
To align a cell so that its text displays at the top rather than the center, add 


at the beginning of the cell.
Method 1:
If you have a working Solution Manager, you can approve packages without calling MOPZ.
Go to SE37 -> /TMWFLOW/MO_UI_BASKET_AUTHORIZ -> Process -> SAP-OSS -> Execute.

Method 2:
If you don't have a working Solution Manager, you can get the download basket approved by creating an incident via under component SV-SMG-MAI-APR.
[[Allocate AWS Instance to a domain / sub domain name]]
[[AWS HOSTS file]]

[[Disable IE Explorer Security Settings - Win2012]]
''Reason and Prerequisites''
The maximum number of locks in the lock table is subject to an upper limit that is set by the profile parameter enque/table_size. The profile parameter enque/table_size determines the size of the lock table in KBs. You can use transaction SM12 -> "Extras" -> "Statistics" to determine both the maximum number and current number of entries.
The lock table may overflow if:
* the lock table configuration is too small
* an application sets lots of locks
* the update hangs and, as a result, numerous locks inherited by the update task exist

Use transaction SM12 to obtain the current number and details of locks. However, SM12 only shows the current lock status. After a lock table overflow gets cleaned up, it is useful to be able to determine which lock types and which lock owners are the main contributors to the lock table overflow.

The following information is saved for the last ten lock table overflows in the file ENQHISOVR in DIR_HOME on the enqueue server. Depending on the particualar release, the may contain either or both of
* the three lock owners with the most locks
* the three lock arguments with the most locks

This has been available since 
4.6D:  1856
6.40:    21
7.xx:     0
For Android Studio, the SDK files are is located (by default) in ''%LOCALAPPDATA%\Android\android-studio\sdk''

[[Adding google maps to an Android App]]
[[Release Level of Software Components in ABAP - CVERS]]
[[You are using SAP NetWeaver 7.3 or higher and you want to support HTML5 applications/iViews.|]]
[[How can I identify the top transactions in my environment?]]
[[Portal Rendering Issues in IE]]

[[SAP NetWeaver Process Integration Performance Check - Analyzing Performance Issues and Possible Solution Strategies|]]
[[Queues issues in SAP PI and ECC system - overview and resolution]]

[[Where Used list for SE80 etc]]
[[Alternate Chart of Accounts]]
[[Business Area]]
[[Chart of Accounts]]
[[Credit Control Area]]
[[Create your own IMG Structure]]

[[IDoc Basics For Functional Consultants|]]
[[SOAMANAGER - Log retention]]

[[Organisational Units]]
- - [[User Defaults For Views and Organizational Levels]]

[[SRM-MDM “Login Failed” error]]
[[Transaction code for a SPRO node]]
[[Variant Configuration]]
Use SE37 to run function module /TMWFLOW/MO_UI_BASKET_AUTHORIZ
and approve necessary files for download. 

NOTE: This still requires a SolMan System (or access to system with the appropriate packages installed...)
NOTE: Your SAP-OSS must have the apppropriate SMP Authoriation.
If you have a classic or HA SAP Netweaver system and it either crashes more than twice or you have to restart it at least two times or if the HA software does a switchover or failover (it automatically restarts SAP), then all the developer traces and logs will be gone including all the important information. These traces and logs are necessary for root cause analysis.

You can overcome this situation.
SAP saves work folder automatically while startup
No 3rd party tool involved
Date and time of saving is part of filename
File system may overflow
You have to manually delete unnecessary archives later on
Some delay while startup procedure

Determine the START Profile of your instance, by checking in ///usr/sap/<SID>/<instance>/work/sapstart.log// what profile is responsible for starting up SAP.
Startup Profile: "/usr/sap/<SID>/SYS/profile/<SID>_D<VEBMGS><NR>_<hostname>"
Find a suitable //Execute_<NR>// line entry for this profile where <NR> is a unique, two-digit number in this profile. Increase the highest available //Execute_<NR>// by one. For example, if the current highest //Execute_<NR>// entry is:
{{{Execute_08 = <command>}}}, the entry you use will be
{{{Execute_09 = <command>}}}
Add the following line: 
Execute_09 = immediate $(DIR_CT_RUN)/SAPCAR -cfi $(DIR_INSTANCE)/work_`date +%Y%m%d_%H%M%S`.SAR -C $(DIR_INSTANCE)/work . -F "core*"
Execute_09 = immediate executes the command immediately at startup. See the documentation at [[Starting SAP Services by Making an Entry in the Instance Profile -  Configuration in the CCMS - SAP Library|]].
//$(DIR_CT_RUN)/SAPCAR -cfi $(DIR_INSTANCE)/work_`date +%Y%m%d_%H%M%S`.SAR// defines the name of archive file with a timestamp and ignores any files in use.
//-C $(DIR_INSTANCE)/work . //creates an archive with only the files of a directory.
//-F "core*"// excludes all core files (which may quite large). -F won't work with all of SAPCAR releases; run SAPCAR without arguments to get more information about known options.
{{{ls -al /usr/sap/<SID>/<instance>/ | grep -i work}}}
{{{drwxr-xr-x 3 <sid>adm sapsys    12288 Oct 14 15:19 work}}}
{{{-rw-r--r-- 1 <sid>adm sapsys 83832120 Oct 14 15:18 work_20151014_151738.SAR}}}

This is a bit more complicated, due to the different regional flavours of date and time formats.
Add the following line to the Start Profile:
Start_Program_09 = immediate cmd /c start /B $(DIR_CT_RUN)\SAPCAR -cfi $(DIR_INSTANCE)\work_"%date:.=%_%time::=%".SAR -C $(DIR_INSTANCE)\work . -F "core*"
Note: //"%date:.=%_%time::=%"// depends on regional settings of Windows. Check first what echo %date% and echo %time% gives back. All characters which are not allowed in file names on Windows (for example: "/" or ":") must be replaced by other characters or removed. However, you can define the character to be used instead of the ":" - e.g.
echo %time% results in 10:23:52,04 (in Europe)
echo %time::=.% results in 10.23.52,04. 
echo %time::=% results in 102352,04 which is already a valid name for files. But this is rather for Microsoft than for SAP.
{{{dir <drive>:\usr\sap\<SID>\D<VEBMGS><NR> | findstr /I "work"}}}
{{{15.10.2015  15:50    <DIR>          work}}}
{{{15.10.2015  15:44           252.201 work_15102015_154442,47.SAR}}}
Success. Or rather almost success.

We're already close to the end. If you want to extract the archive, an error appears:
SAPCAR -xvf <drive>:\usr\sap\<SID>\D<VEBMGS><NR>\work_15102015_154442,47.SAR -R <path\work_test
SAPCAR: error opening <drive>:\usr\sap\<SID>\D<VEBMGS><NR>\work_15102015_154442 (error 6). The system cannot find the file specified.
SAPCAR: 0 file(s) extracted
SAPCAR: error opening 47.SAR (error 6). The system cannot find the file specified.
SAPCAR: 0 file(s) extracted
Just run SAPCAR without arguments and you'll find the answer. "," is the trick.

And what's our trick to overcome this?
Rename the archive, remove "," in filename and extract it by SAPCAR
Replace "," by "*" in SAPCAR command and it'll work:
SAPCAR -xf <drive>:\usr\sap\<SID>\D<VEBMGS><NR>\work_15102015_154442*47.SAR -R <path>\work_test
SAPCAR: processing archive <drive>:\usr\sap\<SID>\D<VEBMGS><NR>\work_15102015_154442,47.SAR (version 2.01)
SAPCAR: 105 file(s) extracted
Oh, yeah.
[[39412 - How many work processes should be configured| ]]
[[63347 - List CPIC error codes| ]]
[[66971 - Supported SAP GUI platforms| ]]
[[761637 - Logon restrictions prevent TMSADM logon| ]]
[[320991 - Error codes during logon (list)| ]]
[[816861 - Migrating entries in the secure storage| ]]
[[888889 - Automatic checks for security notes using RSECNOTE| ]]
[[912367 - Composite Note on RSADMIN Parameter| ]]
[[917803 - Estimating the memory consumption of a BIA index| ]]
[[953653 - Rolling kernel switch| ]]
[[962955 - Use of virtual TCP IP host names| ]]
[[1119698 - Error in profile parameter zdate DSTswitch_contloctime| ]]
[[1123333 - Redeploying same component with JSPM| ]]
[[1147119 - Central SAP Note JSPM 7.1| ]]
[[1178686 - Linux Alternative method to generate an SAP hardware key| ]]
[[1282975 - Use of virtual host names |]]
[[1301301 - Release Strategy for SAP Best Practices Package ABAP |]]
[[1346768 - Activating IP Version 6 (IPv6) on AS ABAP| ]]
[[1365123 - Installation of Diagnostics Agents| ]]
[[1380654 - SAP support in cloud environments| ]]
[[1394100 - Security note  Access to RFC|]]
[[1394845 - DBTABPOS Includes not set after pool or transp table conv| ]]
[[1407532 - Release Restrictions for SAP NetWeaver 7.3| ]]
[[1443834 - Central SAP Note JSPM 7.2| ]]
[[1462332 - ACC 7.3 | ]]
[[1473974 - Using the SAP Host Agent Auto Upgrade Feature| ]]
[[1473974 SAPHostAgent-AutoUpgrade| SAPHostAgent]]
[[1518419 - Page file and virtual memory required by the SAP system| ]]
[[1519484 - How to analyze network disconnections shown in transaction SM21| ]]
[[1522700 - Release Restrictions for SAP EHP1 for SAP NetWeaver 7.3| ]]
[[1610103 - EarlyWatch Alert Report |]]
[[1619720 - System Rename for SAP Systems based on SAP NetWeaver| ]]
[[1629598 - SAP Kernel 720 will replace older kernel versions| ]]
[[1651862 - Release planning for Microsoft SQL Server 2012| ]]
[[1666862 - Allow other browsers to access the portal| ]]
[[1669684 - SAP on Solaris 11| ]]
[[1682316 - Consulting Optimizing RFC User Authorizations| ]]
[[1698276 - SAP Business Suite for SAP NetWeaver 7.31 hub systems| ]]
[[1752767 - Release planning for Windows Server 2012| ]]
The process of installing the BW Admin Cockpit on BW 7.3 is pretty much as described in [[BW Admin Cockpit Introduction, Installation,Issues and Usage|]] which describes implementation on earlier releases. However, also reference the [[7.3 documentation on BW Administration Cockpit|]].

The major difference is that to view the BW Admin Cockpit Monitors for BW7.3 in a NW 7.3 portal, you need to deploy the Business Package 'BP BW ADMINISTRATION 3.0' on the Portal. SAP suggest that BW systems can be monitored more effectively via Xcelsius (aka Business Objects) Dashboards that are delivered as part of technical content - These are launched via transaction RSTC_XCLS; I've never used them, but try it and see :)

Some points to consider:
1) As part of the process of activating the BW Administration Cockpit via transaction SPRO on your DEV system, you run the RSTCT_ACTIVATEADMINCOCKPIT_NEW report. Run the report in the foreground and choose create transport request flag in order to create a request for the objects which are activated by the report. If you run it in background it won't create a transport request. Creating a transport request enables you to transport the active content into your QAS and Production systems. However when you do import the transport into these systems, make sure to pay attention to "Manual steps after Activation /Transport to the other system" in [[BW Admin Cockpit Introduction, Installation,Issues and Usage|]].

2) BW Administration Cockpit builds a set of Administration and Reporting InfoCubes, and associated queries, objects, datasources etc. There is a default retention period of 14 days for the data in the 0TCT_DS01, 0TCT_DS02 and 0TCT_DS03 DataSources. You can change this by defining / changing the parameter TCT_KEEP_OLAP_DM_DATA_N_DAYS in the RSADMIN table. You can modify this table via [[program SAP_RSADMIN_MAINTAIN|]].
You can find other useful RSADMIN parameters at [[912367 - Composite Note: RSADMIN Parameter|]]

3) Be aware of SAP security requirements in both the BW and associated Portal systems;
- BW system BI administrators (users) must be assigned have the role SAP_BW_BI_ADMINISTRATOR (or any role that contains this role, or a copy of it) 
- Portal system BI Administrators must be assigned the 'System Administrator' and 'BI Administrator' roles (or any Administrator role which contain these roles as a subset) to your BI administrator users in the portal.
- [[BW Admin Cockpit Introduction, Installation,Issues and Usage|]] refers to authorisation for transaction code RSDDSTAT. BW 3.x used this transaction (and related tables) for recording and managing runtime statistics. The old statistics tables (RSDDSTAT) are no longer filled and this transaction is not used.

SAP notes:
[[912367 - Composite Note: RSADMIN Parameter|]]
[[934848 - Collective note: (FAQ) BI Administration Cockpit|]]
- refers to some prerequisites for the BI Administration Cockpit for all releases
- But also points to the following note for installation and / or upgrade of BP_BIADMIN 3.0 for NW 7.3+ systems
[[1543092 - Upgrade of BP_BIADMIN 1.0 to BP_BIADMIN 3.0(BP BW ADMINISTRATION)|]]

If you're running SQL Server under the Local System account, it will not have rights to backup the database to a network share (see ). You'll need to change the account used by SQL Server.

Here's the procedure:

# Go to Start > Run > services.msc 
# Select ''SQL Server (MSSQLSERVER)'' and stop the service.
# Select ''SQL Server (MSSQLSERVER)'' and right click to choose 'Properties.'
# In the tabbed pane, choose ''LogOn''
# Select ''This account'' and provide an account that has rights to access the shared network.
# Click ''OK''
# Repeat the change to the LogOn properties for ''SQL Server Agent (MSSQLSERVER)''
# Restart  ''SQL Server (MSSQLSERVER)'' and ''SQL Server Agent (MSSQLSERVER)''

You will now be able to perform backups to any network share to which the account has sufficient permissions. 

Remember to reset the ''LogOn'' properties back to ''Local System Account'' when you're done.
The account you specify for the SQL Server service account must have FULL CONTROL rights to the file system folder and to the share. 
The file share should only be accessed via UNC name, as mapped drives may not be consistently visible to the SQL Service.
Business Areas correspond to specific business segments of a company, and may cut across different Company Codes (for example, product lines). They can also represent different responsibility areas (for example, branch units). ''NOTE - The Business Areas are optional in SAP.''

The financial statements drawn per business area are for internal reporting purposes. 
During Configuration, you select which company you want to enable business area financial statements for

When transactions are posted in FI, you have the option of assigning them to a Business Area so that the values are properly captured for internal financial statements.

The Business Area can also be derived from other account assignments, for example, cost center. But to do this, you need to define the Business Area in the master record of that particular cost center.
Business writing is about clarity and persuasion. The main technique is keeping things simple. Simple writing is persuasive. A good argument in five sentences will sway more people than a brilliant argument in a hundred sentences. Dont fight it.

Simple means getting rid of extra words. Dont write, He was very happy when you can write He was happy. You think the word very adds something. It doesnt. Prune your sentences.

Humor writing is a lot like business writing. It needs to be simple. The main difference is in the choice of words. For humor, dont say drink when you can say swill.

Your first sentence needs to grab the reader. Go back and read my first sentence to this post. I rewrote it a dozen times. It makes you curious. Thats the key.

Write short sentences. Avoid putting multiple thoughts in one sentence. Readers arent as smart as youd think.

Learn how brains organize ideas. Readers comprehend the boy hit the ball quicker than the ball was hit by the boy. Both sentences mean the same, but its easier to imagine the object (the boy) before the action (the hitting). All brains work that way. (Notice I didnt say, That is the way all brains work?)

Thats it. You just learned 80% of the rules of good writing. Youre welcome.
[[CTS+ / STMS Management]]
[[SAP Unknown Default Password for TMSADM]]
[[Important Notes concerning user TMSADM]]

[[2126899 - Supportability Tool for Transport Problems|]]
[[Importing an External Transport into an SAP System]]
[[Process to Transport an SAP Query Existing in Standard Area (Client Specific)]]

[[Maintaining Customisation / Configuration tables in Production]]

[[Configuring STMS]]
[[Tables in the CTS Process]]
[[Programs in the CTS Process]]
[[Table Conversion - Frequently Asked Questions|]]

[[1925322 - How to roll back table conversion?|]]
[[Where are my Transports ?|]]
[[How to make a released Transport Request unreleased]]
[[Finding SAP transports without a Workbench / Transport Request]]
[[Find Out Who PERFORMED a Transport Request]]

[[Changing / Deleting a released Transport]]
[[Unreleasing a transport request and modifying table content]]

[[Mass change of object ownership tadir. System Migration, Project System Landscape Build]]
[[How-To Transport Variants]]
[[How to view the content (object list) of transport files without importing]]

Program'' RDDIT076'' can be used to change the description of a Transport which is already released. 

''Maintaining the SAP Transport Domain when modifying TMS / CTS or copying / moving to another system''
The STMS configuration is totally independent from the transport history. You can reconfigure the transport domain without risking losing the transport history. This is because the transport history is constructed using the log files in the transport directory. If the system was renamed, there is no transport history to construct as the log files for the new SID do not exist. The transport history from the original system remains available.
Note: There is significant discussion concerning what to call this client. Some folks call it the "Gold" client, some call it the "Configuration Master" client. "Gold" client can also refer to a client in which no one is allowed to log which only receives transports and thus remains pristine and can be a source for emergencies and other purposes, hence the confusion. Also, there is a commercial product called "Gold Client" which facilitates movement of data from one client to another.)  For the sake of this discussion, I'll call it the "Configuration Master" or CM. The same diacussion occurs when it comes to naming the downstream clients and systems; Every customer and systems integrator uses a different mix if names to mean the same or slightly different things, so be prepared for a flame war every now and then on how my names are all wrong and some other slight variation is the TRUE set of names.

It is highly recommended that you not allow configurators to run transactions in your main configuration client. 
ALL configuration should be done in the CM and nowhere else. In order to test the configuration, configurators should be trained to log in to your Unit Test client and use the transaction SCC1 to copy the config from the ''open transport'' for testing. 
Transports should not be closed until they unit test properly in your Unit Test client. This process puts the configurator in complete control of how many iterations of testing they do and introduces no transport delays. It also keeps the number of transports to a minimum since they only close the transport'' after they've gone through multiple rounds of SCC1 and unit testing''.
Once the transport is closed, the completed config should be transported into your unit test client, your emergency backup/"gold"/pristine client, and your downstream system clients: typically a pristine QA client plus at least one integration test client (which also goes by different names: string test, cycle test, integration test client). //This transport is accomplished by properly setting up your transport paths via STMS.//

     The important thing is that you have a ''Client Strategy'' which is well defined and thought out at the beginning of the project. This strategy ''must be'' well communicated. 
Configurators, developers, and basis folks ''must know'' which clients are used for which function before they're allowed to create/use transports. 

An example client strategy can be found as one of the ASAP accelerators which you can find and download from Additionally, there is an excellent book on transports in general called //SAP Change and Transport Management// by Armin Koesegi and Rainer Nerding published by SAP Press. It's available directly from SAP Press, via Amazon, or probably any other major bookstore. FWIW I have no connection to SAP Press or to the authors in any way, this is just a book that I use often and recommend frequently.
[[399271 - CUA Tips for optimizing ALE distribution performance|]]
[[779664 - Consistency check of qRFC queues with deletion|]]
[[841612 - Maximum number of profiles per user|]]
You should never run scheduled background jobs under a dialog user.  Once that user leaves or changes role, their authorisations will change. At the best, jobs will fail due to authorisation failures. At worst the background jobs will complete successfully, but do something other than was intended.  If you have a lot to do, a quick and dirty way (assuming you are changing the jobs to user ''HOUSEKEEP'') is :

{{{select JOBNAME, SDLUNAME, STRTDATE, AUTHCKNAM, STATUS from sapr3.TBTCO where SDLUNAME like 'ABC%' and STRTDATE = ' ' and STATUS = 'S'}}}

{{{update sapasd.TBTCO set SDLUNAME='HOUSEKEEP', AUTHCKNAM=' ' where SDLUNAME like 'ABC%' and STRTDATE = ' ' and STATUS ='S'


Jobs with STAUS = 'S" are scheduled, waiting to run.
SDLUNAME is the user who scheduled the job (from SM37 perspective)
AUTHCKMAN / AUTHCKNAM is the client / user that is used for authorisation. If is blank, the AUTHCKMAN / SDLUNAME combination is used. The easiest way to get round any issues here is to create the HOUSEKEEP user in all clients 
Steps to change the default ''SAP'' IMAGE on the right hand column of the screen :-

Transaction code ''SMW0''
Select ''Binary data for WebRFC application''
Hit Enter
Click Execute

Click ''Settings -> Maintain MIME types''
Click the ''Create'' button
Fill in :- ''TYPE'' as //image/gif// and ''EXTENSION'' as //GIF//
Click ''Save''
Return to the ''Binary data for WebRFC'' selection screen
Click ''Create''
Fill in :- ''Obj. name'' as ''ZXXXX/.GIF'' and ''Description'' as //any old text like Company Logo//
Click ''Import'' and specify the filename where your GIF file is located.

Go to transaction code ''SM30'' and select ''Table/View'' of //SSM_CUST//
Click ''Maintain''
if ''START_IMAGE'' is present, overwrite the ''Value to be set' with //ZXXXX.GIF//
otherwise, click ''New Entries'' and add ''Name'' of //START_IMAGE// and ''Value to be set' of //ZXXXX.GIF//

Logoff and Login again for the change to take effect
Transaction SE61, 


Settings: Document Class must be ''General Text''. If you need to create the document, create it under the Docuemnt Class ''General Text''

Document: Name must be ''zlogin_screen_info''
You have to chnage status of the request:
Use transaction SE38 or SA38 and run program: RDDIT076
Set your request number and run the program
After request is shown double click on it
You should be able to change status from R to D
And now, you can delete or modify the transport for example in transaction: SE10

from [[Few Tips for Transport Request Manipulation|]]
A Chart of Accounts is the list of GL accounts used in one or more Company Codes. All the GL accounts in a chart of accounts will have an account number, account name, and some control information. The control information decides how the GL account can be created.

A Chart of Accounts  includes the following components:
- - Chart of account key
- - Name
- - Maintenance language
- - The GL Account Number
- - Controlling integration
- - Group chart of accounts (consolidation)
- - Block indicator
There is no single SAP note that lists all Kernel releases. However, problems with language related functions are documented on [[SAP note 447519|]] which appears to include all Kernel releases.

[[SAP Product Roadmaps|]]
[[SAP Product Roadmaps 101 - How to use the SAP Product and Solution Road Maps community site|]]

[[The SAP Basis Administrator's Toolbox|]]
[[Ux, Fiori, Portal and Cloud Cheat Sheet|]]
[[Content Server]]

[[Extractor Framework Troubleshooting|]]

[[Power Notes Searcher - (Chrome Extension)|]]
//Could they be any bigger bores? Julia Gillard, Imma let you finish, but Cloudstreet is the worst novel of all time. Of. All. Time. That book was written to get on the HSC list. Its like Wintons retirement fund. Oh wait, hell never retire, hell keep subjecting us to the same cloying, boring novels about Australian suburbia until he dies. Because hes so boring no one would ever kill him. Its not like hes going to write a ripping critique of Islam and have himself the subject of a Jihad anytime soon is it. Its not like hes going to move to Berlin and go on a four year long introspective nightmare under the influence of copious amounts of smack and come out the other side with an avant garde transgressive masterpiece about male prostitution and AIDS as a metaphor for the global, souless malaise humanity finds itself in.

Literature is about danger and dangerous ideas. But instead of exposing English students to those ideas we give them Tim Winton. Julia Gillard, gives them Tim Winton. Here kids, read this and become fat happy consumers. Congratulations, youre dux of your meaningless class, take this Dymocks voucher and enjoy the new nine story supernatural romance section.

Cloudstreet. What a joke. Guess what Punch, **spoiler aler** the whole thing takes place in the three seconds or so of brain death in the mind of a time traveling foetus. Hence the 2nd person perspective. Thats why the narration has that all knowing, indigo child tone. Its a gimmick. Its the literary equivalent of a pop up book. It might as well have a sound chip in inside the binding that says Im Tim Winton and Im very, very smart. So smart, you wont understand just how deep my book is. Im very, very smart.

Why did you betray Australia Julia Gillard? Remember when you were young and hip and up and coming and you dug socialism and anarchism? And the Right maligned you for having that empty, austere house full of white furniture? I bet you were reading The Heart is Decitful Above All Things and pondering the difference between a Veil and a Hoax as described by JT LeRoy / Laura Albert.

Children of Australia - take your taxpayer funded copies of Cloudstreet and burn them before the damage to Australian literature becomes to great to ever reverse. //
Applies To: Windows Server 2000, Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2, Windows Server 2008, Windows Server 2008 R2, Windows Vista

Enables you to shut down or restart local or remote computers one at a time.

shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f] [/m \\<ComputerName>] [/t <XXX>] [/d [p|u:]<XX>:<YY> [/c "comment"]] 

|! Parameter |! Description |
| /i |Displays the Remote Shutdown Dialog box. The /i option must be the first parameter following the command. If /i is specified, all other options are ignored.|
| /l |Logs off the current user immediately, with no time-out period. You cannot use /l with /m or /t.|
| /s |Shuts down the computer.|
| /r |Restarts the computer after shutdown. |
| /a |Aborts a system shutdown. Effective only during the timeout period. To use /a, you must also use the /m option.|
| /p |Turns off the local computer only (not a remote computer)—with no time-out period or warning. You can use /p only with /d or /f. If your computer does not support power-off functionality, it will shut down when you use /p, but the power to the computer will remain on.|
| /h |Puts the local computer into hibernation, if hibernation is enabled. You can use /h only with /f.|
| /e |Enables you to document the reason for the unexpected shutdown on the target computer.|
| /f |Forces running applications to close without warning users. ''Note:'' Using the /f option might result in loss of unsaved data.|
| /m \\<ComputerName> |Specifies the target computer. Cannot be used with the /l option.|
| /t <XXX> |Sets the time-out period or delay to XXX seconds before a restart or shutdown. This causes a warning to display on the local console. You can specify 0-600 seconds. If you do not use /t, the time-out period is 30 seconds by default. |
| {{{/d [p|u:]<XX>:<YY>}}} |Planned or Unplanned shutdown, plus the reason for the system restart or shutdown. |
| /c "<Comment>" |Enables you to comment in detail about the reason for the shutdown. You must first provide a reason by using the /d option. You must enclose comments in quotation marks. You can use a maximum of 511 characters.|
| /? |Displays help at the command prompt, including a list of the major and minor reasons that are defined on your local computer.|

Users must be assigned the //Shut down the system// user right to shut down a local or remotely administered computer that is using the shutdown command.
Users must be members of the //Administrators// group to annotate an unexpected shutdown of a local or remotely administered computer. If the target computer is joined to a domain, members of the Domain Admins group might be able to perform this procedure. 
If you want to shut down more than one computer at a time, you can call shutdown for each computer by using a script, or you can use shutdown/i to display the Remote Shutdown Dialog box.
If you specify major and minor reason codes, you must first define these reason codes on each computer where you plan to use the reasons. If the reason codes are not defined on the target computer, Shutdown Event Tracker cannot log the correct reason text.
Remember to indicate that a shutdown is planned by using the p: parameter. Omitting p: indicates that a shutdown is unplanned. If you type p: followed by the reason code (''XX : YY'') for an unplanned shutdown, the command will not carry out the shutdown. Conversely, if you omit p: and type in the reason code for a planned shutdown, the command will not carry out the shutdown.

To force applications to close and restart the local computer after a one-minute delay with the reason "Application: Maintenance (Planned)" and the comment "Reconfiguring myapp.exe" type:
{{{shutdown /r /t 60 /c "Reconfiguring myapp.exe" /f /d p:4:1}}}

To restart the remote computer \\ServerName with the same parameters, type:
{{{shutdown /r /m \\servername /t 60 /c "Reconfiguring myapp.exe" /f /d p:4:1}}}

[img[BIABAP&BIJAVA combination.png]]
Adding systems to a Transport Domain is a two step process;
 - Submit the new SAP System to be included in the transport domain.
 - Confirm the inclusion in the transport domain controller.

''Submitting a System to Be Included''

To include an SAP System in the transport domain:
    Log on in client 000 in the SAP System that you want to include in the transport domain.
    Call Transaction STMS.

If your SAP Systems have a common transport directory, TMS proposes that you include this SAP System in the transport domain when you call the transaction.

If there is an existing TMS configuration (for example the domain controller has moved hosts or changed in some other way), you need to remove it - Do this by going into the Systems Overview of STMS, and then Extras and Delete TMS Configuration.  In this case you need to restart the STMS transaction.

If there is no existing TMS configuration in this system, the dialog box ''TMS: Include System in Transport Domain'' appears, displaying the transport domain name and the address data of the domain controller. 

If your SAP System consists of multiple application servers, you can choose one server for the TMS. Save your entries. Your SAP System performs the following actions automatically:
* Creates the user TMSADM
* Generates the RFC destinations required for the TMS
* Sends the address data to the domain controller
* Sends the profile parameter for configuring the transport control program to the domain controller
* Configures the SAP System as a single system

The initial screen of Transaction STMS indicates that the system is waiting to be included in the transport domain.

''Confirming the Inclusion of the System''

To confirm inclusion of the system in the transport domain:
* Log on to the SAP System that functions as the transport domain controller.
* Call Transaction STMS.
* Choose Overview ® Systems.

The system overview appears showing those systems that are already in the domain, plus any waiting to be included in the domain (the Status column). Position the cursor on an SAP System that waiting to be included in the transport domain and choose SAP System ® Approve. Confirm the prompt. You can distribute the configuration each time you include a system, or when you include the last system.

This SAP System now contains the necessary information about all the other SAP Systems in the transport domain. At the same time, the address data of the new SAP System is sent to all the other SAP Systems, and the SAP System is entered in the transport profile of the transport control program.

On windows systems, if the transport host is on system PRD on server //sapserver01//, and it is to be accessed from system QAS running on server //sapserver02//, then a user //SAPServiceQAS// must be able to access //\\sapserver01\sapmnt// with the same permissions as user //SAPServicePRD// on //sapserver01//. The //SAPServiceQAS// user can be a local (to //sapserver01//) user or a domain user. Test this via the [[net use command|]] on sapserver02
net use \\sapserver01\sapmnt /user:\\sapserver01\SAPServiceQAS


net use \\sapserver01\sapmnt /user:\\domain-name\SAPServiceQAS

Always check the transport groups after you include an SAP System in a transport domain.
To reject the inclusion of an SAP System in the transport domain, choose SAP System ® Delete in the system overview of the domain controller.
Always check the consistency of the transport groups. Incorrectly configured transport groups can damage import queues and transport logs.
To check which particular instance and node you are connected to (or having a problem with)

To connect to a specific node use one of the following URLs (you can get the node number from your /systeminfo page)
http://<server>:<port>/irj/portal;saplb=*_<node number>
http://<server>:<port>/irj/portal;saj2ee_irj=*_<node number>
SAP Content Server reference
1. Create a Content Repository OAC0
2. Create a Documnet Type - OAD5, 
        BUS1022      Fixed asset
Get all attachments at once

Program OACONTA4, gives list of  Documents  for a Business Object
          Oject Type = BUS1022
          documenttype = ZAST
Table: toasp - ZAST Details
TOJTT- Table for BO details

Possible Connection tables

Debug points from Application
    Applications that use the technical infrastructure of the SAP Content Server include the SAP Business Workplace, SAP ArchiveLink, the Document Management System (DMS), and the Knowledge Warehouse.
ArchiveLink is a service integrated in the SAP Web Application Server for linking archived documents and the application documents entered in the SAP system.

Archive Link Help

What is retention period for ?
  Might be used in DART -
How to point GOS Attachments to Content Server
  Note 530792 - Storing documents in the generic object services
  Read  Note 668271 - The entry SOFFPHIO is not displayed in TR SKPR08 so use SE16 to change the storage catgeory from SOFFDB to the new Content category.

Do we need to migrate the existing Attachments to the new server- no need to. 
  If documents that have already been stored are to be moved to the content server, see note 389366.

Use transaction SE16 in the SDOKPHCL table to create or correct the entry for the key PH CLASS = SOFFPHIO. The fields must have the following values:
DocuClass               SOFFPHIO
Created by              SAP
Time Created            07/16/1998 12:10:00
Last changed by         SAP
Last Changed At
Version type            0
Header table            SOFFPHIO
Category                ZGOS

Where are GOS objects saved?
 Objects can be saved in KPro or not in Kpro.
  If stored on KPro -  they can be stored in local SAP db or external Content server
SOOD-EXTCT    Storage
    directly in table SOC3
   K    using the KPRO
   A    in an archive
 If not KPRO, contents are stored in SOC3.
 If KPRO and no external storage, contents are stored in SOFFCONT1.
 If KPRO and there is external storage, contents are stored on Content server
 If stored in KPRO, Table SOC3 as administrative information to identify the File on KPRO.

 Where are CRM Attachments saved?

 Generic Object Services gets attachments from 3 different storage locations
   -> SAPOFFICE - >Create Attachments
   -> BDS-Business Document Service- >Store Business Document - Refer to interfaces in package- SBDS
   -> Archivelink -  refer to interfaces in Package SAOP 
   As per Note 530792 - Storing documents in the generic object services, SAPOFFICE documents are easy to use but no Archiving is possible
CRMORDERCONT table has Order attachments


Change content repository of Category "CRMORDER" from CRMORDER to ZCRM ***This works but the existing files would not open

The other option is Create a new Category and point to ZCRM

241     ENTRIES

V_SDOKPCAT - Document Class

SKPR08- tcode to change Category(SDOKSTCAE) for a Dcoument class(SDOKPHCL). This over ride information is saved in table -SDOKPHCL_C
 Note, it is not possible to change Category for all Document classes - only the Document class with attribute (SDOKPHCL-CAT_MAINT) is set.
  no idea- why this is not set for other object classes
What is Document class?- tcode to maintain a Document class?
   There is no view to maintain a Document clas, it can be maintained with SE16
 CRM order attachments are going into CRM_P_ORD class
 BP attachments are going into BDS_POC1

Where is the link between Business objects and Document classes
* -> get business object to determine phio class
*    in which the document should be stored in
          EV_PHIO_CLASS      = LV_PHIO_CLASS.
store this script somewhere that is safely outside the normal PATH.  Change to the directory containing the files you want to rename, and execute the script.

{{{set newfile="none"}}}
{{{#  foreach file in the current directory....}}}
{{{foreach file (*)}}}
{{{  set newfile = `echo $file|tr a-z A-Z`}}}
{{{  if (-d $file) then}}}
{{{    echo "Directory $file $newfile"}}}
{{{  else}}}
{{{    echo "File $file $newfile"}}}
{{{  endif}}}
{{{  mv "$file" "$newfile"}}}

cd /my/crap/names
''SE54'' then select //Generated Objects// and //Create//
	Find Scr. Numbers

''SE93'' Select //Transaction with parameters//
	Transaction SM30/SM31
		Skip first Screen Z

You maybe required go to to register various objects:
Using the EXPORT command, there's a file format supported (besides "DEL" and "ASC") called IXF. It is special in that it also encodes the table's schema into the file. So it is a useful utility for moving tables from one database to another or from one system to another. 

{{{export to temp.ixf of ixf }}}     
{{{    select * from table where 1 < 0; }}}     
{{{import from temp.ixf of ixf }}}     
{{{    create into copy; }}}     

The option CREATE is available to import for IXF files, because the IXF file contains the schema specification. In this particular example, note that the "where 1 < 0" condition will always fail.  This means no rows are selected by the EXPORT command. However, the schema specification of the exported table will still be written to temp.ixf. The IMPORT command will use this to create a new table named copy, with an identical schema to table. 
Via SPRO / SALE - look for the Sending and Receiving Systems > Logical Systems > Define Logical System. 


Transaction SM30 and edit V_TBDLS
The IMG configuration contains many paths, which can make it difficult to remember the path you require. However, you can create or change the IMG structure at any time. Additionally, you can keep a set of related configuration paths under one Node.

1) Go to SIMGH transaction code and click on Create (F5)

[img[Create your own IMG Structure_01.png]]

Enter your description...

[img[Create your own IMG Structure_02.png]]
[img[Create your own IMG Structure_03.png]]

You will be prompted for your transportd details for the new object you are creating (yes, this is a transportable change if you wish).

[img[Create your own IMG Structure_04.png]]
[img[Create your own IMG Structure_05.png]]

Your new Node is created, and ready to be changed. 
[img[Create your own IMG Structure_06.png]]

Now you can add some new configuration nodes underneath it.
[img[Create your own IMG Structure_07.png]]

Enter the description of the new Node and save it (enter or the green tick)
[img[Create your own IMG Structure_08.png]]

The new configuration node is defined, but there's no activity associated with it. So select the Node and assign an Activity. You can use the toolbar or 'insert activity at same level (shift+F8)'
[img[Create your own IMG Structure_09.png]]

You will need to enter an ID for the Activity configuration. To find this, use transaction SPRO (open another mode via ''/oSPRO'') and go to the menu path ''Additional Information -> Display Key -> IMG Activity''
[img[Create your own IMG Structure_10.png]]

This will display the Activity key for each Node as you expand it. Find the Configuration Node you wish to add, and make note of the Activity key. In my case ''Display Shipping Data for Plants'' has an Activity key of ''SIMG_CFMENUOLMEOMGN''.
[img[Create your own IMG Structure_11.png]]

Back on your original screen, add the Activity Key number in the ID field and add your own description.
[img[Create your own IMG Structure_12.png]]

When you save this change, you will be prompted about this being a change to a foreign namespace; just hit enter to accept this.
[img[Create your own IMG Structure_13.png]]

[img[Create your own IMG Structure_14.png]]

... and Save again
[img[Create your own IMG Structure_15.png]]

Now you have your own self contained IMG Node. You can use this to hold the activities required for regular configuration changes or transport this IMG (remember how you were prompted for a transport earlier ?) to multiple systems
[img[Create your own IMG Structure_16.png]]

[[Extend the standard SAP IMG Implementation Guide|]]
The Credit Control Area helps administer credit management functions relating to customers. 

It is used in both in SD and FI-AR modules. 

By definition, you can only assign one Credit Control Area per Company Code
However, you can assign many Company Codes to the same Credit Control Area.
[[Remove Users (DB2)]]
[[Create an Empty Copy of a Table (DB2)]]
[[Database Recovery (DB2)]]

Data for OSS messages - following command stores data in "/db2/ABC/"
{{{/usr/opt/db2_08_01/bin64/db2support . -d ABC -c -g -s}}}

Simple DB2 Commands
{{{db2 get db config for ABC show detail}}}

{{{db2 list history backup since 20111001 for ABC  > list.history.backup.out}}}
{{{more list.history.backup.out}}}
{{{db2 list history archive log since  20111001 for ABC > list.history.log.out}}}
{{{more list.history.log.out}}}

{{{db2 "list tablespaces show detail" | more}}}
{{{db2 "list tablespace containers for 5"}}}
{{{db2 "list tablespaces show detail" | grep State}}}
{{{db2 "list history alter tablespace containing PSAPBTABD for ABC"}}}

{{{db2 "select schemaname from syscat.schemata"}}}
{{{db2 "select colname, tabname, typename, length from syscat.columns where colname ='STRTTIME'"}}}

{{{db2 rollforward db ABC}}}
{{{db2 rollforward db ABC to end of backup}}}
{{{db2 rollforward db ABC complete}}}

Practical example taken from a redirected restore
{{{DB20000I  The RESTORE DATABASE command completed successfully.}}}
{{{nucspfd1:db2abc 11> db2 rollforward db ABC}}}

{{{                                 Rollforward Status}}}

{{{ Input database alias                   = ABC}}}
{{{ Number of nodes have returned status   = 1}}}

{{{ Node number                            = 0}}}
{{{ Rollforward status                     = DB  pending}}}
{{{ Next log file to be read               = S0021288.LOG}}}
{{{ Log files processed                    =  -}}}
{{{ Last committed transaction             = 2011-10-24- UTC}}}

{{{nucspfd1:db2abc 12> ls log_retrieve/ABP/S002128*}}}
{{{log_retrieve/ABP/S0021288.LOG  log_retrieve/ABP/S0021289.LOG}}}
{{{nucspfd1:db2aet 13> db2 "rollforward db ABC to end of logs OVERFLOW LOG PATH (/db2/ABC/log_retrieve/ABP)"}}}

When allocating Containers, the default unit is ''pages''.  The size of a page is defined by the pagesize of the tablespace.
{{{db2 "alter tablespace ZSAPBTABD add (file '/db2/ABC/sapdata23/ZSAPBTABD.container013' 128000)"}}}
{{{db2 "alter tablespace ZSAPBTABI add (file '/db2/ABC/sapdata13/ZSAPBTABI.container011' 32000)"}}}

{{{db2 "alter tablespace PSAPBTABD resize }}}
{{{(file '/db2/ABC/sapdata17/PSAPBTABD.container225' 100000)"}}}

{{{db2 "alter tablespace PSAPUSER1I resize (all containers 500)"}}}


ps -ef | grep db2
db2 "select * from syscat.schemata"

db2 get db cfg for XIP | egrep  'pending |consistent'
db2 list tablespaces | egrep 'State |Name'
db2 "select count(*) from SAPXIP.usr02" 

db2 select count(*) from SAPXIP.usr02 
db2 select * from syscat.tables | more 

db2 get db cfg for XIP | grep HADR

db2 "select uflag,count(*) from SAPXIP.usr02 where uflag > 0 group by uflag"
db2 "select uflag,bname,mandt from SAPXIP.usr02 where uflag > 0" > users.txt
db2 "update  SAPXIP.usr02 set uflag= 192  where bname not in('MENGLISH', 'SAP*', 'DDIC') "

db2 "update  SAPXIP.usr02 set uflag= 0  where bname = 'J2EE_ADMIN'"
db2 "update  SAPXIPDB.usr02 set uflag= 0  where bname = 'J2EE_ADMIN'"

db2 terminate

[[1027146 - Database administration and monitoring using the DBA Cockpit|]]
[[35952 - Client deleted - space still filled in database|]]

''DB2 Notes''
[[101809 DB6 Supported Fix Packs for DB2 UDB for UNIX and Windows| ]]
[[128408 Return codes from dscdb6up | ]]
[[147634 DB6 Tips and tricks for creating DB2 tablespaces | ]]
[[327595 Analysis of database lock situations with db6util| ]]
[[334608 temp TS is full| ]]
[[334777 Missing user-defined functions| ]]
[[362325 DB6 Table conversion using DB6CONV.mht| ]]
[[409127 DB6 DB2 Mirror Logging| ]]
[[486559 DB6 DB2DART Reducing high water mark | ]]
[[580302 DB6 SMS Tablespaces on Linux|]]
[[532132 Convert temp TS to SMS| ]]
[[543897 DB6 FAQs DB2-UDB tablespace| ]]
[[582875 DB6 SAP cannot log onto the database | ]]
[[584952 DB6 Version 8 Standard Parameter Settings| ]]
[[603972 DB6 Version V8.2 FixPaks (as of FixPak 9) on UNIX| ]]
[[609384 DB6 Version 8.x Known Errors and available Fixes| ]]
[[677786 How to ensure support for DB2 after the end-of-service date | ]]
[[686501 Support for customers using DB2 UDB| ]]
[[713524 Additional information on system copy with DB resources | ]]
[[955517 Limit the Number of db2fmp Processes Spawned by DB2 | ]]
[[963602 DB6 Moving tables online.mht| ]]
[[1027336 DB6 New functions in the DBA Cockpit| ]]
[[1151343 DB6 Using Deferred Table Creation| ]]
[[1329179 DB6 DB2 V9.7 Standard Parameter Settings| ]]
[[1351160 DB6 Using DB2 9.7 with SAP Software| ]]
[[1363169 -B6 Installing fix packs for DB2 V9.7 (UNIX + Linux)|]]

''Oracle Notes''
[[50088 - Creating OPS$ users on Windows NT Oracle| ]]
[[115224 - SQL audit| ]]
[[157499 - OPS$ connect and security aspects| ]]
[[361641 - Creating OPS$ users on UNIX| ]]
[[400241 - Problems with ops$ or sapr3 connect to Oracle| ]]
[[546006 - Problems with Oracle due to operating system errors| ]]
[[588668 - FAQ Database statistics| ]]
[[618861 - Composite SAP Note ORA-01013| ]]
[[619188 - FAQ Oracle wait events| ]]
[[658744 - Composite SAP Note ORA-00600 (2103)| ]]
[[666061 - FAQ Oracle -  Database objects, segments and extents| -]]
[[700548 - FAQ Oracle authorizations| ]]
[[724713 - Parameter Settings for Oracle Solaris 10 and above| ]]
[[743328 - Composite SAP note ORA-27102| ]]
[[745639 - FAQ Oracle enqueues| ]]
[[766349 - FAQ Oracle SQL optimization| ]]
[[767414 - FAQ Oracle latches| ]]
[[789011 - FAQ Oracle memory areas| ]]
[[797629 - FAQ  Oracle histograms| ]]
[[819829 - Oracle Instant Client Installation and Configuration on Unix| ]]
[[832662 - Audit-friendly configuration of BR Tools on Unix| ]]
[[832871 - SAP relevant patches for Oracle Solaris 10 on SPARC| ]]
[[839182 - Installing patches using OPatch| ]]
[[870652 - Installation of SAP in an Oracle Solaris Zone| ]]
[[974781 - Oracle internal maintenance jobs| ]]
[[1299493 - Loadable SAP Support Monitors| ]]
[[1314689 - DBA Cockpit - Dynamic loadable monitors (RSORASTT)| ]]
[[139418 - Logging user actions| ]]
[[1398634 - Oracle database 11g| ]]
[[1431800 - Oracle 11.2.0 Central Technical Note| ]]
[[1519872 - SAP Database User Profile SAPUPROF| ]]
[[1524205 - Oracle 11.2.0 Database Software Installation| ]]
[[1595481 - Database User Management in a Database Vault Environment| ]]
[[1595640 - Operating System Accounts for Database Vault Administrators| ]]
[[1597194 - Database Vault Installation Guide for SAP| ]]
[[1607420 - RZ70 ORA-00933 error in program '_SLD_DBSYS'| ]]
[[1611877 - Support for ABAP SSFS during database connect| ]]
[[1622837 - New connect method of AS ABAP to Oracle via SSFS| ]]
[[1627481 - Preemptive redolog switches in Oracle 11.2| ]]
[[1631931 - Oracle 11.2.0  Patches  Patch collections for| ]]
[[1635808 - Oracle Linux 6.x SAP Installation and Upgrade| ]]
[[1639578 - SSFS as password storage for primary database connect| ]]
[[1710997 - Using Personalized Database Administrator Accounts| ]]
[[503766 - Release Restriction Note Access Control 10.0| ]]

''SQL Server Notes''
[[28893 - Changing passwords for SQL Server| ]]
[[98678 - SQL Server Connection Issues| ]]
[[151603 - Copying an SQL Server database| ]]
[[193816 - Restore with SQL Server| ]]
[[551915 - R3 won't start after database restore or database copy| ]]
[[555223 - FAQ  Microsoft SQL Server| ]]
[[600027 - Installing the Corrected MS SQL Server Collation| ]]
[[683447 - SAP Tools for MS SQL Server| ]]
[[687866 - R3 can't connect to SQL Server| ]]
[[799058 - Setting Up Microsoft SQL Server 2005| ]]
[[806925 - SQL Error 4064 Cannot open user default database| ]]
[[879941 - Configuration Parameters for SQL Server 2005| ]]
[[970518 - System Copy SAP NetWeaver 7.0 (2004s) SR2| ]]
[[976523 - MS SQL Server - Upgrade to SAP NetWeaver 7.1 and 7.1 EHP1| ]]
[[1152240 - Setting Up Microsoft SQL Server 2008 R2| ]]
[[1297986 - Backup and Restore strategy for MS SQL Server| ]]
[[1476239 - SAP system migration to Windows 2008 or higher| ]]
[[1491158 - Information about the Microsoft SQL Server license scope| ]]
[[1651862 - Release planning for Microsoft SQL Server 2012| ]]
[[1660220 - Microsoft SQL Server_ Common misconceptions| ]]
[[1676665 - Setting up Microsoft SQL Server 2012| ]]
[[1684545 - SAP Installation Media and SQL4SAP for SQL Server 2012| ]]
[[1702408 - Configuration Parameters for SQL Server 2012| ]]
[[1721575 - SAP system migration to Windows Server 2012| ]]
[[1721843 - SQL Server_ Database-related post-processing after freeing a significant amount of space| ]]
[[1730470 - SQL Agent Job History(Log Size Limits) configuration| ]]
[[1780433 - System copy of SAP systems on Windows 2012 SQL Server| ]]
1 - Determine backup to use
{{{db2adutl query full db PP1}}}

2 - Match up the LOG files with the timestamp chosen in the previous step
{{{db2 list history backup all for PP1}}}
have the required LOG files been written to TSM ?
{{{db2adutl query logs db PP1}}}
''if not, you will need an earlier backup''

3 - Restore the LOG files (to ensure you have them !!!)
{{{db2adutl extract logs between S1234567 and S12345678}}}

4 - Restore the database
{{{db2 restore database PP1 use adsm open 1 sessions taken at <time-stamp>}}}

5 - Complete Recovery
{{{db2 rollforward database PP1 to (end of logs | <time-stamp>)}}}
[[MaxDB / SAPDB]]
[[SQL Server]]

Generic SQL 
[[Finding Duplicates with SQL]]
[[Simple Updates]]
[[Rapid Removal of large datasets in UNIX OS]]
[[The SQL Trace ST05]]
[[Find the tablespace - "ORA-01653: unable to extend table in table space"]]
[[Use SQL to create a backup copy of an individual table]]

Also see - Authorization problems with file I/O on windows NT

The following standard situations are known:
            Error text: "Invalid argument"
            Error code: 22
            The destination file is no longer available during repeated file access.

            Error text: "No space left on device"
            Error code: 28
            Insufficient memory space when creating a file or for the append.

            Error text: "Bad File descriptor"

            Error code: 9
            The network link was discontinued.

            Error text: "Permission denied"
            Error code: 13
            The user who uses the R/3 kernel has no authorization to access the network resource.

            Error text: "No such file or directory"
            Error code: 2
            The system does not find the entered network path or the file.
ABAP program ''BTCTRNS1'' suspends all scheduled jobs, i.e. it move jobs to Status //De scheduled due to Upgrade//. It will not cancel running jobs and will not reset the time schedule of these jobs.

Once you are finished with your upgrade or other downtime and you are ready to restore them to their previous status, run ''BTCTRNS2''.

ABAP program ''BTCTRNS2'' changes the status of all jobs with the status //De scheduled due to upgrade// back to //Released//.  During this, it also manages the ''rdisp/btctime'' parameter (used to fetch background jobs from the TBTCT and TBTCS tables) to prevent overflow of the background processes. Parameter ''rdisp/btctime'' is used in controlling the //background scheduler// runtime. The default is 60 sec. so the scheduler checks for available background work processes every 60 seconds. If the parameter ''rdisp/btctime'' is set to zero, the background scheduler does not run.

See [[Note 37425 - Cancel job during upgrade|]]
There is a simple trick to switch on debugging once you reach a pop-up; Create a TXT file and save it on your desktop with the following command:
Then if you want to activate debugging on a pop-up/dialog box, simply drag and drop the TXT file from your desktop onto the pop-up/dialog box in SAP. Next time you press enter you will be back in your debugging session. 

The first thing is to determine whether the issue is with the external mail / fax / etc software or within SAP, by checking whether the mail has left SAP and been successfully accepted by the mail server. Note that if you need to troubleshoot on TST or DEV, then you need to verify that the network configuration is equivalent to PRD; This means mail program installation, network routing tables, firewalls etc.
(1) Disable the mail sending job so that you can send only emails you want to troubleshoot. Goto SM37 -> Select Jobs that reference RSCONN01 (Mail sending job) and disable them.
(2) Set the trace level of the ICM to level 3 so that you can see the exact SMTP conversation that SAPconnect is having with the mail server . SMICM -> Goto -> Trace Level -> Set 3.
(3) This step is not necessary but it helps. Delete the "old" trace file so that you get a "Clean" trace thats not so long. SMICM -> Goto -> Trace File -> Reset.
(4) Setup the SAPconnect outbound trace in SCOT -> Utilities -> Trace Settings -> Outbound "On" and Inbound "On"
(5) Create a new email with the required recipient via SO00 or the transaction you use to create the mail.
(6) Goto SOST -> Select mail -> Select button "Start Send proc. for Selection" to send ONLY this mail.
(7) Mail should be send to the ICM for relay to your mail server.
(8) Goto SMICM -> Goto -> Trace File -> Display and verify that the mail server successfull accepted the mail. You can see this with the following entry in the dev_icm after viewing all the SMTP commands.
SMTP PlugInHandleNetData: reply = 250 2.0.0 o39G5egw015286 Message accepted for delivery#
SMTP SmtpActivity: state = 8, reply = 250
SMTP SmtpClientMoreCalls entry
SMTP SmtpClientSendQuit entry
SMTP SmtpClientSendQuit: send 'QUIT'
(9) Has the mail server accepted the mail with the 250 ok code? If so then the problem is not with SAPconnect but a relay problem that will need to be investigated by you mail admin however you can show the admin that the mail server accepted the mail for relay and the problem is not in SAPconnect. The mail admin will have to check the relay to the next hop in your organization.
[[SAP (General)]]
When you’re going to fiddle around with the Axis Adapter in SAP Process Integration you’ll first have to deploy and enable it.

''1.Getting the SDA template file''
Download the file from [[SAP Note 1039369|]]
Extract the file from, then extract the from

''2. Preparing''
Follow the instructions in the document.
Remember: the jar files in the SDA file are just dummies and have to be replaced with their corresponding original jars!

It is important to use exactly the same versions as provided in the template SDA. Follow the instructions in the README.txt document exactly.

''3. Deploying the SDA file''
Drop the SDA file into the JSPM Inbox of your SAP PI Host.
It is located at [drive:]\usr\sap\trans\EPS\in
EPS/in Directory

Start the SAP Netweaver Java Support Package Manager (JSPM) by running [drive:]\usr\sap\<sid>\<central instance name>\j2ee\JSPM\go.bat
Starting SAP NW JSPM

Please note that JSPM might not find any deployable files if you’re redeploying your SDA file multiple times. But don’t panic… There’s a way to redeploy your SDA files regardless of their versions (see [[SAP Note 1123333|]]). Start the JSPM using the following command:
go -config=/jspm/forceMode=true -config=/jspm /deployVersionRule=updateAll
Login using the AS Java user. This should be the j2ee_admin or any other user with the required permissions.

Select the package type “Hot Fixes” and continue to the next Wizard step.
Package Type Selection

When asked to select the hot fixes to apply, select the desired version of your SDA file.
Select Hot Fixes

Note that you might get a warning about some “Maintenance Certificate” being not found… That’s not a Problem. You can savely ignore this warning.

Note also that the Java Application Server will be restarted. So be a nice fellow and notify your workmates about the restart or you’ll probably making yourself some new enemies.

If nothing went wrong your SDA file should now be reported as being “deployed”. By now the Axis Adapter is deployed and ready to be used.
//"How you do anything is how you do everything. Your 'character' or 'nature' just refers to how you handle all the day-to-day things in life, no matter how small."//
[[Derek Sivers|]]
Covers ABAP, HANA through to UI5  etc

[[Open / SAP UI5]]
[[SAP Open Source|]]
[[sapiconv – tool for converting the encoding of files]]

[[Get around cross-origin issues in your JavaScript applications using a proxy|]]
[[Configuring an Apache reverse proxy for consuming UI5/HTML5 applications|]]
[[SAP Netweaver Gateway Client - tx trx /IWFND/GW_CLIENT|]]
''via GUI – Graphical User Interface''

The steps:

1. On the Windows Server 2012 server desktop, locate and start the Server Manager.

2. Select Local Server (The server you are currently on and the one that needs IE ESC turned off)

3. On the right side of the Server Manager, you will by default find the IE Enhanced Security Configuration Setting. (The default is On)

4. You have two settings that can be disabled, one only affects the Administrators and the other all users. To enable downloads from use a non-admin account and disable the IEESC only for users. Using a local administrator account would cause an additional threat to security and it will also often not give you the required result in tests, since the administrator has permissions where a normal user do not.
Make your selection to Off for Administrators, Users or both.

5. In this example, I have selected to completely disable Internet Explorer Enhanced Security. When your seelction is made, click OK.

6. Back in the Server Manager, you will see that the setting has not changed at all. Press F5 to refresh the Server Manager and you wil see that it is changed to Off.

Done !!. Open up a browser windows and test the setting, you will notice that you no longer are prompted in the same way.

''via PowerShell''
Put the code below in a textfile and save it with a ps1 extension i.e. Disable-IEESC.ps1
(This will disable both Administrator and User IE ESC)
function Disable-IEESC
$AdminKey = “HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}”
$UserKey = “HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}”
Set-ItemProperty -Path $AdminKey -Name “IsInstalled” -Value 0
Set-ItemProperty -Path $UserKey -Name “IsInstalled” -Value 0
Stop-Process -Name Explorer
Write-Host “IE Enhanced Security Configuration (ESC) has been disabled.” -ForegroundColor Green
Note.. You will have to hit enter twice after pasting the script
If you retain the production RFC links after a System Copy from production, you risk the possibility of these being used to pass data from the target (i.e. Pre prod, QA, Development...) into other production systems. To avoid this, you want the RFC connections disabled in some way, ''before'' SAP gets started.

The following is written for Oracle, but the DDL and SQL should be the same, and the table and field names being will be the same.
After the database has been reloaded and renamed to the target SID, but before you startsap for the first time, make a backup of the ''rfcdes'' table.
SQL> create table sapr3.rfcdes_sav as select * from sapr3.rfcdes;

Add a recognisable invalid value to the start of the ''rfcoptions'' field; Do this to all entries, including locked RFC entries
SQL> update sapr3.rfcdes set rfcoptions=replace(rfcoptions,'H=','H=disable-copy.');
SQL> commit;
This will change {{{,S=00,M=110,L=E,v=57F23915472A221E2149D13B5317,u=Y}}}
 which will effectively block any external access.
Start the SAP system and use transaction sm59 to change the required RFC's needed for the new system.  If necessary, you can reverse the change using 
SQL> update sapr3.rfcdes set rfcoptions=replace(rfcoptions,'H=disable-copy.','H=');
The SAP Cryptographic Library is required to enable Secure Sockets Layer (SSL) encryption of HTTP connections. If you do not have SAPCRYPTO.SAR available, you can download it from -> Download Area -> SAP Cryptographic Library. 
[[MaxDB / SAPDB]] wouldn't start

!!database status:
myhost:npladm 52> dbmcli -u control,<my_password> -d NPL db_clear
myhost:npladm 53> dbmcli -u control,<my_password> -d NPL db_state
myhost:npladm 54>

myhost:npladm 54> dbmcli -u control,<my_password> -d NPL db_stop
myhost:npladm 55> dbmcli -u control,<my_password> -d NPL db_state
myhost:npladm 56> dbmcli -u control,<my_password> -d NPL db_offline
myhost:npladm 57> dbmcli -u control,<my_password> -d NPL db_online
myhost:npladm 58> dbmcli -u control,<my_password> -d NPL db_state
myhost:npladm 59> exit
myhost:/home #
Excel stores dates internally as numbers. So, when uploading XML-Files based on Excel or when using Excel tables without date formatting, you might get something like this:
|Expected	|Provided|

A little investigation (opening Excel and entering 1900/01/01) tells us that counting of days in Excel starts with 1. Therefore, day 1 is the first of January 1900. So when adding days we have to subtract one.
Wrong !!!
See for why (the boring version is that the Excel date functions have a bug / feature that assumes there was a February, 29th, 1900, in order to stay compatible with Lotus-1-2-3 formulas and worksheets).

REPORT  z_excel_date_to_sap.
   gv_mydate TYPE sy-datum.
   p_days TYPE i OBLIGATORY.
    gv_mydate = '19000101'.                "Base date used by Excel
    IF p_days EQ 60.
     MESSAGE  'You are trying to fool me! That day never existed!'(x01) TYPE 'X'.
    ELSEIF p_days LT 60.
     gv_mydate = gv_mydate + p_days - 1.  "Because of 1900/01/01 is day 1 and Excel
     gv_mydate = gv_mydate + p_days - 2.           "Excel counts a non-existent date 1900/02/29
   ADD p_days TO gv_mydate.
   WRITE: / 'Excel Base Date 1900/01/01 +', p_days, 'days gives', gv_mydate.
When using the internal date representation of Excel for date calculations, we have to subtract 2 in order to get a correct result for dates after February 1900, or subtract 1 in order to get a correct result for dates prior to March 1900
This has worked in a 4.7, NW 2004 and NW 7.0 system

Set a break-point on statement "when 1." in function module "DEVELOPER_KEY_CHECK", restart your maintenance transaction, and edit your object. Press cancel, should the "Add Developer" screen pop up. Now, replace the value of SY-SUBRC with 0 and press continue. As the Developer Key is verified at several stages in every maintenance transaction, you will have to repeat these last two steps. 
* Note that this will create an entry in table "DEVACCESS" for your user-id with a blank Developer Key
Another alternative (again, using DEBUG mode) to create a program
1. Go to SE38 and type in a program program name and hit enter.
2. Switch to debug mode by entering “/h” on the command box.
3. Hit Create button (You will enter into debug mode)
4. Press F6 until you get the developer key dialog box.
5. Now insert a dummy key (99999999999999999999) in the box and hit continue.
6. Hit F5 two times.
7. You will see somethig like this:
8. Double Click near {{{IF SY-SUBRC NE 0 OR LEN NE 20.}}} to insert a brek-point.
9. Double Click on SY-SUBRC to display its contents (Will Show a “0”)
10. Hit F8 (Now SY-SUBRC will show a “1” or something else)
11. Change the contents of SY-SUBRC back to “0”
12. Hit F6 two times, now you will see something like this on the screen:
13. Now insert a break-point near to “IF SY-SUBRC NE 0″ and hit F8
14. Change SY-SUBRC back to “0”
15. Hit F8 and DONE !!!! You will see the “Program Attributes” dialog box.
Need to editing a table where maintenance is not allowed (i.e. production) ???
here's a trick that Security team on many systems have not catered for 

Use transaction SE16N -> Enter the table name and press enter to read the fields in.

Then type &SAP_EDIT in the transaction area (as a function code) and hit enter. A success message displays saying "SAP Editing function is activated".

You can now execute the report and you can edit any field except the key fields.
1) get the welcome page to your PC / Desktop / etc

2) Use pscp to copy the welcome page to your UNIX aka LDAP user id 
"C:\Program Files\PuTTY\pscp" c:\temp\welcome20120713.html mee929@sap-e1p-dbci:welcome20120713.html
Using keyboard-interactive authentication.
welcome20120713.html      |          8 kB |   8.3 kB/s | ETA: 00:00:00 | 100%

2a) if you get a message like the following, then you need to Logon to the portal (via ssh) to get the ssh key into your registry.
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 1024 8f:c1:4c:03:3c:a0:bd:7f:ba:3d:28:55:0a:4e:67:c0
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
Store key in cache? (y/n)
Connection abandoned.
Lost connection
3) Logon to the portal (at OS level), and change the permissions to let the e1padm user read the file...
mee929@dcvsuz584 $ ls -la
total 29
drwxr-xr-x   2 mee929   clstaff        5 Jul 16 15:13 .
dr-xr-xr-x   2 root     root           2 Jul 16 11:35 ..
-rw-------   1 mee929   clstaff     1749 Jul 13 22:30 .bash_history
-rw-r--r--   1 mee929   clstaff      215 Jun 15 09:45 .profile
-rw-r--r--   1 mee929   clstaff     8451 Jul 16 15:24 welcome20120713.html
mee929@dcvsuz584 $ chmod 777 welcome20120713.html
mee929@dcvsuz584 $ ls -la
total 29
drwxr-xr-x   2 mee929   clstaff        5 Jul 16 15:26 .
dr-xr-xr-x   2 root     root           2 Jul 16 11:35 ..
-rw-------   1 mee929   clstaff     1749 Jul 13 22:30 .bash_history
-rw-r--r--   1 mee929   clstaff      215 Jun 15 09:45 .profile
-rwxrwxrwx   1 mee929   clstaff     8451 Jul 16 15:24 welcome20120713.html
mee929@dcvsuz584 $

4) su to e1padm and copy the page
mee929@dcvsuz584 $ su - e1padm
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
dcvsuz584:e1padm 1% cd /sapmnt/E1P/interfaces/portal
dcvsuz584:e1padm 2% ls
welcome.html            welcome20120123.html    welcome20120629.html
welcome20111114.html    welcome20120127.html    welcome20120702.html
welcome20111118.html    welcome20120227.html    welcome20120704.html
welcome20111214.html    welcome20120320.html    welcome20120705.html
welcome20111222.html    welcome20120528.html    zwelcome.html
welcome20120119.html    welcome20120610.html    zwelcome.html.15112011
welcome20120122.html    welcome20120623.html
dcvsuz584:e1padm 3% cp /home/mee929/welcome20120713.html welcome20120713.html
dcvsuz584:e1padm 4% 
Each time you update JAVA (whether it's the JRE or the JDK), you get a new version installed and recorded in the registry (this can also be seen in the uninstall programs screen available from the Control panel), but the old version is not removed. When you follow the recommendation to remove any older versions, the older Java is correctly removed, but the registry entries can be left behind.

Getting rid of the ''ERROR 1723'' requires that these invalid registry entries be removed.  Good news is that  they are findable and clearable.

So here they are (and there are few of them) - Note that the GUID will change from installation to installation (although if your systems are built from a template, you may find common GUIDs) . 


You are looking for all and any Java installers.

Then move on to

Look for all that have Java information and remove them - I have had as few as 2 and as many as 5.

Once you have done that, reinstall Java

A real pain I know but it works every time 
From the command line (log in as ora<sid>) run oerr <error name / number > to get a description of an Oracle error code.  

Usage: /oracle/<$DBSID>/816_32/bin/oerr facility error

Facility is identified by the three-letter prefix in the error string.  For example, if you get ORA-7300, "ora" is the facilityand "7300" is the error.  So you should type "oerr ora 7300". If you get LCD-111, type "oerr lcd 111", and so on.

Eg oerr ora 01108
01108, 00000, "file %s is in backup or media recovery"

// *Cause:  Either media recovery is actively being applied to the file, or
//          it is being backed up while the database is in NOARCHIVELOG mode.
//          It cannot be used for normal database access or crash recovery.
// *Action: Complete or cancel the media recovery session or backup.
As part of R3Copy or major application upgrades, you may be required to switch the log-file.  This is done to ensure that Database Recovery can be made to a specific point in the process on another machine (R3Copy) or if the system crashes (application upgrade etc). 

You will need to do the following fo Oracle 8 or less systems;

Login as ora<sid>
Start server manager

Type the following commands from the server manager prompt;
SVRMGR> connect system/manager;
SVRMGR> alter system switch logfile;
SVRMGR> exit

For Oracle 9 systems

Login as ora<sid>

Start server manager
>sqlplus /nolog
> connect / as sysdba
> alter system switch logfile;
> exit
/sapmnt/SID/global This contains WF_LOG..._002 where 002 is the client number. Remove all older than 3 days.
/usr/sap/trans/data Only *SAP files can be deleted. Leave the cofiles alone.
/usr/sap/trans/log Compress the SAP* logs. gzip -9 SAP* Does it nicely.
/usr/sap/trans/EPS/in After support packs have been imported, the *PAT and *ATT files can be deleted.
/usr/sap/trans If there are any *car or *CAR files they can be deleted. Leave the CAR executable though.
/oracle/SID/saparch Delete all *svd files older than 3 months.
/oracle/SID/sapbackup Delete all files older than 3 months.
oracle/SID/saptrace/background Copy alert_SID.log to alert_SID.log_MMYY. re-initialise alert_SID.log. Delete all files older than 3 months.
oracle/SID/saptrace/usertrace Delete all files older than 3 months.
/oracle/SID/sapcheck Delete all files older than 3 months.
/oracle/SID/sapreorg Files and directories to be house kept are the ones with the following format. YYMMDDHHMM. These files have a number of different extensions. Delete all files and directories older than 3 months.
For trans Directory alone use below steps
# - /usr/sap/trans/data/*.sap (after 60 days, 30 days on prod systems)
# - /usr/sap/trans/log/CC* (all but last for each client, after 30 days)
# - /usr/sap/trans/log/SAP* (after 215 days)
# - /usr/sap/trans/EPS/in/* (after 7 days)
# - /usr/sap/trans *.CAR (after 7 days, except on WGP)
# - /usr/sap/SID/INSTANCE/log/audit* (after 90 days) (ref 379858)
To remove the files which is older than 10 days. you can change the -10 to number of days.
find . ! -mtime -10 /usr/bin/xargs rm -rf
Sometimes, a basis consultant will get alerts or information from customers that the file systems are full. To avoid system issues and to increase availability of the SAP system, In those cases, we have 2 options.
i)              Delete unnecessary files in the file system
ii)            In case you found file system is defined as too small then increase the size of them.
In this blog, am covering the option 1 mentioned above.

Let us assume that the system id(SID) of the sap system is DP1. Then the
i)              work directory in (Unix, WindowsNT operating system) is  /usr/sap/DP1/DVEBMGSnn/work     (where nn is the instance number)
ii)            data directory in (Unix, WindowsNT) is
/usr/sap/DP1/DVEBMGSnn/data    (where nn is the instance number)
iii)           Global directory (i.e. for all instances)  is
/sapmnt/DP1/global  (for UNIX )
\\<sapglobalhost>\sapmnt\DP1\sys\global  (for WindowsNT)

Please follow below steps to avoid this issue :
1)   Delete core files from work directory
Work directory in Unix often contains old core files which were generated due to previous program terminations. These core files need to be deleted 

2)   Delete old log files and spool files
Under global directory there will be many log files  which can be deleted regularly.
Those files are
Log file type                      Naming Convention

Spool requests            nnnSPOOL ( where nnn=client)
Job logs                      nnnJOBLG
Batch input logs          BI<hostname><instance-number>

Following reports can be run using SE38 or through background job for selective deletion of the files mentioned above.
RSPO0041  - This report is used for deletion of old spool files
RSBTCDEL –  Used for deletion of old job logs
RSBDCREO  - Report can be used for deletion of  batch input log files and reorganization.

3)   Deletion of old ABAP/4 trace files
Some trace files with the name AT<instance number>nnnn will be in the data directory. Old files of this type can be deleted. The maximum available space for all files is defined by the parameter abap/atrasizequota. Also transaction SE30 can be used to delete the files.

4)   Deletion of old archiving files
When old data is archived, some files are written to the global directory. The naming convention of those files is Rxxmmddn (xx= application, mm= month, dd=day, n=number). For example, RMM11056
If these files are already saved on tape and these data is no longer required for productive operation, then these files can be deleted from the disk
5)   Deletion of old output requests
Output requests are normally stored on the data directory. Naming convention will be like SP*. Under normal scenarios, they are deleted automatically when the output is completed. In case you see they are not getting deleted, you can delete the same
6)   Page file and Roll file
Under the data directory, normally page files and roll files are stored. Naming convention will be like PAGFILnn and ROLLFLnn. Please note that page file and roll files can only be deleted when the corresponding SAP instance is offline.

Deleting these files hardly makes any sense because these files will start growing  to the allowed maximum extent  during the R/3 system start up. However in some special scenarios (during or after client copy), the required space can be retrieved by deleting these files. As mentioned earlier, please note that this can be done only when the instance is offline.

The maximum size of the roll file is given by
(rdisp/ROLL_MAXFS – rdisp/ROLL_SHM) * 8 Kbytes

A similar formula applies to the paging file also.

In some scenarios, to avoid the file system full issue, we can even move these page and roll files to a different file system by defining alternate values for R/3 parameters DIR_ROLL and DIR_PAGING
7)   Deletion of Old sort and Extract files
By the ABAP commands SORT and EXTRACT, temporary files are created. The location of these files are set using profile parameter DIR_SORT or DIR_EXTRACT.

The temporary files for sort are named S+++++++<Extension> (On Windows NT .dat is used as extension  and on Unix there is no extension). Similarly for Extract, E+++++++<Extension> will be the file naming convention.

These files will be automatically deleted after the execution of these SORT and EXTRACT commands. However, in some scenarios, an abrupt termination can happen and these files won’t get deleted automatically. Those old files can be deleted by an administrator.

The exact file names for these are stored in the profile parameters FN_SORT or FN_EXTRACT

8)   Deletion of trace files
Trace files are created during a new system start up and they can be deleted. They are contained in the work directory

9)   Deletion of stat file or moving to different location
Please check whether the stat file which consists the work load statistics, has not been reorganized for some time and has therefore become too large. In emergency cases, this file can be either deleted manually or can be moved to different location.

To delete the stat file manually, please proceed as follows:
Go to ST03 transaction , call the delete function on the relevant instance by choosing :
Workload -> Reorganize -> Delete seq.stat.file
To change the location of stat file, change the value of system parameter ‘stat/file’ to a new location.

10) Deletion of job logs at operating system level
In some emergency cases, where you cannot start the R/3 system at all, the measure is to delete the job logs at operating system level and run RSBTCDEL report in forced mode.

Note: How to delete job logs at operating system level will be covered in a separate article later
11) Changing the trace level
If the trace files (dev_*) in the work directory are very large(normal size 0.1 to 20Kbyte), it is likely that the trace level is set to very high value. In SAP, rdisp/TRACE parameter is used to set the trace level. Normal value for trace is 1. 

Please cross check this SAP parameter and reset to 1 if the value is maintained as 2 or higher. If this value is set to high, much more detailed trace will be collected and trace file sizes are likely to increase. Therefore recommending to decrease or set the trace level to 1.
Look at Table TPLOG (go there using the Transaction Code SE16) and input the transport name in the CMDSTRING field with *.

Example: *UZDK939001*
[[Runtime Errors DBIF_RSQL_SQL_ERROR;Error Text of the Database: "ORA-01653: unable to extend table in table space"|]]
The following SQL script example shows how to identify duplicate rows in a data table.

SELECT col1, col2, count(*)
FROM sapr3.table
GROUP BY col1, col2
HAVING count(*) > 1 
ORDER by count(*)

NOTE: this has worked in DB2 with 12 table columns

''By Short Text'':
You could use transaction ''SE03'', then select “Find Requests”. In the next screen select (Control+F1) which will expand the selection parameters, where you can select using wild-cards in the short text.

Search table ''E07T'' (via ''SE16'') and search on the short text.

''By Object'':
Search table ''E071'' by object names and 

''By Timestamp'':
Search table ''E070V'' to look for the timestamp of a request.
Lets say you want to find the DVD with the contents "SAPLUP:700" somewhere in your /sapcd collection.

eg lets say you have downloaded all your SAP DVDs, CDs and Patches to a central directory /sapcd

On Unix try
find /sapcd -name 'LABEL.ASC' -exec grep -l SAPLUP:700 {} \; -exec grep SAPLUP:700 {} \;
which will list the matching filename and the string that it matches.

For example, the ECC6 install "Kernel NW 7.20" Software package problem...
[img[Finding the right DVD Labe 01.png]]
Tables with one narrow column and one long column often force line breaks in the narrow column where words are separated by a space, as in this example:

|narrow column|narrow column|very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column |

To force those narrow cells onto one line, add the following code at the beginning of the cells:

@@white-space: nowrap;YOUR-TEXT-HERE@@

Here is the result:

|@@white-space: nowrap;narrow column@@|@@white-space: nowrap;narrow column@@|very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column very wide column |
''Line-by-line blockquotes:''
{{{>level 1}}}
{{{>level 1}}}
{{{>>level 2}}}
{{{>>level 2}}}
{{{>>>level 3}}}
{{{>>>level 3}}}
{{{>>level 2}}}
{{{>level 1}}}


>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1

''Extended blockquotes:''
{{{Extended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotes}}}

Extended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotesExtended blockquotes
|bgcolor(#dddddd):Links with wikiwords|EnchiLada (inactive link - no tiddler yet)<br>WikiWord (active link to tiddler)|{{{EnchiLada}}}<br>{{{WikiWord}}}|
|bgcolor(#dddddd):~De-Wikify a ~WikiWord|~WikiWord, ~EnchiLada|{{{~WikiWord, ~EnchiLada}}}|
|bgcolor(#dddddd):Links with brackets|[[How to add background images]]|{{{[[How to add background images]]}}}|
|bgcolor(#dddddd):Pretty links|[[display text|ColorSchemes]] - links to the tiddler of color schemes|{{{[[display text|ColorSchemes]]}}}|
|bgcolor(#dddddd):External links work the same way:| <br><br>[[TiddlyWiki Google group|]]|{{{}}} <br><br> {{{[[TiddlyWiki Google group|]]}}}|
|bgcolor(#dddddd):Links to local files|To a file on your hardrive:|{{{file:///C:/path/filename.doc/}}}|
|bgcolor(#dddddd):|To a file on a CD in your D drive:|{{{file:///D:/filename.doc/}}}|
|bgcolor(#dddddd):|To a file on your USB stick on your e drive: |{{{file:///E:/filename.doc/}}}|

{{{[img[]]}}} is the formatting for:


''A tip from Jeremy Hodge:''

"...[You] may add an image as a local file with the following: {{{[img[.\filepath\filename.jpg]]}}} which adds a picture from the directory that is contained within the same directory as TW. This is very useful for me or anyone who carries their own TW on a USB drive such as myself."
''Numbered lists:''
{{{#item one }}}
{{{##Item 1a}}}
{{{###Item 1ai}}} 

#item one   
##Item 1a 
###Item 1ai 
''Bulleted lists:''
{{{*Bullet one}}}
{{{**Bullet two}}}
{{{***Bullet three}}}
*Bullet one    
**Bullet two    
***Bullet level three    
!This is the formatting:

{{{|!Table header|!Column Two|}}}
{{{|>| colspan |}}}
{{{| rowspan |left aligned|}}}
{{{|~| right aligned|}}}
{{{|bgcolor(#DC1A1A):colored| centered |}}}
{{{||*lists<br>*within<br>*tables<br><br>and double-spaced too|}}}

!This is the result:

|!Table header|!Column Two|
|>| colspan |
| rowspan |left aligned|
|~| right aligned|
|bgcolor(#DC1A1A):colored| centered |
||*lists<br>*within<br>*tables<br><br>and double-spaced too|

*[[Alternate the color of table rows]]
*[[Force the text in a cell not to wrap to the next line at a space]]
*[[Align the text in a cell at the top instead of the center]]
!Format text
|!Format|!It will look like this...|!...if you format it like this...|
|Bold-faced type|''text''|{{{''text''}}}|
|Italic text|//text//|{{{//text//}}}|
|Underlined text|__text__|{{{__text__}}}|
|Strike-through text|--text--|{{{--text--}}}|
|Colored text|@@color(green):green colored@@|{{{@@color(green):green colored@@}}}|
|Text with colored background|@@bgcolor(#ff0000):color(#ffffff):red colored@@|{{{@@bgcolor(#ff0000):color(#ffffff):red colored@@}}}|
|Subscript|a~~ij~~ = -a~~ji~~|{{{a~~ij~~ = -a~~ji~~}}}|
!Make the first letter of a paragraph extra large
(from Morris Gray's TW Help)


 @@color:#bbbbbb;O@@}}}kay, so you know how to use ~TiddlyWiki, but now you want more. You want to change the color or layout. You want to add features to it. As the subtitle says, this is an entry-level introduction, so I am not going to show you how to do every possible thing you can do with ~TiddlyWiki. I probably don't know half of what can be done. Advanced documentation such as that found at and can hopefully expand your horizons. 

''How to do it:''

1. Add the following code to your StyleSheet:

.firstletter{ float:left; width:0.75em; font-size:400%; font-family:times,arial; line-height:60%; }

2. Add the following code to your tiddler at the place where your enlarged letter would go (replacing "O" with the appropriate letter):
When the target system for your Installation is NW 7.0 (aka NW 2004s) or later, but earlier than NW 7.4, you may need an Installation key. If you're doing a Netweaver Upgrade to one of these releases, you may also need one. Depending on how you do it, a System Copy (at least the first time) may also require an Installation key.

''Create the product system for which you want to generate the installation key, in the system landscape''
 Call the Solution Manager System Landscape (transaction SMSY), in your SAP Solution Manager system.
 Select the landscape component Product System, and choose Create New Product System from the context menu.
 Enter the system ID as product system name in the next dialog box.
 Choose the product and product version from the possible entries help. Save.
 Complete the system data as far as possible.
 Save your entries.

''To generate the key:''
//Depending on the release, you may have tor restart the SMSY transaction to show the System Landscape option on the menu//
Choose ''System Landscape ==> Other Object'' in the menu
(other possibilities include ''System Landscape ==> Select Object'')
Set system to be installed or upgraded, from the possible entries.
Choose ''Generate Installation/Upgrade Key''.
Enter the required data and choose ''Generate Key''.

The system displays the key.

Enter this key when requested during the installation / upgrade via ''sapinst''
This VBS code calculates the SAP Installation key, using the same algorithm as Solution Manager. The usage is pretty simple; save the code somewhere safe, then execute it. It will prompt for the SID, the System Number, the Host name (not the full DNS name), and retruns a working Installation Key.

'   Solution Manager Key Generator   '
'Save to GenerateKey.vbs and execute '
'                                    '
'    Calculates the SAP Installation '
'  key, using the same algorithm as  '  
'  Solution Manager                  '
'                                    '
' Usage:                             '
'   prompt for SID                   '
'   prompt for System Number         '
'   prompt for Host name             ' 
'        (not full DNS name)         '
'                                    '
'   returns Installation Key         '
'                                    '
Dim SIDs, SNs, SERVs, msg, ENDs, KEYs
msg="System ID (3 chr.)"
SIDs=InputBox(msg,"Solution Manager Key Generator")
msg="System Number (2 dig.)"
SNs=InputBox(msg,"Solution Manager Key Generator")
msg="Server Name (do not include domain name)"
SERVs=InputBox(msg,"Solution Manager Key Generator")
KEYs=SolManKeyGen(SIDs, SNs, SERVs)
msg="Solution Manager Key"
ENDs=InputBox(msg,"Solution Manager Key Generator",KEYs)
Function SolManKeyGen(SIDst, SNst, SERVst)
 Dim SIDSNhex(5)
 Dim SERVhex(15)
 Dim reshex(5)
 SIDSNstr = UCase(SIDst) + UCase(SNst)
 SERVstr  = UCase(SERVst)
 For arrcnt = 1 To 5
  SIDSNhex(arrcnt) = Asc(Mid(SIDSNstr, arrcnt, 1))
 For arrcnt = 1 To Len(SERVstr)
  SERVhex(arrcnt) = Asc(Mid(SERVstr, arrcnt, 1))
 For arrcnt = Len(SERVstr) + 1 To 15
  SERVhex(arrcnt) = 0
 If (Len(SERVstr) > 0) Then
  If (Len(SERVstr) < 5) Then
   For arrcnt = Len(SERVstr) + 1 To 5
    SERVhex(arrcnt) = Asc(" ")
  End If
 End If
 If (Len(SERVstr) > 5) Then
  If (Len(SERVstr) < 10) Then
   For arrcnt = Len(SERVstr) + 1 To 10
    SERVhex(arrcnt) = Asc(" ")
  End If
 End If
 If (Len(SERVstr) > 10) Then
  If (Len(SERVstr) < 15) Then
   For arrcnt = Len(SERVstr) + 1 To 15
    SERVhex(arrcnt) = Asc(" ")
  End If
 End If
 For arrcnt = 1 To 5
  reshex(arrcnt) = ((((0 Xor SIDSNhex(arrcnt)) Xor SERVhex(arrcnt)) Xor SERVhex(arrcnt + 5)) Xor SERVhex(arrcnt + 10))
 reshex(1) = reshex(1) Xor 84  Xor 0
 reshex(2) = reshex(2) Xor 131 Xor 11
 reshex(3) = reshex(3) Xor 194 Xor 46
 reshex(4) = reshex(4) Xor 52  Xor 105
 reshex(5) = reshex(5) Xor 119 Xor 188
 hexstr = "0123456789ABCDEF"
 resstr = ""
 For arrcnt = 1 To 5
  hihex = reshex(arrcnt) \ 16
  lohex = reshex(arrcnt) Mod 16
  resstr = resstr + Mid(hexstr, hihex + 1, 1) + Mid(hexstr, lohex + 1, 1)
 SolManKeyGen = resstr
End Function
For upgrading Enhancement Packages, a Stack Definition File (STACK.XML/TXT) should be generated in Maintenance Optimizer of Solution Manager. It requires that Solution Manager is connected to SAP.COM, but you may encounter a situation where Solution Manager can not access SAP.COM (network  and internet availability, SAPRouter configuration). Typically, projects can not wait until a connection is established. 

Step 1:
Create a file REQUEST.XML using Solution Manager:
Goto Maintenance Optimizer, Open “New” Maintenance Optimizer Transaction >> choose “Product Version” and “Product System” >> [Continue] >> “Save Simulation Data” (and create REQUEST.XML). Remark: At this time, the system has been correctly added to the Solution Manager.

Step 2 (option a)
Access SAP Service Marketplace from your PC, create a message with your Source product version, Target product version and stack, Technical Usage, S-User ID, and attach REQUEST.XML. In reply, you will get STACK.XML/TXT and the necessary support package files in your download basket.

Step 2 (option b)
Use another Solution Manager system, that has a working network connection to By clicking “Load Simulation Data“ and entering REQUEST.XML, the right STACK.XML/TXT will be generated. Nothing will be changed on this Solution Manager system.

Solution Manager release 7.0 SP22 and higher 
SAPNOTE 1450757 has to be applied if your SP level is SP24 and lower
If Solution Manager is on major release 7.0, you also have to set the parameter “MOPZ_SIMULATION = X”.
look at the file ''properties'', and select the ''details'' tab


Alternatively, from [[Command line tool to dump Windows DLL version?|]]

PS C:\Users\Martin>
PS C:\Users\Martin> (get-item C:\Windows\SysWOW64\librfc32.dll).VersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
                 7300, 3, 518,... C:\Windows\SysWOW64\librfc32.dll

PS C:\Users\Martin>
PS C:\Users\Martin>
PS C:\Users\Martin> Write-Host (get-item C:\Windows\SysWOW64\librfc32.dll).VersionInfo
File:             C:\Windows\SysWOW64\librfc32.dll
InternalName:     RFC
OriginalFilename: librfc32.dll
FileVersion:      7300, 3, 518, 7808
FileDescription:  Remote Function Call
Product:          SAP R/3
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language:         Language Neutral
PS C:\Users\Martin>
//Note the difference in the treatment of the decimal seperating verion, release, patch, etc level//
[[TiddlyWiki wiki|]],
[[TiddlyWiki for the rest of us|]],
[[TiddlyWiki Applications|]]
*[[Format text]]
*[[Format links and images]]
*[[Format lists]]
*[[Format tables]]
*[[Format blockquotes]]
*[[Miscellaneous formats]]
Morris Gray has very nice lists of how to do ASCII symbols, Greek and Latin symbols, HTML entities and Math symbols at his wonderful TW Help site. To see these lists at his site, [[click here|]].
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
''Useful Links''
[[SAP HANA Cloud Platform vs. HANA Enterprise Cloud: What’s the Difference?|]]
[[Comprehensive set of links on Learning SAP HANA|]]

[[HANA Command Line Tools and SQL Reference Examples|]]
[[HANA Reference for Developers - Links and SAP Notes(Part-1)|]]
[[HANA Reference for Developers - Links and SAP Notes(Part-2)|]]
[[Session id issue and solution for public applications on HANA||]]

[[HANA Administration Guide (pdf)|]] 
[[HANA Troubleshooting and Performance Analysis Guide (pdf)|]]
[[The SAP Hana Reference for SAP Basis Administrators|]]
[[Basic HANA Health Checks|]]
[[Configure SAP HANA for CTS (SAP HANA SPS08)|]]
[[Transporting HANA Studio Object from one environment into another environment|]]
[[SAP HANA Platform Lifecycle Management - SPS07 +|]]
[[A Short History of SAP HANA Platform Lifecycle Management - by the SAP HANA Academy|]]

[[Very basic background on HANA Security|]]
[[DBMS Users in SAP NetWeaver AS ABAP 7.40|]]
[[Enabling That Back Door in SAP HANA Security: Resetting the SYSTEM Password in SPS 09|]]

[[Recovery Technologies of SAP HANA-Part 1: System Failure Recovery|]]
[[Recovery Technologies of SAP HANA-Part 2: Database Backup|]]
[[SAP HANA System Replication (HSR)|]]

[[HANA memory usage details and changes in SPS12|]]
[[Practical approach for response time prediction of HANA analytical applications|]]
[[CPU Sizing for concurrent users, running HANA Analytical Applications|]]
[[Linux Free Memory, Virtual Memory, Resident Memory vs HANA used Memory and Pool Memory|]]
[[Queries for Used and Resident memory and comparison with Overview tab numbers|]]
[[Memory Management of SAP HANA|]]
[[HANA Sizing|]]
[[1514966 - SAP HANA 1.0: Sizing SAP In-Memory Database|]]
[[Network Recommendations for SAP HANA System Replication|]]

''Administration Tables''
The following are some of the important HANA tables/views required for administration
|!Table/View Name|!Used for|
|M_LICENSE |Contains License information |
|_SYS_PASSWORD_BLACKLIST |Contains the list of blacklisted passwords |
|GRANTED_PRIVILEGES |Privileges granted directly to the specified user (or role) are listed.<br>Privileges contained within granted roles are not shown. |
|GRANTED_ROLES |All roles granted directly to the specified user (or role) are listed |
|EFFECTIVE_PRIVILEGES |Privileges granted to the specified user both directly and indirectly through roles are listed separately. |
|EFFECTIVE_ROLES |All roles granted to the specified user both directly and indirectly through other roles are listed separately. |
|M_VOLUME_IO_STATISTICS |Lists the total read size and the total write size for each volume since the service in question was last started. |
|M_VOLUME_IO_STATISTICS_RESET |Lists the statistics since the reset time. |
|M_LOG_SEGMENTS |Monitoring view for log segments. |
|M_VOLUME_IO_STATISTICS |Aggregated I/O statistics for the volume since the service was started.|
|M_DATA_VOLUME_PAGE_STATISTICS |Displays statistics on the data volume's pages. |
|M_SERVICE_MEMORY |Lists the memory usage information. |
|M_HEAP_MEMORY_RESET |View to reset memory usage. |
|M_CS_TABLES |Provides column store table information. |
|M_RS_TABLES |Provides row store table information. |
|M_CS_COLUMNS |Contains memory related information of the Column store table’s columns. |
|M_HOST_RESOURCE_UTILIZATION |Lists the resource utilization by the host. |
|M_DELTA_MERGE_STATISTICS |Information about all delta merge operations since the last system start. |
|HOST_DELTA_MERGE_STATISTICS |Delta merge statistics in the table, collected by the Statistics server. |
|GLOBAL_MEMORY_STATISTICS |Global memory consumption of the database over the last 30 days |
|M_EXPORT_BINARY_STATUS |Monitor the progress of a running export |
|M_IMPORT_BINARY_STATUS |Monitor the progress of a running import |
|M_PERSISTENCE_ENCRYPTION_STATUS |Check persistence encryption status. |
|M_PERSISTENCE_ENCRYPTION_KEYS |Check how long the current encryption key has been valid. |
|M_BACKUP_CATALOG |Provides an overview of information about backup activities. |
|M_BACKUP_CATALOG_FILES |Provides information about the backups created, and the backup destinations that are used by data and log backups. |
|M_SERVICE_REPLICATION |Contains the basic status of replication between primary and secondary systems. |
|M_CONVERTER_STATISTICS |View to estimate the size of the next complete data backup. |
For oracle 9.2. its:

cd to the OPatch directory - generally under the /oracle/<sid>


bau106s0:/oracle/OPA/920_64/OPatch> perl lsinventory

OSS note 306408 helped (a bit !!)

For 8.1.7 (OSS note 411068)

bau303s0:oraoba 86> sqlplus

SQL*Plus: Release - Production on Mon May 12 13:17:58 2003

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

Enter user-name: sapoba
Enter password:

Connected to:
Oracle8i Enterprise Edition Release - 64bit Production
With the Partitioning option
JServer Release - 64bit Production

SQL> select * from V$VERSION;

Oracle8i Enterprise Edition Release - 64bit Production
PL/SQL Release - Production
CORE       Production
TNS for IBM/AIX RISC System/6000: Version - Production
NLSRTL Version - Production


Sometimes - cd /oracle/OBA/817_64/bin/ - then 'what oracle' will work. You could also try 'owhat oracle'.
If you get the error: ORA-01502: index 'SAPR3./BIC/B0000***000~0' or partition of such index is in unusable state.

I've been recreating these indexes using either "SE14->Activate and Adjust", or by running function module RSDU_UNUS_PART_INDEX_REPAIR which Sheryl had used previously. I have just found an OSS note though that says not to use SE14 or DB02, as it is unreliable in creating partitioned indexes and can result in further problems when a new partition is added.

The solution is to execute function module RSDU_TAB_UNIQUE_INDX_LOCAL from SE37 by doing a "Test", and specify parameter I_TABLNM = "/BIC/B0000***000~0"

If there are any future reorgs of PSAPODSI, any missing indexes of the above form should be re-created using this method, NOT using mass processing from DB02. See note 515711.
FAQ about Oracle  Note 666061.  -  LOBs are used to save large datasets (see note 500340)   The LOB (Large OBject) datatypes enable you to store large blocks of unstructured data up to four gigabytes in size in a table column.   
>sqlplus /nolog
SQL> connect / as sysdba

Owner    Object     Type         Tablespace         Extents   MaxExtents   Next (K)  
SAPR3    SYS_LOB0000021687C00034$$    LOBSEGMENT   PSAPES620D      1,308            1-         160 
SAPR3    SYS_LOB0000057314C00013$$    LOBSEGMENT   PSAPEL620D       455            1-         160 
SAPR3    SYS_LOB0000057314C00014$$    LOBSEGMENT   PSAPEL620D       192            1-         160 

note 500340 alter table <table> modify lob (<lobcolumn>) (storage (...));   
 dba_lobs: table_name, column_name, segment_name (=lobsegment name),    
 index_name(=lobindex name)                                             
select * from dba_lobs where segment_name = 'SYS_LOB0000021687C00034$$';
select column_name from dba_lobs where segment_name = 'SYS_LOB0000021687C00034$$';

select * from dba_lobs where segment_name = 'SYS_LOB0000057314C00013$$';
select * from dba_lobs where segment_name = 'SYS_LOB0000057314C00014$$';

index_name				Owner + table_name  column_name
 SYS_IL0000021687C00034$$	 SAPR3.REPOSRC	DATA
 SYS_IL0000057314C00013$$	 SAPR3.REPOLOAD	LDATA
 SYS_IL0000057314C00014$$	 SAPR3.REPOLOAD	QDATA

 Contains partition-specific Information on LOBs in table partitions
 Contains partition-specific Information on LOBs in table subpartitions
 Contains default partition settings for LOBs in table partitions
 Contains Information on temporary LOBs

SQL> select * from dba_lobs where segment_name = 'SYS_LOB0000021687C00034$$';

OWNER                          TABLE_NAME
------------------------------ ------------------------------

SEGMENT_NAME                   INDEX_NAME                          CHUNK
------------------------------ ------------------------------ ----------
---------- ---------- --- ---
SAPR3                          REPOSRC
SYS_LOB0000021687C00034$$      SYS_IL0000021687C00034$$             8192
        10 NO         YES YES

Table REPOSRC is owned by user SAPR3, so the form of the statement will be except that initial is not permitted, so
SQL> alter table REPOSRC modify lob (DATA) (storage (initial 160k next 1600k));


alter table SAPR3.REPOSRC modify lob (DATA) (storage (next 1600k));

alter table SAPR3.REPOLOAD modify lob (LDATA) (storage (next 1600k));
alter table SAPR3.REPOLOAD modify lob (QDATA) (storage (next 1600k));

Note: Under DB02 the only table name for tablespace PSAPES620D appears to be SYS_LOB0000021596C00015$$ for this SAP KW NT based Oracle system.

select * from dba_segments where segment_name = 'SYS_LOB0000021687C00034$$';
			does not have extent size though can see in SAP DB02
''Simplest Version''
If you need to set a new password (i.e. to solve an ORA-28001), use BRCONNECT.
brconnect -u / -f chpass -o <SAP schema user>

''Complicated Version''
With Oracle release 11g, passwords of database users with DEFAULT user profile expire after 180 days (PASSWORD_LIFE_TIME). Every database user has a user profile that is assigned when the user is created or altered. The lifetime of the user password (PASSWORD_LIFE_TIME) is one property of a user profile.  

Additionally, as of Oracle 10.2, the limit for FAILED_LOGIN_ATTEMPTS for the DEFAULT user profile is 10 (in prior releases, the default was UNLIMITED. As a consequence, the SAP application account gets automatically locked after 10 failed login attempts (apart from command-line usage, this could result from a cron-job trying to log into the SAP database as SAP with an invalid password, or external hacker).. After the account iss locked, SAP application WPs can no longer log on to the database (error ORA-28000: the account is locked) Obviously, if the database user profile SAPUPROF is not configured as above (i.e. SAP schema user (i.e. SAPSR3, SAPSR3DB) still has the DEFAULT user profile assigned with PASSWORD_LIFE_TIME=180), then this can also cause a password lockout (after too many attempts).

You can check which user profile is assigned:
SQL> select username, profile from dba_users
     where username in ('SAPSR3', 'SAPSR3DB');

See the latest version of [[SAP note 1519872 - SAP Database User Profile SAPUPROF|]] for more details, and instructions on ''Manual Configuration of User Profile SAPUPROF'' and some ''Security Recommendations''.
Something I read on the [[OTN Thread: How to eliminate SQL command in Spool output?|]] about spooling to a .xls (excel) file:

set feed off markup html on
spool onspool c:\salgrade.xls
select * from salgrade;
spool offset markup html off
spool off

And the xls it makes shows up like:
You may find it useful. I have done a couple times over the years
1 Create a new TEMP Tablespace
              TEMPFILE '/u02/oradata/TESTDB/temp2_01.dbf' SIZE 5M REUSE
              AUTOEXTEND ON NEXT 1M MAXSIZE unlimited

Tablespace created.
2 Set default TEMP tablespace to one created in STEP1

Database altered.
3 Delete old PSAPTEMP tablespace.

Tablespace dropped.
4 Recreate the PSAPTEMP tablespace with the size and location you desire.
              TEMPFILE '/u02/oradata/TESTDB/temp01.dbf' SIZE 500M REUSE
              AUTOEXTEND ON NEXT 100M MAXSIZE unlimited

Tablespace created.
5 Change default temporary tablespace back to PSAPTEMP

Database altered.
6 Drop temporarily created tablespace.

Tablespace dropped.
Independent of the selected product version (EHP4 FOR SAP ERP6.0/NW7.01 or EHP4 FOR SAP ERP6.0) the SAP Solution Manager Maintenance Optimizer chooses the Java technology of SAP NetWeaver 7.0.
Independent of the selected product version (EHP4 FOR SAP ERP6.0/NW7.01 or EHP4 FOR SAP ERP6.0) the SAP Solution Manager Maintenance Optimizer chooses the Java technology of EHP1 for SAP NetWeaver 7.0.

''Hub System''
We call a SAP NetWeaver system (Java based) a Hub system, if multiple business applications are deployed upon it. The business applications themselves may run against multiple application back-end systems (e.g. ECC-Server, SRM-Server, ...).
SAP NetWeaver Enterprise Portal may be an example. During update or maintenance procedures the system behavior is as follows:

An update of the technology stack (SAP NetWeaver) keeps the SAP Business Suite application part untouched, that means there is no update of the SAP Business Suite application part needed.

An update of the SAP Business Suite application enforce always the respective back-end application, thereby both applications are synchronously.

Example: If innovation is application driven, the SAP NetWeaver hub system stays stable on release 7.0 (if it was before).
''Local Sidecar System''
We call a SAP NetWeaver system (Java based) a sidecar system, if it is exclusively dedicated to one back-end system. This might be an SAP NetWeaver Enterprise Portal with SAP XSS which is exclusively used together with a unique back-end system(e.g. ECC-Server). Other application back-end systems cannot use this SAP NetWeaver system.
During update or maintenance procedures the system behavior is as follows:

Technology stack (SAP NetWeaver) and the SAP Business Suite application part are both updated synchronously. As a result both systems are on the same technology level as well as the same SP Stack level.
Using transaction code MB1B as a starting point, I want to find all possible user exits for this Tcode. 

1.  First, find the Development Class of the transaction code 
    Execute the Tcode
    Go to Menu bar --  Select Status

    Double Click on the Transatcion (in this case ''MB18)'' in the field labeled ''Transaction''
    Here you will get the developmetn Class name as Package Name  -  in our case it is ''MB''

2.  Now execute the transaction code SMOD
    Go to menu bar and select Utilities
    Click on Find
    Supply the value from the Package field from step 1  -  in our case it is ''MB''

3.  Now, press F8 to display all associated User Exits,
You have a database in MS SQL that is tagged as //suspect// and you are unable to connect to the database..

''Possible Causes''
* The database could have become corrupted.
* There is not enough space available for the SQL Server to recover the database during startup.
* The database cannot be opened due to inaccessible files or insufficient memory or disk space.
* The database files are being held by operating system, third party backup software etc.
* There was an unexpected SQL Server Shutdown, power failure or a hardware failure.

Yes, you can recover from a detached SUSPECT database, but it’s not pretty and you have to be very careful. The best course of action is always to have a comprehensive backup strategy that allows you to restore as quickly as possible. If you do have a SUSPECT database and no backups, use EMERGENCY mode to access and/or repair the database. 

//Never// detach a suspect database; During subsequent attempts to reattach it, SQL Server will recognise that it is broken and the attach will fail. Having said that, see

Open Microsoft SQL Server Management Studio and connect to your database
Click the New Query button
 Paste the following SQL script into your New Query page replacing [YourDatabase] with the name of your database.
    EXEC sp_resetstatus [YourDatabase];
    DBCC checkdb([YourDatabase])
    DBCC CheckDB ([YourDatabase], REPAIR_ALLOW_DATA_LOSS)

Click Execute

Your database should no longer be tagged as (suspect) and you should be able to access it.
''Transaction ST03N (Workload Monitor)''
Do you know good old transaction ST03N? It’s a very handy tool for analyzing the workload in your systems and identifying the root cause of performance issues. In our case, we only want to use ST03N to find out the number of dialog steps caused by a specific transaction.

Unfortunately, dialog steps are not the best data point for measuring how often transactions are being called. Transaction A might cause many dialog steps while being used for example, while transaction B causes only a few dialog steps. Even if transaction B is called more often, your top list might start with transaction A.

Quick guide to the transaction

Obviously, ST03N is a very powerful tool with a large number of functionalities. As a matter of fact, getting to the information we are searching for requires several steps and/or clicks. Let me roughly describe how to find the data.
* Start transaction ST03N and make sure you are in expert mode.
* In the upper left pane, search for “workload” and select total (or any individual server)
* Double-click on the day, week or month that you want to analyze the data for
* You will notice that a new pane appears at the bottom left. Here you need to double-click on “standard”
* As the results show up on the right, you need to set the aggregation (above the results) to “application”
* You can now select one of the application areas displayed (for example SD)
* In the new results, you might need to set the aggregation to “transaction”.
* Finally, sort the column “# Steps” to get a sorted list of all transactions in SD

There's a useful video about [[how to identify top transactions using ST03N|]].

Advantages and disadvantages

+ Comprehensive technical analysis of what’s going on in your system(s) beyond a pure top transactions list.
+ Is already in your ABAP system, so that you can quickly generate a first top transaction list.
+ There is nothing to be activated beforehand. You just need authorization for this transaction.
-  Dialog steps are not necessarily the best indicator to create a top transaction list.

''Transaction SM20 (Security Audit Log)''
SM20 is another pretty classic transaction. It was (and in some places still is) typically used to track security-relevant activities in the system. Of course, we are not interested in all the data and alerts that it might show us. What we are interested in is a tiny side feature that generates a list of the top transactions almost perfectly.

I should stress however that the security log needs to be activated in your system. If it’s activated already, and you have authorization for the transaction, you could give it a try right now. If not, get in touch with your system and/or security administrator. They should be able to activate it for you.

Quick guide to the transaction

* Start transaction SM20
* Specify timeframe and click “Read AuditLog”
* When you receive the results, just go back to the previous screen.
* The start screen now indicates that a number of log entries are available
* Mark one or multiple of the servers in the left menu and click on the “statistics” tab
* Check “transactions” and click “show statistics” at the very top of the screen. (hint: In my test case I noticed that “show statistics” appeared only when I clicked through all other tabs before. So you could give this a try if “show statistics” doesn’t appear)
Advantages and disadvantages

+ Is already in your ABAP system, so that you can quickly generate a first top transaction list.
+ Creates an attractive list that provides exactly what we are searching for.
-  Requires the Security Log to be activated in your system
''Alternatives for gathering the information''
There are a certain number of other tools available. If these are not already in use at your company, note that a number of pre-conditions have to be met, and configurations performed, before you can use them. As I want to provide a comprehensive overview however, I would still like to mention these.

''UPL (Usage and Procedure Logging)''
The UPL is a fairly new tool, that is (or can be made) available in any ABAP-based system. It can log all called and executed ABAP units like programs, function modules down to classes, methods and subroutines. It can also be used to evaluate usage of Smartform, Adobe print form and SAPscripts. All with no performance impact on the measured system.

As such, this tool is pretty interesting for custom code management and for us too, as it can report how often specific programs and/or transactions are called. You even can use the SAP Solution Manager system and numerous analytic options provided by its BW.

The [[Usage and Procedure Logging How-To-Guide|]] (S-user required) seems to be the best starting point for further investigation.

''Process Observer'' 
Another option for acquiring the data we are searching could be the Process Observer. This tool adopts a different approach to the other ones I have mentioned. It looks into the processes based on your SAP Business Suite environment, while the other tools look into purely technical activities in the systems. It also needs to be mentioned that its purpose is to optimizing process performance and correctness rather than listing top applications. If you have more of a business background however and want to perform your analysis beyond pure lists of applications and UX, this is a better tool than the straight out technical analysis provided by the methods given above. The best starting point to learn more about it seems to be this [[Process Observer document on SCN|]].
As of NW 7.1, SDM is gone. Most people won`t have noticed this, but with SAP Portal running on 7.3 and with ongoing migrations from 7.0 directly to 7.3, this is one of the changes you`ll have to adjust yourself to. SDM was used to deploy WDJ and portal applications; and it came with a nice feature: undeploy.

SCN has a document explaining [[the options you have now to undeploy an EAR / SCA file|]]. It lists several options, with option 1 – telnet – mentioned as the best option.

In case you do not know the telnet port of your server, you can use the MMC can be used. Open SAP MMC and select ''telnet'' from the ICM process of the desired instance.
[img[undeploy JAVA 01.jpg]]

If not already configured, SAP MC will ask you to specify a telnet command.
[img[undeploy JAVA 02.jpg]]

If this is the case, you might think to use [[putty|]]: it`s just an exe file to be executed (here we have to assume that the same Windows administrator that is not trusting you is not aware of any MS tool that blocks specific processes from being executed). Starting putty in telnet mode and pointing it to your server and telnet port will (probably) give you:
[img[undeploy JAVA 03.jpg]]

This is what you should normally get; having the Server listening, but only on interface As this is the local interface, connections from outside the server are not possible. 

You can allow external connections, and many sites do, but you shouldn`t. There is a good reason the default configuration of the telnet server is to listen only on localhost. If you opt to open the telnet port for remote access, you do this on your own needd to be aware of the possible security issues this will create. It is a good time to verify that your server is in a server DMZ with a firewall set up and configured in an intelligent way. The only way to connect to telnet should be indirect and with a secured connection. In fact, you should NOT continue to configure your server as outlined here. Unfortunately it is as of now one of the few ways to undeploy an application. 

An alternative is to use the guiconsole application. That will connect to the P4 port and from there to the telnet server. To be able to use that alternative, you'll have to configure the telnet server to accept connections from the P4 port. To prepare the telnet server for P4 access, use ''configtool'':
[img[undeploy JAVA 04.jpg]]

Set the value to true.

[img[undeploy JAVA 05.jpg]]
<RANT>''This is important. You need to restart the cluster. Yes, the whole cluster just to initiate a configuration reload of the telnet server. I do not know why this configuration change demands a cluster restart, or what is the reason behind it.''</RANT>

How does the telnet access over guiconsole look like?
[img[undeploy JAVA 06.jpg]]

The "alternative" with P4 means that while you won't have to configure //ICM - P4 is accessible by default from remote//, you will have to configure the telnet server. Restart of your cluster included. Independent what you use, in the end you`ll use telnet. So P4 ''without SSL'' should also not be used and you`ll have to make the guiconsole tool available on the administrator`s computer.

To access telnet remotely, you need change the configuration setting //ICM - P4 is accessible by default from remote// from it's default in the instance profile. To see the complete default configuration of ICM, you can use SAP MMC:
[img[undeploy JAVA 07.jpg]]

This is the default configuration for the telnet protocol. The //security// here is that the hostname parameter is set to localhost, only allowing connections from the local NIC to port 50008. The profile file is in ''./profile/INSTANCE_PROFILE''. Add the following line:
icm/server_port_3 = PROT=TELNET, PORT=50008
Restart your instance to make ICM pick up the configuration.

Note: This is a permanent configuration of the telnet server. Instead of activating the external access for a few minutes to perform the action, administrators will leave the port open. This implies that the firewall between the server and the rest of the network is configured in such a way to block access from non-administrators. In case you skipped my above comments: telnet is bad.

Either way, now telnet is accessible from the outside and you can log on using a configured portal user.
[img[undeploy JAVA 08.jpg]]

First thing is to see what you can do, with the man command:
[img[undeploy JAVA 09.jpg]]

For more detail on the undeploy command, use man undeploy:
[img[undeploy JAVA 10.jpg]]

For the simple use case of uninstalling a single application, the command //UNDEPLOY name=MyApp is sufficient. The parameters needed are name and vendor. Get these by using the //list_app// command..
[img[undeploy JAVA 11.jpg]]

In this case, vendor is // and the application name is //vc~test_impl//, making the application appear as: To get more information about the application, use the explore command 
[img[undeploy JAVA 31.jpg]]

Everything matches, it’s the right application, Before going to undeploy the application, we should check if the app is running or not:
[img[undeploy JAVA 30.jpg]]

As the app is not running, undeploy it should not affect the work of some users, and you can undeploy the application using //undeploy name= vc~test_impl
[img[undeploy JAVA 12.jpg]]

After the command is executed without any errors, the application is undeployed. To ensure this, issue the //list_app// command again. It will show that the application is no longer deployed on the server.
Go to transaction SM_WORKCENTER then *Maintenance Optimizer*. This will display the MOPZ transactions, and we can get the Transaction ID which we are going to delete. In this case, we are going to delete the transactions with IDs  8000000151 to 8000000215.

Now goto SE38 and run program *CRM_ORDER_DELETE *

Now, enter the Server group (562) by pressing F4, then enter the MOPZ Transaction ID selection criteria you want to delete into the Business Transaction Number, and enter *SLMO* in the Business Transaction Type, and execute.

You will get a confirmation screen, then a list of the deleted entries.
Unfortunately there are no standard transactions or reports which could provide such functionality, but there are some "workarounds" which can help with that.
Transaction AL11 just shows the files available on the server, therefore the "workarounds" are simple

find out if you have component EA-APPL installed; the easiest way is to go to menu System -> Status... in any window, then select button "Component information". If EA-APPL is installed, you can see it in the resulting list.

If you ''do'' have component EA-APPL installed on the SAP system...
Use transaction CG3Y. This transaction is easy to use: you just need to enter the path of the required file and the path where the file should be downloaded to the front end. 

or use program CACS_FILE_COPY.
You can start it via transaction SA38 or SE38. In the program you can select "Applicn on Presentation Server", and set the Source and Target Files.
If you ''do not'' have component EA-APPL installed on the SAP system.
Download the file as a simple list.
When you open the file in transaction AL11, you can download it as a simple list via menu System -> List -> Save -> Local file. You can select "unconverted" to save the data as a regular file, or "spreadsheet" to save the data which can be used in Excel.
Note that usually, each line in the file has a maximum width of 512 characters. See SAP Notes 952766 - AL11 corrections and improvements and 1898998 - Improvements in transaction AL11 for further information 
or use function module ARCHIVFILE_SERVER_TO_CLIENT.
This is an unreleased function module which can be started from transaction SE37. Since this function module was intended for SAP-internal purposes, results may vary. 
or (if all else fails) write your own program on OS level :)
There is no option given explicitly for changing a released Transport Request R back into modifiable status in STMS or SE01 Transactions.

# Execute the report RDDIT076 (via SA38 / SE38)
# Supply the Transport request number
# On the resulting screen, double click on the Transport request.
# enter edit mode
# change the request status to D and save
# If necessary, repeat steps 3 to 5 for the workbench etc tasks within the Transport request itself.
# check status via SE01 or SE09

Once you have changed the Transport Request back to Modifiable, you can change objects in the Transport request. You will have to release the tasks and Transport request again. Before you release the Transport request again, you have to 
# double click on the Transport request, 
# navigate to the properties tab, 
# enter into edit mode. 

You will see "Attribute" column in the screen.
Select the row "EXPORT_TIMESTAMP", delete it and save
Now you can release the Transport request, and the datafile and cofile will be overwritten in OS level with same file name.

If you don't follow these steps, you will get an error "Request <Request ID> has the invalid attribute EXPTIMESTAMP"
Depending on release, SAP has a standard report called RSBTONEJOB2, that can be used to prevent periodic jobs the jobs to run multiple times in parallel, 
Create a variant for the report you want to run:
where RUNONLYONCE is the jobname, REPORT and SOME_VARIANT are the details of the report you are running.
Pay attention to the name of the variant. Now you have to save this variant with the same name as the variant of the report:
Now create the job in SM36:
The job name has to be the JOBNAME you entered before. As step, you just have to add RSBTONEJOB2 with the created variant:
When this job runs, it first checks if there is another job with the same name - if not, the entered REPORT is executed with the selected VARIANT.
SAP Systems often receive transport files (DATA and CODILE) from third parties. These can be for 

The supplier of the transport files should also provide additional information about the contents of the transport, e.g object lists as plain text file, so that development teams can be informed about which objects will be imported (and possibly overwritten).

''Easy Way''
You need to put the 'K' file into \usr\sap\trans\cofiles and the 'R' file into \usr\sap\trans\data. Then, you can either use the tp command-line tool (see below), or you can go into STMS, go into the import queue of any system in the transport domain (so a sandbox is fine), and use ''Extras -> Other Requests -> Add'' and add the request.

This adds some entries about the transport into a few tables (E071K etc), but it doesn't actually import the transport, and it doesn't change anything about your system. It just allows the transport to show up as importable in the queue, and that will make it so that you can read the object list of the transport. Then, if you decide not to import it, you can delete it from the queue, and your system is back to the way it was before. Also, doing this will not put the transport into any other system's queue. 

''Hard Way''
Logon to the Operating System of your transport host / transport domain controller, and open a command prompt, you should be able to use the 'tp' tool to get information about requests. 
{{{tp getobjlist <request#> pf=<tpparamfile>}}}

You need to put the 'K' file into \usr\sap\trans\cofiles and the 'R' file into \usr\sap\trans\data. For instance, if you set your directory focus to \usr\sap\trans\bin, and your TP parameter file is 'tp_domain_dev.pfl', and the request in question is SIDK910101, then the command would be 
{{{tp getobjlist sidk910101 pf=tp_domain_dev.pfl}}}
Run RSTRANSP to generate enerates entries for transport of variants. 
You can enter the names of variants to be transported generically.
''The Outbound Process''

Create segments(WE31)
Create an idoc type(WE30)
Create a message type (WE81)
Associate a message type to idoc type(WE82)
Create a port(WE21)
If you are going to use the message control method to trigger idocs then create the function module for creating the idoc and associate the function module to an outbound process code.
Otherwise create the function module or stand alone program which will create the idoc
Create a partner profile(WE20) with the necessary information in the outbound parameters for the partner you want to exchange the idoc with.Trigger the idoc.

''The Inbound Process''

Creation of basic Idoc type (Transaction WE30)
Creating message type (Transaction WE81)
Associating the Message type to basic Idoc type (Transaction WE82)
Create the function module for processing the idoc
Define the function module characteristics (BD51)
Allocate the inbound function module to the message type(WE57)
Defining process code (Transaction WE42)
Creation of partner profile (Transaction WE20)
''Solaris SPARC''
mee929@dcvsuz478 $ more /etc/release
                      Solaris 10 10/09 s10s_u8wos_08a SPARC
           Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.javascript:;
                        Use is subject to license terms.
                           Assembled 16 September 2009
mee929@dcvsuz478 $ uname -r
mee929@dcvsuz478 $

To identify the release
SPident -v*
cat /etc/SuSE-release*
Some additional remarks:
The user TMSADM is only required in client 000.
The user TMSADM should have user type B=System (by the way: forget user type C, as it's never required anymore. Use user type B for all background and all remote users.)
The user TMSADM should only have authorization profile S_A.TMSADM, but no other profile, role or reference user assignment.
''White Papers:'' 
Secure Configuration of SAP NetWeaver Application Server Using ABAP 
Version 1.2 January 2012
''Documentation / Implementation:''
Note 1515926 - Update #1 to Security Note 1414256
Note 1414256 - Changing TMSADM password is too complex
Note 1488406 - Handling the generated user TMSADM
Note 1486759 - Blocking unauthorized access to system using TMSADM to 4.6B
Note 761637 - Logon restrictions prevent TMSADM logon
''Related Topics:'' 
Note 1726102 - EWA: "Default Passwords of Standard Users": User TMSADM
Note 1552894 - RSUSR003: Checking the standard password for user TMSADM
Note 863362 - Security checks in the SAP EarlyWatch Alert
''Consulting Service (which would include the handling of the TMS):'' 
Note 1504652 - Consulting: Secure Configuration of Application Server ABAP
When transferring SAP transports between system, SAP uses the operating system filesystem as an internediate file storage area.
When you get a transport from SAP (for example, the attachments to Note 1390014 - Syntax error in property tax sample formats in EhP4), you need to add the files to the Transport Management System filesystem. The question is what files go where, and how do you identify the transport that they belong to.

[[SAP HELP - File Structure for TMS|]]

[[SAP HELP -- File Naming Conventions for TMS|]]

''Change Request Information File''
The change request information file for a given transport is located in the transport directory "\usr\sap\trans\cofiles".
This contains information about a change request, including the transport type and the class of the objects to be transported. It also has information on the steps required for the change request, exit codes, and the time of execution.
The name is derived from the name of the change request:
K<6 digits>.<source system>

''Data File Names''
All data files are located in the transport directory "\usr\sap\trans\data".
The name of a data file consists of the name of the change request, and a code letter. The code letter distinguishes between data files generated by R3trans or by application programs for application-specific development environment objects (ADOs) - Note that the R.. file is always present, the D... file is only present sometimes.:
R<6 digits>.<source system> R3trans
D<6 digits>.<source system> application programs

Move the K*** and R** files to the appropriate directories;
external zip file

Change Request Directory (cofiles)

Data Directoiry (data)

Once you've done this, you can import the transport into your SAP system

Select the system you're going to import into;
either //Import Queue// then //Display//
or double click on the system details

Now we can attach the transport to the import queue for this system
//Extras// then //Other Requests// then //Add//

Now we specifiy the transport we are adding
If the Change Request file is Knnnnnn.ABC, then the Transport name is ZBCKnnnnnn
If the Change Request file is K900148.JTR, then the Transport name is JTRK900148
If the Change Request file is K900155.JTR, then the Transport name is JTRK900155

You will get a few status messages, get asked to confirm ....

... get a few more status messages, and then the transport is added to your import queue

1) The RC column shows that the transport has not been imported; We have only attached the Transport to the import queue and you still need to import the transport.
2) The ST column (in my case) tells me that the transport does not match the components installed on my system. You will not (hopefully) see this. 

Repeat for any subsequent transports you need to add ...
|Author|Eric Shulman - ELS Design Studios|
|License| and [[Creative Commons Attribution-ShareAlike 2.5 License|]]|
|Description|Insert Javascript executable code directly into your tiddler content.|

''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.

''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text

''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.

''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed.  Thus, you cannot load a library and //immediately// use it's functions within the same tiddler.  However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).

To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened.  For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.

Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines.  Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.

''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.

If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display.  For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.

//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//

''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.

Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)

an "alert" message box:
><script show>
	alert('InlineJavascriptPlugin: this is a demonstration message');
dynamic output:
><script show>
	return (new Date()).toString();

wikified dynamic output:
><script show>
	return "link to current user: [["+config.options.txtUserName+"]]";
dynamic output using 'place' to get size information for current tiddler:
><script show>
   if (!window.story) window.story=window;
   var title=story.findContainingTiddler(place).id.substr(7);
   return title+" is using "+store.getTiddlerText(title).length+" bytes";

creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
   if (!window.story) window.story=window;
   alert("Hello World!\nlinktext='""'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");

loading a script from a source url:
> contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
	return "loading demo.js..."

><script label="click to execute demo() function" show>
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
!!!!!Revision History

''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
''2005.11.08 [1.0.0]'' initial release

This feature was developed by EricShulman from [[ELS Design Studios|http:/]]
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			if (lookaheadMatch[1]) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = lookaheadMatch[1];
				document.body.appendChild(script); document.body.removeChild(script);
			if (lookaheadMatch[5]) { // there is script code
				if (lookaheadMatch[4]) // show inline script code in tiddler output
				if (lookaheadMatch[2]) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
					link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"

				else { // run inline script code
					var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
					try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
} )
Based on [[How To install SAProuter via SNC|]]
Depending on the Operating System that your Router is to be installed on:
[[482466 - Installation - SNC protected Internet customer connection|]]
[[525751 - Installation of the SNC SAPRouter as NT Service|]]

Service name is ''SAP_Router''
uses ''saproutab.txt'' and ''saproutab.trc''
Runs under ''sm1adm''

Note: use the same PIN when asked during 
Environment variables
cd C:\usr\sap\saprouter
sapgenpse get_pse -v -r C:\usr\sap\saprouter\certreq -p c:\usr\sap\saprouter\local.pse "CN=solman, OU=0000817116, OU=SAProuter, O=SAP, C=DE"

 Got absolute PSE path "c:\usr\sap\saprouter\local.pse".
Please enter PIN:
Please reenter PIN:
 Supplied distinguished name: "CN=solman71, OU=0000817116, OU=SAProuter, O=SAP, C=DE"
 Creating PSE with format v2 (default)
 Generating key (RSA, 1024-bits) ... succeeded.
 certificate creation... ok
 PSE update... ok
 PKRoot... ok
Generating certificate request... ok.

Use ''certreq'' to get the actual certifcate from (look for ''SAPRouter certificates'')

cd C:\usr\sap\saprouter
sapgenpse import_own_cert -c srcert.txt -p local.pse
Please enter PIN:
CA-Response successfully imported into PSE "c:\usr\sap\saprouter\local.pse"

sapgenpse seclogin -p C:\usr\sap\saprouter\local.pse -O sm1adm
 running seclogin with USER="Administrator"

 creating credentials for user "SOLMAN71\sm1adm"...
Please enter PIN:
 Adjusting credentials and PSE ACLs to include "SOLMAN71\sm1adm"...
   C:\usr\sap\saprouter\cred_v2  ... ok.
   C:\usr\sap\saprouter\local.pse  ... ok.
 Added SSO-credentials for PSE "C:\usr\sap\saprouter\local.pse"
   "CN=solman, OU=0000817116, OU=SAProuter, O=SAP, C=DE"

To validate the certifcate, logon as user sm1adm
cd C:\usr\sap\saprouter
sapgenpse get_my_name -v -n Issuer
 Opening PSE "C:\usr\sap\saprouter\local.pse"...
 PSE (v2) open ok.
 Retrieving my certificate... ok.
 Getting requested information... ok.
SSO for USER "sm1adm"

  with PSE file "C:\usr\sap\saprouter\local.pse"

Issuer  : CN=SAProuter CA, OU=SAProuter, O=SAP, C=DE

To Install the service you probably need to logon as Administrator.
''Ensure saprouttab.txt is correct for SNC ''

cd C:\usr\sap\saprouter
ntscmgr install SAP_Router -b C:\usr\sap\saprouter\saprouter.exe -p "service -r -W 60000 -T C:\usr\sap\saprouter\saprouttab.trc -R C:\usr\
ap\saprouter\saprouttab.txt -K P:CN=solman, OU=0000817116, OU=SAProuter, O=SAP, C=DE"
CreateService SUCCESS

Modify the SAP_Router service (setting logon to sm1adm)
Modify registry key \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SAP_Router (see [[OSS Note 525751|]])
This is to make the Distinguished Name ==> "p:CN=solman71, OU=0000817116, OU=SAProuter, O=SAP, C=DE"

Check if the certificate has been imported successfully with the following command:
sapgenpse get_my_name -v -n Issuer

The name of the Issuer should be:
CN=SAProuter CA, OU=SAProuter, O=SAP, C=DE

After 04/15/2015 tha name of the Issuer should be:
CN=SAProuter CA, OU=SAProuter, O=SAP Trust Community II, C=DE

NOTE: From 04/15/2015 11:00 AM CET until 07/18/2015 you need to import the old SAProuter Root CA manually:
The old SAProuter SMP Root CA certificate is attached to SAP note 2131531.

Import the old SAProuter SMP CA Root CA certificate as trusted into your PSE. 

sapgenpse maintain_pk -a smprootca.der -p local.pse 

This is necessary, since SAP has to keep using saprouter certificates signed by the old SAProuter SMP Root CA for interoperability reasons. If you omit this step, SNC connections to SAP cannot be established.
There is very little documentation on this appart from [[this SCN thread|]];

Your installation is requesting the contents of the DVD / download ''51039102_13 SL CONTROLLER 700'' or ''51039102_14 SL CONTROLLER 720''. Search for the DVD number (''51039102_13'' or ''51039102_14'' on the [[SWDC||]] //Search for Software Downloads// link. 

* Ignore any message on the Service Market Place about //Content - ATTENTION SPLITTED ARCHIV - FOR MORE INFORMATION PLEASE READ NOTE 1258173//
* It is operating system independent (despite the top level directory)
''How to find information about an SAP Java instance''
Go to the index url - http://<server_name>:<port>/index.html then select the System Information" link.
You will get a page detailing or linking to much of the same information as the SAPguis System > Status, including summary information on Software Components installed and their versions. You can also see detailed configuration information for each of the Java Virtual Machines on each of the server nodes and links to provide all the detailed information you can stand.

''How to find logs for SAP Java systems''
In a Java-based system, there is no single transaction that shows you all the logs for all the Java systems, but the first place to start is NetWeaver Administrator.
Go to the Java server main page, as noted above, and click on NetWeaver Administrator. Then, navigate to System Management > Logs and Traces, and you can find logs across the Java server node.
Additionally, Visual Administrator (which, granted, is going away with the Netweaver 7.3, or so I hear) will allow you to view any and all logs on the system. So, for example, it can be used to view the contents of the work directory, just as you would look on an ABAP system.

''How to monitor memory in SAP Java systems''
In a Java system, memory utilization works a bit differently from ABAP. Memory is allocated and then later cleaned up by a garbage collection process.  By enabling Solution Managers Root Cause Analysis Work Center, you can get good information on the utilization of Java memory, as well as the performance and frequency of garbage collection.
Additionally, SAP provides customers a free, fully functional Right To View license for Wily Introscope. It has a few limitations; for example, it doesnt create custom dashboards and customer alerts, and it cant be used to monitor non-SAP applications. But it is a highly valuable tool in the free version and can be used to perform a deeper analysis of memory areas in your SAP Java applications. Installing it is highly recommended, if not required, by SAP supp

'''Is it possible to remove/undeploy software components with JSPM?''
No. Undeployment of Netweaver components or applications can easily break runtime dependencies. In Netweaver Java 7.0 one can use SDM for undeployment.

''How do I redeploy the same component with JSPM?''
JSPM does not allow to deploy an SCA with the same version (release, SP-level, patch-level) as an already deployed component. However, in some special cases you may need to redeploy an SCA with the same version. Use command line:
go "-config=/jspm/forceMode=true" "-config=/jspm/deployVersionRule=updateAll"
to redeploy all SDAs. See [[note 1123333|]] for more options.
{{{// If value is falsy and not a string, return}}}
{{{// undefined. Otherwise, return 'good input!'}}}
{{{// Note that this means that the empty string ('')}}}
{{{// should return 'good input!'.}}}
{{{function detectGoodInput(value) { }}}
{{{   if (!value && value !== "") {  }}}
{{{     return false; } }}}
{{{  else { }}}
{{{    return "good input"; }    }}}
{{{ } }}}

The following two functions produce identical results....
{{{// This should be similar to the function you implemented }}}
{{{// earlier. }}}
{{{function moreConventionalDefaults(param, defaultParams) { }}}
{{{  if (!params) { }}}
{{{    params = defaultParams; }}}
{{{  }   }}}
{{{  return params; }}}
{{{} }}}

{{{function conventionalDefaults(params, defaultParams) { }}}
{{{  // Use || to implement a better default mechanism. }}}
{{{  return params || defaultParams; }}}
{{{} }}}
//Just remember kids, when youre out there smashing the state, to always keep a smile on yer lips and a song in yer heart.// 
Woody Guthrie
SAP kernels are not always at the same level on the instances of a system; I've seen problems cause when they were at the same level, but different versions (I.e. REL v EXT). The ''System, Status'' menu path will tell you the Kernel Release and Patch level but it won't tell you if you're running EXT or REL.

For this (and lots more version info the the CryptoLib version, ICU version, including UNICODE details, etc) go to SM51, select a particular server and then select ''Release Notes''.

[[171356 - SAP software on Linux - Essential information|]]
[[187864 - Locale Support on Linux|]]
[[654982 - URL requirements due to Internet standards|]]
[[801415 - DB6 Installation on Unix with db2_install|]]
[[929929 - Latest SAPinst Patch|]]
[[936887 - End of maintenance for Linux distributions|]]
[[941735 - SAP memory management for 64-bit Linux systems|]]
[[1021236 - Linux Using SAP Kernel 7.01 and higher on RHEL4 and SLES9|]]
[[1027146 - Database administration and monitoring using the DBA Cockpit|]]
[[1027336 - DB6 New functions in the DBA Cockpit|]]
[[1172419 - Linux Supported Java versions on the x86_64 platform|]]
[[1275776 - Linux Preparing SLES for SAP environments|]]
[[1310037 - SUSE LINUX Enterprise Server 11 Installation notes|]]
[[1329179 - DB6 DB2 V9.7 Standard Parameter Settings|]]
[[1341276 - Inst.NetWeaver 7.0 EHP2 Business Suite 7i2010 - UNIX|]]
[[1352689 - DB Inst. NW 7.0 EHP2 Business Suite 7i2010 - UNIX|]]
[[1437105 - Operating system limits for SAP instances|]]
[[1697164 - SAPinst 720-2 - SDT GUI Server|]]
A Few Handy Queries from [[Maximum RPM: Taking the Red Hat Package Manager to the Limit|]]

Below are some examples of situations you might find yourself in, and ways you can use RPM to get the information you need. Keep in mind that these are just examples. Don't be afraid to experiment!

''Finding Config Files Based on a Program Name''
You're setting up a new system, and you'd like to implement some system-wide aliases for people using the Bourne Again SHell, bash. The problem is you just can't remember the name of the system-wide initialization file used by bash, or where it resides:
# rpm -qcf /bin/bash
Rather than spending time trying to hunt down the file, RPM finds it for you in seconds.

''Learning More About an Uninstalled Package''
Practically any option can be combined with -qp to extract information from a .rpm file. Let's say you have an unknown .rpm file, and you'd like to know a bit more before installing it:
# rpm -qpil
Name        : rpm                  Distribution: Red Hat Linux Vanderbilt
Version     : 2.3                        Vendor: Red Hat Software
Release     : 1                      Build Date: Tue Dec 24 09:07:59 1996
Install date: (none)                 Build Host:
Group       : Utilities/System       Source RPM: rpm-2.3-1.src.rpm
Size        : 631157
Summary     : Red Hat Package Manager
Description :
RPM is a powerful package manager, which can be used to build, install,
query, verify, update, and uninstall individual software packages. A
package consists of an archive of files, and package information,
including name, version, and description.
By displaying the package information, we know that we have a package file containing RPM version 2.3. We can then peruse the file list, and see exactly what it would install before installing it.

''Finding Documentation for a Specific Package''
Picking on bash some more, you realize that your knowledge of the software is lacking. You'd like to see when it was installed on your system, and what documentation is available for it:
# rpm -qid bash
Name        :bash                   Distribution: Red Hat Linux (Picasso)
Version     :1.14.6                       Vendor: Red Hat Software
Release     :2                        Build Date: Sun Feb 25 13:59:26 1996
Install date:Mon May 13 12:47:22 1996 Build Host:
Group       :Shells                   Source RPM: bash-1.14.6-2.src.rpm
Size        :486557
Description :GNU Bourne Again Shell (bash)
You never realized that there could be so much documentation for a shell!

''Finding Similar Packages''
Looking at bash's information, we see that it belongs to the group "Shells". You're not sure what other shell packages are installed on your system. If you can find other packages in the "Shells" group, you'll have found the other installed shells:
# rpm -qa --queryformat '%10{NAME} %20{GROUP}\n' | grep -i shells
       ash               Shells
      bash               Shells
       csh               Shells
        mc               Shells
      tcsh               Shells
Now you can query each of these packages, and learn more about them, too. Note: You could use the -g option to query for that group directly - This is a more general way of searching the RPM database for information: we just happened to search by group in this example.

''Finding Recently Installed Packages, Part I''
You remember installing a new package a few days ago. All you know for certain is that the package installed a new command in the /bin directory. Let's try to find the package:
# find /bin -type f -mtime -14 | rpm -qF
Looks like RPM version 2.3 was installed sometime in the last two weeks.

''Finding Recently Installed Packages, Part II''
Another way to see which packages were recently installed is to use the -queryformat option:
# rpm -qa --queryformat '%{installtime} %{name}-%{version}-%{release} %{installtime:date}\n' | sort -nr +1 | sed -e 's/^[^ ]* //'
rpm-devel-2.3-1 Thu Dec 26 23:02:05 1996
rpm-2.3-1 Thu Dec 26 23:01:51 1996
pgp-2.6.3usa-2 Tue Oct 22 19:39:09 1996
pamconfig-0.50-5 Tue Oct 15 17:23:22 1996
setup-1.5-1 Tue Oct 15 17:23:21 1996
By having RPM include the installation time in numeric form, it was simple to sort the packages and then use sed to remove the user-unfriendly numeric time.

''Finding the Largest Installed Packages''
Let's say that you're running low on disk space, and you'd like to see what packages you have installed, along with the amount of space each package takes up. You'd also like to see the largest packages first, so you can get back as much disk space as possible:
# rpm -qa --queryformat '%{name-%{version}-%{release} %{size}\n' | sort -nr +1
kernel-source-2.0.18-5  20608472
tetex-0.3.4-3  19757371
emacs-el-19.34-1  12259914
rootfiles-1.3-1  3494
mkinitrd-1.0-1  1898
redhat-release-4.0-1  22
If you don't build custom kernels, or use TeX, it's easy to see how much space could be reclaimed by removing those packages.

The Wintel hardware key can be found in \\server\sapmt\sid\SCSxx\work\dev_ms 

[Thr 6872] *** I listen to internal port 3901 (3901) ***
[Thr 6872] *** HTTP port 8101 state LISTEN ***
[Thr 6872] CUSTOMER KEY: >B1852323227<

[Thr 6872] build version=701.2008.03.06

search on * CUSTOMER KEY*
Heres a simple python script to list all installed python modules:

{{{python -c "help('modules')"}}}

Occassionaly, when you run it you will see:

{{{Please wait a moment while I gather a list of all available modules...}}}

{{{Fatal Python error: Interpreter not initialized (version mismatch?)}}}
{{{Abort trap}}}

This error message does not tell me which Python module caused the error. So, to determine which module is actually compiled with the wrong python version, run this command with the verbose flag instead:

{{{python -vc "help('modules')"}}}
[[A Complete beginner’s guide for SAPUI5|]]
Two directory that contain valuable JAR packages from SAP are:
SAP NetWeaver AS Java: 7.0x
SAP NetWeaver AS Java: 7.3x
To get a list of SAP jars you only have to run [[tattletale|]] against these directories to get the reports. This can take time, but it is a one time task (per SP, EHP or even release). Still, in my case, the report generation took 30 minutes for the folder. The reports are rather large. For 7.0x it’s more than 320 MB.
[img[Location of SAP Java 01.jpg]]

The JAR files another JAR file depends on
[img[Location of SAP Java 02.jpg]]

Details about a JAR file
[img[Location of SAP Java 03.jpg]]

Tattletale can also be run against a single WAR or EAR file:
./java/bin/java -Xmx512m -jar tattletale.jar com.tobias.trn.test.war  ./reports/
[img[Location of SAP Java 04.jpg]]

Possible problems

There can be many, many JAR files inside a directory like apps/ If this is the case, tattletale will exit with an OOME:
./java/bin/java -jar tattletale.jar /usr/sap/CTB/JC00/j2ee/cluster/server0/apps/ ./reports/
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at javassist.bytecode.ConstPool.readOne(
        at javassist.bytecode.ConstPool.<init>(
        at javassist.bytecode.ClassFile.<init>(
        at javassist.CtClassType.<init>(
        at javassist.ClassPool.makeClass(
        at javassist.ClassPool.makeClass(
        at org.jboss.tattletale.analyzers.AbstractScanner.scanClasses(
        at org.jboss.tattletale.analyzers.JarScanner.scan(
        at org.jboss.tattletale.analyzers.WarScanner.scan(
        at org.jboss.tattletale.Main.execute(
        at org.jboss.tattletale.Main.main(
Adjust the heap size to a value high enough like [2]:
./java/bin/java -Xmx512m -jar tattletale.jar /usr/sap/CTB/JC00/j2ee/cluster/server0/apps/ ./reports/
Tattletale needs Java 5 to run.  In case your NetWeaver is <7.1, you’ll have to install Java 5.
[1] Tattletale home page
[2] Documentation
As of September 2015, MOPZ no longer selects the latest available Java patches for the selected Support Package. It seems that SAP has changed the default behavior in MOPZ so that it selects patch level 0 when choosing stack dependent files. SAP Solution Manager 7.1 SP12 was used as the reference system, I believe it has MOPZ 3.0.

See for further information (including dangers and appropriate workaround).

NOTE: Unless you use the "Add Java Patches" in the Stack-Dependent step of MOPZ while generating the stack XML, YOU WON'T BE ABLE TO APPLY PATCHES LATER ON, unless you do it manually that is. MOPZ seems to use the selected set of files to determine the available patches. If your system is already at the target level, you won't have any files to select and thus MOPZ won't find any patches. Basically what that has meant for some customers is that we had to restore the system and to start over.

Also see [[2022451 - Add Java Patches - Things to consider|]]
//"Madness does not always howl. Sometimes it is the quiet voice at the end of the day saying, "Hey, is there room in your head for one more?"// 
<<tiddler ToggleRightSidebar with: '<>'>>
[[UNIX (Generic)]]
[[UNIX (SAP)]]

[[Windows (Generic)]]
[[Windows (SAP)]]

[[SAP (General)]]

[[Scripting Languages]]
[[Other Coding]]


[[OSS Note 77430  Customizing: Current settings|]]
[[OSS Note 356483  Customizing: Current settings in the test system||]]

As of Release 4.6 you can maintain this setting from the IMG. 
Position the cursor on the corresponding IMG activity and select the menu options 
On the following screen, select the tab page Maint.objects. There you can see a list of the assigned Customizing objects. 
By double-clicking on the corresponding line, you navigate to the Customizing object and can directly set the flag Current settings there.

As an alternative you can also call Transaction SOBJ to access the Customizing object, and set the flag directly.
Position the cursor on the corresponding IMG activity and choose Edit - Display IMG activity. 
On the following screen, select Maint.
On the following screen, choose 'Objects' in the area ''Technical attributes.''

Now the system displays a list of the assigned Customizing objects. The types V (View) and S (Table (with text table)) stand for view maintenance transactions, while type C stands for a view cluster transaction.

For type V and S objects, the transport connection for the view or table can be deactivated as follows:
#Call transaction SE54
#Enter the Customizing object (view or table)
#Select Generated objects
#Choose Create/change
#Select no, or user, recording routine 
#Save the change

For type C objects, you deactivate the transport link by turning it off for all related views or tables, as follows
#Call transaction SOBJ
#Select Display
#Select Position
#Enter the Customizing object (View cluster) in the field Object, and enter the value C into the type field.
#Select the Customizing object and select Piece list in the navigation menu
#All views or tables contained in the view cluster are displayed.
#Deactivate the transport link for these views or tables as described for SE54

The SAP functionality behind this assumes that the Client Role ( transaction SCC4 ) of the client you are working in is set to ''Production''. For other ''Non Modifiable'' systems (where the Client Role is Test, Demo, etc), you need to deactivate the transport connection for that particular object (if possible) as well.

*Perform these changes in your development / customisation system, and transport through to production.
*The change is active in all clients of the system.
*You can also change the Customizing object in a locked client (independent of the client role).
*Once the above steps are done, it is no longer possible to manually transport entries of the view or table.
''Step 1''
Assign UME roles:

to group ''Everyone'' using the User Management application :

Step 2
Assign J2EE Engine security role ''SystemInfo_Support_Role'' (part of application // to group Everyone.

''Step 2a'' using Visual Administrator

In Visual Administrator navigate to Server -> Security Provider -> Runtime (default) -> Policy Configurations (default)
In the "Components" tab, select "", then click on "Security Roles":

Select "SystemInfo_Support_Role" and click on "Switch to edit mode". 

Now click on "Security Role" radio box:

Click "OK" when the warning message comes up:

Now click on "Add" next to "Groups":

Now enter "everyone" as name and press "Search":

Now select (make sure it displays with blue background) group "Everyone" and press "OK":

Switch back to "read-only" mode and check that "Everyone" is now listed under "Groups" for Security Role "SystemInfo_Support_Role"

''Step 2b'' without Visual Administrator (i.e. NW7.4)
1 Navigate to the user administration UI.
2 Create a new role, e.g. "sysinfo" and assign the following actions to the role:
   "tc~lm~webadmin~permissions", "SystemInfo_Display" all actions (6) from the service "tc~monitoring~systeminfo".
3 Assign this role to the "everyone" group along with

''Related SAP notes''
Note Number: 812031: /sap/monitoring/SystemInfo URL cannot be reached
Note Number: 1256901: /monitoring/SystemInfo alias security role mapping
Note Number: 1031561: Wrong system number in SystemInfo application
Note Number: 1291202: SystemInfo application does not open
Martin English
If you need to copy a system and in the process create  a new or separate development system with objects owned by a new SID, you will  need mass change of ownership (tadir entries).
sqlplus / as sysdba @rename_tadir
This can be run once or every time you move objects between landscapes.This script was developed for to support a 4.7 SAP Landscape, "DEV -> QAS -> PRD" being in BAU operation, while an upgrade Project ECC6 Landscape " ECD -> ECQ -> ECP" was being created. The transports generated from the old BAU system during the course of the project needed to be integrated to the project system, but their ownership needed to be changed each time as they would then be modified after regression testing.
Script {{{rename_tadir.sql}}} need to be modified to change owner sapsr3 to the owner of ''your'' system objects (could be sapr3, sapsr3, or sap<sid>). In the example shown below, the source system object owner is "DEV" and the target system owner is "ECD".  Naturally you will need to edit the script to match your new landscape. Script will need be run on each and every system in the future state landscape in this case the Project ECC6 landscape eg ECD,ECQ and ECP.
set echo on
spool rename_tadir.log
-- Example uses ECD as the new targe SID and DEV as the old (source) SID
-- User expected is sapsr3, but owner could be sapr3 or sap<sid>
-- Backup tadir
create table sapsr3.tadir_backup as select * from sapsr3.tadir;
-- get counts
select count(*) from sapsr3.tadir where srcsystem='ECD';
select count(*) from sapsr3.tadir where srcsystem='DEV';

update sapsr3.tadir set srcsystem='ECD' where srcsystem='DEV' ;

-- get new counts
select count(*) from sapsr3.tadir where srcsystem='ECD';
select count(*) from sapsr3.tadir where srcsystem='DEV';

prompt Now if you are happy type "commit;" otherwise type "rollback;"

spool off
Other aspects to consider:
Migration of Object versions from original system - see [[Note 130906 - How can versions be transported?|]]
Reset of the transport number controlled in the E070L table.
update dev.E070L set TRKORR='DEVK906000';
NOTE: this does ''not'' remove the need to resolve integrating, reintegrating and regression testing in the project system as new transports/changes flow from the BAU landscape. This is hard work and a disaster can only be avoided with diligent effort by all stakeholders.
You don't need access to the SAP SWDC function to get MaxDB software; You can download the SAP MaxDB software via SAP store  (use search entry ''SAP ~MaxDB'' or follow //Our Offerings->Database and Technology//) - Registration is necessary.
[[SAP's internal Problem tracker for MaxDB|]]

following seven (7) entries require an S Number
[[1020175 FAQ: MaxDB installation, upgrade or applying a patch|]]
[[962019 System copy of an SAP MaxDB Content Server database|]]
[[767598 Available SAP MaxDB documentation|]]
[[822240 FAQ: SAP MaxDB: Using external backup tools|]]
[[1619726 FAQ: SAP MaxDB Content Server|]]
[[1423732 FAQ: SAP MaxDB snapshots|]]
[[1722076The Future of SAP MaxDB|]]

[[MaxDB Expert Session about Database Analyzer - Recording|]]
[[MaxDB Expert Session about Database Analyzer - Slides|]]


Version 7.5 of SAP DB was superceded by Version 7.6 of MaxDB


''Database status / online / offline''
dbmcli db_enum}}}
dbmcli -d NSP -u <control>,<pwd> db_state
dbmcli -d NSP -u <control>,<pwd> db_offline
dbmcli -d NSP -u <control>,<pwd> db_online

''Adding Space''
mkdir  f:\sapdb\SM1\sapdata
dbmcli -d NSP -u <control>,<pwd> db_admin
dbmcli -d NSP -u <control>,<pwd> db_addvolume data E:\sapdb\NSP\sapdata\DISKD000 f 1024000
dbmcli -d NSP -u <control>,<pwd> db_online

There are parameters that define maximum number of data files and log files; to change them...
dbmcli -d NSP -u <control>,<pwd> param_getvolsall LOG
UseMirroredLog                   NO
MaxLogVolumes                    4
LogVolumeName001                 512000     F  F:\sapdb\NSP\saplog\DISKL001  1
LogVolumeName002                 512000     F  F:\sapdb\NSP\saplog\DISKL002  1
LogVolumeName003                 512000     F  F:\sapdb\NSP\saplog\DISKL003  1

dbmcli -d NSP -u <control>,<pwd> param_put MaxLogVolumes 8

You can add extra volumes immeadiately

__Note:__ page_size is 8K, therefore ''1,024,000'' equals 8192MB = 8GB
Max. Data per Volume ''512GB''
Max, Volumes per DB ''4095''
Max Database Size: ''32TB''
See the notes on [[ConverterVolumeIdLayout|]] in the MaxDB documentation for more details on how the maximum database size is calculated.

''Backup - create template for DATABASE,  for Redo LOGS', For AUTO Redo LOGS''
dbmcli -d NSP -u <control>,<pwd> db_admin
dbmcli -d NSP -u <control>,<pwd> medium_put SAPDatabase    N:\SAPComplete FILE DATA 0 8 YES
dbmcli -d NSP -u <control>,<pwd> medium_put SAPLogs           N:\SAPLogs       FILE LOG 0 80 YES

''Backup - DATABASE and Redo LOGS''
dbmcli -d NSP -u <control>,<pwd> db_admin
dbmcli -d NSP -u control,<pwd>
dbmcli on NSP>db_connect 
dbmcli on NSP>backup_start SAPDatabase
dbmcli on NSP>backup_start SAPLogs
Note: All I/O goes through the kerenel.exe process / kernel daemon

''Backup - Automatic log backup''
dbmcli -d NSP -u <control>,<pwd> db_admin
dbmcli -d NSP -u control,<pwd>
dbmcli on NSP>db_connect 
dbmcli on NSP>medium_put SAPLogsAUTO N:\SAPLogs       FILE AUTO
dbmcli on NSP>backup_start SAPLogsAUTO
dbmcli on NSP>param_put AutoLog On  //Set parameter//

''Execute SQL''
dbmcli -d NSP -u <control>,<pwd> db_execute SELECT username,connectmode,user_id from users
''Important files:''
Taken from [[SCN - Migrating SAP systems on Oracle with less effort|]]

A feature called "Transportable Tablespaces" was introduced in Oracle 8i, but with a lot of restrictions. Release by release the restrictions were reduced and with Oracle 10g R2 it is usable in a SAP environment for migrating whole sap systems. The main restriction on Oracle 10g R2 is //"The source and destination platforms must have the same endian format"// (For more informatiom about SAP and endianness, see [[Note 552464|]] or the link in the references.). FWIW, there is another method available if this restriction were removed, but it is not very practicable and not supported in a SAP environment -  [[Note 1367451|]] for details.

''Initial checks''
At first we have to check which platforms we can migrate our database to. Assume the database is running on HP/UX 64 bit - run the following SQL on the database to get the possible target platforms:
shell> sqlplus / as sysdba
----------- ----------------------------- --------------
          1 Solaris[tm] OE (32-bit)       Big
          2 Solaris[tm] OE (64-bit)       Big
          6 AIX-Based Systems (64-bit)    Big
          3 HP-UX (64-bit)                Big
          4 HP-UX IA (64-bit)             Big
          9 IBM zSeries Based Linux       Big
         16 Apple Mac OS                  Big
         18 IBM Power Based Linux         Big

Check that the database is currently in the correct state for  transport (in the following example the target platform will be AIX 6 64 bit):

shell> sqlplus / as sysdba
SQL> startup mount;
SQL> alter database open read only;
SQL> set serveroutput on
SQL> declare
db_ready boolean;
db_ready := dbms_tdb.check_db('AIX-Based Systems (64-bit)',0);

Check if the database is using external tables, directories or BFILEs. Normally these objects are not used in a SAP environemnt, but you never know..
shell> sqlplus / as sysdba
SQL> startup;
SQL> set serveroutput on
SQL> declare
external boolean;
external := dbms_tdb.check_external;

''Software installation on the target platform''
Install the oracle RDBMS software on your target system,  with the ''same patchset and additional patches'' as on the source system, then install the SAP appliaction server on your target system.

''The conversion of the database''
The conversion can be done on the source or target platform - it depends on availability requirements of the source system, whther you're copying to different platforms, whether the source or the target(s) would provide better performance etc. When I've used this method, I was creating several copies on the same platform, so the total runtime would have been less if I did the conversion on the source system, but I did the conversion on the target to ensure minimum disruption to the developers on the source system. The following example shows how to perform the conversion on the source system, but [[Note 1035051 - Transportable tablespaces||]] provides an example of conversting the database on the target system. 

Let's assume again, that our database is running on HP/UX 64 bit and we want to migrate it to AIX 6L 64 bit. The folder <TARGET_FOLDER> is the directory where the converted database files (and meta files) are stored. You can also influence the throughput with the parameter PARALLELISM. Created ''all'' sub folders of the SAPDATAs for the data files in the folder <TARGET_FOLDER>.
shell> sqlplus / as sysdba
SQL> startup mount;
SQL> alter database open read only;
shell> rman target /
      TRANSPORT SCRIPT '/<TARGET_FOLDER>/transportscript.sql'
      TO PLATFORM 'AIX-Based Systems (64-bit)'
      DB_FILE_NAME_CONVERT '/oracle/<SID>/sapdata1/','/<TARGET_FOLDER>/',
''Post Steps''
After the "CONVERT DATABASE" finished successfully, you will get an information like this:
"Run SQL script /oracle/TST/oraconv/transportscript.sql on the target platform to create database 
Edit init.ora file /oracle/<SID>/102_64/dbs/init_00l0fo1j_1_0.ora. 
This PFILE will be used to create the database on the target platform; to recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the target platform
Note - if you want to / need to change the internal database identifier (i.e. <SID>), use DBNEWID Utility"
Now you just have to copy the converted data files from <TARGET_FOLDER> to your target host. In the meantime you can edit the paths in the generated init.ora and SQL script "transportscript.sql".
If your copy job has finished run the transportscript.sql and your database is up and running.

Advantages over R3Load:
You can build up your whole environment priro to database copy,
standard DB Migration usually requires sveral runs of the R3load migration procedure to reduce runtime,
and the runtime of the "CONVERT DATABASE" was much less than with R3load.

[[Wikipedia Endianness|]]
[[Note 552464 - What is Big Endian / Little Endian? What Endian do I have?||]]
[[Note 1035051 - Transportable tablespaces||]]
[[Sapnote 1367451 - Oracle 10g: Transportable Database||]]
[[Oracle Admin Guide "Introduction to Transportable Tablespaces"|]]
[[Oracle Backup and Recovery "Cross-Platform Transportable Database: RMAN CONVERT DATABASE"|]]
[[Oracle RMAN command "CONVERT"|]]
''Simple indenting:''

{{{ {{indent{text }}} produces:



{{{!Text}}} produces:
{{{!!Text}}} produces:
{{{!!!Text}}} produces:
and so on.

''Dotted horizontal lines:'' 

{{{----}}} produces the following line:
[[9942 - Maximum number of work processes|]]
[[28022 - Customer system - Where-used list of SAP objects|]]
[[36283 - Buffer synchronization|]]
[[36781 - Table APQD is very large|]]
[[46272 - Implement new data class in technical settings|]]
[[72248 - Dispatcher in status 'Yellow',SAP system running|]]
[[73606 - Supported Languages and Code Pages|]]
[[88416 - Zero administration memory management for the ABAP server|]]
[[113747 - Owners and authorizations for BR Tools|]]
[[129813 - Windows_ Problems due to address space fragmentation|]]
[[130906 - How can versions be transported|]]
[[171356 - SAP software on Linux - Essential information|]]
[[195157 - Application log - Deletion of logs|]]
[[198140 - Reassigning systems|]]
[[212876 - The new archiving tool SAPCAR|]]
[[314568 - SAP GUI for HTML functionality, Limitations, Sp. Behaviour|]]
[[316353 - INST 4.6D SAP Basis - Heterogeneous System Copy|]]
[[366869 - HOLD, EXECUTED, WCONFIRM entries in ARFCRSTATE|]]
[[369007 - qRFC Configuration for the QIN Scheduler|]]
[[375566 - Large number of entries in tRFC and qRFC tables|]]
[[407125 - Poor performance of Q and TRFC on ORACLE|]]
[[419933 - FAQ - Maintaining change documents in user management|]]
[[435125 - Poor performance of tables used by CRM (Oracle only)|]]
[[506314 - SAPHTTP and SSL (as client)|]]
[[510007 - Setting up SSL on Web Application Server ABAP|]]
[[517484 - Inactive Services - sorted list.txt|]]
[[517484 - Inactive services in the Internet Communication Framework|]]
[[564551 - SAPHTTP and SSL with client certificate|]]
[[618861 - Composite SAP Note ORA-01013|]]
[[646681 - Reorganizing tables with BRSPACE|]]
[[674851 - Virtualization on Windows|]]
[[684106 - Microsoft runtime DLLs|]]
[[706478 - Preventing Basis tables from increasing considerably|]]
[[716604 - Access to Sun J2SE and recommended J2SE options|]]
[[723909 - Java VM settings for J2EE 6.40 and 7.0|]]
[[724452 - Central Note for SAP NetWeaver Java Server 04 and 2004s|]]
[[724713 - Parameter Settings for Oracle Solaris 10 and above|]]
[[727998 - Complete Replacement of Service Definitions for SDCC SDCCN|]]
[[739788 - SAP NetWeaver_ Template-Based Configuration - Composite Note|]]
[[761637 - Logon restrictions prevent TMSADM logon|]]
[[779664 - Consistency check of qRFC queues with deletion|]]
[[789220 - Support Package level for NetWeaver InstallationsUpgrades|]]
[[791649 - User unable to logon by ticket|]]
[[799639 - IDES - General Information about the usage of IDES systems|]]
[[808505 - Secondary connections to Oracle database|]]
[[819876 - DB6 Additional info about upgrade (based) on SAP NW AS 7.0|]]
[[823941 - SAP Start Service on Unix platforms|]]
[[824757 - Dependencies between SAP ERP component lists|]]
[[832662 - Audit-friendly configuration of BR Tools on Unix|]]
[[842635 - Session Management for Web Dynpro Applications|]]
[[852008 - Release Restrictions for SAP NetWeaver 2004s|]]
[[870871 - License key installation|]]
[[885343 - SAP System Landscape Copy|]]
[[886102 - Special procedure|]]
[[886102 - System Landscape Copy for SAP NetWeaver BW|]]
[[912229 - WEBAS Java - SSO Public Key Certificate expires every 2 years|]]
[[912367 - RSADMIN Parameters|]]
[[937323 - Changing Production Client in an ABAP+Java System|]]
[[950114 - Profile parameter zdate DSTswitch_contloctime|]]
[[962334 - Linux SAP on Xen virtual machine|]]
[[989963 - Linux VMware timing problem|]]
[[994364 - SAP TimeZone (java stack)|]]
[[995116 - Backward porting of sapstartsrv for earlier releases|]]
[[995771 - System Landscape Copy for SAP SRM 4.0 and SRM 5.0|]]
[[1002587 - Flat Memory Model on Windows|]]
[[102088 - Reducing downtime when changing from summer to winter time|]]
[[1010990 - Configuring a Standalone Gateway in an HA ASCS instance|]]
[[1027439 - Migrating Secure Storage across customer numbers|]]
[[1039369 - FAQ XI Axis Adapter|]]
[[1040377 - SAP Download Manager - download not possible for older JDK|]]
[[1054852 - Recommendations for migrations to MS SQL Server|]]
[[1055856 - Common error messages when setting up Single Sign-On|]]
[[1056052 - Windows - VMware vSphere configuration guidelines|]]
[[1056052 - Windows VMware ESX 3.x or vSphere configuration guidelines|]]
[[1083421 - JAVA AS sso2_wizard|]]
[[1083421 - SSO2 Wizard|]]
[[1088717 - Active services for Web Dynpro ABAP in transaction SICF|]]
[[1104578 - Virtualization on Windows Enhanced monitoring|]]
[[1108852 - SAP NetWeaver 7.0 Business Suite 2005 SR3 Windows|]]
[[1122387 - Linux SAP Support in virtualized environments|]]
[[1125952 - DB6 NW 7.0 SR3 SAP Business Suite 2005 SR3 - Windows|]]
[[1126127 - DB6 Deferred Table Creation and Row Compression|]]
[[1138877 - How to Deploy External Drivers JDBC JMS Adapters|]]
[[1158363 - vm-support - Exporting Diagnostic Data from VMware|]]
[[1225909 - How to apply SAP Best Practices|]]
[[1240081 - Java Cryptography Extension Jurisdiction Policy files|]]
[[1244548 - IDES ERP 6.0 ECC 6.0 SR3 (2)|]]
[[1248926 - AS Java VM Parameters for NetWeaver 7.1 based products|]]
[[1257108 - Collective Note - Analyzing issues with Single Sign On (SSO)|]]
[[1264540 - Workload Data Collection for BWA (BIA) in Solution Manager|]]
[[1275776 - Linux - Preparing SLES for SAP environments|]]
[[1281896 - High Memory Consumption and CRM Webclient| High Memory Consumption and CRM Webclient.pd]]
[[1286428 - Configuration Wizard PI Wizard Templates Overview|]]
[[1299493 - Loadable SAP Support Monitors|]]
[[1303814 - TREX 7.1 Usage of TREX on Virtual Machines (VM)|]]
[[1314689 - DBA Cockpit - Dynamic loadable monitors (RSORASTT)|]]
[[1316558 - System hang situations on Windows Server 2003|]]
[[1325985 - Reverse proxy support of ABAP Web service framework|]]
[[1329554 - DB6 Error inst. of DB2 V9.5 on Win in domain with underscore|]]
[[1365796 - Local host name resolution fails in Windows Failover Cluster|]]
[[1374671 - High Availability in Virtual Environment on Windows|]]
[[1380654 - SAP support in cloud environments|]]
[[1394544 - Web Service Navigator White List|]]
[[1414256 - Changing TMSADM password is too complex|]]
[[1431296 - LOB conversion and table compression with BRSPACE 7.20|]]
[[1476239 - SAP system migration to Windows 2008 2008 R2|]]
[[1476239 - SAP system migration to Windows 2008 or higher|]]
[[1476239 - SAP system migration to Windows 2008 R2|]]
[[1476928 - System copy of SAP systems on Windows 2008 (R2) SQL Server|]]
[[1482272 - Key Figures of Virtualization on VMware vSphere|]]
[[1490337 - High Availability SAP System on Windows Server 2008 (R2) SCM 5.1|]]
[[1494740 - SAP system migration from Windows 2003 to 2008 (R2) 64-bit|]]
[[1501701 - Single Computing Unit Performance and Sizing|]]
[[1514898 - XPI Inspector for troubleshooting XI|]]
[[1518419 - Page file and virtual memory required by the SAP system|]]
[[1532805 - Add-On Compatibility of SAP NetWeaver 7.3|]]
[[1532884 - Mass Job Changes|]]
[[1586993 - URL Rendering Problems with IE9|]]
[[1590563 - SAP web applications within the context of IE9|]]
[[1593969 - WF Notif - Runtime error CALL_FUNCTION_REMOTE_ERROR|]]
[[1599159 - IE9 Release Note for Administrators|]]
[[1602569 - Internet Explorer and Firefox browser support for Web Dynpro|]]
[[1611483 - SolutionManager7.1 - Outside Discovery common error messages|]]
[[1612283 - Hardware Configuration Standards and Guidance|]]
[[1612283 - HW deployment DIAGRAMS PDF FILE - version 6 4|]]
[[1621114 - RSTRFCEH - Performance improvement with deletion|]]
[[1626853 - SolutionManager7.1 - Outside Discovery FQDN Customization|]]
[[1632574 - BW tasks for System Copy Automation|]]
[[1641218 - SAPLogonTicketKeypair not found in keystoreTicketKeystore entries|]]
[[1641811 - ILM Delete jobs terminate with error message BA 212|]]
[[1656099 - SAP on AWS - Supported products, platforms and landscapes|]]
[[1676665 - Setting up Microsoft SQL Server 2012|]]
[[1684545 - SAP Installation Media and SQL4SAP for SQL Server 2012|]]
[[1691434 - Firefox user agent version parsed incorrectly|]]
[[1697114 - Determining hardware ID in Amazon clouds|]]
[[1707321 - BW System Copy - Note analyzer Post Copy Automation (BW-PCA)|]]
[[1721575 - SAP system migration to Windows Server 2012|]]
[[1734333 - BW Pre and Post Upgrade and Migration Tasks|]]
[[1747308 - Installation Guide UI development toolkit for HTML5 (SAPUI5)|]]
[[1780433 - System copy of SAP systems on Windows 2012 SQL Server|]]
[[1789659 - Release Restrictions for SAP Netweaver|]]
[[1800423 - Update Eclipse-based SAP tools|]]
After backing out a botched attempt to convert SSL from DES to Kerberos authentication on a production portal environment on NW7.01, the customer's portal stopped accepting any https connections.
Checking in Visual Admin in ''Dispatcher -> Services -> SSL Provider''. we found the Active Sockets no longer existed, even though the HTTP Provider had the correct Ports 
and the Key storage area on the server nodes had the correct ssl credentials.
Various google searches showed its a common problem, but there was one definitive answer:
# On ''Dispatcher -> Services -> SSL Provider'', click Server Identity and choose correct ssl credentials - It allows it, even though there are no active sockets.
# On ''Dispatcher -> Services -> HTTP Provider'', cut & paste the key for Ports to a text file, then blank the key, update & save.
# Stop & restart the portal (SAP MMC).
# Once portal has restarted, restart Visual Admin.
# On ''Dispatcher -> Services -> HTTP Provider'', reinsert the Ports entry you saved, update & Save.
# Active Sockets reappeared in ''Dispatcher -> Services -> SSL Provider''.
# Customer could access portal via https
I had an install that was looping. Specifically, the ''startJava'' phase was 
* examining the system profile,
* modifying the system profile, 
* restarting the JAVA engine,
* examining the system profile, and so on

I looked in the sapinst_dev.log in the ..\sapinst_instdir\SOLMAN71\SYSTEM\ADA\CENTRAL\AS directory for the appropriate step and searched for ''Execute step startJava''. 
INFO       2013-03-06 22:21:17.426 [sixxcstepexecute.cpp:855]
Execute step startJava of component |NW_Onehost|ind|ind|ind|ind|0|0|NW_Onehost_System|ind|ind|ind|ind|onehost|0|NW_CI_Instance|ind|ind|ind|ind|ci|0|NW_CI_Instance_StartJava|ind|ind|ind|ind|7|0

Joining the component name and the step name gave me a STEPKEY. I searched for this in keydb.xml (same directory)
      <fld name="STEPKEY">

I updated the "STATUS" in this row. Note that the value of ''USED_HOSTNAME'' should be the hostname you specified in your original installation parameters.
      <fld name="STATUS">
          <property name ="USED_HOSTNAME" value ="solman71" />

I restarted the installation using the //Continue with the old option// option, and it ran to completion.

1. You need to make sure that the steps you are removing or manipulating are executed, either before restarting the installation (in my case, just making sure that everything in the SAP instance was running correctly) or as part of the Post Implementation steps.
2. I am adamant that the only reason this worked first time was because I took a copy of the sapinst directory before I started. In other words, take backups before you modify !!
3. I performed this on a Windows installation, but the only difference between this and any other installation should be the format of the path names
4. I used Notepad++ to examine the files, as it has a larger search field and displays the XML format much nicer than the standard windows Notepad.exe

Typically the first step after completing the installation (and getting a backup) is to allow remote access to NetWeaver Administrator (NWA). As you will be using this tool quite a bit for the remainder of the configuration, it makes sense to do this first. By default, access to NWA is restricted to browsers installed on the local host, i.e. the server itself, which is only useful if you intend to constantly use Remote Desktop to the server console. While it certainly makes sense to restrict which workstations or network segments have access to this powerful tool, you will likely want to expand it to beyond just the server console.
From the server console, open Windows Explorer and navigate to ''\usr\sap\<SID>\SYS\global\security\data''. Make a backup copy of the file ''icm_filter_rules.txt'' and then edit the file.
First, you will probably want to insert some line breaks to make it more readable, as out-of-the-box it appears to be all on one line. Then insert one or more lines so that the resulting file looks like this:
# ICM Rewrite Rules for NWA (restrict access to local host and internal segment)
if %{REMOTE_ADDR} !stricmp [AND]
if %{REMOTE_ADDR} !stricmp ::1 [AND]
if %{REMOTE_ADDR} !regimatch 10.x.x.*
RegIRedirectUrl ^/webdynpro/resources/*$ /nwa/remote_access_error [QSA]
In the 4th line, substitute the appropriate network segment for "10.x.x.*" to include your administrative workstation.
Restart the system and confirm that you can access NWA via http://<hostname>:50000/nwa to confirm correct configuration.

FWIW, you can define / change the location of the icm_filter_rules.txt via the icm/HTTP/mod_<xx> profile parameter - see [[ICM Parameters - Reference for ABAP and Java|]]. This allows you to keep the standard file, in the standard location, and have your own one for debugging  your rules (which can include other redirection rules as well as the NWA one that Matt describes).
|!Service |!Range!|!Default !|
|Dispatcher <br>sapdpNN| 32NN |32ZZ|
|Gateway<br>sapgwNN |33NN |33ZZ|
|Gateway<br>sapgwNN |48NN |48ZZ|
|ICM HTTP |80NN |80ZZ|
|ICM HTTPS | 443NN |Not activated by def.|
|ICM SMTP |25 |Not activated by def.|

Note that ZZ refers to the SAP System Number
[[Network Ports - ABAP Engine]]

26000 Log-Viewer

5xx02 IIOP Initial Contact
5xx03 IIOP SSL Port
5xx04 JAVA P4 Port
5xx05 JAVA P4 HTTP Tunnelling port
5xx06 JAVA P4 SSL port
5xx07 JAVA IIOP Port
5xx08 JAVA instance - Telnet 
5xx09 Monitor Port
5xx10 JMS Port
This usually occurs after a systemcopy or upgrade 
1. List the temporary tablespace datafiles:
{SQL> select NAME,bytes from v$tempfile;
2. Identify the erroneous datafile:
SQL> select file_name from dba_temp_files;
ERROR at line 1:
ORA-01157: cannot identify/lock data file 256 - see DBWR trace file
ORA-01110: data file 256: '/oracle/SID/sapdata2/temp_2/temp.data2'  
3. Create new datafiles instead of the erroneous ones with identical size
mkdir /oracle/SID/sapdata1/temp_3
SQL> alter tablespace PSAPTEMP add tempfile '/oracle/SID/sapdata1/temp_3/temp.data3' size 10480M autoextend off;
4. Drop the erroneous datafiles:
SQL> alter database tempfile '/oracle/SID/sapdata2/temp_2/temp.data2' drop;
[[ORA-01555 - causes and solutions|]]
[[ORA-01555 with a LOB segment|]]
Short dump "DBIF_RSQL_SQL_ERROR" error occured in BI (i.e. BW) Quality system.

The error was "ORA-26040 data Block was Loaded using the NOLOGGING option".

This type of error  occurred only in BW system.   The problem occurred in BW Quality system after system refresh using restore / recovery Oracle database from BW Production system.

Execute brtool in ora<sid> to verify whether error occured pertaining to nologging.
Select  “6” – Check and verification

Select “1) Database System check

After Check database was completed, then view the check log file as shown in the figure below

As shown above ORA-01578 oracle data block corruption error was shown.  Normally block corruption is often due to a hardware error and there is a likely trace file or log entry that was created when it happened. 
Open the trace file

From the trace file as shown in the above figure  the error ORA-26040 block corruption was the result of  NOLOGGING option.
The ORA-26040 error says that the “index”  was loaded using the “nologging” option and then possibly recovered from a backup before the nologging load.

The NOLOGGING option is a great way to speed-up inserts and index creation. It bypasses the writing of the  Primary Redo log, greatly improving performance .
However this approach is very dangerous if you need to roll-forward during this time period during a database recovery.

Therefore , before system refresh to BW Quality system, one must take a backup both before and after all nologging  operations.

It is not possible to roll-forward  through a point in time since there are no images in the archived redo logs for this NOLOGGING operation. ''Hence full
backup  after performing any NOLOGGING operation is must.''

In SAP BW systems, ‘nologging’ for index creation from SAP level  is the default. Indexes  for BW objects  “/BI*/F*” and “/BI*/E*”  are created with NOLOGGING . Hence drop only these indexes  “/BI*/F*” and “/BI*/E*”. The procedure for identifying the index name, partition table name  is described below:
select segment_name,partition_name,segment_type ,block_id,blocks from dba_extents 
where (147445 between block_id and (block_id + blocks - 1)) and file_id=392 and rownum < 2

As shown above, the nologging was set on the creation of  index “/BIC/FGBIPC010~080”  for the given partition table name “/BIC/FGBIPC0100000000005”. Hence it is advisable to drop all the indexes  for the given partition table name rather than  dropping single  index  ““/BIC/FGBIPC010~080” .
The sql script to identify all the indexes for the given partition table name is as shown below:

Then drop all the indexes associated with the given partition table as shown in the figure below.

''Recreate the dropped indexes''

You can recreate the indexes using a standard ABAP report.

Login to  BW Quality system. Enter tx code se38 and report name “SAP_INFOCUBE_INDEXES_REPAIR "

Click execute (i.e. Press F8 key). New  screen appeared. Scroll down  continuously till you find green colour
highlighted as shown the figure below.

You can also recreate the indexes using the following sql command
alter index  "<SAP-Schema>"."<index_name>"  rebuild partition "<SAP_SCHEMA>". "<partition_name>" online logging;

Afterwards, execute brtool in ora<sid> to verify whether nologging  block corruption was cleared or not.

Select  “6” – Check and verification. Then Select “1"  Database System check
After Check database completed, then view the check log file as shown in the figure below


We can see from the check log file that the nologging block corruption  for those objects was cleared i.e. ORA-01578 was not appearing in the check log file. This does not mean that the issue was resolved permanently. You need to execute database statistics and / or check database statistics frequently till no more error reported for other infocube objects.

* NOLOGGING option was enabled on couple of “/BI*/F*” and “/BI*/E*” objects in SAP BW production system. These are the infocubes objects. The indexes for these infocubes  objects had been created with “nologging”
* If you create an index with “nologging” option, Oracle database does not write the changes made to the index blocks to the online redologs. As a result the information is not written to the archive logs either.
* After restore to SAP Quality system during system refresh and apply recovery, many block corruption for infocube objects were reported  after executing brtools for database check or database statistics. That is an expected behaviour.
* Either drop or rebuild  all the infocubes indexes  immediately after system refresh and the error will be gone.
* Perform offline full database backup  in SAP BW production system– so no need to use recovery option  after restore to Quality system.
* In case offline database backup is not possible, use online full database  backup both before and after all nologging  operations.
* NOLOGGING for index creation must be turned off with transaction code “SPRO” in BW production system. See the OSS note 1812719.
* SAP strongly recommend to perform database backup / restore / recovery  using  standard SAP BRbackup / BRrestore / BRrecovery tools .
* Use latest version and patch level  of BR*  tool  for your operating system. Brrestore and BRrecovery tool automatically repairs nologging indexes during brrecovery
* DO not use any other tool except SAP standard BR* tool.

Why was ORA-26040 data block corruption not reported in the SAP BW Production system after executing database check or database statistics  using brtool?
Because the SAP BW production system was never restored.  If the SAP BW Production system crashed or was copied or migrated to new hardware, then data block corruption due to NOLOGGING might be reported in the target system.
As transaction activities (OLTP transactions or batch processing) increases, the amount of transaction logs also goes up. And, if it goes beyond the storage capacity of archive-log directory, your database may hit 'archiver stuck' situation. In addition, various questions may come on surface to be addressed:
- available space for backup may get filled
- available bandwidth to ship archive logs to DR site (Disaster Recovery site) may come short (i.e. there may be delay in transferring archive log files from PRIMARY site to DR site)
- when did archive log generation was huge (this will help in tracing which background process to look for tuning)
This script 
- runs on ORACLE Database Version 8i/9i/10g/11g.
- run as SYSTEM account.
 - runs fast, so no adverse effect on database performance.

As always, run on your Development or Test instance first, before running on Production instance.
This script will generate output file named archive_log_count.html in the current (or running ) directory.
If necessary, transfer (ftp or WinSCP or similar) this file from Oracle database host to somewhere you can open it in web browser.
set echo off
set feedback off
set termout off
set pause off
set head on
set lines 100
set pages 500
clear columns
clear computes
set markup html on spool on preformat off entmap on -
head ' -
  <title>Redo Log Switch Report</title> -
  <style type="text/css"> -
    body              {font:9pt Arial,Helvetica,sans-serif; color:black; background:White;} -
    p                 {font:9pt Arial,Helvetica,sans-serif; color:black; background:White;} -
    table,tr,td       {font:9pt Arial,Helvetica,sans-serif; color:Black; background:#C0C0C0; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;} -
    th                {font:bold 9pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} -
    h1                {font:bold 12pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} -
    h2                {font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} -
    a                 {font:9pt Arial,Helvetica,sans-serif; color:#663300; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -            {font:9pt Arial,Helvetica,sans-serif; color:#663300; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLink          {font:9pt Arial,Helvetica,sans-serif; color:#663300; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkBlue      {font:9pt Arial,Helvetica,sans-serif; color:#0000ff; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkDarkBlue  {font:9pt Arial,Helvetica,sans-serif; color:#000099; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkRed       {font:9pt Arial,Helvetica,sans-serif; color:#ff0000; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkDarkRed   {font:9pt Arial,Helvetica,sans-serif; color:#990000; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkGreen     {font:9pt Arial,Helvetica,sans-serif; color:#00ff00; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
    a.noLinkDarkGreen {font:9pt Arial,Helvetica,sans-serif; color:#009900; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -
  </style>' -
body   'BGCOLOR="#C0C0C0"' -
table  'BORDER="1"'
set heading on
prompt Redo Log Switches for a month
COLUMN DAY   FORMAT a75              HEADING 'MM/dd; Time'
COLUMN H00   FORMAT 999,999B         HEADING '00'
COLUMN H01   FORMAT 999,999B         HEADING '01'
COLUMN H02   FORMAT 999,999B         HEADING '02'
COLUMN H03   FORMAT 999,999B         HEADING '03'
COLUMN H04   FORMAT 999,999B         HEADING '04'
COLUMN H05   FORMAT 999,999B         HEADING '05'
COLUMN H06   FORMAT 999,999B         HEADING '06'
COLUMN H07   FORMAT 999,999B         HEADING '07'
COLUMN H08   FORMAT 999,999B         HEADING '08'
COLUMN H09   FORMAT 999,999B         HEADING '09'
COLUMN H10   FORMAT 999,999B         HEADING '10'
COLUMN H11   FORMAT 999,999B         HEADING '11'
COLUMN H12   FORMAT 999,999B         HEADING '12'
COLUMN H13   FORMAT 999,999B         HEADING '13'
COLUMN H14   FORMAT 999,999B         HEADING '14'
COLUMN H15   FORMAT 999,999B         HEADING '15'
COLUMN H16   FORMAT 999,999B         HEADING '16'
COLUMN H17   FORMAT 999,999B         HEADING '17'
COLUMN H18   FORMAT 999,999B         HEADING '18'
COLUMN H19   FORMAT 999,999B         HEADING '19'
COLUMN H20   FORMAT 999,999B         HEADING '20'
COLUMN H21   FORMAT 999,999B         HEADING '21'
COLUMN H22   FORMAT 999,999B         HEADING '22'
COLUMN H23   FORMAT 999,999B         HEADING '23'
COLUMN TOTAL FORMAT 999,999,999      HEADING 'Total'
break on report
compute  avg LABEL 'Average:' sum LABEL 'Total:' of total  ON report
    SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) || TO_CHAR(first_time, ' Dy') DAY
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'01',1,0)) H01
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'02',1,0)) H02
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'03',1,0)) H03
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'04',1,0)) H04
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'05',1,0)) H05
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'06',1,0)) H06
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'07',1,0)) H07
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'08',1,0)) H08
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'09',1,0)) H09
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'10',1,0)) H10
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'11',1,0)) H11
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'12',1,0)) H12
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'13',1,0)) H13
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'14',1,0)) H14
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'15',1,0)) H15
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'16',1,0)) H16
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'17',1,0)) H17
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'18',1,0)) H18
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'19',1,0)) H19
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'20',1,0)) H20
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'21',1,0)) H21
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'22',1,0)) H22
  , SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'23',1,0)) H23
  , COUNT(*)                                                                      TOTAL
  v$log_history  a
  where trunc(first_time) >= trunc(sysdate)-30
GROUP BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) || TO_CHAR(first_time, ' Dy')
order BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) || TO_CHAR(first_time, ' Dy')
spool archive_log_count.html
spool off

Sample output:
To optimize database settings for the requirements of export/import:
[[784118 - System Copy Tools for ABAP Systems|]]
[[936441 - Oracle settings for R3load based system copy|]]
[[986907 - SQL Server settings for R3load based system copy|]]
[[1054852 - Recommendations for migrations to Microsoft SQL Server|]]
When the target is SQL Server, also check out [[OS/DB Migration to Microsoft SQL Server|]]

Even if you're not doing a UNICODE Conversion, it is worthwhile looking at the relevant notes,because it uses R3load
[[857081 - Unicode conversion: downtime estimate|]]

''R3load progress''
When running R3load to export an Oracle SAP database, it's difficult to see the exact table or tables that is/are being exported. You can log into the Oracle database during the R3load execution and use the following SQL to follow the progress:
SQL> select sess.process, sql.sql_text 
{{indent{ from v$session sess,}}}
{{indent{ {{indent {v$sqltext sql }}} }}}
{{indent{ {{indent {where sess.type='USER' }}} }}}
{{indent{ {{indent {and sess.module like 'DBSL%' }}} }}}
{{indent{ {{indent {and sql.sql_text like '%FROM%' }}} }}}
{{indent{ order by sql.part;}}}
This will show the OS process ID of the R3load process, plus the table(s) (from the FROM clause)  currently being exported.
For large tables, you may be able to see the progress in the V$SESSION_LONGOPS table by looking for rows where TOTALWORK != SOFAR.
[[OSS Note 684106 - Microsoft runtime DLLs|]]

//You are unable to start 32-bit programs as of SAP Release 6.40 or 64-bit programs as of SAP NetWeaver 7.1 because Microsoft runtime DLLs are missing.//

The solution in this note is to download the appropriate //Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package//. I have found, depending on your release of windows and / or Netweaver, that you may need to download the  //Microsoft Visual C++ 2008 SP1 Redistributable Package// and / or //Microsoft Visual C++ 2010 SP1 Redistributable Package//. I imagine that sooner or later, you ''may'' end up having to download a 2012 Redistributable Package.

To get these files, go to the [[Microsoft Download Centre|]], and search for //Microsoft Visual C++ 2008 Redistributable Package// and / or //Microsoft Visual C++ 2010 Redistributable Package//. There will be seperate downloads for IA64 (vcredist_IA64.exe), X64 (vcredist_x64.exe) and X86 (vcredist_x86.exe). Find the appropriate //Microsoft Visual C++ 20NN SP1 Redistributable Package// for your Operating System in the list and download it.

[[Get Windows DLL version]]
[[What is OpenUI5 / SAPUI5 ?|]]
[[SAPUI5 SDK - Demo Kit|]]
[[Help Us To Help You - Share Your Code|]]

[[JavaScript for ABAP Developers|]]
[[Getting Started with SAPUI5: Alternative Guide||]]
[[List of SCN resources for getting started with SAP UI5]]
[[OpenUI5 - Get Started|]]

[[SAPUI5 Apps with secure and user-friendly logon and updates|]]
[[Logoff/Logout function for a UI5 Apllication|]]

[[Building a CRUD Application with SAPUI5 and ICF REST/JSON Service - Part 3|]]
[[A Simple UI5 application running against ABAP without the SAP UI5 Add-on|]]
[[How to Build a SAP HTML5 Application Using MVC with the SAPUI5 Application Development Tool|]]
[[How to Create an ABAP transaction code to launch SAPUI5 application||]]

[[OPENUI5/SAPUI5 on a Memory Stick in less than 12 Simple Steps (and Eclipse in 2 Steps)|OPENUI5/SAPUI5 on a Memory Stick in less than 12 Simple Steps (and Eclipse in 2 Steps)]]
[[UI5 SDK on Node.js|]]

[[Nested UI Routing in OpenUI5|]]
[[Get started with SAPUI5 and Routing|]]
[[SAPUI5 with Advanced Routing|]]

[[SCN UI5 Application based on SCN RSS Feeds|]]

You don't need to use Eclipse to develop apps in SAPUI5.
[[Sublime Text Package for SAPUI5/OpenUI5|]]
[[SAP on Oracle Development Update|]]

[[SAP note 666061 - FAQ: Database objects, segments and extents|]]
[[SAP note 731 - Collective note: ORA-00904|]] - aka non-existent table column is specified in an SQL statement.

[[Migrating SAP systems on Oracle with less effort]]

[[ORA-01555: snapshot too old]] 
[[ORA-01157 - Adjusting Temporary Tablespace]]
[[ORA-26040 : Data Block was loaded using the NOLOGGING option]]

[[HOW TO RESET SAP Passwords]]
[[HOW TO recreate PSAPTEMP Tablespace on Oracle]]
[[HOW TO direct output to an Excel file]]

[[Usefull SQL Statements]]
[[ORACLE: archive log count - hour-by-hour, daily - for a month]]

[[Remove Users (Oracle<=8)]]
[[Remove Users (Oracle9)]]

These are the elements or structures representing business functions, and are used in reporting. For example, 
Client (across the various modules),
Company Code (FI),
Controlling Area (CO), 
Plant (logistics), 
Sales Organization (SD), 
Purchasing Organization (MM), 
Employee Group (HR), etc.

[[User Defaults For Views and Organizational Levels]]

IE8 (because your customer is stuck in the dark ages)
To Uninstall IE8 from command line you need to execute below from command prompt: 
[[SAP and PHP]]
<div class='header' macro='gradient vert [[ColorPalette::HeaderLight]] [[ColorPalette::HeaderDark]]'>

	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>

<!-- horizontal MainMenu -->
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>

<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
Portal consultants and Administrators should read [[IE and Portal – Standards/Quirks Mode Evolution|]] to understand portal rendering issues in IE, the history behind these issues, and the solutions that have evolved. The following steps document what should be done when facing a rendering issue.
1. Check if the issue can be reproduced in other browsers - Chrome and Firefox in particular; Obviously, if the issue can be reproduced in other browser versions as well then it is not an IE rendering issue.
2.Get the necessary information
|SystemInfo|NW version.SP level.patch level|
|Browser version|IE9, IE10, IE11 etc|
3. Verify the [[Product Application matrix|]] to ensure the browser is compatible with your portal version.
4. If you are using IE11, check [[1972506 - Cannot access portal with Internet Explorer 11|]].
5. Verify whether you need the patches from [[2158358 - Browser crashes because of multiple headers in HTML Markup|]].
6. Verify that you have the browser document mode property set according to [[1458799 - Limited supportability for IE8 and above in the Portal|]]. If you are using a custom framework page then add *iview* to the browser document mode.
7. Verify whether note [[1814711 - SAP applications iViews in EP: Rendering Modes|]] is relevant.
8. Determine the the rendering mode required by the application. For example, UI5 iviews must be rendered in the standards mode if the portal framework page is being rendered in quirks mode. If the application has to be rendered in the standards mode then set the iview property "Launch in new window" to "Display in separate headerless portal window ( standard mode)" , i.e. navmode 10. If navmode 10 is not available then you will have to execute the scripts and steps available in [[1737445 - Internet Explorer standards mode rendering for EP|]].
9. If you need content that requires "standards mode" rendering within the portal content area then the Ajax Framework Page Standards mode as described in note [[2001910 - AFP Standards mode support|]] can be used. Note that there are some restrictions; At the time of writing, these include:
 - Only supported for 7.31 SP14 and later and 7.4 SP9 and later
 - The support is from Internet Explorer 9 (IE9) and later.
 - AFP in standards mode must be run without compatibility mode enabled.
 - AFP standards is not supported for administrative scenarios.
 - Standards content and quirks content cannot be displayed together on the same page or in the same session.
''Front-End / PC Requirements''
Set up a ''Print to File'' printer in the Windows Print Manager of the PC -
    'Settings' -> 'Printer' -> 'Add Printer'
    On the window that appears, click on 'Next' button.
    Select 'Local Printer' and click on 'Next'
    Select the port 'FILE Print to File'
    Select 'Generic/Text Only' driver
    Enter 'Printer Name' eg: PDFTEST
    Share as: eg: PDFTEST
    Select 'Finish'. 
''Back End / SAP Requirements''
Create a printer via transaction SPAD,
    Device Type ''PDF1''
    Access method ''G''
    Set the Host Printer field to the same name as you defined your 'Print to File' printer in the Windows
Use the setting 'Print Immediately' in the field 'Time of Printing' in the print dialog pop-up.
When you do this, you should get a pop-up on your Frontend PC asking you for name and path of the PDF file.
You must give the file name a '.pdf' extension. 
[[Process to Transport an SAP Query Existing in Standard Area (Client Specific)|]]
In [[Tables in the CTS Process]] we learned about the RDDIMPDP program. RDDIMPDP program needs to be scheduled in all the clients in an instance. It is recommended to schedule the RDDIMPDP as event driven. RDDPUTPP and RDDNEWPP programs can be used to schedule RDDIMPDP program in the background.
The ABAP/4 programs that RDDIMPDP starts are determined by the transport step to be executed that is entered in the function field of table TRBAT.
|!Function |!Job Name |!Description of transport Steps|
|J |RDDMASGL |Activation of ABAP/4 dictionary objects|
|M |RDDMASGL |Activation of match codes and lock objects|
|S |RDDDISOL |Analysis of database objects to be converted|
|N |RDDGENOL |Conversion of database objects|
|Y |RDDGENOL |Conversion of matchcode tables|
|X |RDDDICOL |Export of AD0 objects|
|D |RDDDIC1L |Import of AD0 objects|
|E |RDDVERSE |Version management update during export|
|V |RDDVERSL |Version management update during import|
|R |RDDEXECL |Execution of programs for post - import processing|
|G |RDDDIC3L |Generation of ABAP/4 programs and screens|

more detail
The Software Update Manager (SUM)  asks you to apply SAP Notes when you're maintaining a system (say QAS). Now, consider, ifyou have already tried to apply these notes in a preceding system (say DEV) before, and you know that the notes are not applicable. It’s just that SUM does not know that. But since they were not applied, they are not transported from DEV to QAS, so SUM asks for them again in QAS. And you do not want to open the system for a connection to SAP Service Marketplace only to make the notes known in the system – especially in PRD. 
So either benefit from SUM 1.0 SP06 which is more precise in listing appropriate SAP Notes.
Or provide the not-applicable SAP Notes to SUM by using the following procedure.
It transports the not-applicable SAP Notes from one system to another:
In system DEV: use the SAP Note Assistant (SNOTE) to download all SAP Notes requested by SUM. 
In DEV: apply the applicable SAP Notes to the system. (This includes assignment to a transport request anyhow.)
In DEV: for those SAP Notes that cannot be applied, use the report SCWN_TRANSPORT_NOTES to assign them to the transport request.
Release and transport the transport request(s) to the next system QAS. Import the request into QAS.
[img[Provide SAP Notes for SUM by transport 01.png]]

Now when you use SUM to maintain system QAS, SUM will not ask you to download the SAP Notes any more. The usage of the report SCWN_TRANSPORT_NOTES is explained in more detail in [[Note 1788379|]].
[[List all installed python modules (or determine bad module versions)]]

''Queue Processing''
There are two types of LUWs namely qRFC and tRFC. qRFC’s can be monitored through the transaction code SMQ1/SMQ2 and tRFC’s through SM58.
''Outbound Message Processing''
Outbound message flow through qRFC is monitored through transaction SMQ1.
Outbound message flow through tRFC is monitored through transaction SM58.
When the message reaches the PI system it is monitored through transaction SMQ2.
Once the message leaves the PI system, it gets monitored in the receiving system. If that is an SAP system, then it is an Inbound Message on that system.
''Inbound Message Processing''
Inbound Message flow through qRFC is monitored through transaction SMQ (PI system). 
Inbound Message flow through tRFC is monitored through transaction SM58 (PI system). 
Inbound Message flow for R3 systems is monitored through the transaction SMQ2.
In R/3 System, once the message has been processed from SMQ2 then the IDoc will be posted to SAP.

''SAP Tables for  Queue Status''
ARFCRSTATE contains the statuses of Asynchronous RFC (ARFC) calls on the Receiver side for qRFC messages.
ARFCSSTATE contains the statuses of ARF Calls on Sender side for qRFC messages. 

The possible values are:
| EXECUTED |The related LUW is completely executed in the target system. The system waits for an internal tRFC/qRFC confirmation from the sending system before this entry is deleted. |
| HOLD |The corresponding application has processed this LUW in parts and wants this LUW to not be repeated in the case of subsequent network or communication errors.|
| WCONFIRM |During a LUW execution the application has prompted the tRFC/qRFC Manager to set status HOLD. If the LUW execution has already been completed but this application has not yet signaled the logical LUW end and if the tRFC/qRFC-internal confirmation from the sending system has been received, then this LUW receives status WCONFIRM.If the respective application informs the tRFC/qRFC Manager about the logical LUW end, then this entry is deleted.|
tRFCQOUT consists of the details of the tRFC queue description and it consists of queue description of data related to BW and it stores the data about the outbound queue.
tRFCQIN consists of the details of the tRFC queue description and it consists of queue description of data related to BW and it stores the data about the inbound queue.
Jobs to be scheduled in both R/3 and PI System
Example showing entries processing very slowly in the SM58 tRFC queue of an R/3 System
Example showing Queue stuck in SMQ2 of PI System
To help avoid these problems we need to schedule some administrative jobs  –

*report RSTRFCEU* - This report deletes the confirmed entries from the table ARFCRSTATE. This is being done by selecting those entries where the value of the field arfcstate is either ‘CONFIRMD’ or ‘WCONFIRM’. This table has huge effect on the messages coming in to the R/3 system. The recommended time-frame is every 30 minutes, because this table fills up very fast which has huge impact on queue processing
Example ARFCRSTATE Table Entries before RSTRFCEU
Example ARFCRSTATE Table Entries after RSTRFCEU
*report RSTRFCQD* – This report deletes the entries present in the tables ARFCSSTATE, ARFCSDATA and tRFCQOUT using the values in the field qtid.

Example ARFCSSTATE Table Entries before RSTRFCQD
Example ARFCSDATA Table Entries before RSTRFCQD

Example tRFCQOUT Table Entries before RSTRFCQD

Example ARFCSSTATE Table Entries ''after'' RSTRFCQD

Example ARFCSDATA Table Entries ''before'' RSTRFCQD

Example tRFCQOUT Table Entries ''before'' RSTRFCQD
Re-organizing and updating of statistics for the table IDXRCVPOR Table in PI System – IDXRCVPOR Table stores the details of relation between IDoc number and PI message ID which will be displayed in the transaction of IDX5 of PI system.
Queue processing performance  in SAP systems can be improved:
by ensuring regular re-indexing and updating of the statistics of the tables like ARFCRSTATE, ARFCSSTATE, TRFCQOUT, ARFCSDATA in R/3 system and IDXRCVPOR table in PI system,
by scheduling batch job for the reports like RSTRFCEU and RSTRFCES to delete the entries from the tables ARFCRSTATE, ARFCSSTATE, TRFCQOUT and ARFCSDATA.
Often you will find that Oracle is not able to restart itself after a system crash.  This is usually due to the presence of a connected process at the time of shutdown which results left over connections etc.  If you attempt to restart R/3 and Oracle using the startsap script from <sid>adm account you will receive an unable to start database type error.  A similar message will probably be returned if you run the stopsap scrip.

Further evidence of this problem may be found in the startdb.log file in the <sid>adm home acount.  Here is an extract from one such log file;

Connect to the database to check the database state:

R3trans: connect check finished with return code: 12
Database not available
*** ERROR:Database possibly left running when system
    went down(system crash?).
    Notify Database Administrator.

To restart Oracle you will need to do the following;

Login as ora<sid>
Start server manager

Type the following commands from the server manager prompt;
SVRMGR> connect internal
SVRMGR> shutdown immediate
(SVRMGR> shutdown abort if the above doesn't work)
SVRMGR> startup

To get out of svrmgr ctrl-d or ctrl-c or exit.

Login as <sid>adm
Start SAP R/3


If the startup command from server manager does not work you may need to run a recover database command in order to reapply the database log files to the data files.

If in doubt, contact your local data management / Unix support group for help.
Program RSTBHIST is a standard SAP program which can be used to track the changes made to a table or customizing object by an user.

Logging only takes place if parameter rec/client in the system profile is set correctly. However, setting the flag on its own does not cause the table changes to be logged. You also need to set the logging flag in SE11 Technical Setting to define whether changes to the data records of a specific table should be logged. If logging is activated for the specific table, every change (with UPDATE, DELETE) to an existing data record by a user or an application program is recorded in a log table in the database.

Note: Activating logging slows down accesses that change the table. First of all, a record must be written in the log table for each change. Secondly, many users access this log table in parallel. This could cause lock situations even though the users are working with different application tables.

The existing logs can be displayed with Transaction Table history (SCU3) as well.


Go to SE38 - RSTBHIST or Transaction code SCU3.

Use the Selection screen to search for the changes made to specific tables or customizing Objects with User name,Date,Time,etc. In this example. we are looking for changes to table T52C5 within a specific period. The T52C5 table is used to store the Personnel calculation rules.

Now we can see all changes to the PCR's, including user and time of the change made, whether it be an insert, update or deletion.
User had had a situation where 3 TB of database (datafiles) needed to be deleted from filesystems (sapdata1..2..3.......12). There were 300 files of 10 GB and 2 files of 2 GB. The traditional linux ''rm'' command was taking 1 min per 10 GB to remove this space, meaning an expected run time for the deletion of  aproximately 5 hours. Even firing multiple rm processes in background did not help much. 

They found a useful link which also provided information on how to use the truncate command for this scenario. Apparently the problem is a //known feature// of the ''ext3'' (and similar) filesystems. 

The command truncates a given file by a given amount. For example: truncate ( <file> 10 )   will truncate <file> by 10 bytes.
If <file> was of 50 bytes, it will then become 40 bytes. After some testing, truncating with 10MB, 100MB, 1MB & 512KB, the user found that truncating chunks of 100 MB took the least time. //Note that this needs to be confirmed on your own hardware combination.//
Create a list of file to be deleted. For example dbfiles.lst
two scripts.... ''''
for (( c=1; c <= 2048; i++ ))
for i1 in `cat dbfiles.lst`
i2=`du -b $i1`
./ $i2 &

and ''''
#!/usr/bin/perl -w
open (my $FILE, "+<", $n1);
truncate( $FILE, $s1 );

Executed the script '''' in background, and used the ''df'' command every 60 seconds or so to measure performance. The average deletion speed was around 1 TB per minute (it had been around 10GB per minute) and the deletion was completed in 3 minutes vs. the 5 hours expected with the traditional ''rm'' command. 
[[Stuff about the SAP Host Agent|]]

Windows example

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator>cd %ProgramFiles%\SAP\hostctrl\exe

C:\Program Files\SAP\hostctrl\exe>sldreg -configure slddest.cfg
Wed Sep 03 14:33:23 2014 SLD Registration Program [7.20.5]  (Sep 24 2012) [Non-Unicode]

Use configuration file 'slddest.cfg' for output!
Please specify the HTTP connect information: [User, Password, Host, Port, HTTP/HTTPS]
User Name       : SLDDSUSER
Password        : *********
Verify Password : *********
Server Host     :
Port [80,443,1024..65535]: 50000
Use HTTPS? (y/n): n

Entered Information
Passwd: (secret)
Port:   50000

Write this information to secure file 'slddest.cfg'? [y=yes/n=no/q=quit] y
Wed Sep 03 14:39:01 2014 Writing data to encrypted file 'slddest.cfg'
Impromptu CCC initialization by 'rscpCInit'.
  See SAP note 1266393.
Wed Sep 03 14:39:01 2014 Data written to secured data file 'slddest.cfg'
Wed Sep 03 14:39:01 2014 Using destination file 'slddest.cfg'.
Wed Sep 03 14:39:01 2014 No key file 'slddest.cfg.key' used.
Wed Sep 03 14:39:01 2014 Use encryted destination file 'slddest.cfg' as data source
Wed Sep 03 14:39:01 2014 Configuration data successfully stored in file: slddest.cfg

C:\Program Files\SAP\hostctrl\exe>saphostexec.exe -restart

Wait for SAPHostControl to be stopped ...
[Thr 2236] Wed Sep 03 14:44:42 2014
[Thr 2236] Process 0 terminated -1

Wait for SAPHostExec to be stopped ...
Wait for SAPHostExec to be started ...
Wait for SAPHostControl to be started ...
Check that SAPHostExec is still running ...

C:\Program Files\SAP\hostctrl\exe>
Have you ever wonder how to retrieve the release status of all software components in your ABAP system ?
Most people know ''SAP Menu'' then ''Status'', then to branching out through the current software component to take you to the whole list.
However, if you want to have a direct access to all, and also be able to download to excel for analysis on a release update, for example, you can always check the CVERS table. Here's the DDIC definition in SE11.

Here's a subset of the table from SE16.

Download, print it to a spreadsheet or PDF, and share it.
''NOTE:'' It only includes the ABAP componets. It does not include any kernel details.

Here’s a list commonly used keyboard shortcuts key combination to use in Remote Desktop Connection navigation, together with the action the shortcuts perform and equivalent keyboard shortcuts on local desktop (in brackets).

|Standard |You want to...  |via Remote Desktop |
|CTRL+ALT+DEL |Open the Microsoft Windows NT Security dialog box |CTRL+ALT+END |
|CTRL+PAGE UP |: Switch between programs from left to right |ALT+PAGE UP |
|CTRL+PAGE DOWN |Switch between programs from right to left |ALT+PAGE DOWN |
|ALT+TAB |Cycle through the programs in most recently used order |ALT+INSERT |
|CTRL+ESC |Display the Start menu |ALT+HOME |
|ALT+PRT SCR|Place a snapshot of the entire client window area on the Terminal server clipboard |CTRL+ALT+Minus sign (-) |
|PRT SC |Place a snapshot of the active window in the client on the Terminal server clipboard |CTRL+ALT+Plus sign (+)|
echo $dbs_db6_schema
connect to <sid>
select mandt, bcode, GLTGB, USTYP, uflag from $dbs_db6_schema.usr02 whereMANDT=100' and BNAME='SAP*'
delete from $dbs_db6_schema.usr02 where bname = 'PDONALDSON' where MANDT=100' and BNAME='SAP*'

alternatives are:
update $db6_schema.usr02 set uflag = 0 where MANDT=100' and BNAME='SAP*'
update $db6_schema.usr02 set pwdstate = 0 where MANDT=100' and BNAME='SAP*'

connect sapr3/sap;
delete from USR02 where mandt='000' and bname='SAP*';
connect sapr3/sap;
delete from utab where tabname='USR02' and varkey like '<client>SAP*%';
Run Query Analyzer
connect as <SID> or sa
delete from <SID>.<sid>.USR02 where MANDT='000' and BNAME='SAP*';
Manual updates of Maintenance license for each system is the perfect target for automation:
* Simple task,
* Data is easily available,
* manual errors can have grave consequences
By activating Automatic License Maintenance is activated, Solution Manager  becomes the agent between a satellite system and Service Market place. 
As illustrated below in diagram: it checks with satellite system if the maintenance license is expiring, if so, then solution manager receives maintenance license from Service Market Place  and makes it available in satellite system’s s license.

Procedure to setup automatic distribution of maintenance license:
To setup solution manager distribution of license, it is necessary that managed systems are configured for EWA report setup in SDCCN. Once EWA is setup in Solution Manager, create job for fetching license data from managed systems:
Go to SDCCN, To Do tab and click on Create button on the menu bar (Select “Get License Data” from the menu).

This will schedule a daily job for the collection license data from managed systems 
To check the logs of job, click on the Done tab and select the log icon in Logs column.

Now, activate license distribution from change management : Go to Solman_workcenter and click on Change Management, License Management ( in left Menu )


In the screen select a system and click on “Activate Distribution” select “Activate Automatic Distribution”
Solution Manager can fetch the license 30 days in advance.
Use this for copying a database for creating a test / QA / regression system

you can modify standard retention value as follows :
- goto transaction ST03 or ST03N
- switch to ''Expert Mode'' (on the top left corner)
- drill down the menu ''Collector and Performance DB'' on the left pane
- drill down the submenu ''Workload Collector'' on the left pane
- double click on ''Control Data'' on the left pane
- change the value of ''Delete Dialog Step Statistics Files if older than'' from default value (48 hours) to the retention period fit your need
- then save values
Switch back to default value by hitting button ''SAP default/ current values''.
[[Note 1433157 - Service Marketplace Components|]] - use in conjunction with
[[Note 90835 Escalate a Service call|]]
[[Note 1281633 Speed Up Processing of a Customer Message|]] - use in conjunction with
[[Getting Started with SCN|]]
The Service Marketplace is the official SAP source for software downloads (installations and patches), reporting bugs, licensing your software, getting corrections etc.
The SAP Community Network (SCN) is the SAP supported social network for SAP Developers, Supporters and Professionals (from the first year ABAPer to the Enterprise Architect wanting to know what Lumira does). It has forums, blogs, wikis... a community of advisers for the SAP ecosystem.

[[SAP Support Information You Can Use|]]

[[SAP Web AS]]
[[SAP Java AS]]
[[Web Dispatcher]]
[[Application / Functional Stuff]]
[[Developer Stuff]]
[[CTS+ / STMS]]

[[Solution Manager]]
[[SLD and LMDB]]
[[SAP BW / BI]]
[[SAP XI / PI]]

[[Tips on Installation and Updates (BASIS)]]
[[SAP Router]]

[[Disable all RFC connections after System Copy]]
[[Change SM36 / SM37 Job Owner]]

[[Download SAPCRYPTO.SAR]]
[[Network Ports used by SAP]]
[[SAPControl HTTP 401]]

[[Print from SAP to a PDF file without any third party software]]


[[Useful Tables]]
[[Useful Reports]]
[[Useful Transactions]]
[[Useful non SAP software]]
[[Useful Service Market Place Notes]]
[[Useful Z* ABAP programs]]

[[SAP Tips and Tricks]]

[[File System / Disk full ??]]
[[Who changed a table ?]]
[[HUB v SIDECAR System]]

[[SAP and PHP]]

Summary of

Even when SAP servers are not connected directly to the public internet and any other measure of security has been optimized, virus scan on this server is still recommended. However, as online scans cause additional load on IO,they will also cause some contention problems if executed on / across critical parts of the application or Windows O/S.   It’s therefore required to exclude some files or directories from AV scans in order to maintain best performance of a SAP installation. Fortunately, there is quite a bit of reference available what to consider for exclusions.

The information below is not specific to a certain AV software but is true for all kinds of AV solutions.
[[Virus scanning recommendations for Enterprise computers that are running currently supported versions of Windows|]]
[[Guidelines for choosing antivirus software to run on the computers that are running SQL Server|]]

''Windows Server 2003 and Windows Server 2008  AV exclusions''


''File Exclusions:'' file and the

''Windows Server Failover Cluster Services: ''
Q:\ (quorum)
%windir%\system32\dns (all subfolders and files)

%windir%\system32\wins (all subfolders and files)

''Print Servers:''
%systemroot\System32\Spool (all subfolders and files)

''Microsoft SQL Server 2000/2005/2008 AV exclusions''
''SQL Server data files: ''

''SQL Server backup files: ''

''SAP  AV exclusions''

''Hyper-V AV exclusions''
If the Windows Server is used as Hyper-V server and hosts virtual machines, there are also some considerations for Virus Scan exclusions required. The following files and directories should be excluded from real-time scanning in order to avoid problems:
· Default virtual machine configuration directory (C:\ProgramData\Microsoft\Windows\Hyper-V)
· Custom virtual machine configuration directories
· Default virtual hard disk drive directory (C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks)
· Custom virtual hard disk drive directories
· Snapshot directories
· Vmms.exe
· Vmwp.exe

[[SAP Note: 1148111 - BWA Revision / BI Support Package - Compatibility|http://]] will tell you whether or not a BW enhancement package is supported with a particular BWA revision release.

[[BW Administration Cockpit]]
[[Useful Transactions - BW]]
[[find the Function Module source of a Virtual Provider]]

* The SAP plugins for Eclipse for ABAP Development (including Gateway), BW Modelling and HANA are available at

[[ORA-26040 : Data Block was loaded using the NOLOGGING option]]
[[1771177 - SQL Server 2012 column-store support for SAP BW|]]
[[KeePass and SAP-Logon|]]

[[SAP front end: What DVDs contain what SAP GUI ?]]

''SAP GUI 7.40''
SAP Note [[2077230 - SAP Logon (Pad) 740: missing SAPRouter string for system entry and error "hostname 'NiHLGetNodeAddr' unknown"|]]
//Migrating to SAP GUI for Windows 7.40 for NWBC will migrate the saplogon.ini to the new UI Landscape Configuration XML. In early releases of the 7.40 version, the SAP Router string will not be migrated successfully, and manual action is required. Using an XML editor (like Notepad++ with XML Tools plugin), open the configuration file (//C:\Users\<Username>\AppData\Roaming\SAP\Common\SAPUILandscape.xml//), sort the XML using the XML Tools and edit the SAP Router strings removing the tailing "/H/".
Save the file and relaunch the SAP GUI Logon Pad or SAP NetWeaver Business Client.//
This is due to be fixed in patch 1, by December 8 2014

Also, see [[SAPUILandscapeGlobal.xml Entries for NWBC and SAP GUI|]] and [[GUI 7.40 old config files not working|]]

''System Branding / Personalisation''
[[SAP note 205487- Modify Logon Screen via SE61|]]
[[Embed an HTML landing page into your SAP GUI home screen|]]

 ''System Environment Variables''
ABTR_TRACE  trace between GUI and RFC; trace is written when this variable is set
DPTRACE  activating trace can be be activated using this variable
RFC_TRACE_DIR  location where trace files (rfc*.trc) are stored
RFC_TRACE_TIME  runtime analysis on the external RFC communication
SAPLOGON_INI_FILE  location of initialization file (saplogon.ini) with all the entries with connection strings to SAP systems
SAP_CODEPAGE  set code page for communication between GUI and SAP system (e.g. UNICODE systems), when client has different code page to server.
SNC_LIB - variable specifies the path to the gssntlm.dll file.
TDW_TIMEOUT  specifies timeout of connection to message server by default it is 10 seconds. 

''location of SAP*.ini files (<= 7.30)''
Extracted from [[SAP GUI Logon Configuration|]] on 2013 December 9
The storage of the saplogon.ini and sapshortcut.ini files has been changed as of SAP GUI for Windows 720 (see [[SAP GUI Application Data Directories|]]).

//The storage of other SAP Logon configuration files like sapmsg.ini, saproute.ini and service files has been kept the same as in the older SAP GUI releases (for details refer to note 38119), because these files are not only used by SAP GUI, but also by other SAP components. Therefore, no changes have been made concerning the storage of these files as of SAP GUI 720.//

With SAP GUI 7.20, the saplogon.ini and sapshortcut.ini files are stored in the roaming user application directory. The default of this path is the SAP\Common directory: ''%APPDATA%\SAP\Common''

%APPDATA% stands for the environment variable specifying the application data directory located directly below the user profile directory.

The paths for Windows XP/Vista/7 are as follows:

    Windows XP: %appdata%\SAP\Common
    Windows Vista/7: %appdata%\SAP\Common


You can change the default directory paths using the Options dialog in SAP Logon. You find the necessary options under SAP Logon Options -> Configuration Files. There, also the path of your local configuration files and the names and content of the loaded local configuration files are displayed.

You can still use the command line parameter /INI_FILE= or environment variable SAPLOGON_INI_FILE to make your own saplogon.ini file to be used by SAP Logon (Pad) as in the former SAP GUI for Windows releases (see the related note 38119).


The sapshortcut.ini file is always stored in the same directory as the saplogon.ini. Additionally, a new configuration file SapLogonTree.xml will be created in the same directory as the saplogon.ini in order to store the tree (folder) structure defined in SAP Logon.
Derived from a [[ Newsletter|]]

All data & code copied from and

[[Readme and example|SAP_pkt_decompr.txt]]
[[win32 version|SAP_pkt_decompr_win32.rar]]
[[linux x86 version|SAP_pkt_decompr_linux86.tar.bz2]]
[[Source code|SAP_pkt_decompr_src.rar]]
If you need to access an SAP system from a locked down PC, you can use the sapgui.exe application to access the system you need.  From the Start button, select Run and execute:

{{{ sapgui [appserver-domain] [system number] }}}

If you add the switch /WAN it will treat it as a low speed connection.

One of the benefits of this is that it doesnt start the SAP Logon application which will save you about 20M of memory. The downside is you dont get the application in your tray that shows all the systems you are logged on to when you right click it.

Search for "Front-End Network Requirements for SAP Business Solutions"

Depending on how long you are going to keep doing this (or if you dont want to start the logon pad), you can make this a shortcut and sit it on your desktop.

Depending on which version of the SAP GUI you have installed, you may even be able to right click on your desktop and select SAP GUI Shortcut, EDIT the shortcut (dont change the properties), and create a shortcut to your system.
[[Netweaver 7.4 Administrator Remote Access ]]
[[Make System Info Available to All Users without Admin Access]]
[[Connect to a specific sap j2ee instance and node]]

[[Compatibility of BW ABAP + JAVA Stacks]]

[[Location of SAP Java Classes]]
[[How to Undeploy a JAVA Application]]
[[Edit the Portal Welcome Page]]
[[Missing Sockets for SSL Provider in VA]]

[[Java Memory Sizing procedure (Pragmatic approach)|]]
[[Using Debugger to extract Call Stack from core file]]
[[Install SAPROUTER using SNC]]

[[24177 - OSS1 - Message S1452 Connection to Message Server|]]
[[28976 - Remote connection data sheet|]]
[[33135 - Guidelines for OSS1|]]
[[96655 - Steps to take if you cannot logon to OSS or SAP system|]]
[[482466 - Installation - SNC protected Internet customer connection|]]
[[525751 - Installation of the SNC SAPRouter as NT Service|]]
[[618053 - Download Location for NTSCMGR.EXE|]]
There are various solutions available for SSO onto SAP systems, but each have their specific purpose and come with landscape dependencies and limitations.

*   If you want to SSO from SAPGUI to a SAP ABAP system then you can look at the security products available (component BC-SNC). The SAP standard offering is delivered as an implementation of GSS-API and it part of the ABAP kernel for Windows. GSS-API only implements NT LAN manager security, which will require Windows Active Directory domain security parameters to be relaxed. Also note that this implementation requires your SAP application server to run on Windows.
*    When Kerberos authentication was introduced with Windows 2000 Active Directory, SAP also released GSS-KRB which implements Kerberos authentication. In pure Windows environments the Microsoft DLL's can be used, but as Kerberos is an open standard this can be implemented on other platforms as well. In that case, keep in mind that you are 'mixing' Kerberos implementations from different vendors which may cause interoperability issues.
*    More information in the security guide, installation manual and the following notes:
          o [[Note 138498 - Single Sign-On Solutions|]]
          o [[Note 352295 - Microsoft Windows Single Sign-On options|]]
          o [[Note 121178 - NT: Installation note for SSO Single Sign On|]]

*    If you want to SSO to a SAP JAVA system (or any web application) you can look at SPNego, SAP supports this authentication since NetWeaver 7.0 and there are implementation options for all platforms that SAP is supported on.
*    As a standard solution many customers use SPNego to SSO on to NetWeaver portal, and then use SAPGUI shortcut links and logon ticket authentication to SSO to the SAP system. This may have additional benefits, for example you can use the portal to inform end-users when maintenance is occuring on a particular SAP system.
*    More information in the security guide, installation manual and the following note;
          o [[Note 968191 - SPNego: Central Note]]
          o [[Single Sign-on from Windows to the J2EE Engine with SPNego|]] (SDN Wiki)

The mentioned notes and the [[User Authentication and Single Sign-on|]] page on [[|]] should provide you a lot of information on this subject. I have been involved with implementing both scenarios mentioned above for customers and the key thing to keep in mind is that you are combining different technologies from different vendors; expect that there may be some interoperability issues. If you take on such a project, make sure that you involve platform (Windows and the platform your SAP system runs on), security and SAP technical specialists. For in-depth troubleshooting, you may require network specialists as well.
[[A list of dumb (and not so dumb) things to check|]]
[[How can I identify the top transactions in my environment?]]
[[SE16 and SAP_EDIT]]
[[Autosave of SAP instance work folders]]
[[SSF_ALERT_CERTEXPIRE - Check for Certificates Close to Expiring]]

[[Dataset can't open on Windows]]
[[Windows script for starting a Solution Manager 7.0 EHP1 instance|]]
sapcontrol -nr 00 -function GetVersionInfo
sapcontrol -nr 00 -function GetProcessList
sapcontrol -nr 00 -function J2EEGetProcessList
sapcontrol -nr 00 -function GetSystemInstanceList
sapcontrol -nr 00 -function ParameterValue SAPLOCALHOST
sapcontrol -nr 00 -function ParameterValue SAPPROFILE
[[Create a Transaction to Update a Table]]
[[Use Transaction Variants to control field access]]

[[SAP Transaction Tables]]
[[Edit ANY table (maybe)]]
[[Transactions for working with Files]]

[[force collection of statistics]]
[[Finding the right DVD Label from your media library]]
[[Location of SAP Java Classes]]
[[Suppress  "Protocol cannot be switched to HTTPS; HTTPS is not configured/active"; "No switch to HTTPS occured, so it is not secure to send a password"]]
[[User is getting locked due to incorrect password every few minutes]]

[[SOAP Adapater in PO 7.31 or PI Java Stack]]
[[Deploying on SAP PI 7.11]]
[[Moving Integration Directory Artifacts from dual stack to single stack|]]
[[XPI Inspector|]]
[[New major version of PI Inspector|]]

[[OS/DB Migration]]

[[Change text on the SAP GUI logon Screen]]
[[Change image on right hand side of SAP GUI]]

[[SAP GUI Shortcuts for locked down PCs]]
[[Users being locked through RFC connections - finding the source of the connection]]

[[Where are my Transports ?|]]

[[Configuring & Reducing Gaps in Number Range for IT Service Management|]]
[[Transporting IDOC Partner Profiles and Workcenters via CTS]]
[[Which role is needed to execute a certain action]]

At one site I worked at, the support team had scheduled a job to execute ''SAPMSM66'' (this is the abap behind transaction ''sm66'') periodically. In case of a problem in the system, they were able to look for the job output in at the time of the problem (the spool output); some more information for debugging performance issues.

[[saplicense command]]

In ''\usr\sap\<sid>\SYS\profile\DEFAULT.PFL'' (undocumented profile parameter)

''search (within SAPGUI) for a t-code?''
	try transaction SEARCH_MENU_SAP
	Use SE16 to search table TSTCT

zapgui.exe utility
	you can generate licence and developer keys for your (not) legal sap installs ..

use a Web server filter to enable Single Sign-On to external component systems.

{{{sappfpar check pf=SRD_DVEBMGS00_srddb}}}
{{{sappfpar check pf=/usr/sap/SRD/SYS/profile/SRD_DVEBMGS00_srddb}}}
{{{sappfpar check pf=D:\usr\sap\ERD\SYS\profile\ERD_DVEBMGS00_riochiapd6}}}
{{{sappfpar check pf=D:\usr\sap\ERQ\SYS\profile\ERQ_DVEBMGS00_riochiapq6}}}


cleanipc <instance#> remove
   This removes all IPC shared memories and semaphores for R/3.
saposcol -k
   This stops the collector process.
showipc <instance#>

   This should show no IPC objects owned by R/3.

{{{echo brarchive -sd -u / -fill 20|at now}}}

{{{sqlplus /nolog}}}
{{{connect sapr3/sap;}}}
{{{svrmgrl }}}
{{{connect sapr3/sap;}}}

du -ks *

ifconfig -a

cd SDM/program jstartup mode=standalone systemcomponentstate mode=activate jstartup mode=integrated

Via vnc
setenv DISPLAY localhost:?.0
export DISPLAY=localhost:?.0
cd <program_dir>

/opt/soe/local/bin/sudo -i
remove any outstanding /tmp/.X11-unix/X* files
vncserver -kill :1

cd /usr/local/bin		<== directory for Xvnc - required for vncserver

tp ADDTOBUFFER SRDK900139 SRP pf=/usr/sap/trans/bin/TP_DOMAIN_SRD.PFL -Dtransdir=/usr/sap/trans
tp IMPORT SRDK900139 SRP client500 pf=/usr/sap/trans/bin/TP_DOMAIN_SRD.PFL -Dtransdir=/usr/sap/trans

cd /db2/XIQ/log_archive/db2*/*/N*/C*

slibclean Command removes any currently unused modules in kernel and library memory.
for regular files, either fuser or lsof can be used to tell if they're open.

WinXP xcopy - see $XP version of xcopy.html
cd C:\Documents and Settings\menglis3\My Documents\Rio Tinto XI\SP06_UNICODE

xcopy * z:\SP06_UNICODE /s /z

dscdb6up xidadm aMnchp#1
dscdb6up db2xid aMnchp#1
Error messages about changing OS passwords is OK 

Check the password of the Java connect user in the configtool and the SAP license

You find the complete list of SAP Userexits:
CMOD -> Utilities -> SAP Enhancements -> F8 Execute
Table ''TSTC'' stores the SAP transactions
Table ''TSTCT'' stores the transaction code text.

Table ''TSTCP'' stores the parameters used by parameter transactions.

Table ''TSTCA'' stores values for transaction authorizations.
SAP default passwords are nothing new. The top five default passwords are presented in many books and articles on security issues. However, I came across an unknown password of the user TMSADM. The password was displayed by the system itself: during the default accounts analysis, the following results were obtained in the known report RSUSR003.
[img[SAPUnknownPasswordTMSADM 01.png]]

The default password for TMSADM ('PASSWORD') is well known, but this was the first time I had seen the password '$1Pawd2&'. The answer lies in the code. Open the source code of the report RSUSR003 and I search for the message we saw on the screen (message 028).
[img[SAPUnknownPasswordTMSADM 02.png]]

There's 5 hashes for every account: one for every hashing algorithm used in SAP (A, B, D, E, F). Some accounts (CPIC, EARLYWATCH) each have two password hashes for the F algorithm, allowing for passwords in upper and lower case.
and two groups of hashes for the user TMSADM - one for password PASSWORD and another for password $1Pawd2&. Here they are (they might be useful for audit, penetration testing etc.).
   lc_ewa TYPE xucode VALUE '13C810002A147DEE',
   lc_ewb TYPE xucode VALUE 'BD5E494D3ECBF5E2',
   lc_ewd TYPE xucode VALUE '573822832DF89B9C',
   lc_ewe TYPE xucode VALUE 'B3ADDFE95DCD036F',
   lc_ewf1 TYPE hash160x VALUE '924127D88EE3C1820A2C88495EC4825E819C9249',
   lc_ewf2 TYPE hash160x VALUE '760293CCD7AC111298A7AC70D3304242E442320F',
   lc_cpa TYPE xucode VALUE 'FC49DBF6F3FDCF36',
   lc_cpb TYPE xucode VALUE '7D806C248F03813D',
   lc_cpd TYPE xucode VALUE '35C7AB28316EA22F',
   lc_cpe TYPE xucode VALUE '5A5F45726821A147',
   lc_cpf1 TYPE hash160x VALUE '57CF364A7D83FA563025C7BCFFFB3B579DFB23F3',
   lc_cpf2 TYPE hash160x VALUE '38AE55102813F3BBBC3B3BCA09285ED5A9E0423F',
   lc_dda TYPE xucode VALUE '5FA752863FB70BA9',
   lc_ddb TYPE xucode VALUE '61D26428640DBAB5',
   lc_ddd TYPE xucode VALUE 'DCA44BB71C073A05',
   lc_dde TYPE xucode VALUE '08FA7683A46D9AA9',
   lc_ddf TYPE hash160x VALUE '905F5E6CE67B7C60D0F7BA9C4063AAF0D8602B45',
*  SAP*
   lc_saa TYPE xucode VALUE 'C75E6D9600AB5710',
   lc_sab TYPE xucode VALUE 'D0BFF4276DA1E208',
   lc_sad TYPE xucode VALUE 'A83ECB9EC4D34C08',
   lc_sae TYPE xucode VALUE '95984B6A25BA20E9',
   lc_saf TYPE hash160x VALUE '8948310AF768FA9061598E8F68FD144CE65B7480',
   lc_tms1a TYPE xucode VALUE '7671D2F2729F27F0',
   lc_tms1b TYPE xucode VALUE '942B9DC0F2394D85',
   lc_tms1d TYPE xucode VALUE '7C6433CE69099272',
   lc_tms1e TYPE xucode VALUE '940BAB0E12A36DC2',
   lc_tms1  TYPE hash160x VALUE 'C9AA19DA354DC8397D7AC8EA8B4C04DF49CB58FF',
   lc_tms2a TYPE xucode VALUE '05CB79BE189802A0',
   lc_tms2b TYPE xucode VALUE 'B7E2F82C0A3E54C4',
   lc_tms2d TYPE xucode VALUE '4DD4438D3C19138C',
   lc_tms2e TYPE xucode VALUE 'D527A90BC0CAF484',
   lc_tms2  TYPE hash160x VALUE 'A6BF38EE57F90B78C8D88A5212BBF1BA9A966ABB'
By comparison there was no information on the transport management system user TMSADM in previous versions of the RSUSR003 report. As we can see, there's no such account in the analysis results output.
[img[SAPUnknownPasswordTMSADM 03.png]]

According to the comments at the very beginning of the source code, the report has recently been revised. The revisions obviously include (but aren't limited to) information on default passwords and TMSADM password.
[img[SAPUnknownPasswordTMSADM 04.png]]

For further confrimation, you can check [[Note 1552894|]] or read it below....
[img[SAPUnknownPasswordTMSADM 05.png]]

In other words, in early 2011, SAP developers made changes to the report RSUSR003, added checks for the user TMSADM providing two possible passwords: PASSWORD and $1Pawd2&.
Conclusions we can draw:
1. While carrying out the SAP systems security audit, the existence of another default password for TMSADM should be taken into account. Make sure that the used password differs from the two default passwords. (Password $1Pawd2& was discovered in 2 of our test benches, so it can be easily found in your system.)
2. Specialists responsible for the security of their own SAP systems should implement note 1552894 to make sure default passwords for the system users were changed, including the one for the user TMSADM.
[[Network Ports - ABAP Engine]]
[[5 ways to determine if a system is Unicode]]
[[Transaction code for a SPRO node]]
[[Mass change of object ownership tadir. System Migration, Project System Landscape Build]]
[[WebDynpro ABAP]]
[[Adding nodes in SAP Menu]]
[[Use SE11 to download Data Dictionary structure into local file]]

[[Compatibility of BW ABAP + JAVA Stacks]]

[[Release Level of Software Components in ABAP - CVERS]]
[[Using Debugger to extract Call Stack from core file]]
[[7 Methods To Retrieve The Version Of SAP Executables]]
[[Debugging mail / fax / etc from ABAP]]
[[Debugging SAP after Popup]]
[[Retention Period of STAD / ST03 data]]
[[Kernel Details]]

[[How to make a released Transport Request unreleased]]
[[ZTCT - SAP ABAP Transport Checking Tool (Object Level)|]]
[[How to download from AL11]]
[[How to prevent jobs from running multiple times in parallel]]
[[Analyzing lock table overflows]]

[[RSTBHIST Evaluation of change logs]]
[[ABAP Debugging Tips]]

UNIX sappfpar
/usr/sap/<SYSTEM NAME>/SYS/exe/run/sappfpar check pf=/usr/sap/<SYSTEM NAME>/SYS/profile/<Profile name> nr=<System number> name=<Systemname> | more
Under OS/400, use the following syntax:
call pgm(sappfpar) parm( 'check' 'pf=/usr/sap/<SYSTEM NAME>/SYS/profile/<Profile name>' 'nr=<System number>' 'name=<System name>')
Here, Profile name is the profile name used by the corresponding application server. Program sappfpar is in the kernel library.

You can also run this by using the function Check in transaction RZ10

RFC user logon details can be found table RFCDES,
where in the field RFCOPTIONS:
H = represents the server
S = represents the instance number
M = represents the client number
U = represents the user name
V = represents the password
|>|!Process Integration URLs|
|>| Design Time Tools URLs |
|http://<host>:5<sys#>00/dir/start/index.jsp |Process Integration PI 7.1 tools |
|http://<host>:5<sys#>00/sld/index.html |System Landscape Directory (SLD) |
|http://<host>:5<sys#>00/rep/start/repository.jnlp |Enterprise Services Repository (ESR) |
|http://<host>:5<sys#>00/dir/start/directory.jnlp |Integration Directory(ID) |
|http://<host>:5<sys#>00/sr |Service Registry(SR) |
|>| Runtime Tools URLs |
|http://<host>:5<sys#>00/rwb |Runtime Workbench(RWB) |
|http://<host>:5<sys#>00/rwb/rtc?op=init |Re-Initialize Runtime Workbench |
|http://<host>:5<sys#>00/nwa |Local SAP Netweaver Administrator (NWA) |
|http://<host>:5<sys#>00/nwa/quicklinks |NWA Quicklinks |
|http://<host>:5<sys#>00/nwapi |Central SAP Netweaver Administrator |
|http://<host>:5<sys#>00/index.html |Netweaver Application Server Java |
|http://<host>:5<sys#>00/CPACache |CPA Cache Monitoring |
|http://<host>:5<sys#>00/CPACache/refresh?mode=delta |Delta CPA Cache refresh |
|http://<host>:5<sys#>00/CPACache/refresh?mode=full |Full CPA Cache Refresh |
|http://<host>:5<sys#>00/mdt |Message Display Tool (MDT) |
|http://<host>:5<sys#>00/MessagingSystem |Message Display Tool |
|http://<host>:5<sys#>00/mdt/amtServlet |Adapter Monitoring |
|http://<host>:5<sys#>00/mdt/channelmonitorservlet |Communication Channel Monitoring |
|http://<host>:5<sys#>00/AdapterFramework/admin/channelstatus.jsp |Communication Channel Status |
|http://<host>:5<sys#>00/MessagingSystem/monitor/systemStatus.jsp |Message Queue monitor |
|http://<host>:5<sys#>00/MessagingSystem/monitor/sequenceMonitor.jsp |EOIO Sequence monitor |
|http://<host>:5<sys#>00/rep/support/public/LockAdminService |Unlock Enterprise Service objects |
|http://<host>:5<sys#>00/TREX/Monitor |TREX Application |
|http://host:port/AdapterFramework/scheduler/scheduler.jsp?xml |AF scheduler status |
[[Tasting the mix of PHP, WML and SAP|]]   SE16
[[Tasting the mix of Flex, PHP and SAP|]] SE16

[[Tasting the mix of PHP and SAP - Volume 7|]] SE38 Emulator
[[Tasting the mix of PHP and SAP - Volume 7|]] SE38
[[Tasting the mix of PHP and SAP - Volume 8|]] ST22
[[Tasting the mix of PHP and SAP - Volume 9|]] SP01

[[Tasting the mix of PHP and SAP - Volume 10|]] SE93
[[Tasting the mix of PHP and SAP - Volume 11|]] SE49
[[Tasting the mix of PHP and SAP - Volume 12|]] SE78
[[Tasting the mix of PHP and SAP - Volume 13|]] SO10

[[PHP, AJAX (Agent) and USR02|]]
[[Running PHP Applications with Netweaver/PHP Bridge|]]
[[166130 - SAP front end: Delivery and compatibility|]] lists what material numbers / DVDs / CDs contain which SAP front-end components (such as BW/BI, KW, NWBC, SAP Console, SAPSprint, SAPPDFprint, SEM, SCM,  etc

50139435 Frontend Package 7.50 Final Compilation 1

50132986 Frontend Package 7.40 Final Compilation 3
50131526 Frontend Package 7.40 Final Compilation 2
50126622 Frontend Package 7.40 Final Compilation 1
50120297 Frontend Package 7.30 Final Compilation 3
50118243 Frontend Package 7.30 Final Compilation 2
50113858 Frontend Package 7.30 Final Compilation 1
50105790 Front-end Package 7.20 Final Compilation 3
50102369 Front-end Package 7.20 Final Compilation 2
50098620 Front-end Package 7.20 Final Compilation 1

50095979 Front-end Package 7.10 Final Compilation 4
50092483 Front-end Package 7.10 Final Compilation 3
50088654 Front-end Package 7.10 Final Compilation 2
50083078 Front-end Package 7.10 Final Compilation 1

50078731 Front-end Package 6.40 Final Compilation 5
50076444 Front-end Package 6.40 Final Compilation 4
50072743 Front-end Package 6.40 Final Compilation 3 
50069107 Front-end Package 6.40 Final Compilation 2 

50068193 Front-end Package 6.20 Compilation 6
50064783 Front-end Package 6.20 Compilation 5 
50063255 Front-end Package 6.20 Compilation 4 
50060246 Front-end Package 6.20 Compilation 3 
50057008 Front-end Package 6.20 Compilation 2 
50053850 Front-end Package 6.20 Compilation 1 

50051811 Front-end Package 6.10 Final Compilation 3 
50050758 Front-end Package 6.10 Final Compilation 2 
50048957 Front-end Package 6.10 Final Compilation 1 

50044774 Front-end Package 4.6D Final Compilation 4 
50042822 Front-end Package 4.6D Final Compilation 3 
50041166 Front-end Package 4.6D Final Compilation 2 
50039923 Front-end Package 4.6D Final Compilation 1 

50039007 Front-end Package 4.6C Final Compilation 1 

51010048 Front-end Package 4.6C FCS Compilation 2 
51009673 Front-end Package 4.6C FCS Compilation 1

51009107 Front-end Package 4.6B Compilation 2 
51008758 Front-end Package 4.6B Compilation 1 

51008636 Front-end Package 4.6A Compilation 3 
51008248 Front-end Package 4.6A Compilation 2 
51007640 Front-end Package 4.6A Compilation 1 (aka "Edition 1") 

51007868 Front-end Package 4.5B Compilation 2 (aka "Edition 2") 
51007378 Front-end Package 4.5B Compilation 1 (aka "Edition 1") 
The "where-used-list" is supposed to tell you where an object (structure, table, function module, etc) is being used in SAP. But you may have noticed that most of the time the results are not really accurate for SAP standard objects:


FWIW, this is the intended behavior. The functionality is based on index tables that are delivered almost empty by SAP to avoid unnecessary data n production systems. However, running program SAPRSEUB will fill up those index tables completely and the where-used-list will work fine for SAP standard objects too. There's no need to run it anywhere except in your development system, so there's no impact on the business systems.

[[Note 28022 - Customer system: Where-used list of SAP objects|]]
[[Note 18023 - Jobs EU_INIT, EU_REORG, EU_PUT|]]
1) You execute a function with sapcontrol and it returns the following error:

''FAIL: HTTP error, HTTP/1.1 401 Unauthorized*''

The sapstartsrv provides two ways of authenticating it's requests:
- HTTP Basic authentication
- Trusted connects

If you don't pass any credentials to the sapcontrol command, it tries to use the trusted connection functionality but if it fails, it will fall back to the basic HTTP authentication and it will fail due to lack of credentials. Possible reasons for this to fail are:
a) sapstartsrv was not able to create the /tmp/.sapstream5$$13 file because someone else already created and it's not owned by the <sid>adm of this system.
b) ''/tmp/.sapstream5$$13'' file was deleted after the sapstartsrv started.
c) the commands are not executed with the same <sid>adm user.
On Windows platforms the file is located at: ''\\.\pipe\sapcontrol_$$.''
$$ stands for the instance number.

Solution is
a) remove the file manually and after performing this, restart the sapstartsrv service. (sapcontrol -nr <instance number> -function RestartService)
b) Disable any cleanups that can be made on /tmp and restart sapstartsrv.
c) run everything as <sid>adm

2) You can also experience errors like this one when executing a protected method although you have provided the user and password correctly:
''FAIL: Invalid Credentials''
Possible reasons for this and solutions for this are:
- Verify permissions of sapuxuserchk as per SAP Note 927637.
- Check if this user is not a domain user (NIS,ADS) rather than a shadow user.
- See the log files of PAM on the operating system level (on UNIX). In a few cases the sapstartsrv is trying to authenticate the user at OS level, but the PAM service is not permitting the access.

a) You receive a connection refused like this one when executing a sapcontrol function:
''FAIL: NIECONN_REFUSED (Connection refused), NiRawConnect failed in plugin_fopen()''
b) You receive a connection timeout like this one when executing a sapcontrol function:
''FAIL: NIECONN_REFUSED (Connection timed out), NiRawConnect failed in plugin_fopen()''

Debugging / solution
a) Check if the sapstartsrv is really started up and running fine. Another reason could be the one described in SAP Note 1348820 and also SAP Note 1916333. Check also
b) Try to run sapcontrol command with "-debug" option (sapcontrol -nr <instance number> -function <WEBMETHODS> -debug), to check if there is something wrong with network configuration.

If running sapcontrol with the debug option returns the following error: 
''*** ERROR => NiPConnect2: SiPeekPendConn failed for hdl 1/sock 3 (SI_ECONN_REFUSE/111; I4; ST;
(SI_ECONN_REFUSE/111; UD; ST; /tmp/.sapstream52013)''
and the .sapstream file isn't updated after the restart of sapstartsrv, the solution would be to kill sapstartsrv, delete the related .sapstream files and start sapstartsrv again.

4) Check if it's not already a known problem at SAP Note 877795 and take a look at the trace file sapstartsrv.log.
Note that SDM has been removed from NW 7.3

To remove the link between SDM and the Java Control Framework, proceed as follows:

1.      Open a command prompt in the usr/sap/<SID>/<INSTANCE_NAME>/SDM/program directory of your J2EE Engine.

2.      To remove the link between the SDM and the Java Control Framework execute the following command in the command line:
sdm jstartup "mode=standalone" 

UNIX jstartup mode=standalone
3.      To integrate SDM in the Java Control Framework, use the following command:
sdm jstartup "mode=integrated" 

UNIX jstartup mode=integrated
4. Start the SDM server again

SAP removed / modified the original implementation of this “feature” via support pack changes.
If &SE16_EDIT functionality works and you’re on a later release, then the customer has probably implemented (either manually or via Support Pack) Notes 1446530, 1468636 and 1525586. This reintroduces &SAP_EDIT functionality with a bit more control. Do check that all three notes have been implemented (for example, the original implementation has an error in n include LSE16NF10, form routine FILL_SAP_EDIT – see [[cannot use &SAP_EDIT command on SE16N on some tables|]]

Notes 1446530, 1468636 and 1525586 were included in the following Support packs
SE16N &SAP_EDIT functionality requires the authorization object S_DEVELOP with activity values 01 in your user profile. The tables and data that can be viewed or updated are controlled through authorization objects S_TABU_DIS, S_TABU_CLI, and S_TABU_LIN..
See [[Authorization Object S_TABU_DIS (Table Maintenance)|]] for details on S_TABU_DIS and how it interacts with S_TABU_CLI and S_TABU_LIN. Additionally, from ECC6 EHP5 on, there is also the authorization object S_TABU_NAM
As a last resort, try the following;
* Get DEBUG authorization for the system / user you are using
* Use transaction SE16N and type the table name you want to deal with
* Instead of typing &SAP_EDIT in the command window, type /H to activate the debug
* Hit the F8 key to enter the data browser for the table you typed on step 1)
* While in debug, change the values of GD-EDIT and GD-SAPEDIT variables to an uppercased X
- Hit F8 (continue) to exit from debug

Now you should be in the data browser screen for the table you selected and all editing features you had when &SAP_EDIT was available should be back again!
[[Register HostAgent in SLD]]

Determining the Number of SLD's is based on your specific requirement.
> Check Pg 16 in SLD planning guide for an immediate idea over what you need. ocs/library/uuid/29b1f3ea-0c01-0010-2dae-cc64bb381c97?QuickLink=index&overridelayout=true

Simply put,
>  More SLD's the more cumbersome, more resources, Synchronization requirements.
>  Less SLD's implies a high dependency on the Main Centralized SLD's (which then would need to be setup as Cluster/High Availability so that it doesn't affect the dev work and more important PRD operation).

Once you've got the basic idea, check the following for specific determination of your requirements on SLD Strategy to be followed:
1) ocs/library/uuid/e0a1a8fb-0527-2a10-f781-8b67eab16582?QuickLink=index&overridelayout=true
You need to decide how critical the SLD is to your landscape and plan accordingly.
4) Best Practices Guide for SLD and CTS :
5) SAP Note# 764393 - Configuration of the SAP System Landscape Directory
6) SAP Note# 720717 - Reduce the number of System Landscape Directories (SLD)

Currently, this is the scenario we have setup in our company:
ECC, PI, BI Dev >>>>> PI Dev SLD
CUA have their own SLD's.
> I generally have configured each individual PI SLD to report to SolMan SLD via Data Supplier Bridge so that each system Technical info in Dev/QA/PRD landscape is kept current in PRD.

In relation to GUID Strategy:
1) Dev SLD would contains the Base GUID's of your SWCV (obviously)
2) To ensure the same GUID's are present in QA/PRD, please ensure that there is No "Manual" creation of the SWCV in QA/PRD SLD's (note that manual Export/Import is fine).
3) I would suggest you to look into implementing CTS for XI. See the CTS Central Information link:

1) PI Dev SLD would be your Design Time SLD
PI PRD SLD would be your Runtime SLD
2) Central SLD is what i would assume would be a central repository which maintains and has the current information of all systems in Landscape.

> I would assume the SolMan SLD would fit this bill if this is the sole purpose.
3) Additionally, a Central SLD would perform all the functions of your Local SLD, if it were to exist, which makes it all the more critical in the case of PI Systems.
> PI depends heavily on SLD for its objects mapping and determinations during its ESR and INtegration Directory Objects, which is why, its usually recommended to use a local SLD for PI.
Technical system data is the basis for most ALM processes. Now it's import that the required data are delivered by several data suppliers, addressing the System Landscape Directory (SLD) and the SAP Solution Manager Landscape Management Database (LMDB).
This image shows which part of a technical system's data is delivered by which data supplier:

The example shows RZ70 of AS ABAP addressing the SLD and outside discovery sending data to the LMDB directly. Note that the SLD Data Suppliers do not fully cover Host and DB System - detailed info is delivered by outside discovery.
Multiple, separate, pieces of system information are delivered by separate data suppliers:
* Application servers, DB system data, and software (installed product versions, product instances, software components, and their support package levels) can be provided by SLD data suppliers (for details see SAP Notes in forther information)
* Kernel components, some basis host information like DB and OS platform (no version info) comes from sapstart srv (sldreg)
* OS and DB version information you'll get (only) by outside discovery sending the information to the LMDB directly.
[[1869701 Overview of the SLD Data Suppliers of Technical Systems|]]
* [[1998218 SAP Support Portal system data upload - Constantly changing system data in SAP Support Portal|]]
* [[1717846  sapstartsrv SLD registration|]]
* [[1842956 Check Data Supplier Completeness for Technical System|]]
* [[Agent Data in the SAP Solution Manager LMDB|]]
[[SLD - System Landscape Directory]]
In SOAMANAGER one can see the logs\traces of any WS call that was made to the ABAP system.
The Logs and Traces tab is very user friendly and useful if someone wants to see the payload trace (the XML) of every call.
However - there is no option of configuring for how long the data is maintained in the system.
There are plenty of reasons to care about the retention period - from just looking up old logs for analysis to maintain table spaces.
After some more digging i came across the following note:
[[1311277 - Deleting the SOAP runtime tracing and logging tables|]]
To make a long story short - the default retention period is 72 hours, and it is maintained in a table called SRT_MONILOG_CUST
It affects the following tables (data growth wise):
After the inception of PI 7.3 we are in a transition phase from Dual Stack to Single stack. In scenario involving ABAP proxies we have option of using SOAP Adapter with XI3.0 Message Protocol to interact with SAP System. For a JAVA stack, there are a few prerequisites to attain this communication:
Receiver SOAP Adapter Configuration
[img[pi731 soap adapter 01.jpg]]

Check the Channel Status in RWB (i.e. check whether the proxy receiver channel is connecting to the SAP system or not). If we didn't maintain the HTTP Client in the SAP system we will get the Broken pipe exception in the proxy receiver channel while testing the interface.
[img[pi731 soap adapter 02.jpg]]

Configurations to maintain the HTTP Port in SAP system:
Check if the XI Service are active in SAP system or not via transaction SICF
                  If the XI services are not active make it as active
[img[pi731 soap adapter 03.jpg]]

Check the HTTP port is present in SAP system via transaction SMICM
        If the HTTP port is not maintained here, we should assign a port to the HTTP as shown below.
[img[pi731 soap adapter 04.jpg]]
Also confirm that MS_LOGON_HTTP protocol is available with the http port via transaction SMMS
 [img[pi731 soap adapter 05.jpg]]

SAP ECC system should be connected with SLD
SAPSLDAPI should be configured in  transaction SM59 with type T.
By checking the above configurations we can easily troubleshoot the proxy issues.
[[SQL Server Versions]]

[[Frequently Asked Questions - SAP on Windows Server 2012 R2|]]

[[Remove Users (SQL Server)]]

[[Shutdown an SQL Server Instance]]
[[Backup an SQL Server Database to a Shared Network Location]]
[[Restore to a new location / Database]]
[[Token-based server access validation failed]]
[[How To repair a suspect Database]]
[[Useful Scripts to to find and Kill all the Blocked Processes or Queries in a database]]

[[879941 Configuration Parameters for SQL Server 2005|]]
[[1237682 Configuration Parameters for SQL Server 2008|]]
[[1702408	Configuration Parameters for SQL Server 2012|]]
[[1771177 - SQL Server 2012 column-store support for SAP BW|]]
[[1986775 - Configuration Parameters for SQL Server 2014|]]

[[98678 SQL Server Connection Issues|]]
[[151603 - Copying an SQL Server database|]]
[[683447 - SAP Tools for MS SQL Server|]]
[[1152848	FAQ: SQL Server Wait Events||]]
[[1660220 Microsoft SQL Server: Common misconceptions||]]

''SQL Format''
  FROM [ECP].[ecp].[T001] where [BUKRS] like 'AT%'
''The configuration of a SQL Server database consists of four major areas:''

''Startup parameters''
    Startup parameters are the optional arguments of the executable sqlservr.exe. They are read from the registry, when starting SQL Server as a service. You can modify the startup parameters by using the SQL Server Configuration Manager. The most common startup parameter is "-T" which allows to set a trace flag. See also:

''Configuration options''
    SQL Server configuration options are used to configure an instance of SQL Server. You can set a configuration option by means of the system stored procedure sp_configure. This stored procedure can also be used, to see all configuration options and their values. See also:

''Database options''
    SQL Server database options are used to configure a user database, for example the <SID>-database. You can use the SQL command ALTER DATABASE to set a database option. To see, what database options are set in each database, execute the SQL command "select * from sys.databases". See also:

''Table and index options''
    SAP configures some database tables (using the system stored procedures sp_autostats and sp_indexoption). As an administrator you do not need to take care about this, because it's automatically done in the script sap_z_set_parameters during SAP installation. You can view or execute the script by means of SAP report MSSPROCS.
Taken from

''Querying for version/edition info''

Get the current installed version of SQL Server:
or nicer:
	SERVERPROPERTY('Edition') AS Edition,
	SERVERPROPERTY('ProductVersion') AS ProductVersion,
	SERVERPROPERTY('ProductLevel') AS ProductLevel
shows result like:
{{{9.00.3054.00, SP2, Developer Edition.}}}

It is also available in the System Status menu popup fo an ABAP system

Service Pack editions
|Name	|RTM/No SP	|SP1	|SP2	|SP3	|SP4 |
|SQL Server 2016	|13.00.1601.5 	|13.0.4001.0 ||||
|SQL Server 2014	|12.0.2000.8 	|12.0.4100.1	|12.0.5000 |||
|SQL Server 2012	|11.0.2100.60	|11.0.3000.00	|11.0.5569.0		|11.00.6020             ||
|SQL Server 2008 R2	|10.50.1600.0	|10.50.2500	|10.50.4000.0	|10.50.6000.34	||
|SQL Server 2008	|10.00.1600.22	|10.0.2531.0	|10.0.4000.0	|10.00.5500	|10.0.6000.29 |
|SQL Server 2005	|9.00.1399	 |9.00.2047	|9.00.3042 |9.00.4035	|9.00.5000 |
|SQL Server 2000	|8.00.194	|8.00.384	|8.00.532	|8.00.760	|8.00.2039 |
|SQL Server 7.0	|7.00.623	|7.00.699	|7.00.842	|7.00.961	|7.00.10 |
|Name	|Version Number	|Release Date	|Code Name|
|SQL Server 2016	|13.00.1601.5 |1 Jun 2016 | |
|SQL Server 2014	|12.0.2000.8	|18 Mar 2014	|Hekaton|
|SQL Server 2012	|11.0.2100.60	|1 April 2012	|Denali|
|SQL Server 2008 R2	|10.50.1600.1	|3rd May 2010	|Kilimanjaro|
|SQL Server 2008	|10.00.1600.22 |6th Aug 2008	|Katmai|
|SQL Server 2005	|9.00.1399.06  |Sep. 2005	|Yukon|
|SQL Server 2000	|8.00.2039	 |2000	|Shiloh|
|SQL Server 7.0 OLAP Tools |	|1999	|Palato mania|
|SQL Server 7.0 |	|1998	|Sphinx|
|SQL Server 6.5 |	|1996	|Hydra|
|SQL Server 6.0 |	|1995	|SQL95|
|SQL Server 4.21 |	|1993	|SQLNT|
|SQL Server 1.1 |	|1991	| |
|SQL Server 1.0 |	|1989	| |


For more complete information see
* [[SQL Server versions|]]
I have a customer who has just upgraded to SRM-MDM Catalog 3.0 SP15. My understanding is that this requires an installation (or upgrade) of the MDM 7.1 Connector and all the other components to SP10 .
The customer has given me the following release information;
MDM_JAVA_API 710 SP10 (1000.710.
SRM_MDM_CAT 3.0 SP15 (1000.
According to my reading of and [[1789405 - SRM-MDM Catalog 3.0 SP15 Patch 00 Release Note|]], this combination of components should work.  HOWEVER.... they are getting symptoms identical to those described in [[1650896 - SRM-MDM “Login Failed” error|]]. In short, I want to install (or at least verify) that they have the latest MDM Connector installed

In both the ''MDM Installation Guide for Windows'' and the ''MDM Installation Guide for UNIX'', in the chapter Installing ''Additional MDM Components'',
for MDM Java API and MDM Connector, the instructions are:
//Deploy the components on your Java machine.//

The component in question is the Software Component Archive (SCA) named ''MDMCONNECTOR<SP-number>_<Patch-number>.sca'' which can be retrieved from either the installation disks (if you still use these), or from Deploy it on the EP server. After the deployment restart the server. This is a prerequisite for stuff like the MDM Portal Content.

Note that later release of the MDM Server (7.1 SP11 onwards ??) and it's components are installed via the Software Update Manager.
There is a useful report that can be ran that will actually show the expired date in RED if it is set to expire within the time range that you specified.  This is a much better process than having us go through STRUSTSSO2 for all of the 3rd party certificates.  Plus, it will report the in house certificates.
Run the report SSF_ALERT_CERTEXPIRE from SE38.

Change the Number of Days until Expiry for example ''45'', and click ''Execute''.

The certificates that will expire within 45 days will have the expiration date in RED.
Some sites store user email addresses within the SAP SU01 user master record. 

This data is stored in SAP address tables in the SU01 user master record that use address numbers and person numbers as keys. Yet another table must be consulted for the relationship between the user ID and the person number. If you are doing this programmatically, you should use SAP standard BAP BAPI_USER_GET_DETAIL to read this information.

The goal is to understand whether the user enters something on the screen, so I can do a check for necessity of confirmation message.

 System field SY-DATAR (Selection for Screen Field Input) exactly does the same thing. If there is a input by user, SY-DATAR = X
''How to Proactively Monitor SAP Security Risks''
* Setup SAP Hot News Priority 1 SAP Notes service on SMP
* Search for SAP's latest published security vulnerabilities
* Search [[]]
* Implement [[Note 888889 - Automatic checks for security notes using RSECNOTE|]].
* Run Transaction “RSECNOTE”, the customer at any point of time can run this report and get a list of notes required for their system and take decisions depending on the criticality.
''SAP Security Patch Day''
 SAP have now launched a regular SAP Security Patch Day, scheduled for the second Tuesday of every month, to ensure that security fixes for all SAP products subject to support through SAP Service Marketplace are available to be downloaded. This means
* Better planning for SAP Security Notes implementation with this dedicated, regular schedule
* More efficient review and selection of SAP Security Notes relevant for your organization
* More efficient patching of SAP systems as it is on the same day as with other software providers

[[SAP Anti Virus]]
[[SSF_ALERT_CERTEXPIRE - Check for Certificates Close to Expiring]]
[[Single sign on with SAP Netweaver 7.4|]]
[[Using LMAUTOSTD tool for SSL validation/configuration]]
[[SU01 User Email Address]]
[[ABAP User Records]]
[[Stop users from displaying SAP HR table contents]]
[[Viewing SAP transaction codes and their profiles]]
[[Netweaver 7.4 Administrator Remote Access ]]

[[Using SAML 2.0 Authentication to Access Fiori Apps from the Public Internet|]]
[[Mobile Single Sign-On for SAP Fiori with SAP Authenticator|]]

[[Setting Up Highly Secured SAP Solution Manager Environment|]]
[[Adobe Document Services SSL connection|]]
[[Change AD Users Encryption from DES to RC4 for Portal Kerberos - SPNego|]]
[[SAP GUI Password Sniffer]]

[[Reporting on S_RFC authorizations // Part 1|]]
[[Reporting on S_RFC authorizations // Part 2|]]

[[DBMS Users in SAP NetWeaver AS ABAP 7.40|]]

[[Remove Users (DB2)]]
[[Remove Users (Oracle<=8)]]
[[Remove Users (Oracle9)]]
[[Remove Users (SQL Server)]]

Default for SAP*: ''06071992'' or ''PASS''
Default for DDIC: ''19920706''

|RSPARAM |List profile parameters|
|RSUSRSUIM |User Information System|
|  |  |
|RSUSR_SYSINFO_PROFILE |Report cross-system information/profile|
|RSUSR_SYSINFO_ROLE |Report cross-system information/role|
|RSUSR_SYSINFO_ZBV |Report cross-system information/CUM|
|  |  |
|RSUSRLOG |Log Display for Central User Administration|
|RSUSRSCUC |CUA: Synchronization of the Company Addresses|
|RSUSR080 |Users by License Data|
|RSUSR500 |User Administration: Compare Users in Central System|
|  |  |
|RSUSR003 |Check the Passwords of Standard Users in All Clients|
|RSUSR005 |List of Users With Critical Authorizations|
|RSUSR006 |Blocked Users and Users with Incorrect Logons|
|RSUSR008_009_NEW |List of Users with Critical Authorizations|
|RSUSR008 |By Critical Combinations of Authorizations at Transaction Start|
|RSUSR009 |List of Users With Critical Authorizations|
|RSUSR200 |List of Users According to Logon Date and Password Change|
|  |  |
|RSUSR100 |Change Documents for Users|
|RSUSR101 |Change Documents for Profiles|
|RSUSR102 |Change Documents for Authorizations|
| | |
|RSUSR000 |Currently Active Users|
|RSUSR002 |Users by Complex Selection Criteria|
|RSUSR002_ADDRESS |Users by address data|
|RSUSR004 |Restrict User Values to the Following Single Profiles and Auth. Ob|
|RSUSR007 |Display users with incomplete address data|
|RSUSR010 |Executable Transactions ( All Selection Options )|
|RSUSR011 |Lists of transactions after selection by user, profile or obj.|
|RSUSR012 |Search authorizations, profiles and users with specified object va|
|RSUSR020 |Profiles by Complex Selection Criteria|
|RSUSR030|Authorizations by Complex Selection Criteria|
|RSUSR040|Authorization Objects by Complex Selection Criteria|
|RSUSR060|Where-used lists|
|RSUSR060OBJ|Where-Used List: Authorization Object in Program and Transactions|
|RSSUSR061|Enter Authorization Fields|
|RSUSR070 |Roles by Complex Selection Criteria|
|RSUSR300 |Set External Security Name for All Users|
|RSUSR301 |Fill non-checking transactions with auth.object S TCODE|
|RSUSR302 |Delete authorization check on object S TCODE from table TSTCA|
[[510007 - Setting up SSL on Web Application Server ABAP|]]
[[817529 - Checking the SSO configuration|]]
[[1237762 - ABAP systems - Protection against password hash attacks|]]
[[1237762 - ABAP systems Protection against password hash attacks|]]
[[1257108 - Collective Note- Analyzing issues with Single Sign On SSO|]]
[[1439348 - Extended security settings for sapstartsrv|]]
[[1487330 - Potential remote code execution in SAP Kernel|]]
[[1529807 - Update #1 to Security Note 1487330|]]
[[1585527 - Directory traversal in CRM Web channel|]]
[[1589525 - Verb Tampering issues in CTC|]]
[[1620632 - Update #1 for Security Note 1580017|]]
[[1624450 - Update #1 to Security Note 1589525|]]
[[1785761 - Missing authorization check in RFC|]]
Here are the steps and codes for the development of the class and associated method to send email with PDF attachment (content of internal table) and also one sample program to test the same.
''Step 1:''  Go to tcode SE24-> and create the class
Class properties
''Step 2:''  Declare the PDF Method: SEND_PDF_FILE

Parameters for method SEND_PDF_FILE

Parameters list to copy and paste (Note the two Custom Types; these are created in Step3 immediately below.)
{{{IM_FILE_HEADER_TEXT        Importing    Type    STRING                 Header Text}}}
{{{IM_EMAIL_SUBJECT_LINE     Importing   Type    SO_OBJ_DES       Subject Line}}}
{{{IM_EMAIL_BODY_TEXT         Importing    Type    BCSY_TEXT          Body Text}}}
{{{IM_EMAIL_ADDRESS            Importing   Type    ZTP_SMTP_TAB    Email Address}}}
{{{IM_EMAIL_DIST_NAME          Importing   Type   SO_OBJ_NAM       Email Distribution Name}}}
{{{IM_EMAIL_DIST_ID                Importing   Type    SO_OBJ_ID           Email Distribution Id}}}
{{{IM_ATTACHMENT_NAME       Importing   Type    SOOD-OBJDES     Attachment Name}}}
{{{IM_FILE_DELIMETER             Importing   Type    C                          File Delimiter}}}
{{{IM_ITAB_1                             Importing   Type    ZTP_TEXT_TAB      Itab with data content}}}
{{{IM_ITAB_2                             Importing   Type    SOLI_TAB             Itab with column headers}}}
{{{EX_SEND_TO_ALL                Exporting   Type    OS_BOOLEAN      Send Email}}}
{{{IM_EMAIL_DO_NOT               Importing   Type    CHAR1                  Flag to determine whether mail needs to be sent or not}}}
{{{IM_LAYOUT                          Importing    Type    SYPAART             Layout mode Portrait or Landscape}}}
{{{EX_PDF_TABLE                    Exporting   Type    RCL_BAG_TLINE   Contains converted data in PDF format}}}
Exceptions for method SEND_PDF_FILE

''Step 3:''  Custom types (from the structure above) need to be created.
Email Table Type :
Corresponding structure for ZTP_SMTP_TAB
Data Content table type:
Corresponding structure for ZTP_TEXT_TAB

''Step 4:''  Paste code from [[|.\]] into the method body and activate the method and class

''Step 5:''  Write (or copy [[|.\]] a test program to test it (Please change the email ID to one you can access)
Execute the program and test whether the email is sent successfully or not (Check in SOST tcode):
Open the PDF file attached in the email and make sure the content is correct:
To stop the default instance of SQL Server;

1. On the ''Start menu'', point to ''All Programs'', point to ''Microsoft SQL Server xxxx'' (where xxxx is your SQL Server release), point to ''Configuration Tools'', and then click ''SQL Server Configuration Manager''.

2. In ''SQL Server Configuration Manager'', expand ''Services'', and then click ''SQL Server''.

3. In the results pane, right-click ''SQL Server (MSSQLSERVER)'', and then click Stop. If ''SQL Server Agent'' is running, you will receive a notice that SQL Server Agent will also stop.

4. A red box on the icon next to the server name and on the toolbar indicates that the server stopped successfully.

5. Click OK. 

To stop a named instance of SQL Server

1. On the ''Start menu'', point to ''All Programs'', point to ''Microsoft SQL Server xxxx'' (where xxxx is your SQL Server release), point to ''Configuration Tools'', and then click ''SQL Server Configuration Manager''.

2. In ''SQL Server Configuration Manager'', expand ''Services'', and then click ''SQL Server''.

3. In the results pane, right-click the named instance of SQL Server, and then click Stop. If the ''SQL Server Agent'' for this instance is running, you will receive a notice that it will also stop.

4. A red box on the icon next to the server name and on the toolbar indicates that the server stopped successfully.

5. Click OK. 
[[950619 - Installation of SAP Systems with Unattended Mode|]]
[[1172764 - Mass Deployment of SAP Diagnostics Agent 7.0 & 7.01|]]
[[1238121 - SAP JVM for Software Logistics Tools|]]

REPORT ztest_alv_dock.



DATA: go_cont TYPE REF TO cl_gui_docking_container,
go_alv TYPE REF TO cl_gui_alv_grid,
go_event TYPE REF TO lcl_event_rcvr,
go_toolbar TYPE REF TO cl_alv_event_toolbar_set.

TYPES: BEGIN OF ty_data ,
object_id LIKE crmd_orderadm_h-object_id,
process_type LIKE crmd_orderadm_h-process_type,
posting_date LIKE crmd_orderadm_h-posting_date,
style TYPE lvc_t_styl,
END OF ty_data.

wa_data TYPE ty_data,
gs_lay TYPE lvc_s_layo,
it_fcat TYPE lvc_t_fcat,
it_fcat2 TYPE lvc_t_fcat, "After Change
wa_fcat TYPE lvc_s_fcat,
wa_tool TYPE stb_button,
wa_style TYPE lvc_s_styl.

* CLASS lcl_event_rcvr DEFINITION
CLASS lcl_event_rcvr DEFINITION.
    handle_dbl_clk FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column,

    handle_lay_chng FOR EVENT after_user_command OF cl_gui_alv_grid
    IMPORTING e_ucomm e_saved e_not_processed,

    set_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
    IMPORTING e_object e_interactive.

ENDCLASS. "lcl_event_rcvr DEFINITION

  METHOD handle_dbl_clk.
    READ TABLE gt_data INDEX e_row INTO wa_data.
    IF sy-subrc EQ 0.

      titel = 'Row Number'
      txt1 = e_row
      txt2 = e_column
* TXT3 = ' '
* TXT4 = ' '

  ENDMETHOD. "handle_dbl_clk

  METHOD handle_lay_chng.
    DATA: wa_fcat2 LIKE wa_fcat.

    CASE e_ucomm.
      WHEN '&COL0'.

        CALL METHOD go_alv->get_frontend_fieldcatalog
            et_fieldcatalog = it_fcat2.

        LOOP AT it_fcat2 INTO wa_fcat2.
          CLEAR wa_fcat.

          READ TABLE it_fcat INTO wa_fcat WITH KEY fieldname = wa_fcat2-fieldname.
          wa_fcat2-col_pos = wa_fcat-col_pos.

          IF wa_fcat2-fieldname = 'OBJECT_ID'.
            IF wa_fcat2-no_out = 'X'.
              wa_fcat2-no_out = space.

          MODIFY it_fcat2 FROM wa_fcat2.

        CALL METHOD go_alv->set_frontend_fieldcatalog
            it_fieldcatalog = it_fcat2.

      WHEN 'CUST'.
        MESSAGE i001(00) WITH 'Hello'.

  ENDMETHOD. "handle_lay_chng

  METHOD set_toolbar.

    wa_tool-function = 'CUST'.
    wa_tool-text = 'Custom Func'.
    wa_tool-butn_type = 0.
    APPEND wa_tool TO e_object->mt_toolbar.

  ENDMETHOD. "set_toolbar



*---- Data Retrieval --------*
  SELECT object_id
  FROM crmd_orderadm_h


* text
MODULE alv_output OUTPUT.

  IF go_cont IS INITIAL.


    PERFORM sub_init_container.

    PERFORM sub_init_alv_grid.

    PERFORM sub_field_cat.

*---- Making 3rd row non-editable.

    CLEAR wa_style.
    wa_style-fieldname = 'POSTING_DATE'.
    wa_style-style = cl_gui_alv_grid=>mc_style_disabled.
    REFRESH wa_data-style.
    APPEND wa_style TO wa_data-style.
    MODIFY gt_data FROM wa_data INDEX 3 TRANSPORTING style.

*create OBJECT go_toolbar.

    CREATE OBJECT go_event.

    SET HANDLER go_event->handle_dbl_clk FOR go_alv.

    SET HANDLER go_event->handle_lay_chng FOR go_alv.

    SET HANDLER go_event->set_toolbar FOR go_alv.

    CALL METHOD go_alv->set_table_for_first_display
* I_SAVE =
    is_layout = gs_lay
    it_outtab = gt_data
    it_fieldcatalog = it_fcat
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4
    IF sy-subrc <> 0.


* text
MODULE user_command_9100 INPUT.

  CASE sy-ucomm.
      PERFORM sub_free_object.

    WHEN 'BACK'.
      PERFORM sub_free_object.
      SET SCREEN '0'.


* text
* --> p1 text
* <-- p2 text
FORM sub_init_container .

*--- Create Container -------------------*
* parent =
* repid =
* dynnr =
* side = dock_at_left
* extension = 50
* style =
* lifetime = lifetime_default
* caption =
* metric = 0
  ratio = '100'
* no_autodef_progid_dynnr =
* name =
  cntl_error = 1
  cntl_system_error = 2
  create_error = 3
  lifetime_error = 4
  lifetime_dynpro_dynpro_link = 5
  OTHERS = 6
  IF sy-subrc <> 0.

* text
* --> p1 text
* <-- p2 text
FORM sub_init_alv_grid .

*--- Create Alv Grid ---------------------*

* i_shellstyle = 0
* i_lifetime =
  i_parent = go_cont
* i_appl_events = space
* i_parentdbg =
* i_applogparent =
* i_graphicsparent =
* i_name =
* i_fcat_complete = space
  error_cntl_create = 1
  error_cntl_init = 2
  error_cntl_link = 3
  error_dp_create = 4
  OTHERS = 5
  IF sy-subrc <> 0.

* text
* --> p1 text
* <-- p2 text
FORM sub_field_cat .

  gs_lay-grid_title = 'Order Data'.
  gs_lay-zebra = 'X'.
  gs_lay-stylefname = 'STYLE'.

  CLEAR wa_fcat.
  wa_fcat-fieldname = 'OBJECT_ID'.
  wa_fcat-tabname = 'GT_DATA'.
  wa_fcat-ref_table = 'CRMD_ORDERADM_H'.
  wa_fcat-ref_field = 'OBJECT_ID'.
  wa_fcat-col_pos = 1.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-fieldname = 'PROCESS_TYPE'.
  wa_fcat-tabname = 'GT_DATA'.
  wa_fcat-ref_table = 'CRMD_ORDERADM_H'.
  wa_fcat-ref_field = 'PROCESS_TYPE'.
  wa_fcat-col_pos = 2.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-fieldname = 'POSTING_DATE'.
  wa_fcat-tabname = 'GT_DATA'.
  wa_fcat-ref_table = 'CRMD_ORDERADM_H'.
  wa_fcat-ref_field = 'POSTING_DATE'.
  wa_fcat-edit = 'X'.
  wa_fcat-col_pos = 3.
  APPEND wa_fcat TO it_fcat.

* text
* --> p1 text
* <-- p2 text
FORM sub_free_object .


    CALL METHOD go_alv->free
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.

  IF go_cont IS NOT INITIAL.
    CALL METHOD go_cont->free
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.

SYS@R1D AS SYSDBA> select count(*) from SAPDH1.TSP03D where PALPDHOST='TOP1FS6';


SYS@R1D AS SYSDBA> update SAPDH1.TSP03D set PALPDHOST='dcvsfs33' where PALPDHOST='TOP1FS6';

109 rows updated.

A quick and simple way to create ALV in just 3-4 lines of code :)

To achieve this we will use the class  CL_ALV_TABLE. Even if you are not aware of object oriented programming, you can use these simple lines of codes to generate ALV report. I_TAB can be any table. You can declare it as normal table (either through type / like db table / or even OCCURS 0 type table).

DATA: lo_alv TYPE REF TO cl_salv_table,
        lx_salv_msg TYPE REF TO cx_salv_msg,
        l_msg(40) TYPE c .

      CALL METHOD cl_salv_table=>factory
*      list_display   = IF_SALV_C_BOOL_SAP=>FALSE
*      r_container    =
*      container_name =
          r_salv_table   = lo_alv
          t_table        = i_tab
    CATCH cx_salv_msg INTO lx_salv_msg.
      l_msg = lx_salv_msg->get_text( ).
      MESSAGE e000(zyn1otc) WITH l_msg.

  lo_alv->display( ).

[[ZFS File System]]
''Occassional password issues...''
Reset the password the hardway, if necessary. This deletes password for ''cspadm''  and  unlocks the  account.  There's no prompt for a new password, and is only applicable to the files and ldap repositories.
passwd -r files -d cspadm
passwd -r files cspadm
New Password:
Re-enter new Password:
passwd: password successfully changed for cspadm

''Disk Space''
to identify useable space on Solaris clustering with ZFS, then add the space (using BRSPACE for Oracle)
/usr/sbin/zpool list

brspace -f tsextend -f /oracle/C1P/sapdata4/dh9_8/dh9.data8 -i 256 -s 256 -m 0 -t PSAPDH9

''quick and dirty on restarting clustered servers and their SAP services''
1% clrg status

=== Cluster Resource Groups ===

Group Name                       Node Name             Suspended   Status
----------                       ---------             ---------   ------
app6-saf-sap-s1c-dbci-rg         dcasux502:dcvsuz331   Yes         Offline
                                 dcasux602:dcvsuz332   Yes         Online

app6-saf-sap-s1c-dia1-rg         dcasux502:dcvsuz333   Yes         Online
                                 dcasux602:dcvsuz334   Yes         Offline

app6-saf-sap-s1c-dia2-rg         dcasux502:dcvsuz335   Yes         Online
                                 dcasux602:dcvsuz336   Yes         Offline
app6-saf-sap-s1c-dbci-zpool-rg   dcasux502             Yes         Offline
                                 dcasux602             Yes         Online
app6-saf-sap-s1c-dia1-zpool-rg   dcasux502             Yes         Online
                                 dcasux602             Yes         Offline
app6-saf-sap-s1c-dia2-zpool-rg   dcasux502             Yes         Online
                                 dcasux602             Yes         Offline
 2% clrs status -g app6-saf-sap-s1c-dbci-rg  <<== NOT the zpool

=== Cluster Resources ===

Resource Name                       Node Name             State     Status Message
-------------                       ---------             -----     --------------
app6-saf-sap-s1c-dbci-has-res       dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online

app6-saf-sap-s1c-dbci-lh-res        dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online - LogicalHostname online.

app6-saf-sap-s1c-dbci-oralsn-res    dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online

app6-saf-sap-s1c-dbci-orasrv-res    dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online

app6-saf-sap-s1c-dbci-ci-res        dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online - Service is online.

app6-saf-sap-s1c-dbci-webdisp-res   dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online - Service is online.

app6-saf-sap-s1c-dbci-sapinit-res   dcasux502:dcvsuz331   Offline   Offline
                                    dcasux602:dcvsuz332   Online    Online - Service is online.


To stop an SAP system ...
for each DIALOG instance, 	on the DIALOG instance
		clrs disable app6-saf-sap-<SID>-dia<N>1-as-res

for the DB instance, on the DB instance
		clrs disable app6-saf-sap-<SID>-dbci-ci-res

To start an SAP system ...
for the DB instance, on the DB instance
		clrs enable app6-saf-sap-<SID>-dbci-ci-res

for each DIALOG instance, 	on the DIALOG instance
		clrs enable app6-saf-sap-<SID>-dia<N>1-as-res
[[SAP Solution Manager 7.1 usage rights: Standard Support vs Enterprise Support|]]
[[SAP Solution Manager WIKI - General Topics|]]
[[SAP SOLUTION MANAGER demo / training|]]
[[Setting Up Highly Secured SAP Solution Manager Environment|]]

[[MOPZ no longer selects the latest available Java patches by default]]
[[Renew Maintenance License Automatically using Solution Manager]]
[[How to delete Maintenance Optimizer Transaction]]
[[Generating Stack Definition File STACK.XML when SAP Solution Manager is not connected to SAP]]

[[How does SAP Solution Manager support SAP HANA|]]

[[Luis Slvador's [#solman] - Solution Manager - Diagnostics & Verification for Managed Infrastructure Index||]]
[[Ensuring that Your Landscape Data is Up-to-Date - House-Keeping in the LMDB|]]

[[Introduction to Self-Diagnosis in SAP Solution Manager|]]
[[Step by step how to Install Diagnostics Agent and connect the agent to adaptive computing|]]
[[Setting up Wily Agent using manual procedure 7.0|]]
- [[1654426 - How to instrument SAP NetWeaver J2EE stack for Remote Support Component|]] for later releases
[[ - NW 731 SAP Host Agent|]]

[[Incident Management and Change Request Management: E-Mail functionality in SAP Solution Manager 7.1|]]
[[ChaRM Framework: An Overview of Existing Consistency Checks|]]

[[SAP Solution Manager WIKI - Business Process Operations|]]
[[Customizing Business Role in Solution Manager 7.1 ITSM Part 1|]]
[[Customizing Business Role in Solution Manager 7.1 ITSM Part 2|]]
[[Customizing Business Role in Solution Manager 7.1 ITSM Part 3|]]

[[Trouble Shooting Guide for SAP Solution Manager Setup for Technical Monitoring|]]
[[Extractor Framework Troubleshooting|]]
[[Troubleshooting Tips For Full Text Search Configuration For SOLAR01 KW Documents In Solution Manager 7.1 SPX|]]
[[Test Automation with SAP Solution Manager 7.1 and HP QTP|]]
- Note 2 licenses of HP QTP for all SAP customers with SAP Enterprise Support, PSLE or Max Attention contract 
- See [[1745282 - License check for HP QTP|]]

[[Configuring & Reducing Gaps in Number Range for IT Service Management|]]

[[SAP Automated Note Search Tool|]]
Also see:
[[Note 1818192 - FAQ: Automated Note Search Tool|]]
[[Note 1915529 - ANST: New transaction code|]]
[[Note 1778716 - Advanced Note Search Tool|]]

[[Generate Installation Key via SolMan]]
[[Generate Installation Key without SolMan]]
[[Quick and Dirty XML Stack Generation for Solution Manager 7.1|]]
[[Alternate way to approve downloads in Download Basket]]

[[Problems on LMDB/SLD sync process for duplicated hostnames|]]

''SAP System Monitoring mobile apps''
[[System Monitoring Wiki on SDN|]]
[[ - Mobile Apps in SAP Solution Manager|]]

''Usefull Transactions''
|SMSY 	|System data repository|
|SMSY_SETUP |Setup System Landscape|
|SM59|RFC Adjustment|
|SOLMAN_DIRECTORY |Change Solution Directory|
|DSWP |Self diaognasis / Solution Directory|
|SOLUTION_MANGER |Active Solution|
|NOTIFI_CREATE|Create Service Desk Message|
|BP|Business Partner|
|PPOM_CRM |Org tree and position|
| | |
|CRM_DNO_MONITOR |Message Detail Report|
| | |
|BUPA_DEL |Business partner delete|
|BUPA_PRE_DA |Business Partner Deleting/Archiving|
|PPOMA_CRM |General atribute (CRM) change|
|BUSP |Generate Subscreen containers for screen|
|SDCCN |Configure early watch alerts|
| | |
|SCDT_SETUP |Customizing destribution|
|STWB_WORK |Testing|
|STWB_INFO |Status info system|
|SOLAR01 |Business Blue Print Change for Project|
|SOLAR01C |Configure early watch alerts|
|SOLAR02 |Configuration Change for Project|
|SOLAR_PROJECT_ADMIN |SAP Solution Manager Project Administration|
|SOLAR_EVAL |Solman Analysis|
| | |
|CRMD_ORDER |Transaction Processing|
|DNOTIFWL |Basic notification worklist|
|SLDCHECK |Connection test SLD|
|AISUSER |User maintenance|
|CRM_ORDER_DELETE |Ticket delete|
|SI80 |SAP Knowledge warehouse|
|RRMX |Business Explorer (SAP_BW_SOLUTION_MANAGER.)|
|RSPC |Process Chain Maintenance|
|BDMO |ALE/CCMS Monitoring object|
| | |
|SPPFCADM |Application in Customizing|
| | |
|IB52  |Ibase customizing |
|CRMD_SERV_SLA  |Service Profile |
|COMM_HIERARCHY  |Maintaine Catogories and Hirarchies |
|COMM_PRAPPLCAT  |Assign Hirachies to Applications |
|COMMPR01  |Product Maintenace |
| | |
|CRMC_ACTION_DEF  |Action profile and action |
|RE_RHMOVE30  |Manual Transport Link |
|SPPFCADM:  |PPF Applications in Customizing |
|CRMD_SERV_SLA  |Service profile |
|/n/tmwflow/cmsconf  |Charm setting |
|DNO_CUST01  |Notification Types |
|CRMBS02  |Change Status Profile |
|PFAC_RESPO  |Select Role |

[[617547 - RZ20 Sending alerts as mail and SMS|]]
[[662441 - Solution Manager - SAP Notes for Support Packages|]]
[[727998 - Complete Replacement of Service Definitions for SDCC SDCCN|]]
[[781448 - Support Package levels of SolMan installations - upgrades|]]
[[797147 - Wily Introscope Installation for SAP Customers|]]
[[811923 - Generating the SAP Solution Manager key|]]
[[949292 - Solution Manager - Service Desk Related SAP Notes|]]
[[1010428 - End-to-End Diagnostics SolMan - Availability and Limitations|]]
[[1109650 - SAP Solution Manager 7.0 Extension Add-Ons|]]
[[1233116 - BW connection for Service Level Reporting|]]
[[1243233 - Information about Custom Develoment Managment Cockpit|]]
[[1244713 - Configuration of Custom Development Management Cockpit|]]
[[1368413 - Inst. 7.20 7.12 - Diagnostics Agent installation|]]
[[1448655 - Inst. 7.30 - Diagnostics Agent installation|]]
[[1473974 - Using the SAP Host Agent Auto Upgrade Feature|]]
Brief discussion of the generic boot process of Unix

''POST (Power On Self Test):'' When the system is powered up, if first perform a check of the hardware(memory, keyboard, and network devices etc.) The CPU of the system is aware where the program for POST is stored.
''Bootstrap Level-1:'' This is a small program that generally resides at the first few sectors of the physical boot disk. Having a fixed location makes it easy to find and load the program into memory. After a few checks (partitions, available boot option, etc), it loads the comparatively larger level-2 bootstrap program (the actual name differs between the various *NIX different Operating Systems). If you are getting boot options like from where to boot then its evident that the execution is with Bootstrap Level-1 program.
''Bootstrap Level-2 :'' There's no need for this to reside at a fixed location, it's a normal program. The main task of bootstrap level-2 program is to load kernel files into memory.
''Kernel :'' When the kernel files load, it also loads drivers related to interfaces and hardware. In this stage, the //init process// is created; for most of the OS init process has PID=1.
''init process :'' Generally, the init process is the parent or root process of all other processes, and sets the environment variable for all descendent processes. Among other initialization files, it reads the ///etc/inittab// file. This file contains the expected current //runlevel// information. The runlevel decides which group of processes should be started; missing processes are started and any additional processes are killed. You can determine the current runlevel of the system by executing {{{who -r}}}. There is some minor variation between the *NIX operating systems, but generally runlevel 0 is used to halt the system and runlevel 6 to reboot. 

Scripts are executed from a specific location, based on the //runlevel//; i.e. location ///etc/rc.d/rc2.d// for runlevel 2 or ///etc/rc.d/rc3.d// for runlevel 3 etc. The are default locations for these scripts, but they can be changed by the unix administrator. Default locations are:
* Linux: /etc/init.d/
* Solaris /etc/init.d/
* HP-UX (True64): /sbin/init.d/
* AIX: /etc/rc.d/init.d/

''Using the runlevel to start SAP''
When you goto /etc/rc.d/rc2.d you will find some links starting with 'K' and 'S'. For example, if a system is defined to use  runlevel 2 to start SAP...
# pwd
# ls -l
lrwxrwxrwx     1 root     system           27 Sep 20 2011  K98gcstartup -> /etc/init.d/gcstartup
-r-xr-xr-x     1 root     system          307 Jul 16 2011  Ksshd
-r-x------     1 root     system         2439 Jul 14 2011  Kwpars
lrwxrwxrwx     1 root     system           27 Sep 20 2011  S98gcstartup -> /etc/init.d/gcstartup
-r-xr-xr-x     1 root     system          308 Jul 16 2011  Ssshd
The system looks for only those files beginning with letter K & S , any thing else is ignored. K & S should be in capital letters.
K - Kill a Process
S - Start a Process

Note that the file should be hard linked to the appropriate directory for your operating system or installation (usually the ///etc/init.d//).
So if we want to start and stop sap along with the server boot. We need to create a link in the appropriate directory for our runlevel.
# pwd
# ls -l
lrwxrwxrwx     1 root     system           15 Feb 13  2009 K05sap -> /etc/init.d/sap
lrwxrwxrwx     1 root     system           15 Feb 13  2009 S06sap -> /etc/init.d/sap
In some *NIX operating systems these scripts are executed with the argument start and stop (depending on whether it's called from K or S), therefore you do not require a separate script file for start and stop. In your case, you may need  two separate files, one for start script another for stop script.
The following script will start (or stop, depending on whether it's called via K05sap or S05sap) the sap application, the ccms agent and the diagnostic agent.
# Start / stop SAP
case "$1" in
        su - oraec1 -c "lsnrctl start LISTENER_ECC"
        su - ec1adm -c "startsap"
        su - ec1adm -c "sapccm4x -DCCMS pf=/usr/sap/sapmnt/EC1/profile/EC1_DVEBMGS30_zobsapec1ci"
        su - daaadm -c "startsap"
        su - daaadm -c "stopsap"
        su - ec1adm -c "sapccm4x -stop pf=/usr/sap/sapmnt/EC1/profile/EC1_DVEBMGS30_zobsapec1ci"
        su - ec1adm -c "stopsap"
        su - oraec1 -c "lsnrctl stop LISTENER_ECC"
        echo "Usage: $0 { start|stop }"
        exit 1
exit 0
Similarly, if you want to start content server or just MaxDB you can take help from the script below.
# Start / stop contentserver
case "$1" in
        su - sqdsdb -c "/sapdb/programs/bin/dbmcli -U DEFAULT db_online"
        su - a04cs -c "/usr/sap/home/q04cs/bin/apachectl -k start"
        su - sqdsdb -c "/sapdb/programs/bin/x_server start"
        su - sqdsdb -c "/sapdb/programs/bin/x_server stop"
        su - a04cs -c "/usr/sap/home/q04cs/bin/apachectl -k stop"
        su - sqdsdb -c "/sapdb/programs/bin/dbmcli -U DEFAULT db_offline"
        echo "Usage: $0 { start|stop }"
        exit 1
exit 0
You want to stop users from displaying table contents in SAP HR tables, without taking away access to any SE16 or SE16N based transactions.

Remove authority for S_TABU_DIS for displaying documents in authorization groups that include SAP HR tables. ''SAP HR Personnel Administration (PA)'' is one authorization group assigned to many SAP HR tables.
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:2em 1em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:2em 1em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:2em;}
.siteSubtitle {font-size:2em;}

/* allows you to adjust the text shown between triple brackets is pre (block style) */ 
.viewer pre { font-size:1.2em; line-height:1.4em; color:#009;background:#ffc; }
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
''Is turning it off safe ?''
For internal non-productive systems, yes. For external facing systems and any production system, https should always be used.  To enable it see [[Note 1527879  - Switching to HTTPS Transport Layer Security|]] and [[Note 1590454 - ICF system logon, error message is displayed twice|]].

[img[Suppress Protocol cannot be switched 01.png]]

''How to Stop Display of the Warning Messages.''
Use /nSICF navigate to the respective service {{{sap/bc/webdynpro}}}.
[img[Suppress Protocol cannot be switched 02.png]]

Change/Modify the service.
[img[Suppress Protocol cannot be switched 03.png]]

Select tab "Error Pages" and choose the"Configuration Button"
[img[Suppress Protocol cannot be switched 04.png]]

Change protocol to "Do Not Switch" and select the check box "Do Not Display Warnings".
Then "Save as Global Setting" button.

[img[Suppress Protocol cannot be switched 05.png]]

NOTE: ''Remember this is only for non-productive systems, without sensitive data, presenting to the internal network only. In short, is it a problem if someone gets your password ?? If so then https is required''
The Redo and Archive logs are used to maintain a serialized transaction detail of changes to the database since the last database backup.  The Redo logs should be placed on separate disks from any other storage.  The Archive log should similarly be placed on separate disks from the Redo log files, so that disk contention is reduced between the online and archived logs.
Optimally, you want the Redo logs to change about every 20  30 minutes.  There is overhead associated with closing an active Redo log and opening a new one, so managing the frequency is important.  You also want the next Redo log to be opened on a different disk then the one that currently being closed.  Sizing of the Redo logs should be done such that during high volume data loads the frequency of log switches is maintained at the lower level of 20 minutes.  During normal usage, when there is not a large volume of DML activity, you would schedule jobs to switch the log around 30 minutes.  These log switch intervals are published recommendations from Oracle.
Redo log switching intervals is measured by looking at the V$LOG_HISTORY table.  The following query shows the log switching intervals for the last day:
select to_char(first_time,'MM/DD/YYYY HH24:MI:SS') from v$log_history 
where first_time > (SYSDATE - 4)
order by to_char(first_time,'MM/DD/YYYY HH24:MI:SS') desc
It was found that frequent log switching was occurring during normal production hours.  Log swapping was occurring at times of less than 5 minutes, and sometimes as frequently as 1 minute.  This would indicate that the redo log files are sized to small for this application.  If 5-minute intervals were the most often seen lower level, then the size of the Redo logs should increase to 4 times their current size.  At 4 times their current size, they would more closely approach the recommended lower level of 20 minutes between log swaps.
The LOG_BUFFER parameter is used to determine how much information can be buffered before a write to the Redo log occurs.  The following query is used to determine the number of times that the system had a wait state occur while trying to write the buffer to disk.
WHERE NAME = 'redo buffer allocation retries'
A value greater than zero indicates that there are unnecessary wait stats occurring on writing information to the Redo logs.  Increasing the LOG_BUFFER parameter will help to reduce this parameter.  It was seen that there where 504 retries occurring over the past eight days, including 2 weekend days.  Including the weekends, this is more than 60 waits per day.  Just counting the workdays, this averages to about 84 waits per day.  The user community of this system is extremely low, so a very high number like this is a concern.  SAPs processing creates tables and inserts them with data, which creates transaction entries that result in Redo log entries.  The numbers that I have seen average out to about one wait every 6 minutes.  Again this is a very lightly used data system, where this wait could be resulting on every single report run.  As the volume of users increases, this issue would increase the delays seen.
TRJOB and TRBAT are the major tables in the CTS process. After TP program has sent the event to the r3 system, RDDIMPDP checks table TRBAT in the target system to find out if there is an action to be performed. Mass activation, distribution, or table conversions are the examples of actions. If there is action to be performed, RDDIMPDP starts the appropriate program in the background task. RDDIMPDP then reschedules itself.
By checking table TRJOB, RDDIMPDP automatically recognizes if a previous step was aborted, and restarts this step. For each transport request , TP program inserts an entry into table TRBAT. If the return code 9999 in this table then the step is waiting to be performed. Return code 8888 indicates that the step is active and currently being processed. A return code of 12 or less indicates that the step is finished. In addition, TP inserts a header entry to let the RDDIMPDP program know to start processing. The column return code will therefore contain a B for begin. When RDDIMPDP is started, it sets the header entry to R(un), and starts the required program. When all the necessary actions are performed for all the transport requests, the column return code contains all the return codes received, and the column TIMESTAMP contains the finishing time. The header entry is set to F(inished). TP monitors the entries in TRBAT and TRJOB tables. When the header entry in TRBAT is set to finished. The entry in TRJOB is deleted.
Transport Tables SE06
|TDEVC |Development classes|
|TASYS |Details of the delivery. Systems in the group that should automatically receive requests, have to be specified in table TASYS.|
|TSYST |The transport layers will be assigned to the integration systems. ( Define all systems)|
|TWSYS |Consolidation routes ( define consolidation path)|
|DEVL |Transport layers are defined here|
In u201CConfiguring the CTS systemu201D section, We will learn more about the transport tables in SE06 transaction
The SQL Trace is part of the Performance Trace (transaction ST05) is the most important tool to test the performance of the database. Unfortunately, information on how to use the SQL Trace and especially how to interpret its results is not part of the standard ABAP courses. 

he execution is very straightforward and can be performed without any prior knowledge. The interpretation of the results, however, requires some experience. 

''Executing the SQL Trace''
Using the SQL trace is very straightforward:
Call the SQL trace in a second mode
Make sure that your test program was executed at least once, or even better, a few times, to fill the buffers and caches. Only a repeated execution provides reproducible trace results. Initial costs are neglected in our examination
Start the trace
Execute your test program in the first mode
Switch off the trace. Note, that only one SQL trace can be active on an application server, so always switch your trace off immediately after your are finished.
Display the trace results
Interpretation of the results
Note, the trace can also be switched on for a different user.

''Trace Results – The Extended Trace List''
When the trace result is displayed the extended trace list comes up. This list shows all executed statements in the order of execution (as extended list it includes also the time stamp). One execution of a statement can result in several lines, one REOPEN and one or several FETCHES. Note that you also have PREPARE and OPEN lines, but you should not see them, because you only need to analyze traces of repeated executions. So, if you see a PREPARE line, then it is better to repeat the measurement, because an initial execution has also other effects, which make an analysis difficult.

* PREPARE is the determination of the access path. This is bit costly, and then stored in the cursor cache. This is why you should not trace first time executions; In first executions other statements will run which are expensive, these are mainly buffer filling statements. These statements should not be in the trace, they will not usually appear in a second or third execution.
* OPEN/REOPEN is very fast. That is only the connection to the database.
* The FETCH is the search and transfer of the data. 
* The column REC shows how many records are transfered per fetch. 

Why a PACKAGE SIZE of 200? Package sizes are usually much higher, about 10.000. And package size determines what you want to process in ABAP in your first step. The number of records per FETCH is not influenced by package size, it is limited by the block size of 32k divided by field length of a record, i.e. the number of records which fit into 32k.

''Trace Results - Summarized SQL Statements''
This list contains all the information we need for most performance tuning tasks.
The key columns are ‘Obj Name’ (col. 12), i.e. table name, and ‘SQL Statement’ (col. 13). When using the summarized list, keep the following points in mind:
Several coding positions can relate to the same statement:
The statement shown can differ from its Open SQL formulation in ABAP.
The displayed length of the field ‘Statement’ is restricted, but sometimes the displayed text is identical.
In this case, the statements differ in part that is not displayed.
The important measured values are ‘Executions’ (col. 1), ‘Duration’ (col. 3) and ‘Records’ (col. 4). They tell you how often a statement was executed, how much time it needed in total and how many records were selected or changed. For these three columns also the totals are interesting; they are displayed in the last line. The other totals are actually averages, which make them not that interesting.
Three columns are direct problem indicators. These are ‘Identical’ (col. 2), ‘BfTp’ (col. 10), i.e. buffer type, and ‘MinTime/R.’ (col. 8), the minimal time record.
Additional, but less important information is given in the columns, ‘Time/exec’ (col. 5), ‘Rec/exec’ (col. 6), ‘AvgTime/R.’ (col. 7), ‘Length’ (col. 9) and ‘TabType’ (col. 11).
For each line four functions are possible:
The magnifying glass shows the statement details; these are the actual values that were used in the execution. In the summary the values of the last execution are displayed as an example.
The ‘DDIC information’ provides some useful information about the table and has links to further table details and technical settings.
The ‘Explain’ shows how the statement was processed by the database, particularly which index was used. More information about ‘Explain’ can be found in the last section.
The link to the source code shows where the statement comes from and how it looks in OPEN SQL. 
''Checks on the SQL Statements''
For each line the following 5 columns should be checked, as tuning potential can be deduced from the information they contain. Select statements and changing database statements, i.e. inserts, deletes and updates, can behave differently, therefore also the conclusions are different.

For select statements please check the following:
* Entry in ‘BfTy’ = Why is the buffer not used? 
The tables which are buffered, i.e. with entries ‘ful’’ for fully buffered, ‘gen’ for buffered by generic region and ‘sgl’ for single record buffer, should not appear in the SQL Trace, because they should use the table buffer. Therefore, you must check why the buffer was not used. Reasons are that the statement bypasses the buffer or that the table was in the buffer during the execution of the program. For the tables that are not buffered, but could be buffered, i.e. with entries starting with ‘de’ for deactivated (‘deful’, ‘degen’, ‘desgl’ or ;deact’) or the entry ‘cust’ for customizing table, check whether the buffering could not be switched on. 
* Entry in ‘Identical’ = Superfluous identical executions 
The column shows the identical overhead as a percentage. Identical means that not only the statement, but also the values are identical. Overhead expresses that from 2 identical executions one is necessary, and the other is superfluous and could be saved.
* Entry in ‘MinTime/R’ larger than 10.000 = Slow processing of statement 
An index-supported read from the database should need around 1.000 micro-seconds or even less per record. A value of 10.000 micro-seconds or even more is a good indication that there is problem with the execution of that statement. Such statements should be analyzed in detail using the database explain, which is explained in the last section.
* Entry in ‘Records’ equal zero = No record found 
Although this problem is usually completely ignored, ‘no record found’ should be examined. First, check whether the table should actually contain the record and whether the customizing and set-up of the system is not correct. Sometimes ‘No record found’ is expected and used to determine program logic or to check whether keys are still available, etc. In these cases only a few calls should be necessary, and identical executions should absolutely not appear.
* High entries in ‘Executions’ or ‘Records’ = Really necessary? 
High numbers should be checked. Especially in the case of records, a high number here can mean that too many records are read.

For changing statements, errors are fortunately much rarer. However, if they occur then they are often more serious:
* Entry in ‘BfTy’ = Why is a buffered table changed? 
If a changing statement is executed on a buffered statement, then it is questionable whether this table is really suitable for buffering. In the case of buffered tables, i.e entries ‘ful’, ‘gen’ or ’sgl’’, it might be better to switch off the buffering. In the case of bufferable tables, the deactivation seems to be correct.
* Entry in ‘Identical’ = Identical changes must be avoided 
Identical executions of changing statements should definitely be avoided.
* Entry in ‘MinTime/R’ larger than 20.000 = Changes can take longer 
Same argument as above just the limit is higher for changing statements.
* Entry in ‘Records’ equal zero = A change with no effect 
Changes should also have an effect on the database, so this is usually a real error which should be checked. However, the ABAP modify statement is realized on the database as an update followed by an insert if the record was not found. In this case one statement out of the group should have an effect.
* High entries in ‘Executions’ and ‘Records’ = Really necessary? 
Same problems as discussed above, but in this case even more serious.

''Understanding the Database Explain''
The ‘database explain’ should show the SQL statement as it goes to the database, and the execution plan on the database. This view has a different layout for the different database platforms supported by SAP, and it can become quite complicated if the statement is complicated.
In this example we show the ‘Explain’ for a rather simple index-supported table access, which is one of the most common table accesses:
The database starts with step 1, index unique scan DD02L~0, where the three fields of the where-condition are used to find a record on the index DD02L~0 (‘~0’ denotes always the primary key).
In step 2, table access by index rowed DD02L, the rowid is taken from the index to access the record in the table directly.
Some databases display the execution plan in a graphical layout, where a double-click on the table gives additional information, as shown on the right side. Some database platforms do not use graphical layouts and are a bit harder to read, but still show all the relevant information. Either way, the date of the last statistics update and the number of records in the table are displayed. Also all indexes are listed with their fields and the number of distinct values for each field, which makes it possible to calculate the selectivity of an index. Proper index support can be the determining factor that controls whether a statement needs fractions of seconds or even minutes to be finished, especially in the case of a join.
[[7417 - Conversion between standard time and daylight saving time| ]]
[[102088 - Reducing downtime when changing from summer to winter time| ]]
[[198411 - Current data and information about time zones| ]]
[[398374 - Problems when converting summer time and winter time| ]]
[[436755 - The Timezone of a User SU01, SU3 | ]]
[[481835 - Analyzing the time zone settings| ]]
[[950114 - Profile parameter zdate DSTswitch_contloctime| ]]
[[1003218 - Daylight saving time rule in Western Australia| ]]
[[1067441 - Environmental Compliance Date and Time Handling| ]]
[[1131538 - Summer time in Australia as of 2008| ]]
[[Generate Installation Key via SolMan]]
[[Generate Installation Key without SolMan]]
The Installation key is no longer required from NW  7.3 onwards.
[[OS/DB Migration]]
[[SAPinst step state editor|]]

[[FAQs for the SPAU-Adjustment|]]
[[Handbook for SPDD and SPAU adjustment (2009)|SPDD and SPAU Adjustments Handbook.pdf]]

[[SLD - System Landscape Directory]]

[[Approve SMP Downloads without MOPZ]]
[[Dealing with background Jobs during Upgrades or Downtime]]
[[Provide SAP Notes for SUM by transport, not SNOTE]]
[[Create new Logical System]]

[[Install of NW requires media SAP:SAPLUP:XXX]]
[[Modification of keydb.xml to correct or bypass SAPINST steps]]
[[OSS Note 684106 - Microsoft runtime DLLs]]

Problems with BTCTRNS1 and BTCTRNS2 ? Check the following notes:
[[Note 37425 - Cancel job during upgrade|]] - Check your Support Pack Levels against those listed
[[Note 990601 - Authorization check missing from BTCTRNS1 and BTCTRNS2|]]
[[Note 980998 - Batch scheduler: Released jobs do not start|]]
|Author|Eric Shulman|
|Description|show/hide left sidebar (MainMenu)|
<<tiddler ToggleLeftSidebar>>
<<tiddler ToggleLeftSidebar with: label tooltip>>

Try it: <<tiddler ToggleLeftSidebar##show
	with: {{config.options.chkShowLeftSidebar?'�':'�'}}>>
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (�)
config.options.txtToggleLeftSideBarLabelHide (�)
<<tiddler {{
	var co=config.options;
	if (co.chkShowLeftSidebar===undefined) co.chkShowLeftSidebar=true;
	var mm=document.getElementById('mainMenu');
	var da=document.getElementById('displayArea');
	if (mm) {'block':'none';'':'1em';
'';}}>><html><nowiki><a href='javascript:;' title="$2"

	var co=config.options;
	var opt='chkShowLeftSidebar';
	var show=co[opt]=!co[opt];
	var mm=document.getElementById('mainMenu');
	var da=document.getElementById('displayArea');
	if (mm) {'block':'none';'':'1em';
	var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
	var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
	this.title=(show?'hide':'show')+' left sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
%/<<tiddler {{
	var src='ToggleLeftSidebar';
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
	var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
}} {{
	var tip=(config.options.chkShowLeftSidebar?'hide':'show')+' left sidebar';
|Author|Eric Shulman|
|Description|show/hide right sidebar (SideBarOptions)|
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
Try it: <<tiddler ToggleRightSidebar##show
	with: {{config.options.chkShowRightSidebar?'�':'�'}}>>
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (�)
config.options.txtToggleRightSideBarLabelHide (�)

<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {'block':'none';'':'1em';
'';}}>><html><nowiki><a href='javascript:;' title="$2"
	var co=config.options;
	var opt='chkShowRightSidebar';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {'block':'none';'':'1em';
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;

%/<<tiddler {{
	var src='ToggleRightSidebar';
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
}} {{
	var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
Token-based server access validation failed with an infrastructure error

If you’re getting a login failed for your Windows user - which you’re sure you put in the sysadmins role - it’s probably because UAC isn’t pasing all your group memberships to SSMS when you run it, and therefore giving you access denied. If you check your Security error log (via event viewer) and you see something like this:

Login failed for user Username Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors.

It’s probably UAC. Try right clicking and running as administrator and seeing if it goes away. 
In SPRO (Display IMG), go to the 'Additional information' menu, select 'Additional Information' again and choose 'Display Key' and 'IMG Activity' within that. Now you will see an additional column adjacent to SPRO nodes.
The last 4 characters displayed against most executable nodes form the T-code directly for that activity.

NOTE: Some tables on SPRO do not have tcodes.
e.g. Define Segment - V_FAGL_SEGM show on screen is not a tcode.  It is a table you have to display using t-code SM30
| CG3Y |Download a file from SAP (e.g. /usr/sap/file.txt) to your computer |
| CG3Z |Upload a file from your computer to an SAP directory |
| AL11 |Browse files located on the SAP directories |
In lot of projects, there is a huge number of partner profiles to be configured. These have to be then manually keyed in every environment. An alternative is using using SAP Transports to copy the partner profiles across clients or systems. This will save several days of effort depending on the scope.

The instructions assume that an ECC system has a Development client(600) and a test client(610).

One very important per-requisite is to avoid have the SID in the RFC destination used on the partner profile. Create something like SAPPI_IDOC for example, rather than PID_IDOC and PIQ_IDOC.

1.    Maintain all Work Centers & Partner Profiles in client 600 (Do not maintain Work Centers & Partner Profiles in any other systems/clients)
 2.   Create separate transports for Partner Profiles & Work Centers
 3.   Optionally, create separate transports for Partner Profiles for different logical systems (so they can be transported at different times if required).
 4.   Test transports by importing them to client 610 using SCC1 and verify if everything is imported correctly. Work Center transports should be imported before Partner Profile transports. Best practice to keep Logical systems in separate transport as well and import them before partner profiles.
 5.   Release transports.

''Transporting Work Centers''
1.    Create a new Customizing Transport
2.   Run program RHMOVE30 & enter the following parameters:
 a.       Plan Version = ‘01’
 b.        Object Type = ‘A’
 c.       Object ID = List of Work Centers to Transport
 d.        Reporting Period = ‘Today’
 e.        Evaluation Path =  ‘B007’
 f.        Status Vector = 1
 g.        Task = Task of transport created (this must be the task, not the main transport ID)
 h.        Transport Objects = checked
 i.        All other fields should be blank/un-checked
3.    Execute program, select all entries displayed and select “Transport/Delete” button. (This step can take some time if there are multiple work centers selected)
4.    Review the contents of the transport created. The entry for “PDWS” should be blank. The entry for “PDST” should have keys populated. If entries for HRP1217 have been added to the transport, then edit the transport and delete them. (It it is important these are deleted otherwise the transport will fail).
5.   Check the transport by importing it to client 610 using Tcode SCC1.

[img[Transporting IDOC Partner Profiles and Workcenters via CTS.png]]

''Words of warning:'' This program transports the relationships between the work centers you specify & the tasks linked to it, but also the reverse relationship from the task to the work center. (Both relationships are required). It also transports any other relationships from the task, so the relationship from the task to all other work center is transported. If the other Work Center do not exist in the target system then the transport will fail  to build the links to the missing work center – all other links will be activated.

The systems are all aligned now, so this shouldn’t be an issue, so long as no “dummy” work centers are created in client 600 (and work centers aren’t manipulated in the other systems). If you experience issues, check that there are no work centers in client 610 that should not be transported. (If there are then set the validity period in the past so they are not picked up by the transport program).

''Transporting IDoc Partner Profiles''
1.    Create a new Workbench Transport & go to edit mode.
2.   To transport the Partner Profile Header:
        Add an entry for R3TR TABU EDPP1 to the transport
        Update the Table key for the entry, setting client = 600, Partner No = “Partner Profile #”
3.    To transport the Inbound Parameters:
        Add an entry for R3TR TABU EDP21 to the transport
        If you want to transport all the Inbound parameters, update the Table key for the entry, setting client = 600, Partner No = “Partner Profile #” and Partn. Type = ‘*’
        If you want to transport a specific entry then complete the key as above, but populate additional fields to specify the entry you want. (Add multiple table keys if you want to transport multiple entries
4.    To transport the Outbound Parameters:
        Add an entry for R3TR TABU EDP13 to the transport
        Update the Table keys as per the guidance for the Inbound Parameters
5.    To transport the Message Control entries for Outbound Parameters:
        Add an entry for R3TR TABU EDP12 to the transport
        Update the Table keys as per the guidance for the Inbound Parameters
6.    Save the transport (you will get warnings about the tables, but you can ignore these).
7.   Check the entries are correct by importing it to client 610.

''Recommendation:'' To minimize the risk of missing some configuration details, transport all the entries for a Partner in a single transport. However, if only a single entry is required (after all entries have been transported) it may make sense just to transport that entry to reduce regression impact.
You normally maintain program variants in the production system, but on occasion we may come across the scenario where we want to to transport the Variants along with their underlying program from Development system to the testing or production systems.
SAP has provided a standard program to add a Program Variant into a tansport
Step 1 : Goto SE38 and enter program Name - RSTRANSP and Execute
Step 2 - Provide the program name and name of the variant that needs to be transported to next level and execute the report.
, constarint is that variant should be available in the system where this report is being executed (mostly Development system).

Step 3 -  A popup comes with program name and variant name which needs to be selected. Checkbox needs to be ticked.
Step 4 - A popup window for the transport organiser appears where we can create a new Transport or use an existing request.


[[UNIX (SAP)]]
[[UNIX mail]]
[[UNIX Tips and Tricks]]

[[Identify OS, Release, and Version]]

[[find and xargs]]

[[UNIX (Generic)]]
[[UNIX Tips and Tricks]]
[[Start/Stop SAP along with your Unix Server Start/Stop]]

[[saplicense command]]
Both on Linux and on Aix, {{{netstat -a}}} will give you the active connections/listening ports; i.e. for port 2500...
{{{netstat -a|grep 2500}}}

(On Aix you would have to install ''nmap'', it's not present by default, see 

To identify which daemon has opened a port, use {{{lsof -i |grep port_number}}. 

(On Aix you would have to install ''lsof'', it's not present by default, see 
{{{nucspfd1:/root # lspv}}}
{{{hdisk0          00cf0ee46cb9d0e0                    rootvg          active}}}
{{{hdisk1          00cf0ee40d0650c6                    None}}}
{{{hdisk2          00cf0ee40d945c82                    abcvg           active}}}
{{{nucspfd1:/root #}}}


{{{nucspfd1:/root # lsvg}}}
{{{nucspfd1:/root #nucspfd1:/root # lsvg -p abcvg rootvg}}}
{{{hdisk2            active            551         108         00..00..00..00..108}}}
{{{hdisk0            active            140         16          00..01..00..00..15}}}
{{{nucspfd1:/root #}}}


{{{nucspfd1:/root # exportfs -i /db2/AET}}}

'{{{nucspfp1:/root # mount -n nucspfd1 /db2/AET /db2/backup}}}
{{{nucspfp1:/root #}}}


[[Rapid Removal of large datasets in UNIX OS]]
[[UNIX Users]]
[[UNIX Space Allocation]]

[[Convert lower-case filenames to UPPER-CASE]]

[[UNIX Network Stuff]]

[[Useful non SAP software]]
Assuming Putty / PSCP is in your PATH= variable.
You only need to wrap the path ./ file name to the key file in quotes if the path ./ file name includes spaces.
You can use wildcards on the source - PSCP will complain about sub directories (and not move them) but it will continue processing the rest of the current directory.

{{{C:\temp> pscp -i "C:\Dropbox\cloud\VPN-US-EAST\NW 7.4 System.ppk" KnlMsg.txt}}}
{{{KnlMsg.txt                | 576 kB | 192.3 kB/s | ETA: 00:00:00 | 100%}}}

''FTP : mput / mget with no confirmation''
The prompt feature of the mput and mget commands can be disabled by invoking ftp with the -i option. In this instance, all file names that match the pattern in your mput / mget command will be transferred without confirmation.

{{{ftp -i}}}
{{{ftp>cd [remote_directory]}}}
{{{ftp>lcd [local_directory]}}}
{{{ftp>mget *.foo}}}
{{{ftp>mput *.bar}}}

''Redirection of Output and Input''
When you issue a Unix command like date, the output of the command goes to what is called standard output.

{{{$ date}}}
{{{Tue Dec 19 21:16:03 CST 2012 }}}

You can redirect standard output to go to a file by using the > sign after the command and before a file name. ''NOTE'' that this erases what would previously have been in the file. 

{{{$ date > apple}}}
{{{$ cat apple}}}
{{{Tue Dec 19 21:16:03 CST 2012 }}}

The >> symbol ''appends'' what would go to standard output to a file. So, for example, we can do this: 
{{{$ date > apple}}}
{{{$ date >> apple}}}
{{{$ cat apple}}}
{{{Tue Dec 19 21:17:07 CST 2012 }}}
{{{Tue Dec 19 21:17:53 CST 2012 }}}


Simplest method to set permission of ''all Directories and Files'' in and below an existing directory to "0755":
{{{$ chmod -R 0755 directoryNameHere}}}

You can have some control over what gets changed.... For example, recursively set the execute bit on every directory, by using the +X flag - it acts as a 'smart execute', seting the execute bit on directories only
{{{$ chmod -R a+X *}}}

However, the "-R" option isn't very conditional. To find and apply permission "755" to all Directories / Files with permission "777", using the "find" command with the "-exec" option as follows:
{{{$ find /home/user/demo -type f -perm 777 -print -exec chmod 755 {} \;}}}

To select directories and subdirectories only, use the following syntax:
{{{$ find /var/www/html -type d -perm 777 -print -exec chmod 755 {} \;}}}

A typical example for usage is that "rm -r *" doesn't work if you don't have write acess on files below your current directory:
{{{$ pwd}}}
{{{$ chmod -R 777 *}}}
{{{$ rm -r *}}}


Sometimes data from a CD or DVD is stored as an image of the physical disk, rather than in the conventional directory / file format. This is known as a ISO format. ISO image files typically have a file extension of .ISO. The name ISO is taken from the ISO 9660 file system used with CD-ROM media, but an ISO image can also contain UDF file system because UDF is backward-compatible to ISO 9660. You mount ISO images via the loop device.

{{{[user@hyperdrive iso_directory]# ls *iso}}} 
{{{CD51039142.iso  D51036756.iso  D51037289.iso  D51037295.iso  D51039248.iso  D51040456.iso}}} 
{{{CD51041688.iso  D51037288.iso  D51037294.iso  D51037296.iso  D51039351.iso  D51041254.iso}}} 
{{{[user@hyperdrive iso_directory]# mkdir /mnt/CD51039142}}}
{{{[user@hyperdrive iso_directory]# mount -o loop,ro CD51039142.iso /mnt/CD51039142}}}
{{{[user@hyperdrive iso_directory]# ls /mnt/CD51039142}}}

To bring a task out of the background... The [%] character tells the shell that you want to bring a job out of the background and make it the foreground task. If no job number is given, it selects the last job number. You can see which jobs are running by typing the jobs shell command.
host> jobs
host> %1


chfs -a size=+256M /db2
chfs -a size=+512M /db2/BB0


stlmelsh1:orash1 2> lsvg
stlmelsh1:orash1 3> lsvg sapSH1
VOLUME GROUP:   sapSH1                   VG IDENTIFIER:  000cb8adb054887c
VG STATE:       active                   PP SIZE:        64 megabyte(s)
VG PERMISSION:  read/write               TOTAL PPs:      8459 (541376 megabytes)
MAX LVs:        256                      FREE PPs:       600 (38400 megabytes)
LVs:            24                       USED PPs:       7859 (502976 megabytes)
OPEN LVs:       24                       QUORUM:         7
TOTAL PVs:      13                       VG DESCRIPTORS: 13
STALE PVs:      0                        STALE PPs:      0
ACTIVE PVs:     13                       AUTO ON:        yes
MAX PPs per PV: 1016                     MAX PVs:        32
stlmelsh1:orash1 4> /usr/local/bin/sudo su -
stlmelsh1:orash1 4> /usr/local/bin/sudo su -
stlmelsh1# chfs -a size=+2G /oracle/SH1/sapdata1
Filesystem size changed to 35258368


{{{gzip 1.2.4 (18 Aug 93)}}}
{{{usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]}}}
{{{ -c --stdout      write on standard output, keep original files unchanged}}}
{{{ -d --decompress  decompress}}}
{{{ -f --force       force overwrite of output file and compress links}}}
{{{ -h --help        give this help}}}
{{{ -l --list        list compressed file contents}}}
{{{ -L --license     display software license}}}
{{{ -n --no-name     do not save or restore the original name and time stamp}}}
{{{ -N --name        save or restore the original name and time stamp}}}
{{{ -q --quiet       suppress all warnings}}}
{{{ -r --recursive   operate recursively on directories}}}
{{{ -S .suf  --suffix .suf     use suffix .suf on compressed files}}}
{{{ -t --test        test compressed file integrity}}}
{{{ -v --verbose     verbose mode}}}
{{{ -V --version     display version number}}}
{{{ -1 --fast        compress faster}}}
{{{ -9 --best        compress better}}}
{{{ file...          files to (de)compress. If none given, use standard input.}}}

{{{Usage: tar -{c|r|t|u|x} [-BdFhilmopsvw]}}}
{{{           [-Number] [-fFile]}}}
{{{           [-bBlocks] [-S [Feet] [Feet @Density] [Blocksb]]}}}
{{{           [-LInputList] [-NBlocks] [-C Directory] File ...}}}


Use of tar, via
2 TB of database data files needed to be copied between filesystems.
Traditional linux cp command took  7 hours, even when multiple cp processes were fired in background with nohup.


Logged in as oras1x (owner of S1X database)

{{{cd /oracle/S1Q}}}
{{{nohup tar -Sc sapdata1/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata2/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata3/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata4/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata5/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata6/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata7/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata8/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata9/ | tar -C /oracle/S1X / -xv &}}}
{{{nohup tar -Sc sapdata10/ | tar -C /oracle/S1X / -xv &}}}

Monitored the copy speed every 60 seconds. Average speed was 12.6 GB / minute, Peak speed was 56.57 GB / minute.

The copy was completed in 3 hours.


{{{find . -type f -mtime +365 -exec gzip {}\;}}}
find location -ctime time_period
Examples of time_period:
    More than 30 days ago: -ctime +30
    Less than 30 days ago: -ctime -30
    Exactly 30 days ago: -ctime 30

-atime        access time
-ctime        create time
-mtime        modify time



{{{/opt/soe/local/openssh-4.2p1/bin/ssh <server> -l <user>}}}
if you don't specify <user>, then it will attempt to log you on to the remote server with your current userid.

{{{/opt/soe/local/openssh-4.2p1/bin/scp xiqadm@drxiq:<remote_directory/remote_file_name> <local_directory/local_file_name>}}}
{{{pscp c:\temp\Example2_XID_defaultTrace.csv}}}
{{{pscp c:\temp\ xipadm@}}}
{{{pscp -r c:\SAPAdmin\}}}


{{{perl -pi -e 's/searchpattern/replacewith/g' *.html}}}


du -ks *


ifconfig -a


cd SDM/program jstartup mode=standalone systemcomponentstate mode=activate jstartup mode=integrated


Via vnc
setenv DISPLAY localhost:?.0
export DISPLAY=localhost:?.0
cd <program_dir>

/opt/soe/local/bin/sudo -i
remove any outstanding /tmp/.X11-unix/X* files
vncserver -kill :1

cd /usr/local/bin		<== directory sometimes for "Xvnc" and "vncserver"


tp ADDTOBUFFER SRDK900139 SRP pf=/usr/sap/trans/bin/TP_DOMAIN_SRD.PFL -Dtransdir=/usr/sap/trans
tp IMPORT SRDK900139 SRP client500 pf=/usr/sap/trans/bin/TP_DOMAIN_SRD.PFL -Dtransdir=/usr/sap/trans


cd /db2/XIQ/log_archive/db2*/*/N*/C*


slibclean Command removes any currently unused modules in kernel and library memory.
for regular files, either fuser or lsof can be used to tell if they're open.

cleanipc <instance#> remove
   This removes all IPC shared memories and semaphores for R/3.
saposcol -k
   This stops the collector process.
showipc <instance#>

   This should show no IPC objects owned by R/3.


dscdb6up xidadm aMnchp#1
dscdb6up db2xid aMnchp#1
Error messages about changing OS passwords is OK 

chuser home=/db2/db2xid db2xid
usermod home=/db2/db2xid db2xid

topas 	[ -d number_of_monitored_hot_disks ] 
	[ -h ] 
	[ -i monitoring_interval_in_seconds ] 
	[ -n number_of_monitored_hot_network_interfaces ]
	[ -p number_of_monitored_hot_processes ] 
	[ -w number_of_monitored_hot_WLM classes ] 
	[ -c number_of_monitored_hot_CPUs ]
	[ -I remote_polling_interval ] 
	[ -U username_owned_processes ] | [ -C [ -o field = value,... ] -D | -L |-P | -W ] 
	[ -m]


1,$s/bert/ernie/  - 'for each line line 1 to end, substitute first occurrence of bert with ernie'
1,$s/bert/ernie/g - 'for each line line 1 to end, substitute every occurrence of bert with ernie'
.,$s/bert/ernie/  - 'for each line current line to end, substitute first occurrence of bert with ernie'

                               System Management
  Software Installation and Maintenance
  Software License Management
  System Storage Management (Physical & Logical Storage)
  Security & Users
  Communications Applications and Services
  Print Spooling
  Problem Determination
  Performance & Resource Scheduling
  System Environments
  Processes & Subsystems
  RS/6000 SP System Management
  Using SMIT (information only)

DIR_SAPUSERS  ---->>  /usr/sap/GWA/DVEBMGS00/work

ps -aef
du -ks
du -ks `ls`  <-- note style of quote

To create 2 uncompressed files requires just 1 command


To tar only files (not subdirectories) in the current directory use this command:
$ tar cvf files.tar ./`ls -l | grep -v '^d' | awk '{ print $9 }'`

ftp to (DE3)

cd (on both machines)
ls -alrt
get R903190.DE3
cd ../cofiles (on both machines)
ls -alrt
get K903190.DE3 

quit from ftp

cd ../bin
tp addtobuffer
tp import

Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol1     199381  150708   28734   84% /
/dev/vg00/lvol7     171477  119539   34790   77% /var
/dev/vg00/lvol6     446741  370216   31850   92% /usr
/dev/vgsapn/trans  1506593  913864  442069   67% /usr/sap/trans
/dev/vgora/putn    2013369 1143570  849665   57% /usr/sap/put
                    260885   86967  171309   34% /usr/sap/PRD

umeasyd1:prdadm 7> cd /oracle/PRD/sapreorg
umeasyd1:prdadm 8> ls -lat|more
total 10734
drwxr-xr-x  74 oraprd     dba           9216 May  9 11:56 .
-rw-r--r--   1 oraprd     dba           1749 May  9 11:56 0005091146.ext
-rw-r--r--   1 oraprd     dba          18560 May  9 11:56 reorgPRD.log
-rw-r--r--   1 oraprd     dba          25503 May  9 11:54 structPRD.log
drwxr-xr-x   2 oraprd     dba           1024 May  9 11:54 0005091146

This list contains the files with the details of the latest / current sapdba actions

PRD Kernel Upgrade...
cd /sapmnt/PRD
rm -rf exe_backup
cp -prf exe exe_backup
cp /usr/sap/trans/exe_new/* exe

printing (press MORE INFO button on SPOOL:Display Error Log)
	/usr/sap/PRD/DVEBMGS00/data/SP20313B 2
Look for lpsched in task list
Also - SPAD --> utilities --> Display SAPPARAM
	rspo/store_location	db (means TeSE DB within SAP) 

umeasyd1:prdadm 15> ls -la
total 28
drwxr-xr-x   8 lp         bin           1024 Jun 14 17:32 .
dr-xr-xr-x  25 bin        bin           6144 Jun 23 09:27 ..
drwxr-xr-x   2 lp         bin           1024 Jun 14 17:32 cinterface
drwxr-xr-x   2 lp         bin             24 May 18  1995 class
drwxr-xr-x   2 lp         bin             24 May 18  1995 info
drwxr-xr-x   3 lp         bin           2048 Jun 14 17:32 interface		* printer definitions
drwxr-xr-x   2 lp         bin           1024 Jun 14 17:32 member
drwxr-xr-x   2 lp         bin           1024 Jun 14 17:32 sinterface

umeasyd1:prdadm 31> ls -la
total 168
drwxr-xr-x   6 lp         bin           1024 Jun 23 09:50 .
dr-xr-xr-x  14 bin        bin           1024 Jan 20  1999 ..
drwx------   2 lp         lp              24 Sep 11  1997 .elm
-rw-------   1 lp         lp              20 Sep 11  1997 .sh_history
prw-------   1 lp         lp               0 Jun 23 09:50 CLD_FIFO
prw-------   1 lp         lp               0 Jun 23 09:50 FIFO
drwx------   2 lp         lp              24 Sep 11  1997 Mail
-rw-rw-rw-   1 lp         lp               4 Jun 14 18:01 SCHEDLOCK
lrwxrwxrwx   1 root       sys             14 Oct 18  1998 Tclass -> /etc/lp/Tclass
lrwxrwxrwx   1 root       sys             15 Oct 18  1998 Tmember -> /etc/lp/Tmember
lrwxrwxrwx   1 root       sys             18 Oct 18  1998 cinterface -> /etc/lp/cinterface
lrwxrwxrwx   1 root       sys             13 Oct 18  1998 class -> /etc/lp/class
lrwxrwxrwx   1 root       sys             18 Oct 18  1998 cmodel -> /usr/lib/lp/cmodel
-rw-r--r--   1 lp         lp               5 Apr 29  1998 default
lrwxrwxrwx   1 root       sys             17 Oct 18  1998 fonts -> /usr/lib/lp/fonts
lrwxrwxrwx   1 root       sys             12 Oct 18  1998 info -> /etc/lp/info
lrwxrwxrwx   1 root       sys             17 Oct 18  1998 interface -> /etc/lp/interface
lrwxrwxrwx   1 root       sys             15 Oct 18  1998 log -> /var/adm/lp/log
lrwxrwxrwx   1 root       sys             21 Oct 18  1998 lpana.log -> /var/adm/lp/lpana.log
lrwxrwxrwx   1 root       sys             19 Oct 18  1998 lpd.log -> /var/adm/lp/lpd.log
lrwxrwxrwx   1 root       sys             14 Oct 18  1998 member -> /etc/lp/member
lrwxrwxrwx   1 root       sys             17 Oct 18  1998 model -> /usr/lib/lp/model
-rw-r--r--   1 lp         lp           25232 Jun 23 09:50 outputq
-rw-r--r--   1 lp         lp           26460 Jun 23 09:50 pstatus
-rw-r--r--   1 lp         lp            6768 Jun 14 17:32 qstatus
drwxr-xr-x   2 lp         bin             24 May 18  1995 receive
drwxr-xr-x  38 lp         bin           1024 Jun 14 17:32 request	* a dir per printer
-rw-r--r--   1 lp         lp               5 Jun 23 09:50 seqfile
lrwxrwxrwx   1 root       sys             18 Oct 18  1998 sinterface -> /etc/lp/sinterface
lrwxrwxrwx   1 root       sys             18 Oct 18  1998 smodel -> /usr/lib/lp/smodel
-rw-rw-rw-   1 root       sys            206 Jan  9  1998 tmp.txt

cA9480umeasyd1  dA9480umeasyd1	* c == instructions  d == data

riochih103:db2xiq 1> passwd -s
 Current available shells:
 db2xiq's current login shell:
 Change (yes) or (no)? > yes
riochih103:db2xiq 2>

NW2004s / BASIS 7.00 sapccmsr
Usage: sapccmsr -R [-f <config file>] |-U| -DCCMS |-stop | -status
       [ pf=<complete path of agent profile file> ] | -V

       sapccmsr -R [-f <config file>]
       [ pf=<complete path of agent profile file> ]
              Register CCMS agent at central system

       sapccmsr -U [ pf=<complete path of agent profile file> ]
              Deregister CCMS agent

       sapccmsr -DCCMS [ pf=<complete path of agent profile file> ]
              Run CCMS agent (start daemon in background)

       sapccmsr -stop [ pf=<complete path of agent profile file> ]
              Stop CCMS agent

       sapccmsr -status [ pf=<complete path of agent profile file> ]
              Show CCMS agent status

       sapccmsr -V
               Show CCMS agent version

ps -ef | grep db2
db2 "select * from syscat.schemata"

db2 get db cfg for XIP | egrep  'pending |consistent'
db2 list tablespaces | egrep 'State |Name'
db2 "select count(*) from SAPXIP.usr02" 

db2 select count(*) from SAPXIP.usr02 
db2 select * from syscat.tables | more 

db2 get db cfg for XIP | grep HADR

db2 "select uflag,count(*) from SAPXIP.usr02 where uflag > 0 group by uflag"
db2 "select uflag,bname,mandt from SAPXIP.usr02 where uflag > 0" > users.txt
db2 "update  SAPXIP.usr02 set uflag= 192  where bname not in('MENGLISH', 'SAP*', 'DDIC') "

db2 "update  SAPXIP.usr02 set uflag= 0  where bname = 'J2EE_ADMIN'"
db2 "update  SAPXIPDB.usr02 set uflag= 0  where bname = 'J2EE_ADMIN'"

db2 terminate


Check the password of the Java connect user in the configtool and the SAP license



chuser home=/db2/db2xid db2xid

topas 	[ -d number_of_monitored_hot_disks ] 
	[ -h ] 
	[ -i monitoring_interval_in_seconds ] 
	[ -n number_of_monitored_hot_network_interfaces ]
	[ -p number_of_monitored_hot_processes ] 
	[ -w number_of_monitored_hot_WLM classes ] 
	[ -c number_of_monitored_hot_CPUs ]
	[ -I remote_polling_interval ] 
	[ -U username_owned_processes ] | [ -C [ -o field = value,... ] -D | -L |-P | -W ] 
	[ -m]

passwd orasid
Only root users have the ability to set passwords for other accounts.

if the JDK is in C:\jdk1.4.2 then....

is the box up ?

if you don't have write acess on files below your current directory, 
then rm -r * doesn't work

what you need is ....

bau106s0:oragwa 36> pwd
bau106s0:oragwa 37> chmod -R 777 *
bau106s0:oragwa 38> rm -r *

ps -aef
du -ks
du -ks `ls`  <-- note style of quote

To create 2 uncompressed files requires just 1 command


To tar only files (not subdirectories) in the current directory use this command:
$ tar cvf files.tar ./`ls -l | grep -v '^d' | awk '{ print $9 }'`

scsapd:wscadm> find . -name sapli\*



find /oracle/GW1/saparch -type f -name '*.cds' -atime +7 -exec mv {} /usr/tmp \;
This will move all plain files that have not been accessed in the last 7 days with the format *.cds in directory /oracle/PRD/saparch to directory /usr/tmp.

find /oracle/PRD/saparch -type f -name '*.cds' -atime +21 -exec rm {} \;
find .                   -type f -name '*.*' -atime +21 -exec rm {} \;
This will remove all plain files that have not been accessed in the last 21 days which match the patterns specified (*.cds or *.*), 
from the specified directory /oracle/PRD/saparch or the current directory.
more efficient alternative is
find /oracle/PRD/saparch -type f -name '*.cds' -atime +7 | xargs -t -I {} mv {} /usr/tmp
find /oracle/PRD/saparch -type f -name '*.cds' -atime +7 | xargs -t rm

To search for all files that are greater than 50,000 blocks of 512 bytes long, enter:
	find . -size +50000 -print
To search for all files that are greater than 1,000,000 bytes long, enter:
	find . -size +1000000c -print
Alternatives - 
	find . -size +20000 -exec ls -la {} \;

find . -name '*trc' -mtime +21 -exec ls -la {} \;
find . -name '*trc' -mtime +21 | xargs -t rm
find . -name '*trc' -mtime +21 -exec rm {} \;

To insert file names into the middle of command lines, enter:
     ls | xargs -t -I {} mv {} {}.old
     This command sequence renames all files in the current directory by adding .old to the end of each name. The -I flag tells the xargs command to insert each line of the ls directory listing where {} (braces) appear.
    The -t flag causes the xargs command to display each command before running it,

    If the current directory contains the files chap1, chap2, and chap3, this constructs the following commands:
     mv chap1 chap1.old
     mv chap2 chap2.old
     mv chap3 chap3.old
''UNIX Add Existing User To A Secondary Group''

Use usermod command to modify a user's login definition on the system including group membership. For, example add user xyz to the sales group, enter:
{{{usermod -G sales xyz}}}
Add user tom to sales but also keep his existing membership of ftpusers, enter:
{{{usermod -G ftpusers,sales tom}}}

''UNIX Add Existing User To A Primary Group''

Add jerry to sales primary group and change its existing group membership:
{{{usermod -g sales jerry}}}
For more information read following man pages:
$ {{{man usermod}}}
$ {{{man useradd}}}
$ {{{man passwd}}}

Configure the file /etc/mail/

See [[Configuring a Mail Server on AIX|]] and

Recreating ''mailertable.db'' by use of the makemap utility:

{{{# cd /etc/mail}}}
{{{# makemap hash /etc/mail/mailertable  < mailertable}}}
{{{# ls mailertable.db}}}

Restart ''sendmail'' and check the status
{{{# refresh -s sendmail}}}
{{{0513-095 The request for subsystem refresh was completed successfully.}}}
{{{# lssrc -s sendmail}}}
{{{Subsystem         Group            PID          Status}}}
{{{ sendmail         mail             221334       active}}}
stores User Names and passwords.

Also see [[ABAP User Records]]

Why do the following outputs for the same ZFS pool disagree?
# zfs list zones
zones   634G   185G    69K  /zones

# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
zones                   832G    634G    198G    76%  ONLINE     -
If you add up USED and AVAIL from the zfs list output you get 819GB. So why does zfs list say we have 819GB but zpool list says we have a 832GB pool?

This is a question I have tried to answer in the past using zdb, quite unsuccesfully. I found that answer while digging through the ZFS code (dsl_pool.c):
    408 uint64_t
    409 dsl_pool_adjustedsize(dsl_pool_t *dp, boolean_t netfree)
    410 {
    411         uint64_t space, resv;
    413         /*
    414          * Reserve about 1.6% (1/64), or at least 32MB, for allocation
    415          * efficiency.
    416          * XXX The intent log is not accounted for, so it must fit
    417          * within this slop.
    418          *
    419          * If we're trying to assess whether it's OK to do a free,
    420          * cut the reservation in half to allow forward progress
    421          * (e.g. make it possible to rm(1) files from a full pool).
    422          */
    423         space = spa_get_dspace(dp->dp_spa);
    424         resv = MAX(space >> 6, SPA_MINDEVSIZE >> 1);
    425         if (netfree)
    426                 resv >>= 1;
    428         return (space - resv);
    429 }
So 1/64th of the pool is reserved? It makes sense, ZFS is a copy-on-write filesystem and it would be in trouble if it truly hit 100% Used. But do those numbers fit?
1/64th of ZPool:     832G * 0.016 = 13.3GB
Output Discrepency:  832G - 819GB = 13GB
Right on the money. Now, based on prior //experiments// shall we say, I can verify definitively that when you hit 100% according to ''zfs list'' you can not write any more data. Therefore, never report or monitor ZFS capacity based on the output from ''zpool list''. 

* the ''df'' command also invokes the //dsl_pool_adjustedsize// function and therefore outputs correct numbers. If your monitoring system tracks disk capacity based on ''df'' no change is needed.

For better or for worse, with ZFS the traditionally complex is made simple and straight forward. This simplification can coax administrators into a false complacency.

In ZFS, backup, archive, migration... any activity that fundamentally involves the movement of data from one system to another, is a replication activity. You could suggest that the traditional daily backups is, in fact, just really slow crappy replication. An HA Cluster replicates every 5 seconds, but your SAP system replicates once a day. its really the same thing, just different intervals and (possibly) different tools. So understand that when I say "replication" I refer to all forms of data movement in a ZFS system, both intra- and inter- system.

ZFS replication is preformed through the use of two simplistic subcommands: zfs send and zfs recv. These are commands that utilize STDIN and STDOUT. Rather than bake piles of functionality into these commands, the builders of ZFS team opted to instead make them very simple and utilize the traditional UNIX ideology of connecting things together for something even better.

Lets say that I have a workstation with internal disks. I attach a USB or Firewire external drive on which I create a pool called "backups". Lets now migrate a simple dataset from my local "data" pool to my external drives "backups" pool:
root@quadra ~$ zfs list -r data
data                222K   218M    19K  /data
data/home           114K   200M    24K  /data/home
data/home/bruce      18K   200M    18K  /data/home/bruce
data/home/rachel     18K   200M    18K  /data/home/rachel
data/home/marty      18K   200M    18K  /data/home/marty
data/home/novar      18K   200M    18K  /data/home/novar
data/home/thomas     18K   200M    18K  /data/home/thomas
root@quadra ~$ zfs list -r backups
backups  67.5K   218M    18K  /backups

root@quadra ~$ zfs snapshot data/home/marty@001
root@quadra ~$ zfs send data/home/marty@001 | zfs recv -d backups

root@quadra ~$ zfs list -r backups
backups                 191K   218M    19K  /backups
backups/home            106K   218M    18K  /backups/home
backups/home/marty       88K   218M    88K  /backups/home/marty
backups/home/marty@001     0      -    88K  -
Lets step through this together.

Replication is always based on a static point in time, meaning a snapshot. We create a snapshot of the dataset(s) we want to replicate, in this case the snapshot "001" of benr's home directory. Using the zfs send command we can send that snapshot to STDOUT. Using a UNIX Pipe, that STDOUT gets sent to the STDIN of the zfs recv command, which has been told via the -d backups argument that I want to preserve the dataset name and heirarchy under the "backups" dataset. This could just as easily a "backups/data-pool" dataset under which things are created, like so:
root@quadra ~$ zfs destroy -r backups/home
root@quadra ~$ zfs create backups/data-pool
root@quadra ~$ zfs send data/home/marty@001 | zfs recv -d backups/data-pool
root@quadra ~$ zfs list -r backups
NAME                              USED  AVAIL  REFER  MOUNTPOINT
backups                           217K   218M    20K  /backups
backups/data-pool                 125K   218M    19K  /backups/data-pool
backups/data-pool/home            106K   218M    18K  /backups/data-pool/home
backups/data-pool/home/marty       88K   218M    88K  /backups/data-pool/home/benr
backups/data-pool/home/marty@001     0      -    88K  -
Once you've done a full backup, you can then perform //incremental backups//. This is done by creating another snapshot, but telling zfs send to only send the difference between the two:
root@quadra ~$ cp -r /etc/security/* /data/home/marty
root@quadra ~$ zfs snapshot data/home/marty@002
root@quadra ~$ zfs list -r data/home/marty
data/home/marty      379K   199M   355K  /data/home/marty
data/home/marty@001   24K      -    88K  -
data/home/marty@002     0      -   355K  -

root@quadra ~$ zfs send -i data/home/benr@001 data/home/benr@002 | zfs recv -d backups/data-pool
root@quadra ~$ zfs list -r backups/data-pool
NAME                              USED  AVAIL  REFER  MOUNTPOINT
backups/data-pool                 417K   217M    19K  /backups/data-pool
backups/data-pool/home            398K   217M    19K  /backups/data-pool/home
backups/data-pool/home/marty      379K   217M   355K  /backups/data-pool/home/marty
backups/data-pool/home/marty@001    24K      -    88K  -
backups/data-pool/home/marty@002      0      -   355K  -
So here I have used the ZFS send -i flag and specified the two datasets I want compare. Notice that the zfs recv command didn't change at all. This is very useful if I want to send it to another system, as you pipe the data through ssh (or rsh, or whatever) and the target system doesn't need to know anything about what is being executed on the source system.
root@quadra ~$ zfs send data/home/marty@002 | ssh zfs recv -d backups/data-pool

So thats the basics... but what does this mean? Lets get creative!

You can build a really nice, simplistic replication scheme by running a script that every 30 seconds creates a new snapshot then, thanks to pre-shared SSH keys, uses SSH 9as above) to recv the data elsewhere. Add a little error checking and presto! Even if (especially if) you have a lot of data change, if you copy it every 30 seconds its unlikely to build up into huge chunks that will take very long to move. When it comes to data that changes frequently, the key is to move early and often!

Now, say we don't need that, simple backups are fine. We can create a script that creates a new snapshot each day at midnight, named the day of the week. When Wed comes around the old "wed" snapshot is removed and a new one created, and then we way create a simple script that zfs send/recv's the Friday snapshot every weekend. Simple to do, plus we have those daily snapshots to fall back on in a pinch, hopefully keeping us from going out to a remote copy.

So we've used pipes in a simple way, to securly transport our datastream from one system to another. Consider other possiblities, such as piping ''zfs send'' through ''gzip'' before sending across the network!

Or.... say what you really want is a portable dump of your ZFS dataset(s). Remember that we're outputting a datastream from ''zfs send'', so you just re-direct STDOUT to a file. For a more sophisticated version, make it encrypted and compressed!
root@quadra ~$ pktool genkey keystore=file outkey=zdump.key keytype=aes keylen=128
root@quadra ~$ zfs send data/home/benr@002 | gzip | encrypt -a aes -k zdump.key > /tmp/home_benr-AES256GZ.zdump
So we've output a datastream based on a snapshot (002), compressed it, encrypted it with 128bit AES and then dumped to file. We could just as easily dump it to a tape (/dev/rmt/0cbn or something) for archiving purposes....

Finally, consider experiementing with the recursive flags for both zfs snapshot and zfs send (Solaris 10 onwards). These will let you work on more than just a single snapshot, for example, sending all the "home" datasets.
root@quadra ~$ zfs snapshot -r data/home@nov6
root@quadra ~$ zfs list -r data/home
data/home                755K   199M    24K  /data/home
data/home@nov6              0      -    24K  -
data/home/benr           379K   199M   355K  /data/home/benr
data/home/benr@001        24K      -    88K  -
data/home/benr@002          0      -   355K  -
data/home/benr@nov6         0      -   355K  -
data/home/conradr         88K   199M    88K  /data/home/conradr
data/home/conradr@nov6      0      -    88K  -
data/home/glennr          88K   199M    88K  /data/home/glennr
data/home/glennr@nov6       0      -    88K  -
data/home/novar           88K   199M    88K  /data/home/novar
data/home/novar@nov6        0      -    88K  -
data/home/tamr            88K   199M    88K  /data/home/tamr
data/home/tamr@nov6         0      -    88K  -

root@quadra ~$ zfs destroy -r backups/home
root@quadra ~$ zfs list -r backups
backups    86K   218M    20K  /backups

root@quadra ~$ zfs send -R data/home@nov6 | zfs recv -d backups

root@quadra ~$ zfs list -r backups
NAME                        USED  AVAIL  REFER  MOUNTPOINT
backups                     902K   217M    18K  /backups
backups/home                755K   199M    24K  /backups/home
backups/home@nov6              0      -    24K  -
backups/home/benr           379K   199M   355K  /backups/home/benr
backups/home/benr@001        24K      -    88K  -
backups/home/benr@002          0      -   355K  -
backups/home/benr@nov6         0      -   355K  -
backups/home/conradr         88K   199M    88K  /backups/home/conradr
backups/home/conradr@nov6      0      -    88K  -
backups/home/glennr          88K   199M    88K  /backups/home/glennr
backups/home/glennr@nov6       0      -    88K  -
backups/home/novar           88K   199M    88K  /backups/home/novar
backups/home/novar@nov6        0      -    88K  -
backups/home/tamr            88K   199M    88K  /backups/home/tamr
backups/home/tamr@nov6         0      -    88K  -
Snapshot the parent dataset with the -r flag, then send the parent dataset snapshot with the -R flag. Otherwise, its all the same! And, of course, you can combine this with all our other pipe tricks just the same!

And so we see that using a single set of commands, we have simplistic and powerful replication, backup, and archive capabilities. A lot of power unleashed with just a little imagination; thats the ZFS way.
''CAUTION: Note that editing table content  can be dangerous and you can mess up your system if you start editing tables without enough knowledge and insight on the table content and table relationships.''
A possible use case is a situation where a transport request \ release was started where the transport content is by mistake incorrect. For example:
someone wanted to export a table definition but gave the wrong ABAP dictionary element and ends up exporting the table content instead. Exporting table content of large tables takes time and creates large transport requests. The user notices that the release of the transport request takes abnormally long and notifies a #sapadmin to check out the situation. After the situation is explained the #sapadmin is aware of the mistake of the user and action has to be taken. The export of the table content can be cancelled by killing the process on OS level. This will cancel the transport release and the transport release will be in status cancelled.  Now lets take a look how you can unreleased \ that transport request so the content can be corrected.

Use transaction SE16 to list table E070 - Fill in the transport request (notice that the <SID> is hidden here because of sensitive content, so if SID = AA1, the request here would be AA1K900625) and press Execute.
[img[Unreleasing a transport request aa02.jpg]]

Double-click the TRKORR value entry
[img[Unreleasing a transport request aa03.jpg]]

This will show the entry for your transport request in table E070. 
[img[Unreleasing a transport request aa04.jpg]]

You have some options but in the end you have to change the value of field TRSTATUS to set the transport request in an unreleased status. This means using the debugger.
Enter /h and press enter twice in the command line to go into the coding in debug mode
[img[Unreleasing a transport request aa05.jpg]]

Scroll down in the code until you reach the code = SHOW line (notice the other CODE values: EDIT,INSR,ANVO and DELE). Double-click code in the program code.
[img[Unreleasing a transport request aa06.jpg]]

This will add variable CODE into the right pane of your debug window. Click on the pencil to the right to change the value of Variable CODE.
[img[Unreleasing a transport request aa07.jpg]]

Change the value into EDIT and press the enter key.
Press F8 once done.
[img[Unreleasing a transport request aa08.jpg]]

Change the TRSTATUS field value (press F4 for input help while the cursor is in the field)
[img[Unreleasing a transport request aa09.jpg]]

End-result my transport request is modifiable again
[img[Unreleasing a transport request aa10.jpg]]

Now you can add the missing entries, change an incorrect entry or delete the transport request all together.
1 Display your table in SE11 and print it

2. Select print settings ''SAPMEDINFO''

3 Give your output device name and choose print preview.

4 A print preview will be generated
5 Select Menu Item ''Goto'', ''List Display''
6 List will be converted into General Abap List

7.Select Menu Item ''System'', ''Lists'', ''Save'', ''Local File'' option.

8 Choose Spreadsheet and press enter
9.Choose the desired location on your desktop, click on the ''generate'' button, and ... 

10 ... you will get a CSV file containing all the structure of the fields.
This requries two steps; Create the new table and copy data from the old table to the new table.  There are simpler variants around, but this works with all SAP supported database
CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table 
  (SELECT * FROM old_table);
An example that shows how to create a backup copy of the DB6TREORG table
create table SAPS01.DB6TREORG_COPY like SAPS01.DB6TREORG;
insert into SAPS01.DB6TREORG_COPY
 ( select * from SAPS01.DB6TREORG ) ;
This would create a new table called DBREORG_COPY that included all columns from the companies table and all rows from the existing DBREORG table.

The usual reason for doing this is where you want to modify the original table (say, via SE16 or the SQL Command Line processor), and want to retain a backup of the data without having to backup the entire database.
DELETE FROM table-name
     WHERE search-condition 
For example:
delete from SAPS01.DB6TREORG
There's no point making a backup if you can't restore some or all of the data. You do this by copying selected rows from the backup table into the original table. The syntax for this is :
  SELECT * FROM new_table
    WHERE <key-field> = 'value';
For example:
insert into SAPS01.DB6TREORG
  select * from SAPS01.DB6TREORG_COPY

''Frequently Asked Questions''
__Question: What happens to the tabgle I have crreated ?__
Answer: It is now part of your database. You should drop the table when you are sure yo uhave no further need for it. Note that, depending on your SAP configuration, you may need to do this from the Operating System level, rather than via transaction DB02 SQL Command Line Processor.
DROP TABLE new_table;
Example. ''make sure you drop the COPY !!!''
drop table SAPS01.DB6TREORG_COPY;
__Question: What attributes get copied ?__
Options that are not copied include:
*Check constraints
*Column default values
*Column comments
*Foreign keys
*Logged and compact option on BLOB columns
*Distinct types
__Question: How can I create a SQL table from another table without copying any values from the old table?__
Answer: do not perform the INSERT statement
You can use tgransaction SHD0 to create a Transaction Variant. A typical example where this is used for MM01; for example, if you want default values for Industry sector and material type, and don't want the end user to change those values (output only).

Go to transaction SHD0.

Enter the transaction code MM01. Now click on button CREATE.
Depending on your SAP release, you may see the following information message appear:

Click Enter to proceed.

Now the MM01 transaction will appear.

For the sake of this example, select the required ''Industry Sector'' and ''Material Type'' and press ENTER. The following popup will appear:

Now make the modifications as shown below:

Click on “Exit and Save”. The following popup will appear:

Click Enter to proceed. This will produce the following screen:

Save your entries and go back to the main screen.

Now enter the transaction variant name and click on Change button as shown below:

Now click on Insert Row, and enter the name of the screen variant created earlier (or use F4 help to select the value):

Now, on the menu, select Goto then Create Variant Transaction, and enter the values as shown below. 

Click on Enter and an SE93 Maintain Transaction Codes screen will appear. 

The name of the Transaction Variant is automatically generated, but you can control the variant being used, whether it is available cross-client etc. Save your entries.

Now go to Transaction ZMM01 and check your transaction variant:

You will see that, in our case, the fields ''Industry Sector'' and ''Material Type'' default to the value we have given earlier and are set to output only, preventing the user from changing them.
|! report |! Description |
|/SDF/MON |Runs Snapshot Monitoring [[/SDF/MON/]]|
|RSUMODSP |List Modified Objects |
|SAPRSEUB |[[SAP objects' where-used-list]]|
| | |
|RSICFCHK |List SICF Public Services and Services with Logon Data|
|RSICF_SERVICE_ACTIVATION |Report for Activating Special Service During Installation |
| | |
|RSBDCOS0 |allows an SAP user to run operating system commands from the SAP backend |
The SQL Server DBA frequently needs to find and kill blocked process, especially in  in especially development and test environments. The following scripts are useful for this task
''Find All the Blocked Processes''
hostname=SUBSTRING(hostname,1, 12),
blk = CONVERT(char(3), blocked),
dbname=SUBSTRING(DB_NAME(dbid),1, 10),
FROM master.dbo.sysprocesses
WHERE spid IN (SELECT blocked FROM master.dbo.sysprocesses)
''Kill all the Blocked Processes of a Database''
DECLARE @DatabaseName nvarchar(50)
--Set the Database Name
SET @DatabaseName = N'Datbase_Name'
--Select the current Daatbase
SET @DatabaseName = DB_NAME()
DECLARE @SQL varchar(max)
SET @SQL = ' '
SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
and spid IN (SELECT blocked FROM master.dbo.sysprocesses)
--You can see the kill Processes ID
--Kill the Processes
''Or You can use the following script''
-- Script to kill all blocked processes
declare @max_count int, @count int, @sqlstring varchar(100)
declare @spid_table table (spid int NOT NULL)
INSERT @spid_table
select spid
from master.dbo.sysprocesses
where spid in (select blocked from master.dbo.sysprocesses where blocked <> 0) and blocked = 0
select @max_count = MAX(spid) FROM @spid_table
select top 1 @count = spid from @spid_table
while @count <= @max_count
select @sqlstring = 'kill ' + CONVERT(varchar(4), @count)
print @sqlstring
IF @count = @max_count
select top 1 @count = spid FROM @spid_table where spid > @count
''You can kill all the Processes of a Database as follows''
-- Kill all the Processes of a Database
DECLARE @DatabaseName nvarchar(50)
--Set the Database Name
SET @DatabaseName = N'Datbase_Name'
Select the current Daatbase
SET @DatabaseName = DB_NAME()
DECLARE @SQL varchar(max)
SET @SQL = ''
SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
--You can see the kill Processes ID
--Kill the Processes

''dentify the blocking query''
OBJECT_NAME(p.OBJECT_ID) BlockedObjectName,
h1.TEXT AS RequestingText,
h2.TEXT AS BlockingTest,
FROM sys.dm_tran_locks AS tl
INNER JOIN sys.databases db ON db.database_id = tl.resource_database_id
INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address =wt.resource_address
INNER JOIN sys.partitions AS p ON p.hobt_id =tl.resource_associated_entity_id
INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id =tl.request_session_id
INNER JOIN sys.dm_exec_connections ec2 ON ec2.session_id =wt.blocking_session_id
CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1
CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2

''View all current processes / sessions on the server'' 
select * from master.dbo.sysprocesses
[[ABAP Notes]]
[[BASIS Notes]]
[[CUA Notes]]
[[DBMS Notes]]
[[LINUX Notes]]
[[Solution Manager Notes]]

[[Miscellaneous usefull Notes]]
[[SAP Router Notes]]
[[Security Notes]]
[[Silent Installation Notes]]
[[Timezone / Daylight Saving SMP Notes]]
|!Table Name|!Column Two|
|ADIRACCESS|contains the object keys that have been registered with SAP for modifying SAP code.|
|SMODILOG|tracks all changes for Customer Modifications to development objects.|
|DEVACCESS|list of the users with development access on a particular system.|
|TADIR|contains object directory entries.|
|TDEVC|contains development classes and packages.|
|TRBAT|if header shows R(running) then CTS thinks the Transport is being imported.|
|[[USR02]]|stores User Names and passwords. |
|USR40|password exception list.|
[[Useful Transactions - BASIS]]
[[Useful Transactions - BW]]
[[Useful Transactions and Infotypes - HR / HCM]]
[[Useful Transactions - BP and BRF]]

Create Screen variants for Transactions.  SAP itself uses this technologie to create the SU0 SU1 SU2 Transaction.
They are Screen variants (or Transaction variants) of SU3.

''BD64 / WE20''
Partner definitions for data transfer across the landscape via ALE
|''Performance 	''| |
|ST03N |Aggregated Statistics Records - Local|
|ST03G |Aggregated Statistics Records - Global|
|ST02 |Memory/buffer monitoring|
|ST03 |Work load monitoring|
|ST06 |H/w status monitoring|
|STAD |Individual Statistics Records (ABAP Only)|
|STATTRACE |Individual Statistics Records (All) and Traces|
|ST07 |User Distribution|
| | |
|AL08 |Global Users|
|SM04 |Local Users|
|SM50 |Process Overview|
|SM51 |SAP Instances|
|SM66 |Global Process Overview|
| | |
|ST02 |Buffers|
|ST10 |Table Accesses|
|SM12 |Lock Entries|
|SM20 |Analysis of Security Audit Log|
|SM30 |Maintain Table Views|
| | |
|OS01 |LAN Check with PING|
|OS03 |Parameter Changes|
|OS04 |System Configuration|
|OS05 |System Configuration|
|OS06 |System Activity|
|OS07 |Activity|
|AL15 |SAPOSCOL Destination|
| | |
|''SAP Configuration''| |
|RZ03 |Operation Mode |
|RZ04 |Operation Mode |
|RZ10 |System Profile|
|RZ11 |Dynamic Profile setting and check profile parameter|
|SMLG |Logon Groups|
|SM59 |RFC Adjustment|
|SM69 |Display/Change External Commands|
|STMS |Transport management|
|SPAD |Printer configuration|
|SICF |activate and deactivate services|
|SCOT |SAP Connect System status|
|SCOUT |Customise scout|
| | |
|SMGW |Gateway configuration|
|SMICM |ICM parameters|
|SMLG |Login group configuration|
| | |
|SCAL |Factory calender|
|SU01 |User creation|
|SUIM | |
|TU02 |Parameter Changes|
|SNRO |Number Range Object Maintenance|
| | |
|''CCMS Related''| |
|RZ20  |CCMS Monitor Sets |
|RZ23N  |Central Performance History (CPH) |
|RZ03  |Control Panel |
|RZ20 |CCMS Monitoring  |
|RZ21 |CCMS Monitoring Arch. Customizing |
|RZ70 |SLD configuration |
|SLDCHECK |Connection test SLD |
|SM66  |Global Process Overview |
|SM49  |Execute External Commands |
| | |
|''Database''| |
|ST04N  |Activity |
|DB01  |Exclusive Locks |
|DB02  |Tables/Indexes |
|DB03  |Parameter Changes |
|SM21  |System Log |
|ST22  |ABAP Runtime Errors |
|AL11  |SAP Directories |
| | |
|''DB Admin'' | |
|db02 |Database table space monitoring |
|DB12  |Backup Logs |
|DB13  |Local |
|DB13C  |Central |
|DB14  |Operations Monitor |
| | |
|DB20  |Create Statistics |
|DB21  |Configuration |
| | |
|''Print Related'' | |
|SP01  |Output Controller |
|SPAD  |Spool Administration |
|SE73  |Font Maintenance |
|SP11  |TemSe Contents |
|SP12  |TemSe Administration |
| | |
|''Background Processing'' | |
|SM37  |Jobs - Overview and Administration |
|RZ01  |Job Scheduling Monitor |
| | |
|''Data Dictionary'' | |
|SE11 |ABAP Dictionary |
|SE14 | |
|SE18 |Badi Builder |
|SE19 |Badi Builder |
|SE30 |ABAP Runtime Analysis |
|SE93 |Maintain Transaction |
|SPRO |ABAP Runtime Analysis |
| | |
|''IDOCs etc''  | |
|SMQR |   |
|SMQS |   |
|SMQ1 |inbound request |
|SMQ2 |inbound request |
|SM66 |Work process monitoring |
|SMW01 |Bdoc Messages |
|BRF |business Rule Framework - Workbench Basis - Business Rule Framework|
|BERP |business processes Cross Application - Basis-Related Help Functions, Appl. Log, Formula Intepreter|
|SOLAR_LIBRARY |business process Repository Service - Business Process Repository|
|BDTP |business process- Maintain Templates Basis - ALE Integration Technology|
|BERPC |business processes ICM - Incentive and Commission Management (ICM)|
|BRFPLUS |BRFplus Workbench Basis - BRFplus - ABAP-Based Business Rules|
|BP |Maintain business Partner App. Platform - Dialog SAP-GUI|
|SWUD |Workflow Diagnosis Basis - SAP Business Workflow|
|SWF_XI_CUSTOMIZING |Automatic BPM Customizing Basis - Business Process Engine|
|BD37 |Send business process Price CO - Activity-Based Costing|
|CP14 |Delete business processes CO - Activity-Based Costing|
|CPB1 |business processes: Act. Line Items CO - Activity-Based Costing|
|CP02 |Change business process CO - Activity-Based Costing|
|BD35 |Send business process Groups CO - Activity-Based Costing|
|BD36 |Send business processes CO - Activity-Based Costing|
|CPBP |business processes: Plan Line Items CO - Activity-Based Costing|
|CPH3 |Display business process Group CO - Activity-Based Costing|
|CPH1 |Create business process Group CO - Activity-Based Costing|
|CPH2 |Change business process Group CO - Activity-Based Costing|
|CP13 |business processes: Master Data Rep. CO - Activity-Based Costing|
|CP03 |Display business process CO - Activity-Based Costing|
|CP12 |Edit business processes CO - Activity-Based Costing|
|0KWD |Delete business processes CO - Overhead Cost Controlling|

|RSA1 |Modeling - DW Workbench|
|RSA2 |OLTP Metadata Repository|
|RSA3 |Extractor Checker|
|RSA5 |Install Business Content|
|RSA6 |Maintain DataSources|
|RSA7 |BW Delta Queue Monitor|
|RSA8 |DataSource Repository|
|RSA9 |Transfer Application Components|
|RSABAPSC |Statistical Prog. Anal. for Search|
|RSABAUTH |Transfer of Authorization Groups|
|RSABTPGP |Authorization Groups|
|RSADMIN |RSADMIN maintenance|
|RSANWB |Analysis Process Designer|
|RSBEB |Business Explorer Browser|
|RSBMO2 |Open Hub Monitor|
|RSB_GUI_START |Editing an Open Hub Destination|
|RSRAJ |Starts a Reporting Agent Job|
|RSRAM |Reporting Agent Monitor|
|RSRCACHE |OLAP: Cache Monitor|
|RSRCATTTRACE |Catt transaction for trace tool|
|RSRDA |Real-Time Data Acquisition Monitor|
|RSRD_ADMIN |Broadcasting Administration|
|RSREP |BW Administrator Workbench|
|RSREQARCH |Req. Archive Administration Dialog|
|RSRFCCHK |RFC destinations with logon data|
|RSRFCSTX |RFC statistics|
|RSRHIERARCHYVIRT |Maintain Virtual Time Hierarchies|
|RSRQ |Data Load Monitor for a Request|
|RSRR |BW RRI on the Web|
|RSRR_WEB |Report-Report Interface in Web|
|RSRSDEST |System Overview Output|
|RSRT |Start of the report monitor (also RSRT1 and RSRT2)|
|RSRTQ |BWT: Query Definition|
|RSRTRACE |Set trace configuration|
|RSRTRACETEST |Trace tool configuration|
|RSRV |Analysis and Repair of BW Objects|
|RSRVALT |Analysis of the BW objects|
|RSCUR |Start: Currency Translation Type|
|RSCUSTA |Maintain BW Settings|
|RSCUSTA2 |ODS Settings|
|RSBWREMOTE |Create Warehouse User|
|RSBMO2 |Open Hub Monitor|
|RSCRT |BW Monitor (Near)-Real-Time Loading|
|RSMO |Data Load Monitor Start|
|RSMONITOR |Generic Monitor|
''Time Management component''
This offers support in performing all human resources processes involving the time  recording, leave management system and valuation of employees, work performed and absence times.

[[List of TCodes in SAP HR (via SCN)|]]

SAP HR Time Management Infotypes
    * 0007  Planned Working Time
    * 0041  Date Specifications
    * 0050  Time Recording Info
    * 0080  Maternity Protection
    * 2001  Absences
    * 2006  Absences Quota
    * 2002  Attendances
    * 2003  Substitutions
    * 2005  Overtime
    * 2011  Time Events

|Transaction Code|Text |Infotype Number|
|PA61 	|Maintain Time data 	|0000, 0001, 0007, 2001,2002, 2003, 2006, 2013,|
|PT63 	|Personal Work schedule 	|0007|
|PA51       |Display time data 	|0000, 0001, 2001, 2002, 2003, 2006, 0007|
|PT_QTA00 	|Generate Absence Quota 	|For Generating RH, CL , transit leave and compensatory off etc.|
|PT_QTA10 	|Display Absence Quota 	|2001,2006|
|PT50 	|Information 	|To view quota availed and remaining|
|PT01        |Quota Overview|
|PT03 	|Create Work Schedule 	|For generating the EL and ML quota|
[[Where are my Transports ?|]]
A reusable non-linear personal web notebook (you're using it to read this)

//Most of the software listed below is for Windows. I've found them useful to replace the functionality that *NIX systems expose via the command line (or command line scripts).//

''Usefull Notification tools.''
[[Bare Tail|]] 
A free real-time log file monitoring tool for windows. Like {{{tail -f}}} but with more features.

Eclipse is the set of frameworks and common services that collectively make up the infrastructure required to support the use of Eclipse as a component model, as a Rich Client Platform (RCP) and as a comprehensive tool integration platform. These services and frameworks include a standard workbench user interface model and portable native widget toolkit, but Eclipse is most famously known in the SAP world as an extensible JAVA / ABAP IDE. 
* Be sure to check that the particular release of Eclipse you download is compatible with the SAP (or other vendor) tools you are using.
* The SAP plugins for Eclipse for ABAP Development (including Gateway), BW Modelling and HANA are available at

Windows (32 & 64 bit) command line utility that sends eMail using SMTP or post to usenet using NNTP. 

PUTTY is an open source telnet and SSH Client for the Windows and Unix platforms.
|~PuTTY  |putty.exe |
|~PuTTYtel  |puttytel.exe |
|PSCP  |pscp.exe |
|PSFTP  |psftp.exe |
|Plink |plink.exe |
|Pageant |pageant.exe |
|~PuTTYgen |puttygen.exe |

[[DynDNS agent|]]
Assign an arbitrary IP address (i.e. AWS / OpenStack) to a DNS name
{{{ select * from dict ; }}}
Find all views in the data dictionary, with a description of what they contain.  Look here for any views that may be usefull for your debugging.

Displays the current amount of freespace (in blocks) for each tablespace.

   AND OWNER = '[any other schema]';
{{{ select tablespace_name, table_name from dba_tables; }}}
The user defaults for views can be set under Menus: Defaults > Views. Select those views to be checked on by default when generating a new material. Select View selection only on request when the select view pop-up is to be by-passed unless selected.

For organizational levels, Menus: Defaults > organizational levels. Enter those organizational levels to be defaulted when generating a new material. Select Org. levels/profiles only on request when the select view pop-up is to be bypassed unless selected.
# check RFC definitions via transaction SM59
# check JAVA JCO connections via Visual Administrator
# enable security audit in SM19 for the affected user id with all options

a. Unlock user
b. logon to sap with other user, and use transaction STAD to track what happens as / when the original user is locked

a. copy the userID user to userID_2
b. configure userID_2 on all the locations where the userID was used
c. delete the userID user
d. restart the system
If the restart fails after this, one can find the component using the userID with wrong password.
If the restart works it is most probably a 3rd party monitoring software using the userID user with incorrect credentials.

Also, see [[Users being locked through RFC connections - finding the source of the connection]]
Also, see [[User is getting locked due to incorrect password every few minutes]]

When a user is getting locked, and the login requests are coming through RFC connections, it can be difficult to determine the source of the RFC connections, to you can correct the login details.
See [[SAP note 558254: RFC trace generation for sporadic errors|]]

You need to set tracing of the SAP GW to 2 (transaction SMGW, menu Goto -> Trace -> Gateway -> Increase)
You need to set tracing of the SAP WP to 2 (transaction SM50, menu Administration -> Trace -> Active components)
* Set the level to 2;
* Set “WpType” to "DIA";
* Select Components:
** Taskhandler;
** ABAP proc.;
** Scrn. proc.;
** Security.

When the user gets locked, you should see the following syslog entries (transaction SM21):
10:21:44 DIA  0 000 SAPSYS          D01 Transaction Canceled 00 158 ( )
10:21:44 DIA  0 000 SAPSYS          R68 Perform rollback
You can then decrease all the traces (SMGW and SM50) back to level 1.

To perform the analysis, you’ll need:
* The SM21 entries of an occurrence of the issue, from the time of when the trace level was increased to 2;
* The Gateway trace file (dev_rd);
* The trace file of the work process at which the failed logon was processed (dev_w??, where “??” is the work process number seen at the SM21 entries).

The analysis starts with the syslog entries, so that you have the timestamp at which the issue occurred. For this example, the following will be the entries being analyzed:
10:21:44 DIA  0 000 SAPSYS          D01 Transaction Canceled 00 158 ( )
10:21:44 DIA  0 000 SAPSYS          R68 Perform rollback

You then need to analyze the work process trace (dev_w0, in this example). Once you’ve found the timestamp of the issue within the trace, continue to read the trace until you find the entries related to the user getting locked. You’ll then be able to identify a “Conversation ID”. Below is an example of such trace entries. The user that got locked was “RFCUSER”. The “Conversation ID” was “12345678”.
M Fri Nov 30 10:21:44 2011
M  set task type/act rqtype = ZTTARFC/1
M  ThSavUsrClient: set usr >SAPSYS      <
M  ThSavUsrClient: set client >000<
M  tskh_spainit: background cpic login
M  ThCpicSetSpa: set user/client/lang from cpic data
A  RFC 2792  CONVID 12345678
A  RFC dispenser >> ThGetContextInfo
A  RFC >>>> [1] < accepted > : INT  <ac: 75>  >>> ACCEPT (12345678)
A  RFC >>>> [1] < accepted > : INT  <ac: 76>  >>> 12345678 (12345678)
A  RFC 3150  CONVID 12345678
A  +                      SAPSYS       1080  RFC protocol handshake done
                    .... CPIC background server INT/12345678 rlv=running
A  RFC Received UNICODE-RFCHEADER: cp:1100/ce:IGNORE/te:REJECT/cs:1/rc:
A  RFC Instrument: ab_rfccheck_uuid take uuid over
A  RFC Called for: (RFCPING)
A  +                      SAPSYS       1080  Program loaded. CPIC
                              background server INT/12345678 rlv=running
A  SRFC Check> Program SAPLSYST
A  SRFC Check> Function RFCPING
A  RFC Signon> RfcUserChecked 0
A  RFC> not running in Plugin session
A  RFC SignOn> Regularly Logon Access Type: R
N  dy_signi_ext: PASSWORD logon w/o ticket request
N  DyISigni: client=000, user=RFCUSER     , lang=E, access=R, auth=P
M  SlicKCheckLicense called
M  SlicKCheckLicense: use license buffer
M  ThSavUsrClient: set usr >RFCUSER     <
M  ThSavUsrClient: set client >000<
N  usrexist: effective authentification method: <client,username,
N  user was locked by subsequently failed password logon attempts
N  password logon attempt will be rejected immediately (preventing
                                                    dictionary attacks)
N  save user time zone = >CET   < into spa
M  ThSavUsrClient: set usr >RFCUSER     <
M  ThSavUsrClient: set client >000<
M  ThShortCommit: call db_commit98 (keep resources)
M  ThCheckComOrRb (event=1, full_commit=0)
M  ThCheckComOrRb (event=3, full_commit=0)
M  ThShortCommit o.k.
M  ThSavUsrClient: set usr >SAPSYS      <
M  ThSavUsrClient: set client >000<
N  DyISigni: return code=2 (see note 320991)
A  RFC SignOn> Signon PwState 0
A  RFC SignOn> Signon RC 2, indicator 0

Now you need to find the related “Conversation ID” in the Gateway trace file (dev_rd). This will enable you to identify the IP address of the source of the RFC connection. In the example below, our “Conversation ID” was “12345678” and the IP was “”. The “NEW CLIENT CONNECT” line could give a hint on the hostname or even the “program name” of the source of the connection. Do not get confused with the server that is running the gateway; in this case the server at which the gateway was running was “sapsrvr”, with the IP address “”.
********* GWRD LOOP *********
I'm in GwReceive
Fri Nov 30 10:21:44 2011
NiPAccept: set close-on-exec flag for sock 20
NiIAccept: connect from: host, port 08.2C/2092, fam 2
                                                    (low adr..high adr)
NiCreateHandle: state nihandle-socket 12-20 NI_INITIAL
NiIAccept: took local port 0C.E5/3301
NiSetStat: state hdl 12 NI_CONNECTED
NiIBlockMode: switch off block-mode for handle 12-20
NiIRead: read 64, 2 packs, MESG_IO, handle 12, data complete
GwIConnectHandle: NORMAL_CLIENT req received

NEW CLIENT CONNECT LU: rem-srvr TP: rem-srvr IDX: -1 ReqId: 2284
AppcHdrVers: 6 ReqVer: 2 Conversation-ID:
H-Addr: []

client code page = >1100<
GwGetFreeSysid: sys 282 free
GwIAllocMemForLU_TP: 212 bytes for sys 282 allocated
GwIConnectHandle: client_idx 282
GwInsertSysAddr: inserted sys addr = (1)
GwListRemove: remove elem 282 from sys_free_list
GwRequest: request from client 282
GwGetMemory: allocated 1404b6000 (len=34588)
NiIRead: read 348, 2 packs, MESG_IO, handle 12, data complete
GwRequest: data with len 348 read after 0 timeouts
GwRequest: act_overflow_size = 34588 (+ 34588)
GwRequest: compl req = adr/total/alloc/hdr/param_hdr/data 1404b6000/536/

ReqType   : CPIC         SysIdx  : 282    ReqLen  : 80    ReqId   : 2284
CommIdx   : 1            ConnIdx : -1     ReqVer  : 6     Trace   : 0
conn      : -1           wp_no   : -1     ReqBlk  : -1
RqType    : INITIALIZE_C Prot    : INT    UID     : -1    Mode    : 0
User      :              SapRc   : 0      AppcRc  : 0     ConvId  :

LU        : sapsrvr      TP      : sapdp01  CType   : I    Cli Info:
long TP   : sapdp01
long LU   : sapsrvr
GwUpdConvStatistik: conv_no/tcp_conv_no/sna_conv_no: 1/1/0
GwGetConnEntry: found conn 0 in free list
GwListRemove: remove elem 0 from conn_free_list
GwListRemove: 1999 elems in conn_free_list
GwListInsert: insert elem 0 into conn_inuse_list (at end)
GwListInsert: 1 elems in conn_inuse_list
GwIHandleRq: new conn_tbl index: 0
GwIHandleRq: increment conv_no of client 282: 1
GwIHandleRq: own_index: 0
GwIHandleRq: set act rq type INITIALIZE_CONVERSATION
R3INIT(0, cpic_vector=0)
GwMkTimeStamp: create conversation id 12345678
GwFiCreateConvId: created 12345678
R3INIT: set ext_program = TRUE for rem-srvr/rem-srvr
R3INIT: generated Partner-Host-Addr:
When a core file is created at the OS level one necessary step of troubleshooting is to extract the call stack (also known as C-stack) from the core file. The core file is not readable with a text editor and therefore you need to use built in OS tools (debuggers) to find this information. We'll check what are the necessary steps and tools.

Locate the core file. In an SAP application it is usually written in the {{{/usr/sap/<SID>/<instance>/work}}} folder.
Check the format of core file:    e.g.:   
   what <path/to/core>/<corefile>
   what /usr/sap/ABC/DVEBMGS00/work/core

Determine what executable created the core:   e.g.:
   file <path/to/core>/<corefile> 
   file /usr/sap/ABC/DVEBMGS00/work/core
Debug the core
   <debugger> <triggering executable> <core file>
    dbx /usr/sap/ABC/DVEBMGS00/exe/disp+work /usr/sap/ABC/DVEBMGS00/work/core

| OS |Debuggers:|
|SUN|dbx, adb, pstack|

[[Getting a backtrace from a coredump|]]
[[UNIX Debugger Translation Table|]]
LM Automation Standalone (LMAUTOSTD) is a tool which offers a light-weight and easy-to-use automation experience for configuration, validation and operation tasks:
Executes configuration tasks in an automated way and guides you through configuration processes
Offers validation and maintenance of Secure Socket Layer (SSL) configuration of SAP systems
''Download the LMAUTOSTD tool from the Service Marketplace''
Support Packages and Patches > Browse our Download Catalog > Additional Components > Upgrade Tools > SL Toolset > LM Auto Standalone
[img[Using LMAUTOSTD tool for SSL validation 01.png]]

''Start the LMAUTOSTD tool on your desktop''
Extract the downloaded zip-archive on your desktop and start the LMAUTOSTD tool by executing lmauto.bat. LMAUTOSTD will run as an OSGi service which is automatically accessed with the browser: http://localhost:50099/lmauto/index.html
[img[Using LMAUTOSTD tool for SSL validation 02.png]]
''Run the automation task''
Currently the following SSL tasks are supported (LMAUTOSTD 1.0 SP 3):
ABAP SSL validation
Ensures that the following have been correctly configured: SAP Cryptographic library installation, Profile parameters, ICM parameters, PSE configuration, and so on.
Java SSL validation for 7.0X
SAP Cryptographic library installation, SSL service, SSL certificate, HTTPS port, and so on.
Java SSL validation for 7.3X
SAP Cryptographic library installation, SSL service, SSL certificate, HTTPS port, and so on.
ABAP SSL Maintenance
Performs PSE configuration and describes the manual task such as SAP Crypto Graphic library installation, Profile parameters settings and so on.
Java SSL Maintenance for 7.0X
Configures KeyStore, SSL port, Socket, and so on.
[img[Using LMAUTOSTD tool for SSL validation 03.png]]

[[Note 1622263 - SAP Release Note for LMAUTOSTD 1.0|]]
[[Note 1670263 - Port Configuration For LM Automation Standalone Tool|]]
Do not confuse this with ABAP Report / Program Variants, accessible via SE38

New products are often created by modifying existing product designs. The purpose of SAP SAP Variant Configuration is to react quickly to customers requirement, by enabling the company to manufacture a wider range of Products from a wider variation of input material.  
How can I see which profiles contain (or belong to) a particular T-Code?
Transaction SUIM lets you search on profiles, roles and users, but does not appear to provide a combination for a list of transaction codes and profiles.

Check / Search for "By Authorization" values, then use the authorization object and enter S_TCODE. Hit the return key, and then enter the transaction code in the value field.
[[Command line control for SAP Web Dispatcher|]]
[[Configuring SAP Web Dispatcher for Use with Fiori Launchpad on Portal|]]
[[How to Monitor URL(Web Dispatcher) availability with Solman 7.1 MAI|]]
[[Alternate Web Dispatcher installation on Windows (much simpler directory structure)|]]
[[Server Selection, Server Load Balancing and SSL connection using the SAP Web Dispatcher|]]

[[Implement one webdispatcher for multiple systems|]]
[[Name-based virtual hosts and one SAP Web Dispatcher to access multiple SAP systems|]]
- [[SAP Note 2010948 - SAP Web Dispatcher support of virtual hosts|]] makes the previous article obsolete. Where possible, always use the latest release.

[[552286 Troubleshooting for the SAP Web Dispatcher|]]
*  [[Activate HTML SAP GUI]]
*  [[Activate minimum ICF Services]] 
*  [[OSS Note 0517484|]]

[[WDA Tutorial 1 Getting Started with with WDA|WebDynpro_ABAP_1.pdf]]
Step 1  Creating the Web Dynpro for ABAP (WDA) Object 
Step 2  Creating a View
Step 3  Adding UI Elements to the View
Step 4  Creating the Component Controller Context
Step 5  Data Mapping
Step 6  Accessing Data from the Component Controller 
Step 7  Define the Navigational Schema
Step 8  Creating the Application
Step 9  Testing the WDA Application 
The following jobs are for creating or updating the indexes that are required for working with ABAP Workbench. The indexes are needed
* for the where-used list,
* for creating object lists or,
* for navigation.
Depending on your authorisation, you can run the appropriate ABAP report yourself at any time.
|Job Name |ABAP Program |Required Variant |How Often? |
|EU_INIT: |Analyzes all customer programs and creates the indexes that are required for the where-used list. Note that this job / report does not update the indexes, it recreates then. It will run for much longer than the EU_PUT. |SAPRSEUC |None |Once |
|EU_PUT: |Ensures that the indexes for the transported development objects are updated in the target system after a transport. |SAPRSEUT |None |Daily |
|EU_ REORG: |Takes over smaller cleanup tasks to reduce the load on the dialog operation. |SAPRSLOG |None |Daily |

Some background available in:
[[18023 - Jobs EU_INIT, EU_REORG, EU_PUT|]]
[[327321 - EU_REORG / EU_PUT: Log / spool / log|]]
[[759407 - EU_INIT job is started repeatedly/you want to stop this job|]]
Create or find a user with no rights for a certain action, try to execute the action (which will fail with an authorisation check), then ''SU53'' to find which role is missing, i.e. where did the authorization check failed.

Alternatively, if you have a user which can execute a certain action, and you would like to find out which role of this user granted access to this action, you can use the ''Authorization trace''.

In transaction ''ST01'' check the box ''Authorization check'' and select '’Trace on'’:
[img[Which role is needed to execute a certain action 01.jpg]]

Open another session and execute an example of the action you're interested in. For example, do a BW action such as a selective deletion from a DataStoreObject (DSO)
Once this is complete, switch off the trace in ST01 and select '’Analysis’':
[img[Which role is needed to execute a certain action 02.jpg]]

[img[Which role is needed to execute a certain action 03.jpg]]

The resulting output (on a BW 7.00SP31 system):
[img[Which role is needed to execute a certain action 04.jpg]]

The resulting output (on a BW 730SP10):
[img[Which role is needed to execute a certain action 05.jpg]]

Based on this, selective deletion on a DSO requires the ''S_RS_ODSO'' role with activity = ''06''.
!Who changed data in a table ?

Check SCU3 transaction for particular table. It works only when table changes logging is switched on. 
If you've make the change from SE16N, changes are logged in the tables shown below.

*SE16N_CD_KEY* : Change Documents - Header
*SE16N_CD_DATA* : Change Documents - Data 

!Who changed structure of a table ?

Go to the data dictionary (SE11) in your development system and look at the version history for the object.
Compare each revision made with the previous version, until you can find one where a version contains the column/field,
but the previous version does not.  Also check which version is in your other systems (by comparison with the Development system).
//Collate the anti-capital rants of a zillionaire currency speculator George Soros, the green sermons from a late Ted Kennedy who stopped a wind farm from marring his vacation homes views, a John Edwards of two nations fame constructing a Neronian Golden House, a Tom Friedman warning of the consumer habits that lead to a hot, flat earth from a 10,000 square foot English-style estate of the sort that 18th-century English barons built after successful careers in the Raj, the comic case of Jeremiah Wright moving to a mostly white golf course to dream up more sermons about white folks greed runs a world in need, or a $5 million a year earning Obama  with all his expenses picked up by the government  lamenting out loud why rich people seem to want ever more money they dont need. Some spread the wealth around.//
[[Windows (SAP)]]
[[Windows Constants]]
[[Windows Versions]]

[[OSS Note 684106 - Microsoft runtime DLLs]]
[[Get Windows DLL version]]

[[Remote Desktop Connection Shortcuts]]

[[Windows Services]]
[[Disable IE Explorer Security Settings - Win2012]]
[[use FORFILES to process Windows files by Age]]
[[Command Line Shutdown or Restart]]

[[Error 1723 when installing / uninstalling / updating JRE or JDK]]

[[Windows 8]]

A command line equivalent of Task Manager - can also run against remote machines.
//tasklist /s [server-name] //

''Environment variables''
In Powershell //echo %PATH%// will not work. You need to use the following command instead: //echo $Env:PATH//
[[Windows (Generic)]]

NW 7+ ABAP+JAVA or JAVA AS Hardware Key
 ==> D:\usr\sap\<sid>\SCS<nn>\work\dev_ms 
 ==> D:\usr\sap\EPQ\SCS01\work\dev_ms

if the JDK is in C:\jdk1.4.2 then....
[[Windows 8 Start Menu]]
To include something on the Windows Start menu
add a shortcut) to ''C:\ProgramData\Microsoft\Windows\Start Menu\Programs''

Go to the Start Screen and open the Search charm. Search for your shortcut by typing its name (also the The Shortcut will appear on the list of icons that can appear on the start menu).

However you find it, Right click on the search result and select ''Pin to Start Screen''.
The following table lists the system and local environment variables for Windows XP.

|!Variable|!  Type|!Description|
| %ALLUSERSPROFILE% | Local | Returns the location of the All Users Profile.|
| %APPDATA% | Local | Returns the location where applications store data by default.|
| %CD% | Local | Returns the current directory string.|
| %CMDCMDLINE% | Local | Returns the exact command line used to start the current Cmd.exe.|

| %CMDEXTVERSION% | System| Returns the version number of the current Command Processor Extensions.|

| %COMPUTERNAME% | System| Returns the name of the computer.|

| %COMSPEC% | System| Returns the exact path to the command shell executable.|

| %DATE% | System| Returns the current date. Uses the same format as the date /t command. Generated by Cmd.exe. |

| %ERRORLEVEL% | System| Returns the error code of the most recently used command. A non zero value usually indicates an error.|

| %HOMEDRIVE% | System| Returns which local workstation drive letter is connected to the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.|

| %HOMEPATH% | System| Returns the full path of the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.|



Returns the network path to the user's shared home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.



Returns the name of the domain controller that validated the current logon session.



Specifies the number of processors installed on the computer.



Returns the operating system name. Windows 2000 displays the operating system as Windows_NT.



Specifies the search path for executable files.



Returns a list of the file extensions that the operating system considers to be executable.



Returns the chip architecture of the processor. Values: x86, IA64.



Returns a description of the processor.



Returns the model number of the processor installed on the computer.



Returns the revision number of the processor.



Returns the command prompt settings for the current interpreter. Generated by Cmd.exe.



Returns a random decimal number between 0 and 32767. Generated by Cmd.exe.



Returns the drive containing the Windows XP root directory (that is, the system root).



Returns the location of the Windows XP root directory.

%TEMP% and %TMP%

System and User

Returns the default temporary directories that are used by applications available to users who are currently logged on. Some applications require TEMP and others require TMP.



Returns the current time. Uses the same format as the time /t command. Generated by Cmd.exe. For more information about the time command, see Time



Returns the name of the domain that contains the user's account.



Returns the name of the user who is currently logged on.



Returns the location of the profile for the current user.



Returns the location of the operating system directory.
''Manipulating Services on a local machine''
Recently, I managed to completely bork an installation.  prior to re-installation, I was trying to delete a windows service. (Normally it should not be necessary to manually delete windows Services, but in this case, uninstalling a buggered install meant that the startsap services were not removed automatically). Its very easy to remove a service from registry if you know the right path. Here is how I did that:
sc delete < SERVICE name>
Alternatively, you can also use command prompt and delete a service using following command:
1. Run Regedit or Regedt32
2. Find the registry entry "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services"
3. Look for the service there and delete it. You can look at the keys to know what files the service was using and delete them as well (if necessary).

[[SC command reference|]]

You can also create services:
sc create <SERVICE name> binpath= <path-name>

Leave a space between the equal sign (=) and the parameter.
If you have space in the file path you need to use quotation marks ("). For example: 
sc create SAPC11_10 binPath= "D:\usr\sap\C11\DVEBMGS10\exe\sapstartsrv.exe pf=D:\usr\sap\C11\SYS\profile\START_DVEBMGS10_mysapdev"

''Manipulating Services on a remote machine''
You can use the SC command to access services on other machines.  This is useful for when you can't logon to a system via RDP / MSTSC because the terminal Services limit has been reached.
H:\>sc \\mwsapdev stop SAPRouter
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, PAUSABLE, IGNORES_SHUTDOWN))
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x1
        WAIT_HINT          : 0xbb8
H:\>sc \\mwsapdev query SAPRouter
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
H:\>sc \\mwsapdev start SAPRouter
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 25776
        FLAGS              :

|Name	|Version Number	|Release Date	|Code Name|
|Windows 10 | 10.0* | | |
|Windows Server Technical Preview | 10.0* | | |
|Windows 8.1 | 6.3* | | |
|Windows Server 2012 R2 | 6.3* | | |
|Windows 8 | 6.2 | | |
|Windows Server 2012 | 6.2 | | |
|Windows 7 | 6.1 | | |
|Windows Server 2008 R2 | 6.1 | | |
|Windows Server 2008 | 6.0 | | |
|Windows Vista | 6.0 | | |
|Windows Server 2003 R2 | 5.2 | | |
|Windows Server 2003 | 5.2 | | |
|Windows XP 64-Bit Edition | 5.2 | | |
|Windows XP | 5.1 | | |
|Windows 2000 | 5.0 | | |

NOTE - Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. 

Rather than using the [[Version API Helper functions|]] to determine the operating system platform or version number, test for the presence of the feature itself. To determine the best way to test for a feature, refer to the documentation for the feature of interest.
[[WordPress Links]]

[[WordPress SQL Queries]]
''Official Sites''


''Plugins'' (30+ WordPress Plugins to Get More Blog Readers)


Change a password:
{{{UPDATE 'wp_users'  SET 'user_pass'  = MD5('PASSWORD') WHERE 'user_login' ='admin' LIMIT 1;}}}

Transfer posts from one user to another:
{{{UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;}}}

Delete post revisions and associated meta data:
{{{DELETE  a,b,c FROM wp_posts a WHERE a.post_type = 'revision'  }}}
{{{   LEFT JOIN wp_term_relationships b ON  (a.ID = b.object_id)}}}
{{{   LEFT  JOIN wp_postmeta c ON (a.ID = c.post_id);}}}

Delete Unapproved Comments (i.e. SPAM):
{{{DELETE from  wp_comments WHERE  comment_approved = '0';}}}

Find unused tags:
{{{SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;}}

Find and replace data:
{{UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;}}}

Get a list of your commentators emails:
{{{SELECT DISTINCT comment_author_email FROM wp_comments;}}}

Disable all your plugins at once:
{{{UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';}}

Delete all tags:
{{{DELETE a,b,c}}}
{{{	database.prefix_terms AS a}}}
{{{	LEFT JOIN database.prefix_term_taxonomy AS c ON a.term_id = c.term_id}}}
{{{	LEFT JOIN database.prefix_term_relationships AS b ON b.term_taxonomy_id = {{{c.term_taxonomy_id}}}
{{{WHERE (}}}
{{{	c.taxonomy = 'post_tag' AND}}}
{{{	c.count = 0}}}
{{{	);}}}
//Work like you don't need the money
Love like nobody has ever hurt you
Dance like nobody is watching
Sing like nobody is listening
Live as if this was paradise on earth.// 

[[Understanding ZFS: Disk Space Discrepancies]]
[[Understanding ZFS: Replication, Archive and Backup]]

to identify useable space on Solaris clustering with ZFS, then add the space (using BRSPACE for Oracle)
/usr/sbin/zpool list

brspace -f tsextend -f /oracle/C1P/sapdata4/dh9_8/dh9.data8 -i 256 -s 256 -m 0 -t PSAPDH9
Cardinality = 3,915,437 
"export to /db2/PP1/sapdata24/export09.del of del select * from SAPR3.COSP where GJAHR>'2008'"
SQL3104N  The Export utility is beginning to export data to file


SQL3105N  The Export utility has finished exporting "643673" rows.

"export to /sapr3ss/PP1/export/export07.del of del select * from SAPR3.COSP where GJAHR='2007'"
SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "213834" rows.

"export to /sapr3ss/PP1/export/export08.del of del select * from SAPR3.COSP where GJAHR='2008'"
SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "422158" rows.

"export to /sapr3ss/PP1/export/export06.del of del select * from SAPR3.COSP where GJAHR='2005' or GJAHR='2006'"
SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "574698" rows.

"export to /sapr3ss/PP1/export/export04.del of del select * from SAPR3.COSP where GJAHR='2004'"
SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "503281" rows.

 "export to /sapr3ss/PP1/export/export03.del of del select * from SAPR3.COSP where GJAHR='2003'"

SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "518252" rows.

db2 "export to /sapr3ss/PP1/export/export02.del of del select * from SAPR3.COSP where GJAHR='2002'"
SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "551459" rows.

db2 "export to /sapr3ss/PP1/export/export01.del of del select * from SAPR3.COSP where GJAHR<'2002'"

SQL3104N  The Export utility is beginning to export data to file

SQL3105N  The Export utility has finished exporting "489235" rows.
 - - - - - - - - - 

A crontab file contains entries for each cron job. Entries are separated by newline characters. Each crontab file entry contains six fields separated by spaces or tabs in the following form:
minute  hour  day_of_month  month  weekday  command

These fields accept the following values:
minute 0 through 59
hour 0 through 23
day_of_month 1 through 31
month 1 through 12
weekday 0 through 6 for Sunday through Saturday
command a shell command

For example, the following entry:
    //0 0 1,15 * 1 command//

will run command on the first and fifteenth days of each month, ''as well as'' every Monday. To specify days by only one field, the other field should contain an * .
''Example:'' //find . -type f -mtime +365 -exec gzip {}\;//

//find /oracle/GW1/saparch -type f -name '*.cds' -atime +7 -exec mv {} /usr/tmp \;//
This will move all plain files that have not been accessed in the last 7 days with the format *.cds in directory /oracle/PRD/saparch to directory /usr/tmp.

//find /oracle/PRD/saparch -type f -name '*.cds' -atime +21 -exec rm {} \;//
//find .                   -type f -name '*.*' -atime +21 -exec rm {} \;//
This will remove all plain files that have not been accessed in the last 21 days which match the patterns specified (*.cds or *.*),  from the specified directory /oracle/PRD/saparch or the current directory.
''Note:'' a more efficient alternative is
//find /oracle/PRD/saparch -type f -name '*.cds' -atime +7 | xargs -t -I {} mv {} /usr/tmp//
//find /oracle/PRD/saparch -type f -name '*.cds' -atime +7 | xargs -t rm//

To search for all files that are greater than 50,000 blocks of 512 bytes long, enter:
	//find . -size +50000 -print//
To search for all files that are greater than 1,000,000 bytes long, enter:
	//find . -size +1000000c -print//
Alternatives - 
	//find . -size +20000 -exec ls -la {} \;//

//find . -name '*trc' -mtime +21 -exec ls -la {} \;//
//find . -name '*trc' -mtime +21 | xargs -t rm//
//find . -name '*trc' -mtime +21 -exec rm {} \;//

To insert file names into the middle of command lines, enter:
     //ls | xargs -t -I {} mv {} {}.old//
This command sequence renames all files in the current directory by adding .old to the end of each name.
    The  -I flag tells the xargs command to insert each line of the ls directory listing where {} (braces) appear.
    The -t flag causes the xargs command to display each command before running it,

    If the current directory contains the files chap1, chap2, and chap3, this constructs the following commands:
     mv chap1 chap1.old
     mv chap2 chap2.old
     mv chap3 chap3.old
During the issue reported by customer on data mismatch, you may have to find the root cause. In the cases of MultiProvider which has a combination of VirtualProvider and StandardCubes, it is necessary to understand the DataSources and DataFlow from various SourceSystems. But Virtual Provider will not have manage screen OR even it doesn't show the dataflow to know the source of data.
Method 1, using RSA1,
1. Goto RSA1 ==> InfoProvider ==> locate your InfoProvider.
2. Goto display mode of the InfoProvider, click on Information icon OR press (Ctrl+F5).

3. In subsequent pop up screen, choose 'Type/Attributes'.

4. In subsequent pop up, find the details of Virtual Provider. Click on the details icon to find the name of the Function Module and its SourceSystem.
Method 2, using Database Tables,
1. Goto SE16 ==> Enter the table name RSDCUBE.

2. Pass the InfoProvider name as input along with OBJVERS = A.

3. The field name ''FUNCNAME'' will give you the Function Module name (or HANA module)
Either of these two ways will give you the source of the VirtualProvider, plus enough information about the SourceSystem for further investigation.
	{{{brconnect -u / -c -f stats -force allsel -t SAPR3.EDI40}}}
	{{{brconnect -u / -c -f stats -force allsel -t SAPR3.EDIDC}}}
	{{{brconnect -u / -c -f stats -force allsel -t SAPR3.EDIDS}}}
Quite often we see that files written by SAP system are not accessible by nonSAP applications or vice versa. The encoding format of text files generated by SAP applications depends on several conditions. On NonUnicode systems text files can be saved in system format or the format of the operating system on which the frontend is running on. On Unicode systems text files
are saved in UTF8 format.

Several writing and reading actions allow you to specify the code page to be used, but some don’t. Because of that it may happen that files have to be converted from one encoding to
another in order to reuse text files for systems with different encoding formats. 

The encoding of a file name (NOT its contents) may not be compatible with a nonSAP application:
* Files written by an SAP application are then inaccessible for this nonSAP application.
* Files written by a nonSAP application are inaccessible for SAP applications.

SAP applications access a file by a name encoded depending on the platform holding this file. SAP Unicode systems use the platform encoding where applicable, e.g. UTF16 on
Windows, and UTF8 on Unix platforms.

The two options are to use ABAP report RSCP_CONVERT_FILE' or ''SAPICONV''.

SAP provides the command line tool sapiconv for conversion of text files from SAP code page xxxx to SAP code page yyyy. The core of sapiconv consists of the R/3 code page
converter and the F5memory – a code page library for standalone programs without database access.
{{{sapiconv f fromcode t tocode [o outputfile] [file...] }}}
{{{sapiconv [lfVcv] [help] [list] [version] [verbose]}}}

You can script this using perl, powershell or the SAP command transaction and then call it from other (SAP or not) code

infruz57:cspadm 1% saplicense
usage: saplicense  function [ ... ]

These functions are possible:

       -delete             delete installed license
       -get                get hardware key (hardware key)
       -help [option]      display help information
                           option: get/install/temp/show/test
       -install [ifile=]   install license key
       -pinstall [ifile=]  install product license key
       -uinstall [ifile=]  install license with userlimit
       -number             get installation number
       -show               show license table
       -temp               install temporary license
       -test               test license

       -version            show version of saplicense

[ ... ]    optional SAP command line parameters
           e.g. NAME=<SID>  TRACE=2  pf=<profile>

If you cannot log onto your SAP System, you can use the saplicense option -test pf=<Profile> (iSeries: '-test pf=<Profile>') for troubleshooting purposes.

When you call up this option, the saplicense program determines the hardware key of the message server, simulates a logon to the SAP System, and carries out the necessary license check. You can follow all of these steps on the screen.


1  At the operating system level, log on as <sapsid>adm (Unix and Windows) or <SID>OFR (iSeries) to the computer running the central SAP instance.
2 Start your SAP system
*UNIX* and *iSeries*, start your SAP System and the database with startsap.
*Windows:* start your SAP System and the database with the SAP Service Manager.
3 Call up saplicense as follows:
UNIX and Windows: saplicense -test pf=<Profile>
iSeries: saplicense '-test pf=<Profile>'

You must enter the profile file. Specify the profile file (with the complete path) of the SAP System you want to test.

Example UNIX and Windows: 
{{{saplicense -test pf=/usr/sap/PRD/SYS/profile/sapr3_PRD_DVEBMGS00}}}

Example iSeries: 
{{{saplicense '-test pf=/usr/sap/PRD/SYS/profile/sapr3_PRD_DVEBMGS00'}}}

The following message specifies the license used for the test:
LICENSE system: PRD hardware key: D1889390344
expiration_date: 99991231
installation no: 0005500021 key:  9KJDYITLVLPRZS9WXVS8SNTN
productid: R3_ORA

If you receive an error message during the license check, you can use the data output by the program to determine the cause of the error. (Connection setup to the message server, connection to database, and so on). Depending on the message, check whether the message server is running, or whether the database has started, and so on.

You can also use the TRACE=2 option to carry out a detailed error analysis. The command syntax is as follows:
saplicense -test pf=<Profile> TRACE=2
on iSeries: 
'-test pf=<Profil> TRACE=2'

saplicense then creates the file dev_slic in the current directory. This file contains detailed error messages. 
Windows Server - also seen in Vista and Windows 7. 
''Forfiles'' can process files based on names, file extensions and age. It is for instance possible to find all documents in a directory that are older than 20 days, or all documents in c:\documents that have been changed since a specific date.

The forfiles command can be coupled with processing options to delete those files, or create a list of all files that match the filters. 
forfiles /?

FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {dd/MM/yyyy | dd}]
Selects a file (or set of files) and executes a command on that file. This is helpful for batch jobs.

Parameter List:
/P pathname Indicates the path to start searching.
The default folder is the current working directory (.).

/M searchmask Searches files according to a searchmask.
The default searchmask is '*' .

/S Instructs forfiles to recurse into subdirectories. Like "DIR /S".

/C command Indicates the command to execute for each file.
Command strings should be wrapped in double quotes.

The default command is "cmd /c echo @file".

The following variables can be used in the command string:
@file - returns the name of the file.
@fname - returns the file name without extension.
@ext - returns only the extension of the file.
@path - returns the full path of the file.
@relpath - returns the relative path of the file.
@isdir - returns "TRUE" if a file type is a directory, and "FALSE" for files.
@fsize - returns the size of the file in bytes.
@fdate - returns the last modified date of the file.
@ftime - returns the last modified time of the file.

To include special characters in the command line, use the hexadecimal code for the character in 0xHH format (ex. 0x09 for tab). Internal CMD.exe commands should be preceded with "cmd /c".

/D date Selects files with a last modified date greater than or equal to (+), or less than or equal to (-), the specified date using the "dd/MM/yyyy" format; or selects files with a last modified date greater than or equal to (+) the current date plus "dd" days, or less than or equal to (-) the current date minus "dd" days. A valid "dd" number of days can be any number in
the range of 0 - 32768. "+" is taken as default sign if not specified.

/? Displays this help message.

The command
{{{forfiles /P c:\test\ /M .doc /S /D -10}}}
searches the directory c:\test and all its subdirectories for files with the .doc extension that are older than 10 days.

The parameter /p followed by a directory defines the starting directory, /s includes subdirectories in the search, /m filters the files and folders based on the entered string, and /D defines the date or a time span.

The /C command is used to process the files that are found further. For instance, it can be used to echo the names of each file found and save the results in text.txt in the same directory.
{{{... /C "cmd /c echo @fname" > test.txt}}}

The full command then looks like this
{{{forfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt}}}

Another possibility is to delete the files (for example old log files) that match the search, this is done with the command
{{{forfiles /P c:\test\ /M .log /S /D -10 /C "cmd /c del @File}}}

Obviously, test the output first (using //"cmd /c echo @fname"//) before issuing the delete command to make sure that only the correct files are deleted. Once satisfied, create a batch file and run it regularly (via ''Task Scheduler'').
Copies files and directory trees.

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]

  source       Specifies the file(s) to copy.
  destination  Specifies the location and/or name of new files.
  /A           Copies only files with the archive attribute set,
               doesn't change the attribute.
  /M           Copies only files with the archive attribute set,
               turns off the archive attribute.
  /D:m-d-y     Copies files changed on or after the specified date.
               If no date is given, copies only those files whose
               source time is newer than the destination time.
               Specifies a list of files containing strings.  Each string
               should be in a separate line in the files.  When any of the
               strings match any part of the absolute path of the file to be
               copied, that file will be excluded from being copied.  For
               example, specifying a string like \obj\ or .obj will exclude
               all files underneath the directory obj or all files with the
               .obj extension respectively.
  /P           Prompts you before creating each destination file.
  /S           Copies directories and subdirectories except empty ones.
  /E           Copies directories and subdirectories, including empty ones.
               Same as /S /E. May be used to modify /T.
  /V           Verifies each new file.
  /W           Prompts you to press a key before copying.
  /C           Continues copying even if errors occur.
  /I           If destination does not exist and copying more than one file,
               assumes that destination must be a directory.
  /Q           Does not display file names while copying.
  /F           Displays full source and destination file names while copying.
  /L           Displays files that would be copied.
  /G           Allows the copying of encrypted files to destination that does
               not support encryption.
  /H           Copies hidden and system files also.
  /R           Overwrites read-only files.
  /T           Creates directory structure, but does not copy files. Does not
               include empty directories or subdirectories. /T /E includes
               empty directories and subdirectories.
  /U           Copies only files that already exist in destination.
  /K           Copies attributes. Normal Xcopy will reset read-only attributes.
  /N           Copies using the generated short names.
  /O           Copies file ownership and ACL information.
  /X           Copies file audit settings (implies /O).
  /Y           Suppresses prompting to confirm you want to overwrite an
               existing destination file.
  /-Y          Causes prompting to confirm you want to overwrite an
               existing destination file.
  /Z           Copies networked files in restartable mode.

The switch /Y may be preset in the COPYCMD environment variable.
This may be overridden with /-Y on the command line.