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

One order text browser tool

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

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

Created by Jerry Wang on Dec 24, 2014

执行report:

image
image

该report以XML的方式输出该one order instance拥有的所有text:

image
image

上图的A002和Note对应SPRO里的如下customizing:

image
image

source code:

代码语言:javascript
复制
REPORT tool_text_browse_one_order.
 
PARAMETERS: id   TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '1656',
 
            type TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'ASOP'.
 
 
TYPES: text_line(cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength)  TYPE c.
 
TYPES: BEGIN OF ty_text_detail,
 
         tdid    TYPE stxh-tdid,
 
         tdspras TYPE stxh-tdspras,
 
         tdfuser TYPE stxh-tdfuser,
 
         tdfdate TYPE stxh-tdfdate,
 
         tdftime TYPE stxh-tdftime,
 
         tdluser TYPE stxh-tdluser,
 
         tdldate TYPE stxh-tdldate,
 
         tdltime TYPE stxh-tdltime,
 
         tdtext  TYPE ttxit-tdtext,
 
         content TYPE string,
 
       END OF ty_text_detail.
 
DATA: lv_char32   TYPE char32, " CRMD_ORDERADM_H-guid,
 
      lv_textname TYPE string,
 
      lv_id       LIKE id,
 
      lv_guid     TYPE crmd_orderadm_h-guid,
 
      lt_stxh     TYPE STANDARD TABLE OF stxh,
 
      ls_stxh     LIKE LINE OF lt_stxh,
 
      ls_notes    TYPE crmt_odata_oppt_notes.
 
DATA: ls_thead                TYPE thead.
 
DATA: lt_text_table           TYPE TABLE OF text_line.
 
 
DATA: ls_bupa_addr            TYPE bapiaddr3.
 
DATA: ls_return               TYPE STANDARD TABLE OF bapiret2.
 
DATA: lt_lines                TYPE STANDARD TABLE OF tline.
 
DATA: et_notes TYPE crmt_odata_oppt_notest.
 
DATA: ls_text_detail TYPE ty_text_detail,
 
      lt_text_detail TYPE STANDARD TABLE OF ty_text_detail.
 
DATA: lt_text_object TYPE STANDARD TABLE OF ttxit,
 
      ls_text_object LIKE LINE OF lt_text_object,
 
      lv_xml         TYPE string.
 
 
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.
 
 
lv_char32 = lv_guid.
 
 
CONCATENATE lv_char32 '%' INTO lv_textname.
 
 
SELECT * FROM stxh INTO TABLE lt_stxh
 
                   WHERE  tdobject  EQ   'CRM_ORDERH'
 
                     AND  tdname    LIKE lv_textname.
 
 
SELECT tdid tdtext FROM ttxit INTO CORRESPONDING FIELDS OF TABLE lt_text_object
 
   WHERE tdspras = sy-langu
 
     AND tdobject  = cl_crm_odata_oppt_constant=>gc_oppt_notes_tdobject.
 
 
LOOP AT lt_stxh INTO ls_stxh.
 
  ls_notes-header_guid = lv_char32.
 
  MOVE-CORRESPONDING ls_stxh TO ls_text_detail.
 
  READ TABLE lt_text_object INTO ls_text_object WITH KEY tdid = ls_stxh-tdid.
 
  IF sy-subrc = 0.
 
    ls_text_detail-tdtext = ls_text_object-tdtext.
 
  ENDIF.
 
 
  CALL FUNCTION 'BAPI_USER_GET_DETAIL'
 
    EXPORTING
 
      username = ls_stxh-tdfuser
 
    IMPORTING
 
      address  = ls_bupa_addr
 
    TABLES
 
      return   = ls_return.
 
 
  ls_notes-creator = ls_bupa_addr-fullname.
 
 
  CONVERT DATE ls_stxh-tdfdate TIME ls_stxh-tdftime INTO TIME STAMP ls_notes-created_at TIME ZONE 'UTC'.
 
 
  CLEAR lt_lines.
 
  CALL FUNCTION 'READ_TEXT'
 
    EXPORTING
 
      id       = ls_stxh-tdid
 
      language = ls_stxh-tdspras
 
      name     = ls_stxh-tdname
 
      object   = ls_stxh-tdobject
 
    IMPORTING
 
      header   = ls_thead
 
    TABLES
 
      lines    = lt_lines
 
    EXCEPTIONS
 
      OTHERS   = 1.
 
  CHECK sy-subrc EQ 0.
 
  CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
 
    TABLES
 
      itf_text    = lt_lines
 
      text_stream = lt_text_table.
 
  CONCATENATE LINES OF lt_text_table INTO ls_notes-content RESPECTING BLANKS.
 
  ls_text_detail-content = ls_notes-content.
 
  APPEND ls_text_detail TO lt_text_detail.
 
 
  CLEAR: ls_notes, ls_stxh, lt_lines, lt_text_table, ls_thead, ls_bupa_addr, ls_text_detail.
 
ENDLOOP.
 
 
CALL TRANSFORMATION id SOURCE data = lt_text_detail RESULT XML lv_xml.
 
CALL METHOD cl_demo_output=>display_xml( lv_xml ).

One order text change tool Created by Jerry Wang, last modified on Jan 01, 2015 使用report 修改之前: 执行report, report执行成功: UI上check: enable overwrite后再执行: source code: REPORT tool_text_change_one_order. PARAMETERS: id TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '1656', type TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'ASOP', tid TYPE stxh-tdname OBLIGATORY DEFAULT '0090FA0D8DC21EE3ABCE672A80C1470C', new TYPE string OBLIGATORY DEFAULT 'new' LOWER CASE, over TYPE char1 AS CHECKBOX DEFAULT 'X'. TYPES: text_line(cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength) TYPE c. DATA: lv_char32 TYPE char32, " CRMD_ORDERADM_H-guid, lv_textname TYPE string, lv_id LIKE id, lv_guid TYPE crmd_orderadm_h-guid, lt_stxh TYPE STANDARD TABLE OF stxh, ls_stxh LIKE LINE OF lt_stxh, ls_notes TYPE crmt_odata_oppt_notes. DATA: ls_thead TYPE thead. DATA: lt_text_table TYPE TABLE OF text_line. DATA: ls_bupa_addr TYPE bapiaddr3. 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. lv_char32 = lv_guid. CONCATENATE lv_char32 '%' INTO lv_textname. SELECT * FROM stxh INTO TABLE lt_stxh WHERE tdobject EQ 'CRM_ORDERH' AND tdname EQ tid. IF lines( lt_stxh ) <> 1. WRITE: / 'Cound not read given text' COLOR COL_NEGATIVE. RETURN. ENDIF. READ TABLE lt_stxh INTO ls_stxh INDEX 1. CALL FUNCTION 'READ_TEXT' EXPORTING id = ls_stxh-tdid language = ls_stxh-tdspras name = ls_stxh-tdname object = ls_stxh-tdobject IMPORTING header = ls_thead TABLES lines = lt_lines EXCEPTIONS OTHERS = 1. CHECK sy-subrc EQ 0. CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT' TABLES itf_text = lt_lines text_stream = lt_text_table. CONCATENATE LINES OF lt_text_table INTO ls_notes-content RESPECTING BLANKS. 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. MOVE-CORRESPONDING ls_stxh TO ls_text. ls_text-lines = lt_lines. ls_text-mode = 'B'. ls_line-tdformat = '*'. ls_line-tdline = new. IF over = abap_true. CLEAR: ls_text-lines. ENDIF. 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. "APPEND LINES OF lt_input_field_names 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.

One order text display tool

Created by Jerry Wang, last modified on Dec 24, 2014

执行report,输入opportunity id, process type和text guid:

clipboard1
clipboard1

输出文本内容:

clipboard2
clipboard2

text guid可以通过one order text browser tool来获得:

clipboard3
clipboard3

source code:

代码语言:javascript
复制
REPORT znote_display_tool.
 
 
PARAMETERS: id   TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '1656',
 
            type TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'ASOP',
 
            tid TYPE stxh-tdname OBLIGATORY DEFAULT '0090FA0D8DC21EE3ABCE672A80C1470C'.
 
 
TYPES: text_line(cl_crm_odata_oppt_constant=>gc_oppt_notes_textlength)  TYPE c.
 
 
DATA: lv_char32   TYPE char32, " CRMD_ORDERADM_H-guid,
 
      lv_textname TYPE string,
 
      lv_id       LIKE id,
 
      lv_guid     TYPE crmd_orderadm_h-guid,
 
      lt_stxh     TYPE STANDARD TABLE OF stxh,
 
      ls_stxh     LIKE LINE OF lt_stxh,
 
      ls_notes    TYPE crmt_odata_oppt_notes.
 
DATA: ls_thead                TYPE thead.
 
DATA: lt_text_table           TYPE TABLE OF text_line.
 
 
DATA: ls_bupa_addr            TYPE bapiaddr3.
 
DATA: ls_return               TYPE STANDARD TABLE OF bapiret2.
 
DATA: lt_lines                TYPE STANDARD TABLE OF tline.
 
 
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.
 
 
lv_char32 = lv_guid.
 
 
CONCATENATE lv_char32 '%' INTO lv_textname.
 
 
SELECT * FROM stxh INTO TABLE lt_stxh
 
                   WHERE  tdobject  EQ   'CRM_ORDERH'
 
                     AND  tdname    EQ tid.
 
 
IF lines( lt_stxh ) <> 1.
 
  WRITE: / 'Cound not read given text' COLOR COL_NEGATIVE.
 
  RETURN.
 
ENDIF.
 
 
READ TABLE lt_stxh INTO ls_stxh INDEX 1.
 
 
CALL FUNCTION 'READ_TEXT'
 
  EXPORTING
 
    id       = ls_stxh-tdid
 
    language = ls_stxh-tdspras
 
    name     = ls_stxh-tdname
 
    object   = ls_stxh-tdobject
 
  IMPORTING
 
    header   = ls_thead
 
  TABLES
 
    lines    = lt_lines
 
  EXCEPTIONS
 
    OTHERS   = 1.
 
CHECK sy-subrc EQ 0.
 
CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
 
  TABLES
 
    itf_text    = lt_lines
 
    text_stream = lt_text_table.
 
CONCATENATE LINES OF lt_text_table INTO ls_notes-content RESPECTING BLANKS.
 
 
CALL METHOD cl_demo_output=>display_text( ls_notes-content ).
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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