下列这段代码来自 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 变量中。