Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
Showing results for 
Search instead for 
Did you mean: 
Former Member

It is only an exmple  for creating  an interested in the ERP using method cmd_ei_api=>maintain_bapi

All data to interested are transferred in the structure LS_MASTERDATA. The LS_MASTERDATA is a deep structure of type CMDS_EI_MAIN (see Figures).

In the sub-structures / tables all the data will be stored in that way which is known from creating customers in dialog: the general data, the plant data and the sales data. The individual views are subdivided according to the "tables" in which the data are stored.


In my application I have used only the general data: address data, phone number, fax number  and e-mail address. In this case, I needed the component CENTRAL  and  from ADDRESS, the part POSTAL and the part COMMUNICATION with its components PHONE FAX and EMAIL.


The structure header is divided into and OBJECT_INSTANCE  and OBJECT_TASK. OBJECT_INSTANCE is filled with the customer number, if it is an external number assignment, otherwise, the system determines the customer number.

OBJECT_TASKindicates whether there is acreation(I) a change in (U) or deletion(D). Such a TASKfield exists in all higher-level units, and it must be filled every time.The subordinate units each contain two structures, a DATA and a DATAX with the same  field names. The DATA fields contains the values, The DATAX fields marks the corresponding as used . (Marker : Field is to evaluate)

Now for the code. One can use certainly Field symbols to access to the structures, but to clarify what is actually filled, here the fields are named directly.


is_adr_data is an user structure, which contains VCARD Data from a portal applikation

data: ls_masterdata type cmds_ei_main,
type  cmds_ei_extern,
type cmds_ei_extern_t,

* for Exportparameters of Methode
        ls_master_data_correct type  cmds_ei_main,
type  cvis_message,
type  cmds_ei_main,
type  cvis_message,
* for Transfer Communication data
type cvis_ei_cvi_phone,
type cvis_ei_phone_str,
type cvis_ei_phone_t,
type cvis_ei_cvi_fax,
type cvis_ei_fax_str,
type cvis_ei_fax_t,
type cvis_ei_cvi_smtp,
type cvis_ei_smtp_str,
type cvis_ei_smtp_t.

* Customer number (in case of external creating of numbers)

  ls_customers-header-object_instance-kunnr = lv_nummer.

  ls_customers-header-object_task = 'I'.
* Fill central data like Customer Account Group
  ls_customers-central_data-central-data-ktokd = c_interessent.
ls_customers-central_data-central-datax-ktokd =
* now address data
  ls_customers-central_data-address-task = 'I'.
* if the FROM date should be filled here , it has also to be filled in all other used structures
  ls_customers-central_data-address-postal-data-from_date = sy-datum.
* NAME and SORT1 are Mandatory fields
  ls_customers-central_data-address-postal-data-name = is_adr_data-name_last.
ls_customers-central_data-address-postal-data-sort1  = is_adr_data-name_last.
ls_customers-central_data-address-postal-data-name_2 = is_adr_data-name_first.
ls_customers-central_data-address-postal-data-city  = is_adr_data-city1.
ls_customers-central_data-address-postal-data-postl_cod1  = is_adr_data-post_code1.
ls_customers-central_data-address-postal-data-street = is_adr_data-street.
ls_customers-central_data-address-postal-data-country = is_adr_data-country.
ls_customers-central_data-address-postal-data-langu = is_adr_data-country.
* and now mark all used fields
  ls_customers-central_data-address-postal-datax-from_date = 'X'.
ls_customers-central_data-address-postal-datax-to_date =
ls_customers-central_data-address-postal-datax-name =
ls_customers-central_data-address-postal-datax-sort1 =
ls_customers-central_data-address-postal-datax-name_2 =
ls_customers-central_data-address-postal-datax-city =
ls_customers-central_data-address-postal-datax-postl_cod1 =
ls_customers-central_data-address-postal-datax-street =
ls_customers-central_data-address-postal-datax-house_no =
ls_customers-central_data-address-postal-datax-country =
ls_customers-central_data-address-postal-datax-langu =
* fill telephon data
  ls_phone-contact-task = 'I'.
ls_phone-contact-data-telephone = is_adr_data-telnummer.
ls_phone-contact-data-country = is_adr_data-country.
ls_phone-contact-datax-country =
ls_phone-contact-datax-telephone =
append ls_phone to lt_phone.
ls_phone_main-phone = lt_phone.
* fill fax data
ls_fax-contact-task =
ls_fax-contact-data-fax = is_adr_data-faxnummer.

  ls_fax-contact-datax-fax = 'X'.
ls_fax-contact-data-country = is_adr_data-country.
ls_fax-contact-datax-country =
append ls_fax to lt_fax.
ls_fax_main-fax = lt_fax.
* fill mail data
ls_mail-contact-task =
ls_mail-contact-data-e_mail = is_adr_data-smtp_addr.
ls_mail-contact-datax-e_mail =
append ls_mail to lt_mail.
ls_mail_main-smtp = lt_mail.

ls_customers-central_data-address-communication-smtp = ls_mail_main.
ls_customers-central_data-address-communication-phone = ls_phone_main .
ls_customers-central_data-address-communication-fax = ls_fax_main.

append ls_customers to lt_customers.
ls_masterdata-customers = lt_customers.

iv_test_run              = space
*    iv_collect_messages      = SPACE
is_master_data           = ls_masterdata
es_master_data_correct   = ls_master_data_correct
es_message_correct       = ls_message_correct
es_master_data_defective = ls_master_data_defective
es_message_defective     = ls_message_defective

* to start booking

    call function 'BAPI_TRANSACTION_COMMIT'