当前位置: 首页 > news >正文

ABAP 长文本编辑器

加个屏幕
在这里插入图片描述

*&---------------------------------------------------------------------*
*& Report YDEMO2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ydemo2.

" 长文本对象容器
DATA: gr_ctn_text TYPE REF TO cl_gui_custom_container,
      gr_textedit TYPE REF TO cl_gui_textedit,
      gt_tline    TYPE STANDARD TABLE OF tline,
      gs_tline    TYPE tline,
      gs_thead    TYPE thead,
      gt_textline TYPE TABLE OF textline,
      gv_edit     TYPE c.

CALL SCREEN 9001.

*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9001 OUTPUT.

  gs_thead = VALUE #( tdid     = 'Z001'
                      tdname   = '10000001'
                      tdspras  = '1'
                      tdobject = 'ZGTS01' ).

  PERFORM frm_set_ltext.

ENDMODULE.


*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.

  PERFORM frm_save_ltext.

ENDMODULE.

*&---------------------------------------------------------------------*
*& Form frm_set_ltext
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_ltext .

*&-- 构建容器和文本框
  IF gr_ctn_text IS INITIAL.

    gr_ctn_text = NEW #( container_name = 'CC_BZ' ).
    gr_textedit = NEW #( wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
                         wordwrap_to_linebreak_mode = cl_gui_textedit=>true
                         parent                     = gr_ctn_text ).

    " 去掉状态栏和工具栏
    gr_textedit->set_statusbar_mode( statusbar_mode = cl_gui_textedit=>false ).
    gr_textedit->set_toolbar_mode( toolbar_mode  = cl_gui_textedit=>false ).

    " 显示/编辑
    gr_textedit->set_readonly_mode( readonly_mode = COND #( WHEN gv_edit = 'X' THEN '0'
                                                            ELSE '1' ) ).

  ENDIF.

*&-- 全局文本
  IF gt_tline IS INITIAL.

    " 读取初始长文本
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        id       = gs_thead-tdid
        language = gs_thead-tdspras
        name     = gs_thead-tdname
        object   = gs_thead-tdobject
      TABLES
        lines    = gt_tline
      EXCEPTIONS
        OTHERS   = 1.

    IF gt_tline IS NOT INITIAL.

      " 转换流文本
      CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
        EXPORTING
          language    = '1'
        TABLES
          itf_text    = gt_tline
          text_stream = gt_textline
        EXCEPTIONS
          OTHERS      = 1.

      " 回显编辑框
      gr_textedit->set_text_as_stream( text = gt_textline ).

    ENDIF.

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form frm_save_ltext
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_save_ltext .

  DATA: lv_input_check TYPE c,
        lv_subrc       TYPE i,
        lt_table       TYPE STANDARD TABLE OF tdline,
        lv_modify      TYPE i.

*&-- 写入长文本
  CALL METHOD gr_textedit->get_text_as_r3table(
    IMPORTING
      table       = lt_table
      is_modified = lv_modify
  ).
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    EXIT.
  ELSEIF lv_modify = 1.
    CLEAR gt_tline[].
    LOOP AT lt_table INTO gs_tline-tdline.
      APPEND gs_tline TO gt_tline.
    ENDLOOP.
*&-- 调用方法创建保存文本对象
    CALL FUNCTION 'CREATE_TEXT'
      EXPORTING
        fid       = gs_thead-tdid
        flanguage = gs_thead-tdspras
        fname     = gs_thead-tdname
        fobject   = gs_thead-tdobject
      TABLES
        flines    = gt_tline
      EXCEPTIONS
        no_init   = 1
        no_save   = 2
        OTHERS    = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      EXIT.
    ENDIF.
  ENDIF.

ENDFORM.

效果
在这里插入图片描述

相关文章:

  • ONE Deep模型:LG AI Research的开源突破
  • hadoop-配置ssh免密登录
  • C语言自定义类型【联合】和【枚举】详解
  • Redis Sentinel(哨兵模式)高可用性解决方案
  • 案例2:逻辑回归预测糖尿病
  • 计算机网络面试篇
  • 基于开源 AI 大模型、AI 智能名片及 S2B2C 商城小程序源码的个人 IP 用户运营策略研究
  • 从零开始搭建向量数据库:基于 Xinference 和 Milvus 的文本搜索实践
  • C++语法之命名空间二
  • Kali Linux 2025.1a 发布:新增工具、年度主题更新
  • 【前端】-jQuery(带你让你深入了解学习使用jQuery)
  • 在 Elasticsearch 中探索基于 NVIDIA 的 GPU 加速向量搜索
  • Ubuntu20.04安装并配置Pycharm2020.2.5
  • 再学:delegateCall使用及合约升级
  • TypeScript模块 vs JavaScript模块:现代化开发的模块化之道
  • 绿盟科技春招面试
  • 游戏开发全流程及其工具详解
  • 【QA】策略模式在QT有哪些应用
  • JavaScript进阶篇:六、JavaScript 作用域与闭包
  • Linux | 环境变量PATH+编写第一个自己的命令
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 潘功胜:央行将设立5000亿元服务消费与养老再贷款
  • 金融政策支持稳市场稳预期发布会即将召开,潘功胜、李云泽、吴清将出席
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • “五一”假期出入境人数达1089.6万人次,同比增长28.7%
  • 法国宣布投资1亿欧元吸引外国科研人员