发布时间:2025-12-09 11:45:54 浏览次数:1
在一次房地产项目做售后服务时,当时给用户做了一个集合各种单据并可显示代办单据数字的平台,界面如下:
客服人员可以直观的看到处于各个状态的代办单据数,点击数字就能穿透进入ALV:
双击案件编号,即可穿透进入通知单详细界面:
这里简单介绍如何实现在界面上显示动态数字,点击数字并能够穿透进入ALV清单界面。
(1)屏幕显示数字
先在程序里建立屏幕,在屏幕绘制器中定义显示屏幕:
注意:在字段程式中设定只是输出字段;在显示中设定点两下的回应。
在PBO中给显示字段赋值:
PBO Module中的代码:
1 MODULE CHECK_GV_S1_10 OUTPUT. 2 CLEAR: GV_COUNT, GV_S1_10. 3 REFRESH GT_QMNUM. 4 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0001' 'S1'. 5 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 6 GV_S1_10 = GV_COUNT. 7 8 CLEAR: GV_COUNT. 9 REFRESH GT_QMNUM. 10 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0004' 'S3'. 11 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 12 13 GV_S1_10 = GV_S1_10 + GV_COUNT. 14 MODIFY SCREEN. 15 REFRESH GT_QMNUM. 16 ENDMODULE. 17 18 MODULE CHECK_GV_S1_20 OUTPUT. 19 CLEAR: GV_COUNT, GV_S1_20. 20 REFRESH GT_QMNUM. 21 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0002' 'S1'. 22 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 23 GV_S1_20 = GV_COUNT. 24 MODIFY SCREEN. 25 REFRESH GT_QMNUM. 26 ENDMODULE. 27 28 MODULE CHECK_GV_S1_30 OUTPUT. 29 CLEAR: GV_COUNT, GV_S1_30. 30 REFRESH GT_QMNUM. 31 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0003' 'S1'. 32 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 33 GV_S1_30 = GV_COUNT. 34 35 CLEAR: GV_COUNT. 36 REFRESH GT_QMNUM. 37 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0006' 'S3'. 38 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 39 40 GV_S1_30 = GV_S1_30 + GV_COUNT. 41 MODIFY SCREEN. 42 REFRESH GT_QMNUM. 43 ENDMODULE. 44 45 MODULE CHECK_GV_S1_35 OUTPUT. 46 CLEAR: GV_COUNT, GV_S1_35 . 47 REFRESH GT_QMNUM. 48 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0004' 'S1'. 49 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 50 GV_S1_35 = GV_COUNT. 51 52 CLEAR: GV_COUNT. 53 REFRESH GT_QMNUM. 54 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0007' 'S3'. 55 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 56 57 GV_S1_35 = GV_S1_35 + GV_COUNT. 58 MODIFY SCREEN. 59 REFRESH GT_QMNUM. 60 ENDMODULE. 61 62 MODULE CHECK_GV_S1_40 OUTPUT. 63 CLEAR: GV_COUNT, GV_S1_40 . 64 REFRESH GT_QMNUM. 65 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0005' 'S1'. 66 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 67 GV_S1_40 = GV_COUNT. 68 69 CLEAR: GV_COUNT. 70 REFRESH GT_QMNUM. 71 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0008' 'S3'. 72 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 73 74 GV_S1_40 = GV_S1_40 + GV_COUNT. 75 REFRESH GT_QMNUM. 76 ENDMODULE. 77 78 MODULE CHECK_GV_S1_50 OUTPUT. 79 CLEAR: GV_COUNT, GV_S1_50 . 80 REFRESH GT_QMNUM. 81 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0016' 'S1'. 82 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 83 GV_S1_50 = GV_COUNT. 84 85 CLEAR: GV_COUNT. 86 REFRESH GT_QMNUM. 87 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0014' 'S3'. 88 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT. 89 90 GV_S1_50 = GV_S1_50 + GV_COUNT. 91 MODIFY SCREEN. 92 REFRESH GT_QMNUM. 93 ENDMODULE. 94 95 MODULE CHECK_GV_S1_60 OUTPUT. 96 CLEAR: GV_COUNT, GV_S1_60 . 97 REFRESH GT_QMNUM. 98 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0006' 'S1'. 99 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT.100 GV_S1_60 = GV_COUNT.101 MODIFY SCREEN.102 REFRESH GT_QMNUM.103 ENDMODULE.104 105 MODULE CHECK_GV_S1_70 OUTPUT.106 CLEAR: GV_COUNT, GV_S1_70 .107 REFRESH GT_QMNUM.108 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0007' 'S1'.109 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT.110 GV_S1_70 = GV_COUNT.111 112 CLEAR: GV_COUNT.113 REFRESH GT_QMNUM.114 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0010' 'S3'.115 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT.116 117 GV_S1_70 = GV_S1_70 + GV_COUNT.118 MODIFY SCREEN.119 REFRESH GT_QMNUM.120 ENDMODULE.121 122 MODULE CHECK_GV_S1_80 OUTPUT.123 CLEAR: GV_COUNT, GV_S1_80 .124 REFRESH GT_QMNUM.125 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0008' 'S1'.126 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT.127 GV_S1_80 = GV_COUNT.128 129 CLEAR: GV_COUNT.130 REFRESH GT_QMNUM.131 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0011' 'S3'.132 DESCRIBE TABLE GT_QMNUM LINES GV_COUNT.133 134 GV_S1_80 = GV_S1_80 + GV_COUNT.135 MODIFY SCREEN.136 REFRESH GT_QMNUM.137 ENDMODULE.
PERFORM中的代码:
1 FORM GET_NOTI_LIST TABLES IT_QMNUM TYPE TT_QMNUM 2 USING I_STAT TYPE J_ESTAT 3 I_QMART TYPE QMART. 4 DATA: BEGIN OF LT_OBJNR OCCURS 0, 5 OBJNR TYPE J_OBJNR, 6 END OF LT_OBJNR. 7 CLEAR:LT_OBJNR. 8 REFRESH: LT_OBJNR[]. 9 10 select OBJNR11 INTO TABLE LT_OBJNR12 FROM JEST13 WHERE STAT = I_STAT14 AND OBJNR LIKE 'QM%'15 AND INACT = ' '.16 17 IF SY-SUBRC = 0.18 select QMNUM "#EC CI_NO_TRANSFORM19 INTO TABLE IT_QMNUM20 FROM QMEL21 FOR ALL ENTRIES IN LT_OBJNR22 WHERE OBJNR = LT_OBJNR-OBJNR23 AND QMART = I_QMART24 AND PHASE NE 425 AND PHASE NE 5 .26 ENDIF.27 28 ENDFORM.
(2)点击数字进入ALV界面
在PAI中定义点击事件:
这里是使用GET CURSOR FIELD <L_filed>获取屏幕字段名,再根据字段名来取数。这里示例取数,当然应该有更简洁的写法:
1 FORM LIST_NITILIST USING P_FIELD TYPE C. 2 SET PARAMETER ID 'YFG_CUR_FIELD' FIELD P_FIELD. 3 REFRESH SELTAB. 4 CASE P_FIELD. 5 WHEN 'GV_S1_10'. 6 REFRESH GT_QMNUM. 7 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0001' 'S1'. 8 LOOP AT GT_QMNUM INTO WA_QMNUM. 9 CLEAR SELTAB_WA. 10 SELTAB_WA-SELNAME = 'S_QMNUM'. 11 SELTAB_WA-SIGN = 'I'. 12 SELTAB_WA-OPTION = 'EQ'. 13 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 14 APPEND SELTAB_WA TO SELTAB. 15 ENDLOOP. 16 17 REFRESH GT_QMNUM. 18 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0004' 'S3'. 19 CLEAR WA_QMNUM. 20 LOOP AT GT_QMNUM INTO WA_QMNUM. 21 CLEAR SELTAB_WA. 22 SELTAB_WA-SELNAME = 'S_QMNUM'. 23 SELTAB_WA-SIGN = 'I'. 24 SELTAB_WA-OPTION = 'EQ'. 25 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 26 APPEND SELTAB_WA TO SELTAB. 27 ENDLOOP. 28 29 WHEN 'GV_S1_20'. 30 REFRESH GT_QMNUM. 31 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0002' 'S1'. 32 CLEAR WA_QMNUM. 33 LOOP AT GT_QMNUM INTO WA_QMNUM. 34 CLEAR SELTAB_WA. 35 SELTAB_WA-SELNAME = 'S_QMNUM'. 36 SELTAB_WA-SIGN = 'I'. 37 SELTAB_WA-OPTION = 'EQ'. 38 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 39 APPEND SELTAB_WA TO SELTAB. 40 ENDLOOP. 41 42 WHEN 'GV_S1_30'. 43 REFRESH GT_QMNUM. 44 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0003' 'S1'. 45 CLEAR WA_QMNUM. 46 LOOP AT GT_QMNUM INTO WA_QMNUM. 47 CLEAR SELTAB_WA. 48 SELTAB_WA-SELNAME = 'S_QMNUM'. 49 SELTAB_WA-SIGN = 'I'. 50 SELTAB_WA-OPTION = 'EQ'. 51 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 52 APPEND SELTAB_WA TO SELTAB. 53 ENDLOOP. 54 55 REFRESH GT_QMNUM. 56 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0006' 'S3'. 57 CLEAR WA_QMNUM. 58 LOOP AT GT_QMNUM INTO WA_QMNUM. 59 CLEAR SELTAB_WA. 60 SELTAB_WA-SELNAME = 'S_QMNUM'. 61 SELTAB_WA-SIGN = 'I'. 62 SELTAB_WA-OPTION = 'EQ'. 63 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 64 APPEND SELTAB_WA TO SELTAB. 65 ENDLOOP. 66 67 WHEN 'GV_S1_35'. 68 REFRESH GT_QMNUM. 69 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0004' 'S1'. 70 CLEAR WA_QMNUM. 71 LOOP AT GT_QMNUM INTO WA_QMNUM. 72 CLEAR SELTAB_WA. 73 SELTAB_WA-SELNAME = 'S_QMNUM'. 74 SELTAB_WA-SIGN = 'I'. 75 SELTAB_WA-OPTION = 'EQ'. 76 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 77 APPEND SELTAB_WA TO SELTAB. 78 ENDLOOP. 79 80 REFRESH GT_QMNUM. 81 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0007' 'S3'. 82 CLEAR WA_QMNUM. 83 LOOP AT GT_QMNUM INTO WA_QMNUM. 84 CLEAR SELTAB_WA. 85 SELTAB_WA-SELNAME = 'S_QMNUM'. 86 SELTAB_WA-SIGN = 'I'. 87 SELTAB_WA-OPTION = 'EQ'. 88 SELTAB_WA-LOW = WA_QMNUM-QMNUM. 89 APPEND SELTAB_WA TO SELTAB. 90 ENDLOOP. 91 92 WHEN 'GV_S1_40'. 93 REFRESH GT_QMNUM. 94 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0005' 'S1'. 95 CLEAR WA_QMNUM. 96 LOOP AT GT_QMNUM INTO WA_QMNUM. 97 CLEAR SELTAB_WA. 98 SELTAB_WA-SELNAME = 'S_QMNUM'. 99 SELTAB_WA-SIGN = 'I'.100 SELTAB_WA-OPTION = 'EQ'.101 SELTAB_WA-LOW = WA_QMNUM-QMNUM.102 APPEND SELTAB_WA TO SELTAB.103 ENDLOOP.104 105 REFRESH GT_QMNUM.106 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0008' 'S3'.107 CLEAR WA_QMNUM.108 LOOP AT GT_QMNUM INTO WA_QMNUM.109 CLEAR SELTAB_WA.110 SELTAB_WA-SELNAME = 'S_QMNUM'.111 SELTAB_WA-SIGN = 'I'.112 SELTAB_WA-OPTION = 'EQ'.113 SELTAB_WA-LOW = WA_QMNUM-QMNUM.114 APPEND SELTAB_WA TO SELTAB.115 ENDLOOP.116 117 WHEN 'GV_S1_50'.118 REFRESH GT_QMNUM.119 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0016' 'S1'.120 CLEAR WA_QMNUM.121 LOOP AT GT_QMNUM INTO WA_QMNUM.122 CLEAR SELTAB_WA.123 SELTAB_WA-SELNAME = 'S_QMNUM'.124 SELTAB_WA-SIGN = 'I'.125 SELTAB_WA-OPTION = 'EQ'.126 SELTAB_WA-LOW = WA_QMNUM-QMNUM.127 APPEND SELTAB_WA TO SELTAB.128 ENDLOOP.129 130 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0014' 'S3'.131 CLEAR WA_QMNUM.132 LOOP AT GT_QMNUM INTO WA_QMNUM.133 CLEAR SELTAB_WA.134 SELTAB_WA-SELNAME = 'S_QMNUM'.135 SELTAB_WA-SIGN = 'I'.136 SELTAB_WA-OPTION = 'EQ'.137 SELTAB_WA-LOW = WA_QMNUM-QMNUM.138 APPEND SELTAB_WA TO SELTAB.139 ENDLOOP.140 141 WHEN 'GV_S1_60'.142 REFRESH GT_QMNUM.143 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0006' 'S1'.144 CLEAR WA_QMNUM.145 LOOP AT GT_QMNUM INTO WA_QMNUM.146 CLEAR SELTAB_WA.147 SELTAB_WA-SELNAME = 'S_QMNUM'.148 SELTAB_WA-SIGN = 'I'.149 SELTAB_WA-OPTION = 'EQ'.150 SELTAB_WA-LOW = WA_QMNUM-QMNUM.151 APPEND SELTAB_WA TO SELTAB.152 ENDLOOP.153 154 WHEN 'GV_S1_70'.155 REFRESH GT_QMNUM.156 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0007' 'S1'.157 CLEAR WA_QMNUM.158 LOOP AT GT_QMNUM INTO WA_QMNUM.159 CLEAR SELTAB_WA.160 SELTAB_WA-SELNAME = 'S_QMNUM'.161 SELTAB_WA-SIGN = 'I'.162 SELTAB_WA-OPTION = 'EQ'.163 SELTAB_WA-LOW = WA_QMNUM-QMNUM.164 APPEND SELTAB_WA TO SELTAB.165 ENDLOOP.166 167 REFRESH GT_QMNUM.168 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0010' 'S3'.169 CLEAR WA_QMNUM.170 LOOP AT GT_QMNUM INTO WA_QMNUM.171 CLEAR SELTAB_WA.172 SELTAB_WA-SELNAME = 'S_QMNUM'.173 SELTAB_WA-SIGN = 'I'.174 SELTAB_WA-OPTION = 'EQ'.175 SELTAB_WA-LOW = WA_QMNUM-QMNUM.176 APPEND SELTAB_WA TO SELTAB.177 ENDLOOP.178 179 WHEN 'GV_S1_80'.180 REFRESH GT_QMNUM.181 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0008' 'S1'.182 CLEAR WA_QMNUM.183 LOOP AT GT_QMNUM INTO WA_QMNUM.184 CLEAR SELTAB_WA.185 SELTAB_WA-SELNAME = 'S_QMNUM'.186 SELTAB_WA-SIGN = 'I'.187 SELTAB_WA-OPTION = 'EQ'.188 SELTAB_WA-LOW = WA_QMNUM-QMNUM.189 APPEND SELTAB_WA TO SELTAB.190 ENDLOOP.191 192 REFRESH GT_QMNUM.193 PERFORM GET_NOTI_LIST TABLES GT_QMNUM USING 'E0011' 'S3'.194 CLEAR WA_QMNUM.195 LOOP AT GT_QMNUM INTO WA_QMNUM.196 CLEAR SELTAB_WA.197 SELTAB_WA-SELNAME = 'S_QMNUM'.198 SELTAB_WA-SIGN = 'I'.199 SELTAB_WA-OPTION = 'EQ'.200 SELTAB_WA-LOW = WA_QMNUM-QMNUM.201 APPEND SELTAB_WA TO SELTAB.202 ENDLOOP.203 204 ENDCASE.205 206 IF SELTAB IS NOT INITIAL .207 CLEAR SELTAB_WA.208 SELTAB_WA-SELNAME = 'C_B01'.209 SELTAB_WA-SIGN = 'I'.210 SELTAB_WA-OPTION = 'EQ'.211 SELTAB_WA-LOW = 'X'.212 APPEND SELTAB_WA TO SELTAB.213 214 CLEAR SELTAB_WA.215 SELTAB_WA-SELNAME = 'C_B03'.216 SELTAB_WA-SIGN = 'I'.217 SELTAB_WA-OPTION = 'EQ'.218 SELTAB_WA-LOW = 'X'.219 APPEND SELTAB_WA TO SELTAB.220 221 CLEAR SELTAB_WA.222 SELTAB_WA-SELNAME = 'C_B04'.223 SELTAB_WA-SIGN = 'I'.224 SELTAB_WA-OPTION = 'EQ'.225 SELTAB_WA-LOW = 'X'.226 APPEND SELTAB_WA TO SELTAB.227 228 CLEAR SELTAB_WA.229 SELTAB_WA-SELNAME = 'S_QMART'.230 SELTAB_WA-SIGN = 'I'.231 SELTAB_WA-OPTION = 'EQ'.232 SELTAB_WA-LOW = 'S1'.233 APPEND SELTAB_WA TO SELTAB.234 235 CLEAR SELTAB_WA.236 SELTAB_WA-SELNAME = 'S_QMART'.237 SELTAB_WA-SIGN = 'I'.238 SELTAB_WA-OPTION = 'EQ'.239 SELTAB_WA-LOW = 'S2'.240 APPEND SELTAB_WA TO SELTAB.241 242 CLEAR SELTAB_WA.243 SELTAB_WA-SELNAME = 'S_QMART'.244 SELTAB_WA-SIGN = 'I'.245 SELTAB_WA-OPTION = 'EQ'.246 SELTAB_WA-LOW = 'S3'.247 APPEND SELTAB_WA TO SELTAB.248 249 CLEAR SELTAB_WA.250 SELTAB_WA-SELNAME = 'S_QMART'.251 SELTAB_WA-SIGN = 'I'.252 SELTAB_WA-OPTION = 'EQ'.253 SELTAB_WA-LOW = 'S4'.254 APPEND SELTAB_WA TO SELTAB.255 256 SUBMIT YFG_PM_NOTIF_LIST257 * VIA SELECTION-SCREEN258 WITH SELECTION-TABLE SELTAB259 AND RETURN.260 ELSE.261 MESSAGE '無當前狀態的案件存在' TYPE 'S' DISPLAY LIKE 'E'.262 EXIT.263 ENDIF.
这里ALV是通过另一个程序YFG_PM_NOTIF_LIST实现的,在此Function中根据屏幕字段作为条件,给YFG_PM_NOTIF_LIST可执行程序的选择屏幕填充数据。这里C_B01、C_B03、C_B04位选择屏幕单选按钮。