工艺路线标准工时查询
1 *&---------------------------------------------------------------------* 2 * Programe name: ZPR03 3 * T-Code : ***** 4 * Description : 工艺路线标准工时报表 5 * Author : ***** 6 * Date : 2010-03-04 7 * Request NO. : C01K905748 8 *---------------------------------------------------------------------* 9 * Modification Log 10 * Date Author Num Description 11 * 2010-03-04 ***** 001 New Create 12 *---------------------------------------------------------------------* 13 REPORT ZPR03 NO STANDARD PAGE HEADING. 14 15 *---------------------------------------------------------------------* 16 *Tables defination 17 *---------------------------------------------------------------------* 18 TABLES: MARA, MARC, MAPL, PLAS, PLPO, CRHD, CRTX. 19 *---------------------------------------------------------------------* 20 *Type pools defination 21 *---------------------------------------------------------------------* 22 type-pools: slis. 23 24 *---------------------------------------------------------------------* 25 *Data defination 26 *---------------------------------------------------------------------* 27 28 *---------------------------------------------------------------------* 29 *Inner table and Workspace defination 30 *---------------------------------------------------------------------* 31 DATA: BEGIN OF TD_DISP OCCURS 0, 32 SECT TYPE C, "显示选择用 33 WERKS TYPE T001W-WERKS, "工厂 34 MTART TYPE MARA-MTART, "物料类型 35 FERTH TYPE MARA-FERTH, "生产/检验备忘录(客户) 36 MATNR TYPE MARA-MATNR, "物料 37 MATNR_EXT TYPE MATNR_EXT, 38 MAKTX TYPE MAKT-MAKTX, "物料描述 39 PLNAL TYPE PLAS-PLNAL, "组计数器 40 ARBPL TYPE CRHD-ARBPL, "工作中心 41 VGW02 TYPE PLPO-VGW02, "标准工时 42 ANZMA TYPE PLPO-ANZMA, "雇员数量 43 USR00 TYPE PLPO-USR00, "线外人数 44 CAPAC TYPE PLPO-BMSCH, "标准产能 45 ROWCL TYPE CHAR4, 46 END OF TD_DISP. 47 48 DATA:TD_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH HEADER LINE, 49 TD_LAYOUT TYPE SLIS_LAYOUT_ALV. 50 51 *---------------------------------------------------------------------* 52 *Screen defination 53 *---------------------------------------------------------------------* 54 SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-S01. 55 PARAMETERS P_WERKS TYPE MARC-WERKS OBLIGATORY DEFAULT '1002'. 56 SELECT-OPTIONS S_MTART FOR MARA-MTART. "物料类型 57 SELECT-OPTIONS S_FERTH FOR MARA-FERTH. "生产/检验备忘录 58 SELECT-OPTIONS S_MATNR FOR MARA-MATNR. "物料 59 SELECT-OPTIONS S_ARBPL FOR CRHD-ARBPL. "工作中心 60 SELECTION-SCREEN END OF BLOCK BK1. 61 62 *---------------------------------------------------------------------* 63 *AT SELECTION-SCREEN ON 64 *---------------------------------------------------------------------* 65 AT SELECTION-SCREEN ON P_WERKS. 66 PERFORM FRM_CHECK_INPUT_WERKS. 67 *---------------------------------------------------------------------* 68 *Start-of-selection 69 *---------------------------------------------------------------------* 70 START-OF-SELECTION. 71 72 * 根据选择条件,取得数据 73 PERFORM FRM_GET_DATA. 74 * 设置显示格式 75 PERFORM FRM_SET_LAYOUT. 76 * 显示数据 77 PERFORM FRM_DISPLAY_DATA. 78 79 *&---------------------------------------------------------------------* 80 *& Form FRM_CHECK_INPUT_WERKS 81 *&---------------------------------------------------------------------* 82 * 检查工厂的输入 83 *----------------------------------------------------------------------* 84 form FRM_CHECK_INPUT_WERKS . 85 DATA: LW_WERKS TYPE T001W-WERKS. 86 SELECT SINGLE WERKS 87 INTO LW_WERKS 88 FROM T001W 89 WHERE WERKS = P_WERKS. 90 IF SY-SUBRC <> 0. 91 MESSAGE TEXT-M01 TYPE 'S'. 92 STOP. 93 ENDIF. 94 endform. " FRM_CHECK_INPUT_WERKS 95 96 *&---------------------------------------------------------------------* 97 *& Form FRM_GET_DATA 98 *&---------------------------------------------------------------------* 99 * 根据选择条件,取得数据 100 *----------------------------------------------------------------------* 101 form FRM_GET_DATA . 102 103 DATA: BEGIN OF TD_MATNR OCCURS 0, 104 WERKS TYPE MARC-WERKS, "工厂 105 MTART TYPE MARA-MTART, "物料类型 106 FERTH TYPE MARA-FERTH, "生产/检验备忘录(客户) 107 MATNR TYPE MARA-MATNR, "物料 108 MAKTX TYPE MAKT-MAKTX, "物料描述 109 END OF TD_MATNR. 110 111 DATA: BEGIN OF TD_TIME OCCURS 0, 112 MATNR TYPE MAPL-MATNR, 113 WERKS TYPE MAPL-WERKS, 114 PLNTY TYPE PLAS-PLNTY, "任务清单类型 115 PLNNR TYPE PLAS-PLNNR, "任务清单组码 116 PLNAL TYPE PLAS-PLNAL, " 117 PLNKN TYPE PLAS-PLNKN, "任务清单节点数 118 ZAEHL TYPE PLAS-ZAEHL, "内部计数器 119 VGW02 TYPE PLPO-VGW02, "机器工时 120 VGE02 TYPE PLPO-VGE02, "机器工时单位 121 ANZMA TYPE PLPO-ANZMA, "雇员数量 122 BMSCH TYPE PLPO-BMSCH, "基本数量 123 MEINH TYPE PLPO-MEINH, "作业/工序的计量单位 124 * UMREZ TYPE PLPO-UMREZ, "计量单位转换:表头 125 * UMREN TYPE PLPO-UMREN, "计量单位转换:工序 126 USR00 TYPE PLPO-USR00, "线外人数 127 ARBID TYPE PLPO-ARBID, "对象标识 128 ARBPL TYPE CRHD-ARBPL, "工作中心 129 END OF TD_TIME. 130 IF SY-BATCH <> 'X'. 131 call function 'SAPGUI_PROGRESS_INDICATOR' 132 EXPORTING 133 PERCENTAGE = 20 134 TEXT = '取得物料数据……'. 135 ENDIF. 136 * 取得物料数据 137 SELECT MARC~WERKS "工厂 138 MARA~MTART "物料类型 139 MARA~FERTH "客户 140 MARA~MATNR "物料 141 MAKT~MAKTX "物料描述 142 INTO TABLE TD_MATNR 143 FROM MARA INNER JOIN MARC 144 ON MARA~MATNR = MARC~MATNR 145 AND MARC~WERKS = P_WERKS 146 INNER JOIN MAKT 147 ON MARA~MATNR = MAKT~MATNR 148 AND MAKT~SPRAS = SY-LANGU 149 INNER JOIN MAPL 150 ON MARC~MATNR = MAPL~MATNR 151 AND MARC~WERKS = MAPL~WERKS 152 WHERE MARA~MATNR IN S_MATNR 153 AND MARA~MTART IN S_MTART 154 AND MARA~FERTH IN S_FERTH 155 AND MAPL~PLNTY = 'N'. 156 157 IF TD_MATNR[] IS INITIAL. 158 MESSAGE TEXT-M02 TYPE 'S'. 159 STOP. 160 ENDIF. 161 162 SORT TD_MATNR BY WERKS MATNR. 163 DELETE ADJACENT DUPLICATES FROM TD_MATNR COMPARING WERKS MATNR. 164 IF SY-BATCH <> 'X'. 165 call function 'SAPGUI_PROGRESS_INDICATOR' 166 EXPORTING 167 PERCENTAGE = 40 168 TEXT = '取得工时数据……'. 169 ENDIF. 170 171 * 取得工时数据 172 SELECT MAPL~MATNR "物料 173 MAPL~WERKS "工厂 174 PLAS~PLNTY "Task List Type 175 PLAS~PLNNR "Key for Task List Group 176 PLAS~PLNAL "Group Counter 177 PLAS~PLNKN "Number of the task list node 178 PLAS~ZAEHL "Internal counter 179 PLPO~VGW02 "标准工时 180 PLPO~VGE02 "标准工时单位 181 PLPO~ANZMA "Number of employees 182 PLPO~BMSCH "Base Quantity 183 PLPO~MEINH "Unit of Measure for Activity/Operation 184 PLPO~USR00 "线外人员 185 PLPO~ARBID "Object ID 186 CRHD~ARBPL "Work center 187 INTO TABLE TD_TIME 188 FROM MAPL INNER JOIN PLAS ON 189 MAPL~PLNTY = PLAS~PLNTY 190 AND MAPL~PLNNR = PLAS~PLNNR 191 AND MAPL~PLNAL = PLAS~PLNAL 192 AND PLAS~LOEKZ NE 'X' 193 INNER JOIN PLPO ON 194 PLAS~PLNTY = PLPO~PLNTY 195 AND PLAS~PLNNR = PLPO~PLNNR 196 AND PLAS~PLNKN = PLPO~PLNKN 197 AND PLAS~ZAEHL = PLPO~ZAEHL 198 AND PLPO~WERKS = P_WERKS 199 AND PLPO~LOEKZ NE 'X' 200 AND PLPO~CKSELKZ EQ 'X' 201 INNER JOIN CRHD ON 202 PLPO~ARBID = CRHD~OBJID 203 AND CRHD~WERKS = P_WERKS 204 AND CRHD~OBJTY = 'A' 205 * FOR ALL ENTRIES IN TD_MATNR 206 WHERE MAPL~WERKS = P_WERKS 207 AND MAPL~PLNTY EQ 'N' 208 AND MAPL~LOEKZ NE 'X' 209 * AND MAPL~MATNR = TD_MATNR-MATNR 210 AND MAPL~MATNR IN S_MATNR 211 AND MAPL~LOEKZ NE 'X' 212 AND MAPL~PLNTY EQ 'N' 213 AND PLPO~STEUS IN ('ZP01','ZP04','PP03') 214 AND CRHD~ARBPL IN S_ARBPL. 215 * READ TABLE TD_MATNR WITH KEY MATNR = TD_TIME-MATNR BINARY SEARCH. 216 * IF SY-SUBRC = 0. 217 * APPEND TD_TIME. 218 * ELSE. 219 * CONTINUE. 220 * ENDIF. 221 * ENDSELECT. 222 223 IF SY-BATCH <> 'X'. 224 call function 'SAPGUI_PROGRESS_INDICATOR' 225 EXPORTING 226 PERCENTAGE = 60 227 TEXT = '计算工时数据和产能……'. 228 ENDIF. 229 DATA: LW_ROWCL TYPE CHAR4 VALUE 'C210'. 230 DATA: FLG TYPE C VALUE SPACE. 231 REFRESH: TD_DISP[]. 232 LOOP AT TD_MATNR. 233 TD_DISP-WERKS = TD_MATNR-WERKS. "工厂 234 TD_DISP-MTART = TD_MATNR-MTART. "物料类型 235 TD_DISP-FERTH = TD_MATNR-FERTH. "生产/检验备忘录(客户) 236 TD_DISP-MATNR = TD_MATNR-MATNR. "物料 237 TD_DISP-MAKTX = TD_MATNR-MAKTX. "物料描述 238 IF LW_ROWCL <> 'C410' AND FLG = 'X'. 239 LW_ROWCL = 'C410'. 240 FLG = SPACE. 241 ELSEIF LW_ROWCL <> 'C210' AND FLG = 'X'. 242 LW_ROWCL = 'C210'. 243 FLG = SPACE. 244 ENDIF. 245 TD_DISP-ROWCL = LW_ROWCL. 246 247 LOOP AT TD_TIME WHERE MATNR = TD_MATNR-MATNR AND 248 WERKS = TD_MATNR-WERKS. 249 FLG = 'X'. 250 TD_DISP-PLNAL = TD_TIME-PLNAL. "组计数器 251 TD_DISP-ARBPL = TD_TIME-ARBPL. "工作中心 252 IF TD_TIME-BMSCH <> 0. 253 TD_DISP-VGW02 = TD_TIME-VGW02 / TD_TIME-BMSCH. 254 ENDIF. 255 IF TD_TIME-VGE02 = 'H'. 256 TD_DISP-VGW02 = TD_DISP-VGW02 * 3600. 257 ELSEIF TD_TIME-VGE02 = 'MIN'. 258 TD_DISP-VGW02 = TD_DISP-VGW02 * 60. 259 ENDIF. 260 TD_DISP-ANZMA = TD_TIME-ANZMA. 261 TD_DISP-USR00 = TD_TIME-USR00. 262 IF TD_DISP-VGW02 <> 0. 263 TD_DISP-CAPAC = 3600 / TD_DISP-VGW02. 264 ENDIF. 265 266 call function 'CONVERSION_EXIT_MATN1_OUTPUT' 267 exporting 268 input = TD_DISP-MATNR 269 IMPORTING 270 OUTPUT = TD_DISP-MATNR_EXT . 271 272 APPEND TD_DISP. 273 CLEAR: TD_TIME. 274 ENDLOOP. 275 CLEAR: TD_DISP. 276 ENDLOOP. 277 278 IF TD_DISP[] IS INITIAL. 279 MESSAGE TEXT-M03 TYPE 'S'. 280 STOP. 281 ENDIF. 282 283 endform. " FRM_GET_DATA 284 285 *&---------------------------------------------------------------------* 286 *& Form FRM_SET_LAYOUT 287 *&---------------------------------------------------------------------* 288 * 设置显示格式 289 *----------------------------------------------------------------------* 290 form FRM_SET_LAYOUT . 291 292 * 设定显示字段 293 REFRESH TD_FIELDCAT[]. 294 PERFORM SUB_FILL_FIELDCAT_ALV USING: 295 'TD_DISP' 'WERKS' SPACE SPACE '工厂', 296 'TD_DISP' 'MTART' SPACE SPACE '物料类型', 297 'TD_DISP' 'FERTH' SPACE SPACE '客户', 298 'TD_DISP' 'MATNR_EXT' SPACE SPACE '物料', 299 'TD_DISP' 'MAKTX' SPACE SPACE '物料描述', 300 'TD_DISP' 'PLNAL' SPACE SPACE '组计数器', 301 'TD_DISP' 'ARBPL' SPACE SPACE '工作中心', 302 'TD_DISP' 'VGW02' SPACE SPACE '标准工时(S)', 303 'TD_DISP' 'ANZMA' SPACE SPACE '雇员数量', 304 'TD_DISP' 'USR00' SPACE SPACE '线外人数', 305 'TD_DISP' 'CAPAC' SPACE SPACE '标准产能'. 306 307 * 设定显示控制 308 CLEAR TD_LAYOUT. 309 TD_LAYOUT-ZEBRA = 'X'. 310 TD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. 311 TD_LAYOUT-BOX_FIELDNAME = 'SECT'. 312 TD_LAYOUT-INFO_FIELDNAME = 'ROWCL'. 313 TD_LAYOUT-WINDOW_TITLEBAR = '工艺路线标准工时报表'. 314 315 endform. " FRM_SET_LAYOUT 316 317 *&---------------------------------------------------------------------* 318 *& Form FRM_DISPLAY_DATA 319 *&---------------------------------------------------------------------* 320 * 显示数据 321 *----------------------------------------------------------------------* 322 form FRM_DISPLAY_DATA . 323 324 call function 'REUSE_ALV_GRID_DISPLAY' 325 EXPORTING 326 I_CALLBACK_PROGRAM = SY-REPID 327 IS_LAYOUT = TD_LAYOUT 328 IT_FIELDCAT = TD_FIELDCAT[] 329 I_DEFAULT = 'X' 330 I_SAVE = 'A' 331 tables 332 t_outtab = TD_DISP[] 333 EXCEPTIONS 334 PROGRAM_ERROR = 1 335 OTHERS = 2. 336 337 if sy-subrc <> 0. 338 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 339 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 340 endif. 341 endform. " FRM_DISPLAY_DATA 342 343 *&---------------------------------------------------------------------* 344 *& Form SUB_FILL_FIELDCAT_ALV 345 *&---------------------------------------------------------------------* 346 * 填充显示字段 347 *----------------------------------------------------------------------* 348 form SUB_FILL_FIELDCAT_ALV USING VALUE(I_TABNAME) 349 VALUE(I_FIELDNAME) 350 VALUE(I_QTABNAME) 351 VALUE(I_QFIELDNAME) 352 VALUE(I_SELTEXT_M). 353 354 CLEAR: 355 TD_FIELDCAT. 356 TD_FIELDCAT-TABNAME = I_TABNAME. 357 TD_FIELDCAT-FIELDNAME = I_FIELDNAME. 358 TD_FIELDCAT-QTABNAME = I_QTABNAME. 359 TD_FIELDCAT-QFIELDNAME = I_QFIELDNAME. 360 TD_FIELDCAT-SELTEXT_M = I_SELTEXT_M. 361 APPEND TD_FIELDCAT. 362 363 endform.
转自:http://iamskay.blog.163.com/blog/static/1337975632010612242110/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!