on 07-20-2005 4:12 PM
Hello,
i'm searching a way to change the coding of my report that he can export the results in a textfile.
this report runs in background and every day? is it possible and how?
If the report is going to run in the background then you should write the output to a file on the application server using 'open dataset' , 'transfer to dataset' etc statements.
Cheers,
-Sanjeev
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I will show you my report, perhaps you can show me where and how i had to set these statements???
*&---------------------------------------------------------------------*
*& Report Z_HR_LDAP *
*& *
*&---------------------------------------------------------------------*
*& Dieser Reort dient zur Extraktion beliebiger Mitarbeiter in die *
*& korrespondierenden Benutzer des Active Directories. Die Identi- *
*& fikation der Benutzer erfolgt dabei anhand der im HR-System *
*& gespeicherten Personalnummern und dienen als LDAP-Suchfilter. *
*& Im Zuge dieses Reports werden ausgewählte Daten extrahiert und *
*& an die LDAP-Schnittstelle übergeben. Dazu dient der Aufruf des *
*& Funktionsbausteins "SPLDAP_RECEIVE_ATTRIBUTES". *
*& *
*& JEDE ÄNDERUNG ZIEHT EINE ANPASSUNG DER ABBILDUNGEN FÜR DIE SERVER- *
*& VERBINDUNGEN NACH SICH!!!! *
*&---------------------------------------------------------------------*
REPORT Z_HR_LDAP .
DATA: PLVAR LIKE OBJEC-PLVAR,
OBJID LIKE HROBJECT-OBJID,
KEYDA LIKE PLOG-BEGDA,
P_OBJECTS LIKE HROBJECT OCCURS 0,
P_OBJECTS_WA LIKE HROBJECT,
S_OBJECTS LIKE HROBJECT OCCURS 0,
S_OBJECTS_WA LIKE HROBJECT,
I1001_ITAB LIKE P1001 OCCURS 0 WITH HEADER LINE,
I1001_ITAB2 LIKE P1001 OCCURS 0 WITH HEADER LINE,
LDAPDESTINATION LIKE LDA_TYPES-LDAPDESTINATION,
LDAPSERVER LIKE LDA_TYPES-LDAPSERVER,
ldapinitialrun like lda_types-flag,
LOGSYS LIKE TBDLS-LOGSYS,
ERRORS LIKE BAPIRET2 OCCURS 0,
ERRORS_WA LIKE BAPIRET2,
total_attrs_l TYPE lda_att_lt,
total_attrs_x TYPE lda_att_xt.
* Struktur für kurze LDAP-Attribute
* Die Feldnamen müssen zur Basis-Struktur LDA-ATTR_S passen
*(für RFC-Aufruf)
TYPES: BEGIN OF TS_LDAP_ATTR_S,
PERNR LIKE LDA_TYPES-PERNR,
ATTR_TAB LIKE LDA_TYPES-ATTR_TABNAME,
ATTR_FIELD LIKE LDA_TYPES-ATTR_FIELDNAME,
VALUE LIKE LDA_TYPES-VALUE_S,
END OF TS_LDAP_ATTR_S.
data: attributes type ts_ldap_attr_s occurs 0,
attributes_wa type ts_ldap_attr_s.
* Verwendete Tabellen des SAP R/3-HR-Systems
* bei der Aufnahme neuer Felder muss hier explizit die Tabelle
* als Quelle angegeben werden!
tables: pernr, rfcdes, t527x, t503t, t529u.
* Infotypen aus denen Informationen extrahiert werden
* bei der Aufnahme neuer Felder muss hier explizit der Infotyp
* als Quelle angegeben werden!
infotypes: 0000, 0001, 0002, 0105.
* 0000: Massnahmen
* 0001: Organisatorische Zuordnung
* 0002: Daten zur Person
* 0105: Kommunikation (Zugehöriger SAP-Benutzer)
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: Testlauf default 'X' AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
* Eingebaefelder für die Angabe des Servers an den die extrahierten
* Daten gesendet werden sollen sowie verwendete RFC-Verbindung
Parameters: LDAPSRV Default 'bitte eingeben' LIKE LDA_TYPES-LDAPSERVER,
LDAPCON Default 'bitte eingeben' LIKE rfcdes-rfcdest.
* ---------------------------------------------------------------------
at selection-screen.
clear: p_objects[], s_objects[], attributes[].
* aktuelle PLanvariante holen
CALL FUNCTION 'RH_GET_PLVAR'
IMPORTING
PLVAR = PLVAR
EXCEPTIONS
no_plvar = 1
OTHERS = 2.
if sy-subrc <> 0.
MESSAGE E015(HRLDAP).
endif.
KEYDA = sy-datum.
* --------------------------------------------------------------------
* Füllen der internen Tabellen (infotypes: ...) zum Zeitpunkt get pernr
get pernr.
* Das Makro rp_provide-from-last liest den letzten in dem
* Auswahlzeitraum gültigen Satz, keyda = festgesetztes Startdatum und
* Enddatum
rp-provide-from-last p0000 '' keyda keyda.
rp-provide-from-last p0001 '' keyda keyda.
rp-provide-from-last p0002 '' keyda keyda.
rp-provide-from-last p0105 '' keyda keyda.
ATTRIBUTES_WA-PERNR = p0001-pernr.
*---------------------------------------------------------------------------------*
* *
* Abschnitt Datenextraktion für Identifikaton der Benutzer *
* *
*---------------------------------------------------------------------------------*
* Extraktion der Personalnummer für den Suchfilter
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'PERNR'.
SHIFT p0001-pernr LEFT DELETING LEADING '0'.
attributes_wa-value = p0001-pernr.
append attributes_wa to attributes.
* Extraktion des Systembenutzers, falls vorhanden
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'SAPUSERNAME'.
if p0105-uname NE ' '.
attributes_wa-value = p0105-usrid.
append attributes_wa to attributes.
else.
* Wenn kein Systembenutzer vorhanden ist, erfolgt die Belegung des Attributes
* mit dem Wert 0 --> Dieser wird dann beim Abgleich des SAP R/3-Benutzerstamms
* mit dem ADS nicht berücksichtigt
attributes_wa-value = 0.
append attributes_wa to attributes.
endif.
*---------------------------------------------------------------------------------*
* *
* Ende Abschnitt Datenextraktion für Identifikaton der Benutzer *
* *
*---------------------------------------------------------------------------------*
*##################################################################################
*---------------------------------------------------------------------------------*
* *
* Abschnitt Datenextraktion für allg. Daten der Benutzer *
* *
*---------------------------------------------------------------------------------*
* Vorname des Mitarbeiters
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'VORNAME'.
attributes_wa-value = p0002-vorna.
append attributes_wa to attributes.
* Nachname des Mitarbeiters
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'NACHNAME'.
attributes_wa-value = p0002-nachn.
append attributes_wa to attributes.
* Vollständiger Name (Titel und Name) für den "displayName"
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'VOLLSTNAME'.
CONCATENATE
p0002-vorna
p0002-nachn
INTO attributes_wa-value
SEPARATED BY space.
append attributes_wa to attributes.
*---------------------------------------------------------------------------------*
* *
* Ende Abschnitt Datenextraktion für allg. Daten der Benutzer *
* *
*---------------------------------------------------------------------------------*
*##################################################################################
*---------------------------------------------------------------------------------*
* *
* Abschnitt Datenextraktion für die organisatorische Zuordnung *
* *
*---------------------------------------------------------------------------------*
* Organisationseinheit
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'ABTEILUNG'.
* Achtung: hier muss die Prüftabelle verwendet werden, da im Infotyp 0001
* lediglich Schlüssel gespeichert werden, Beschreibungstexte werden in Prüftabellen
* zu den eindeutigen Nummern abgelegt
select single orgtx from t527x into attributes_wa-value
where sprsl = sy-langu
and orgeh = p0001-orgeh
and begda <= sy-datum
and endda >= sy-datum.
append attributes_wa to attributes.
if sy-subrc <> 0.
endif.
* Mitarbeiterkreis
* mögliche Daten wären Gruppenleiter, Senior Manager, Angestellte, Azubis, usw.
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'MAKREIS'.
* hier muss ebenfalls die Prüftabelle verwendet werden
select single ptext from t503t into attributes_wa-value
where persk = p0001-persk.
append attributes_wa to attributes.
* Kostenstelle
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'KOSTENSTELLE'.
* Abschneiden der führenden Nullen
SHIFT p0001-kostl LEFT DELETING LEADING '0'.
attributes_wa-value = p0001-kostl.
append attributes_wa to attributes.
* Beschäftigungsstatus
* mögliche Daten wären aktiv, ruhend, ausgetreten, Senior, usw.
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'BSTATUS'.
* hier muss ebenfalls die Prüftabelle verwendet werden
select single text1 from t529u into attributes_wa-value
where sprsl = sy-langu
and statv = p0000-stat2.
append attributes_wa to attributes.
* Datum der aktuellen Maßnahme
* Eintritts- oder Austrittsdatum
* wird über "map-split_char" mit BSTATUS auf das extensionAttribut8 abgebildet
attributes_wa-attr_tab = 'EMPLOYEE'.
attributes_wa-attr_field = 'DATUM'.
attributes_wa-value = p0001-begda.
append attributes_wa to attributes.
*????????????????????????????????????????????????????????????????????????????????????????*
*? ?*
*? Erläuterungen für nachträgliche Erweiterungen ?*
*? --------------------------------------------- ?*
*? ?*
*? Sind weitere Felder zur Extraktion vorgesehen, kann dies auf zwei Arten ?*
*? erfolgen: ?*
*? ?*
*? 1. Daten sind direkt extrahierbar ?*
*? ?*
*? attributes_wa-attr_tab = 'EMPLOYEE'. Bezeichnung für Struktur in der Abbildung ?*
*? attributes_wa-attr_field = 'Neues Feld' Bezeichnung für Feld in der Abbildung ?*
*? attributes_wa-value = p0002-vorna. Wert festlegen ?*
*? ?*
*? Syntax ist hier p<Infotyp>-Feldbezeichnung ?*
*? append attributes_wa to attributes Extrahiert Daten der Attributmenge zufügen ?*
*? ?*
*?**************************************************************************************?*
*? ?*
*? 2. Daten sind durch eindeutige Kennungen in Prüftabellen zu den Infotypen
*? abgelegt ?*
*? ?*
*? attributes_wa-attr_tab = 'EMPLOYEE'. Bezeichnung für Struktur in der Abbildung ?*
*? attributes_wa-attr_field = 'Neues Feld' Bezeichnung für Feld in der Abbildung ?*
*? select single <feld> from <Prüftabelle> into attributes_wa-value ?*
*? where sprsl = sy-langu Eindeutiger Sprachschlüssel ?*
*? and <Feld der Prüftabelle> = p<Infotyp>-<Feld des Infotyps> ?*
*? ?*
*? ?*
*? Werden neue Felder aus dem HR extrahiert muss aber dementsprechend die Abbildung ?*
*? erweitert werden, damit die Daten auch in das entsprechende ADS-Attribut gesendet ?*
*? werden. Hier sind für die STRUKTUR der Wert aus ..._tab und für das FELD der Wert ?*
*? aus ..._field zu setzen! ?*
*? ?*
*????????????????????????????????????????????????????????????????????????????????????????*
end-of-selection.
*##################################################################################
* Bestimmen des derzeitigen logischen Systems
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
OWN_LOGICAL_SYSTEM = LOGSYS
EXCEPTIONS
OWN_LOGICAL_SYSTEM_NOT_DEFINED = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
CONCATENATE SY-SYSID SY-MANDT INTO LOGSYS.
ENDIF.
loop at attributes into attributes_wa.
write: / ATTRIBUTES_WA-PERNR , attributes_wa-attr_tab.
write: attributes_wa-attr_field ,attributes_wa-value.
endloop.
IF Testlauf = 'X'.
EXIT.
ENDIF.
*#################################################################################
* Extrahierte Attribute an den LDAP-fähigen Verzeichnisserver übergeben
* dazu: Übergabe der extrahierten Attribute als Wertemenge an den
* Funktionsbaustein SPLDAP_RECEIVE_ATTRIBUTES
CALL FUNCTION 'SPLDAP_RECEIVE_ATTRIBUTES'
EXPORTING
LOGSYS = LOGSYS
SERVERID = LDAPSRV
ATTRIBUTES_S = attributes[]
INITIAL_RUN = LDAPINITIALRUN
ATTRIBUTES_L = TOTAL_ATTRS_L[]
ATTRIBUTES_X = TOTAL_ATTRS_X[]
IMPORTING
RETURN = ERRORS[].
IF NOT ERRORS[] IS INITIAL.
READ TABLE ERRORS INDEX 1 INTO ERRORS_WA.
MESSAGE ID ERRORS_WA-ID TYPE ERRORS_WA-TYPE
NUMBER ERRORS_WA-NUMBER
WITH ERRORS_WA-MESSAGE_V1 ERRORS_WA-MESSAGE_V2
ERRORS_WA-MESSAGE_V3 ERRORS_WA-MESSAGE_V4.
ENDIF. .
Message was edited by: Christoph Redlin
User | Count |
---|---|
95 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.