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

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.

效果
在这里插入图片描述


http://www.kler.cn/a/594065.html

相关文章:

  • 【文件分类助手V1.0b】支持自定义后缀分类整理及目录文档自动生成,方便大家美化管理自己的PC文件库支持Win10/11
  • go~协程阻塞分析
  • 事件响应计划:网络弹性的关键
  • C# 表达式目录树:深入探讨表达式树的概念与应用
  • Excel知识库与LLM结合的解决方案分析
  • Uni-App 双栏联动滚动组件开发详解 (电梯导航)
  • 使用 `pytest` 框架时,可以通过极限封装将 YAML 文件的读取、解析
  • 8、Python 字符串处理与正则表达式实战指南
  • 【css酷炫效果】纯CSS实现全屏粒子连线
  • Qt 实现波浪填充的圆形进度显示
  • 【Java】TCP网络编程:从可靠传输到Socket实战
  • coze ai assistant Task5
  • 学术PPT模板_院士_国家科学技术奖_杰青基金_长江学者特聘教授_校企联聘长江_重点研发_优青_青长_青拔ppt制作案例
  • RAG优化:python实现基于问题生成(扩展语义表示、优化检索粒度和提升上下文关联性)的文档增强RAG
  • 高级数据结构应用:并查集、跳表、布隆过滤器与缓存结构
  • Android Jetpack Compose介绍
  • RabbitMQ八股文
  • 【软考-架构】8.3、ES-OAS-ERP-电子政务-企业信息化
  • 【机器学习】核心概念
  • MCU-芯片时钟与总线和定时器关系,举例QSPI