ALV双击单元格,进入另一个ALV界面

REPORT ztest_alv_two .
TYPE-POOLS : slis.
DATA: BEGIN OF gt_mara OCCURS 0,
      matnr LIKE mara-matnr,
      mtart LIKE mara-mtart,
      END OF gt_mara.
DATA: BEGIN OF gt_marc OCCURS 0,
      matnr LIKE marc-matnr,
      werks LIKE marc-werks,
      END OF gt_marc.

START-OF-SELECTION.
  PERFORM get_mara.
  PERFORM alv_display.
*&---------------------------------------------------------------------*
*&      Form  get_mara
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_mara.
  SELECT matnr mtart UP TO 10 ROWS INTO TABLE gt_mara FROM mara.
ENDFORM.                    " get_mara
*&---------------------------------------------------------------------*
*&      Form  alv_display
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM alv_display.
  DATA: ws_fieldcat       TYPE slis_t_fieldcat_alv WITH HEADER LINE,
       ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
       ws_layout          TYPE slis_layout_alv,
       ws_sortfields_tab  TYPE slis_t_sortinfo_alv WITH HEADER LINE,
       ws_events          TYPE slis_t_event.
  DATA: v_repid LIKE sy-repid.
  DATA: nn TYPE i VALUE 0.
  DATA: title TYPE lvc_title.

  DEFINE hout.
    nn = nn + 1.
    ws_fieldcat-tabname   = 'GT_MARA'.
    ws_fieldcat-fieldname = '&1'.
    ws_fieldcat-seltext_m =  &2.
    ws_fieldcat-col_pos   =  nn.
    ws_fieldcat-outputlen =  &3.
    ws_fieldcat-datatype  = '&4'.
    ws_fieldcat-do_sum    = '&5'.
    ws_fieldcat-lzero     = 'X'.
    ws_fieldcat-no_zero   = 'X'.
    append ws_fieldcat.
    clear ws_fieldcat.
  END-OF-DEFINITION.
  hout matnr 'material'            18 char ''.
  hout mtart 'material group'         4 char ''.

  SORT gt_mara BY matnr  mtart.
  MOVE 'title' TO title.
  ws_layout-zebra        = 'X'.
  v_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = v_repid
      is_layout               = ws_layout
      it_fieldcat             = ws_fieldcat[]
      i_callback_user_command = 'USER_COMMAND'
      it_special_groups       = ws_fieldgroups_tab[]
      it_sort                 = ws_sortfields_tab[]
      it_events               = ws_events[]
      i_grid_title            = title
    TABLES
      t_outtab                = gt_mara
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
ENDFORM.                    " alv_display
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                  rs_selfield TYPE slis_selfield
.
  CASE r_ucomm.
    WHEN '&IC1'.
      IF rs_selfield-sel_tab_field = 'GT_MARA-MATNR'.
        PERFORM get_marc.
        PERFORM display_two.
      ENDIF.
  ENDCASE.
ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  get_marc
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_marc.
  SELECT matnr werks INTO TABLE gt_marc FROM marc
                      FOR ALL ENTRIES IN gt_mara
                      WHERE matnr = gt_mara-matnr.
ENDFORM.                    " get_marc
*&---------------------------------------------------------------------*
*&      Form  display_two
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_two.
  DATA: ws_fieldcat       TYPE slis_t_fieldcat_alv WITH HEADER LINE,
       ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
       ws_layout          TYPE slis_layout_alv,
       ws_sortfields_tab  TYPE slis_t_sortinfo_alv WITH HEADER LINE,
       ws_events          TYPE slis_t_event.
  DATA: v_repid LIKE sy-repid.
  DATA: nn TYPE i VALUE 0.
  DATA: title TYPE lvc_title.

  DEFINE hout.
    nn = nn + 1.
    ws_fieldcat-tabname   = 'GT_MARC'.
    ws_fieldcat-fieldname = '&1'.
    ws_fieldcat-seltext_m =  &2.
    ws_fieldcat-col_pos   =  nn.
    ws_fieldcat-outputlen =  &3.
    ws_fieldcat-datatype  = '&4'.
    ws_fieldcat-do_sum    = '&5'.
    ws_fieldcat-lzero     = 'X'.
    ws_fieldcat-no_zero   = 'X'.
    append ws_fieldcat.
    clear ws_fieldcat.
  END-OF-DEFINITION.
  hout matnr 'material'            18 char ''.
  hout werks 'plant'         4 char ''.

  SORT gt_marc BY matnr  werks.
  MOVE 'title2' TO title.
  ws_layout-zebra        = 'X'.
  v_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program = v_repid
            is_layout          = ws_layout
            it_fieldcat        = ws_fieldcat[]
*            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            it_special_groups  = ws_fieldgroups_tab[]
            it_sort            = ws_sortfields_tab[]
            it_events          = ws_events[]
            i_grid_title       = title
       TABLES
            t_outtab           = gt_marc
       EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.
ENDFORM.                    " display_two


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ALV单元格动态可编辑是ABAP技术在ALV报表上的一个重要扩展。ALV(ABAP List Viewer)是SAP系统中常用的报表显示工具,可以方便地展示和处理大量的数据。但是在默认情况下,ALV报表的单元格是不可编辑的,用户只能查看报表数据而无法进行修改。 为了满足用户对报表数据进行动态修改的需求,开发人员通过对ALV控件进行扩展,使其支持单元格的动态可编辑功能。这样用户可以直接在报表上进行数据编辑,无需打开数据源进行修改。 实现ALV单元格动态可编辑的扩展需要进行如下步骤: 1. 定义ALV报表的显示结构。 首先,需要定义ALV报表的显示结构,包括字段名、字段类型、长度等信息。 2. 扩展ALV函数模块。 在ALV函数模块中,需要添加相应的功能模块来支持单元格的动态可编辑。通过修改ALV函数模块的代码,实现对报表数据的修改和保存。 3. 增加用户交互接口。 为了方便用户进行数据修改,可以在报表上添加一些用户交互接口,比如勾选框、输入框等。用户可以通过这些接口直接修改报表数据,并进行保存操作。 4. 编写逻辑处理程序。 最后,需要编写逻辑处理程序,处理用户的修改操作。这个程序会根据用户输入的数据,更新相应的报表数据,并将修改后的数据保存回数据库中。 通过以上步骤的扩展,用户可以实现在ALV报表中直接进行数据编辑的功能。这样,用户可以更加方便地进行数据修改和保存,提高工作效率。同时,ALV单元格动态可编辑的扩展也为定制化的报表需求提供了更多的灵活性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值