大家在编程过程中,一定经常用到READ_TEXT这个函数来读取长文本,下面我介绍的是如果自己定义一个长文本object和ID,自己储存长文本。
在项目中,做了很多功能性开发,用户要写一些备注或者是审批意见和建议,自定义表里面储存字段的长度是有限的,这个时候能自定义长文本就很实用了。
第一步:建长文本的OBJECT,TCODE SE75,选择‘文本对象和识别码’,点击change,这个时候就会看到SAP系统中存在的所有长文本OBJECT,点‘新建’,输入文本对象,描述,选择保存状态是更新,选择编辑器应用格式是TA,行宽选一下,回车,搞定
第二步:建长文本的ID,双击刚刚创建的OBJECT,点新建,就可以创建ID了
第三步:先READ_TEXT,如果sy-subrc = 0,说明可以读到,如果不等于0,就说明还没有写长文本,那就可以用INIT_TEXT函数先初始化一下,再EDIT_TEXT编辑一下,最后SAVE_TEXT保存一下就OK了.
长文本的编辑能做到:第二次编辑的时候,第一次编辑的内容都是灰色的,这样就可以用来写审批意见。也可以做到,第二次编辑的时候,第一次的编辑也可以修改,这由几个参数决定。
SAP的标准例子:SDTEXTE,可以参考
--------------------------------------------------------------------------------------
在屏幕上加一个custom control name ZCBOX
PBO事件 显示长文本编辑框
module mod_custom_control output. data: lv_dmode type xfeld. "Display mode. ** Get display mode. if t340-trtyp = 'H'. lv_dmode = space. elseif t340-trtyp = 'V'. lv_dmode = space. elseif t340-trtyp = 'A'. lv_dmode = 'X'. endif. ** Get what input in the textedit. perform frm_read_text. ** Text editor set. call function 'RH_EDITOR_SET' exporting repid = sy-repid dynnr = sy-dynnr controlname = 'ZCBOX' max_cols = 79 show_tool = 'X' show_status = 'X' display_mode = lv_dmode tables lines = gt_lines exceptions create_error = 1 internal_error = 2 others = 3. endmodule. " MOD_CUSTOM_CONTROL OUTPUT
form frm_read_text . data: lv_name like thead-tdname. "Name. ** Object name. clear: lv_name. lv_name = mgef-stoff. ** Read text. if gv_enter_flg eq 'X'. clear gt_lines. call function 'RH_EDITOR_GET' exporting controlname = 'ZCBOX' tables lines = gt_lines exceptions internal_error = 1 others = 2. clear gv_enter_flg. else. call function 'READ_TEXT' exporting id = 'ZHAZ' language = 'E' name = lv_name object = 'ZHAZARDMAT' tables lines = gt_text exceptions id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 others = 8. if sy-subrc eq 0. ** Transfer text. loop at gt_text into gs_text. gs_lines = gs_text-tdline. append gs_lines to gt_lines. clear: gs_text, gs_lines. endloop. endif. endif. endform. " FRM_READ_TEXT
PAI事件 输入后进行保存
module mod_save_text input. perform frm_save_text using gv_action_mode. endmodule. " MOD_SAVE_TEXT INPUT "gv_action_mode 是状态 V H A tcode的类型 代表新建 修改 或者 显示 form frm_save_text using iv_mode type c. clear gt_lines. call function 'RH_EDITOR_GET' exporting controlname = 'ZCBOX' tables lines = gt_lines exceptions internal_error = 1 others = 2. data: lv_name like thead-tdname. "Name. data: gs_header like thead. "SAPscript: Text Header. ** Transfer data to header. clear: gs_header, lv_name. lv_name = viqmel-qmnum. gs_header-tdobject = 'ZT2O'. gs_header-tdname = lv_name. gs_header-tdid = 'ZTOO'. gs_header-tdspras = 'E'. if iv_mode = 'H'. "Create. gs_header-tdfuser = sy-uname. gs_header-tdfdate = sy-datum. gs_header-tdftime = sy-uzeit. gs_header-tdospras = 'E'. else. gs_header-tdluser = sy-uname. gs_header-tdldate = sy-datum. gs_header-tdltime = sy-uzeit. endif. ** Transfer data. clear: gt_text. loop at gt_lines into gs_lines. gs_text-tdformat = '/'. gs_text-tdline = gs_lines. append gs_text to gt_text. clear: gs_text, gs_lines. endloop. ** Save text. call function 'SAVE_TEXT' exporting client = sy-mandt header = gs_header insert = ' ' savemode_direct = ' ' owner_specified = ' ' local_cat = ' ' tables lines = gt_text exceptions id = 1 language = 2 name = 3 object = 4 others = 5. ** Check save status. if sy-subrc ne 0. call function 'SAPSCRIPT_MESSAGE' exporting typ = 'W' "#EC NOTEXT exceptions others = 1. else. call function 'COMMIT_TEXT'. endif. endform.
相关推荐
ABAP 屏幕设计中添加文本编辑器:实现附加文本信息
ABAP在模块池程序设计中,有时要给文本字段做多项选择,当然可以用到选择屏幕,但选择屏幕有一定的局限性,有时需要手工做多项选择,其实很简单,具体请看附件。基中方法二为个人根据经验独创。
选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。 选择“更改”。 完成两个强制字段: 如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能...
· 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...
· 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...
· 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...
关于 ABAP/4 环境术语的 详细信息, 请从“ABAP/4 编辑器:初 始屏幕”( 事务 SE38) 中选择“实 用程序 -> ABAP/4 关键字文档 ”。然后就 会出现与解 释文本相链 接的主题层 次。要找出 这些文本用 于哪些主题 ,...
· 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...
屏幕(Screen)是ABAP设计最重要的工作之一,SAP的单据、主数据维护等业务功能都使用屏幕,一个程序可以包含多个屏幕。 本章主要介绍: (1)安装时注意的问题; (2)第一个“HELLO WORLD”Screen程序; (3...
这 种报表程序 的结果通常 是以列表的 形式输出到 屏幕或发送 到打印机上 。该列表使 用常用词汇 。因此报表 程序是根据 一个或多个 数据库表格 的评估创建 报表的程序 。 在下列主题 中,您将学 习 选择数据 用...
1、解压后,支持直接导入ABAP 2、支持文本编辑器打开 3、如有不解之处,可以查阅文章:《金色传说:SAP-ABAP-IW21/IW22通知单保存增强:保存通知单时根据特殊条件创建新的事故通知单》或搜索公众号:SAPABAP金色传说
将光标放 在 ABAP/4 编辑器中的 关键字上, 然后按下 F1 键 <br>ABAP/4 用户指南的 真正目的在 于说明如何 使用以及为 何使用 ABAP/4 关键字。并 为此提供了 许多示例, 构成用户自 己测试程序 的基础。 要...
第000章 ABAP4基础/第001章 创建简单的 ABAP/第002章 ABAP4程序语法和格式/第003章 声明数据/第004章 将数据输出到屏幕/第005章 处理文本摘要/第006章 处理数据/第007章 控制ABAP/第008章 创建和处理内表/第009章 ...
关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字 文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题和...
文本(选择文本)能够以多种语言进行维护 在运行时,文本会自动以用户的登录语言显示。 自动检查类型检查用户输入的内容与输入字段的类型是否相符 除单一值(PARAMETERS)外,还有复杂选择(SELECT-OPTIONS) 可输入...
第一章 创建简单的 ...第四章 将数据输出 到屏幕 第五章 处理文本摘 要 第六章处理数据 第七章 控制 abap4 程序流 第九章 模块化 abap4 程序 第十章使用字段符 号 第十二章 以簇方式存 储数据对象 第十三章 使用文件
第四章 处理文本摘要 29 第五章 处理数据 35 第六章 控制ABAP/4程序流 61 第七章 创建和处理内表 91 第八章 模块化ABAP/4程序 122 第九章 使用字段符号 142 第十章 读取并处理数据库表 157 第十一章 以簇方式存储...
第四章:输出数据到屏幕..........................................................................4-1 第五章:处理文本摘要..............................................................................5-...
多行文本编辑控制的实例屏幕,具体代码请到blog中下载;
ABAP开发的程序里,在选择屏幕上新增自定义按钮,包含定义按钮文本和图标,处理按钮命令。资源包括了该功能的代码实现。