Sample ABAP Program to Update Customer with CMD_EI_API

SAP CRM e1459022344657

This is a sample ABAP program to Update Customer Or Person / contact with the SAP API Class CMD_EI_API for Customer Modification.
First let’s introduce the main Class Methods , then a sample ABAP Program showing how to use the CMD_EI_API class to update SAP Customer Data.

Class CMD_EI_API Methods

The list of CMD_EI_API Methods will be:
[table tablesorter=”o” class=”table table-border”]
Method, Description
PREPARE_SALES_DATA?, Fill Internal Tables of Sales Data
PROCESS_COMPANY_DATA?, Actual Updating of Company Code Data
PROCESS_KNAS?, Read KNAS Data
WORKLIST_CUSTOMER_MAINTAIN?, Call Function Module WORKLIST_CUSTOMER_MAINTAIN
PROCESS_KNAT?, Read KNAT Data
PROCESS_KNB5?, Read KNB5 Data
PROCESS_KNBK?, Read KNBK Data
PROCESS_KNBW?, Read KNBW Data
PROCESS_KNEX?, Read KNEX Data
PROCESS_KNVA?, Read KNVA Data
PROCESS_KNVD?, Read KNVD Data
PROCESS_KNVI?, Read KNVI Data
UPDATE_VENDOR?, Change Linked Vendors
UPDATE_STRUC_OF_TABLE?, Write Data on Given Table to Internal Structure
UPDATE_SALES_TEXTS?, Update Sales Texts
UPDATE_SALES_DATA?, Update Sales Data
UPDATE_MODULES_SINGLE?, Call Update for a Customer
UPDATE_MODULES?, Call All Necessary Update Modules
PROCESS_KNVK?, Read KNVK Data
PROCESS_KNVP?, Read KNVP Data
PROCESS_SALES_DATA?, Actual Updating of Sales Data
PROCESS_VCKUN_VCNUM?, Read KNAS Data
SET_KNA1_CONFS?, Fill Field KNA1
SET_KNA1_CONFS_DIRECT?, Set Confirmation Flag Directly Without Checks
UPDATE_GENERAL_DATA?, Update General Data
UPDATE_COMPANY_DATA?, Update Company Code Data
UPDATE_COMPANY_CODE_TEXTS?, Update Accounting Texts
UPDATE_CENTRAL_TEXTS?, Update Central Texts
UPDATE_CENTRAL_PARTNER_TEXTS?, Update Central Partner Texts
UPDATE_ADDRESS?, Update Address
UNLOCK?, Unlock Customer
STRUC_KNVV_COMPLETE?, Complete KNVV
STRUC_KNVK_COMPLETE?, Complete KNVK
STRUC_KNB1_COMPLETE?, Complete KNB1
SET_KNB1_CONFS?, Fill Field KNB1
SET_LOCK?, Write Lock Table
STRUC_KNA1_COMPLETE?, Complete KNA1
ADDRESSES_COMPLETE?, Complete Addresses
ADDR_DELETE?, Delete Contact Person Address
ADDR_PERSONAL_DELETE?, Delete Contact Person Address
ADDR_PERS_COMP_DELETE?, Delete Contact Person Address
BUILD_ADDRESS_REFERENCE?, Create Address Reference
BUILD_PERSON_REFERENCE?, Create Address Reference
CHECK_SENSITIVE_FIELD_KNA1?, Check Sensitive Fields KNA1
CHECK_SENSITIVE_FIELD_KNAS?, Check Sensitive Fields KNAS
CHECK_SENSITIVE_FIELD_KNB1?, Check Sensitive Fields KNB1
CHECK_SENSITIVE_FIELD_KNB5?, Check Sensitive Fields KNB5
CHECK_SENSITIVE_FIELD_KNBK?, Check Sensitive Fields KNBK
CLEAR_UNCHANGED_CUSTOMER_DATA?, Delete Customer Data if Unchanged
COMPLETE_AND_CHECK?, Complete and Checks for All Supported Tables
CUSTOMER_ADDRESS?, Update Customer Address
CUSTOMER_BTE_1320?, Trigger function module OPEN_FI_PERFORM_00001320_E
CUSTOMER_BTE_1321?, Call Function Module OPEN_FI_PERFORM_00001321_E
CUSTOMER_BTE_1340?, Call Function Module OPEN_FI_PERFORM_00001340_E
CUSTOMER_CHDOC_CREATE?, Call Function Module DEBI_WRITE_DOCUMENT
CUSTOMER_INSERT?, Call Function Module CUSTOMER_INSERT
PREPARE_GENERAL_DATA?, Fill Tables with General Data
PREPARE_COMPANY_CODE_DATA?, Fill Internal Tables of Company Code Data
PARTNER_ADDRESSES?, Update Partner Addresses (KNVK)
MAINTAIN_TEXT?, Create/Update SAPscript Text in Catalog. COMMIT_TEXT Needed
MAINTAIN_SINGLE?, Maintain a Customer
MAINTAIN_DIRECT_INPUT?, Manage Customer Master Data Using BAPI
MAINTAIN_BAPI?, Manage Customer Master Data Using BAPI
MAINTAIN?, Manage Customer Master Data
LOCK?, Lock Customer
KNKK_INSERT?, Generate CreditMgmt Master Data Entry in Credit Control Area
INITIALIZE?, Initialize Global and Current Customer Buffer
GET_NUMBER?, Get Customer Number
GET_LOCK?, Read Lock Table
GET_KTOKD?, Get Account Group Customer from Buffer and/or Database
GET_CRITICAL_ROLES?, Determine Critical Roles
GET_CONTACT_NUMBER?, Get contact person number
GET_ADDRESS_NUMBER?, Get Address Number
CUSTOMER_UPDATE?, Call Function Module CUSTOMER_UPDATE
[/table]

Update Customer with CMD_EI_API Sample ABAP Coding

This sample covers updating customer’s contacts using the Class API CMD_EI_API.

  
  DATA: ls_knvp                   TYPE knvp.
  DATA: ls_master_data            TYPE cmds_ei_main,
        ls_master_data_correct    TYPE cmds_ei_main,
        ls_message_correct        TYPE cvis_message,
        ls_master_data_defective  TYPE cmds_ei_main,
        ls_message_defective      TYPE cvis_message.

  DATA: lt_customers              TYPE cmds_ei_extern_t,
        ls_customer               TYPE cmds_ei_extern,
        ls_sales_data             TYPE cmds_ei_cmd_sales,
        lt_sales                  TYPE cmds_ei_sales_t,
        ls_sales                  TYPE cmds_ei_sales,
        lt_functions              TYPE cmds_ei_functions_t,
        ls_function               TYPE cmds_ei_functions.


"it_relation contains the list of Contacts to uplaod 

 LOOP AT it_relation ASSIGNING <fs_rel>.
    MOVE <fs_rel> TO ls_rel.

    AT NEW kunnr.

      CLEAR lv_vkorg.

      REFRESH : lt_functions, lt_sales.
      CLEAR: ls_customer, ls_sales_data.

      SELECT SINGLE vkorg FROM knvp
        INTO lv_vkorg
        WHERE kunnr = ls_rel-kunnr.

      ls_customer-header-object_instance-kunnr = ls_rel-kunnr.
      ls_customer-header-object_task  = 'U'. " I/U/D
      ls_sales_data-current_state = space.
      ls_sales-task = 'M' .
      ls_sales-data_key-vkorg = lv_vkorg.
      ls_sales-data_key-vtweg = '01'.
      ls_sales-data_key-spart = '01'.
      ls_sales-functions-current_state = space.

    ENDAT.

    CLEAR ls_function.
    " Suppression
    IF NOT ( sy-datum GE ls_rel-date_debut AND sy-datum LE ls_rel-date_fin ) .
      ls_function-task = 'D'. " I/U/D/M           
    ENDIF.

    IF ls_function-task NE 'D'.
      SELECT SINGLE * FROM knvp INTO ls_knvp
        WHERE kunnr = ls_rel-kunnr
        AND   ( kunn2 = ls_rel-kunn2 OR parnr = ls_rel-kunn2 ).
      IF sy-subrc NE 0 .
        ls_function-task = 'I'.
      ELSE.
        ls_function-task = 'U'.
      ENDIF.
    ENDIF.

    ls_function-data_key-parvw = ls_rel-parvw. 
    ls_function-data-partner   = ls_rel-kunn2. 
*    ls_function-datax-partner  = 'X'.          

    APPEND ls_function TO lt_functions.

    AT END OF kunnr.

      ls_sales-functions-functions = lt_functions[].
      APPEND ls_sales TO lt_sales.

      ls_sales_data-sales[]  = lt_sales[].
      ls_customer-sales_data = ls_sales_data.
      APPEND ls_customer TO lt_customers.
    ENDAT.

  ENDLOOP.

  ls_master_data-customers = lt_customers[].


  cmd_ei_api=>initialize( ).


  LOOP AT lt_customers INTO ls_customer.
    cmd_ei_api=>lock( iv_kunnr = ls_customer-header-object_instance-kunnr ).
  ENDLOOP.
  
  " Update Customer with CMD_EI_API
  CALL METHOD cmd_ei_api=>maintain_bapi
    EXPORTING
      iv_test_run              = space
      iv_collect_messages      = 'X'
      is_master_data           = ls_master_data
    IMPORTING
      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     = es_message_defective.

  IF es_message_defective IS INITIAL.
    BREAK-POINT.
    COMMIT WORK.
  ELSE.
    BREAK-POINT.
  ENDIF.

  LOOP AT lt_customers INTO ls_customer.
    cmd_ei_api=>unlock( iv_kunnr = ls_customer-header-object_instance-kunnr ) .
  ENDLOOP.

Author: John

Hi. I have been working as SAP Technical and functional for a decade. Through this blog, I am trying to share with you my experience. Hopefull, it makes your ways easier path ... Sab

Exit mobile version