Select a line in the report and display a dialog screen with some
of the values from the screen. The values Sort1, Sort2 and Sort3 can be cahnged
in the dialog screen. When the user clicks the OK button, the database table
ZPLUKSORT is updated and the report re-displayed.
1 report ZDKFRAHEN_TEST001. 2 *----------------------------------------------------------------------* 3 * 4 * This program demonstrates: 5 * - How to select a line in a report, 6 * - Show a custom dialog screen populated with values from the selected 7 * line in the report 8 * - Change the vakue in the dialog screen and re-display the report 9 * with the changed values 10 * 11 * Programmer: Henrik Frank 12 * Date : 07-08-2007 13 *----------------------------------------------------------------------* 14 15 16 *********************************************************************** 17 * DECLARATIONS 18 *********************************************************************** 19 TABLES: mara, 20 makt, 21 zpluksortlist. 22 23 24 DATA: BEGIN OF tab OCCURS 1, 25 matnr LIKE mara-matnr, 26 mtart LIKE mara-mtart, 27 matkl LIKE mara-matkl, 28 maktx LIKE makt-maktx, 29 plant TYPE werks_d, 30 sortlistno LIKE zpluksort-sortlistno, 31 atwrt LIKE zpluksort-atwrt, 32 sort1 LIKE zpluksort-sort1, 33 sort2 LIKE zpluksort-sort2, 34 sort3 LIKE zpluksort-sort3, 35 END OF tab. 36 37 DATA: 38 g_screen2000 LIKE zpluksort, "Data for screen 2000 39 g_okcode2000(6) TYPE c, "OK code screen 2000 40 g_tabix LIKE sy-tabix, 41 g_sortkey(30) TYPE c, 42 g_text TYPE string, 43 g_sortlistno LIKE zpluksort-sortlistno. 44 45 *********************************************************************** 46 * SELECTION SCREEN 47 *********************************************************************** 48 49 SELECTION-SCREEN BEGIN OF BLOCK grp1 WITH FRAME TITLE text-100. 50 SELECT-OPTIONS: matnr FOR mara-matnr. 51 SELECT-OPTIONS: mtart FOR mara-mtart DEFAULT 'FERT'. 52 SELECT-OPTIONS: matkl FOR mara-matkl. 53 SELECT-OPTIONS: p_plant FOR zpluksortlist-plant DEFAULT '0000'. 54 55 PARAMETERS: show1 AS CHECKBOX. 56 PARAMETERS: sort1 RADIOBUTTON GROUP type. 57 PARAMETERS: sort2 RADIOBUTTON GROUP type. 58 SELECTION-SCREEN END OF BLOCK grp1. 59 60 61 62 *********************************************************************** 63 * LIST EVENTS 64 *********************************************************************** 65 START-OF-SELECTION. 66 * Read data and display list 67 PERFORM display_list. "BC2058 68 69 70 *----------------------------------------------------------------------* 71 * TOP-OF-PAGE * 72 *----------------------------------------------------------------------* 73 * Write title * 74 *----------------------------------------------------------------------* 75 TOP-OF-PAGE. 76 PERFORM write_title. "BC2058 77 78 *----------------------------------------------------------------------* 79 * TOP-OF-PAGE DURING LINE-SELECTION * 80 *----------------------------------------------------------------------* 81 * Write title when program returns sfrom screen 2000 82 * 83 *----------------------------------------------------------------------* 84 TOP-OF-PAGE DURING LINE-SELECTION. 85 PERFORM write_title. 86 87 88 *----------------------------------------------------------------------* 89 * AT LINE-SELECTION. 90 *----------------------------------------------------------------------* 91 * User has choosen a line in the report 92 * Move key fields from report to screen 2000 and display the screen 93 *----------------------------------------------------------------------* 94 95 AT LINE-SELECTION. 96 97 CLEAR: 98 g_screen2000, 99 g_okcode2000. 100 101 102 * Move fields from report line to screen 2000 103 MOVE: 104 tab-sortlistno TO g_screen2000-sortlistno, 105 tab-atwrt TO g_screen2000-atwrt, 106 tab-sort1 TO g_screen2000-sort1, 107 tab-sort2 TO g_screen2000-sort2, 108 tab-sort3 TO g_screen2000-sort3. 109 110 * Call screen 2000 to edit values 111 CALL SCREEN 2000 STARTING AT 40 10 ENDING AT 100 20. 112 113 114 *----------------------------------------------------------------------* 115 * AT USER-COMMAND. 116 *----------------------------------------------------------------------* 117 * Dummy user command - Necessary to re-display list with changes 118 * after return from screen 2000 119 *----------------------------------------------------------------------* 120 AT USER-COMMAND. 121 IF sy-ucomm = 'DUMMY'. 122 sy-lsind = sy-lsind - 1. 123 PERFORM display_list. 124 ENDIF. 125 126 *********************************************************************** 127 * SCREEN LOGIC FOR SCREEN 2000 128 *********************************************************************** 129 130 131 *&---------------------------------------------------------------------* 132 *& Module STATUS_2000 OUTPUT 133 *&---------------------------------------------------------------------* 134 * PF status for screen 2000 135 *----------------------------------------------------------------------* 136 MODULE status_2000 OUTPUT. 137 SET PF-STATUS 'STATUS_2000'. 138 ENDMODULE. " STATUS_2000 OUTPUT 139 140 *&---------------------------------------------------------------------* 141 *& Module USER_COMMAND_2000 INPUT 142 *&---------------------------------------------------------------------* 143 * User command screen 2000 144 *----------------------------------------------------------------------* 145 MODULE user_command_2000 INPUT. 146 CASE g_okcode2000. 147 WHEN 'BUTOK'. 148 * OK button - update 149 PERFORM update_zpluksort. 150 151 * If update OK, then g_okcode2000 still = BUTOK 152 IF g_okcode2000 = 'BUTOK'. 153 * Execute dummy command to re-display the list 154 SET USER-COMMAND 'DUMMY'. 155 sy-ucomm = 'DUMMY'. 156 ENDIF. 157 SET SCREEN 0. 158 159 WHEN 'BUTCAN'. 160 * Cancel button - no update 161 SET SCREEN 0. 162 ENDCASE. 163 164 165 ENDMODULE. " USER_COMMAND_2000 INPUT 166 167 168 *&---------------------------------------------------------------------* 169 *& Form write_title 170 *&---------------------------------------------------------------------* 171 * Write list header 172 *----------------------------------------------------------------------* 173 FORM write_title. 174 FORMAT COLOR 4. 175 WRITE: /1 'Carlsberg'. 176 WRITE: 40 'Sort of picking for selected materials'. 177 WRITE: 111(5) 'Page:'. 178 WRITE: 117(4) sy-pagno. 179 180 WRITE: /91 'Printet:'. 181 WRITE: 100 sy-datum DD/MM/YYYY. 182 WRITE: 111 'Time:'. 183 WRITE: 119 sy-uzeit USING EDIT MASK '__:__'. 184 FORMAT COLOR OFF. 185 ULINE. 186 187 WRITE AT 1 text-001. "Matnr 188 WRITE AT 10 text-002. "Description 189 WRITE AT 51 text-003. "Mtyp 190 WRITE AT 56 text-004. "Mat group 191 WRITE AT 66 text-005. "Sort1 192 WRITE AT 72 text-006. "Sort2 193 WRITE AT 78 text-007. "Sort3 194 WRITE AT 84 text-008. "Sort rule 195 WRITE AT 95 text-009. "Charac 196 WRITE AT 110 text-010. "Plant 197 198 199 NEW-LINE. 200 201 WRITE '-------' UNDER text-001. 202 WRITE '---------------------------------------' UNDER text-002. 203 WRITE '----' UNDER text-003. 204 WRITE '---------' UNDER text-004. 205 WRITE '----' UNDER text-005. 206 WRITE '----' UNDER text-006. 207 WRITE '----' UNDER text-007. 208 WRITE '---------' UNDER text-008. 209 WRITE '------' UNDER text-009. 210 WRITE '----' UNDER text-010. 211 212 213 214 215 ENDFORM. " write_title 216 217 *&---------------------------------------------------------------------* 218 *& Form display_list 219 *&---------------------------------------------------------------------* 220 * Display list 221 *----------------------------------------------------------------------* 222 FORM display_list. 223 224 225 CLEAR tab. REFRESH tab. 226 SELECT matnr mtart matkl INTO CORRESPONDING FIELDS OF TABLE tab 227 FROM mara 228 WHERE matnr IN matnr 229 AND mtart IN mtart 230 AND matkl IN matkl. 231 232 233 234 235 LOOP AT tab. 236 237 CLEAR: 238 g_sortkey, 239 tab-sort1, 240 tab-sort2, 241 tab-sort3. 242 243 244 CALL FUNCTION 'Z_GET_SORT_FIELD' 245 EXPORTING 246 i_matnr = tab-matnr 247 i_plant = tab-plant "BC2058 248 IMPORTING 249 e_sortlistno = tab-sortlistno 250 e_atwrt = tab-atwrt 251 e_sort1 = tab-sort1 252 e_sort2 = tab-sort2 253 e_sort3 = tab-sort3 254 EXCEPTIONS 255 no_sortfield = 1 256 no_material = 2 257 OTHERS = 3. . 258 IF sy-subrc <> 0. 259 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 260 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 261 ENDIF. 262 263 CLEAR makt. 264 SELECT SINGLE * FROM makt 265 WHERE matnr = tab-matnr 266 AND spras = 'E'. 267 IF sy-subrc NE 0. 268 SELECT SINGLE * FROM makt 269 WHERE matnr = tab-matnr 270 AND spras = 'K'. 271 ENDIF. 272 IF sy-subrc = 0. 273 tab-maktx = makt-maktx. 274 ELSE. 275 tab-maktx = ' '. 276 ENDIF. 277 278 MODIFY tab. 279 ENDLOOP. 280 281 IF show1 = 'X'. 282 LOOP AT tab. 283 IF tab-sort1 = ' ' AND 284 tab-sort2 = ' ' AND 285 tab-sort3 = ' '. 286 DELETE tab. 287 ENDIF. 288 ENDLOOP. 289 ENDIF. 290 291 IF sort1 = 'X'. 292 SORT tab BY matnr plant. 293 ENDIF. 294 295 IF sort2 = 'X'. 296 SORT tab BY sort1 sort2 sort3 matnr. 297 ENDIF. 298 299 300 LOOP AT tab. 301 302 NEW-LINE. 303 WRITE tab-matnr UNDER text-001. 304 WRITE tab-maktx UNDER text-002. 305 WRITE tab-mtart UNDER text-003. 306 WRITE tab-matkl UNDER text-004. 307 WRITE tab-sort1 UNDER text-005. 308 WRITE tab-sort2 UNDER text-006. 309 WRITE tab-sort3 UNDER text-007. 310 WRITE tab-sortlistno UNDER text-008. 311 WRITE tab-atwrt UNDER text-009. 312 WRITE tab-plant UNDER text-010. 313 314 HIDE: 315 tab-sortlistno, 316 tab-atwrt, 317 tab-sort1, 318 tab-sort2, 319 tab-sort3. 320 321 322 ENDLOOP. 323 324 ENDFORM. " display_list 325 *&---------------------------------------------------------------------* 326 *& Form update_zpluksort 327 *&---------------------------------------------------------------------* 328 * Update table ZPLUKSORT with changes to sort rule 329 *----------------------------------------------------------------------* 330 FORM update_zpluksort. 331 DATA: l_answer TYPE string. 332 333 * Confirm update 334 CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' 335 EXPORTING 336 textline1 = 'Do you want to update sort rule ?' 337 titel = 'Update sort rule' 338 cancel_display = '' 339 IMPORTING 340 answer = l_answer. 341 IF l_answer <> 'J'. 342 g_okcode2000 = 'BUTCAN'. 343 EXIT. 344 ENDIF. 345 346 * Update 347 UPDATE zpluksort FROM g_screen2000. 348 349 IF sy-subrc = 0. 350 * Update OK - Show message 351 CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT' 352 EXPORTING 353 titel = 'Update' 354 textline1 = 'Sort rule updated'. 355 g_okcode2000 = 'BUTOK'. 356 357 ELSE. 358 * Update failed - Show message 359 CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT' 360 EXPORTING 361 titel = 'Error ' 362 textline1 = 'Error in update of sort rule'. 363 g_okcode2000 = 'BUTCAN'. 364 ENDIF. 365 366 367 368 ENDFORM. " update_zpluksort
No comments:
Post a Comment