Добавляйте новые электронные письма Клиенту на XD02 из CALL METHOD cmd_ei_api => keep_bapi - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно добавить новый адрес электронной почты для клиентов в XD02 из xls.Это все нормально, но когда я вызываю метод cmd_ei_api => keep_bapi, это действительно меняет электронную почту, но удаляет все электронные письма на XD02, и это не то, что я хочу, я хочу добавить новое электронное письмо, поставить это по умолчанию, но я хочуоставь старые.

Мой код:

FORM data_to_bapi.

  DATA: gs_correct         TYPE cmds_ei_main,
        gt_customers       TYPE cmds_ei_main,
        gs_address         TYPE bapiad1vl,
        gs_addressx        TYPE bapiad1vlx,
        gs_company_code_st TYPE cmds_ei_company,
        gs_company_code    TYPE cmds_ei_cmd_company,
        gt_smtp            TYPE cvis_ei_smtp_t,
        gs_smtp            LIKE LINE OF gt_smtp,
        gs_comm            TYPE cvis_ei_cvi_communication,
        gs_customers       TYPE cmds_ei_extern,
        gs_defective       TYPE cmds_ei_main,
        gs_msg_correct     TYPE cvis_message,
        gs_msg_error       TYPE cvis_message,
        iv_test_run        TYPE c.

  LOOP AT lt_data INTO wa_data.

    "Controlo
    gs_customers-header-object_instance-kunnr = wa_data-kunnr. "kunnr

    gs_customers-header-object_task = 'U'.            "Update this kunnr

    gs_smtp-contact-task            = 'I'.            " Insert New Email
    gs_smtp-contact-data-e_mail     = wa_data-email.  " New email
    gs_smtp-contact-datax-e_mail    = 'X'.

    APPEND gs_smtp TO gt_smtp.

    gs_comm-smtp-smtp = gt_smtp[].

    gs_customers-central_data-address-communication = gs_comm.
    gs_customers-central_data-address-task          = 'I'.   " Insert new communication

    APPEND gs_customers TO gt_customers-customers.

**********************************************************************
*                             CALL BAPI                              *
**********************************************************************

    CHECK gt_customers-customers IS NOT INITIAL.

    gv_collect_messages = abap_true.

    cmd_ei_api=>initialize( ).

    iv_test_run = ' '.

    CALL METHOD cmd_ei_api=>maintain_bapi
      EXPORTING
        iv_test_run              = iv_test_run
        iv_collect_messages      = gv_collect_messages
        is_master_data           = gt_customer
        " Master Data
      IMPORTING
        es_master_data_correct   = gs_correct
        es_message_correct       = gs_msg_correct
        es_master_data_defective = gs_defective
        es_message_defective     = gs_msg_error.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

    CLEAR wa_data.

  ENDLOOP.

ENDFORM. "data_to_bapi

Спасибо!

...