文本框的设置
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.