Samstag, 31. Oktober 2009

Virtualisierung von SAP-Systemen

Neus buch zum Thema Virtualisierung von SAP-Systemen

* Grundlagen, Konzeption und Betrieb
* Technologien und Lösungen im Vergleich
* Detaillierte Darstellung des Einsatzes von VMware vSphere, Microsoft Hyper-V, SLES mit Xen und Sun Solaris-Zonen


Endlich Durchblick beim Betrieb von virtuellen SAP-Systemen! Dieser Leitfaden klärt nicht nur die Frage, was Virtualisierung bedeutet, sondern hilft Ihnen bei der Entscheidung für eine bestimmte Lösung und wie Sie sie betreiben – von der Einrichtung und Verwaltung virtueller Serverwelten bis zum eventuellen Ausstieg.

Sie werden aus Sicht eines unabhängigen Beobachters lernen, welches Produkt (VMware vSphere, Microsoft Hyper-V, SLES mit Xen, Sun Solaris-Zonen) sich für Ihren Einsatzzweck am besten eignet. Dabei lernen Sie neben technischen Aspekten auch die organisatorische Seite der Einführung und des Betriebs von Virtualisierungslösungen in einem Rechenzentrum kennen – und können so fundierte Entscheidungen zur optimalen Gestaltung der Systemarchitektur bzw. für eine verbesserte Arbeit der IT-Abteilung treffen. Wenn Sie mit dem Gedanken der Virtualisierung Ihrer SAP-Systeme spielen, werden Sie dieses Buch nicht mehr missen wollen: Als Ideengeber, Projektbegleiter und Nachschlagewerk.

Freitag, 30. Oktober 2009

Custom Development Management Cockpit

Mit dem EHP01 vom Solution Manager liefert die SAP das

Custom Development Management Cockpit oder kurz CDMC aus.

Man startet das Tool mit der Transaktion CNV_CDMC!

Mit diesem Tool kann man zwei verschiedene Funktionen durchführen -
einmal eine Upgrade/Change Impact Analyse und einmal eine Clearing Anlasyse!

In diesem Fall möchte ich auf die Upgrade/Change Impact Analyse eingehen da wir
gerade ein Upgrade auf EHP 04 machen.

Für was ist so eine Upgrade/Change Impact Analyse überhaupt?
Mit diesee Analyse werden alle Z* Programme untersucht ob diese SAP Standard Funktions Bausteine / Reports indirekt aufrufen und ob sich diese durch das Upgrade
geändert haben.

Die erste Analyse wird in diesem System gestartet welches bereits upgegradet worden ist (die SAP nennt das Analysesystem) - dann wird eine zweite Analyse in dem System
gestartet welchen noch nicht upgegradet worden ist (die SAP nennt das System Referenzsystem).

Als nächstes werden dann alle von den Z* Programmen verwendeten SAP Objekte verglichen ob sich mit dem Upgrade die Version und somit eine Funktion geändert hat.

Z.B. ob ein Importparameter bei einem Funktionbaustein dazugekommen ist den man bei seinem Z Programm noch nicht inkludiert hat!

Somit kann man im vorhinein schon fesstelllen ob es auch im Bereich der Kundenentwicklung zu Anpassungen kommt.

anbei ein paar Screenshots:

Einstieg







SAP Doku

Freitag, 23. Oktober 2009

Einstiegsbild von SAP Easy Access

Ich denke jeder Administrator hat einmal in seinem Leben die Anforderung bekommen
das Firmen Logo nach dem Einstieg in das SAP System einzublenden.

Dafür gibt es die Tabelle SSM_CUST - hier kann man den Parameter START_IMAGE pflegen - als VALUE gibt man das Bild an welches man zuvor mit der Transaktion SMW0 geladen hat.

Doch seit kurzem kann man auch Internet bzw. Intranet Seiten via HTML Viewer einbinden:

Siehe Hinweis 1387086 - HTML Viewer Control auf Einstiegsbild von SAP Easy Access

oder kurz zusammengefasst:

Wenn man noch nicht den Supportpackage Stand hat dann einfach den HW mit SNOTE einpsielen -

Tabelle SSM_CUST mit folgenden Parameter füllen:

SESS_URL = URL

Montag, 19. Oktober 2009

Systemkopie - Tabellen sichern und wieder importieren

Achtung - das ist nur eine Möglichkeit sich einige Nacharbeiten nach einer Systemkopie zu ersparen - das wird von der SAP nicht unterstützt und muss bei jedem neuen Release geprüft werden ob die Tabellen noch aktuell sind!

Zuerst muss man ein Steuerfile für den Export erstellen:

export
file = '/tmp/export_SID.exp'
# RFC Tabellen

delete from RFCTRUST
select * from RFCTRUST
delete from RFCSYSACL
select * from RFCSYSACL
delete from RFCDOC
select * from RFCDOC
delete from RFCDESSECU
select * from RFCDESSECU
delete from RFCDES
select * from RFCDES
delete from RFCCHECK
select * from RFCCHECK
delete from RFCATTRIB
select * from RFCATTRIB

# Secstore sichern

delete from RSECACHK
select * from RSECACHK
delete from RSECACTB
select * from RSECACTB
delete from RSECTAB
select * from RSECTAB

# CRM Tabellen

delete from crmrfcpar
select * from crmrfcpar
delete from crmprls
select * from crmprls
delete from tblsysdest
select * from tblsysdest

# DBCON Verbindungen

delete from dbcon
select * from dbcon

# SMLG / RZ12 Lastverteilgun

delete from RZLLITAB
select * from RZLLITAB

# Tabelle instvers

delete from instvers
select * from instvers

# Profile RZ10 sichern

delete from TPFET
select * from TPFET
delete from TPFHT
select * from TPFHT
delete from TPFID
select * from TPFID



Die delete Anweisungen gelten nur beim Import.
Beim Export haben diese keine Wirkung, müssen aber mitangegeben werden!


Der Export wird wie folgt gestartet:

R3trans -w Protokolldatei Steuerfile

Das Import Steuerfile muss wie folgt aussehen:
import
file = '/tmp/export_SID.exp'

Der Import wird mit dem selben Aufruf gestartet:

R3trans -w Protokolldatei Steuerfile

Mittwoch, 26. August 2009

Vertretung im Workplace SBWP nachträglich pflegen

In der Tabelle HRUS_D2 werden die Vertretungen für User gespeichert - leider gibt es dazu keinen Pflegeview und somit kann ein Administrator hier nur beauskunften ob ein User der im Urlaub ist auch seine Vertretung aktiv hinterlegt hat!

Mit diesem einfachen Report kann man den Vertreter als Administrator hinterlegen - in manchen Fällen ist das sehr sehr hilfreich (besonders bei Krankeit eines Users usw.)

*&---------------------------------------------------------------------*
*& Report Z_ACTIVATE_SUBSTITUTE
*&
*&---------------------------------------------------------------------*
*&
*& Workflow Verterter aktiveren
*&---------------------------------------------------------------------*

REPORT Z_ACTIVATE_SUBSTITUTE.

PARAMETERS:

P_usern1 TYPE usr02-bname obligatory,
P_vertr Type usr02-bname obligatory,
P_begdt type BEGDA obligatory default sy-datum,
P_enddt TYPE ENDDA OBLIGATORY,
P_prof TYPE T77RP-REPPR DEFAULT 'ALL' OBLIGATORY,
p_active like hrus_d2-active.

PARAMETERS:

p_insert radiobutton group g1,
p_delete radiobutton group g1.

constants: c_true value 'X',
c_false value space.

data: gs_hrus_d2 like hrus_d2,
gflg_error.

START-OF-SELECTION.

perform check_data changing gflg_error.

if gflg_error = c_false.
clear gs_hrus_d2.
gs_hrus_d2-us_name = p_usern1.
gs_hrus_d2-rep_name = p_vertr.
gs_hrus_d2-begda = P_begdt.
gs_hrus_d2-endda = P_enddt.
gs_hrus_d2-active = p_active.
gs_hrus_d2-REPPR = p_prof.

case c_true.
when p_insert.
insert into hrus_d2 values gs_hrus_d2.
if sy-subrc = 0.
write: 'Vertreter erfolgreich angelegt.'(S01).
else.
write: 'Fehler bei insert!'(E01).
endif.
when p_delete.
delete from hrus_d2 where us_name = p_usern1
and rep_name = p_vertr.
if sy-subrc = 0.
write:/ 'Vertretung erfolgreich gelöscht.'(S02).
else.
write:/ 'Fehler beim löschen der Vertretung!'(E02).
endif.

endcase.
endif.

FORM check_data changing oflg_error.
data: ld_uname like sy-uname,
ld_datdiff type i.
clear oflg_error.
format color col_negative.
if p_enddt < p_begdt.
write:/ 'Enddatum muss größer Beginndatum sein'.
oflg_error = c_true.
endif.

select single bname from usr02 into ld_uname
where bname = p_usern1.
if sy-subrc ne 0.
write:/ 'Benutzer', p_usern1, 'nicht vorhanden'.
oflg_error = c_true.
endif.

select single bname from usr02 into ld_Uname
where bname = p_vertr.
if sy-subrc ne 0.
write:/ 'Benutzer', p_vertr, 'nicht vorhanden'.
oflg_error = c_true.
endif.

format color col_normal.
ENDFORM.
"WRITE: P_usern2, 'wurde als Vertretung für', P_usern1, 'von', P_begdt, 'bis', P_enddt, 'aktiviert'. ULINE.
"WRITE: 'Profil:', P_prof.
"ULINE.

Dienstag, 11. August 2009

saplikey ersetzt saplicense ab 7.00

Zum Basis Release 7.00 wurden digital signierte Lizenzschlüssel eingeführt und das Programm
saplicense steht nur noch zur Kontrolle und Installation der SAP Lizenschlüssel in eingeschränkter Funktionalität zur Verfügung.

z.B. kommt bei der Intsallation eines Lizenzkey's über ein File folgende Meldung:

"The license looks like it contains a digitally signed license.
Those files cannot be installed with the SAPlicense program.
Please logon to the SAP system to install the file. In case the
license is for an ABAP system please got to the transaction SLICENSE
and press the button "New licenses" before pressing the "Install" button."

Nur ist es nach einer Systemkopie recht schwer sich im System anzumelden und die Transkation saplicense zu starten :-) - wenn die Meldung kommt das Ihre Lizenz abgelaufen ist!

Also muss man den Key doch noch über das Betriebssystem einspielen - und das geht seit dem 7.00 Patch Kernel 210 mit dem Programm saplikey.

folgender Syntax für die Installation eines Key's mit einem File:

saplikey pf=/sapmnt/SID/profile/SID_DVEBMGS04_hostname -install SID_multiple.txt

Das File SID_multiple.txt bekommen Sie von der SAP via Mail wenn Sie einen neuen Schlüssel beantragen.

pf=/sapmnt/SID/profile/SID_DVEBMGS04_hostname ist das Instanzprofil

Siehe auch Hinweis 1227762

Donnerstag, 6. August 2009

SAP Webdispatcher Access Log aktivieren


Es kann im Wepdispatcher sehr hilfreich sein wenn man sieht wer sich auf den Dispatcher verbunden hat - bzw. welche Seiten abgerufen worden sind.

Dazu gibt es im Menü HTTP Handler den Unterpunkt
Access Log.

Das Logging ist standardmäßig nicht aktiv und müss über
einen Parameter aktiviert werden.

Der Parameter sieht wie folgt aus:

icm/HTTP/logging_0 = PREFIX=/ , LOGFILE=/usr/sap/SID/D00/access_log , MAXSIZEKB=1000

wobei man mit dem PREFIX die URL einschränken kann was man monitoren möchte.

Mit dem Wert LOGFILE legt man fest wo und mit welchen Dateinamen das File geschrieben wird und mit MAXSIZEKB legt die grösse vom File fest.

Man kann den Filenamen auch dynamisch erstellen z.B.

access_log-%d-%m-%y - dann wird beim starten vom Webdispatcher ein File mit dem Namen
access_log-06-08-2009 angelegt.

Folgende Variablen gibt es:

%d Day of the month (1-31)
%m Month (1-12)
%y Year, in the format YYYY
%h Hour (0-23)
%t Minute (0-59)
%s Second (0-59)

Doku der SAP -

und das ist dann das Ergebnis vom Logging:

Montag, 3. August 2009

Einzelne Tabellen auf Ihre Platzauslastung prüfen

Wenn Sie wissen möchten wieviel Platz in einer Tabelle wirklich verwendet wir dann können Sie diese SQL Statement verwenden:

SELECT
TO_CHAR(SPACE_ALLOCATED / 1024 / 1024,
999990.99) GROSS_MB,
TO_CHAR(SPACE_USED / 1024 / 1024, 999990.99) NET_MB,
TO_CHAR((SPACE_ALLOCATED - SPACE_USED) / 1024 / 1024,
999990.99) UNUSED_MB,
CHAIN_PCENT CHAIN_PERCENT
FROM
TABLE(DBMS_SPACE.OBJECT_SPACE_USAGE_TBF('SAPER3',
'MARA', 'TABLE', NULL ))

Als Beispiel wird hier die Tabelle MARA im Schema SAPER3 überprüft - das sind auch die einzigen beiden Werte die sie gemäß ihrer Datenbank anpassen müssen!

Das Ergebnis sieht dann wie folgt aus (Bespiel MARA):

GROSS_MB NET_MB UNUSED_MB
279.00 263.28 15.72


GROSS MB = die tatsächliche Grösse der Tabelle MB
NET_MB = der Inhalt der Tabelle im MB
UNUSED_MB = der nicht verwendete Platz in der Tabelle in MB

SAP ECC System auf SAP ERP System im Solution Manager umsetzen

Sie möchten im ECC System ein Enhancement Packages einspielen - dafür müssen Sie im MOPZ
eine Wartung anlegen und statt SupportPackageStack eine EHP Installation auswählen.

Und genau das geht nur wenn Sie in der SMSY das System auch wirklich als ERP System
definiert haben - sonst wird die Auswahl im MOPZ für die EHP Einspielung nie sichtbar werden.

Nachdem vor Jahren die SAP auf die wunderbare Idee kam und dem R/3 System den Namen ECC verpasste wurde dieser Name auch bereits im Solution Manager ausgeliefert. Nun hat man damals brav nach dem Upgrade auf 6.00 den System im Solman den Namen ECC zugeteilt - dann kam dass SAP Marketing und hatte wiederrum die Superidee aus dem ECC wieder ein ERP zumachen und
nun hat der Kunde wirklich ein Problem! Es ist nicht so einfach diese Zuordnung zuändern
und somit hat die SAP begonnen einen Migrationsreport zu schreiben - im Moment gibt es nur
einen händische Anleitung der SAP:

HW 1322259

MOPZ, EHP, Enhancement Package, SAP ECC, SAP ERP, Maintenance Optimizer, SAP Solution Manager

Freitag, 31. Juli 2009

Löschen von Daten im Transportverzeichnis /usr/sap/trans

Man möchte das Transportverzeichnis in geordneter Weise von alten Dateien bereinigen.

Auszug aus den Hinweis 41732:

Funktionalität:


Als Löschkriterium werden zwei Informationen verwendet:

    1. Wird die Datei noch für zukünftige Transporte benötigt?

Eine Datei wird noch für zukünftige Transporte benötigt, wenn der zugehörige Transportauftrag für den Import in ein SAP-System vorgemerkt aber noch nicht erfolgreich importiert wurde.

    2. Ist die Lebensdauer der Datei überschritten?

Die Lebensdauer der verschiedenen Dateien im Transportverzeichnis sind parametrisierbar (siehe Abschnitt: Parametrisierung).

Parametrisierung:
Das Mindestalter von Dateien im Transportverzeichnis, die gelöscht werden dürfen, ist im Transportprofil einstellbar. Das Transportprofil ist die Datei 'TPPARAM' im Unterverzeichnis 'bin' des Transportverzeichnisses. Folgende Parameter koennen gesetzt werden (Einheit in Tagen!):

datalifetime ist die mininale Lebensdauer der files in data
loglifetime ist die mininale Lebensdauer der files in log
olddatalifetime ist die mininale Lebensdauer der files in olddata
cofilelifetime ist die minimale Lebensdauer der files in cofiles

Beispiel:
datalifetime=30
loglifetime=60
olddatalifetime=60
cofilelifetime=30

Diese Paramter dürfen dabei nicht systemspezifisch angegeben werden, denn bei den im folgenden angegebenen tp-Aufrufen kann ebenfalls kein SAP-System angegeben werden. Statt dessen wird immer mit dem Parameter 'ALL' aufgerufen.

Gestartet wird der Reorg dann wir folgt:

zuerst den Check:

tp check all pf=

und dann das löschen bzw. verschieben der alten Files:

tp clearold all pf=

Mittwoch, 29. Juli 2009

Abbrechen von BRARCHIVE, BRBACKUP und BRRESTORE Läufen

Mit der Patch Version:

Erweitert in BR*Tools 6.40 Patch 47.
Erweitert in BR*Tools 7.00 Patch 31.
Erweitert in BR*Tools 7.10 Patch 7.

wird nun die Funktion ausgeliefert das man ein Backup bzw. Archivlogsicherung sauber terminieren kann. Somit sollte auch verhindert werden das Tablespaces im Backup-Modus stehen bleiben. Bis jetzt war nur ein Control-c bzw. ein Kill des Prozesses möglich.

folgende Varianten gibt es:

brarchive -g|-abort stop|term|kill
brbackup -g|-abort stop|term|kill
brrestore -g|-abort stop|term|kil

stop - sanfter Abbruch
term - normaler Abbruch
kill - harter Abbruch

Siehe auch HW 1129197

Dienstag, 28. Juli 2009

Buch: Ordnungsmässigkeit und Prüfung des SAP-Systems (OPSAP)

Ich möchte das Buch von Thomas Tiede empfehlen - ist sicher ein muss für jeden Auditor und Administrator der sich mit dem Thema SAP Sicherheit befasst.

Im Moment ist das Buch vergriffen - aber ich habe gelesen das es eine neue Auflage geben wird.

ISBN-13: 978-3-930291-24-3

Montag, 27. Juli 2009

Populäre Irrtümer im Oracle-Umfeld

Es gibt von der SAP den HW 825653 zum Thema Populäre Irrtümer im Oracle-Umfeld!

Dieser ist wirklich sehr Interessant und kann einige Fragen im Oracle Umfeld klären - hier ein paar Bespiele aus dem HW:

    1. Der Oracle Cost Based Optimizer wählt immer den Zugriff mit den niedrigsten errechneten Kosten.

Dies ist nicht allgemein richtig, da auch der Cost Based Optimizer in bestimmten Situationen regelbasierte Entscheidungen trifft. So kann es sein, dass ein Zugriff mit hundertmal besseren Kosten nicht verwendet wird, weil die erste Indexspalte nicht mit "=" in der WHERE-Bedingung angegeben ist und der Zugriff dadurch als "Guess" bewertet wird. Beachten Sie dazu auch die Informationen aus Hinweis 176754.

    2. Indizes sollten so aufgebaut werden, so dass die selektiven Felder ganz vorne stehen.

Es ist aus Performancegesichtspunkten egal, ob selektive oder unselektive Felder (wie MANDT) am Anfang eines Indexes stehen. Viel wichtiger ist, dass Felder, die in WHERE-Bedingungen nicht mit "=" angegeben werden und einen großen Wertebereich abdecken, möglichst weit hinten im Index zu finden sind. Außerdem muss vermieden werden, dass es Lücken im Index gibt, die nicht in der WHERE-Bedingung angegeben sind. Beachten Sie auch Hinweis 766349.

    3. Indizes, die nur Spalten mit wenigen Ausprägungen indizieren, sind überflüssig.

Die Anzahl der Distinct Values einer Spalte kann in vielen Fällen nicht mit der Selektivität bestimmer Bedingungen auf dieser Spalte gleichgesetzt werden. Es kommt oft vor, dass Bedingungen für Spalten mit wenigen Ausprägungen sehr selektiv sind. Daher tragen auch Indizes auf Spalten mit wenigen Distinct Values oft zu einer großen Performancesteigerung bei. Ein detailliertes Beispiel zu Selektivität vs. Distinct Values ist in Hinweis 766349 zu finden.

    4. Histogramme unterstützen den CBO im R/3-Umfeld bei der Auswahl des optimalen Zugriffspfades, weil Sie Informationen über die Werteverteilung von Spalten enthalten.

Histogramme können im R/3-Umfeld nicht sinnvoll ausgewertet werden, weil SAP beim Parsen Bind-Variablen verwendet und Bind Value Peeking standardmäßig deaktiviert ist. Beachten Sie dazu auch Hinweis 797629.

    5. Um zu ermitteln, wie viel Memory durch Oracle allokiert wird, muss man nur die Größe der SGA bestimmen.

Die SGA ist zwar ein wichtiger Memory-Bereich, aber auch die PGA und das Prozess-Memory können signifikante Größen erreichen. Im Einzelfall kann der durch die PGA allokierte Memory-Bereich sogar größer als die SGA werden. Daher sind auch PGA und Prozess-Memory in die Kalkulation des Oracle-Speicherverbrauchs mit einzubeziehen. Für weitere Informationen beachten Sie Hinweis 789011.

usw..... weiter geht es im HW 825653