文本框的设置

alv单元格英文字母最多显示128位

中文最多显示43位

所以如果要输入更多的就必须采用其他的方法去实现,运用文本框就是一个办法,dialog的输出输入字段也行

效果图:

文本框的设置

代码实现:

首先需要在屏幕里面画一个定制控制

文本框的设置

关键代码:

DATA: gv_container TYPE REF TO cl_gui_custom_container,
      gv_textedit  TYPE REF TO cl_gui_textedit.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.

  IF gv_container IS NOT BOUND.
    CREATE OBJECT gv_container
      EXPORTING
        container_name = 'S_TEXT'.

    CREATE OBJECT gv_textedit
      EXPORTING
        parent                     = gv_container
        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
        wordwrap_position          = 132
        wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
    "隐藏文本框工具栏
    CALL METHOD gv_textedit->set_toolbar_mode
      EXPORTING
        toolbar_mode = 0.
    "隐藏文本框状态栏
    CALL METHOD gv_textedit->set_statusbar_mode
      EXPORTING
        statusbar_mode = 0.
  ENDIF.
* SET TITLEBAR 'xxx'.
ENDMODULE.

全部代码

DATA:gt_table TYPE TABLE OF ztest_ljr01.
DATA:
     go_grid    TYPE REF TO cl_gui_alv_grid. "ALV实例对象全局变量
DATA:lv_zbeizhu TYPE char200.

DATA:gv_index LIKE sy-tabix.

DATA: gt_structure TYPE lvc_t_fcat, "ALV结构内表全局变量
      gs_structure TYPE lvc_s_fcat. "ALV结构工作区域全局变量

DATA:
      ls_layout   TYPE lvc_s_layo.

DATA: gv_container TYPE REF TO cl_gui_custom_container,
      gv_textedit  TYPE REF TO cl_gui_textedit.


ls_layout-zebra      = abap_on. "斑马线显示,颜色隔行交替显示
ls_layout-cwidth_opt = abap_on.    "ALV网格(单元格)宽度设置为自动最优化,按输出内容宽度自动调整
ls_layout-info_fname = 'COLOR'.

SELECT
  * FROM ztest_ljr01 INTO CORRESPONDING FIELDS OF TABLE @gt_table.


CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
*   I_BUFFER_ACTIVE        =
    i_structure_name       = 'ZTEST_LJR01'
*   I_CLIENT_NEVER_DISPLAY = 'X'
*   I_BYPASSING_BUFFER     =
*   i_internal_tabname     = 'GT_ALV'
  CHANGING
    ct_fieldcat            = gt_structure
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2
    OTHERS                 = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

LOOP AT  gt_structure ASSIGNING FIELD-SYMBOL(<lfs_structure>) WHERE fieldname = 'ZBEIZHU'.

 <lfs_structure>-hotspot   = 'X'.

ENDLOOP.




CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program      = sy-repid "注意点
*   i_callback_pf_status_set = 'FRM_SET_STATUS'
    i_callback_user_command = 'FRM_USER_COMMAND'
    is_layout_lvc           = ls_layout
    it_fieldcat_lvc         = gt_structure
    i_save                  = 'A'
  TABLES
    t_outtab                = gt_table
  EXCEPTIONS
    program_error           = 1
    OTHERS                  = 2.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_user_command USING iv_ucomm    LIKE sy-ucomm
                            is_selfield TYPE slis_selfield.
  DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lr_grid.

  CALL METHOD lr_grid->check_changed_data.
  is_selfield-refresh = 'X'.
  CASE iv_ucomm .
    WHEN '&F03' OR '&F12' OR '&F15'.
      LEAVE TO SCREEN 0.
    WHEN '&IC1'.
*       CALL SCREEN 100.
      CLEAR:gv_index.
      gv_index    =  is_selfield-tabindex.
      CALL SCREEN 100 STARTING AT 1 1 ENDING AT 200 12.
  ENDCASE.

ENDFORM .
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.

  IF gv_container IS NOT BOUND.
    CREATE OBJECT gv_container
      EXPORTING
        container_name = 'S_TEXT'.

    CREATE OBJECT gv_textedit
      EXPORTING
        parent                     = gv_container
        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
        wordwrap_position          = 132
        wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
    "隐藏文本框工具栏
    CALL METHOD gv_textedit->set_toolbar_mode
      EXPORTING
        toolbar_mode = 0.
    "隐藏文本框状态栏
    CALL METHOD gv_textedit->set_statusbar_mode
      EXPORTING
        statusbar_mode = 0.
  ENDIF.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'SAVE'.
      LOOP AT  gt_table ASSIGNING FIELD-SYMBOL(<lfs_table>) FROM gv_index .

        <lfs_table>-zbeizhu = lv_zbeizhu.
        EXIT.

      ENDLOOP.
      MODIFY ztest_ljr01 FROM TABLE gt_table.
      LEAVE TO SCREEN 0.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.

    WHEN OTHERS.
  ENDCASE.
ENDMODULE.