cancel
Showing results for 
Search instead for 
Did you mean: 

Equioment is replicating without status

Former Member
0 Kudos

Hello All,

When we ownload Equioment from ECC to CRM, it is getting replciated without status.

Can someone pelase let me know if it requires any setting in CRM to have the similat status in CRM please?

May be  a status profile for equioment!!?

Thanks a lot!

Regards,

KP.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi KP,

Only the following system statuses are downloaded:

    Available

    In the warehouse

    Assigned in delivery note

    At customer site

You have to use BAdI CRM_EQUI_LOAD method ENLARGE_INDOBJ_BDOC  which could be enhanced to read additional information from equipment. You can use the following sample code to read the status from the status from the equipment and updates the product master.

DATA: ls_equi    TYPE crmt_equi_mess,
        lt_status  TYPE comt_pr_status_maintain_tab,
        ls_status  TYPE comt_pr_status_maintain,
        ls_product TYPE comt_product_maintain_api.

  FIELD-SYMBOLS: <ls_status>           TYPE comt_pr_status_maintain,
                 <ls_prod_indobj_bdoc> TYPE comt_prod_indobj_bdoc.
*******************************************************************
* EQP_STAUS = 50 -> Marked for deletion (equipment will be deleted via archiving)
* in this case set the status I1104 (to archive) for the iobject
*******************************************************************
  LOOP AT it_equi_dmbdoc-equi INTO ls_equi WHERE equipment_flag = 'X' AND eqp_status = '50'.
    READ TABLE ct_message_ext ASSIGNING <ls_prod_indobj_bdoc> WITH KEY header-com_product-product_id = ls_equi-equnr.
    IF sy-subrc = 0.
      READ TABLE <ls_prod_indobj_bdoc>-header-status ASSIGNING <ls_status> WITH KEY stat = 'I1104'.
      IF sy-subrc = 4.
        IF NOT <ls_prod_indobj_bdoc>-header-com_product-product_guid IS INITIAL.
* read status from db
          CALL FUNCTION 'COM_PRD_STATUS_READ'
            EXPORTING
              iv_status_guid          = <ls_prod_indobj_bdoc>-header-com_product-product_guid
*             IV_ONLY_ACTIVE          = 'X'
            TABLES
              et_status               = lt_status
           EXCEPTIONS
             no_entry                = 1
             OTHERS                  = 2.

          IF sy-subrc <> 0.
            CALL FUNCTION 'CRM_EQUI_UPLOAD_ERROR_HANDLER'
              EXPORTING
                i_msg_id    = 'IB_CRM_UPLOAD_MSG'
                i_msg_no    = '029'
                i_msgv1     = 'ENLARGE_INDOBJ_BDOC'
              CHANGING
                c_error_seg = ct_error_segment.

            RAISE equi_load_badi_error.
          ELSE.
* any status found in db
            READ TABLE lt_status INTO ls_status WITH KEY stat = 'I1104'.
            IF sy-subrc = 0.
              IF NOT ls_status-inact IS INITIAL.
                CLEAR ls_status-inact.
                APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
              ENDIF.
            ELSE.
              ls_status-stat = 'I1104'.
              APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
            ENDIF.
          ENDIF.
        ELSE.
* no status found for new created object
          ls_status-stat = 'I1104'.
          APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
        ENDIF.
      ELSE.
* status found, check for inactive
        IF NOT <ls_status>-inact IS INITIAL.
          CLEAR <ls_status>-inact.
        ENDIF.
      ENDIF.
    ENDIF.

  ENDLOOP.
*******************************************************************
* EQP_STAUS = 40 -> Marked as inactive
* in this case set the status I1105 (inactive) for the iobject
*******************************************************************
  LOOP AT it_equi_dmbdoc-equi INTO ls_equi WHERE equipment_flag = 'X' AND eqp_status = '40'.
    READ TABLE ct_message_ext ASSIGNING <ls_prod_indobj_bdoc> WITH KEY header-com_product-product_id = ls_equi-equnr.
    IF sy-subrc = 0.
      READ TABLE <ls_prod_indobj_bdoc>-header-status ASSIGNING <ls_status> WITH KEY stat = 'I1105'.
      IF sy-subrc = 4.
        IF NOT <ls_prod_indobj_bdoc>-header-com_product-product_guid IS INITIAL.
* read status from db
          CALL FUNCTION 'COM_PRD_STATUS_READ'
            EXPORTING
              iv_status_guid          = <ls_prod_indobj_bdoc>-header-com_product-product_guid
*             IV_ONLY_ACTIVE          = 'X'
            TABLES
              et_status               = lt_status
           EXCEPTIONS
             no_entry                = 1
             OTHERS                  = 2.

          IF sy-subrc <> 0.
            CALL FUNCTION 'CRM_EQUI_UPLOAD_ERROR_HANDLER'
              EXPORTING
                i_msg_id    = 'IB_CRM_UPLOAD_MSG'
                i_msg_no    = '029'
                i_msgv1     = 'ENLARGE_INDOBJ_BDOC'
              CHANGING
                c_error_seg = ct_error_segment.

            RAISE equi_load_badi_error.
          ELSE.
* any status found in db
            READ TABLE lt_status INTO ls_status WITH KEY stat = 'I1105'.
            IF sy-subrc = 0.
              IF NOT ls_status-inact IS INITIAL.
                CLEAR ls_status-inact.
                APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
              ENDIF.
            ELSE.
              ls_status-stat = 'I1105'.
              APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
            ENDIF.
          ENDIF.
        ELSE.
* no status found for new created object
          ls_status-stat = 'I1105'.
          APPEND ls_status TO <ls_prod_indobj_bdoc>-header-status.
        ENDIF.
      ELSE.
* status found, check for inactive
        IF NOT <ls_status>-inact IS INITIAL.
          CLEAR <ls_status>-inact.
        ENDIF.
      ENDIF.
    ENDIF.

  ENDLOOP.