Function module in Infotyp which checks if identical data already exists
I want to create a new hr master data (tcode pa30) for Hans Müller in e.g Company X and fill out the necessary fields in Infotype 0001,0002 (Name, Birthdate, etc. ) u2013 done !
After creating the new hr master data for Hans Müller Iu2019d like to fill out a special Infotyp (0032) namely Internal Data.
PROBLEM:
While filling out the IT 0032 I do not know if the person - Iu2019ve created a new master data for - is already existing in the system ( but in other e.g Company Z) .
So what I need is a function modul in the Infotype 0032 which checks if there is already a person with the same data existing in any company (the whole data bank) using 3 characters from Infotype 0002 (Personal Data) namely , First name, Last name, Birthd. .
And if a person with the same first name ,last name and birthday is already existing the function module should link to that one or just show me a information.
Also tried to show you my problem on a graphic,
Function_Module_Infotyp0032.png
I hope you can help me. I would be very thankful for any hints , information or programming approach.
Regards
Sean
the problem with your solution approach is that there could be different pers. no. for the same person in my issue.
If I understood you well, that won't be a problem, since you already know which PERNR to use (The one you are using to update IT0032) In that case you only have to check if for that PERNR more than one record in PA0001 with different Company Code is present.
If your problem is that another person with the same name and same date of birth is active in the system with different Company Codes it would be similar.
For instance: Let's say that you find 2 different PERNRs for a given Name and Date of Birth in PA0002, then you can check IT0001 and look for the BUKRS value for those 2 Personel Numbers. If the values found are different you can raise the error message or whatever you need.
Similar Messages
-
Problem using function module for infotype 21
hi
im uploading the infotype 21 (family details) through function module hr_infotype_operations. i found that infotype 0106 (family/related person)
is a secondary infotype and that a record is created for 0106 ,everytime you create a record in 21. so i upload the family data of an employee using the function module for infotype 21 initially. and then fetch the same record from the table pa0106 and modify the same record with other information.
for example : u have the address details of a dependent(father subtype 11) in infotype 21. this address data is stored in the table pa0106 . im not able to modify the record for infotype 0106 using the function module 0106.
i would like to know the reason for the same. Is it because that infotype 0106 is a secondary infotype and u cannot modify the record using the fn module..?/
thanks
sridharanHi Sir,
I am also facing the same issue...i need to update dependents Information Date Of Birth n Perid(Which is stored in IT0106)...in IT 0021..
Kindly correct my code....
I am using the following code for this...
data: w_return type bapireturn1.
data: p0021_struc TYPE p0021,
p0106_struc TYPE p0106,
p_pskey TYPE pskey.
start-of-selection.
get pernr.
p0021_struc = p0021.
p0021_struc-favor = 'Gaurav'.
p0021_struc-fgbdt = '05/10/1955'.
Move p0021_struc-favor to p0021-favor.
p0106_struc = p0106.
p0106_struc-stras = '2235 BOmbay Road'.
p0106_struc-perid = '123456789'.
MOVE p0106_struc-stras to p0106-stras.
Enqueue personnel number
call function 'BAPI_EMPLOYEE_ENQUEUE'
exporting
number = pernr-pernr
importing
return = w_return.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = p_pskey-infty
number = p_pskey-pernr
subtype = p_pskey-subty
objectid = p_pskey-objps
lockindicator = p_pskey-sprps
validityend = p0021-endda " '99991231'
validitybegin = p0021-begda
record = p0021_struc
operation = 'mod'
tclas = 'A'
dialog_mode = '2'
nocommit = p_test
VIEW_IDENTIFIER = '07' "p0003-viekn
secondary_record = p0106_struc
IMPORTING
return = w_return
key = familykey
EXCEPTIONS
OTHERS = 0.
Enqueue personnel number
call function 'BAPI_EMPLOYEE_DEQUEUE'
exporting
number = pernr-pernr
importing
return = w_return. -
Function module to change the SRM Purchase order data
Hi
Is there any function module in SRM which calls the BBP_DOC_CHANGE_BADI method BBP_PO_CHANGE so that we could change the PO data via dubugging which changes the PO in SRM as well as in the backend in Extended classic scenario.
Thanks
Krishna.BBP_PD_PO_CHANGE <- that one
BBP_PD_PO_SAVE
COMMIT WORK.
The others to persist the change into the database -
SSF function module to disable pop window but OTF data is not coming.
Hi Experts,
My requirement is to get the PDF from the SSF function module and email it and i don want to display the pop option
I passed these parameters
1.no_dialog = c_x.
2.-preview = c_x.
3.-no_open = c_x.--|
4.no_close = c_x.---| if i add these two conditions i don get printer pop up but i don get the data for " job_output_info " also.
to this function module ,
Please tell me how to get data into " job_output_info " import parameter by not displaying the pop up for printer.
Thanks and Regards in advance.Hello,
we did it using the following code.
DATA: w_ctrlop TYPE SSFCTRLOP,
w_return TYPE SSFCRESCL.
DATA ls_job_output_info TYPE ssfcrescl.
DATA p_pdf_len TYPE i.
DATA pt_tlines TYPE TABLE OF tline.
(function_name is the name of the smartform)
W_CTRLOP-GETOTF = 'X'.
W_CTRLOP-NO_DIALOG = 'X'.
CALL FUNCTION function_name
EXPORTING
CONTROL_PARAMETERS = W_CTRLOP
USER_SETTINGS = 'X'
IMPORTING
JOB_OUTPUT_INFO = ls_job_output_info
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH pt_tlines.
CLEAR: p_pdf_len.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = p_pdf_len
TABLES
OTF = ls_job_output_info-otfdata
LINES = pt_tlines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = p_pdf_len
filename = p_filename
filetype = 'BIN'
TABLES
data_tab = pt_tlines
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE s614(zef) DISPLAY LIKE 'E'.
ENDIF. -
For a function module how can I find its assigned data source name?
Hi BW Gurus,
If i know the data source name then the assigned fn. module/Table/Infoset I could find from RSO2. But for function module How do I know its assigned data source name?
Thanks a lot for the response.
Regards
VenHi Ram,
In SE16, enter the table name as ROOSOURCE and in contents choose field EXTRACTOR for selection and enter the name of the function module.
It will return the list of datasources where the function module has been used.
Best Regards,
Ankit Agrawal -
How to check if the file already exists in the client directory
Hi all.
I'm on devsuite 10g. I'm using webutil to download files from DB using webutil function db_to_client.
What I need is to check if the file already exists in the client directory and if yes to display a message to ask the user if he wants to overwrite or no. How can I make this???
Here is the code that I'm using to download the file.
Thanks all for the collaboration.
Fabrizio
declare
file_path varchar2(2000) := null;
BEGIN
/** I ask where saving the file on the client machine **/
file_path:= webutil_file.file_selection_dialog
(directory_name => null,
file_name => :bin_docs.name,
file_filter => '',
title => 'Saving file',
dialog_type => save_file, --save_file
select_file => TRUE);
/** I download the file from DB to client **/
if webutil_file_transfer.DB_To_Client_With_Progress
( file_path ,
'BIN_DOCS',
'DOC' ,
'doc_id = '||:bin_docs.doc_id,
'Downloading file',
' '||:bin_docs.name) then
msg_alert('Download del file avvenuto con successo','I',false);
else
msg_alert('Si è verificato il seguente errore in fase di download '||SQLERRM,'I',false);
end if;
end;How about something like the below:
Note: I have a yes/no alert to asking if they want to over-write the existing file.
DECLARE
file_path VARCHAR2(2000) := null;
over_write BOOLEAN := TRUE;
BEGIN
/** I ask where saving the file on the client machine **/
file_path:= webutil_file.file_selection_dialog
(directory_name => null,
file_name => :bin_docs.name,
file_filter => '',
title => 'Saving file',
dialog_type => save_file, --save_file
select_file => TRUE);
IF webutil.file_exists(file_path) THEN
/** check a file by the same name exists in the selected directory **/
IF show_alert('Ask_overright') != alert_button1 THEN
/** If we say no then set over_write value to false **/
over_write := FALSE;
END IF;
END IF;
IF over_write THEN
/** I download the file from DB to client **/
IF webutil_file_transfer.DB_To_Client_With_Progress
( file_path ,
'BIN_DOCS',
'DOC' ,
'doc_id = '||:bin_docs.doc_id,
'Downloading file',
' '||:bin_docs.name) then
msg_alert('Download del file avvenuto con successo','I',false);
ELSE
msg_alert('Si è verificato il seguente errore in fase di'
||' download '||SQLERRM,'I',false);
END IF
END IF;
END;
cheers
Q -
Try to check whether a file already exists on disk by using fileExists
Hy all,
i try to check whether a file already exists on disk in my
Action scirpt.
I found this link about fileExists:
link
So i tried somethink like this in my code, but without
success...
if(fl.fileExists("file:///C|/toto.txt"))
{gotoAndPlay(2);}
else
{gotoAndPlay(3);}
Is it not the right syntax?
Thank you for your help.Did you build and application from the swf with mProjector?
The only
way this and other mProjector functions will get called is to
post
process your swf into and application (exe / app) using
mProjector.
you can get a free trial here
http://www.screentime.com/software/mprojector/demo.html
On 2007-01-08 16:02:42 -0500, "Alexis Schneider"
<[email protected]> said:
John Pattenden
Screentime Media - Flash Tools since 1997
http://www.screentime.com -
Error when creating a user - IAM-3010183 : An error occurred while checking if a user already exists with the Common Name generated.
in OIM 11g R2
Message was edited by: 2b3c0737-074f-48d0-a760-e24e3ed9a37c -
Reg: Function Module thats used to check the status of JOBS and mail it
Hi Experts,
Is there any Standard Function module thats going to find the status of the jobs and mail this status to specied email ID in .xls format. While checking status function module should give whether job is - Aborted, Successful, Running, Waiting, Locked, Error, Warning, Starting Date, Ending Date of the Job.
Please help me,Hello Nagaraj,
You can find out the status of a job with the SHOW_JOBSTATE function module. You provide this function module with a job name and job number. It returns one of the six possible statuses of the job:
ABORTED TYPE C,
FINISHED TYPE C,
PRELIMINARY TYPE C,
READY TYPE C,
RUNNING TYPE C,
SCHEDULED TYPE C.
Following is the link for the same:
http://help.sap.com/saphelp_sm32/helpdata/en/fa/096e10543b11d1898e0000e8322d00/content.htm
Warm Regards,
Riki Dash -
Generic function module for delta - which FM ?
Hi all,
I want to create a custom generic datasource in R3 which uses a function module for delta extraction. This is straight forward for full extract (copy FM RSAX_BIW_GET_DATA_SIMPLE - I already did this and have a full extraction working to BW). However I need to extract delta - and the above function module does not have example code for that (I have seen some forum posts that it 'can' be used - but this looks like a pseudo get around where the delta field name is passed in I_T_SELECT).
FM RSVD_BW_GET_DELTA_DATA seems to be an example code of a FM which can allow delta (i.e. manually codes how to fill date/time stamp information). However when I code this and try test in RSA3 it seems to try to populate the delta selection field before calling my function module! I need it to call my function and allow the function to specifiy the date criteria.
Can anyone help with an example of how this should best be done ?
Or can it only be done in a pseudo form using 'RSAX_BIW_GET_DATA_SIMPLE' example FM.
Note: I have setup the RSO2 datasource to allow delta.
Also - I have spent several hours searching the forum - but please answer with a link if you think it does answer exactly this problem.
Thanks for any help
MartinHi again,
Have had a few requests for the code I used - I created a new custom function copied from 'RSAX_BIW_GET_DATA_SIMPLE'. AEDAT has been set as the delta date for this data source in transaction RSO2.
Main sample code is -
1. Code to receive selection criteria and store in internal ranges -
FUNCTION zbw_sodetail_get_detail.
""Global interface:
*" IMPORTING
*" VALUE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
*" VALUE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE
*" VALUE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE
*" VALUE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG
*" VALUE(I_READ_ONLY) TYPE SRSC_S_IF_SIMPLE-READONLY
*" TABLES
*" I_T_SELECT TYPE SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
*" I_T_FIELDS TYPE SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
*" E_T_DATA STRUCTURE ZBW_SODETAIL OPTIONAL
*--- Sales order item create date
LOOP AT i_t_select INTO l_s_select WHERE fieldnm = 'ERDAT'.
MOVE-CORRESPONDING l_s_select TO r_erdat.
APPEND r_erdat.
ENDLOOP.
*--- Sales order item change date - DELTA only - auto filled before
this function is called.
C (Initialise Delta) - Low = blank, High = today - safety limit
D (Delta) - low = , High = . *from roosgendlm
LOOP AT i_t_select INTO l_s_select WHERE fieldnm = 'AEDAT'.
MOVE-CORRESPONDING l_s_select TO r_aedat.
APPEND r_aedat.
ENDLOOP.
2. Code to use selection criteria to get initial or delta. Note that for delta the delta date field to be used is automatically populated with the date of the last delta run (from table roosgendlm) -
SELECT VBAK~KNUMV
VBAPVBELN VBAPPOSNR VBAPMATNR VBAPARKTX VBAP~SPART
VBAPWERKS VBAPERDAT VBAPAEDAT VBAPNETWR VBAP~WAERK
VBAPABGRU VBAPZPROMISE VBAP~CUOBJ
VBEP~EDATU
INTO CORRESPONDING FIELDS OF TABLE ZBW_SODETAIL_ITAB
FROM VBAK JOIN VBAP ON VBAKVBELN = VBAPVBELN
JOIN VBEP ON VBAPVBELN = VBEPVBELN
AND VBAPPOSNR = VBEPPOSNR
WHERE VBAP~VBELN IN R_VBELN "Order number
AND VBAP~POSNR IN R_POSNR "Order item number
AND VBAP~ERDAT IN R_ERDAT "Order item date created
AND ( VBAP~ERDAT IN R_AEDAT OR "Created date in Delta range
VBAP~AEDAT IN R_AEDAT OR "Order item change Delta range
VBAK~AEDAT IN R_AEDAT ). "Order header change Delta range
Note that if the data source is called in initial or full extract mode the delta change date (aedat) will automatically be blank.
I have been using this successfully.
I hope this helps
Martin. -
Function Module/Table to retrieve check table for standard fields
Hi,
Is there any function module or database table that holds the check table for standard field? Ex. BUKRS = T001.Hi MArc,
Goto DD03L table
Enter fieldname and tablename, you will get check table in CHECKTABLE field.
e.g. fname - MATNR, tbname MARD then CHECKTABLE - MARA
Reg,
Sachin -
Function Module or class to Check RFC HTTP Connection
Hi All,
Please can u tell me the FM or CLASS used to check the connection of an RFC HTTP Connection.
Regards
SrinivasHave a look at function module HTTP_GET_FILE, view the source of this function, there is a call to FORM check_http_destination. Double click this routine. Notice the call to function RFC_READ_TCPIP_DESTINATION, maybe this function will help you.
Regards,
Rich Heilman -
Function Module for getting public holidays between two dates
Dear Freinds,
I want a function module which checks a day is public holiday or not based on the "HOLIDAY CALENDAR ID", i have
found a function moudule('DATE_CHECK_WORKINGDAY') which checks a holiday or not but based on Factory Calender id,
so could any one please let me know how can i get a day is a public holiday or not based on "HOLIDAY CALENDAR ID".
regards
divya.Hi,
Use HR_FORMS_READ_HOLIDAYS.
pass calendar id, begin date, end date, holiday date.
it will fetch the text of holiday... u can put a check that if the text fetched in initial then the holiday date u have passed is not a holiday..
hope it helps -
Function Module to get days by putting input dates
Hi All,
could anybody tell me which Function Module can be used to get the number of days by giving two dates.
for ex: suppose if i will substract 04.01.2008 - 03.01.2008 = 1 day.
Please reply ASAP.
Thanks,
MadhuHello,
Check this sample:
DATA: G_F_DIFF TYPE I.
CLEAR G_F_DIFF.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
I_DATUM_BIS = ENDATE
I_DATUM_VON = STARTDATE
IMPORTING
E_TAGE = G_F_DIFF
EXCEPTIONS
DAYS_METHOD_NOT_DEFINED = 1
OTHERS = 2.
Cheers,
Vasanth
Edited by: Vasanth M on Jan 25, 2008 10:41 PM -
Function Module Call Via CMOD Logic for Master Data Enhancement
Hi Friends Please help me to resolve this, would really be very kind of all of you.
Requirement. I want to Enhance the field ZFACTREG from VIBDBE table in my datasource 0busentity_attr extract structure l_s_REIS_BUSENTITY_ATTR, I want to create the logic in CMOD exit_saplrsap_002 to call my function module for enhancement of master data. Please help me Step by Step
Thanks
Poonam Roy
<b>Step #1</b>
I put this code which gives me error in CMOD like this
ERROR : Das formale Argument 'OTHERS' muss am Schluss der Ausnahmeliste stehen.
ABAP Code#1 IN exit_saplrsap_002
DATA: l_d_fmname(30) TYPE c.
CONCATENATE 'Z_DS_' i_datasource(25) INTO l_d_fmname.
TRY.
CALL FUNCTION l_d_fmname
EXPORTING
I_DATASOURCE = I_DATASOURCE
I_UPDMODE = I_UPDMODE
TABLES
I_T_SELECT = I_T_SELECT
I_T_FIELDS = I_T_FIELDS
I_T_DATA = I_T_DATA
C_T_MESSAGES = C_T_MESSAGES
EXCEPTIONS
RSAP_CUSTOMER_EXIT_ERROR = 1
OTHERS = 2
IF FOUND.
IF SY-SUBRC <> 0.
RASIE RSAP_CUSTOMER_EXIT_ERROR.
END IF
CATCH CX_SY_DYN_CALL_ILLEGAL_FUNC.
ENDTRY.
<b>Step#2</b>
I simple created the Function module Z_DS_BUSINESS
and put the code in source code which gives me error . what should i put in other tabs like"Import", Export", Tables" i kept blank
ABAP CODE give me error : The Dictionary structure or table "FIELD-SYMBOLS" is either not active. i have to remove include in the FM. WHY SO??
FUNCTION Z_DS_BUSINENSS
""Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_DATASOURCE) TYPE RSAOT_OLTPSOURCE
*" VALUE(I_CHABASNM) TYPE SBIWA_S_INTERFACE-CHABASNM
*" VALUE(I_UPDMODE) TYPE SBIWA_S_INTERFACE-UPDMODE
*" TABLES
*" I_T_SELECT TYPE SBIWA_T_SELECT
*" I_T_FIELDS TYPE SBIWA_T_FIELDS
*" I_T_DATA
*" C_T_MESSAGES STRUCTURE BALMI OPTIONAL
*" EXCEPTIONS
*" RSAP_CUSTOMER_EXIT_ERROR
INCLUDE ZXRSAU02.
WRITE: / 'INSIDE THE Z_DS_MEASUREMENTS PROGRAM'.
TABLES: REIS_BUSENTITY_ATTR,
VIBDBE,
field-symbols:.<fs_REIS_BUSENTITY_ATTR> like REIS_BUSENTITY_ATTR.
DATA: BEGIN OF i_c_t_data OCCURS 0.
include structure REIS_BUSENTITY_ATTR.
DATA END OF i_c_t_data.
DATA: i_c_t_data_copy like i_c_t_data OCCURS 0 WITH HEADER LINE,
begin of i_vibdbe occurs 0,
INTRENO like vibdbe-INTRENO,
ZFACTREG like vibdbe-ZFACTREG,
end of i_vibdbe.
i_c_t_data_copy[] = i_c_t_data[] = c_t_data[].
sort i_c_t_data_copy by vibdbe.
Select INTRENO
into table i_VIBDBE from VIBDBE
for all entries in i_c_t_data_copy
where INTRENO = i_c_t_data_copy- INTRENO.
if sy-subrc = 0.
sort i_VIBDBE by INTRENO.
loop at i_c_t_data assigning <fs_REIS_BUSENTITY_ATTR>.
clear: i_VIBDBE.
read table i_VIBDBE with key INTRENO = <fs_REIS_BUSENTITY_ATTR>-INTRENO
BINARY SEARCH
transporting ZFACTREG .
if sy-subrc = 0.
<fs_REIS_BUSENTITY_ATTR>-ZZFACTORY = i_vibebe-ZFACTREG
endif.
null(I leave office until Monday morning, Europe time)
in include from customer-exit ZXRSAU01, etc.
CASE I_DATASOURCE.
WHEN '0CUSTOMER_ATTR'.
PERFORM 0customer_attr changing i_t_data...
ENDCASE.
In each perform, doing what you wrote ; select (needed fields) from complementary-database-table into an internal table with a for all entries. sort the table. LOOP and MODIFY on i_t_data.
In some case i had to insert lines of i_t_data to an internal table of DS_structure when entering subroutine and back at exit. (on 4.6C PI 2003 if i remember)
Some optimization done when reading small tables (T001 society and the same, these are filled once and not for each packet of data.
Your idea of creating different FM is of interest, but the cost of passing i_t_data between two programs (two function groups) may overcome the gain of performance. In a job only one DataSource is processed so only one routine is actually called.
Regards.
Maybe you are looking for
-
Unable to clear stock in Quality Inspection
Hi All, Few parts are in QI but we are not able to clear those parts. For those part we cannot find any open characteristic when viewed thru QE51, but when trying to give UD there is error ' Characteristic Open for the material". We have checked the
-
What is the deal with the inflated prices in the Aus App store?
Looking at buying Omni Graffle Pro. In the Australian Mac App store this is $249 Aus. From the Omni Group this is $199 US. The Aus dollar currently buys about $1.06 US - so *** is this $50 bucks more expensive? Not like you have to spend money to cou
-
Important differences between oracle 10g and 11g
Hi friends, can anyone tell me (pointwise) what are the major (and minor) differences between Oracle 10g and 11g. Please point me to some documents if possible. Thanks in advance
-
Numbers are not showing if i dial in phones
Dear All when i make for service number for any company and i hear 1 for english 2 for arabic , when i press any number 1 or 2 .... any numbers , there is not showing me in the phone when i dial , there is solution about that ?
-
Help