Creating Contact Person via Function Module

Dear ABAP Gurus,
try to add customer contact person via SD_CUSTOMER_MAINTAIN_ALL.
KNVK - Kundenstamm Ansprechpartner
  MOVE '0000010010' to itab-kunnr.
  MOVE 'Firstname' TO itab-namev.
  MOVE 'Lastname' TO itab-name1.
  MOVE 'City' TO itab-ort01.
  MOVE 'DE' TO itab-parla.
  MOVE '' to itab-telf1.
  MOVE 'U' to itab-kz.
  APPEND itab to my_knvk.
BAPI aufrufen
  CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
    EXPORTING
      PI_POSTFLAG = 'X'
    TABLES
      T_XKNVK = my_knvk.
Runs without error but person record not created. Any ideas ?
Thanks in advance for your help.
Thomas

Check for the sy-subrc value in Debug mode .
Check do you need to commit COMMIT statement to update the table.
Also look at this
Changing Customers using SD_CUSTOMER_MAINTAIN_ALL
Regards
Vivek
<b> please reward points for all the useful answers </b>

Similar Messages

  • Create Contact Person via BAPI / CMD_EI_API (TCode VAP1)

    Hi everybody,
    I have to develop a function module, which has to be called from an external application (java). This function module should, create contact persons for customers (like Transaction VAP1 does).
    I did not find any function module or bapi for this, but I found class CMD_EI_API, which seems to possibly help me. Unfortunately, there is no documentation for this class.
    Could anyone help me getting the contact person's addresses into the system? Just hustle me into the right direction and I will walk by myself
    Thank you very much
    Ralf
    Edit: The contact persons addresses have to be maintained for existing customers.
    Edited by: Ralf Wenzel on Feb 21, 2012 12:19 PM

    I have this working.  I wrote a wrapper BAPI.  If inserting a new contact, you need to get a new partner number otherwise it won't work.  There is extra code in this function module that you can remove.  I left it as I used the logic for other customer update BAPIs.
    FUNCTION Z_CUSTOMER_CONTACT.
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(CUST) LIKE  ZCUSTOMER STRUCTURE  ZCUSTOMER
    *"     VALUE(TESTFLAG) LIKE  WDL_FLAG-XFLAG DEFAULT ' '
    *"     VALUE(FBAPI) TYPE  CHAR01 OPTIONAL
    *"     VALUE(CONTACT) LIKE  ZCONTACT STRUCTURE  ZCONTACT
    *"  EXPORTING
    *"     VALUE(CUSTOMERNO) LIKE  BAPIKNA103-CUSTOMER
    *"     VALUE(RETURN) LIKE  BAPIRETURN1 STRUCTURE  BAPIRETURN1
    *"  EXCEPTIONS
    *"      CLIENT_ERROR
    *"      KNA1_INCOMPLETE
    *"      KNB1_INCOMPLETE
    *"      KNB5_INCOMPLETE
    *"      KNVV_INCOMPLETE
    *"      KUNNR_NOT_UNIQUE
    *"      SALES_AREA_NOT_UNIQUE
    *"      SALES_AREA_NOT_VALID
    *"      INSERT_UPDATE_CONFLICT
    *"      NUMBER_ASSIGNMENT_ERROR
    *"      NUMBER_NOT_IN_RANGE
    *"      NUMBER_RANGE_NOT_EXTERN
    *"      NUMBER_RANGE_NOT_INTERN
    *"      ACCOUNT_GROUP_NOT_VALID
    *"      PARNR_INVALID
    *"      BANK_ADDRESS_INVALID
    *"      TAX_DATA_NOT_VALID
    *"      NO_AUTHORITY
    *"      COMPANY_CODE_NOT_UNIQUE
    *"      DUNNING_DATA_NOT_VALID
    *"      KNB1_REFERENCE_INVALID
    *"      CAM_ERROR
       data: wa_header          type cmds_ei_header,
             wa_central_data    type cmds_ei_vmd_central_data,
             wa_central_datax   type cmds_ei_vmd_central_data_xflag,
             wa_address         type bapiad1vl,
             wa_addressx        type bapiad1vlx,
             wa_contact_addr    type bapiad3vl,
             wa_contact_addrx   type BAPIAD3VLX,
             wa_tax_ind_st      type cmds_ei_tax_ind,
             wa_tax_ind         type cmds_ei_cmd_tax_ind,
             wa_bankdetail_st   type cvis_ei_cvi_bankdetail,
             wa_bankdetail      type cvis_ei_bankdetail,
             wa_company_code_st type cmds_ei_company,
             wa_company_code    type cmds_ei_cmd_company,
             wa_functions_st    type cmds_ei_functions,
             wa_functions       type cmds_ei_cmd_functions,
             wa_tcontact        type CVIS_EI_PHONE,
             wa_phone_st        type CVIS_EI_PHONE_STR,
             wa_phone           type CVIS_EI_CVI_PHONE,
             wa_fcontact        type CVIS_EI_FAX,
             wa_fax_st          type CVIS_EI_FAX_STR,
             wa_fax             type CVIS_EI_CVI_FAX,
             wa_econtact        type CVIS_EI_SMTP,
             wa_smtp_st         type CVIS_EI_SMTP_STR,
             wa_smtp            type CVIS_EI_CVI_SMTP,
             wa_sales_data_st   type cmds_ei_sales,
             wa_sales_data      type cmds_ei_cmd_sales,
             wa_customer        type cmds_ei_extern,
             wa_cust_created    type cmds_ei_extern,
             is_customers       type cmds_ei_main,
             es_customers       type cmds_ei_main,
             wa_correct         type cmds_ei_main,
             wa_defective       type cmds_ei_main,
             wa_mes_correct     type cvis_message,
             wa_mes_error       type cvis_message,
             it_contacts        type cmds_ei_contacts_t,
             wa_contacts        type CMDS_EI_CONTACTS,
             messages           type BAPIRET2_T.
       FIELD-SYMBOLS: <bapiret2> type BAPIRET2.
       DATA: STATUS TYPE CHAR20,
             PARNR  LIKE KNVK-PARNR.
       constants: FILLCHAR VALUE '/',
                  gc_objtype_customer TYPE mds_ctrl_object VALUE 'CUSTOMER',
                  gc_insert           TYPE c VALUE 'I',
                  gc_delete           TYPE c VALUE 'D',
                  gc_current_state    TYPE c VALUE 'C',
                  gc_update           TYPE c VALUE 'U',
                  gc_true             TYPE c VALUE 'X',
                  gc_false            TYPE c VALUE ' '.
       include fbgenmac.
    * generate data record
       fbgenmac 'Z_CUSTOMER_CONTACT'.
    * Clear memory variables - needed if run in Test mode
    * Initialization
       CALL METHOD cmd_ei_api=>initialize.
       wa_customer-header-object_instance-kunnr = cust-kunnr.
       wa_customer-header-object_task           = gc_update.
       append wa_customer to is_customers-customers.
       call method CMD_EI_API_EXTRACT=>get_data
         EXPORTING
           is_master_data = is_customers
         IMPORTING
           es_master_data = es_customers
           es_error       = wa_mes_error.
       IF wa_mes_error-is_error is initial.
         STATUS = 'OK'.
         LOOP at es_customers-customers into wa_cust_created.
           wa_company_code = wa_cust_created-company_data.
           IF STATUS = 'OK' and wa_mes_error-is_error is INITIAL.
    *      is_customers = es_customers.
             free: wa_customer, wa_company_code_st,
                   wa_company_code, wa_address, wa_sales_data_st,
                   wa_contacts, wa_contact_addr,
                   wa_sales_data, wa_tax_ind_st, wa_functions,
                   wa_functions_st, wa_correct, wa_mes_correct,
                   wa_defective, wa_mes_error, wa_cust_created,
                   wa_tcontact, wa_phone_st, wa_phone,
                   wa_fcontact, wa_fax_st, wa_fax, wa_econtact,
                   wa_smtp_st, wa_smtp.
             FREE: is_customers.
             IF CONTACT-FIRSTNAME IS NOT INITIAL.
               CALL FUNCTION 'NUMBER_GET_NEXT'
                 EXPORTING
                   nr_range_nr                   = 'AP'
                   object                        = 'PARTNER'
                   QUANTITY                      = '1'
                   SUBOBJECT                     = ' '
    *           TOYEAR                        = '0000'
    **          IGNORE_BUFFER                 = ' '
                 IMPORTING
                   NUMBER                        = PARNR
    *           QUANTITY                      =
    *           RETURNCODE                    =
                EXCEPTIONS
                   INTERVAL_NOT_FOUND            = 1
                   NUMBER_RANGE_NOT_INTERN       = 2
                   OBJECT_NOT_FOUND              = 3
                   QUANTITY_IS_0                 = 4
                   QUANTITY_IS_NOT_1             = 5
                   INTERVAL_OVERFLOW             = 6
                   BUFFER_OVERFLOW               = 7
                   OTHERS                        = 8.
               IF SY-SUBRC = 0.
    * Add partner type 20
                 wa_contacts-task           = gc_insert.
                 wa_contacts-data_key-parnr = PARNR.
                 wa_contacts-data-pafkt     = '20'.
                 wa_contacts-datax-pafkt    = 'X'.
    *        wa_contacts-address_type_1 = ''.
    *        wa_contacts-address_type_2 = ''.
    *        wa_contact_addr-fullname   = CUST-NAME.
                 wa_contact_addr-firstname  = CONTACT-FIRSTNAME.
                 wa_contact_addrx-firstname = 'X'.
                 wa_contact_addr-lastname   = CONTACT-LASTNAME.
                 wa_contact_addrx-lastname  = 'X'.
    * Assign address data directly
                 wa_contacts-address_type_3-task  = gc_insert.
                 wa_contacts-address_type_3-postal-data  = wa_contact_addr.
                 wa_contacts-address_type_3-postal-datax = wa_contact_addrx.
    * e-mail address
                 wa_econtact-task = gc_insert.
                 wa_econtact-data-std_no = 'X'.
                 wa_econtact-data-e_mail = CONTACT-E_MAIL.
    *        wa_econtact-datax-std_no = 'X'.
    *        wa_econtact-datax-e_mail = 'X'.
                 wa_smtp-current_state = ' '.
                 wa_smtp_st-contact = wa_econtact.
                 append wa_smtp_st to wa_smtp-smtp.
                 wa_contacts-address_type_3-communication-smtp = wa_smtp.
    *        wa_contacts-contact_texts  = ''.
                 append wa_contacts to it_contacts.
               ENDIF.
               CALL FUNCTION 'NUMBER_GET_NEXT'
                 EXPORTING
                   nr_range_nr                   = 'AP'
                   object                        = 'PARTNER'
                   QUANTITY                      = '1'
                   SUBOBJECT                     = ' '
    *           TOYEAR                        = '0000'
    **          IGNORE_BUFFER                 = ' '
                 IMPORTING
                   NUMBER                        = PARNR
    *           QUANTITY                      =
    *           RETURNCODE                    =
                EXCEPTIONS
                   INTERVAL_NOT_FOUND            = 1
                   NUMBER_RANGE_NOT_INTERN       = 2
                   OBJECT_NOT_FOUND              = 3
                   QUANTITY_IS_0                 = 4
                   QUANTITY_IS_NOT_1             = 5
                   INTERVAL_OVERFLOW             = 6
                   BUFFER_OVERFLOW               = 7
                   OTHERS                        = 8.
               IF SY-SUBRC = 0.
    * Add partner type 30
                 wa_contacts-data_key-parnr = parnr.
                 wa_contacts-data-pafkt     = '30'.
                 append wa_contacts to it_contacts.
               ENDIF.
    * Assign contacts to customer structure
               wa_customer-central_data-contact-contacts = it_contacts.
    * Set object_task to modify
               wa_customer-header-object_instance-kunnr = cust-kunnr.
               wa_customer-header-object_task = gc_update.
               append wa_customer to is_customers-customers.
               IF FBAPI = 'X'.
    * MAINTAIN_BAPI seems to now work.  Fills in table addr_appl_to_int used in function module
    * ADDR_MEMORY_SAVE line 631.  It should be blank.
                 call method cmd_ei_api=>maintain_bapi
                   EXPORTING
                     iv_test_run              = TESTFLAG
                     iv_collect_messages      = 'X'
                     is_master_data           = is_customers
                   IMPORTING
                     es_master_data_correct   = wa_correct
                     es_message_correct       = wa_mes_correct
                     es_master_data_defective = wa_defective
                     es_message_defective     = wa_mes_error.
               ELSE.
                 call method cmd_ei_api=>maintain
                   EXPORTING
                     iv_test_run    = TESTFLAG
                     is_master_data = is_customers
                   IMPORTING
                     es_error       = wa_mes_error.
               ENDIF.
               IF wa_mes_error-is_error is initial.
                 if testflag <> 'X'.
                   commit work and wait.
                   LOOP at wa_correct-customers into wa_cust_created.
                     CUSTOMERNO = wa_cust_created-header-object_instance-kunnr.
                     SY-MSGID = 'F2'.
                     SY-MSGNO = '056'.     " Failure
                     SY-MSGV1 = ''.
                     SY-MSGV2 = ''.
                     SY-MSGV3 = ''.
                     SY-MSGV4 = ''.
                     CALL FUNCTION 'BALW_BAPIRETURN_GET1'
                       EXPORTING
                         TYPE       = 'E'
                         CL         = SY-MSGID
                         NUMBER     = SY-MSGNO
                         PAR1       = SY-MSGV1
                         PAR2       = SY-MSGV2
                         PAR3       = SY-MSGV3
                         PAR4       = SY-MSGV4
    *               LOG_NO     = ' '
    *               LOG_MSG_NO = ' '
                       IMPORTING
                         BAPIRETURN = RETURN.
                   ENDLOOP.
                   CALL FUNCTION 'ADDR_MEMORY_CLEAR'
                     EXPORTING
                       force              = 'X'
                     EXCEPTIONS
                       unsaved_data_exist = 1
                       internal_error     = 2
                       others             = 3.
                 ELSE.
                   ROLLBACK WORK.
                   LOOP at wa_correct-customers into wa_cust_created.
                     CUSTOMERNO = wa_cust_created-header-object_instance-kunnr.
                     SY-MSGID = 'F2'.
                     SY-MSGNO = '035'.
                     SY-MSGV1 = ''.
                     SY-MSGV2 = ''.
                     SY-MSGV3 = ''.
                     SY-MSGV4 = ''.
                     CALL FUNCTION 'BALW_BAPIRETURN_GET1'
                       EXPORTING
                         TYPE       = 'E'
                         CL         = SY-MSGID
                         NUMBER     = SY-MSGNO
                         PAR1       = SY-MSGV1
                         PAR2       = SY-MSGV2
                         PAR3       = SY-MSGV3
                         PAR4       = SY-MSGV4
    *               LOG_NO     = ' '
    *               LOG_MSG_NO = ' '
                       IMPORTING
                         BAPIRETURN = RETURN.
                   ENDLOOP.
                   CALL FUNCTION 'ADDR_MEMORY_CLEAR'
                     EXPORTING
                       force              = 'X'
                     EXCEPTIONS
                       unsaved_data_exist = 1
                       internal_error     = 2
                       others             = 3.
                 ENDIF.
               ELSE.
                 messages = wa_mes_error-messages.
                 LOOP at wa_mes_error-messages assigning <bapiret2>.
                   CUSTOMERNO = CUST-KUNNR.
                   CALL FUNCTION 'BALW_BAPIRETURN_GET1'
                     EXPORTING
                       TYPE       = <bapiret2>-type
                       CL         = <bapiret2>-id
                       NUMBER     = <bapiret2>-number
                       PAR1       = <bapiret2>-message_v1
                       PAR2       = <bapiret2>-message_v2
                       PAR3       = <bapiret2>-message_v3
                       PAR4       = <bapiret2>-message_v4
    *         LOG_NO     = ' '
    *         LOG_MSG_NO = ' '
                     IMPORTING
                       BAPIRETURN = RETURN.
                 ENDLOOP.
               ENDIF.
             ELSE.
               CUSTOMERNO = CUST-KUNNR.
               SY-MSGID = 'F2'.
               SY-MSGNO = '152'.     " Failure
               SY-MSGV1 = CUST-KUNNR.
               SY-MSGV2 = CUST-BUKRS.
               SY-MSGV3 = ''.
               SY-MSGV4 = ''.
               CALL FUNCTION 'BALW_BAPIRETURN_GET1'
                 EXPORTING
                   TYPE       = 'E'
                   CL         = SY-MSGID
                   NUMBER     = SY-MSGNO
                   PAR1       = SY-MSGV1
                   PAR2       = SY-MSGV2
                   PAR3       = SY-MSGV3
                   PAR4       = SY-MSGV4
    *         LOG_NO     = ' '
    *         LOG_MSG_NO = ' '
                 IMPORTING
                   BAPIRETURN = RETURN.
             ENDIF.
           ENDIF.
         ENDLOOP.
       ELSE.
         CUSTOMERNO = CUST-KUNNR.
         SY-MSGID = 'F2'.
         SY-MSGNO = '077'.     " Failure
         SY-MSGV1 = CUST-NAME.
         SY-MSGV2 = ''.
         SY-MSGV3 = ''.
         SY-MSGV4 = ''.
         CALL FUNCTION 'BALW_BAPIRETURN_GET1'
           EXPORTING
             TYPE       = 'E'
             CL         = SY-MSGID
             NUMBER     = SY-MSGNO
             PAR1       = SY-MSGV1
             PAR2       = SY-MSGV2
             PAR3       = SY-MSGV3
             PAR4       = SY-MSGV4
    *         LOG_NO     = ' '
    *         LOG_MSG_NO = ' '
           IMPORTING
             BAPIRETURN = RETURN.
       ENDIF.
    ENDFUNCTION.

  • Error while creating Generic Extractor via Function Module

    Hello Guys
    I have created a Generic Extractor through a Function Module. I took the Standard FM: RSAX_BIW_GET_DATA_SIMPLE, gave it a new name and activated it. I made a few changes in it, like giving my structure name for E_T_DATA and giving the list of tables, from where I need to get the data. Then I created the datasource in RSO2 by giving this function module and the extract structure.
    The DS was created properly, but when I check in RSA3 for records, its giving me an error: ---> <b>The extraction program does not support object YCNA_INVY_TRNS</b>
    What do i do now? Can someone please tell me, what changes I need to make in the standard FM to suit my requirements??
    Thanks.

    Hi,
            Just try to reactivate the structure once again. And when you open the function module, if the problem still persists just try to press Return key several times. The message you are getting is just a warning message.
    PS: I am not sure whether this is the correct way, but i personally resolved this by pressing the ENTER key 4 or 5 times. So just give a try.
    Regards
    Sunil

  • Create transfer order via Function Module

    Dear SAP guru,
    I have the following requirement that the transfer requirements will be created for replenishment into dedicated storage bins from another storage types.
    To do this, I use a user exit to calculate what is my replenishment quantity required for all the dedicated bins of this particular material.
    Once, the TR is created.  TO should be generated next. And, that is the problem that I faced here.  The quantity to replenish to each of the dedicated storage bin could be different, depends on the quantity in the storage bin at that time.
    For example, I have 3 dedicated bins for one material as follows:
    A-01             100 pc
    A-02               50 pc
    A-03               50 pc
    Assume that the maximum quantity per bin is 300pc, and once I run the replenishment program earlier, I will have a TR created with 700 pc.
    Now, what I want during the TO creation, is to search the dedicated bin and also determine the required quantity for each of the bin.  In this case, my TO will have 3 items, i.e.
    A-01             200pc
    A-02             250pc
    A-03             250pc
    Is there any way to do it?
    Please advise.
    Thanks.
    Tom

    Hi Tom,
    You can use the Transation SMOD find the possible SAP enhancements. All extensions in the the WM-Umfled can select you, if you enter MWMTO* and die F4-help press. You then get a list of extensions which are possible. Hope this helps.

  • BAPI to create Contact person in Vendor master

    Hi
    We need to create Contact Person in Vendor master using BAPI.
    We already used BDCs in CREMAS IDOC posting to create contact person. Since we dont get the address number back in IDOC posting, we need BAPI which can create the contact person and return the address number created for that contact person.
    Regards
    Anand

    Hi,
    this is not supported by CREMAS idoc types and there is no plan to get this in the future.
    There is no BAPI and no direct function module to maintain a vendor.
    The only solution that is coming will be in ECC 2005 EhP 4 or EhP5 and available from class VMD_EI_API with method Maintain.
    If you need this functionality from the CREMAS idoctype, the only solution is to request a remote consulting project or an EoD project at SAP under component LO-MD-BP-VM.
    BR
    Alain

  • Error in Extraction with Generic Datasource via Function Module

    Dear Gurus,
    Iam working for BI-HR module.We are extracting data with generic data source via function module. The client some more extra fields in already existing DS. So we made a copy of that Function module and tried to create new generic DS, we got error while extraction like "Error occured during the extraction process". Can you please help in resolving this issue, your valuable suggestion would be highly appreciated.
    Thanks and regards
    Arun S

    Hi,
    Which structure are you using??
    Are you using the same old structure for this function module as well.
    Have you enhanced the structure with new required fields.
    New extrac fields needs to be added to existing structure if you are using the same or create a new one and make sure that you have all the fields in the structure which you are going to use in the data source.
    You need to take care for the append as well and the issue could be in the code as well.
    Make sure you have written the proper code and just for the new fields done an append
    Thanks
    Ajeet

  • Create Return Order via Fucntional module

    Hi all,
    I am trying to create a return order with refernce to invoice via fucntional module SD_SALESDOCUMENT_CREATE
    In SALES_HEADER_IN, I am giving REF_DOC - Invoice number, REFDOC_CAT - M
    In SALES_HEADER_INX , I am putting X mark for the above fields
    I am Passing necessary details with material.I see the return order is created succesfully, but the invoice number is not updated in Accounting tab - Reference fields - Header.
    Please anyone help me if the values what I have passed is correct or not to create the return order via Functional module
    regard
    Mano

    Hi Mano,
    Could you please upload screenshot of the field you are referring to
    thanks
    santosh

  • How to create contact person with BAPI_ADDRCONTPART_SAVEREPLICA

    Dears,
        when using BAPI BAPI_ADDRCONTPART_SAVEREPLICA to create contact person,it exports the PERSON_NUMBER and ADDRESS_NUMBER, but no record found in table KNVK for customer or vendor .
       The parameters is as below,
      CALL FUNCTION 'BAPI_ADDRCONTPART_SAVEREPLICA'
        EXPORTING
          obj_type_p    = 'BUS1006001'
          obj_id_p      = <personal number>
          obj_type_c    = 'KNA1'
          obj_id_c      = <customer>
          obj_id_ext    = SPACE
          context       = '0005'
      also no return message and sy-subrc =0.
      what maybe the error? and any other method to create contact person ?
    Ths .

    DEAR,
        after test by my colleague, after creating contact person by BAPI_ADDRCONTPART_SAVEREPLICA , then he should input the parter and name into BI structure bknvk when he use bi fm to create customer, then the contact person will be associated with the customer.
       But i use BI fm 'VENDOR_BDCDATA' to create vendor, there is no such structure to do so. so no contact person associated with the vendor, but the contact person has been created and just not associated with this vendor in table KNVK.
       are there any other methods to do such things to associate contact person with my vendor after call BI FM  'VENDOR_BDCDATA' ?
    BR.

  • Adding a new conditon on head via function modul?

    Hi,
    is there a way to add a condition to an order via function module? I mean in customizing we have maintained the calc scheme (and everything else) and assign it to the order. What we want is to add the new condition type to the head of the order via function module. The scenario is as follows:
    We create an order and have on the header a field for a value. If you type a value in the field and press enter the condition should be created and calculatetd. The result is given in the condition tab of the order on header level.
    We try to not do a modifictaion. therefore i am looking for a function module. Is there someone who could help?
      thanks and regards,
           Ming

    Why can't this be done by the pricing configuration?
    There are also pricing user exits available, which are not modifications and exist for this purpose exactly (i.e. when for some reason configuration alone is not enough). See the list here:
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/erplo/sdUserexits

  • Can anybody explain me creating Generic Datasource using Function module?

    Hi,
    can anybody explain me creating Generic Datasource using Function module?
    Thax in advance,
    Ravi.

    Generic Extraction via Function Module
    /people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
    1. Create s structure with the fields that you need from the 4 tables . Activate.
    2. Goto SE 80 Select The Function Group , Copy , Select the Function module
    " RSAX_BIW_GET_DATA_SIMPLE " and Give a New name starting With
    Y or Z .
    3. SE37 ->Your Function module name -> Change , In table tab give your structure
    name by deleting the associated type given in " E_T_DATA " .
    4. Now select source code and Do the coding . Give Data source name in Coding .
    In your case you have to take data from more that 1 table .
    5. Activate the Function Group .
    6. In RSO2 Create the Data source , Give the Function Module Name , And Save.
    7. RSA3 -> Give data source name and Check for the Records .
    Creation of custom datasource. (Using function module)
    <b>is an example</b>
    1.Create a function group .
    2. Structure ZTEST123
    ZMATNR MATNR CHAR 18 0 Material Number
    ZMTART MTART CHAR 4 0 Material type
    ZMBRSH MBRSH CHAR 1 0 Industry sector
    ZMATKL MATKL CHAR 9 0 Material group
    ZBISMT BISMT CHAR 18 0 Old material number
    ZMAKTX MAKTX CHAR 40 0 Material description
    3. Create function module (i.e. ZTEST….) .
    FM - YMARA_DATA_TRNS
    FUNCTION YMARA_DATA_TRNS.
    ""Local Interface:
    *" IMPORTING
    *" VALUE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
    *" VALUE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
    *" VALUE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
    *" VALUE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
    *" VALUE(I_READ_ONLY) TYPE SRSC_S_IF_SIMPLE-READONLY OPTIONAL
    *" 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 ZTEST123 OPTIONAL
    *" EXCEPTIONS
    *" NO_MORE_DATA
    *" ERROR_PASSED_TO_MESS_HANDLER
    data : ZTEST123 type ZTEST123 occurs 0 with header line.
    Maximum number of lines for DB table
    STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
    S_COUNTER_DATAPAKID LIKE SY-TABIX.
    DATA: begin of t_mara occurs 0,
    ZMATNR type MATNR,
    ZMTART type MTART,
    ZMBRSH type MBRSH,
    ZMATKL type MATKL,
    ZBISMT type BISMT,
    end of t_mara.
    DATA: begin of t_makt occurs 0,
    ZMATNR type MATNR,
    ZMAKTX type MAKTX,
    end of t_makt.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
    IF I_INITFLAG = SBIWA_C_FLAG_ON.
    Check DataSource validity
    CASE I_DSOURCE.
    WHEN 'ZZMARA_DATA'.
    WHEN OTHERS.
    IF 1 = 2. MESSAGE E009(R3). ENDIF.
    this is a typical log call. Please write every error message like this
    LOG_WRITE 'E' "message type
    'R3' "message class
    '009' "message number
    I_DSOURCE "message variable 1
    ' '. "message variable 2
    RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDCASE.
    Fill parameter buffer for data extraction calls
    S_S_IF-REQUNR = I_REQUNR.
    S_S_IF-DSOURCE = I_DSOURCE.
    S_S_IF-MAXSIZE = I_MAXSIZE.
    ELSE. "Initialization mode or data extraction ?
    Data transfer: First Call OPEN CURSOR + FETCH
    Following Calls FETCH only
    First data package -> OPEN CURSOR
    IF S_COUNTER_DATAPAKID = 0.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between DataSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
    select MATNR
    MTART
    MBRSH
    MATKL
    BISMT
    from mara up to 10 rows
    into table t_mara.
    if not t_mara[] is initial.
    select MATNR
    maktx
    from makt
    into table t_makt
    for all entries in t_mara
    where matnr = t_mara-zmatnr.
    endif.
    loop at t_mara.
    read table t_makt with key zmatnr = t_mara-zmatnr.
    ZTEST123-zmatnr = t_mara-zmatnr.
    ZTEST123-ZMTART = t_mara-ZMTART.
    ZTEST123-ZBISMT = t_mara-ZBISMT.
    ZTEST123-ZMBRSH = t_mara-ZMBRSH.
    ZTEST123-ZMATKL = t_mara-ZMATKL.
    ZTEST123-zmaktx = t_makt-zmaktx.
    append ZTEST123.
    clear ZTEST123.
    endloop.
    clear E_T_DATA.
    refresh E_T_DATA.
    E_T_DATA[] = ZTEST123[].
    ENDIF.
    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
    ENDIF. "Initialization mode or data extractio
    ENDFUNCTION.
    3. Create the data source using transaction (RSO2).
    4. If structure exists for the table parameter of your function module then ok else create a structure for the table parameter ‘E_T_DATA’.
    5. Test the datasource in R/3 using transaction RSA3.
    6. Transfer the data source to BW –System and replicate it in the BW-System.

  • Datasource via function module

    Hi,
    I am building a function that is due to be used by a Datasource (via Function Module).
    This function uses table WDRD. It applies to this table a code that needs the use of an internal table for the calculation (for intermediary calculation storage). After which, I want to get the result of this internal table (say T1_DATA), and return it to E_T_DATA, which will be used to fill my datasource. This is where I am stuck.
    -> When I try to get the content of my internal table in my cursor (code: OPEN CURSOR WITH HOLD S_CURSOR FOR
          select * from T1_DATA
        endif.),
    I get an error message stating the table is not defined in the ABAP dictionary.
    -> When I try to avoid the cursor and put directly the content of my table T1_DATA in table E_T_DATA, I don't get anything in my Datasource.
    Any help would be greatly appreciated.
    Thanks,
    Pierre

    Hi,
    Which structure are you using??
    Are you using the same old structure for this function module as well.
    Have you enhanced the structure with new required fields.
    New extrac fields needs to be added to existing structure if you are using the same or create a new one and make sure that you have all the fields in the structure which you are going to use in the data source.
    You need to take care for the append as well and the issue could be in the code as well.
    Make sure you have written the proper code and just for the new fields done an append
    Thanks
    Ajeet

  • Error while creating contact person

    Hi While creating contact person in customer master data
    I am getting the message Partner XXXXXX is not assigned to a partner function?
    What might be the possible reason,
    Thanks in advance
    Regards
    Jai

    Hi jaigss,
    Please check the below threads,
    Getting a "Business partner not found with partner function type requester"://Re: Partner function not found
    Approver Can replaced by Requestor..
    Thanks,
    Swamy H P

  • Error while trying to create a Universe on Function Module in IDT

    Hi,
    We are using BO 4.1 Support Pack 2. I am trying to create a Universe on Function Module. I created data foundation layer, but when I right click on the table and click on 'Show table values' it doesn't bring any data (and there is data available in that table). When I click on 'Check Integrity' it says 'Missing Primary key'. Please see the screen shot. Please let me know if any has any idea and I am doing something wrong? I really appreciate it.
    Thanks,
    Charvi.

    Hi Charvi,
    What type of database/application are you trying to connect? Are you getting any error message?
    Missing primary key message is just a warning and is not related to the issue.
    Cheers
    Mohan

  • SRM: Create Contact Person Could not create user; contact your system admin

    Hi All,
    First, I am not sure this question should be posted here, or SRM General. From my point of view, here is more suitable.
    Our Problem:
    Activity "Create Contact Person With Reference" error with message:
    Step to reproduce:
    1. Login to SRM JAVA as super administrator
    2. Open tab "SRM Administration"
    3. Using the current query, search for Business-Partner no: 30000725
    4. Press "Create Contact Person with Reference"
    5. Fill all required fields, tick "Is contact person" checkbox
    6. Put: /SAPSRM/SUPPLIER as Role
    7. Save
    The following Message appear:
    Could not create user; contact your system administrator
    SPML Service error: Error reading request status.  Display Help
    Contact Person 2000000214 Created Successfully for BP 30000725  Display Help
    E-mail was sent
    The first error is intriguing. The username & password is created successfully in ABAP System (Our UME is in ABAP).
    QUESTIONS:
    1. What cause this problem? How to trace the error?
    2. We want the user have portal role automatically. How to achieve that?
    Thank you for any responses and helps.
    SRM ABAP Version:
    SRM_PLUS     700     0009     SAPKIBK209     SRM_PLUS for mySAP SRM
    SRM_SERVER     700     0009     SAPKIBKV09     SRM_SERVER
    SAP_ABA     701     0007     SAPKA70107     Cross-Application Component
    SAP_BASIS     701     0008     SAPKB70108     SAP Basis Component
    PI_BASIS     701     0007     SAPK-70107INPIBASIS     Basis Plug-In
    SRM JAVA Version:
    SRM JAVA: Release 7 SP Level 9.0
    BP SRM: Release 7 SP Level 9.0
    Edited by: Nur Agus Suryoko on Mar 11, 2011 11:36 AM
    Version information added

    Hi Fernando,
    Can you please tell me how you resolved this issue ??
    Regards,
    Adren

  • Save EAN11 field while creating POrder creation through Function module

    Hi All,
    I want to update EAN11 field in material master while creating Purchase Order through function module. I am using function module BAPI_PO_CREATE1 for creating purchase order. There are no structures in the PO creation FM in which EAN11 field is there. I have also tried using function module MEPO_DOC_ITEM_PROCESS for updating EAN11 field. It is not working. Please suggest some method to do that.
    Note: I am receiving EAN11 through an external system by proxy.
    Thanks,
    Chinmay

    Hi,
    Use BAPI_MATERIAL_SAVEDATA to updat ean numbers for materials.
    tables INTERNATIONALARTNOS is used to update EAN.
    Regards,
    Shanmugavel Chandrasekaran

Maybe you are looking for