二维码

[fmalv] 点击第二屏alv返回按钮,返回到第一屏alv已访问的记录高亮显示

Twilight发表于 2014-07-17 12:00Twilight 最后回复于 2014-07-17 12:00 [复制链接] 4253 0

第一屏的The Basic List
Highlighting the visited record1.png
如果我们要检查任意的flights,点击click按钮,将会跳转到第二屏ALV list显示明细
Highlighting the visited record2.png
当我们点击退出按钮,将会弹出确认对话框
Highlighting the visited record3.png
当我们返回到第一屏时,访问的记录将会被着色
ps:1、添加标准工具栏方法:thread-24-1-1.html
      2、需要添加自定义按钮

  1. TABLES:
  2.    spfli,
  3.    sflight,
  4.    sbook.

  5. TYPE-POOLS:slis.

  6. DATA:BEGIN OF t_spfli OCCURS 0,
  7.        checkbox,
  8.        color(3).
  9.        INCLUDE STRUCTURE spfli.
  10. DATA:END OF t_spfli.

  11. DATA:t_sspfli LIKE STANDARD TABLE OF t_spfli .
  12. DATA:fs_spfli LIKE LINE OF t_sspfli.

  13. DATA:BEGIN OF t_sflight OCCURS 0,
  14.        checkbox,
  15.        color(3).
  16.        INCLUDE STRUCTURE sflight.
  17. DATA:END OF t_sflight.

  18. DATA:t_ssflight LIKE STANDARD TABLE OF t_sflight.
  19. DATA:fs_sflight LIKE LINE OF t_ssflight.

  20. DATA:BEGIN OF t_sbook OCCURS 0.
  21.        INCLUDE STRUCTURE sbook.
  22. DATA:END OF t_sbook.

  23. DATA:fs_layout TYPE  slis_layout_alv,
  24.      w_program TYPE sy-repid.

  25. SELECT *
  26.    FROM spfli
  27.    INTO CORRESPONDING FIELDS OF TABLE t_spfli.

  28. fs_layout-info_fieldname = 'COLOR'.
  29. fs_layout-box_fieldname = 'CHECKBOX'.
  30. w_program = sy-repid.

  31. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  32.   EXPORTING
  33.     i_callback_program       = w_program
  34.     i_callback_pf_status_set = 'FLIGHT'
  35.     i_callback_user_command  = 'SPFLI_INFO'
  36.     i_structure_name         = 'SPFLI'
  37.     is_layout                = fs_layout
  38.   TABLES
  39.     t_outtab                 = t_spfli
  40.   EXCEPTIONS
  41.     program_error            = 1
  42.     OTHERS                   = 2.
  43. IF sy-subrc <> 0.
  44. * message id sy-msgid type sy-msgty number sy-msgno
  45. *         with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  46. ENDIF.

  47. *&--------------------------------------------------------------------*
  48. *&      form  flight
  49. *&--------------------------------------------------------------------*
  50. *       text
  51. *---------------------------------------------------------------------*
  52. *      -->rt_extab   text
  53. *---------------------------------------------------------------------*

  54. FORM flight    USING rt_extab TYPE slis_t_extab..
  55.   SET PF-STATUS 'FLIGHT' EXCLUDING rt_extab.
  56. ENDFORM.                    "FLIGHT

  57. *&--------------------------------------------------------------------*
  58. *&      form  spfli_info
  59. *&--------------------------------------------------------------------*
  60. *       text
  61. *---------------------------------------------------------------------*
  62. *      -->ucomm      text
  63. *      -->selfield   text
  64. *---------------------------------------------------------------------*
  65. FORM spfli_info USING ucomm LIKE sy-ucomm
  66.                        selfield TYPE slis_selfield.

  67.   selfield-refresh = 'X'.        "刷新alv界面
  68.   CASE ucomm.
  69.     WHEN 'FLIGHT'.
  70.       LOOP AT t_spfli.
  71.         IF t_spfli-checkbox = 'X'.
  72.           t_spfli-checkbox = ' '.
  73.           t_spfli-color = 'C51'.
  74.           MODIFY t_spfli TRANSPORTING checkbox color.
  75.           fs_spfli = t_spfli.
  76.           APPEND fs_spfli TO t_sspfli.
  77.         ENDIF.
  78.       ENDLOOP.

  79.       LOOP AT t_sspfli INTO fs_spfli.
  80.         SELECT *
  81.           FROM sflight
  82.      APPENDING CORRESPONDING FIELDS OF TABLE t_sflight
  83.          WHERE carrid EQ fs_spfli-carrid
  84.            AND connid EQ fs_spfli-connid.
  85.       ENDLOOP.

  86.   ENDCASE.
  87.   REFRESH t_sspfli.
  88.   CLEAR fs_spfli.

  89.   fs_layout-info_fieldname = 'COLOR'.
  90.   fs_layout-confirmation_prompt = 'X'."退出ALV列表的确认对话框
  91.   fs_layout-key_hotspot = 'X'.        "alv主键变成hotspot状态

  92.   CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  93.     EXPORTING
  94.       i_callback_program = w_program
  95.       i_structure_name   = 'SFLIGHT'
  96.       is_layout          = fs_layout
  97.     TABLES
  98.       t_outtab           = t_sflight
  99.     EXCEPTIONS
  100.       program_error      = 1
  101.       OTHERS             = 2.
  102.   IF sy-subrc <> 0.
  103. * message id sy-msgid type sy-msgty number sy-msgno
  104. *         with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  105.   ENDIF.
  106.   REFRESH t_sflight.

  107. ENDFORM.                    "SPFLI_INFO
复制代码
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表