如何调用CRM_STATUS_READ传入crmd_orderadm_h的GUID获取产品状态
SAP CRM函数模块
CRM_STATUS_READ使用指南(基于CRMD_ORDERADM_H的GUID查询状态) 核心参数填充说明
CRM_STATUS_READ不能直接接收CRMD_ORDERADM_H的GUID字段作为入参,需要先完成参数构造:
OBJNR入参构造:CRM订单对象号有固定拼接规则,为固定前缀CRM加CRMD_ORDERADM_H的32位字符格式GUID,示例构造代码:
DATA: lv_objnr TYPE crm_jsto-objnr. * 若GUID为16位RAW格式,可先调用GUID_CONVERT函数转为32位字符格式再拼接 CONCATENATE 'CRM' l_r_crmd_orderadm_h-guid INTO lv_objnr.
- 其他参数配置说明
- 仅需要查询当前生效状态时,可将
ONLY_ACTIVE参数设为'X',自动过滤历史无效状态 - 状态结果通过
TABLES参数下的STATUS返回,对应内表类型为CRM_JSTAT_T,可提前定义对应结构接收结果
- 仅需要查询当前生效状态时,可将
完整修改后代码示例
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, lv_objnr TYPE crm_jsto-objnr, lt_status TYPE STANDARD TABLE OF jstat, " 存储返回的状态结果 ls_status TYPE jstat. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. LOOP AT i_t_crmd_orderadm_h INTO l_r_crmd_orderadm_h. " 构造OBJNR入参 CONCATENATE 'CRM' l_r_crmd_orderadm_h-guid INTO lv_objnr. CALL FUNCTION 'CRM_STATUS_READ' EXPORTING objnr = lv_objnr ONLY_ACTIVE = 'X' " 按需开启,仅返回激活状态 TABLES STATUS = lt_status EXCEPTIONS OBJECT_NOT_FOUND = 1 OTHERS = 2. IF sy-subrc = 0. " 处理返回的状态结果,写入输出结构 LOOP AT lt_status INTO ls_status. " 此处补充业务逻辑,例如匹配状态码、写入输出表e_t_out ENDLOOP. ENDIF. ENDLOOP. ENDFORM.
常见注意事项
- 若
CRMD_ORDERADM_H中取出的GUID为16位RAW格式,需要先调用GUID_CONVERT函数转换为32位字符格式再拼接OBJNR前缀 - 返回的
STATUS内表中STAT字段为状态内部编码,若需要获取状态描述,可调用CRM_STATUS_TEXT_GET函数传入状态码和状态概要(STSMA)查询
内容的提问来源于stack exchange,提问作者Huy Vu Quoc
相关产品推荐
相关产品推荐

