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
    sridharan

    Hi 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
    Ven

    Hi 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.

    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
    Martin

    Hi 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
    Srinivas

    Have 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,
    Madhu

    Hello,
    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