Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8581

Re: Regarding vendor master BAPI issue

$
0
0

Hi ,

 

Thanks for the reply. I do pass the vendor number. Please find the code below. Hope that will give some idea. Here I am trying to pass the data to existing vendor.

 

 

Sample code:

 

CLASS lcl_data DEFINITION.
PUBLIC SECTION.
METHODS: constructor
IMPORTING
i_ccode
TYPE bukrs
i_ktokk
TYPE ktokk
i_akont
TYPE akont
i_name 
TYPE ad_name1,
create_vendor_data
EXPORTING
e_lifnr
TYPE lifnr.

PRIVATE SECTION.
METHODS: prepare_data
RETURNING
VALUE(re_flag) TYPE i.
*   Data Declarations
DATA: gs_vmds_extern   TYPE vmds_ei_main,
gs_succ_messages
TYPE cvis_message,
gs_vmds_error   
TYPE vmds_ei_main,
gs_err_messages 
TYPE cvis_message,
gs_vmds_succ    
TYPE vmds_ei_main,
gv_ktokk        
TYPE ktokk,
gv_ccode        
TYPE bukrs,
gv_akont        
TYPE akont,
gv_name         
TYPE name1.
ENDCLASS.                    "lcl_data

*----------------------------------------------------------------------*
*       CLASS lcl_data IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_data IMPLEMENTATION.

METHOD constructor.
me
->gv_ccode = i_ccode.
me
->gv_ktokk  = i_ktokk.
me
->gv_akont = i_akont.
me
->gv_name = i_name.
ENDMETHOD.                    "constructor

METHOD prepare_data.

*   Local Data Declaration
DATA: lt_contacts     TYPE vmds_ei_contacts_t,
ls_contacts    
TYPE vmds_ei_contacts,
lt_vendors     
TYPE vmds_ei_extern_t,
ls_vendors     
TYPE vmds_ei_extern,
ls_address     
TYPE cvis_ei_address1,
lt_company     
TYPE vmds_ei_company_t,
ls_company     
TYPE vmds_ei_company,
ls_company_data
TYPE vmds_ei_vmd_company,
ls_purchas_data
TYPE vmds_ei_vmd_purchasing,
lt_purchasing  
TYPE vmds_ei_purchasing_t,
ls_purchasing  
TYPE vmds_ei_purchasing,
lt_purch_func  
TYPE vmds_ei_functions_t,
ls_purch_func  
TYPE vmds_ei_functions,
ls_message     
TYPE cvis_message,
lv_contactid   
TYPE bapicontact_01-contact.

*   Clear the work area initially.
CLEAR gs_vmds_extern.

ls_vendors-header-object_task = 'M'.                                          "Represents Insert or Create
ls_vendors-header-object_instance-lifnr = '0200014021'.
*   Set the Name
ls_address
-postal-data-name          = gv_name.                       "Name of the Vendor
ls_address
-postal-data-street          = 'Flat 101, ABS Road'.
ls_address
-postal-data-city            = 'MSP'.
ls_address
-postal-data-postl_cod1  = '400062'.
ls_address
-postal-data-region         = '13'.
ls_address
-postal-data-country       = 'IN'.
ls_address
-postal-data-sort1           = gv_name.
ls_address
-postal-data-langu          = sy-langu.
**   For all the fields where value was provided, set the flag value also to be 'X'
ls_address
-postal-datax-name         = 'X'.
ls_address
-postal-datax-street         = 'X'.
ls_address
-postal-datax-postl_cod1 = 'X'.
ls_address
-postal-datax-region        = 'X'.
ls_address
-postal-datax-sort1          = 'X'.
ls_address
-postal-datax-country      = 'X'.
ls_address
-postal-datax-langu         = 'X'.
ls_address
-task                                = 'I'.
ls_address
-postal-datax-city            = 'X'.
**   Set the Address for the Vendor
ls_vendors
-central_data-address = ls_address.

*   Set Contact Person
REFRESH: lt_contacts[].
CLEAR ls_contacts.
ls_contacts
-task = 'I'.                                                         "Represents Creation of Contact person
ls_contacts
-address_type_3-task = 'I'.                               "Represents Creation of Address for CP

*   Specify how many Contact Person numbers are to be obtained
*   This will simply provide us a contact person number
CALL FUNCTION 'BAPI_PARTNEREMPLOYEE_GETINTNUM'
EXPORTING
quantity 
= '1'
IMPORTING
contactid
= lv_contactid.

ls_contacts
-data_key-parnr = lv_contactid.                          "Contact Person Number
*   Set the Name for Contact person
ls_contacts
-address_type_3-postal-data-fullname   = 'John Smith'.
ls_contacts
-address_type_3-postal-data-firstname  = 'John'.
ls_contacts
-address_type_3-postal-data-lastname  = 'Smith.
APPEND ls_contacts TO lt_contacts.

*   Set the Contact Person details for the Vendor
ls_vendors
-central_data-contact-contacts = lt_contacts[].

*   Set the Account Group
ls_vendors
-central_data-central-data-ktokk  = gv_ktokk.
ls_vendors
-central_data-central-data-stcd1  = 'VAT 1'.
ls_vendors
-central_data-central-data-kunnr  = ls_vendors-header-object_instance-lifnr.
ls_vendors
-central_data-central-datax-kunnr  = 'X'.

ls_vendors
-central_data-central-datax-ktokk = 'X'.
ls_vendors
-central_data-central-datax-stcd1 = 'X'.
ls_vendors
-central_data-central-datax-brsch = 'X'.

*   Set the Company Code and GL Account
REFRESH: lt_company[].
CLEAR ls_company.
ls_company
-task                    = 'I'.
ls_company
-data_key-bukrs  = gv_ccode.
ls_company
-data-akont         = gv_akont.                          "Reconciliation Account
ls_company
-data-zuawa        = '018'.                                 "Sort Key
*    ls_company-data-fdgrv          = 'M1'.                                  "Cash Management Group
ls_company
-data-zterm         = '0001'.                                "Payment Terms
ls_company
-data-zwels         = 'C'.
ls_company
-datax-zwels        = 'X'.
ls_company
-datax-akont       = 'X'.
ls_company
-datax-zuawa      = 'X'.
*    ls_company-datax-fdgrv        = 'X'.
ls_company
-datax-zterm        = 'X'.
ls_company
-data-reprf         = 'X'.
ls_company
-datax-reprf       = 'X'.
APPEND ls_company TO lt_company.
ls_company_data
-company = lt_company[].
ls_vendors
-company_data = ls_company_data.

**   Set the Purchasing Data
*    ls_purchasing-task                   = 'I'.
*    ls_purchasing-data_key-ekorg = '1000'.                              "Purchasing Organization
*    ls_purchasing-data-kalsk         = '01'.                                   "Schema Group, Vendor
*    ls_purchasing-data-webre       = 'X'.                                     "GR Based Invoice Verification
*    ls_purchasing-datax-kalsk       = 'X'.
*    ls_purchasing-datax-webre      = 'X'.

*   Set the Partner function for Purchase Organization Data
*   Ordering Address
*    REFRESH: lt_purchasing[],
*             lt_purch_func[].
*    CLEAR ls_purch_func.
*    ls_purch_func-task = 'I'.
*    ls_purch_func-data_key-parvw    = 'BA'.
**   We set the Vendor being created as "Ordering Address"
*    ls_purch_func-data-partner      = ls_vendors-header-object_instance-lifnr.
*    ls_purch_func-datax-partner     = 'X'.
*    APPEND ls_purch_func TO lt_purch_func[].
*
**   Invoicing Party
*    CLEAR ls_purch_func.
*    ls_purch_func-task = 'I'.
*    ls_purch_func-data_key-parvw    = 'RS'.
**   We set the Vendor being created as "Invoicing Party"
*    ls_purch_func-data-partner      = ls_vendors-header-object_instance-lifnr.
*    ls_purch_func-datax-partner     = 'X'.
*    APPEND ls_purch_func TO lt_purch_func[].

***   Vendor
**    CLEAR ls_purch_func.
**    ls_purch_func-task = 'I'.
**    ls_purch_func-data_key-parvw    = 'LF'.
***   We set the Vendor being created as "Vendor in Purchasing Partner Function"
**    ls_purch_func-data-partner      = ls_vendors-header-object_instance-lifnr.
**    ls_purch_func-datax-partner     = 'X'.
**    APPEND ls_purch_func TO lt_purch_func[].
**
***   Set the Purchasing Data - Partner functions
**    ls_purchasing-functions-functions  = lt_purch_func[].
**    APPEND ls_purchasing TO lt_purchasing.
**
***   Set the Purchasing Data
**    ls_purchas_data-purchasing = lt_purchasing[].
**    ls_vendors-purchasing_data = ls_purchas_data.
APPEND ls_vendors TO lt_vendors.
**
***   Set the Final Vendor Data based on which it has to be created
*   Note if multiple vendors are to be created...please maintain multiple entries in LT_VENDORS
gs_vmds_extern
-vendors = lt_vendors[].
ENDMETHOD.                    "prepare_data

METHOD create_vendor_data.

*   Local Data Declaration
DATA: lv_return TYPE i.

*   Prepare the data to be used for Vendor Creation
lv_return
me->prepare_data( ).

*   Do not proceed if the Vendor Data for creation was not prepared
IF lv_return IS NOT INITIAL.
EXIT.
ENDIF.

*   Initialize all the data
vmd_ei_api
=>initialize( ).

*   Call the Method for creation of Vendor.
CALL METHOD vmd_ei_api=>maintain_bapi
EXPORTING
is_master_data          
= gs_vmds_extern
IMPORTING
es_master_data_correct  
= gs_vmds_succ
es_message_correct      
= gs_succ_messages
es_master_data_defective
= gs_vmds_error
es_message_defective    
= gs_err_messages.

IF gs_err_messages-is_error IS INITIAL.
commit work.
.
*     Set the Vendor Number to be returned

IF sy-subrc = 0.
WRITE: 'Vendor is created'.

ENDIF.

ENDIF.
ENDMETHOD.                    "create_vendor_data
ENDCLASS.                    "lcl_data IMPLEMENTATION


SELECTION-SCREEN BEGIN OF BLOCK tb1.
PARAMETERS: p_ccode TYPE bukrs,
p_akont
TYPE akont,
p_ktokk
TYPE ktokk,
p_name 
TYPE ad_name1.
SELECTION-SCREEN END OF BLOCK tb1.

DATA: lo_data  TYPE REF TO lcl_data,
gv_lifnr
TYPE lifnr.

START-OF-SELECTION.

* Create an instance of our class
CREATE OBJECT lo_data
EXPORTING
i_ccode
= p_ccode
i_akont
= p_akont
i_ktokk
= p_ktokk
i_name 
= p_name.

* Create Vendor and obtain the resultant error message and Vendor number
CALL METHOD lo_data->create_vendor_data
IMPORTING
e_lifnr
= gv_lifnr.


Thanks,

Kalyan


Viewing all articles
Browse latest Browse all 8581

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>