下列这段代码来自 SAP CRM ABAP 系统,用 ABAP 编写。
*&---------------------------------------------------------------------* *& Report ZNOTE_MASS_READ *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZNOTE_MASS_READ. DATA: lt_textdata TYPE COMT_TEXT_TEXTDATA_T, ls_textcom TYPE comt_text_textcom, lt_textcom TYPE comt_text_textcom_t, lv_name TYPE tdobname, lt_error TYPE comt_text_error_t, lt_alltexts TYPE comt_text_textdata_t, lv_guid TYPE crmt_object_guid, lv_char32 TYPE char32, lt_stxh TYPE STANDARD TABLE OF stxh, lt_stxh1 TYPE STANDARD TABLE OF stxh, lv_textname TYPE tdobname, lv_textname1 TYPE tdobname, lt_select TYPE /IWBEP/T_COD_SELECT_OPTIONS, ls_select LIKE LINE OF lt_select, lv_id TYPE crmd_orderadm_h-object_id value '2036'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_id IMPORTING output = lv_id. SELECT SINGLE guid INTO lv_guid FROM crmd_orderadm_h WHERE object_id = lv_id AND process_type = 'OPPT'. ASSERT sy-subrc = 0. lv_char32 = lv_guid. CONCATENATE lv_char32 '%' INTO lv_textname. CONCATENATE lv_char32 '*' INTO lv_textname1. SELECT * FROM stxh INTO TABLE lt_stxh WHERE tdobject EQ 'CRM_ORDERH' AND tdname LIKE lv_textname. ls_select-sign = 'I'. ls_select-option = 'CP'. ls_select-low = lv_textname1. APPEND ls_select TO lt_select. SELECT * FROM stxh INTO TABLE lt_stxh1 WHERE tdobject EQ 'CRM_ORDERH' AND tdname IN lt_select. LOOP AT lt_stxh1 ASSIGNING FIELD-SYMBOL(<item>). lv_name = lv_guid. CALL FUNCTION 'COM_TEXT_TIMESTAMP_SET' EXPORTING iv_tdobject = 'CRM_ORDERH' iv_tdid = <item>-tdid iv_tdspras = <item>-tdspras IMPORTING et_error = lt_error CHANGING cv_textname = lv_name. WRITE: / 'API returned: ', lv_name. WRITE: / 'OPEN SQL : ' , <item>-tdname. WRITE: / '***************************************'. ENDLOOP. CALL FUNCTION 'COM_TEXT_READ_ALL_API' IMPORTING ET_TEXTDATA = lt_textdata ET_ALLTEXTS = lt_alltexts CHANGING IT_TEXTCOM = lt_textcom. BREAK-POINT.
这段代码的作用是从 SAP CRM 系统中读取特定对象(在此示例中是 CRM 订单对象)中的所有文本,并通过调用 COM_TEXT_READ_ALL_API 函数将文本数据存储在 lt_textdata 和 lt_alltexts 变量中。代码的实现主要分为以下步骤:
从 crmd_orderadm_h 表中获取 process_type 为 ‘OPPT’ 且 object_id 为 lv_id 的记录的 GUID,存储在 lv_guid 变量中。
使用 lv_guid 构建匹配通配符的文本名称 lv_textname 和 lv_textname1。
通过 SELECT 语句从 STXH 表中检索符合 tdobject 为 ‘CRM_ORDERH’ 且 tdname 包含 lv_textname 通配符的记录,并将结果存储在 lt_stxh 表中。
使用 SELECT 语句从 STXH 表中检索符合 tdobject 为 ‘CRM_ORDERH’ 且 tdname 包含 lv_textname1 通配符的记录,并将结果存储在 lt_stxh1 表中。
遍历 lt_stxh1 表中的记录,使用 CALL FUNCTION ‘COM_TEXT_TIMESTAMP_SET’ 函数将文本名称与对象 GUID 关联,并输出调用结果和相应的文本名称。
最后通过调用 COM_TEXT_READ_ALL_API 函数获取对象中的所有文本数据,存储在 lt_textdata 和 lt_alltexts 变量中。