on 04-28-2006 6:43 AM
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.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Have you tried
BAPI_PERSDATA_CREATE.
It is used to create personal data..
Regards,
Tanveer.
Please mark helpful answers..
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.