屏幕中如何做script文本

在很多功能开发中,要开发人员自己画屏幕,有时候有这样的需求,就是用户要输入文本,就要做一个类似script的控件,做法如下:

 

1、屏幕上先做一个‘定制控制’的控件,名字是ZRXM

2、定义变量如下:

  DATA: customer_zrxm  TYPE REF TO
      cl_gui_custom_container.
DATA: edit_zrxm TYPE REF TO cl_gui_textedit.
DATA: text_zrxm TYPE TABLE OF mystruc.
DATA:wa_text_zrxm LIKE LINE OF text_zrxm.
DATA: wa_thead_zr LIKE thead.
DATA: mytable_zr TYPE TABLE OF tline  .
DATA: wa_mytable_zr LIKE tline.
DATA: modi_zr TYPE i.

3、PBO代码如下:

     IF edit_zrxm IS INITIAL.
*创建对象customer_container.和屏幕上的MYCON区域关联
    CREATE OBJECT customer_zrxm
      EXPORTING
        container_name = 'ZRXM'.

*创建文本编辑对象,
    CREATE OBJECT edit_zrxm
      EXPORTING
        parent                     = customer_zrxm
        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
        wordwrap_position          = 90
        wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
  ENDIF.

  IF g_flag_9001 = 'D' .  "显示
    CALL METHOD edit_zrxm->set_readonly_mode
      EXPORTING
        readonly_mode = 1.
  ELSE.    "修改或者新增
    CALL METHOD edit_zrxm->set_readonly_mode
      EXPORTING
        readonly_mode = 0.
  ENDIF.
*调用方法set_text_as_r3table把内表内容填到文本编辑框中
  CALL METHOD edit_zrxm->set_text_as_r3table
    EXPORTING
      table  = text_zrxm
    EXCEPTIONS
      OTHERS = 1.
*把缓存中的内容送到前台。
  CALL METHOD cl_gui_cfw=>flush.

 

4、PAI代码如下:

   REFRESH text_zrxm.
  CALL METHOD edit_zrxm->get_text_as_r3table
    IMPORTING
      table       = text_zrxm
      is_modified = modi_zr.

5、保存代码如下:

     CLEAR wa_thead_zr.
    wa_thead_zr-tdobject = 'ZR8LIFNR'.
    wa_thead_zr-tdname = zr8mms020-lifnr.
    wa_thead_zr-tdid = 'ZRXM'.
    wa_thead_zr-tdspras = sy-langu.

    REFRESH mytable_zr.
    LOOP AT text_zrxm INTO wa_text_zrxm.
      wa_mytable_zr-tdline = wa_text_zrxm-line.
      APPEND wa_mytable_zr TO mytable_zr.
    ENDLOOP.

   PERFORM sub_save_text TABLES mytable_zr USING wa_thead_zr .

 

 FORM sub_save_text  TABLES   p_mytable STRUCTURE tline
                    USING    p_wa_thead LIKE thead.

  CALL FUNCTION 'SAVE_TEXT'
    EXPORTING
      header          = p_wa_thead
      savemode_direct = 'X'
    TABLES
      lines           = p_mytable
    EXCEPTIONS
      id              = 1
      language        = 2
      name            = 3
      object          = 4
      OTHERS          = 5.
ENDFORM.                    " sub_save_text

 

6、读取代码如下:

   REFRESH mytable_zr.
  CLEAR wa_thead_zr.
  wa_thead_zr-tdobject = 'ZR8LIFNR'.
  wa_thead_zr-tdname = gt_display-lifnr.
  wa_thead_zr-tdid = 'ZRXM'.
  wa_thead_zr-tdspras = sy-langu.

  PERFORM sub_read_text TABLES mytable_zr USING wa_thead_zr.

  REFRESH text_zrxm.
  LOOP AT mytable_zr INTO wa_mytable_zr .
    wa_text_zrxm-line = wa_mytable_zr-tdline.
    APPEND wa_text_zrxm TO  text_zrxm.
  ENDLOOP.

 

 

 FORM sub_read_text  TABLES   p_mytable STRUCTURE tline
                    USING    p_wa_thead LIKE thead.
  DATA:ps_header LIKE thead.
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      id                      = p_wa_thead-tdid
      language                = p_wa_thead-tdspras
      name                    = p_wa_thead-tdname
      object                  = p_wa_thead-tdobject
    IMPORTING
      header                  = ps_header
    TABLES
      lines                   = p_mytable
    EXCEPTIONS
      id                      = 1
      language                = 2
      name                    = 3
      not_found               = 4
      object                  = 5
      reference_check         = 6
      wrong_access_to_archive = 7
      OTHERS                  = 8.
ENDFORM.                    " SUB_READ_TEXT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值