cancel
Showing results for 
Search instead for 
Did you mean: 

how to write a result of a report

Former Member
0 Kudos

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?

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

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

Former Member
0 Kudos

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