Report geschrieben - Fuba spinnt

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Report geschrieben - Fuba spinnt

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Hallöchen ich habe da ein großes Problem, ich habe einen Report der Daten aus dem HR liest und an die Funktion SPLDAP_RECEIVE_ATTRIBUTES schicken soll. Hier habe ich jetzt das Problem, dass bei der Ausführung der Fehler entsteht, dass er plötlich noch das Attribut_L haben will, was aber laut Vorlage nicht im Quelltext enthalten ist.

Code: Alles auswählen.


*&---------------------------------------------------------------------*
*& Report  Z_SAP_HR_LDAP_1                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_SAP_HR_LDAP_1                         .

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.

* structure for short ldap-attributes
* fieldnames must be equal to basis strucutre LDA-ATTR_S (for RFC_CALL)
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.

tables: pernr, rfcdes.
infotypes: 0001, 0002.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_TEST default 'X' AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.

Parameters: LDAPSRV Default 'ADS_TESTSERVER' LIKE LDA_TYPES-LDAPSERVER,
*            LDAPDEST Default 'LDAPDEST' LIKE rfcdes-rfcdest.
            LDAPDEST Default 'LDAP_SAP_ADS_DC_1' LIKE rfcdes-rfcdest.
* ---------------------------------------------------------------------
at selection-screen.

clear: p_objects[], s_objects[], attributes[].

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.

* --------------------------------------------------------------------
get pernr.

rp-provide-from-last p0001 '' keyda keyda.
rp-provide-from-last p0002 '' keyda keyda.
ATTRIBUTES_WA-PERNR = p0001-pernr.

* lastname
 attributes_wa-attr_tab = 'EMPLOYEE'.
 attributes_wa-attr_field = 'LASTNAME'.
 attributes_wa-value = p0002-nachn.
 append attributes_wa to attributes.

* firstname
 attributes_wa-attr_tab = 'EMPLOYEE'.
 attributes_wa-attr_field = 'FIRSTNAME'.
 attributes_wa-value = p0002-vorna.
 append attributes_wa to attributes.

* sAMAccountName
 attributes_wa-attr_tab = 'EMPLOYEE'.
 attributes_wa-attr_field = 'SAMACCOUNTNAME'.

* --------------------------------
* Using the employee number a unique name is created
* for the sAMAccountName
* --------------------------------

 concatenate 'E' p0001-pernr into attributes_wa-value.
 append attributes_wa to attributes.

* other attributes have to added here.
* for each additional attribute an appropriate field
* has to defined in the structure EMPLOYEE
* for example you can choose the following:
*
* attributes_wa-attr_tab = 'EMPLOYEE'.
* attributes_wa-attr_field = 'TELEPHONE'.
*
* if you want to transfer the telephone number
* of an employee from SAP HR to Active Directory
* In the web Application Server an appropriate mapping
* has to be defined using transaction LDAP for each new
* attribute (here called TELEPHONE).
* ---------------------------------------------------------------------

end-of-selection.

* get own logical system
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.
* TODO: Komprimierung sy-mandt: 3 -> 2 Stellen !!!
  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 P_TEST = 'X'.
 EXIT.
ENDIF.

* ---------------------------------------------------------------------
* send attributes to ldap client
* send attributes

CALL FUNCTION 'SPLDAP_RECEIVE_ATTRIBUTES'
* DESTINATION LDAPDEST
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.

Es ist beim Aufruf der Funktion SPLDAP_RECEIVE_ATTRIBUTES auskommentiert. Hol ich es mit rein, bekomme ich den Fehler, dass TOTAL_ATTRS_L[]nicht definiert ist.

Brauche dringend Hilfe. Weiß nicht wo der Fehler liegt.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
probier's doch mal mit einem:

Code: Alles auswählen.

DATA total_attrs_l TYPE lda_att_lt.
;)

PS:
warum Du umständlich einen Typ für 'attributes' definierst, statt direkt den Tabellentyp lda_att_st benutzt, verstehe ich nicht. :?:
Welches Release benutzt Ihr?
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Okay, danke das hat funktioniert. Bin noch nicht so lange mit ABAP beschäftigt. Er braucht jetzt noch das Attribut_X, ich werde dass mal genauso deklarieren wie du mir das eben mit dem anderen gezeigt hast.

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
mhm, verdammt. Wenn ich das Attribut synchron deklariere, dann meckert er jetzt dass das darauf folgende IMPORTING unbekannt ist und er IMPORT empfiehlt. Änder ich dass, dann meckert er das ERRORS[] unerwartet beenden wurde.

Ich seh nicht durch :cry:

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
achte aber bitte darauf, dass für attribute_x der Typ lda_att_xt benötigt wird.

PS:
Du solltest ohnehin versuchen, immer die Typdeklarationen zu verwenden, die in der Schnittstelle des FB benutzt wird.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Littlered hat geschrieben:mhm, verdammt. Wenn ich das Attribut synchron deklariere, dann meckert er jetzt dass das darauf folgende IMPORTING unbekannt ist und er IMPORT empfiehlt. Änder ich dass, dann meckert er das ERRORS[] unerwartet beenden wurde.

Ich seh nicht durch :cry:
da steht ein Punkt am Ende der Zeile. Der muss weg.

Code: Alles auswählen.

*      ATTRIBUTES_X = TOTAL_ATTRS_X[]. 

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
BOAH Ich bin dir zutiefst zu Dank verpflichtet. Endlich löft der Report ohne Dump - Meldungen. Jetzt kommt lediglich der Fehler, dass er die LDAP Verbindung nicht zum Server aufbauen kann.

Ich habe, da ich ein System >4.6 verwende bei der Funktion CALL SPLDAP_RECEIVE_ATTRIBUTES die Angabe der RFC Destination entfernt, da indem Fall diese lokal aufgerufen wird. So stand es jedenfalls in der Doku.

Jetzt werde ich mal auf Fehlersuche gehen warum er die Verbindung nicht aufbauen kann!!!! Hast vielleicht noch einen Tip?? :D

P.S.: ich verwende das Dokument "Creating users in Active Directory from employee data stored in SAP HR"

Beitrag von Littlered (ForumUser / 64 / 0 / 0 ) »
Okay der Report funktioniert. Das komische ist nur dass in der Log Fehler angezeigt werden, dass er Nutzer nicht anlegen kann weil sie bereits existieren. Dabei legt er sie dann erst an. Und sie tauchen später ja auch im ADS auf.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1895
Views
Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt
von PeterPaletti » 02.03.2021 12:25 • Verfasst in ABAP® Core
3
Antw.
3707
Views
Änderungsbelege werden nicht geschrieben
von Leonidas » 14.06.2012 13:24 • Verfasst in ABAP® Core
7
Antw.
4714
Views
Datensätze werden in Schattentabelle geschrieben
von ServantOfSonata » 04.12.2015 14:07 • Verfasst in ABAP® für Anfänger
0
Antw.
1140
Views
FuBa im Report / Methode
von peterpaulandmary » 26.03.2007 16:53 • Verfasst in ABAP Objects®
3
Antw.
2061
Views
DB Index per Report / FuBa löschen / aufbauen
von Meex » 23.12.2005 07:33 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742