`

abap 屏幕上长文本

    博客分类:
  • abap
 
阅读更多

TEXT长文本的编写

大家在编程过程中,一定经常用到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模块池程序设计给文本字段做多项选择

    ABAP在模块池程序设计中,有时要给文本字段做多项选择,当然可以用到选择屏幕,但选择屏幕有一定的局限性,有时需要手工做多项选择,其实很简单,具体请看附件。基中方法二为个人根据经验独创。

    ABAP中文幫助文檔

     选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。  选择“更改”。  完成两个强制字段:  如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能...

    ABAP/4开发宝典中文版

    · 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...

    ABAP∕4 用户中文指南

    · 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...

    abap4开发宝典中文版

    · 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...

    ABAP用户指南

    关于 ABAP/4 环境术语的 详细信息, 请从“ABAP/4 编辑器:初 始屏幕”( 事务 SE38) 中选择“实 用程序 -> ABAP/4 关键字文档 ”。然后就 会出现与解 释文本相链 接的主题层 次。要找出 这些文本用 于哪些主题 ,...

    ABAP∕4 开发宝典中文版

    · 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题...

    SAP-ABAP学习实例讲解part2.docx

    屏幕(Screen)是ABAP设计最重要的工作之一,SAP的单据、主数据维护等业务功能都使用屏幕,一个程序可以包含多个屏幕。 本章主要介绍: (1)安装时注意的问题; (2)第一个“HELLO WORLD”Screen程序; (3...

    SAP ABAP 官方用户指南电子版 (ABAP/4 用户指南 和SAP联机帮助中的一样)

    这 种报表程序 的结果通常 是以列表的 形式输出到 屏幕或发送 到打印机上 。该列表使 用常用词汇 。因此报表 程序是根据 一个或多个 数据库表格 的评估创建 报表的程序 。 在下列主题 中,您将学 习 选择数据 用...

    金色传说:SAP-ABAP-IW21/IW22通知单保存增强:ZPMR003程序代码

    1、解压后,支持直接导入ABAP 2、支持文本编辑器打开 3、如有不解之处,可以查阅文章:《金色传说:SAP-ABAP-IW21/IW22通知单保存增强:保存通知单时根据特殊条件创建新的事故通知单》或搜索公众号:SAPABAP金色传说

    BC ABAP/4 用户指南

    将光标放 在 ABAP/4 编辑器中的 关键字上, 然后按下 F1 键 <br>ABAP/4 用户指南的 真正目的在 于说明如何 使用以及为 何使用 ABAP/4 关键字。并 为此提供了 许多示例, 构成用户自 己测试程序 的基础。 要...

    ABAP语法详解教材

    第000章 ABAP4基础/第001章 创建简单的 ABAP/第002章 ABAP4程序语法和格式/第003章 声明数据/第004章 将数据输出到屏幕/第005章 处理文本摘要/第006章 处理数据/第007章 控制ABAP/第008章 创建和处理内表/第009章 ...

    ABAP中文帮助 用户指南 PDF

    关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字 文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题和...

    SAP ABAP视频班教学共21课-L13 选择屏幕.7z

    文本(选择文本)能够以多种语言进行维护 在运行时,文本会自动以用户的登录语言显示。 自动检查类型检查用户输入的内容与输入字段的类型是否相符 除单一值(PARAMETERS)外,还有复杂选择(SELECT-OPTIONS) 可输入...

    SAP ABAP开发手册

    第一章 创建简单的 ...第四章 将数据输出 到屏幕 第五章 处理文本摘 要 第六章处理数据 第七章 控制 abap4 程序流 第九章 模块化 abap4 程序 第十章使用字段符 号 第十二章 以簇方式存 储数据对象 第十三章 使用文件

    SAP ABAP/4 开发宝典中文版

    第四章 处理文本摘要 29 第五章 处理数据 35 第六章 控制ABAP/4程序流 61 第七章 创建和处理内表 91 第八章 模块化ABAP/4程序 122 第九章 使用字段符号 142 第十章 读取并处理数据库表 157 第十一章 以簇方式存储...

    SAP ABAP 教程电子版

    第四章:输出数据到屏幕..........................................................................4-1 第五章:处理文本摘要..............................................................................5-...

    SAP多行文本编辑实例(屏幕).rar

    多行文本编辑控制的实例屏幕,具体代码请到blog中下载;

    sap选择屏幕上定义按钮.txt

    ABAP开发的程序里,在选择屏幕上新增自定义按钮,包含定义按钮文本和图标,处理按钮命令。资源包括了该功能的代码实现。

Global site tag (gtag.js) - Google Analytics