基础OOALV练习(切换显示/修改模式)

这是第一个OOALV简单的练习(切换显示/修改模式)。

REPORT  ztest_yls_alv.

"第一步 定义变量
DATA:ok_code            TYPE sy-ucomm,
     save_ok            TYPE sy-ucomm,
     g_container        TYPE scrfname VALUE 'CONTAINER',
     g_grid             TYPE REF TO cl_gui_alv_grid, "alv网格
     g_custom_container TYPE REF TO cl_gui_custom_container, "存放alv容器
     gs_layout          TYPE lvc_s_layo, "布局结构
     g_max              TYPE i VALUE 100.

DATA:gt_outtab TYPE TABLE OF sflight.
"第二步 画屏幕或者直接调用屏幕。
CALL SCREEN 1000.

MODULE status_1000 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
  "第三步 复制gui 然后调用标准模板
  SET PF-STATUS 'STANDARD'.
  "第四步创建变量
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
      EXPORTING
        container_name = g_container.
    CREATE OBJECT g_grid
      EXPORTING
        i_parent = g_custom_container.
    "布局的设置
    gs_layout-edit = 'X'.
    gs_layout-zebra = 'X'.
    "取数
    SELECT * FROM sflight INTO TABLE gt_outtab UP TO g_max ROWS.
    "调用方法
    CALL METHOD g_grid->set_table_for_first_display "显示
      EXPORTING
        i_structure_name = 'SFLIGHT'
        is_layout        = gs_layout
      CHANGING
        it_outtab        = gt_outtab.

    CALL METHOD g_grid->set_ready_for_input "编辑
      EXPORTING
        i_ready_for_input = 1.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_1000 INPUT.
  save_ok = ok_code."pi用户事件处理
  CLEAR ok_code.
  CASE save_ok.
    WHEN '&F03'.
      PERFORM prm_exit_program.
    WHEN 'ZSWITCH'.
      PERFORM prm_edit_mode.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form PRM_EXIT_PROGRAM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM prm_exit_program .
  LEAVE PROGRAM.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_EDIT_MODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM prm_edit_mode .
  IF g_grid->is_ready_for_input( ) EQ 0.
*§4.Use SET_READY_FOR_INPUT to switch between the substates.
    CALL METHOD g_grid->set_ready_for_input "切换是否可编辑
      EXPORTING
        i_ready_for_input = 1.
  ELSE.
    CALL METHOD g_grid->set_ready_for_input
      EXPORTING
        i_ready_for_input = 0.
  ENDIF.


ENDFORM.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将oo alv转换成列表显示,可以按照以下步骤进行操作: 1. 首先,检查oo alv对象中是否包含数据。可以使用方法`get_model`获取oo alv对象中的数据模型。 2. 然后,利用方法`get_columns`获取oo alv对象中的列信息。 3. 使用循环遍历数据模型中的每一行,将数据提取出来,并放入一个列表中。可以使用方法`get_cell_value`获取每个单元格的值。 4. 将提取的数据放入一个列表中,可以使用.append()方法将每一行数据添加到列表中。 5. 最后,将提取的数据列表进行显示,可以使用print函数打印出列表内容。 以下是一个示例代码,演示如何将oo alv对象转换为列表并进行显示: ```python # 获取oo alv对象中的数据模型 model = alv.get_model() # 获取oo alv对象中的列信息 columns = alv.get_columns() # 创建空列表 data_list = [] # 遍历数据模型中的每一行数据 for row in model: # 创建空列表,存储每一行的数据 row_data = [] # 遍历每一行中的每一列数据 for column_index, column_name in enumerate(columns): # 获取每个单元格的值 cell_value = row.get_cell_value(column_index) # 将单元格的值添加到行数据列表中 row_data.append(cell_value) # 将一行数据添加到数据列表中 data_list.append(row_data) # 打印数据列表 for row in data_list: print(row) ``` 通过以上代码,oo alv对象中的数据将被提取并存储在一个列表中,并且可以通过循环遍历打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值