共计 3354 个字符,预计需要花费 9 分钟才能阅读完成。
REPORT znote_delete_tool. | |
PARAMETERS: id TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '2025', | |
type TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'OPSM', | |
lan TYPE stxh-tdospras OBLIGATORY DEFAULT 'E', | |
tdid TYPE stxh-tdid OBLIGATORY DEFAULT 'A002'. | |
TYPES: text_line(cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength) TYPE c. | |
DATA: lv_char32 TYPE char32, " CRMD_ORDERADM_H-guid, | |
lv_id LIKE id, | |
lv_guid TYPE crmd_orderadm_h-guid. | |
DATA: ls_return TYPE STANDARD TABLE OF bapiret2. | |
DATA: lt_lines TYPE STANDARD TABLE OF tline, | |
ls_line LIKE LINE OF lt_lines. | |
DATA: lt_objects_to_save TYPE crmt_object_guid_tab. | |
DATA: lt_objects_not_saved TYPE crmt_object_guid_tab. | |
DATA: lt_saved_objects TYPE crmt_return_objects. | |
lv_id = id. | |
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' | |
EXPORTING | |
input = lv_id | |
IMPORTING | |
output = lv_id. | |
SELECT SINGLE guid FROM crmd_orderadm_h INTO lv_guid WHERE object_id = id AND process_type = type. | |
IF sy-subrc <> 0. | |
WRITE: / 'No opportunity found' COLOR COL_GROUP. | |
RETURN. | |
ENDIF. | |
DATA: lt_text TYPE crmt_text_comt, | |
ls_text LIKE LINE OF lt_text, | |
ls_input_fields TYPE crmt_input_field, | |
lv_logical_key TYPE crmt_logical_key, | |
ls_field_names TYPE crmt_input_field_names. | |
DATA: lt_input_field_names TYPE crmt_input_field_names_tab, | |
ls_input_field_name LIKE LINE OF lt_input_field_names. | |
DATA: lt_input_fields TYPE crmt_input_field_tab. | |
ls_text-ref_handle = '0000000000'. | |
ls_text-ref_guid = lv_guid. | |
ls_text-ref_kind = 'A'. | |
ls_text-text_object = cl_crm_odata_oppt_constant=>gc_oppt_notes_tdobject. | |
ls_text-mode = 'D'. | |
ls_text-tdid = tdid. | |
ls_text-tdspras = lan. | |
ls_line-tdformat = '*'. | |
APPEND ls_line TO ls_text-lines. | |
APPEND ls_text TO lt_text. | |
CLEAR ls_input_fields. | |
ls_input_fields-ref_guid = lv_guid. | |
ls_input_fields-ref_kind = 'A'. | |
ls_input_fields-objectname = 'TEXTS'. | |
CONCATENATE ls_text-tdid ls_text-tdspras INTO lv_logical_key. | |
ls_input_fields-logical_key = lv_logical_key. " use handle or guid ? | |
CLEAR ls_input_fields-field_names. | |
ls_input_field_name-fieldname = 'LINES'. | |
APPEND ls_input_field_name TO ls_input_fields-field_names. | |
INSERT ls_input_fields INTO TABLE lt_input_fields. | |
CALL FUNCTION 'CRM_ORDER_MAINTAIN' | |
EXPORTING | |
it_text = lt_text | |
CHANGING | |
ct_input_fields = lt_input_fields | |
EXCEPTIONS | |
error_occurred = 1 | |
document_locked = 2 | |
no_change_allowed = 3 | |
no_authority = 4. | |
IF sy-subrc <> 0 . | |
WRITE: / 'text modify failed:' COLOR COL_NEGATIVE, sy-subrc COLOR COL_TOTAL. | |
RETURN. | |
ENDIF. | |
APPEND lv_guid TO lt_objects_to_save. | |
CALL FUNCTION 'CRM_ORDER_SAVE' | |
EXPORTING | |
it_objects_to_save = lt_objects_to_save | |
iv_update_task_local = abap_true | |
IMPORTING | |
et_saved_objects = lt_saved_objects | |
et_objects_not_saved = lt_objects_not_saved | |
EXCEPTIONS | |
document_not_saved = 1 | |
OTHERS = 2. | |
IF sy-subrc EQ 0 AND lt_saved_objects IS NOT INITIAL. | |
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | |
EXPORTING | |
wait = abap_true. | |
WRITE: / 'text changed successfully' COLOR COL_NEGATIVE. | |
ELSE. | |
WRITE: / 'text changed failed' COLOR COL_POSITIVE. | |
ENDIF. | |
BREAK-POINT. |
这段 SAP ABAP 代码的作用是批改 CRM 订单的文本。该程序蕴含了以下性能:
- 定义输出参数
id
、type
、lan
、tdid
,别离示意 CRM 订单的对象 ID、解决类型、语言和文本 ID。 - 定义类型
text_line
示意文本行。 - 定义变量
lv_char32
、lv_id
、lv_guid
别离示意长度为 32 的字符、对象 ID 和对象 GUID。定义变量ls_return
示意返回的音讯。 - 定义表类型
lt_lines
示意文本行,定义变量ls_line
为lt_lines
的行类型。 - 定义表类型
lt_objects_to_save
、lt_objects_not_saved
和lt_saved_objects
,别离示意待保留的对象、未保留的对象和保留胜利的对象。 - 将输出的
id
转换为字符类型。 - 从
crmd_orderadm_h
表中查问指定的 CRM 订单,并获取其 GUID。 - 定义变量
lt_text
示意文本内容,变量ls_text
示意文本行。 - 将文本行的属性赋值并增加到文本表中。
- 定义变量
ls_input_fields
示意输出字段,变量lv_logical_key
示意逻辑键,变量ls_field_names
示意字段名。将这些变量赋值后增加到输出字段表中。 - 调用函数模块
CRM_ORDER_MAINTAIN
,向 CRM 订单中增加文本内容。 - 将批改后的对象 GUID 增加到待保留对象表
lt_objects_to_save
中。 - 调用函数模块
CRM_ORDER_SAVE
,保留批改后的 CRM 订单。 - 判断保留是否胜利,如果胜利则调用函数模块
BAPI_TRANSACTION_COMMIT
提交事务。 - 设置断点以便调试。
总体来说,这段代码的作用是批改指定 CRM 订单的文本内容,并保留批改后的后果。
正文完