cancel
Showing results for 
Search instead for 
Did you mean: 

Migrating Employees to SAP HR

Former Member
0 Kudos

Hi,

I want to migrate the Employees details from an Active Directory LDAP system to SAP HR. I found some BAPIs using which Infotypes like Address, Pay, Communication details, etc can be created. But, however I don't see any option to create an employee using some BAPI.

I'm using SAP4.6c.

Is there any work around for migrating Employees from a different system to SAP HR ?

Please help me out with your suggestions.

Thanks & Regards,

Chandrasekhar.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Create a sample JCo application which will be calling the below BAPI for synchronizing the LDAP user to SAPHR

Note: The Import parameters A,B,C,D can be UserName etc ...

FUNCTION BAPI_SYNC_USER.

*"----

-


""Local Interface:

*" IMPORTING

*" VALUE(A) TYPE FLAG

*" VALUE(B) TYPE FLAG

*" VALUE(C) TYPE FLAG

*" VALUE(USER) TYPE XUBNAME OPTIONAL

*"----

-


data: da, db, dc,

ea, eb, ec,

fa, fb, fc,fd.

CASE A.

WHEN '1'.

da = 'X'.

db = ''.

dc = ''.

WHEN '2'.

da = ''.

db = 'X'.

dc = ''.

WHEN '3'.

da = ''.

db = ''.

dc = 'X'.

ENDCASE.

CASE B.

WHEN '1'.

ea = 'X'.

eb = ''.

ec = ''.

WHEN '2'.

ea = ''.

eb = 'X'.

ec = ''.

WHEN '3'.

ea = ''.

eb = ''.

ec = 'X'.

ENDCASE.

CASE C.

WHEN '1'.

fa = 'X'.

fb = ''.

fc = ''.

fd = ''.

WHEN '2'.

fa = ''.

fb = 'X'.

fc = ''.

fd = ''.

WHEN '3'.

fa = ''.

fb = ''.

fc = 'X'.

fd = ''.

WHEN '4'.

fa = ''.

fb = ''.

fc = ''.

fd = 'X'.

ENDCASE.

SUBMIT RSLDAPSYNC_USER USING SELECTION-SCREEN 1000

with SERVERID eq 'LDAP_BWSERVER'

with LDAPCON eq 'LDAP_BWSERVER'

with USERIDS-LOW eq USER

with FLAG11 eq da

with FLAG12 eq db

with FLAG10 eq dc

with FLAG21 eq ea

with FLAG22 eq eb

with FLAG23 eq ec

with FLAG31 eq fa

with FLAG32 eq fb

with FLAG33 eq fc

with FLAG34 eq fd

EXPORTING LIST TO MEMORY

AND RETURN .

ENDFUNCTION.

*&----


*

*& Report RSLDAPSYNC_USER *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT rsldapsync_user.

INCLUDE rsldapsync_usertop.

DATA:

gf_class_dummy TYPE usr02-class,

gf_ustyp_dummy TYPE usr02-ustyp.

SELECTION-SCREEN BEGIN OF BLOCK serverid WITH FRAME TITLE text-004.

PARAMETERS serverid LIKE ldapserver-serverid OBLIGATORY.

PARAMETERS ldapcon LIKE ldapgatew-rfcdest.

SELECTION-SCREEN END OF BLOCK serverid.

SELECTION-SCREEN BEGIN OF BLOCK userid WITH FRAME TITLE text-009.

SELECT-OPTIONS userids FOR gf_userid.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS gf_usflt TYPE char1 USER-COMMAND dummy.

SELECTION-SCREEN COMMENT 3(72) com_usfl FOR FIELD gf_usflt.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(72) com_warn MODIF ID wrn

FOR FIELD gf_usflt.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS class FOR gf_class_dummy.

SELECT-OPTIONS ustyp FOR gf_ustyp_dummy NO INTERVALS.

SELECTION-SCREEN END OF BLOCK userid.

SELECTION-SCREEN BEGIN OF BLOCK topf1 WITH FRAME TITLE text-038.

PARAMETERS flag11 TYPE ldap_flag RADIOBUTTON GROUP rad1.

PARAMETERS flag12 TYPE ldap_flag RADIOBUTTON GROUP rad1.

PARAMETERS flag10 TYPE ldap_flag RADIOBUTTON GROUP rad1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK topf1.

SELECTION-SCREEN BEGIN OF BLOCK topf2 WITH FRAME TITLE text-039.

PARAMETERS flag21 TYPE ldap_flag RADIOBUTTON GROUP rad3.

PARAMETERS flag22 TYPE ldap_flag RADIOBUTTON GROUP rad3.

PARAMETERS flag23 TYPE ldap_flag RADIOBUTTON GROUP rad3 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK topf2.

SELECTION-SCREEN BEGIN OF BLOCK topf3 WITH FRAME TITLE text-040.

PARAMETERS flag31 TYPE ldap_flag RADIOBUTTON GROUP rad4.

PARAMETERS flag32 TYPE ldap_flag RADIOBUTTON GROUP rad4.

PARAMETERS flag33 TYPE ldap_flag RADIOBUTTON GROUP rad4.

PARAMETERS flag34 TYPE ldap_flag RADIOBUTTON GROUP rad4 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK topf3.

SELECTION-SCREEN BEGIN OF BLOCK perf WITH FRAME TITLE text-044.

PARAMETERS flagx TYPE ldap_flag AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK perf.

  • Indicator that report called from external.

  • Will not use SY-CALLD to control behavior because it has drawbacks:

  • a) Also set during batch processing

  • b) SE38, Execute, F3 (back), Execute --> SY-CALLD set

  • Effects of the parameter:

  • a) Log data are exported to memory

  • b) Log data are not automatically shown upon exit

  • c) Log data are persisted to DB only if something was changed

  • or warning or error messages were collected.

PARAMETERS: gf_calld TYPE xflag NO-DISPLAY.

  • Language indicator for external call (needed to have the free texts

  • in the right language). Note that the SET LOCALE LANGUAGE statement

  • does not change the language setting for MESSAGE, so the caller

  • is still in the need to process SY-messages language dependent.

PARAMETERS: gf_langu TYPE sylangu NO-DISPLAY.

INCLUDE rsldapsync_userf01.

*----

-


  • Programmstart

*----

-


INITIALIZATION.

com_usfl = 'Apply user selection to the directory'(073). "#EC *

CALL FUNCTION 'ICON_CREATE'

EXPORTING

name = 'ICON_WARNING'

text = 'Take notice of SAP Note 748490'(074) "#EC *

info = 'Warning'(075) "#EC *

IMPORTING

RESULT = com_warn

EXCEPTIONS

OTHERS = 0.

CALL FUNCTION 'LDAP_VALID_SERVERID'

EXPORTING

applic = 'USER'

IMPORTING

serverid = serverid

EXCEPTIONS

nothing_found = 0

OTHERS = 0.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR ldapcon.

PERFORM f4_gateway100 IN PROGRAM sapmldap.

AT SELECTION-SCREEN OUTPUT.

IF gf_usflt IS INITIAL.

LOOP AT SCREEN.

IF screen-group1 = 'WRN'.

screen-active = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

START-OF-SELECTION.

  • Time mark for report start.

GET TIME STAMP FIELD gf_time_start.

  • The calls to LOG_PERF in the report calculate the difference between

  • the current time and the parameter given in the interface. So the

  • variable used for this purpose must be set to the start mark.

gf_time_current = gf_time_start.

SELECT * FROM ldapmap12 INTO TABLE gt_ldapmap12

WHERE serverid = serverid

ORDER BY mapkey nr.

SELECT * FROM ldapmap62 INTO TABLE gt_ldapmap62

WHERE serverid = serverid

ORDER BY mapkey.

SELECT * FROM dbobj INTO TABLE gt_dbobj

WHERE objecttype = 'USER'.

  • Set language environment, if required

IF NOT gf_langu IS INITIAL.

SET LANGUAGE gf_langu.

ENDIF.

*----

-


  • Application Log anlegen

*----

-


PERFORM log_create.

IF flagx = 'X'.

PERFORM log_perf USING text-051

CHANGING gf_time_current.

ENDIF.

*----

-


  • Anfang - Zentrale Schleife

*----

-


DATA:

lf_connected(1) TYPE c.

DO 1 TIMES.

*----

-


  • Check existence of LDAP Server and that it belongs to application USER

*----

-


DATA:

lf_application TYPE ldap_appl.

SELECT SINGLE

appl

INTO

(lf_application)

FROM

ldapserver

WHERE

serverid = serverid.

IF sy-subrc <> 0.

MESSAGE e040(ldap) WITH serverid INTO dummy.

PERFORM log_add.

EXIT.

ELSE.

IF lf_application <> 'USER'.

MESSAGE e043(ldapsync)

WITH serverid lf_application INTO dummy.

PERFORM log_add.

EXIT.

ENDIF.

ENDIF.

*----

-


  • Check mapping for consistency

*----

-


PERFORM check_mapping

USING

serverid

CHANGING

gf_rc.

IF gf_rc <> 0.

EXIT.

ENDIF.

*----

-


  • Verbindung zum Verzeichnis herstellen

*----

-


PERFORM dir_connect USING serverid CHANGING gf_rc.

IF gf_rc <> 0. EXIT. ENDIF.

IF flagx = 'X'.

PERFORM log_perf USING text-052

CHANGING gf_time_current.

ENDIF.

lf_connected = 'X'.

*----

-


  • Menge der Objekte in Verzeichnis und Datenbank ermitteln

*----

-


SELECT * FROM ldapsync INTO TABLE gt_objects_sync

WHERE serverid = serverid.

SORT gt_objects_sync BY serverid objkey.

IF flagx = 'X'.

PERFORM log_perf USING text-064

CHANGING gf_time_current.

ENDIF.

  • Read data from directory.

  • If directory contais duplicates in the filterattribute, these

  • appear as single lines in GT_OBJECTS_DIR still (so that SYNC_CALC

  • considers them correctly), but are also

  • contained in the GT_DIR_DUPLICATES table with details. It is the

  • obligation of the report to exclude these records if they are

  • to be processed.

PERFORM dir_search

USING

serverid

gt_objects_sync

CHANGING

gt_objects_dir

gt_dir_duplicates

gf_rc.

IF gf_rc <> 0. EXIT. ENDIF.

IF flagx = 'X'.

PERFORM log_perf USING text-053

CHANGING gf_time_current.

ENDIF.

PERFORM db_search USING serverid gt_objects_sync

CHANGING gt_objects_db gf_rc.

IF gf_rc <> 0. EXIT. ENDIF.

IF flagx = 'X'.

PERFORM log_perf USING text-054

CHANGING gf_time_current.

ENDIF.

*----

-


  • Erforderliche Synchronisationsrichtungen ermitteln

*----

-


READ TABLE gt_ldapmap62 WITH KEY syncout = 'X'.

IF sy-subrc = 0. gf_attrs_exp = 'X'. ENDIF.

READ TABLE gt_ldapmap62 WITH KEY syncin = 'X'.

IF sy-subrc = 0. gf_attrs_imp = 'X'. ENDIF.

*----

-


  • Arbeitsvorräte anlegen

*----

-


  • Object lists must be sorted by OBJKEYSAP because the determination

  • of the three classes (only in DIR, only in DB, both) uses OBJKEYSAP

  • and BINARY SEARCH for mutual table access.

SORT gt_objects_dir BY objkeysap.

SORT gt_objects_db BY objkeysap.

PERFORM sync_calc USING gt_objects_dir gt_objects_db

gf_attrs_exp gf_attrs_imp

CHANGING gt_objects_both gt_objects_dir_only

gt_objects_db_only.

  • Users that were excluded from the GT_OPBJECTS_DB due to

  • CLASS or USTYP might appear now in the GT_OBJECTS_DIR_ONLY section

  • if they were found in the directory. If such a user exists in USR02,

  • it must be removed (because in this case obviously the user in

  • USR02 does not match the selection criteria).

IF NOT gt_objects_dir_only IS INITIAL.

DATA:

lt_all_users TYPE HASHED TABLE OF xubname

WITH UNIQUE KEY table_line.

SELECT

bname AS table_line

INTO

TABLE lt_all_users

FROM

usr02

WHERE

bname IN userids.

DATA:

ls_user TYPE ty_s_syncobject.

LOOP AT gt_objects_dir_only INTO ls_user.

READ TABLE lt_all_users

WITH TABLE KEY table_line = ls_user-objkeysap

TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

DELETE gt_objects_dir_only.

ENDIF.

ENDLOOP.

ENDIF.

IF flagx = 'X'.

PERFORM log_perf USING text-055

CHANGING gf_time_current.

ENDIF.

*----

-


  • Attributmengen bilden

*----

-


  • Which fields must be exported and imported

CLEAR: gt_attrs_i, gt_attrs_o.

LOOP AT gt_ldapmap62 WHERE syncin = 'X' OR syncout = 'X'.

CLEAR: gs_attrs.

gs_attrs-var = gt_ldapmap62-var.

gs_attrs-fld = gt_ldapmap62-fld.

READ TABLE gt_dbobj WITH KEY var = gt_ldapmap62-var

fld = gt_ldapmap62-fld.

IF sy-subrc = 0 AND NOT gt_dbobj-hexflag IS INITIAL.

gs_attrs-typ = 'X'.

ELSE.

gs_attrs-typ = 'C'.

ENDIF.

IF gt_ldapmap62-syncin = 'X'.

APPEND gs_attrs TO gt_attrs_i.

ENDIF.

IF gt_ldapmap62-syncout = 'X'.

APPEND gs_attrs TO gt_attrs_o.

ENDIF.

ENDLOOP.

SORT gt_attrs_o BY var fld typ.

DELETE ADJACENT DUPLICATES FROM gt_attrs_o.

SORT gt_attrs_i BY var fld typ.

DELETE ADJACENT DUPLICATES FROM gt_attrs_i.

  • Which fields are required for creation of directory entries

CLEAR: gt_attrs_req_ldap.

LOOP AT gt_ldapmap12 WHERE mflag = 'X'

OR rflag = 'X'

OR fflag = 'X'.

CLEAR: gs_attrs.

gs_attrs-var = gt_ldapmap12-var.

gs_attrs-fld = gt_ldapmap12-fld.

gs_attrs-typ = 'C'.

READ TABLE gt_dbobj WITH KEY var = gt_ldapmap12-var

fld = gt_ldapmap12-fld.

IF sy-subrc = 0 AND NOT gt_dbobj-hexflag IS INITIAL.

gs_attrs-typ = 'X'.

ELSE.

gs_attrs-typ = 'C'.

ENDIF.

APPEND gs_attrs TO gt_attrs_req_ldap.

ENDLOOP.

  • Which fields are required for creation of database entries

CLEAR: gt_attrs_req_db[].

LOOP AT gt_dbobj WHERE mandflag = 'X'.

CLEAR: gs_attrs.

gs_attrs-var = gt_dbobj-var.

gs_attrs-fld = gt_dbobj-fld.

IF gt_dbobj-hexflag IS INITIAL.

gs_attrs-typ = 'C'.

ELSE.

gs_attrs-typ = 'X'.

ENDIF.

APPEND gs_attrs TO gt_attrs_req_db.

ENDLOOP.

IF flagx = 'X'.

PERFORM log_perf USING text-056

CHANGING gf_time_current.

ENDIF.

*----

-


  • Objekte, die im Verzeichnis und in der Datenbank vorhanden sind

*----

-


log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_both LINES lf_count.

lf_dummy = lf_count.

CONDENSE lf_dummy.

CONCATENATE text-038 lf_dummy INTO lf_dummy SEPARATED BY space.

PERFORM log_text USING lf_dummy.

CASE 'X'.

WHEN flag11 OR flag12. "Objekte synchronisieren

gt_attrs_r = gt_attrs_i.

gt_attrs_w = gt_attrs_o.

DELETE gt_attrs_r WHERE var = 'PASSWORD' AND fld = 'BAPIPWD'.

DELETE gt_attrs_w WHERE var = 'PASSWORD' AND fld = 'BAPIPWD'.

LOOP AT gt_objects_both INTO gs_objects_both.

PERFORM sync_db_dir USING serverid gs_objects_both

gt_attrs_w gt_attrs_r.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_update_both_success.

CONDENSE dummy.

CONCATENATE text-014 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_update_db_success.

CONDENSE dummy.

CONCATENATE text-100 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_update_ldap_success.

CONDENSE dummy.

CONCATENATE text-016 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_update_failed.

CONDENSE dummy.

CONCATENATE text-017 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_update_not_necessary.

CONDENSE dummy.

CONCATENATE text-018 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag10. "ignorieren

log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_both LINES gf_ignored.

dummy = gf_ignored.

CONDENSE dummy.

CONCATENATE text-019 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

ENDCASE.

IF flagx = 'X'.

PERFORM log_perf USING text-070

CHANGING gf_time_current.

ENDIF.

*----

-


  • Objekte, die nur im Verzeichnis vorhanden sind

*----

-


log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_dir_only LINES lf_count.

lf_dummy = lf_count.

CONDENSE lf_dummy.

CONCATENATE text-039 lf_dummy INTO lf_dummy SEPARATED BY space.

PERFORM log_text USING lf_dummy.

CASE 'X'.

WHEN flag21. "in DB anlegen

CLEAR: gt_attrs_r.

APPEND LINES OF gt_attrs_req_db TO gt_attrs_r.

DELETE gt_attrs_r WHERE var = 'PASSWORD'

AND fld = 'BAPIPWD'.

APPEND LINES OF gt_attrs_i TO gt_attrs_r.

SORT gt_attrs_r.

DELETE ADJACENT DUPLICATES FROM gt_attrs_r.

CLEAR: gt_attrs_w.

APPEND LINES OF gt_attrs_req_db TO gt_attrs_w.

APPEND LINES OF gt_attrs_i TO gt_attrs_w.

SORT gt_attrs_w.

DELETE ADJACENT DUPLICATES FROM gt_attrs_w.

LOOP AT gt_objects_dir_only INTO gs_objects_dir_only.

PERFORM db_add USING serverid gs_objects_dir_only

gt_attrs_r gt_attrs_w.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_create_db_success.

CONDENSE dummy.

CONCATENATE text-021 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_create_db_failed.

CONDENSE dummy.

CONCATENATE text-022 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag22. "in LDAP löschen

LOOP AT gt_objects_dir_only INTO gs_objects_dir_only.

PERFORM dir_delete USING serverid gs_objects_dir_only.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_delete_ldap_success.

CONDENSE dummy.

CONCATENATE text-023 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_delete_ldap_failed.

CONDENSE dummy.

CONCATENATE text-024 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag23. "ignorieren

log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_dir_only LINES gf_ignored.

dummy = gf_ignored.

CONDENSE dummy.

CONCATENATE text-025 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

ENDCASE.

IF flagx = 'X'.

PERFORM log_perf USING text-072

CHANGING gf_time_current.

ENDIF.

*----

-


  • Objekte, die nur in der Datenbank vorhanden sind

*----

-


log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_db_only LINES lf_count.

lf_dummy = lf_count.

CONDENSE lf_dummy.

CONCATENATE text-040 lf_dummy INTO lf_dummy SEPARATED BY space.

PERFORM log_text USING lf_dummy.

CASE 'X'.

WHEN flag31. "in LDAP anlegen

CLEAR: gt_attrs_r.

APPEND LINES OF gt_attrs_req_ldap TO gt_attrs_r.

APPEND LINES OF gt_attrs_o TO gt_attrs_r.

SORT gt_attrs_r.

DELETE ADJACENT DUPLICATES FROM gt_attrs_r.

CLEAR: gt_attrs_w.

APPEND LINES OF gt_attrs_o TO gt_attrs_w.

SORT gt_attrs_w.

DELETE ADJACENT DUPLICATES FROM gt_attrs_w.

LOOP AT gt_objects_db_only INTO gs_objects_db_only.

PERFORM dir_add USING serverid gs_objects_db_only

gt_attrs_r gt_attrs_w.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_create_ldap_success.

CONDENSE dummy.

CONCATENATE text-031 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_create_ldap_failed.

CONDENSE dummy.

CONCATENATE text-032 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag32. "in DB löschen

LOOP AT gt_objects_db_only INTO gs_objects_db_only.

PERFORM db_delete USING serverid gs_objects_db_only.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_delete_db_success.

CONDENSE dummy.

CONCATENATE text-033 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_delete_db_failed.

CONDENSE dummy.

CONCATENATE text-034 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag33. "in DB sperren

LOOP AT gt_objects_db_only INTO gs_objects_db_only.

PERFORM db_lock USING serverid gs_objects_db_only.

ENDLOOP.

log_context-level1 = text-057.

log_context-objkey = text-058.

dummy = gf_lock_db_success.

CONDENSE dummy.

CONCATENATE text-035 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

dummy = gf_lock_db_failed.

CONDENSE dummy.

CONCATENATE text-036 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

WHEN flag34. "ignorieren

log_context-level1 = text-057.

log_context-objkey = text-058.

DESCRIBE TABLE gt_objects_db_only LINES gf_ignored.

dummy = gf_ignored.

CONDENSE dummy.

CONCATENATE text-037 dummy INTO dummy SEPARATED BY space.

PERFORM log_text USING dummy.

ENDCASE.

IF flagx = 'X'.

PERFORM log_perf USING text-071

CHANGING gf_time_current.

ENDIF.

*----

-


  • Laufzeitmessung -> Ergebnis ausgeben

*----

-


PERFORM log_perf USING text-041

CHANGING gf_time_start.

*----

-


  • Ende - Zentrale Schleife

*----

-


ENDDO.

*----

-


  • Disconnect from directory

*----

-


IF NOT lf_connected IS INITIAL.

PERFORM dir_disconnect USING serverid CHANGING gf_rc.

IF flagx = 'X'.

PERFORM log_perf USING text-059

CHANGING gf_time_current.

ENDIF.

ENDIF.

*----

-


  • Write messages about duplicate records in directory for which

  • no message was written yet.

*----

-


log_context-level1 = text-057.

log_context-objkey = text-061.

DATA:

ls_duplicate TYPE ty_s_dir_duplicates.

LOOP AT gt_dir_duplicates INTO ls_duplicate

WHERE message_sent IS INITIAL.

MESSAGE w018(ldapsync)

WITH

ls_duplicate-dn1

ls_duplicate-dn2

ls_duplicate-objkeysap

ls_duplicate-number_duplicates

INTO

dummy.

PERFORM log_add.

ENDLOOP.

*----

-


  • Application Log speichern

*----

-


PERFORM log_save.

*----

-


  • Application Log anzeigen

*----

-


IF sy-batch IS INITIAL AND gf_calld IS INITIAL.

PERFORM log_display.

ENDIF.

*----

-


  • F4-Hilfe für LDAP-Server

*----

-


AT SELECTION-SCREEN ON VALUE-REQUEST FOR serverid.

CALL FUNCTION 'LDAP_SERVERID_F4'

EXPORTING

applic = 'USER'

IMPORTING

serverid = serverid.

Former Member
0 Kudos

Hi,

Have you tried

BAPI_PERSDATA_CREATE.

It is used to create personal data..

Regards,

Tanveer.

Please mark helpful answers..

Former Member
0 Kudos

HI

GOOD

I NEVER FACED SUCH KIND OF ERROR BUT I HOPE IT CAN BE DONE USING IDOC , HAVE YOU TRIED WITH THE IDOCS.

THANKS

MRUTYUN