`

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 屏幕设计中添加文本编辑器是指在 SAP 业务系统中,使用文本编辑器处理内表,并在屏幕上显示编辑器,退出时将内容输出。本文将详细介绍如何在屏幕上显示编辑器,退出时将内容输出。 知识点1:建立屏幕 在建立...

    abap实战屏幕设计

    ABAP屏幕设计实战要点 ABAP屏幕设计是SAP系统中最重要的工作之一,屏幕设计是指在ABAP系统中设计和实现用户界面的过程。屏幕设计是ABAP系统的核心部分,它将影响着系统的用户体验和使用效率。 一、屏幕设计的重要...

    批输入物料基础数据长文本SAP

    本文将详细介绍一个用于批量输入物料基础数据长文本的ABAP报告——`ZMRRXO_INPUT_LONGTXT`。 #### 报告结构 该报告主要由以下几个部分组成: 1. **数据声明**:这部分包括了报告中需要用到的各种数据类型的定义。 ...

    ABAP模块池程序设计给文本字段做多项选择

    在ABAP模块池程序设计中,经常需要给文本字段做多项选择,这种需求是在屏幕设计中经常遇到的问题。当然,可以使用选择屏幕来实现多项选择,但是选择屏幕有一定的局限性,有时需要手工做多项选择。 在屏幕设计中,给...

    Abap基础学习文档4_将数据输出到屏幕.doc

    `WRITE`语句是ABAP编程中最基本也是最常用的输出语句之一,它可以方便地在屏幕上展示数据,并且可以通过一系列参数来控制输出的位置、格式等细节。 #### 二、`WRITE`语句详解 ##### 1. `WRITE`语句的基本语法 `...

    Abap基础学习文档5_处理文本摘要.doc

    1. **更改选择屏幕上的文本**:从“ABAP/4文本摘要”屏幕中选择“选择文本”,然后选择“更改”。此时,屏幕上的“名称”列已经包含了程序的参数名称及选择标准名称。 2. **复制DD文本**:如果创建了ABAP/4词典字段...

    SAP ABAP开发学习——第13课:选择屏幕(视频教程)

    - **上下文敏感帮助**:可以为每个字段提供帮助文本或使用F4帮助(例如,查找列表)。 - **输入检查**:可以添加输入检查,如长度检查、格式检查或有效性检查。 - **默认值**:为输入字段提供默认值,提高用户...

    第05章 标准列表和选择屏幕.rar_ABAP列表_ABAP选择屏幕_hide

    选择屏幕由一系列输入字段、选择选项和文本组成,这些元素可以预先定义,也可以在程序运行时动态生成。通过使用SELECT-OPTIONS,程序员可以定义范围、单值或列表类型的输入参数。选择屏幕提高了用户体验,因为它允许...

    初学ABAP的教程

    **ABAP REPORT** 是一种快速创建简单程序的方法,主要用于输出文本到屏幕或打印设备。创建过程如下: 1. **进入SAP系统**:通过事务代码SE38进入ABAP开发环境。 2. **创建新程序**:输入程序名`z_hello`并选择...

    ABAP帮助文档ABAP帮助文档

    3. WRITE:动态输出,可以在屏幕上或打印机上输出动态生成的文本。 四、ABAP报表开发 1. REPORT:创建ABAP报表的语句,定义报表的基本属性。 2. SELECT-OPTIONS:提供用户输入筛选条件的机制。 3. AT SELECTION-...

    ABAP中文完美学习手册

    5. 输出到屏幕:ABAP提供了WRITE语句用于将数据输出到屏幕上,包括如何定位输出位置、使用格式化选项以及输出符号和图标等。编写程序时需要考虑屏幕上的输出布局和显示效果。 6. 文本元素:ABAP中的文本元素包括...

    ABAP/4开发宝典中文版

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

    SAP ABAP中文帮助

    - 屏幕文本、用户输入、可变用户输入、报表名、程序名、事务代码等的书写风格约定,以及书本标题和键盘按键的表示方法。 - 语法指令中的关键字、变量、选项和参数的使用规范,如方括号表示可选、竖线表示互斥选项、...

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

    在标题提到的"SAP多行文本编辑实例(屏幕).rar"压缩包中,包含以下关键文件: 1. **ZDEMO_CUSTOM_CONTROL.txt.bak**:这是一个备份文件,通常包含ABAP源代码,可能是一个示例程序或自定义控件的实现。在这个例子中...

    ABAP常用函数集锦

    READ_TEXT:读取长文本。 SD_VBAP_READ_WITH_VBELN:根据销售订单读取表VBAP中的信息。 其他 MESSAGE_TEXT_BUILD:把消息转为文本。 POPUP_TO_CONFIRM:弹出确认窗口。 POPUP_TO_DECIDE_LIST:弹出供选择窗口。...

    ABAP∕4 用户中文指南

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

    ABAP SQL 语句 动态 操作

    程序中的`start-of-selection`上下文用于处理屏幕事件和数据交互。`MODULE STATUS_0100 OUTPUT`用于设置屏幕状态,而其他数据结构(如`ls_vari`和`lt_excl_func`)用于管理ALV网格的显示选项和用户交互功能。 总之...

    ABAP中文帮助word版本

    例如,屏幕文本显示实际在屏幕上可见的词汇,而用户输入则指用户需实际键入的内容。此外,还规定了大小写规则、关键字和语句选项的大写表示法,以及变量的尖括号表示法等。 #### 六、ABAP/4的演变与应用 ABAP/4...

Global site tag (gtag.js) - Google Analytics