前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Opportunity text creation tool

Opportunity text creation tool

作者头像
Jerry Wang
发布2019-07-19 10:42:59
4140
发布2019-07-19 10:42:59
举报
知识共享许可协议
知识共享许可协议

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

Created by Jerry Wang, last modified on Jan 06, 2015

执行report,输入如下参数:

clipboard1
clipboard1

A代表 text determination procedure 取customizing里第一个change type为A的entry:

clipboard2
clipboard2

执行完毕后打印成功创建text message:

clipboard3
clipboard3

可到UI上查看成功创建的text:

clipboard4
clipboard4
clipboard5
clipboard5

source code如下:

代码语言:javascript
复制
REPORT ztool_text_create.
PARAMETERS: id      TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '1767',
            type    TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'ROPP',
            change  TYPE char1 OBLIGATORY DEFAULT 'A',
            content TYPE string OBLIGATORY LOWER CASE DEFAULT 'test'.
DATA: lt_guid_list                TYPE crmt_bsp_objectkey_tab.
DATA: lt_objects_to_save          TYPE crmt_object_guid_tab.
DATA: lt_objects_not_saved        TYPE crmt_object_guid_tab.
TYPES: text_line(cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength) TYPE c.
DATA: lt_text_table               TYPE TABLE OF text_line.
DATA: ls_text                     TYPE crmt_text_com.
DATA: lt_text                     TYPE crmt_text_comt.
DATA: ls_log_key_text_int         TYPE crmst_text_log_int_key.
DATA: ls_input_fields             TYPE crmt_input_field.
DATA: lv_logical_key              TYPE crmt_logical_key.
DATA: ls_field_names              TYPE crmt_input_field_names.
DATA: lv_note                     TYPE string.
DATA: lt_orderadmh                TYPE crmt_orderadm_h_comt.
DATA: lt_input_fields             TYPE crmt_input_field_tab.
DATA: ls_input_field              TYPE crmt_input_field.
DATA: lt_input_field_names        TYPE crmt_input_field_names_tab.
DATA: ls_input_field_names        TYPE crmt_input_field_names.
DATA: lr_busi_exception           TYPE REF TO /iwbep/cx_mgw_busi_exception.
DATA: lt_saved_objects            TYPE crmt_return_objects.
DATA: lv_tdid                     TYPE tdid.
DATA: ls_notes                    TYPE crmt_odata_oppt_notes.
DATA: lv_temp                     TYPE CHAR3.
CONSTANTS: BEGIN OF cs_change_type,
              display type char1 VALUE 'C',
              log TYPE char1 value 'P',
              paste TYPE char1 value 'A',
           END OF cs_change_type.
INITIALIZATION.
    lv_temp = cs_change_type.
FORM get_guid USING iv_id LIKE id iv_type LIKE type CHANGING cv_guid TYPE crmd_orderadm_h-guid.
  SELECT SINGLE guid FROM crmd_orderadm_h INTO cv_guid WHERE object_id = iv_id AND process_type = iv_type.
ENDFORM.
FORM get_text_determine_id USING iv_process_type TYPE crmt_process_type iv_change TYPE char1 CHANGING cv_id TYPE tdid.
  DATA: lv_text_procedure     TYPE comt_text_det_procedure.
  DATA: lt_text               TYPE STANDARD TABLE OF comc_text_pd.
  DATA: ls_text               TYPE comc_text_pd.
  SELECT SINGLE text_procedure INTO lv_text_procedure FROM crmc_proc_type
      WHERE process_type = iv_process_type
        AND object_type = cl_crm_odata_oppt_constant=>gc_oppt_bus_object.
  CHECK sy-subrc EQ 0.
  SELECT object textprocedure textid seqno changeable INTO CORRESPONDING FIELDS OF TABLE lt_text
    FROM comc_text_pd
    WHERE object        = cl_crm_odata_oppt_constant=>gc_oppt_notes_tdobject
      AND textprocedure = lv_text_procedure
      AND changeable    = iv_change.
  CHECK sy-subrc EQ 0.
  SORT lt_text BY seqno.
  READ TABLE lt_text INTO ls_text INDEX 1.
  IF sy-subrc EQ 0.
    cv_id = ls_text-textid.
  ENDIF.
ENDFORM.
START-OF-SELECTION.
  IF NOT ( change CA lv_temp ).
     WRITE:/ 'Invalid change type: ', change COLOR COL_NEGATIVE.
     RETURN.
  ENDIF.
  PERFORM get_guid USING id type CHANGING ls_notes-header_guid.
  PERFORM get_text_determine_id USING type change CHANGING lv_tdid.
  ls_notes-content = content.
  APPEND ls_notes-header_guid TO lt_objects_to_save.
  APPEND ls_notes-header_guid TO lt_guid_list.
  CLEAR lt_input_field_names.
  ls_input_field_names-fieldname = 'LINES'.
  APPEND ls_input_field_names TO lt_input_field_names.
  CLEAR ls_input_field_names.
  ls_input_field_names-fieldname = 'TDFORM'.
  APPEND ls_input_field_names TO lt_input_field_names.
  CLEAR ls_input_field_names.
  ls_input_field_names-fieldname = 'TDID'.
  APPEND ls_input_field_names TO lt_input_field_names.
  CLEAR ls_input_field_names.
  ls_input_field_names-fieldname = 'TDSPRAS'.
  APPEND ls_input_field_names TO lt_input_field_names.
  CLEAR ls_input_field_names.
  ls_input_field_names-fieldname = 'TDSTYLE'.
  APPEND ls_input_field_names TO lt_input_field_names.
  CLEAR ls_input_field_names.
  ls_text-ref_handle = '0000000000'.
  ls_text-ref_guid = ls_notes-header_guid.
  ls_text-ref_kind = 'A'.
  ls_text-tdid = lv_tdid.
  ls_text-tdspras = sy-langu.
  ls_text-mode = 'A'.
  lv_note = ls_notes-content.
  DO.
    APPEND lv_note TO lt_text_table[].
    SHIFT lv_note BY cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength PLACES LEFT.
    IF ( lv_note IS INITIAL ).
      EXIT.
    ENDIF.
  ENDDO.
  CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
    EXPORTING
      language    = sy-langu
*     LF          = ' '
    TABLES
      text_stream = lt_text_table
      itf_text    = ls_text-lines.
  CLEAR ls_input_fields.
  ls_input_fields-ref_guid = ls_notes-header_guid.
  ls_input_fields-ref_kind = 'A'.
  ls_input_fields-objectname = 'TEXTS'.
  ls_log_key_text_int-tdid = ls_text-tdid.
  ls_log_key_text_int-tdspras = ls_text-tdspras.
  lv_logical_key = ls_log_key_text_int.
  ls_input_fields-logical_key = lv_logical_key.
  CLEAR ls_input_fields-field_names.
  APPEND LINES OF lt_input_field_names TO ls_input_fields-field_names.
  INSERT ls_input_fields INTO TABLE lt_input_fields.
  APPEND ls_text TO lt_text.
  CLEAR ls_text.
  CALL FUNCTION 'CRM_ORDER_MAINTAIN'
    EXPORTING
      it_text           = lt_text
    CHANGING
      ct_orderadm_h     = lt_orderadmh
      ct_input_fields   = lt_input_fields
    EXCEPTIONS
      error_occurred    = 1
      document_locked   = 2
      no_change_allowed = 3
      no_authority      = 4
      OTHERS            = 5.
  ASSERT sy-subrc EQ 0.
  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.
  ASSERT sy-subrc EQ 0.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = abap_true.
  WRITE: / 'Text created successfully'.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang, last modified on Jan 06, 2015
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档