Posts mit dem Label abap werden angezeigt. Alle Posts anzeigen
Posts mit dem Label abap werden angezeigt. Alle Posts anzeigen

Freitag, 19. Dezember 2014

Ähnliche oder identische Transkation in ein SAP System ermitteln

Oft schützt man einzelen Transaktion über sein Berechtigungskonzept und übersieht dabei das es vielleicht noch weitere Transaktion gibt die auch die selbe Anwendung starten können!

Das Programm SAIS_SEARCH_APPL (bzw. die gleichnamige Transaktion) dient
der analytischen Unterstützung von Revisionsarbeiten und unterstützt
folgende Suchpfade:

1. Suche nach verwandten Transaktionen

2. Suche nach Transaktionen zum generischen Tabellenzugriff.

 Das Analysetool untersucht lediglich die Starteigenschaften von
Anwendungen, jedoch nicht die Programmlogik. Insbesondere die Suche nach
ähnlichen Transaktionen bedarf der Einzelfallprüfung.

Folgende Aspekte sollten beachtet werden:

Transaktionen mit gleichem Programm und Startdynpro können in der
Programmlogik zu unterschiedlichen Verabeitungsszenarien führen
(Beispiel SU22 versus SU24).

Ruft man nun als Beispiel den Report SAIS_SEARCH_APPL für die Transaktion SU01 (User anlegen,ändern pflegen usw) auf dann erhält man folgendes Ergebenis:

Identisch startbare Anwendungen (lt. WBO)

    Transaction OMDL
    Transaction OMEH
    Transaction OMWF
    Transaction ON09
    Transaction OPF0
    Transaction OTZ1
    Transaction OY27
    Transaction OY28
    Transaction OY29
    Transaction OY30

Anwendungen mit ähnlichen Starteigenschaften (lt. WBO)
    Transaction GCE1
    Transaction OOUS
    Transaction SU01_NAV


Der Report ist ab folgender Version im Standard:

Support Package
SAP_BASIS
702
SAPKB70216
730
SAPKB73012
731
SAPKB73112
740
SAPKB74007


oder Pilot Hinweis 1979232



Donnerstag, 25. Oktober 2012

Analyse des kundeneigenen ABAP Codes z.B. Clone Finder

Bis jetzt war mir dir Funktion zur Analyse des kundeneigenen ABAP Codes nur im Solution Manager bekannt. Mit Zufall bin ich auf die Transaktion /SDF/CD_CCA gestossen - diese Transaktion ist im System vorhanden wenn man das Packet ST-PI SAP Solution Tools Plug-In installiert hat (und das hat sicher jeder der den Solman in Verwendung hat :-))!

Folgende Möglichkeiten stehen hier zur Auswahl:


Das Ergebnis einer SAP Clone Finder Analyse sieht dann wie folgt aus:


Es gibt dann verschiede Status wie "Similar Source Code" oder "Very Similar Source Code" - man kann dann direkt aus der Transaktion die beiden Programme mit dem Button



vergleichen!

Das wird dann wie beim Modifikationsabgleich in dieser Form angezeigt:



Montag, 27. Februar 2012

Programm zum generieren des Solution Manager Key

Sollte mal kein Solution Manager vorhanden sein und Sie müssen bei einem Upgrade oder Installation den
Solution Manager Key eingeben dann verwenden Sie einfach diesen Report und genrieren sich den Schlüssel auf einem beliebegen ABAP System.


 *&———————————————————————*


*& Report ZSLMKEY

*&

*&———————————————————————*

*&

*&

*&———————————————————————*



REPORT ZSLMKEY.



types: begin of dswpclientkey,

INSTNO type num10,

DBID(3),

BUNDLE_ID(8),

SERVICE_KEY(40),

end of dswpclientkey.

*data: dswpclientkey_w type standard table of dswpclientkey.

DATA: P_VALUE(10),

P_INSTNO(10).



PARAMETERS: P_SID(3),

P_SYSNO(2),

P_SERVER(15).



START-OF-SELECTION.

PERFORM GET_SP_VALUE USING P_SID

P_SYSNO

P_SERVER

P_INSTNO

CHANGING P_VALUE.



END-OF-SELECTION.

WRITE P_VALUE.

*&———————————————————————*

*& Form get_sp_value

*&———————————————————————*

* text

*———————————————————————-*

* –>P_PF_SID text

* –>P_PF_SYSNO text

* –>P_PF_SERVER text

* <–P_PF_VALUE text

*———————————————————————-*

FORM get_sp_value USING P_PF_SID

P_PF_SYSNO

P_PF_SERVER

P_PF_INSTNO

CHANGING P_PF_VALUE.



CONSTANTS: lc_part_len TYPE i VALUE 5,

lc_pw_len TYPE i VALUE 10,

lc_allowed_chars(38) TYPE c VALUE '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_'.



data: lf_string(20) type c,

lf_key type i,

ls_key type dswpclientkey,

lf_part(lc_part_len) type c,

lf_finalf(lc_pw_len) type c,

lf_finalx type xstring,

lf_xbuffer type xstring,

lf_opf(10) type c,

lf_langu like sy-langu,

lf_subrc like sy-subrc,

lf_len type i,

lo_conv_to_x TYPE REF TO cl_abap_conv_out_ce.



clear: lf_string, lf_finalx, lf_opf.



concatenate p_pf_sid p_pf_sysno p_pf_server into lf_string.



* Large letters only

translate lf_string to upper case.



lf_langu = sy-langu.

SET LOCALE LANGUAGE 'E'.

lo_conv_to_x = cl_abap_conv_out_ce=>create( encoding = '1100' ).

lf_len = STRLEN( lf_string ).



IF lf_string(lf_len) CN lc_allowed_chars.

else.



* Fold the input string to a lc_part_len long string

WHILE lf_len > 0.

lf_part = lf_string(lc_part_len).

SHIFT lf_string BY lc_part_len PLACES.

lf_len = STRLEN( lf_string ).

CALL METHOD lo_conv_to_x->reset.

CALL METHOD lo_conv_to_x->write( data = lf_part n = -1 ).

lf_xbuffer = lo_conv_to_x->get_buffer( ).

lf_finalx = lf_finalx BIT-XOR lf_xbuffer.

ENDWHILE.



lf_key = 12.



PERFORM scramble USING lf_finalx

lf_key

lc_part_len

CHANGING lf_finalf

lf_subrc.



if not lf_finalf is initial.

p_pf_value = lf_finalf.

ls_key-dbid = p_pf_sid.

ls_key-instno = p_pf_instno.

ls_key-bundle_id = 'SM_KEY'.

ls_key-service_key = lf_finalf.

if not p_pf_instno is initial.

* insert dswpclientkey_w from ls_key.

if sy-subrc <> 0.

* update dswpclientkey_w from ls_key.

endif.

endif.

else.

clear p_pf_value.

endif.

endif.

ENDFORM. " get_sp_value

*&———————————————————————*

*& Form scramble

*&———————————————————————*

* text

*———————————————————————-*

* –>P_LF_FINALX text

* –>P_LF_KEY text

* –>P_LC_PART_LEN text

* <–P_LF_finalf text

* <–P_LF_SUBRC text

*———————————————————————-*

FORM scramble USING iv_xstring TYPE xstring

iv_key TYPE i

iv_src_len TYPE i

CHANGING lf_finalf

lf_subrc LIKE sy-subrc.



CONSTANTS: lc_max_len TYPE i VALUE 20,

lc_mask(4) TYPE x VALUE '0000003F', lc_random(64) TYPE x VALUE

'F0ED53B83244F1F876C67959FD4F13A2' &

'C15195EC5483C234774943A27DE26596' &

'5E5398789A17A33CD383A8B829FBDCA5' &

'55D702778413ACDDF9B83116610E6DFA'.



DATA: lv_key_index(4) TYPE x,

lv_rand_index(4) TYPE x,

lv_xkey(4) TYPE x,

lv_xkey_shl_1(4) TYPE x,

lv_xkey_shr_5(4) TYPE x,

lv_scramble_byte TYPE x,

lv_dest(lc_max_len) TYPE x,

lv_index TYPE i,

lv_len TYPE i.



CLEAR lf_subrc.



IF iv_src_len EQ 0. EXIT. ENDIF.

lv_len = XSTRLEN( iv_xstring ).

IF iv_src_len GT lc_max_len OR

iv_src_len GT lv_len.

lf_subrc = 2.

EXIT.

ENDIF.



lv_xkey = iv_key.

lv_xkey_shl_1 = iv_key * 2.

lv_xkey_shr_5 = iv_key DIV 32.

lv_rand_index = lv_xkey BIT-XOR lv_xkey_shr_5 BIT-XOR lv_xkey_shl_1.

lv_rand_index = lv_rand_index BIT-AND lc_mask.



lv_index = 0.

DO iv_src_len TIMES.

CATCH SYSTEM-EXCEPTIONS compute_int_times_overflow = 1.

lv_key_index = ( iv_key * lv_index * lv_index ) - lv_index.

ENDCATCH.

IF sy-subrc <> 0.

lf_subrc = 1.

EXIT.

ENDIF.

lv_scramble_byte = lc_random+lv_rand_index(1) BIT-XOR

lv_key_index+3(1).

lv_dest+lv_index(1) = iv_xstring+lv_index(1) BIT-XOR

lv_scramble_byte.

lv_index = lv_index + 1.

lv_rand_index = lv_rand_index + 1.

lv_rand_index = lv_rand_index BIT-AND lc_mask.

ENDDO.

IF lf_subrc <> 0.

EXIT.

ENDIF.



WRITE lv_dest(iv_src_len) TO lf_finalf.



ENDFORM.

Dienstag, 30. November 2010

HOTNEWS: Hinweis 1529649 - Ende der Gültigkeit des Fabrikkalenders Ende 2010

Symptom

Die von SAP gelieferten Fabrikkalender gelten standardmäßig bis 2010. Vor Ablauf der Gültigkeit wird keine Fehlermeldung angezeigt. Dies kann zum Jahreswechsel in Anwendungen, die den Kalender verwenden, zu Folgefehlern führen.

Weitere Begriffe

Die Gültigkeit der Kalender endet 2010.

Ursache und Voraussetzungen

Alle SAP-Standardsysteme werden bei der Erstinstallation mit dem oben genannten Gültigkeitsdatum bereitgestellt.

Lösung
Prüfen Sie die Gültigkeit des Fabrikkalenders im System mithilfe von Transaktion SCAL. Verlängern Sie die Gültigkeit des Kalenders Ihren individuellen Anforderungen entsprechend manuell. Eine ausführliche Beschreibung zum Bearbeiten des Kalenders finden Sie im SAP-Hinweis 501670.

Der Fabrikkalender basiert auf dem Feiertagskalender. Aus diesem Grund muss zunächst die Gültigkeit des zugrunde liegenden Feiertagskalenders verlängert werden, bevor Sie die Gültigkeit des Fabrikkalenders verlängern. Nach dem Ändern der Einstellungen muss der Kalenderpuffer aktualisiert werden.

Im Allgemeinen empfiehlt SAP, in Produktivsystemen keine Änderungen am Fabrikkalender vorzunehmen. Alle Kalenderdaten sollten in einem Customizing-System verwaltet werden. Updates erfolgen über Transporte aus dem Customizing-System. Als Sonderfall kann ein Customizing-Mandant im Produktivsystem eingerichtet werden. Änderungen am Customizing-Mandanten betreffen dann direkt das Produktivsystem, da die Daten mandantenunabhängig sind.

Dienstag, 26. Januar 2010

SM50 - Snapshot / Screenshot alle 10 Sekunden

Wenn man auf einem System das Paket ST-PI installiert hat dann gibt es den Report

/SDF/MON welcher im Moment nur in Englisch verfügbar ist!

Mit diesem Report kann man Snapshots der SM50 Übersicht erzeugen - also welche Programme mit welchem SQL Select sind gerade gelaufen - und das wird alle 10 Sekunden weg gespeichert.

Somit kann man auch die Vergangenheit beauskunften....

Was macht das für einen Sinn?!

Na gut - jeder hatte sicher schon einmal das Problem gehabt das es zu einem Systemstillstand kam - mit dem dpmon hat man die SM50 Prozesse noch gesehen -
aber einen Screenshot hat man nicht mehr erzeugen können - oder es kommt in der Nacht zu einem fast Systemstillstand - z.b. die Anmeldung ist für eine paar Minuten
nicht mehr möglich und danach läuft wieder alles normal - mit diesem Programm
kann man Zeiten definiert wo die SM50 aufgezeichnet wird und man kann dann morgens
prüfen was da los war.

Natürlich lässt man diesen Monitor nicht immer laufen - sondern nur wenn man ein Problem lösen muss...

anbei ein paar Screenshots dazu:

Einstieg
























Übersicht der Auzgezeichneten Daten:







und mit einem doppelklick sieht man einmal die SM50 aus der Vergangenheit:

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

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.

Montag, 27. Juli 2009

Welche Userexits sind in einem SAP System aktiv

Es gibt manchmal die Anforderung das man herausfinden soll welche Userexits in einem SAP System in welchen Projekt aktiv sind!
Es gibt dazu den Report RCEXITCHECK - diesen kann man für eine Enwticklungsklasse starten - oder man lässt dieses Feld leer und dann bekommt man alle aktiven Userexits!
Besonders interresant für eine Upgrade - man kann sich vor den Upgrade ein Liste aller aktiven Exits erstellen und muss diese nach dem Upgrade wieder vergleichen - es passiert nämlich das bei einem Upgrade Extis deaktiviert werden.

Donnerstag, 23. Juli 2009

Job E2E_HK_CONTROLLER - Solution Manager EHP 01

Nach dem Upgrade auf den Solution Manager Release EHP 01 (SP 19) gibt es einen neuen Job mit dem Namen E2E_HK_CONTROLLER (Report SAPLE2E_EFWK_HOUSEKEEPING) - dieser läuft relativ lange und erzeugt immer zwei Kurzdumps mit dem Namen:

CALL_FUNCTION_REMOTE_ERROR
TIME_OUT

- das passiert nur dann wenn der Parameter rdisp/max_wprun_time noch auf den SAP Standard Wert 600 ist - man muss diesen erhöhen damit der Dialog Prozess (komischer Weise ruft dieser Batchjob gleichzeitg noch einen Dialogprozess auf) nicht nach 600 Sekunden abbricht und somit
auch der Batchjob abgebrochen wird.

Transaktion SE16N und seine gefahren

Ich glaube schön langsam kennt jeder im SAP Umfeld die Transaktion SE16N und seine gefahren!

Mit einem einfachen &sap_edit im Transaktionsfeld werden Tabellen änderbar die normal
nur für die Anzeige gedacht sind - bzw. normal über andere Wege gepflegt werden.

Auf der anderen Seite kann das gerade im Supportfall sehr hilfreich sein - auf der anderen Seite muss man diese Transaktion gerade auf einem Produktivsystem sehr genau einschränken.

Meines erachten darf kein User auf einem Produktivsystem diese Transaktion mit Änderungsberechtigung haben.

Wie kann man das nun sauber einschränken?!

Der User braucht folgende Berechtigungsobjekte damit er die SE16N ausführen kann und damit auch was zu ändern:

S_TCODE mit SE16N
S_DEVELOP mit der Aktität 02 und dem OBJTYPE=DEBUG

Somit einfach auf dem PROD System kein S_DEVELOP mit 01 bzw. 02 vergeben - dann hat man auch mit der SE16N kein Problem.

Ob jemand die Transkation bereits verwendet und damit Daten verändert hat kann man in den
Tabellen

SE16N_CD_DATA
SE16N_CD_KEY

prüfen -

Nachtrag 2013 - die SAP hat die Zusatzfunktion &SAP_EDIT mit einem Sicherheitshinweis deaktiviert - der Kunde muss nun selbst entscheiden ob diese Funktion in seinem System noch funktioniert oder nicht.

Es gibt dazu den Report RKSE16N_EDIT - damit kann man die Funktion aus und einschalten.

Mittwoch, 22. Juli 2009

Variante des Programms ist veraltet

Nach einem Upgrade bzw. ein Report wurde um ein Selektionsfeld geändert kommt es zu der Fehlermeldung "DB634" "Variante & des Programms & ist veraltet".

Es gibt dazu den Report RSVARDOC_610 (höher 6.00) bzw. RSVARDOC_46X (für kleiner 6.00) - mit diesem Report kann man die alten Varianten wieder herstellen.

SE38 starten - Report RSVARDOC_610 eingeben und ausführen - Programmname angeben und beim Feld S_VARI die Variante oder * eingeben - beim Feld SYSVAR das X entfernen

danach sollten sie die Variante wieder verwenden können - bzw. um das neue Feld anpassen.