Search code examples
abapfunction-modulesap-crm

How to use CRM_STATUS_READ to get product status?


I want to know that How to use the Function Module CRM_STATUS_READ. In table crmd_orderadm_h have a field GUID and I want to show status by passing the GUID to the FM CRM_STATUS_READ.

I don't know how to fill parameters in this FM.

FORM create_output USING i_t_crmd_orderadm_h TYPE g_tt_orderadm_h
            CHANGING e_t_out             TYPE g_tt_out.
DATA: l_r_crmd_orderadm_h TYPE g_ty_orderadm_h,
    l_r_out             TYPE g_ty_out.
        .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

LOOP AT i_t_crmd_orderadm_h INTO l_r_crmd_orderadm_h.
  CALL FUNCTION 'CRM_STATUS_READ'
    EXPORTING
*       CLIENT                 = SY-MANDT
        objnr                  = 
*       ONLY_ACTIVE            = ' '
*     IMPORTING
*       OBTYP                  =  
*       STSMA                  =
*       STONR                  =  
*       ET_JEST_BUF            =
*     TABLES
*       STATUS                 =
ENDFORM.

Best Regards, Huy Vu


Solution

  • To call this module you gotta know two things: GUID and fragment GUID. The latter can be taken from product attributes (table COMM_PCAT_REL).

    Here is the sample:

    DATA(lv_guid) = get_guid_by_id( '11111111111' ).
    
    DATA: lv_frg_guid TYPE comm_pr_frg_rod-fragment_type VALUE '37D58F1B772D53A4E10000009B38FA0B',
          rt_stat     TYPE ttjstat.
    
    DATA: lv_objnr  TYPE comm_pr_frg_rod-status_object,
          lt_status TYPE STANDARD TABLE OF jstat.
    
    SELECT SINGLE status_object FROM comm_pr_frg_rod 
      INTO lv_objnr WHERE product_guid = lv_guid AND fragment_type = lv_frg_guid.
    
    CHECK sy-subrc = 0.
    
    CALL FUNCTION 'CRM_STATUS_READ'
      EXPORTING
        objnr            = lv_objnr
      TABLES
        status           = rt_status
      EXCEPTIONS
        object_not_found = 1.