ALV最后一行加合计(笨方法)计算好放到最后一行

type-pools:slis.
TYPES:BEGIN OF ty_itab,
  chk,
  carrid TYPE spfli-carrid,
  connid TYPE spfli-connid,
  distance TYPE spfli-distance,
  END OF ty_itab.

DATA:lt_itab TYPE TABLE OF ty_itab.
DATA:ls_itab TYPE ty_itab.

DATA:nn TYPE spfli-distance.

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,
     l_user_command     TYPE slis_formname,
     i_event TYPE slis_t_event..
FIELD-SYMBOLS:<fs> TYPE ty_itab.

DATA:i_sort TYPE  slis_t_sortinfo_alv,
      wa_sort TYPE slis_sortinfo_alv.



START-OF-SELECTION.
CLEAR nn.
  SELECT carrid connid distance
    FROM spfli
    INto CORRESPONDING FIELDS OF TABLE lt_itab.

  LOOP AT lt_itab ASSIGNING <fs>.

    nn nn + <fs>-distance.
  ENDLOOP.

  ls_itab-carrid '合计'.
  ls_itab-distance nn.
  APPEND ls_itab to lt_itab.
  CLEAR ls_itab.

  DEFINE  hout.
    ws_fieldcat-fieldname     &1.
    ws_fieldcat-seltext_m     &2.
    ws_fieldcat-edit          &3.
    ws_fieldcat-quantity      &4.
    ws_fieldcat-ref_tabname   &5.
    ws_fieldcat-ref_fieldname &6.
    ws_fieldcat-no_zero       &7.
    ws_fieldcat-do_sum        &8.

    if &1 'CHK'.
      ws_fieldcat-checkbox      'X'.
    endif.

    append ws_fieldcat.
    clear ws_fieldcat.
  END-OF-DEFINITION.

  hout:
    'CARRID'  '航班' '' '' '' '' '' '' ,
    'CONNID'  '航线' '' '' '' '' '' '' ,
    'DISTANCE' '距离' '' '' '' '' '' '' .



  ws_layout-zebra             'X'.
  ws_layout-get_selinfos      'X'.
  ws_layout-colwidth_optimize 'X'.
  ws_layout-detail_popup      'X'.
  ws_layout-box_fieldname      'CHK'.


  DATA:g_reid like sy-repid.
  g_reid sy-repid.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       g_reid
*     i_callback_top_of_page   = 'SUB_ALV_TOP_OF_PAGE'
      is_layout                ws_layout
      it_fieldcat              ws_fieldcat[]
*     it_events                = i_event
*     I_CALLBACK_USER_COMMAND  = L_USER_COMMAND
*     I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
*     IT_SPECIAL_GROUPS        = WS_FIELDGROUPS_TAB[]
      it_sort                  i_sort
*     I_GRID_SETTINGS          = GS_SETTINGS
      i_default                'X'
      i_save                   'A'
    TABLES
      t_outtab                 lt_itab
    EXCEPTIONS
      program_error            1
      OTHERS                   2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ALV中实现一行跳转到另一个ALV可以通过以下步骤实现: 1. 在第一个ALV中双击某一行时,获取该行的数据,并将数据传递到第二个ALV中。 2. 在第二个ALV中显示传递过来的数据。 具体实现方式如下: 1. 在第一个ALV中添双击事件处理程序,获取当前双击行的数据,并将数据传递到第二个ALV中。可以使用函数模块 REUSE_ALV_GRID_DISPLAY 或方法 cl_gui_alv_grid=>factory 创建第二个ALV对象,然后使用 EXPORT TO MEMORY 将数据导出到内存中。 2. 在第二个ALV中添初始化事件处理程序,从内存中导入数据,并在ALV中显示。可以使用 IMPORT FROM MEMORY 将数据导入到内存中,然后使用 SET_TABLE_FOR_FIRST_DISPLAY 或者 SET_TABLE_FOR_LVC_GRID 方法设置ALV显示的数据和属性。 示例代码如下: 第一个ALV: ``` DATA: gv_data TYPE REF TO data. " 双击事件处理程序 DATA: lr_event TYPE REF TO cl_salv_events_table. CREATE OBJECT lr_event EXPORTING iv_event_id = cl_salv_events_table=>event_id_double_click. SET HANDLER handle_double_click FOR lr_event. " 双击处理程序 METHOD handle_double_click. DATA: lr_table TYPE REF TO cl_salv_table, lr_row TYPE REF TO cl_salv_wd_table_row, lv_data TYPE string. " 获取当前双击的行 lr_table = me->alv->get_model( ). lr_row = lr_table->if_salv_wd_table=>get_current_row( ). " 获取行数据 CALL METHOD lr_row->if_salv_wd_table_column~get_value RECEIVING rv_value = lv_data. " 将数据导出到内存中 CREATE DATA gv_data TYPE string. ASSIGN gv_data->* TO FIELD-SYMBOL(<fs_data>). <fs_data> = lv_data. EXPORT gv_data TO MEMORY ID 'ALV_DATA'. " 创建第二个ALV对象并跳转到第二个ALV CALL METHOD cl_salv_table=>factory EXPORTING list_display = if_salv_c_bool_sap=>true IMPORTING r_salv_table = lr_table CHANGING t_table = gt_data. lr_table->display( ). ENDMETHOD. ``` 第二个ALV: ``` " 初始化事件处理程序 METHOD handle_init. DATA: lv_data TYPE string. " 从内存中导入数据 IMPORT gv_data FROM MEMORY ID 'ALV_DATA'. ASSIGN gv_data->* TO FIELD-SYMBOL(<fs_data>). lv_data = <fs_data>. " 设置ALV的数据和属性 CALL METHOD me->alv->set_table_for_first_display EXPORTING i_structure_name = 'SFLIGHT' is_variant = gs_variant CHANGING it_outtab = gt_data. ENDMETHOD. ``` 其中,`gt_data` 为第二个ALV显示的数据,`gs_variant` 为第二个ALV的属性。在实际开发中,需要根据具体需求进行设置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值