1 "表:TABLES:MSEG,LFA1,MARA,EKPO,EKKO,MARD,EKBE,EKET. 2 3 ************************************************************************ 4 * Modification Log 5 ************************************************************************ 6 * Date Ver. Programmer Descriptions 7 * -------- ---- ------------ ------------------------------------------- 8 * 201 1.0 Original Create 9 * 10 ************************************************************************ 11 12 REPORT ZCOR004 NO STANDARD PAGE HEADING 13 MESSAGE-ID 00 LINE-SIZE 177 LINE-COUNT 200. 14 *********************************************************************** 15 * Tables Definitions 16 ************************************************************************ 17 *TABLES:. 18 DATA: layout TYPE slis_layout_alv, 19 events TYPE slis_t_event. 20 DATA: wa_structure TYPE lvc_s_fcat, 21 wa_structure1 TYPE lvc_s_fcat, 22 wa_structure2 TYPE lvc_s_fcat, 23 wa_structure3 TYPE lvc_s_fcat, 24 25 set_wa_structure TYPE lvc_s_fcat, 26 set_wa_structure1 TYPE lvc_s_fcat, 27 set_wa_structure2 TYPE lvc_s_fcat, 28 set_wa_structure3 TYPE lvc_s_fcat. 29 * wa_fieldcat TYPE slis_fieldcat_alv. 30 TABLES:zmmr01_stok,zmmr02_stok,zmmr03_stok, 31 bickey,t001,marc,ebew,mkol,mard, 32 ekpo,t134m,ska1,marv,t030r,t030,skat, 33 acdoca_m_extract, matdoc . 34 35 ************************************************************************ 36 * Data Definitions 37 ************************************************************************ 38 DATA:BEGIN OF GT_MB52_1 OCCURS 0, 39 lgort like mardh-lgort,"存储地点 40 werks like t001w-werks," 工厂 41 mtart like mara-mtart,"物料类型 42 matkl like mara-matkl,"物料群组 43 matnr like mara-matnr ,"料号 44 maktx like makt-maktx,"物料说明 45 lgobe like t001l-lgobe,"储存位置说明 46 lgpbe like mard-lgpbe, "储格 47 labst like mardh-labst,"未限制 48 salk3 type p decimals 3," mbewh-salk3,"值未限制 49 sobkz like mkol-sobkz,"特别库存 50 insme like mardh-insme,"品质检验中 51 einme like mardh-einme,"限制使用库存 52 salk3_1 like mbewh-salk3,"值已限制 53 speme like mardh-speme,"已冻结 54 salk3_2 like mbewh-salk3,"冻结库存值 55 retme like mardh-retme,"退货 56 salk3_3 like mbewh-salk3,"冻结退货值 57 dispo like marc-dispo, "mrp控制员 58 labst_insme like mardh-labst,"未限制 & 品质检验中 59 salk3_4 like mbewh-salk3,"评估gr冻结库存 60 bwesb like marc-bwesb,"已评估的收货冻结库存 61 ssnum like bickey-ssnum,"特殊库存号码 62 meins like mara-meins,"单位 63 waers like t001-waers,"币别 64 lbkum_e like ebewh-lbkum, " 销售库存 65 lbkum_m like mbewh-lbkum, " 评估库存 66 price like ebewh-verpr, " 异动平均价额 67 stprs like mbewh-stprs, " 标准价格 68 verpr like ebewh-verpr, " 异动平均价格 69 peinh like ebewh-peinh, "每 70 vprsv like ebewh-vprsv, " 价格控制 71 vbeln like mskah-vbeln, " sd文件 72 posnr like mskah-posnr, " 项次 73 kunnr like mskuh-kunnr, " 客户 74 lifnr like mslbh-lifnr,"供应商 75 END OF GT_MB52_1. 76 77 data:begin of g_mslb1 occurs 0, " 特别库存 O 78 lgort like mardh-lgort,"存储地点 79 werks like t001w-werks," 工厂 80 mtart like mara-mtart,"物料类型 81 matkl like mara-matkl,"物料群组 82 matnr like mslbh-matnr ,"料号 83 maktx like makt-maktx,"物料说明 84 lgobe like t001l-lgobe,"储存位置说明 85 lgpbe like mard-lgpbe, "储格 86 labst like mslbh-lblab,"未限制 87 salk3 type p decimals 3," mbewh-salk3,"值未限制 88 sobkz like mkol-sobkz,"特别库存 89 insme like mardh-insme,"品质检验中 90 einme like mardh-einme,"限制使用库存 91 salk3_1 like mbewh-salk3,"值已限制 92 speme like mardh-speme,"已冻结 93 salk3_2 like mbewh-salk3,"冻结库存值 94 retme like mardh-retme,"退货 95 salk3_3 like mbewh-salk3,"冻结退货值 96 dispo like marc-dispo, "mrp控制员 97 labst_insme like mardh-labst,"未限制 & 品质检验中 98 salk3_4 like mbewh-salk3,"评估gr冻结库存 99 bwesb like marc-bwesb,"已评估的收货冻结库存 100 ssnum like bickey-ssnum,"特殊库存号码 101 meins like mara-meins,"单位 102 waers like t001-waers,"币别 103 lbkum_e like ebewh-lbkum, " 销售库存 104 lbkum_m like mbewh-lbkum, " 评估库存 105 price like ebewh-verpr, " 异动平均价额 106 stprs like mbewh-stprs, " 标准价格 107 verpr LIKE ebewh-verpr, " 异动平均价格 108 peinh LIKE ebewh-peinh, "每 109 vprsv LIKE ebewh-vprsv, " 价格控制 110 vbeln LIKE mskah-vbeln, " sd文件 111 posnr like mskah-posnr, " 项次 112 kunnr like mskuh-kunnr, " 客户 113 lifnr like mslbh-lifnr,"供应商 114 end of g_mslb1. 115 116 data:begin of g_msku1 occurs 0, " 特别库存为 W 117 lgort like mardh-lgort,"存储地点 118 werks like t001w-werks," 工厂 119 mtart like mara-mtart,"物料类型 120 matkl like mara-matkl,"物料群组 121 matnr like mara-matnr ,"料号 122 maktx like makt-maktx,"物料说明 123 lgobe like t001l-lgobe,"储存位置说明 124 lgpbe like mard-lgpbe, "储格 125 labst like mardh-labst,"未限制 126 salk3 type p decimals 3," mbewh-salk3,"值未限制 127 sobkz like mkol-sobkz,"特别库存 128 insme like mardh-insme,"品质检验中 129 einme like mardh-einme,"限制使用库存 130 salk3_1 like mbewh-salk3,"值已限制 131 speme like mardh-speme,"已冻结 132 salk3_2 like mbewh-salk3,"冻结库存值 133 retme like mardh-retme,"退货 134 salk3_3 like mbewh-salk3,"冻结退货值 135 dispo like marc-dispo, "mrp控制员 136 labst_insme like mardh-labst,"未限制 & 品质检验中 137 salk3_4 like mbewh-salk3,"评估gr冻结库存 138 bwesb like marc-bwesb,"已评估的收货冻结库存 139 ssnum like bickey-ssnum,"特殊库存号码 140 meins like mara-meins,"单位 141 waers like t001-waers,"币别 142 lbkum_e like ebewh-lbkum, " 销售库存 143 lbkum_m like mbewh-lbkum, " 评估库存 144 price like ebewh-verpr, " 异动平均价额 145 stprs like mbewh-stprs, " 标准价格 146 verpr like ebewh-verpr, " 异动平均价格 147 peinh like ebewh-peinh, "每 148 vprsv like ebewh-vprsv, " 价格控制 149 kunnr like mskuh-kunnr, " 客户号码 150 end of g_msku1. 151 152 data:begin of g_ebew1 occurs 0, " 特别库存为 e 153 lgort like mardh-lgort,"存储地点 154 werks like t001w-werks," 工厂 155 mtart like mara-mtart,"物料类型 156 matkl like mara-matkl,"物料群组 157 matnr like mara-matnr ,"料号 158 maktx like makt-maktx,"物料说明 159 lgobe like t001l-lgobe,"储存位置说明 160 lgpbe like mard-lgpbe, "储格 161 labst like mardh-labst,"未限制 162 salk3 type p decimals 3,"mbewh-salk3,"值未限制 163 sobkz like mkol-sobkz,"特别库存 164 insme like mardh-insme,"品质检验中 165 einme like mardh-einme,"限制使用库存 166 salk3_1 like mbewh-salk3,"值已限制 167 speme like mardh-speme,"已冻结 168 salk3_2 like mbewh-salk3,"冻结库存值 169 retme like mardh-retme,"退货 170 salk3_3 like mbewh-salk3,"冻结退货值 171 dispo like marc-dispo, "mrp控制员 172 labst_insme like mardh-labst,"未限制 & 品质检验中 173 salk3_4 like mbewh-salk3,"评估gr冻结库存 174 bwesb like marc-bwesb,"已评估的收货冻结库存 175 ssnum like bickey-ssnum,"特殊库存号码 176 meins like mara-meins,"单位 177 waers like t001-waers,"币别 178 lbkum_e like ebewh-lbkum, " 销售库存 179 lbkum_m like mbewh-lbkum, " 评估库存 180 price like ebewh-verpr, " 异动平均价额 181 stprs like mbewh-stprs, " 标准价格 182 verpr like ebewh-verpr, " 异动平均价格 183 peinh like ebewh-peinh, "每 184 vprsv like ebewh-vprsv, " 价格控制 185 vbeln like mskah-vbeln, " sd文件 186 posnr like mskah-posnr, " 项次 187 lifnr like mslbh-lifnr,"供应商 188 end of g_ebew1. 189 190 data:begin of g_mslb2 occurs 0, " 特别库存 O 191 lgort2(8),"存储地点 ii 192 text(40) type c, "呆滞期 193 werks like t001w-werks," 工厂 194 mtart like mara-mtart,"物料类型 195 matkl like mara-matkl,"物料群组 196 matnr like mara-matnr ,"料号 197 maktx like makt-maktx,"物料说明 198 lgort like mardh-lgort,"存储地点 199 lgobe like t001l-lgobe,"储存位置说明 200 lgpbe like mard-lgpbe, "储格 201 salk3 like mbewh-salk3,"值未限制 202 sobkz like mkol-sobkz,"特别库存 203 einme like mardh-einme,"限制使用库存 204 salk3_1 like mbewh-salk3,"值已限制 205 speme like mardh-speme,"已冻结 206 salk3_2 like mbewh-salk3,"冻结库存值 207 retme like mardh-retme,"退货 208 salk3_3 like mbewh-salk3,"冻结退货值 209 salk3_4 like mbewh-salk3,"评估gr冻结库存 210 bwesb like marc-bwesb,"已评估的收货冻结库存 211 ssnum like bickey-ssnum,"特殊库存号码 212 lvorm like mard-lvorm," sloc level df存储位置等级 213 meins like mara-meins,"单位 214 waers like t001-waers,"币别 215 labst like mardh-labst,"未限制 216 insme like mardh-insme,"品质检验中 217 dispo like marc-dispo, "mrp控制员 218 labst_insme like mardh-labst,"未限制 & 品质检验中 219 price type p decimals 5, "单价 220 hsl type p length 16 decimals 5, " 金额 221 * text(40) type c, "呆滞期 222 price1 like ebewh-verpr, " 异动平均价额 223 stprs like mbewh-stprs, " 标准价格 224 verpr like ebewh-verpr, " 异动平均价格 225 peinh like ebewh-peinh, "每 226 vprsv like ebewh-vprsv, " 价格控制 227 vbeln like mskah-vbeln, " sd文件 228 posnr like mskah-posnr, " 项次 229 lifnr like mslbh-lifnr,"供应商 230 end of g_mslb2. 231 232 data:begin of g_msku2 occurs 0, " 特别库存为 W 233 lgort2(8),"存储地点 ii 234 text(40) type c, "呆滞期 235 werks like t001w-werks," 工厂 236 mtart like mara-mtart,"物料类型 237 matkl like mara-matkl,"物料群组 238 matnr like mara-matnr ,"料号 239 maktx like makt-maktx,"物料说明 240 lgort like mardh-lgort,"存储地点 241 lgobe like t001l-lgobe,"储存位置说明 242 lgpbe like mard-lgpbe, "储格 243 salk3 like mbewh-salk3,"值未限制 244 sobkz like mkol-sobkz,"特别库存 245 einme like mardh-einme,"限制使用库存 246 salk3_1 like mbewh-salk3,"值已限制 247 speme like mardh-speme,"已冻结 248 salk3_2 like mbewh-salk3,"冻结库存值 249 retme like mardh-retme,"退货 250 salk3_3 like mbewh-salk3,"冻结退货值 251 salk3_4 like mbewh-salk3,"评估gr冻结库存 252 bwesb like marc-bwesb,"已评估的收货冻结库存 253 ssnum like bickey-ssnum,"特殊库存号码 254 lvorm like mard-lvorm," sloc level df存储位置等级 255 meins like mara-meins,"单位 256 waers like t001-waers,"币别 257 labst like mardh-labst,"未限制 258 insme like mardh-insme,"品质检验中 259 dispo like marc-dispo, "mrp控制员 260 labst_insme like mardh-labst,"未限制 & 品质检验中 261 price type p decimals 5, "单价 262 hsl type p length 16 decimals 5, " 金额 263 * text(40) type c, "呆滞期 264 price1 like ebewh-verpr, " 异动平均价额 265 stprs like mbewh-stprs, " 标准价格 266 verpr like ebewh-verpr, " 异动平均价格 267 peinh like ebewh-peinh, "每 268 vprsv like ebewh-vprsv, " 价格控制 269 vbeln like mskah-vbeln, " sd文件 270 posnr like mskah-posnr, " 项次 271 kunnr like mskuh-kunnr, " 客户 272 end of g_msku2. 273 274 data:begin of g_ebew2 occurs 0, " 特别库存为 e 275 lgort2(8),"存储地点 ii 276 text(40) type c, "呆滞期 277 werks like t001w-werks," 工厂 278 mtart like mara-mtart,"物料类型 279 matkl like mara-matkl,"物料群组 280 matnr like mara-matnr ,"料号 281 maktx like makt-maktx,"物料说明 282 lgort like mardh-lgort,"存储地点 283 lgobe like t001l-lgobe,"储存位置说明 284 lgpbe like mard-lgpbe, "储格 285 salk3 like mbewh-salk3,"值未限制 286 sobkz like mkol-sobkz,"特别库存 287 einme like mardh-einme,"限制使用库存 288 salk3_1 like mbewh-salk3,"值已限制 289 speme like mardh-speme,"已冻结 290 salk3_2 like mbewh-salk3,"冻结库存值 291 retme like mardh-retme,"退货 292 salk3_3 like mbewh-salk3,"冻结退货值 293 salk3_4 like mbewh-salk3,"评估gr冻结库存 294 bwesb like marc-bwesb,"已评估的收货冻结库存 295 ssnum like bickey-ssnum,"特殊库存号码 296 LVORM LIKE mard-lvorm," sloc level DF存储位置等级 297 meins like mara-meins,"单位 298 waers like t001-waers,"币别 299 labst like mardh-labst,"未限制 300 insme like mardh-insme,"品质检验中 301 dispo like marc-dispo, "mrp控制员 302 labst_insme like mardh-labst,"未限制 & 品质检验中 303 price type p decimals 5, "单价 304 hsl type p LENGTH 16 decimals 5, " 金额 305 price1 like ebewh-verpr, " 异动平均价额 306 stprs like mbewh-stprs, " 标准价格 307 verpr like ebewh-verpr, " 异动平均价格 308 peinh like ebewh-peinh, "每 309 vprsv like ebewh-vprsv, " 价格控制 310 vbeln like mskah-vbeln, " sd文件 311 posnr like mskah-posnr, " 项次 312 end of g_ebew2. 313 314 DATA: factor TYPE f . 315 316 DATA:BEGIN OF g_mslb3 occurs 0, " O 特别库存 317 zwhcode like mara-zwhcode,"wh code 318 werks like t001w-werks," 工厂 319 mtart like mara-mtart,"物料类型 320 matkl like mara-matkl,"物料群组 321 matnr like mara-matnr ,"料号 322 mb_zwhcode like mara-zwhcode," mbs 库存 323 s_zwhcode like mara-zwhcode," wh code & mbs 库存 324 maktx like makt-maktx,"物料说明 325 lgort like mardh-lgort,"存储地点 326 lgobe like t001l-lgobe,"储存位置说明 327 lgpbe like mard-lgpbe, "储格 328 labst like mardh-labst,"未限制 329 salk3 type p decimals 4,"值未限制 330 sobkz like mkol-sobkz,"特别库存 331 insme like mardh-insme,"品质检验中 332 einme like mardh-einme,"限制使用库存 333 salk3_1 like mbewh-salk3,"值已限制 334 speme like mardh-speme,"已冻结 335 salk3_2 like mbewh-salk3,"冻结库存值 336 retme like mardh-retme,"退货 337 salk3_3 like mbewh-salk3,"冻结退货值 338 dispo like marc-dispo, "mrp控制员 339 salk3_4 like mbewh-salk3,"评估gr冻结库存 340 bwesb like marc-bwesb,"已评估的收货冻结库存 341 ssnum like bickey-ssnum,"特殊库存号码 342 meins like mara-meins,"单位 343 waers like t001-waers,"币别 344 price like ebewh-verpr, " 异动平均价额 345 stprs like mbewh-stprs, " 标准价格 346 verpr like ebewh-verpr, " 异动平均价格 347 peinh like ebewh-peinh, "每 348 vprsv like ebewh-vprsv, " 价格控制 349 lifnr like mslbh-lifnr,"供应商 350 END OF g_mslb3. 351 352 DATA:BEGIN OF g_msku3 occurs 0, " 特别库存为 O 353 zwhcode like mara-zwhcode,"wh code 354 werks like t001w-werks," 工厂 355 mtart like mara-mtart,"物料类型 356 matkl like mara-matkl,"物料群组 357 matnr like mara-matnr ,"料号 358 mb_zwhcode like mara-zwhcode," mbs 库存 359 s_zwhcode like mara-zwhcode," wh code & mbs 库存 360 maktx like makt-maktx,"物料说明 361 lgort like mardh-lgort,"存储地点 362 lgobe like t001l-lgobe,"储存位置说明 363 lgpbe like mard-lgpbe, "储格 364 labst like mardh-labst,"未限制 365 salk3 type p decimals 4,"值未限制 366 sobkz like mkol-sobkz,"特别库存 367 insme like mardh-insme,"品质检验中 368 einme like mardh-einme,"限制使用库存 369 salk3_1 like mbewh-salk3,"值已限制 370 speme like mardh-speme,"已冻结 371 salk3_2 like mbewh-salk3,"冻结库存值 372 retme like mardh-retme,"退货 373 salk3_3 like mbewh-salk3,"冻结退货值 374 dispo like marc-dispo, "mrp控制员 375 salk3_4 like mbewh-salk3,"评估gr冻结库存 376 bwesb like marc-bwesb,"已评估的收货冻结库存 377 ssnum like bickey-ssnum,"特殊库存号码 378 meins like mara-meins,"单位 379 waers like t001-waers,"币别 380 price like ebewh-verpr, " 异动平均价额 381 stprs like mbewh-stprs, " 标准价格 382 verpr like ebewh-verpr, " 异动平均价格 383 peinh like ebewh-peinh, "每 384 vprsv like ebewh-vprsv, " 价格控制 385 kunnr like mskuh-kunnr, " 客户 386 387 END OF g_msku3. 388 389 DATA:BEGIN OF g_ebew3 occurs 0, " 特别库存为 E 390 zwhcode like mara-zwhcode,"wh code 391 werks like t001w-werks," 工厂 392 mtart like mara-mtart,"物料类型 393 matkl like mara-matkl,"物料群组 394 matnr like mara-matnr ,"料号 395 mb_zwhcode like mara-zwhcode," mbs 库存 396 s_zwhcode like mara-zwhcode," wh code & mbs 库存 397 maktx like makt-maktx,"物料说明 398 lgort like mardh-lgort,"存储地点 399 lgobe like t001l-lgobe,"储存位置说明 400 lgpbe like mard-lgpbe, "储格 401 labst like mardh-labst,"未限制 402 salk3 type p decimals 4,"值未限制 403 sobkz like mkol-sobkz,"特别库存 404 insme like mardh-insme,"品质检验中 405 einme like mardh-einme,"限制使用库存 406 salk3_1 like mbewh-salk3,"值已限制 407 speme like mardh-speme,"已冻结 408 salk3_2 like mbewh-salk3,"冻结库存值 409 retme like mardh-retme,"退货 410 salk3_3 like mbewh-salk3,"冻结退货值 411 dispo like marc-dispo, "mrp控制员 412 salk3_4 like mbewh-salk3,"评估gr冻结库存 413 bwesb like marc-bwesb,"已评估的收货冻结库存 414 ssnum like bickey-ssnum,"特殊库存号码 415 meins like mara-meins,"单位 416 waers like t001-waers,"币别 417 price like ebewh-verpr, " 异动平均价额 418 stprs like mbewh-stprs, " 标准价格 419 verpr like ebewh-verpr, " 异动平均价格 420 peinh like ebewh-peinh, "每 421 vprsv like ebewh-vprsv, " 价格控制 422 vbeln like mskah-vbeln, " sd文件 423 posnr like mskah-posnr, " 项次 424 END OF g_ebew3. 425 426 DATA:l_lbkum LIKE mbewh-lbkum, 427 l_verpr LIKE mbewh-verpr, 428 l_salk3 LIKE mbewh-salk3, 429 l_peinh LIKE mbewh-peinh. 430 431 DATA:l_existed TYPE i, " 已存在前期值 432 l_existed1 TYPE i," 已存在前期值 433 l_existed2 TYPE i," 已存在前期值 434 l_existed3 TYPE i, " 已存在前期值 435 l_existed_turr TYPE i. " 已存在前期值 436 437 *定义变量参数用于下载路径和文件名 438 DATA: L_PATH TYPE STRING. 439 440 DATA:BEGIN OF GT_MB52_2 OCCURS 0, 441 lgort2(8),"存储地点 ii 442 text(40) type c, "呆滞期 443 werks like t001w-werks," 工厂 444 mtart like mara-mtart,"物料类型 445 matkl like mara-matkl,"物料群组 446 matnr like mara-matnr ,"料号 447 maktx like makt-maktx,"物料说明 448 lgort like mardh-lgort,"存储地点 449 lgobe like t001l-lgobe,"储存位置说明 450 lgpbe like mard-lgpbe, "储格 451 salk3 like mbewh-salk3,"值未限制 452 sobkz like mkol-sobkz,"特别库存 453 einme like mardh-einme,"限制使用库存 454 salk3_1 like mbewh-salk3,"值已限制 455 speme like mardh-speme,"已冻结 456 salk3_2 like mbewh-salk3,"冻结库存值 457 retme like mardh-retme,"退货 458 salk3_3 like mbewh-salk3,"冻结退货值 459 salk3_4 like mbewh-salk3,"评估gr冻结库存 460 bwesb like marc-bwesb,"已评估的收货冻结库存 461 ssnum like bickey-ssnum,"特殊库存号码 462 lvorm like mard-lvorm," sloc level df存储位置等级 463 meins like mara-meins,"单位 464 waers like t001-waers,"币别 465 labst like mardh-labst,"未限制 466 insme like mardh-insme,"品质检验中 467 dispo like marc-dispo, "mrp控制员 468 labst_insme like mardh-labst,"未限制 & 品质检验中 469 price type p decimals 5, "单价 470 hsl type p length 16 decimals 5, " 金额 471 * text(40) type c, "呆滞期 472 price1 like ebewh-verpr, " 异动平均价额 473 stprs like mbewh-stprs, " 标准价格 474 verpr like ebewh-verpr, " 异动平均价格 475 peinh like ebewh-peinh, "每 476 vprsv like ebewh-vprsv, " 价格控制 477 vbeln like mskah-vbeln, " sd文件 478 posnr like mskah-posnr, " 项次 479 kunnr like mskuh-kunnr, " 客户 480 lifnr like mslbh-lifnr,"供应商 481 END OF GT_MB52_2. 482 483 DATA:BEGIN OF gt_t001l occurs 0, 484 lgort2 like zmmr02_stok-lgort2,"存储地点 ii 485 END OF gt_t001l. 486 487 DATA:BEGIN OF GT_MB52_3 OCCURS 0, 488 zwhcode like mara-zwhcode,"wh code 489 werks like t001w-werks," 工厂 490 mtart like mara-mtart,"物料类型 491 matkl like mara-matkl,"物料群组 492 matnr like mara-matnr ,"料号 493 mb_zwhcode like mara-zwhcode," mbs 库存 494 s_zwhcode like mara-zwhcode," wh code & mbs 库存 495 maktx like makt-maktx,"物料说明 496 lgort like mardh-lgort,"存储地点 497 lgobe like t001l-lgobe,"储存位置说明 498 lgpbe like mard-lgpbe, "储格 499 labst like mardh-labst,"未限制 500 salk3 type p decimals 4,"值未限制 501 sobkz like mkol-sobkz,"特别库存 502 insme like mardh-insme,"品质检验中 503 einme like mardh-einme,"限制使用库存 504 salk3_1 like mbewh-salk3,"值已限制 505 speme like mardh-speme,"已冻结 506 salk3_2 like mbewh-salk3,"冻结库存值 507 retme like mardh-retme,"退货 508 salk3_3 like mbewh-salk3,"冻结退货值 509 dispo like marc-dispo, "mrp控制员 510 salk3_4 like mbewh-salk3,"评估gr冻结库存 511 bwesb like marc-bwesb,"已评估的收货冻结库存 512 ssnum like bickey-ssnum,"特殊库存号码 513 meins like mara-meins,"单位 514 waers like t001-waers,"币别 515 price like ebewh-verpr, " 异动平均价额 516 stprs like mbewh-stprs, " 标准价格 517 verpr like ebewh-verpr, " 异动平均价格 518 peinh like ebewh-peinh, "每 519 vprsv like ebewh-vprsv, " 价格控制 520 vbeln like mskah-vbeln, " sd文件 521 posnr like mskah-posnr, " 项次 522 kunnr like mskuh-kunnr, " 客户 523 lifnr like mslbh-lifnr,"供应商 524 labst_insme like mardh-labst, 525 END OF GT_MB52_3. 526 527 DATA: BEGIN OF gt_period OCCURS 0, 528 seqno(2) TYPE n, 529 datum LIKE sy-datum, 530 sdate LIKE sy-datum, 531 tdate LIKE sy-datum, 532 ptext(20) TYPE c, 533 END OF gt_period. 534 535 DATA:gt_period1 LIKE gt_period occurs 0 WITH HEADER LINE, 536 gt_period2 LIKE gt_period occurs 0 WITH HEADER LINE, 537 gt_period3 LIKE gt_period occurs 0 WITH HEADER LINE. 538 539 DATA: BEGIN OF set_mb52_2 OCCURS 0, 540 lgort2 LIKE zmmr02_stok-LGORT2, " 储存地点 II 541 lgobe2 LIKE T001L-LGOBE," 存储地说明 542 sum3 TYPE P DECIMALS 2, " 0-3个月 543 sum04_06 TYPE P DECIMALS 2, " 4-6个月 544 sum07_12 TYPE P DECIMALS 2, " 7-12 个月 545 sum12_24 TYPE P DECIMALS 2, " 1-2 年 546 sum24 TYPE P DECIMALS 2, " 24 个月 547 sum TYPE P DECIMALS 2, " 总计 548 END OF set_mb52_2. 549 "呆滞期金额汇总 550 551 *----动态alv说明 552 DATA: BEGIN OF GT_DTYPE OCCURS 0, 553 dtype(2) TYPE C , 554 dtext(20) TYPE C, 555 END OF GT_DTYPE. 556 557 558 DATA:BEGIN OF SUM_300 OCCURS 0, 559 zwhcode like mara-zwhcode,"wh code 560 salk3 like mbew-salk3,"值未限制 561 remarks(30) type c,"wh code 备注 562 END OF SUM_300. 563 564 DATA:BEGIN OF SUM_100 OCCURS 0, 565 lgort like mard-lgort,"存储地点 566 lgobe like t001l-lgobe,"储存位置说明 567 salk3 like mbew-salk3,"值未限制 568 END OF SUM_100. 569 570 DATA:BEGIN OF sum_200 OCCURS 0, 571 lgort2(8),"存储地点 572 lgobe2 like t001l-lgobe,"储存位置说明 573 salk3 type p decimals 2, "like mbew-salk3,"值未限制 574 END OF sum_200. 575 576 DATA: sum_200_1 LIKE sum_200 occurs 0 WITH HEADER LINE, 577 sum_100_1 LIKE sum_100 occurs 0 WITH HEADER LINE, 578 sum_300_1 LIKE sum_300 occurs 0 WITH HEADER LINE. 579 580 DATA:l2_kunnr like msku-kunnr, " 供应商 581 l2_lifnr like mslb-lifnr, " 客户编号 582 l2_vbeln like mska-vbeln , "采购单号 583 l2_posnr like mska-posnr, "采购单项次 584 l1_kunnr like msku-kunnr," 供应商 585 l1_lifnr like mslb-lifnr, " 客户编号 586 l1_vbeln like mska-vbeln , "采购单号 587 l1_posnr like mska-posnr,"采购单项次 588 l3_kunnr like msku-kunnr," 供应商 589 l3_lifnr like mslb-lifnr, " 客户编号 590 l3_vbeln like mska-vbeln , "采购单号 591 l3_posnr like mska-posnr."采购单项次 592 593 DATA:l2_index1 type sy-tabix, 594 l1_index1 type sy-tabix, 595 l3_index1 type sy-tabix. 596 DATA: g_sdate LIKE sy-datum. 597 598 DATA: colname(10), 599 index(2). 600 601 DATA: wa_fcat TYPE lvc_s_fcat, 602 wa_fcat1 TYPE lvc_s_fcat, 603 wa_fcat2 TYPE lvc_s_fcat, 604 wa_fcat3 TYPE lvc_s_fcat, 605 606 set_wa_fcat TYPE lvc_s_fcat, 607 set_wa_fcat1 TYPE lvc_s_fcat, 608 set_wa_fcat2 TYPE lvc_s_fcat, 609 set_wa_fcat3 TYPE lvc_s_fcat. 610 DATA: ne_col1 LIKE ALSMEX_TABLINE-col VALUE 1, 611 ne_col2 LIKE ALSMEX_TABLINE-col VALUE 2. 612 613 614 DATA: BEGIN OF upload1 OCCURS 0. 615 INCLUDE STRUCTURE ALSMEX_TABLINE. 616 DATA:END OF upload1. 617 618 DATA: BEGIN OF upload2 OCCURS 0. 619 INCLUDE STRUCTURE ALSMEX_TABLINE. 620 DATA:END OF upload2. 621 622 DATA: BEGIN OF upload3 OCCURS 0. 623 INCLUDE STRUCTURE ALSMEX_TABLINE. 624 DATA:END OF upload3. 625 626 DATA: BEGIN OF upload4 OCCURS 0. 627 INCLUDE STRUCTURE ALSMEX_TABLINE. 628 DATA:END OF upload4. 629 DATA: G_FIYEAR4(4) TYPE N. "年 630 DATA: G_FIYEAR3(3) TYPE N. "月 631 DATA: G_FIYEAR(7) TYPE N. "前三月 632 DATA: DATE TYPE D. "当月第一天 633 DATA: GET_DATE TYPE D. "当月最后一天 634 DATA: N1(4) TYPE N. "获取前三月年 635 DATA: N2(2) TYPE N. "前三月 636 DATA: DATE1 TYPE D. " 三月第一天 637 DATA: GET_DATE1 TYPE D. "前三月最后一天 638 DATA: G_MBLNR(3) TYPE C. "单据单头 20181008 LZW ADD 639 DATA: G_MBLNR1(3) TYPE C. "单据单头 20181008 LZW ADD 640 641 DATA: G_HIGH TYPE SY-DATUM. " 最后一天 642 DATA: G_LOW TYPE SY-DATUM. " 第一天 643 DATA: L_N(7) TYPE P . " 天数 644 DATA: L_N_ALL(7) TYPE P . " 当月总天数 645 646 DATA: L_MONTH1(7) TYPE P . " 月数 647 DATA: L_MONTH2(7) TYPE P . " 月数 648 649 DATA: E_DAYS LIKE VTBBEWE-ATAGE . " 天数 650 DATA: E_MONTHS LIKE VTBBEWE-ATAGE . " 月数 651 DATA: E_YEARS LIKE VTBBEWE-ATAGE . " 年数 652 DATA: DEAD_MONTH1 TYPE P DECIMALS 2 . " 呆滯期(月) 653 654 655 DATA:BEGIN OF GT_DATA OCCURS 0, 656 matnr like mara-matnr, 657 gt_dmbtr like bseg-dmbtr, "本国货币金额 658 h_budat like bseg-h_budat, " 过账日期 659 END OF GT_DATA. 660 661 *----ZCOR002------ 662 663 *ALV自定义按钮 664 CONSTANTS ALV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'ALV_PF_STATUS'. 665 *ALV自定义按钮事件 666 CONSTANTS ALV_USER_COMMAND TYPE SLIS_FORMNAME 667 VALUE 'ALV_USER_COMMAND'. 668 669 "FOR ALV报表 670 TYPE-POOLS SLIS. 671 DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV, 672 gt_fieldcat type slis_t_fieldcat_alv with header line, 673 gt_fieldcats type slis_t_fieldcat_alv with header line, 674 wa_fieldcat type slis_fieldcat_alv, 675 gs_layout1 type slis_layout_alv, 676 gt_fieldcat1 type slis_t_fieldcat_alv with header line, 677 wa_fieldcat1 type slis_fieldcat_alv, 678 gs_layout2 type slis_layout_alv, 679 gt_fieldcat2 type slis_t_fieldcat_alv with header line, 680 wa_fieldcat2 type slis_fieldcat_alv, 681 gs_layout3 type slis_layout_alv, 682 gt_fieldcat3 type slis_t_fieldcat_alv with header line, 683 wa_fieldcat3 type slis_fieldcat_alv, 684 685 set_wa_fieldcat1 type slis_fieldcat_alv, 686 set_wa_fieldcat2 type slis_fieldcat_alv, 687 set_wa_fieldcat3 type slis_fieldcat_alv, 688 set_wa_fieldcat type slis_fieldcat_alv, 689 set_fieldcat type slis_t_fieldcat_alv with header line, 690 set_fieldcat1 type slis_t_fieldcat_alv with header line, 691 set_fieldcat2 type slis_t_fieldcat_alv with header line, 692 set_fieldcat3 type slis_t_fieldcat_alv with header line. 693 694 DATA: L_number LIKE sy-tabix. 695 DATA: LASTDAY TYPE SY-DATUM, 696 date4 TYPE sy-datum, 697 date4_day TYPE sy-datum, " 下限日期的第一天 698 date4_s TYPE sy-datum. "上线日期日期第一天 699 700 *-----> 判断选择屏明细日期后是否需要下载 701 DATA: Have_data TYPE c, 702 p_return TYPE i. " 下载变量 703 704 DATA: MANDT TYPE SY-MANDT. " 用户端 705 706 DATA: date3 TYPE vtbbewe-dvalut. " 上个月最后一天 707 DATA: date3_1 TYPE vtbbewe-dvalut. " 上 5个月最后一天 708 709 DATA:P_WERKS1 LIKE T001W-WERKS VALUE '100', 710 P_WERKS2 LIKE T001W-WERKS VALUE '200', 711 P_WERKS3 LIKE T001W-WERKS VALUE '300'. 712 * flag TYPE trff_flg, 713 * days TYPE trff_type_n_2. 714 FIELD-SYMBOLS:<gt_table> TYPE STANDARD TABLE, 715 <g_wa>, 716 <g_comp>, 717 <g_field>. 718 719 FIELD-SYMBOLS:<gt_table1> TYPE STANDARD TABLE, 720 <g_wa1>, 721 <g_comp1>, 722 <g_field1>. 723 724 FIELD-SYMBOLS:<gt_table2> TYPE STANDARD TABLE, 725 <g_wa2>, 726 <g_comp2>, 727 <g_field2>. 728 729 FIELD-SYMBOLS:<gt_table3> TYPE STANDARD TABLE, 730 <g_wa3>, 731 <g_comp3>, 732 <g_field3>. 733 734 DATA: gt_table TYPE REF TO data, 735 gt_structure TYPE lvc_t_fcat, 736 gt_table1 TYPE REF TO data, 737 gt_structure1 TYPE lvc_t_fcat, 738 gt_table2 TYPE REF TO data, 739 gt_structure2 TYPE lvc_t_fcat, 740 gt_table3 TYPE REF TO data, 741 gt_structure3 TYPE lvc_t_fcat, 742 743 create_table TYPE REF TO data, 744 set_structure TYPE lvc_t_fcat, 745 create_table1 TYPE REF TO data, 746 set_structure1 TYPE lvc_t_fcat, 747 create_table2 TYPE REF TO data, 748 set_structure2 TYPE lvc_t_fcat, 749 create_table3 TYPE REF TO data, 750 set_structure3 TYPE lvc_t_fcat. 751 752 753 " 下载资料明细 754 "MB52_100 明细 755 DATA: BEGIN OF down_mb52_1 OCCURS 0, 756 C1(100) TYPE C, 757 C2(100) TYPE C, 758 C3(100) TYPE C, 759 C4(100) TYPE C, 760 C5(100) TYPE C, 761 C6(100) TYPE C, 762 C7(100) TYPE C, 763 C8(100) TYPE C, 764 C9(100) TYPE C, 765 C10(100) TYPE C, 766 C11(100) TYPE C, 767 C12(100) TYPE C, 768 C13(100) TYPE C, 769 C14(100) TYPE C, 770 C15(100) TYPE C, 771 C16(100) TYPE C, 772 C17(100) TYPE C, 773 C18(100) TYPE C, 774 C19(100) TYPE C, 775 C20(100) TYPE C, 776 C21(100) TYPE C, 777 C22(100) TYPE C, 778 C23(100) TYPE C, 779 C24(100) TYPE C, 780 C25(100) TYPE C, 781 C26(100) TYPE C, 782 C27(100) TYPE C, 783 C28(100) TYPE C, 784 C29(100) TYPE C, 785 C30(100) TYPE C, 786 C31(100) TYPE C, 787 C32(100) TYPE C, 788 C33(100) TYPE C, 789 C34(100) TYPE C, 790 791 END OF down_mb52_1. 792 793 794 DATA: down_mb52_2 LIKE down_mb52_1 occurs 0 WITH HEADER LINE, 795 *DATA: down_mb52_2 LIKE down_mb52_1 occurs 0 WITH HEADER LINE, " MB52_200 明细 796 down_mb52_3 LIKE down_mb52_1 occurs 0 WITH HEADER LINE. " MB52_300 明细 797 798 " 下载变量 799 DATA: L_FINIT TYPE STRING, " default file path 800 L_FPATH TYPE STRING, " file path 801 P_FPATH2 TYPE STRING, " file path 802 L_LEN TYPE I. " file path length 803 804 " 汇总 邮件变量 805 DATA: g_string_1 TYPE string, 806 g_string_2 TYPE string, 807 g_string_3 TYPE string, 808 g_string_4 TYPE string, 809 g_mail_address TYPE ad_smtpadr. 810 811 DATA: g_datel_1 TYPE string, 812 g_datel_2 TYPE string, 813 g_datel_3 TYPE string, 814 g_datel_4 TYPE string. 815 816 CONSTANTS: gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab, 817 gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. 818 819 *数据往期数据 table 820 DATA: BEGIN OF gt_tcurr occurs 0 , 821 kurst LIKE tcurr-kurst,"汇率类型 822 fcurr LIKE tcurr-fcurr," 来源货币 823 tcurr LIKE tcurr-tcurr,"目标货币 824 gdatu LIKE tcurr-gdatu,"生效日期 825 ukurs LIKE tcurr-ukurs,"汇率 826 ffact LIKE tcurr-ffact,"比率来源 827 tfact LIKE tcurr-tfact,"比率目标 828 END OF gt_tcurr. 829 830 "获取往期库存值 831 DATA:BEGIN OF gt_zmmr01_stok occurs 0, 832 lgort2 like zmmr01_stok-lgort2, 833 werks like zmmr01_stok-werks, 834 znum like zmmr01_stok-znum, 835 datum like zmmr01_stok-datum, 836 lifab like zmmr01_stok-lifab, 837 shkzg like zmmr01_stok-shkzg, 838 salk3 like zmmr01_stok-salk3, 839 text like zmmr01_stok-text, 840 END OF gt_zmmr01_stok. 841 842 DATA:BEGIN OF gt_zmmr02_stok occurs 0, 843 lgort2 like zmmr02_stok-lgort2, 844 werks like zmmr02_stok-werks, 845 znum like zmmr02_stok-znum, 846 datum like zmmr02_stok-datum, 847 lifab like zmmr02_stok-lifab, 848 shkzg like zmmr02_stok-shkzg, 849 salk3 like zmmr02_stok-salk3, 850 text like zmmr02_stok-text, 851 END OF gt_zmmr02_stok. 852 853 854 DATA:BEGIN OF gt_zmmr02_year occurs 0, " 年度标准成本 855 znum LIKE zmmr02_year-znum, 856 werks LIKE zmmr02_year-werks, 857 datum LIKE zmmr02_year-datum, 858 lifab LIKE zmmr02_year-lifab, 859 lfgja LIKE zmmr02_year-lfgja, 860 shkzg LIKE zmmr02_year-shkzg, 861 annual LIKE zmmr02_year-annual, 862 taxt LIKE zmmr02_year-text, 863 END OF gt_zmmr02_year. 864 865 DATA:BEGIN OF gt_zmmr03_stok occurs 0, 866 zwhcode like zmmr03_stok-zwhcode, 867 werks like zmmr03_stok-werks, 868 znum like zmmr03_stok-znum, 869 datum like zmmr03_stok-datum, 870 lifab like zmmr03_stok-lifab, 871 shkzg like zmmr03_stok-shkzg, 872 salk3 like zmmr03_stok-salk3, 873 text like zmmr03_stok-text, 874 END OF gt_zmmr03_stok. 875 876 DATA:BEGIN OF gt_zmmr00_example occurs 0, 877 znum like zmmr00_example-znum, 878 lgort like zmmr00_example-lgort, 879 * werks like zmmr00_example-werks, 880 datum like zmmr00_example-datum, 881 lifab like zmmr00_example-lifab, 882 shkzg like zmmr00_example-shkzg, 883 salk3 like zmmr00_example-salk3, 884 text like zmmr00_example-text, 885 END OF gt_zmmr00_example. 886 887 DATA:BEGIN OF gt_zmmr00_aims occurs 0, 888 znum LIKE zmmr00_aims-znum, 889 datum LIKE zmmr00_aims-datum, 890 lifab LIKE zmmr00_aims-lifab, 891 lfgja LIKE zmmr00_aims-lfgja, 892 shkzg_y LIKE zmmr00_aims-shkzg_y, 893 turnover LIKE zmmr00_aims-turnover, 894 shkzg_m LIKE zmmr00_aims-shkzg_m, 895 zaims LIKE zmmr00_aims-zaims, 896 text LIKE zmmr00_aims-text, 897 END OF gt_zmmr00_aims. 898 899 " 前期汇率 900 DATA:BEGIN OF gt_zmmr00_turr occurs 0, 901 znum LIKE zmmr00_turr-znum, 902 datum LIKE zmmr00_turr-datum, 903 lifab LIKE zmmr00_turr-lifab, 904 cny_twd LIKE zmmr00_turr-cny_twd, 905 usd_twd LIKE zmmr00_turr-usd_twd, 906 cny_twd1 LIKE zmmr00_turr-cny_twd1, 907 usd_twd1 LIKE zmmr00_turr-usd_twd1, 908 text LIKE zmmr00_aims-text, 909 END OF gt_zmmr00_turr. 910 911 *数据往期数据 table end 912 913 914 *写入table 915 DATA: write_zmmr01_stok LIKE zmmr01_stok occurs 0 WITH HEADER LINE," 100前期值 916 write_zmmr02_stok LIKE zmmr02_stok occurs 0 WITH HEADER LINE," 200前期值 917 write_zmmr03_stok LIKE zmmr03_stok occurs 0 WITH HEADER LINE," 300前期值 918 write_zmmr00_turr LIKE zmmr00_turr occurs 0 WITH HEADER LINE,"前期汇率 919 * write_zmmr00_aims LIKE zmmr00_aims occurs 0 WITH HEADER LINE, " 公司年度目标 920 write_zmmr00_example LIKE zmmr00_example occurs 0 WITH HEADER LINE. " 库存范例 921 922 DATA:id_1 TYPE i VALUE '0',"1000 ID 923 id_2 TYPE i VALUE '0',"2000 ID 924 id_0_2 TYPE i VALUE '0', "年度标本 ID 925 id_3 TYPE i VALUE '0', " 300 ID 926 id_00_1 TYPE i VALUE '0', " 年度目标 ID 927 id_00_2 TYPE i VALUE '0'," 范例 ID 928 max_01_date LIKE sy-datum, " maxdate 929 max_02_date LIKE sy-datum," maxdate 930 max_02y_date LIKE zmmr02_year-lfgja," maxyear 931 max_03_date LIKE sy-datum," maxdate 932 max_00a_date LIKE zmmr00_aims-lfgja," maxyear 933 max_00e_date LIKE sy-datum." maxdate 934 935 "获取周期数 936 DATA: BEGIN OF gt_num occurs 0 , 937 lifab LIKE sy-datum, 938 l_num TYPE i, 939 END OF gt_num. 940 941 DATA: gt_num1 LIKE gt_num occurs 0 WITH HEADER LINE, 942 gt_num2 LIKE gt_num occurs 0 WITH HEADER LINE, 943 gt_num3 LIKE gt_num occurs 0 WITH HEADER LINE, 944 gt_num4 LIKE gt_num occurs 0 WITH HEADER LINE." 汇率 945 DATA: l_sdate TYPE sy-datum, " max tate 946 l_endate TYPE sy-datum, " min tate 947 lv_date type i. " 接收变量 948 949 DATA:lv_num type i , 950 lv_num1 type i, 951 lv_num2 type i, 952 lv_num3 type i. 953 "2000 954 DATA:g_sum_new like acdoca_m_extract-hsl VALUE '0', " 按库别新值汇总 955 g_sum_sum TYPE p DECIMALS 2 VALUE '0'," sum 按库别新值汇总 956 g_sum3 like acdoca_m_extract-hsl VALUE '0'," 呆滞 957 g_sum04_06 like acdoca_m_extract-hsl VALUE '0', 958 g_sum07_12 like acdoca_m_extract-hsl VALUE '0', 959 g_sum12_24 like acdoca_m_extract-hsl VALUE '0', 960 g_sum24 like acdoca_m_extract-hsl VALUE '0', 961 g_sum like acdoca_m_extract-hsl VALUE '0'. 962 963 "1000 3000 964 DATA: g1_sum_1 like acdoca_m_extract-hsl VALUE '0', " 新值 sum 1000 965 g1_sum_2 like acdoca_m_extract-hsl VALUE '0', " HB-台湾 966 g2_sum_1 like acdoca_m_extract-hsl VALUE '0', " 小计 967 g2_sum_2 like acdoca_m_extract-hsl VALUE '0', " 总计 968 g3_sum_1 like acdoca_m_extract-hsl VALUE '0'," 新值 sum 3000 969 g3_sum_2 like acdoca_m_extract-hsl VALUE '0'. " 不含淘汰产品 及 mbs 库存 970 971 DATA: L_FIYEAR TYPE SY-DATUM. 972 973 DATA:BEGIN OF gt_datum occurs 0,"明细周期 974 text1(10),"选项 975 text2(10),"选项 976 opedatem LIKE sy-datum," 开始日期 977 enddatem LIKE sy-datum," 结束日期 978 END OF gt_datum. 979 980 DATA:gt_datum1 LIKE gt_datum occurs 0 WITH HEADER LINE. "选择屏周期 981 982 *---> 明细数据选择屏工厂条件 983 DATA:BEGIN OF gt_bukrs occurs 0, 984 text1(10),"选项 985 text2(10),"选项 986 opewerks like matdoc-bukrs," 开始日期 987 endwerks like matdoc-bukrs," 结束日期 988 END OF gt_bukrs. 989 990 991 ************************************************************************ 992 * Includes Module 993 ************************************************************************ 994 995 ************************************************************************ 996 * Selection Screen 997 ************************************************************************ 998 *--->选择屏 999 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-B01. 1000 PARAMETERS: P_Start LIKE ACDOCA_M_EXTRACT-FISCYEARPER . "起始期间. 1001 PARAMETERS: P_FIYEAR LIKE ACDOCA_M_EXTRACT-FISCYEARPER OBLIGATORY . " 年度期别 1002 SELECT-OPTIONS: s_matnr FOR marc-matnr. 1003 PARAMETERS: P_FPATH1 TYPE STRING DEFAULT 'Z:\' . "OBLIGATORY. 1004 1005 SELECT-OPTIONS:bklas for ebew-bklas no-display, " bewertungsklasse 1006 matnr for ebew-matnr matchcode object mat1 no-display, 1007 skont for ska1-saknr no-display, " bestandskonto 1008 bwtar for ebew-bwtar memory id bwt no-display. " bewertungsart 1009 PARAMETERS:nullb like am07m-senul no-display, " materialien mit nullbestand 1010 keinzel like am07m-kgebe no-display, " bewertungskreisebene 1011 pruef like am07m-erwpr no-display, " erweiterte prüfung bei 1012 matlines no-display ."as checkbox . 1013 PARAMETERS: summen like am07m-xsums NO-DISPLAY, " nur Summen ausgegeben 1014 NEGATIV LIKE AM07M-SENEG NO-DISPLAY. " Negative Bestände anzeigen 1015 1016 1017 SELECTION-SCREEN END OF BLOCK B1. 1018 1019 SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-B02. 1020 SELECT-OPTIONS: fiyear for acdoca_m_extract-fiscyearper , " 年度期别 1021 p_werks for matdoc-bukrs no-display. 1022 SELECTION-SCREEN END OF BLOCK B2. 1023 1024 RANGES: BERMON FOR MARD-LFMON , 1025 IBWKEY FOR MBEW-BWKEY , 1026 IBKLAS FOR MBEW-BKLAS. 1027 1028 SELECTION-SCREEN BEGIN OF LINE. 1029 PARAMETERS: vmsaldo LIKE AM07M-XSALD NO-DISPLAY ."RADIOBUTTON GROUP LIST. 1030 SELECTION-SCREEN END OF LINE. 1031 1032 SELECTION-SCREEN BEGIN OF LINE. 1033 PARAMETERS: AKSALDO LIKE AM07M-XSALD NO-DISPLAY DEFAULT 'X'."RADIOBUTTON GROUP LIST DEFAULT 'X' . 1034 SELECTION-SCREEN END OF LINE. 1035 1036 SELECTION-SCREEN BEGIN OF LINE. 1037 PARAMETERS: VJSALDO LIKE AM07M-XSALD NO-DISPLAY ."RADIOBUTTON GROUP LIST. 1038 SELECTION-SCREEN END OF LINE. 1039 1040 SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-b03. 1041 PARAMETER: p_title TYPE so_obj_des DEFAULT 'XX报表'. 1042 SELECT-OPTIONS: s_addr FOR g_mail_address NO INTERVALS DEFAULT'taoyuexiang5@163.com'. 1043 PARAMETERS:s_send AS CHECKBOX DEFAULT 'X'. " mail 1044 SELECTION-SCREEN END OF BLOCK b3. 1045 1046 ************************************************************************ 1047 * Initialization 1048 ************************************************************************ 1049 INITIALIZATION. 1050 1051 " 获取系统年月方法二 1052 *-->本月最后一天 1053 CALL FUNCTION 'BKK_GET_MONTH_LASTDAY' 1054 EXPORTING 1055 I_DATE = SY-DATUM 1056 IMPORTING 1057 E_DATE = LASTDAY. 1058 1059 1060 *----获取上月最后一天 1061 CALL FUNCTION 'FIMA_DATE_CREATE' 1062 EXPORTING 1063 i_date = LASTDAY "'20140101' "输入日期 1064 i_flg_end_of_month = ' ' 1065 i_months = -1 "表示当前月的前一个月 1066 i_set_last_day_of_month = 'X' "返回的日期为当前月份的最后一天 1067 IMPORTING 1068 e_date = date3 . "返回的日期为当前月份的最后一天 1069 1070 *----获取上5个月最后一天 1071 CALL FUNCTION 'FIMA_DATE_CREATE' 1072 EXPORTING 1073 i_date = LASTDAY "'20140101' "输入日期 1074 i_flg_end_of_month = ' ' 1075 i_months = -5 "表示当前月的前一个月 1076 i_set_last_day_of_month = 'X' "返回的日期为当前月份的最后一天 1077 IMPORTING 1078 e_date = date3_1 . "返回的日期为当前月份的最后一天 1079 1080 1081 P_START = date3_1(4) && '0' && date3_1+4(2). 1082 P_FIYEAR = date3+0(4) && '0' && date3+4(2). 1083 1084 * p_endate = date3_1. 1085 PERFORM FRM_SET_NEDIT." 设置选择屏元素不能编辑 1086 ************************************************************************ 1087 * At Selection Screen 1088 ************************************************************************ 1089 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FPATH1. " 获取档案路径 1090 PERFORM GET_FPATH. 1091 1092 1093 ************************************************************************ 1094 * At Selection Screen Output 1095 ************************************************************************ 1096 AT SELECTION-SCREEN OUTPUT. 1097 1098 ************************************************************************ 1099 * Report Format 1100 ************************************************************************ 1101 TOP-OF-PAGE. 1102 1103 END-OF-PAGE. 1104 ************************************************************************ 1105 * Main Process 1106 ************************************************************************ 1107 START-OF-SELECTION. 1108 PERFORM set_fiyear. " 获获取日期 1109 PERFORM gt_detail." 往期明细数据. 1110 PERFORM get_col. 1111 PERFORM alv_show. 1112 END-OF-SELECTION. 1113 1114 *----> 自定义按钮 1115 FORM ALV_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. 1116 SET PF-STATUS 'STATUS_PRINT' . 1117 ENDFORM. 1118 1119 *--->选择屏上部分的值不能修改 1120 FORM FRM_SET_NEDIT. 1121 LOOP AT SCREEN . 1122 IF "SCREEN-NAME EQ 'P_FIYEAR' OR 1123 SCREEN-NAME EQ 'P_ENDATE'. "and sy-uname co 'IT'. 1124 SCREEN-INPUT = '0' . 1125 MODIFY SCREEN . 1126 ENDIF . 1127 IF screen-name EQ 'BKLAS' OR 1128 screen-name EQ 'MATLINES' OR 1129 screen-name EQ 'IBWKEY' OR 1130 screen-name EQ 'IBKLAS' OR 1131 screen-name EQ 'VMSALDO' OR 1132 screen-name EQ 'AKSALDO' OR 1133 screen-name EQ 'VJSALDO'." OR 1134 screen-invisible = '1'. 1135 MODIFY SCREEN. 1136 ENDIF. 1137 ENDLOOP . 1138 ENDFORM . 1139 1140 1141 1142 *&---------------------------------------------------------------------* 1143 *& Form GET_FPATH 1144 *&---------------------------------------------------------------------* 1145 *& text 1146 *&---------------------------------------------------------------------* 1147 *& --> p1 text 1148 *& <-- p2 text 1149 *&---------------------------------------------------------------------* 1150 FORM GET_FPATH . 1151 * -選擇檔案路徑- 1152 L_FINIT = 'E:\'. " default 1153 1154 CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE 1155 EXPORTING 1156 WINDOW_TITLE = 'Find Output Path' 1157 INITIAL_FOLDER = L_FINIT 1158 CHANGING 1159 SELECTED_FOLDER = L_FPATH 1160 EXCEPTIONS 1161 CNTL_ERROR = 1 1162 ERROR_NO_GUI = 2 1163 NOT_SUPPORTED_BY_GUI = 3 1164 OTHERS = 4. 1165 1166 * -最後一個字元不為'\',補上'\'- 1167 IF L_FPATH IS NOT INITIAL. 1168 L_LEN = STRLEN( L_FPATH ) - 1. 1169 1170 IF L_FPATH+L_LEN(1) NE '\'. 1171 P_FPATH1 = L_FPATH && |\\|. 1172 ELSE. 1173 P_FPATH1 = L_FPATH. 1174 ENDIF. 1175 ENDIF. 1176 1177 ENDFORM. 1178 1179 *&---------------------------------------------------------------------* 1180 *& Form ALV_SHOW 1181 *&---------------------------------------------------------------------* 1182 *& text 1183 *&---------------------------------------------------------------------* 1184 *& --> p1 text 1185 *& <-- p2 text 1186 *&---------------------------------------------------------------------* 1187 FORM ALV_SHOW . 1188 1189 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 1190 EXPORTING 1191 I_CALLBACK_PROGRAM = SY-REPID 1192 IS_LAYOUT = GS_LAYOUT2 1193 * IT_FIELDCAT = GT_FIELDCAT2[] 1194 IT_FIELDCAT = GT_FIELDCATS[] 1195 I_CALLBACK_PF_STATUS_SET = 'ALV_PF_STATUS' "触发事件调用子程序 1196 I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND' 1197 I_SAVE = 'A' 1198 TABLES 1199 T_OUTTAB = GT_MB52_2[]"<gt_table2>"GT_MB52_2 1200 EXCEPTIONS 1201 PROGRAM_ERROR = 1 1202 OTHERS = 2. 1203 1204 ENDFORM. 1205 1206 1207 1208 *&---------------------------------------------------------------------* 1209 *& Form BSEG 1210 *&---------------------------------------------------------------------* 1211 *& text 获取线上在制金额 1212 *&---------------------------------------------------------------------* 1213 *& --> p1 text 1214 *& <-- p2 text 1215 *&---------------------------------------------------------------------* 1216 FORM get_BSEG USING in_datum. 1217 DATA: gt_dmbtr_h like bseg-dmbtr, 1218 gt_dmbtr_s like bseg-dmbtr. 1219 DATA: en_datum LIKE sy-datum. 1220 1221 CALL FUNCTION 'FIMA_DATE_CREATE' 1222 EXPORTING 1223 i_date = in_datum "'20140101' "输入日期 1224 i_flg_end_of_month = ' ' 1225 i_months = 0 "表示当前月的前一个月 1226 i_set_last_day_of_month = 'X' "返回的日期为当前月份的最后一天 1227 IMPORTING 1228 e_date = en_datum . "返回的日期为当前月份的最后一天 1229 1230 1231 SELECT SUM( DMBTR ) INTO GT_DMBTR_H 1232 FROM BSEG 1233 WHERE BUKRS = p_werks2 1234 AND HKONT IN ( '1314000000','1314000001' ) 1235 AND SHKZG EQ 'H' 1236 AND H_BUDAT <= en_datum. 1237 1238 SELECT SUM( DMBTR ) INTO GT_DMBTR_S 1239 FROM BSEG 1240 WHERE BUKRS = p_werks2 1241 AND HKONT IN ( '1314000000','1314000001' ) 1242 AND SHKZG EQ 'S' 1243 AND H_BUDAT <= en_datum. 1244 *-->线上在制金额 1245 gt_data-gt_dmbtr = gt_dmbtr_s - gt_dmbtr_h. 1246 APPEND gt_data . 1247 ENDFORM. 1248 1249 1250 *&---------------------------------------------------------------------* 1251 *& Form GET_COL 1252 *&---------------------------------------------------------------------* 1253 *& text 1254 *&---------------------------------------------------------------------* 1255 *& --> p1 text 1256 *& <-- p2 text 1257 *&---------------------------------------------------------------------* 1258 FORM GET_COL. 1259 DEFINE FILEDCAT. 1260 GT_FIELDCATS-FIELDNAME = &1. "对应内表的字段名 1261 GT_FIELDCATS-SELTEXT_L = &2. "输出列文本 1262 APPEND GT_FIELDCATS. 1263 END-OF-DEFINITION. 1264 FILEDCAT 'WERKS' '工厂'. 1265 FILEDCAT 'MTART' '物料类型'. 1266 FILEDCAT 'MATKL' '物料群组'. 1267 FILEDCAT 'MATNR' '料号'. 1268 FILEDCAT 'MAKTX' '物料说明'. 1269 FILEDCAT 'LGORT' '存储地点'. 1270 FILEDCAT 'LGORT2' '存储地点 II'. 1271 FILEDCAT 'LGOBE' '储存位置说明'. 1272 FILEDCAT 'LGPBE' '储格'. 1273 FILEDCAT 'SALK3' '值未限制'. 1274 FILEDCAT 'SOBKZ' '特别库存'. 1275 FILEDCAT 'EINME' '限制使用库存'. 1276 FILEDCAT 'SALK3_1' '值已限制'. 1277 FILEDCAT 'SPEME' '已冻结'. 1278 FILEDCAT 'SALK3_2' '冻结库存值'. 1279 FILEDCAT 'RETME' '退货'. 1280 FILEDCAT 'SALK3_3' '冻结退货值'. 1281 FILEDCAT 'SALK3_4' '评估GR冻结库存'. 1282 FILEDCAT 'BWESB' '已评估的收货冻结库存'. 1283 FILEDCAT 'SSNUM' '特殊库存号码'. 1284 FILEDCAT 'MEINS' '单位'. 1285 FILEDCAT 'WAERS' '币别'. 1286 FILEDCAT 'LABST' '未限制'. 1287 FILEDCAT 'LBKUM_E' '销售库存'. 1288 FILEDCAT 'LBKUM_M' '物料评价库存'. 1289 FILEDCAT 'INSME' '品质检验中'. 1290 FILEDCAT 'DISPO' 'MRP控制员'. 1291 FILEDCAT 'LABST_INSME' '未限制 & 品质检验中'. 1292 FILEDCAT 'PRICE' '单价'. 1293 FILEDCAT 'HSL' '金额'. 1294 FILEDCAT 'TEXT' '呆滞期'. 1295 ENDFORM. 1296 1297 1298 1299 *&---------------------------------------------------------------------* 1300 *& Form SET_100 1301 *&---------------------------------------------------------------------* 1302 *& text 1303 *&---------------------------------------------------------------------* 1304 *& --> p1 text 1305 *& <-- p2 text 1306 *&---------------------------------------------------------------------* 1307 FORM SET_100 USING in_datum . 1308 1309 DATA: l_lbkum2 LIKE mbewh-lbkum, 1310 l_salk32 LIKE mbewh-salk3, 1311 l_fiscye LIKE acdoca_m_extract-fiscyearper. 1312 1313 APPEND LINES OF g_ebew1[] to gt_mb52_1[]. 1314 APPEND LINES OF g_mslb1[] to gt_mb52_1[]. 1315 APPEND LINES OF g_msku1[] to gt_mb52_1[]. 1316 1317 LOOP AT GT_MB52_1. 1318 1319 CLEAR :l_lbkum,l_salk3,l_peinh. 1320 CLEAR:l1_kunnr,l1_lifnr,l1_vbeln ,l1_posnr. 1321 l1_index1 = sy-tabix. 1322 1323 *----->存储地点说明 1324 SELECT SINGLE lgobe FROM t001l INTO gt_mb52_1-lgobe 1325 WHERE lgort EQ gt_mb52_1-lgort . 1326 1327 *----->储格 、DF 存储位置等级 1328 SELECT SINGLE lgpbe from mard INTO 1329 (gt_mb52_1-lgpbe) 1330 WHERE matnr EQ gt_mb52_1-matnr AND 1331 WERKS EQ P_WERKS1. 1332 1333 *-----> MRP控制员 1334 SELECT SINGLE dispo FROM marc INTO gt_mb52_1-dispo 1335 WHERE matnr EQ gt_mb52_1-matnr AND 1336 WERKS EQ P_WERKS1. 1337 1338 *---->物料说明 1339 SELECT single maktx FROM makt 1340 INTO GT_MB52_1-maktx 1341 WHERE makt~matnr eq GT_MB52_1-matnr 1342 AND spras = sy-langu . 1343 1344 *--->币别 1345 SELECT SINGLE WAERS INTO GT_MB52_1-WAERS 1346 FROM MSEG 1347 WHERE MATNR EQ GT_MB52_1-MATNR AND 1348 WERKS EQ P_WERKS1. 1349 1350 CLEAR:factor. 1351 CLEAR: l_lbkum2,l_salk32. 1352 1353 CONCATENATE in_datum(4) '0' in_datum+4(2) INTO l_fiscye. 1354 SELECT SUM( vmsl ) SUM( hsl ) INTO ( l_lbkum2,l_salk32 ) 1355 FROM acdoca_m_extract 1356 WHERE fiscyearper LE l_fiscye 1357 AND bwkey EQ p_werks1 1358 AND matnr EQ gt_mb52_1-matnr. 1359 1360 IF l_lbkum2 EQ '0'. 1361 factor = '0'. 1362 ELSE. 1363 factor = l_salk32 / l_lbkum2 * 100. 1364 ENDIF. 1365 gt_mb52_1-labst_insme = gt_mb52_1-labst + gt_mb52_1-insme. 1366 1367 gt_mb52_1-price = factor . 1368 gt_mb52_1-salk3 = gt_mb52_1-labst_insme * factor. 1369 1370 MODIFY GT_MB52_1 INDEX L1_INDEX1. 1371 ENDLOOP. 1372 ENDFORM. 1373 1374 *&---------------------------------------------------------------------* 1375 *& Form SET_200 1376 *&---------------------------------------------------------------------* 1377 *& text 1378 *&---------------------------------------------------------------------* 1379 *& --> p1 text 1380 *& <-- p2 text 1381 *&---------------------------------------------------------------------* 1382 FORM SET_200 USING in_datum . 1383 DATA: l_lbkum1 LIKE mbewh-lbkum, 1384 l_lbkum2 LIKE mbewh-lbkum, 1385 l_matnr1 LIKE mbewh-matnr, 1386 l_matnr2 LIKE mbewh-matnr, 1387 l_salk31 LIKE mbewh-salk3, 1388 l_salk32 LIKE mbewh-salk3, 1389 l_vprsv LIKE mbewh-vprsv, 1390 l_verpr LIKE mbewh-verpr, 1391 l_stprs LIKE mbewh-stprs, 1392 l_peinh LIKE mbewh-peinh, 1393 id_price TYPE n. 1394 1395 DATA: l_fiscye LIKE acdoca_m_extract-fiscyearper. 1396 1397 1398 1399 APPEND LINES OF g_ebew2[] to gt_mb52_2[]. 1400 APPEND LINES OF g_mslb2[] to gt_mb52_2[]. 1401 APPEND LINES OF g_msku2[] to gt_mb52_2[]. 1402 1403 LOOP AT GT_MB52_2. 1404 CLEAR:l2_kunnr,l2_lifnr,l2_vbeln ,l2_posnr. 1405 L2_INDEX1 = SY-TABIX. 1406 1407 * ----->存储地点说明 1408 SELECT SINGLE lgobe FROM t001l INTO gt_mb52_2-lgobe 1409 WHERE lgort EQ gt_mb52_2-lgort . 1410 1411 * ----->储格 、DF 存储位置等级 1412 SELECT SINGLE lgpbe from mard INTO 1413 (gt_mb52_2-lgpbe) 1414 WHERE matnr EQ gt_mb52_2-matnr AND 1415 WERKS EQ P_WERKS2. 1416 1417 *-----> MRP控制员 1418 SELECT SINGLE dispo FROM marc INTO gt_mb52_2-dispo 1419 WHERE matnr EQ gt_mb52_2-matnr AND 1420 WERKS EQ P_WERKS2. 1421 1422 *---->物料说明 1423 SELECT single maktx FROM makt 1424 INTO GT_MB52_2-maktx 1425 WHERE makt~matnr eq GT_MB52_2-matnr and 1426 spras = sy-langu . 1427 * --->币别 1428 SELECT SINGLE WAERS INTO GT_MB52_2-WAERS 1429 FROM MSEG 1430 WHERE MATNR EQ GT_MB52_2-MATNR AND 1431 WERKS EQ P_WERKS2. 1432 1433 *--->储存地 2 1434 * 1.特别库存 O W 1435 * 2. 消耗品昌 217G-B (三角采购在途仓) 1436 * 3. 原材料 217G-B (三角采购在途仓) 1437 IF GT_MB52_2-SOBKZ EQ 'W'. 1438 1439 GT_MB52_2-LGORT2 = '210G'. 1440 gt_mb52_2-ssnum = gt_mb52_2-kunnr. 1441 ELSEIF GT_MB52_2-SOBKZ EQ 'O'. 1442 gt_mb52_2-lgort2 = 'WIP-OUT'. 1443 gt_mb52_2-ssnum = gt_mb52_2-lifnr. 1444 ENDIF. 1445 1446 IF ( gt_mb52_2-sobkz(1) NE 'W' 1447 AND NOT ( gt_mb52_2-sobkz(1) EQ 'O' ) ) 1448 AND ( gt_mb52_2-lgort CS '2W' 1449 OR gt_mb52_2-lgort EQ '217G' ). 1450 1451 IF gt_mb52_2-matnr+0(1) EQ 'Z'. "料号开头是 Z 1452 gt_mb52_2-lgort2 = '217G-B'. 1453 ELSE. 1454 gt_mb52_2-lgort2 ='217G-A'. 1455 ENDIF. 1456 ELSEIF gt_mb52_2-sobkz(1) NE 'W' 1457 AND NOT ( gt_mb52_2-sobkz(1) EQ 'O'). 1458 gt_mb52_2-lgort2 = gt_mb52_2-lgort. 1459 ENDIF. 1460 1461 1462 * 求平均值 1463 CLEAR:factor. 1464 CLEAR: l_lbkum2,l_salk32,l_matnr2. 1465 1466 CONCATENATE in_datum(4) '0' in_datum+4(2) INTO l_fiscye. 1467 SELECT SUM( vmsl ) SUM( hsl ) INTO ( l_lbkum2,l_salk32 ) 1468 FROM acdoca_m_extract 1469 WHERE fiscyearper LE l_fiscye 1470 AND bwkey EQ p_werks2 1471 AND matnr EQ gt_mb52_2-matnr. 1472 1473 IF l_lbkum2 EQ '0' . 1474 factor = '0'. 1475 ELSE. 1476 factor = l_salk32 / l_lbkum2. 1477 ENDIF. 1478 1479 gt_mb52_2-price = factor . 1480 1481 * --->未限制 & 品质检验中 1482 GT_MB52_2-LABST_INSME = GT_MB52_2-LABST + GT_MB52_2-INSME . 1483 1484 * --->金额 1485 gt_mb52_2-hsl = gt_mb52_2-labst_insme * factor. 1486 1487 CLEAR: gt_t001l. 1488 gt_t001l-lgort2 = gt_mb52_2-lgort2. 1489 APPEND gt_t001l. 1490 1491 MODIFY GT_MB52_2 INDEX L2_INDEX1. 1492 ENDLOOP. 1493 ENDFORM. 1494 1495 *&---------------------------------------------------------------------* 1496 *& Form SET_300 1497 *&---------------------------------------------------------------------* 1498 *& text 1499 *&---------------------------------------------------------------------* 1500 *& --> p1 text 1501 *& <-- p2 text 1502 *&---------------------------------------------------------------------* 1503 FORM SET_300 USING in_datum. 1504 DATA: l_fiscye LIKE acdoca_m_extract-fiscyearper, 1505 l_lbkum2 LIKE mbewh-lbkum, 1506 l_salk32 LIKE mbewh-salk3. 1507 1508 DATA:l_MBS LIKE mara-matnr. 1509 1510 APPEND LINES OF g_ebew3[] to gt_mb52_3[]. 1511 APPEND LINES OF g_mslb3[] to gt_mb52_3[]. 1512 APPEND LINES OF g_msku3[] to gt_mb52_3[]. 1513 1514 LOOP AT GT_MB52_3. 1515 CLEAR:l3_kunnr,l3_lifnr,l3_vbeln ,l3_posnr. 1516 l3_index1 = sy-tabix. 1517 1518 *---->物料说明 1519 SELECT single maktx FROM makt 1520 INTO GT_MB52_3-maktx 1521 WHERE makt~matnr eq GT_MB52_3-matnr and 1522 spras = sy-langu . 1523 1524 1525 *----->存储地点说明 1526 SELECT SINGLE lgobe FROM t001l INTO gt_mb52_3-lgobe 1527 WHERE lgort EQ gt_mb52_3-lgort . 1528 1529 *-----> 储格 1530 SELECT SINGLE lgpbe FROM mard INTO 1531 ( gt_mb52_3-lgpbe ) 1532 WHERE matnr EQ gt_mb52_3-matnr 1533 and WERKS EQ P_WERKS3. 1534 1535 *-----> MRP控制员 1536 SELECT SINGLE dispo FROM marc INTO gt_mb52_3-dispo 1537 WHERE matnr EQ gt_mb52_3-matnr 1538 AND werks EQ p_werks2. 1539 1540 *--->MBS 库存 1541 CLEAR:l_MBS. 1542 SELECT SINGLE matnr FROM zmmr03_mbs 1543 INTO l_MBS 1544 WHERE matnr EQ gt_mb52_3-matnr. 1545 IF l_mbs IS NOT INITIAL. 1546 gt_mb52_3-mb_zwhcode = 'MBS库存'. 1547 ENDIF. 1548 1549 1550 *--->WH CODE & MBS 库存 1551 IF gt_mb52_3-mb_zwhcode EQ 'MBS库存'. 1552 gt_mb52_3-zwhcode = 'MBS库存'. 1553 ELSE. 1554 gt_mb52_3-zwhcode = gt_mb52_3-s_zwhcode. 1555 ENDIF. 1556 1557 *--->币别 1558 SELECT SINGLE WAERS INTO GT_MB52_3-WAERS 1559 FROM mseg 1560 WHERE matnr EQ gt_mb52_3-matnr 1561 AND werks EQ p_werks3. 1562 *--->值未限制 1563 1564 CLEAR: factor,l_salk32. 1565 1566 CONCATENATE in_datum(4) '0' in_datum+4(2) INTO l_fiscye. 1567 SELECT SUM( vmsl ) SUM( hsl ) INTO ( l_lbkum2,l_salk32 ) 1568 FROM acdoca_m_extract 1569 WHERE fiscyearper LE l_fiscye 1570 AND bwkey EQ p_werks3 1571 AND matnr EQ gt_mb52_3-matnr. 1572 1573 IF l_lbkum2 EQ '0' . 1574 factor = '0'. 1575 ELSE. 1576 factor = l_salk32 / l_lbkum2. 1577 ENDIF. 1578 1579 gt_mb52_3-price = factor . 1580 gt_mb52_3-labst_insme = gt_mb52_3-labst + gt_mb52_3-insme. 1581 gt_mb52_3-salk3 = gt_mb52_3-labst_insme * factor. 1582 1583 MODIFY GT_MB52_3 INDEX L3_INDEX1. 1584 ENDLOOP. 1585 ENDFORM. 1586 1587 1588 *&---------------------------------------------------------------------* 1589 *& Form SET_PERIOD 1590 *&---------------------------------------------------------------------* 1591 *& text 动态获取周期 1592 *&---------------------------------------------------------------------* 1593 *& --> p1 text 1594 *& <-- p2 text 1595 *&---------------------------------------------------------------------* 1596 FORM set_period . 1597 DATA: l_tdate LIKE sy-datum, 1598 l_tatum LIKE sy-datum, 1599 l_datum LIKE sy-datum, 1600 l_week LIKE scal-week, 1601 l_seqno LIKE gt_period-seqno, 1602 l_berid LIKE mdlg-berid, 1603 l_months TYPE i VALUE 0. 1604 1605 CLEAR:gt_period,gt_period[]. 1606 *describe table gt_num2 lines lv_num2." 获取内表数据有多少条数 1607 1608 LOOP AT gt_num1. 1609 l_endate = gt_num1-lifab. 1610 exit. 1611 ENDLOOP. 1612 SORT gt_num1 by lifab ASCENDING. 1613 1614 LOOP AT gt_num1. 1615 l_sdate = gt_num1-lifab(6) && '01'. 1616 exit. 1617 ENDLOOP. 1618 PERFORM set_date 1619 USING l_sdate l_endate 1620 CHANGING lv_date." 计算两端时间相差 个月 1621 lv_num1 = lv_date . 1622 1623 LOOP AT gt_num2. 1624 l_endate = gt_num2-lifab. 1625 exit. 1626 ENDLOOP. 1627 SORT gt_num2 by lifab ASCENDING. 1628 1629 LOOP AT gt_num2. 1630 l_sdate = gt_num2-lifab(6) && '01'. 1631 exit. 1632 ENDLOOP. 1633 PERFORM set_date 1634 USING l_sdate l_endate 1635 CHANGING lv_date." 计算两端时间相差 个月 1636 lv_num2 = lv_date . 1637 1638 LOOP AT gt_num3. 1639 l_endate = gt_num3-lifab. 1640 exit. 1641 ENDLOOP. 1642 SORT gt_num3 by lifab ASCENDING. 1643 LOOP AT gt_num3. 1644 l_sdate = gt_num3-lifab(6) && '01'. 1645 exit. 1646 ENDLOOP. 1647 PERFORM set_date 1648 USING l_sdate l_endate 1649 CHANGING lv_date." 计算两端时间相差 个月 1650 lv_num3 = lv_date . 1651 1652 LOOP AT gt_num. 1653 l_endate = gt_num-lifab. 1654 exit. 1655 ENDLOOP. 1656 SORT gt_num by lifab ASCENDING. 1657 LOOP AT gt_num. 1658 l_sdate = gt_num-lifab(6) && '01'. 1659 exit. 1660 ENDLOOP. 1661 PERFORM set_date 1662 USING l_sdate l_endate 1663 CHANGING lv_date." 计算两端时间相差 个月 1664 lv_num = lv_date . 1665 1666 * p_sdate = p_sdate+0(6) && '01'. 1667 * PERFORM set_date." 计算两端时间相差 个月 1668 "库存范例周期 1669 IF l_existed NE '1'. 1670 lv_num = lv_num + 1. 1671 l_tatum = date3. 1672 ELSE. 1673 l_tatum = date4. 1674 ENDIF. 1675 DO lv_num TIMES. 1676 add 1 TO l_seqno. 1677 PERFORM get_first_few_months 1678 USING l_tatum l_months 1679 CHANGING l_tdate. " 获取前几个月的日期 1680 l_sdate = l_tdate(6) && '01'. " 第一天 1681 1682 PERFORM get_lastdate_of_month 1683 USING l_sdate " 日期最后一天 1684 CHANGING l_tdate. 1685 1686 MOVE:l_tdate TO gt_period-datum, 1687 l_seqno TO gt_period-seqno, 1688 l_sdate TO gt_period-sdate, 1689 l_tdate TO gt_period-tdate. 1690 1691 CONCATENATE l_tdate(4) '/' l_tdate+4(2) INTO gt_period-ptext. 1692 CONCATENATE 'M' gt_period-ptext 1693 INTO gt_period-ptext SEPARATED BY space. 1694 APPEND gt_period. CLEAR: gt_period. 1695 l_months = l_months + 1. 1696 ENDDO. 1697 1698 " 100 动态日期 1699 CLEAR:l_seqno,l_tdate,l_sdate,l_tdate,l_months. 1700 IF l_existed1 NE '1'. 1701 lv_num1 = lv_num1 + 1. 1702 l_tatum = date3. 1703 ELSE. 1704 l_tatum = date4. 1705 ENDIF. 1706 1707 DO lv_num1 TIMES. 1708 add 1 TO l_seqno. 1709 PERFORM get_first_few_months 1710 USING l_tatum l_months 1711 CHANGING l_tdate. " 获取前几个月的日期 1712 1713 l_sdate = l_tdate(6) && '01'. " 第一天 1714 1715 PERFORM get_lastdate_of_month 1716 USING l_sdate " 日期最后一天 1717 CHANGING l_tdate. 1718 MOVE:l_tdate TO gt_period1-datum, 1719 l_seqno TO gt_period1-seqno, 1720 l_sdate TO gt_period1-sdate, 1721 l_tdate TO gt_period1-tdate. 1722 CONCATENATE l_tdate(4) '/' l_tdate+4(2) INTO gt_period1-ptext. 1723 CONCATENATE 'M' gt_period1-ptext 1724 INTO gt_period1-ptext SEPARATED BY space. 1725 APPEND gt_period1. CLEAR: gt_period1. 1726 l_months = l_months + 1. 1727 ENDDO. 1728 1729 1730 " 200 动态日期 1731 CLEAR:l_seqno,l_tdate,l_sdate,l_tdate,l_months. 1732 IF l_existed2 NE '1'. 1733 lv_num2 = lv_num2 + 1. 1734 l_tatum = date3. 1735 ELSE. 1736 l_tatum = date4. 1737 ENDIF. 1738 1739 DO lv_num2 TIMES. 1740 add 1 TO l_seqno. 1741 PERFORM get_first_few_months 1742 USING l_tatum l_months 1743 CHANGING l_tdate. " 获取前几个月的日期 1744 1745 l_sdate = l_tdate(6) && '01'. " 第一天 1746 1747 PERFORM get_lastdate_of_month 1748 USING l_sdate " 日期最后一天 1749 CHANGING l_tdate. 1750 MOVE:l_tdate TO gt_period2-datum, 1751 l_seqno TO gt_period2-seqno, 1752 l_sdate TO gt_period2-sdate, 1753 l_tdate TO gt_period2-tdate. 1754 CONCATENATE l_tdate(4) '/' l_tdate+4(2) INTO gt_period2-ptext. 1755 CONCATENATE 'M' gt_period2-ptext 1756 INTO gt_period2-ptext SEPARATED BY space. 1757 APPEND gt_period2. CLEAR: gt_period2. 1758 l_months = l_months + 1. 1759 ENDDO. 1760 1761 1762 " 300 动态日期 1763 CLEAR:l_seqno,l_tdate,l_sdate,l_tdate,l_months. 1764 IF l_existed2 NE '1'. 1765 lv_num3 = lv_num3 + 1. 1766 l_tatum = date3. 1767 ELSE. 1768 l_tatum = date4. 1769 ENDIF. 1770 1771 DO lv_num3 TIMES. 1772 add 1 TO l_seqno. 1773 PERFORM get_first_few_months 1774 USING l_tatum l_months 1775 CHANGING l_tdate. " 获取前几个月的日期 1776 l_sdate = l_tdate(6) && '01'. " 第一天 1777 1778 PERFORM get_lastdate_of_month 1779 USING l_sdate " 日期最后一天 1780 CHANGING l_tdate. 1781 1782 MOVE:l_tdate TO gt_period3-datum, 1783 l_seqno TO gt_period3-seqno, 1784 l_sdate TO gt_period3-sdate, 1785 l_tdate TO gt_period3-tdate. 1786 CONCATENATE l_tdate(4) '/' l_tdate+4(2) INTO gt_period3-ptext. 1787 CONCATENATE 'M' gt_period3-ptext 1788 INTO gt_period3-ptext SEPARATED BY space. 1789 1790 APPEND gt_period3. CLEAR: gt_period3. 1791 l_months = l_months + 1. 1792 ENDDO. 1793 1794 SORT gt_period by seqno datum. 1795 SORT gt_period1 by seqno datum. 1796 SORT gt_period2 by seqno datum. 1797 SORT gt_period3 by seqno datum. 1798 * ---设置数据类型 1799 CLEAR:gt_dtype,gt_dtype[]. 1800 MOVE:'01' TO gt_dtype-dtype, 1801 '库存金额' TO gt_dtype-dtext. 1802 APPEND gt_dtype.CLEAR:gt_dtype. 1803 1804 MOVE:'02' TO gt_dtype-dtype, 1805 '库存金额' TO gt_dtype-dtext. 1806 APPEND gt_dtype.CLEAR:gt_dtype. 1807 1808 MOVE:'03' TO gt_dtype-dtype, 1809 '库存金额' TO gt_dtype-dtext. 1810 APPEND gt_dtype.CLEAR:gt_dtype. 1811 1812 1813 MOVE:'04' TO gt_dtype-dtype, 1814 '库存金额' TO gt_dtype-dtext. 1815 APPEND gt_dtype.CLEAR:gt_dtype. 1816 1817 MOVE:'05' TO gt_dtype-dtype, 1818 '库存金额' TO gt_dtype-dtext. 1819 APPEND gt_dtype.CLEAR:gt_dtype. 1820 1821 ENDFORM. 1822 1823 1824 *&---------------------------------------------------------------------* 1825 *& Form GET_LASTDATE_OF_MONTH 1826 *&---------------------------------------------------------------------* 1827 *& text 获取月份的最后一天 1828 *&---------------------------------------------------------------------* 1829 *& --> L_SDATE 1830 *& <-- L_TDATE 1831 *&---------------------------------------------------------------------* 1832 FORM get_lastdate_of_month 1833 USING in_sdate ex_tdate. 1834 1835 CALL FUNCTION 'LAST_DAY_OF_MONTHS' 1836 EXPORTING 1837 day_in = in_sdate 1838 IMPORTING 1839 last_day_of_month = ex_tdate 1840 EXCEPTIONS 1841 day_in_no_date = 1 1842 OTHERS = 2. 1843 1844 ENDFORM. 1845 1846 *&---------------------------------------------------------------------* 1847 *& Form set_date 1848 *&---------------------------------------------------------------------* 1849 *& text 两个时间段相差多少个月 1850 *&---------------------------------------------------------------------* 1851 *& --> L_SDATE 1852 *& <-- L_TDATE 1853 *&--------------------------------------------------------------------* 1854 FORM set_date USING min_sdate max_endate ex_tdate. 1855 CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS' 1856 EXPORTING 1857 i_date_from = min_sdate 1858 i_date_to = max_endate 1859 i_flg_separate = ' ' "是否单独计算 若有标识,则返回两日期相差的天数 1860 IMPORTING 1861 * e_days = days "返回天数:638 1862 e_months = ex_tdate. "返回月数:21 1863 * e_years = years. "返回年数:2 1864 ENDFORM. 1865 1866 *&---------------------------------------------------------------------* 1867 *& Form Get_first_few_months 1868 *&---------------------------------------------------------------------* 1869 *& text 获取前几个月的日期 1870 *&---------------------------------------------------------------------* 1871 *& --> L_SDATE 1872 *& <-- L_TDAT 1873 *&---------------------------------------------------------------------* 1874 FORM get_first_few_months USING in_sdate in_months 1875 ex_tdate. 1876 1877 CALL FUNCTION 'RSARCH_DATE_SHIFT' 1878 EXPORTING 1879 I_DATE = in_sdate"P_SY_DATUM 1880 I_SHIFT = in_months "月份数 1881 I_SHIFT_UNIT = 'MON' 1882 I_OPTION = 'LT' 1883 IMPORTING 1884 E_DATE = ex_tdate"P_SY_DATUM 1885 EXCEPTIONS 1886 ILLEGAL_SHIFT_UNIT = 1 1887 OUT_OF_BOUNDS = 2 1888 ILLEGAL_OPTION = 3 1889 OTHERS = 4. 1890 IF SY-SUBRC <> 0. 1891 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1892 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1893 ENDIF. 1894 1895 ENDFORM. 1896 1897 1898 1899 *&---------------------------------------------------------------------* 1900 *& Form ROUND 1901 *&---------------------------------------------------------------------* 1902 *& text 1903 *&---------------------------------------------------------------------* 1904 *& --> L_SALK3 1905 *&---------------------------------------------------------------------* 1906 FORM ROUND USING L_SALK3 TYPE f. 1907 1908 CALL FUNCTION 'ROUND' 1909 EXPORTING 1910 decimals = 14 " 保留多少位小数 1911 input = l_salk3 1912 sign = '-' " + 向上取舍 - 向下取舍 (负数也一样) 1913 IMPORTING 1914 output = l_salk3 " 输出返回结果 1915 EXCEPTIONS 1916 input_invalid = 1 1917 overflow = 2 1918 type_invalid = 3 1919 OTHERS = 4. 1920 1921 ENDFORM. 1922 1923 FORM download_successful_1. 1924 1925 CALL FUNCTION 'GUI_DOWNLOAD' 1926 EXPORTING 1927 FILENAME = P_FPATH2 1928 FILETYPE = 'DAT' 1929 CODEPAGE = '8404' "中文乱码 1930 WRITE_FIELD_SEPARATOR = 'X' 1931 TABLES 1932 DATA_TAB = down_mb52_1 " 下载的内容 1933 EXCEPTIONS 1934 FILE_WRITE_ERROR = 1 1935 NO_BATCH = 2 1936 GUI_REFUSE_FILETRANSFER = 3 1937 INVALID_TYPE = 4 1938 NO_AUTHORITY = 5 1939 UNKNOWN_ERROR = 6 1940 HEADER_NOT_ALLOWED = 7 1941 SEPARATOR_NOT_ALLOWED = 8 1942 FILESIZE_NOT_ALLOWED = 9 1943 HEADER_TOO_LONG = 10 1944 DP_ERROR_CREATE = 11 1945 DP_ERROR_SEND = 12 1946 DP_ERROR_WRITE = 13 1947 UNKNOWN_DP_ERROR = 14 1948 ACCESS_DENIED = 15 1949 DP_OUT_OF_MEMORY = 16 1950 DISK_FULL = 17 1951 DP_TIMEOUT = 18 1952 FILE_NOT_FOUND = 19 1953 DATAPROVIDER_EXCEPTION = 20 1954 CONTROL_FLUSH_ERROR = 21 1955 OTHERS = 22. 1956 1957 IF SY-SUBRC = 0. 1958 MESSAGE S001 WITH '下载成功'. 1959 ELSE. 1960 MESSAGE S001 WITH '下载失败'. 1961 ENDIF. 1962 1963 ENDFORM. 1964 1965 "下载成功 1966 FORM download_successful_2. 1967 1968 CALL FUNCTION 'GUI_DOWNLOAD' 1969 EXPORTING 1970 FILENAME = P_FPATH2 1971 FILETYPE = 'DAT' 1972 CODEPAGE = '8404' "中文乱码 1973 WRITE_FIELD_SEPARATOR = 'X' 1974 TABLES 1975 DATA_TAB = down_mb52_2 " 下载的内容 1976 EXCEPTIONS 1977 FILE_WRITE_ERROR = 1 1978 NO_BATCH = 2 1979 GUI_REFUSE_FILETRANSFER = 3 1980 INVALID_TYPE = 4 1981 NO_AUTHORITY = 5 1982 UNKNOWN_ERROR = 6 1983 HEADER_NOT_ALLOWED = 7 1984 SEPARATOR_NOT_ALLOWED = 8 1985 FILESIZE_NOT_ALLOWED = 9 1986 HEADER_TOO_LONG = 10 1987 DP_ERROR_CREATE = 11 1988 DP_ERROR_SEND = 12 1989 DP_ERROR_WRITE = 13 1990 UNKNOWN_DP_ERROR = 14 1991 ACCESS_DENIED = 15 1992 DP_OUT_OF_MEMORY = 16 1993 DISK_FULL = 17 1994 DP_TIMEOUT = 18 1995 FILE_NOT_FOUND = 19 1996 DATAPROVIDER_EXCEPTION = 20 1997 CONTROL_FLUSH_ERROR = 21 1998 OTHERS = 22. 1999 2000 IF SY-SUBRC = 0. 2001 MESSAGE S001 WITH '下载成功'. 2002 ELSE. 2003 MESSAGE S001 WITH '下载失败'. 2004 ENDIF. 2005 2006 ENDFORM. 2007 2008 FORM download_successful_3. 2009 2010 CALL FUNCTION 'GUI_DOWNLOAD' 2011 EXPORTING 2012 FILENAME = P_FPATH2 2013 FILETYPE = 'DAT' 2014 CODEPAGE = '8404' "中文乱码 2015 WRITE_FIELD_SEPARATOR = 'X' 2016 TABLES 2017 DATA_TAB = down_mb52_3 " 下载的内容 2018 EXCEPTIONS 2019 FILE_WRITE_ERROR = 1 2020 NO_BATCH = 2 2021 GUI_REFUSE_FILETRANSFER = 3 2022 INVALID_TYPE = 4 2023 NO_AUTHORITY = 5 2024 UNKNOWN_ERROR = 6 2025 HEADER_NOT_ALLOWED = 7 2026 SEPARATOR_NOT_ALLOWED = 8 2027 FILESIZE_NOT_ALLOWED = 9 2028 HEADER_TOO_LONG = 10 2029 DP_ERROR_CREATE = 11 2030 DP_ERROR_SEND = 12 2031 DP_ERROR_WRITE = 13 2032 UNKNOWN_DP_ERROR = 14 2033 ACCESS_DENIED = 15 2034 DP_OUT_OF_MEMORY = 16 2035 DISK_FULL = 17 2036 DP_TIMEOUT = 18 2037 FILE_NOT_FOUND = 19 2038 DATAPROVIDER_EXCEPTION = 20 2039 CONTROL_FLUSH_ERROR = 21 2040 OTHERS = 22. 2041 2042 IF SY-SUBRC = 0. 2043 MESSAGE S001 WITH '下载成功'. 2044 ELSE. 2045 MESSAGE S001 WITH '下载失败'. 2046 ENDIF. 2047 2048 ENDFORM. 2049 2050 *&---------------------------------------------------------------------* 2051 *& Form WRITE_MAIL_BODY 2052 *&---------------------------------------------------------------------* 2053 *& text 2054 *&---------------------------------------------------------------------* 2055 *& --> GT_OBJTXT 2056 *& --> P_ 2057 *&---------------------------------------------------------------------* 2058 FORM WRITE_MAIL_BODY TABLES I_OBJTXT USING IN_TXT. 2059 2060 I_OBJTXT = IN_TXT. "標題 2061 APPEND I_OBJTXT. 2062 CLEAR I_OBJTXT. 2063 2064 ENDFORM. 2065 2066 2067 *&---------------------------------------------------------------------* 2068 *& Form DAOWN_MB52 2069 *&---------------------------------------------------------------------* 2070 *& text 2071 *&---------------------------------------------------------------------* 2072 *& --> p1 text 2073 *& <-- p2 text 2074 *&---------------------------------------------------------------------* 2075 FORM donw_mb52 USING lv_datum . 2076 2077 IF gt_mb52_1[] is not INITIAL. 2078 CLEAR:down_mb52_1. 2079 *-->标题 2080 down_mb52_1-C1 = '存储地点'. 2081 down_mb52_1-C2 = '工厂'. 2082 down_mb52_1-C3 = '物料类型'. 2083 down_mb52_1-C4 = '物料群组'. 2084 down_mb52_1-C5 = '料号'. 2085 down_mb52_1-C6 = '料号说明'. 2086 down_mb52_1-C7 = '存储位置说明'. 2087 down_mb52_1-C8 = '储格'. 2088 down_mb52_1-C9 = '未限制'. 2089 down_mb52_1-C10 = '值未限制'. 2090 down_mb52_1-C11 = '特别库存'. 2091 down_mb52_1-C12 = '品质检验中'. 2092 down_mb52_1-C13 = '限制使用库存'. 2093 down_mb52_1-C14 = '值已限制'. 2094 down_mb52_1-C15 = '已冻结'. 2095 down_mb52_1-C16 = '冻结库存值'. 2096 down_mb52_1-C17 = '退货'. 2097 down_mb52_1-C18 = '冻结退货值'. 2098 down_mb52_1-C19 = 'MRP控制员'. 2099 down_mb52_1-C20 = '评估GR冻结库存值'. 2100 down_mb52_1-C21 = '已评估的收货冻结库储'. 2101 down_mb52_1-C23 = '特殊库存号码'. 2102 down_mb52_1-C24 = '单位'. 2103 down_mb52_1-C25 = '币别'. 2104 * down_mb52_1-C26 = '销售库存'. 2105 * down_mb52_1-C27 = '评估库存'. 2106 * down_mb52_1-C28 = '异动平均价格'. 2107 * down_mb52_1-C29 = '标准价格'. 2108 2109 APPEND down_mb52_1. 2110 CLEAR down_mb52_1. 2111 *-->表内容 2112 LOOP AT gt_mb52_1 WHERE 2113 ( labst > 0 OR insme > 0 OR retme > 0 OR speme > 0 OR einme > 0 ). 2114 move: 2115 gt_mb52_1-lgort to down_mb52_1-c1, 2116 gt_mb52_1-werks to down_mb52_1-c2, 2117 gt_mb52_1-mtart to down_mb52_1-c3, 2118 gt_mb52_1-matkl to down_mb52_1-c4, 2119 gt_mb52_1-matnr to down_mb52_1-c5, 2120 gt_mb52_1-maktx to down_mb52_1-c6, 2121 gt_mb52_1-lgobe to down_mb52_1-c7, 2122 gt_mb52_1-lgpbe to down_mb52_1-c8, 2123 gt_mb52_1-labst to down_mb52_1-c9, 2124 gt_mb52_1-salk3 to down_mb52_1-c10, 2125 gt_mb52_1-sobkz to down_mb52_1-c11, 2126 gt_mb52_1-insme to down_mb52_1-c12, 2127 gt_mb52_1-retme to down_mb52_1-c13, 2128 gt_mb52_1-einme to down_mb52_1-c14, 2129 gt_mb52_1-salk3_1 to down_mb52_1-c15, 2130 gt_mb52_1-speme to down_mb52_1-c16, 2131 gt_mb52_1-salk3_2 to down_mb52_1-c17, 2132 gt_mb52_1-retme to down_mb52_1-c18, 2133 gt_mb52_1-salk3_3 to down_mb52_1-c19, 2134 gt_mb52_1-dispo to down_mb52_1-c20, 2135 gt_mb52_1-salk3_4 to down_mb52_1-c21, 2136 gt_mb52_1-bwesb to down_mb52_1-c22, 2137 gt_mb52_1-ssnum to down_mb52_1-c23, 2138 gt_mb52_1-meins to down_mb52_1-c24, 2139 gt_mb52_1-waers to down_mb52_1-c25. 2140 * gt_mb52_1-lbkum_e to down_mb52_1-c26, 2141 * gt_mb52_1-lbkum_m to down_mb52_1-c27, 2142 * gt_mb52_1-price to down_mb52_1-c28, 2143 * gt_mb52_1-stprs to down_mb52_1-c29. 2144 APPEND down_mb52_1. 2145 CLEAR: down_mb52_1. 2146 ENDLOOP. 2147 2148 * CONCATENATE L_PATH '2000公司厂商明细.xls' INTO L_PATH. 2149 CONCATENATE P_FPATH1 sy-datum '_100_' lv_datum '期物料明细.xls' INTO P_FPATH2. 2150 PERFORM download_successful_1." 下载 2151 ENDIF. 2152 IF gt_mb52_2[] is not INITIAL. 2153 CLEAR:down_mb52_2 . 2154 *-->标题 2155 down_mb52_2-C1 = '存储地点II'. 2156 down_mb52_2-C2 = '呆滞期'. 2157 down_mb52_2-C3 = '工厂'. 2158 down_mb52_2-C4 = '物料类型'. 2159 down_mb52_2-C5 = '物料群组'. 2160 down_mb52_2-C6 = '料号'. 2161 down_mb52_2-C7 = '物料说明'. 2162 down_mb52_2-C8 = '存储地点'. 2163 down_mb52_2-C9 = '存储位置说明'. 2164 down_mb52_2-C10 = '储格'. 2165 down_mb52_2-C11 = '值未限制'. 2166 down_mb52_2-C12 = '特别库存'. 2167 down_mb52_2-C13 = '限制使用库存'. 2168 down_mb52_2-C14 = '值已限制'. 2169 down_mb52_2-C15 = '已冻结'. 2170 down_mb52_2-C16 = '冻结库存值'. 2171 down_mb52_2-C17 = '退货'. 2172 down_mb52_2-C18 = '冻结退货值'. 2173 down_mb52_2-C19 = '评估GR冻结库存'. 2174 down_mb52_2-C20 = '已评估的收货冻结库存值'. 2175 down_mb52_2-C21 = '特殊库存号码'. 2176 down_mb52_2-C22 = 'DF 存储位置等级'. 2177 down_mb52_2-C23 = '单位'. 2178 down_mb52_2-C24 = '币别'. 2179 down_mb52_2-C25 = '未限制' . 2180 down_mb52_2-C26 = '品质检验中' . 2181 down_mb52_2-C27 = 'MRP控制员' . 2182 down_mb52_2-C28 = '未限制 + 品质检验中' . 2183 down_mb52_2-C29 = '单价' . 2184 down_mb52_2-C30 = '金额' . 2185 * down_mb52_2-C31 = '异动平均价格' . 2186 * down_mb52_2-C32 = '标准价格' . 2187 APPEND down_mb52_2. 2188 CLEAR down_mb52_2. 2189 *-->表内容 2190 LOOP AT gt_mb52_2 WHERE labst_insme > 0. 2191 move: 2192 gt_mb52_2-lgort2 to down_mb52_2-c1, 2193 gt_mb52_2-text to down_mb52_2-c2, 2194 gt_mb52_2-werks to down_mb52_2-c3, 2195 gt_mb52_2-mtart to down_mb52_2-c4, 2196 gt_mb52_2-matkl to down_mb52_2-c5, 2197 2198 gt_mb52_2-matnr to down_mb52_2-c6, 2199 gt_mb52_2-maktx to down_mb52_2-c7, 2200 gt_mb52_2-lgort to down_mb52_2-c8, 2201 gt_mb52_2-lgobe to down_mb52_2-c9, 2202 gt_mb52_2-lgpbe to down_mb52_2-c10, 2203 2204 gt_mb52_2-salk3 to down_mb52_2-c11, 2205 gt_mb52_2-sobkz to down_mb52_2-c12, 2206 gt_mb52_2-einme to down_mb52_2-c13, 2207 gt_mb52_2-salk3_1 to down_mb52_2-c14, 2208 gt_mb52_2-speme to down_mb52_2-c15, 2209 2210 gt_mb52_2-salk3_2 to down_mb52_2-c16, 2211 gt_mb52_2-retme to down_mb52_2-c17, 2212 gt_mb52_2-salk3_3 to down_mb52_2-c18, 2213 gt_mb52_2-salk3_4 to down_mb52_2-c19, 2214 gt_mb52_2-bwesb to down_mb52_2-c20, 2215 2216 gt_mb52_2-ssnum to down_mb52_2-c21, 2217 gt_mb52_2-lvorm to down_mb52_2-c22, 2218 gt_mb52_2-meins to down_mb52_2-c23, 2219 gt_mb52_2-waers to down_mb52_2-c24, 2220 gt_mb52_2-labst to down_mb52_2-c25, 2221 2222 gt_mb52_2-insme to down_mb52_2-c26, 2223 gt_mb52_2-einme to down_mb52_2-c27, 2224 gt_mb52_2-labst_insme to down_mb52_2-c28, 2225 gt_mb52_2-price to down_mb52_2-c29, 2226 gt_mb52_2-hsl to down_mb52_2-c30. 2227 2228 * gt_mb52_2-price1 to down_mb52_2-c31, 2229 * gt_mb52_2-stprs to down_mb52_2-c32. 2230 APPEND down_mb52_2. 2231 CLEAR: down_mb52_2. 2232 ENDLOOP. 2233 CONCATENATE P_FPATH1 sy-datum '_200_' lv_datum '期物料明细.xls' INTO P_FPATH2. 2234 PERFORM download_successful_2." 下载 2235 ENDIF. 2236 2237 IF gt_mb52_3[] is not INITIAL. 2238 CLEAR:down_mb52_3. 2239 *-->标题 2240 down_mb52_3-C1 = 'WH CODE'. 2241 down_mb52_3-C2 = '工厂'. 2242 down_mb52_3-C3 = '物料类型'. 2243 down_mb52_3-C4 = '物料群组'. 2244 down_mb52_3-C5 = '物料'. 2245 down_mb52_3-C6 = 'MBS库存'. 2246 down_mb52_3-C7 = 'WH code + MBS库存'. 2247 down_mb52_3-C8 = '物料说明'. 2248 down_mb52_3-C9 = '存储地点'. 2249 down_mb52_3-C10 = '存储位置说明'. 2250 down_mb52_3-C11 = '储格'. 2251 down_mb52_3-C12 = '未限制'. 2252 down_mb52_3-C13 = '值未限制'. 2253 down_mb52_3-C14 = '特别库存'. 2254 down_mb52_3-C15 = '品质检验中'. 2255 down_mb52_3-C16 = '限制使用的库存'. 2256 down_mb52_3-C17 = '值已限制'. 2257 down_mb52_3-C18 = '已冻结'. 2258 down_mb52_3-C19 = '冻结库存值'. 2259 down_mb52_3-C20 = '退货'. 2260 down_mb52_3-C21 = '冻结退货值'. 2261 down_mb52_3-C22 = 'MRP控制员'. 2262 down_mb52_3-C23 = '评估GR冻结库存值'. 2263 down_mb52_3-C24 = '已评估的收货冻结库存'. 2264 down_mb52_3-C25 = '特殊库存号码'. 2265 down_mb52_3-C26 = '单位'. 2266 down_mb52_3-C27 = '币别'. 2267 * down_mb52_3-C28 = '异动平均价格'. 2268 * down_mb52_3-C29 = '标准价格'. 2269 APPEND down_mb52_3. 2270 CLEAR down_mb52_3. 2271 *-->表内容 2272 LOOP AT gt_mb52_3 WHERE 2273 ( labst > 0 OR insme > 0 OR retme > 0 OR speme > 0 OR einme > 0 ). 2274 move: 2275 gt_mb52_3-zwhcode to down_mb52_3-c1, 2276 gt_mb52_3-werks to down_mb52_3-c2, 2277 gt_mb52_3-mtart to down_mb52_3-c3, 2278 gt_mb52_3-matkl to down_mb52_3-c4, 2279 gt_mb52_3-matnr to down_mb52_3-c5, 2280 gt_mb52_3-mb_zwhcode to down_mb52_3-c6, 2281 gt_mb52_3-s_zwhcode to down_mb52_3-c7, 2282 gt_mb52_3-maktx to down_mb52_3-c8, 2283 gt_mb52_3-lgort to down_mb52_3-c9, 2284 gt_mb52_3-lgobe to down_mb52_3-c10, 2285 gt_mb52_3-lgpbe to down_mb52_3-c11, 2286 gt_mb52_3-labst to down_mb52_3-c12, 2287 gt_mb52_3-salk3 to down_mb52_3-c13, 2288 gt_mb52_3-sobkz to down_mb52_3-c14, 2289 gt_mb52_3-insme to down_mb52_3-c15, 2290 gt_mb52_3-einme to down_mb52_3-c16, 2291 gt_mb52_3-salk3_1 to down_mb52_3-c17, 2292 gt_mb52_3-speme to down_mb52_3-c18, 2293 gt_mb52_3-salk3_2 to down_mb52_3-c19, 2294 gt_mb52_3-retme to down_mb52_3-c20, 2295 gt_mb52_3-salk3_3 to down_mb52_3-c21, 2296 gt_mb52_3-dispo to down_mb52_3-c22, 2297 gt_mb52_3-salk3_4 to down_mb52_3-c23, 2298 gt_mb52_3-bwesb to down_mb52_3-c24, 2299 gt_mb52_3-ssnum to down_mb52_3-c25, 2300 gt_mb52_3-meins to down_mb52_3-c26, 2301 gt_mb52_3-waers to down_mb52_3-c27. 2302 * gt_mb52_3-price to down_mb52_3-c28, 2303 * gt_mb52_3-stprs to down_mb52_3-c29. 2304 2305 APPEND down_mb52_3. 2306 CLEAR: down_mb52_3. 2307 ENDLOOP. 2308 CONCATENATE P_FPATH1 sy-datum '_300_' lv_datum '期物料明细.xls' INTO P_FPATH2. 2309 PERFORM download_successful_3." 下载 2310 ENDIF. 2311 2312 ENDFORM. 2313 2314 2315 2316 *&---------------------------------------------------------------------* 2317 *& Form NEW_AREA3_MAIL 2318 *&---------------------------------------------------------------------* 2319 *& text 2320 *&---------------------------------------------------------------------* 2321 *& --> ID_3 2322 *& --> LV_NULL 2323 *&---------------------------------------------------------------------* 2324 FORM NEW_AREA3_MAIL USING in_ID_3 2325 in_NULL. 2326 DATA: l_past_field(50). "往期栏位 2327 DATA: l_whcode(50), 2328 l_value(50), 2329 l_value1(50), 2330 l_line TYPE string. 2331 DATA: l_num TYPE i, 2332 do_num TYPE i. 2333 *上传 excel 中没有储存地 2334 IF sum_300[] is not INITIAL. 2335 LOOP AT sum_300 WHERE zwhcode NE 'MBS库存'. 2336 in_ID_3 = in_ID_3 + 1. 2337 l_num = '88'. 2338 l_line = l_whcode = sum_300-zwhcode. 2339 LOOP AT write_zmmr03_stok WHERE zwhcode EQ l_whcode. 2340 l_value = write_zmmr03_stok-salk3. 2341 l_value1 = write_zmmr03_stok-text. 2342 ENDLOOP. 2343 * l_seqno = gt_period3-seqno. 2344 CONCATENATE l_line l_value l_value1 INTO l_line SEPARATED BY gc_tab. 2345 * --> 斷行 2346 CONCATENATE g_string_3 l_line gc_crlf INTO g_string_3. 2347 ENDLOOP. 2348 2349 IF in_null NE '1' AND l_num EQ '88'. 2350 2351 DO 3 TIMES. 2352 do_num = do_num + 1. 2353 IF do_num EQ '1'. 2354 ASSIGN COMPONENT 'LGORT2' OF STRUCTURE <g_wa3> TO <g_field3>. 2355 l_line = '合计'. 2356 l_whcode = '3_sum1'. 2357 LOOP AT write_zmmr03_stok WHERE zwhcode EQ l_whcode. 2358 l_value = write_zmmr03_stok-salk3. 2359 l_value1 = write_zmmr03_stok-text. 2360 ENDLOOP. 2361 CONCATENATE l_line l_value l_value1 INTO l_line SEPARATED BY gc_tab. 2362 * --> 斷行 2363 CONCATENATE g_string_3 l_line gc_crlf INTO g_string_3. 2364 ELSEIF do_num EQ '2'. 2365 LOOP AT write_zmmr03_stok WHERE zwhcode EQ l_whcode. 2366 l_value = write_zmmr03_stok-salk3. 2367 l_value1 = write_zmmr03_stok-text. 2368 ENDLOOP. 2369 CONCATENATE l_line l_value l_value1 INTO l_line SEPARATED BY gc_tab. 2370 * --> 斷行 2371 CONCATENATE g_string_3 l_line gc_crlf INTO g_string_3. 2372 ELSE. 2373 l_line = ''. 2374 l_whcode = '3_sum2'. 2375 LOOP AT write_zmmr03_stok WHERE zwhcode EQ l_whcode. 2376 l_value = write_zmmr03_stok-salk3. 2377 l_value1 = write_zmmr03_stok-text. 2378 ENDLOOP. 2379 CONCATENATE l_line l_value l_value1 INTO l_line SEPARATED BY gc_tab. 2380 * --> 斷行 2381 CONCATENATE g_string_3 l_line gc_crlf INTO g_string_3. 2382 ENDIF. 2383 ENDDO. 2384 ENDIF. 2385 ENDIF. 2386 ENDFORM. 2387 2388 *&---------------------------------------------------------------------* 2389 *& Form SET_FIYEAR 2390 *&---------------------------------------------------------------------* 2391 *& text 2392 *&---------------------------------------------------------------------* 2393 *& --> p1 text 2394 *& <-- p2 text 2395 *&---------------------------------------------------------------------* 2396 FORM SET_FIYEAR . 2397 DATA: l_sdate LIKE sy-datum, 2398 l_endate LIKE sy-datum, 2399 l_tdate LIKE sy-datum, " 前几个月的日期 2400 lv_date TYPE i, 2401 l_months TYPE i, 2402 l_index TYPE sy-tabix, 2403 l_seqno LIKE gt_period-seqno. 2404 2405 *-->获取选择屏期间获取最后一天 2406 DATA: L_FIYEAR TYPE SY-DATUM. 2407 DATA: L_Start TYPE SY-DATUM. 2408 2409 L_Start = P_Start+0(4) && P_Start+5(2) && '01'. 2410 IF L_Start LE '00000001'. 2411 L_Start = '20180101'. 2412 ENDIF. 2413 2414 date4_s = L_Start. 2415 date4_day = L_FIYEAR = P_FIYEAR+0(4) && P_FIYEAR+5(2) && '01'. 2416 CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' 2417 EXPORTING 2418 day_in = L_FIYEAR "输入日期 2419 IMPORTING 2420 last_day_of_month = date4 "返回日期:20140131 2421 EXCEPTIONS 2422 day_in_no_date = 1 2423 OTHERS = 2. 2424 2425 PERFORM set_date 2426 USING L_Start L_FIYEAR 2427 CHANGING lv_date." 计算两端时间相差 个月 2428 lv_date = lv_date + 1. 2429 DO lv_date TIMES. 2430 PERFORM get_first_few_months 2431 USING L_FIYEAR l_months 2432 CHANGING l_tdate. " 获取前几个月的日期 2433 l_sdate = l_tdate(6) && '01'. " 第一天 2434 PERFORM get_lastdate_of_month 2435 USING l_sdate " 日期最后一天 2436 CHANGING l_tdate. 2437 gt_datum1-opedatem = l_sdate. 2438 gt_datum1-enddatem = l_tdate. 2439 APPEND gt_datum1. CLEAR: gt_datum1. 2440 l_months = l_months + 1. 2441 ENDDO. 2442 2443 " 获取数据周期 2444 LOOP AT FIYEAR. 2445 Have_data = 'Y'. " 弹框是否下载明细 2446 * FIYEAR-sign I 包含 E 排除 2447 * FIYEAR-option BT 范围之间 EQ 等于 NB 范围以外 GE 大于等于 GT 大于 LT 小于 LE 小于等于 NE 不等于 2448 IF FIYEAR-low+4(1) NE '0' OR FIYEAR-high+4(1) NE '0' 2449 OR FIYEAR-low+5(2) > '12' OR FIYEAR-high+5(2) > '12' 2450 OR ( FIYEAR-low+5(2) EQ '00' AND FIYEAR-low NE '0000000' ) 2451 OR ( FIYEAR-high+5(2) EQ '00' AND FIYEAR-high NE '0000000'). 2452 2453 MESSAGE S001 WITH '明细周期输入有误,提示:_ _ _ _ 001~ _ _ _ _ 012之间' DISPLAY LIKE 'E'. 2454 Stop. 2455 ENDIF. 2456 IF FIYEAR-option EQ 'BT'. 2457 l_sdate = FIYEAR-low(4) && FIYEAR-low+5(2) && '01' ." 底 2458 l_endate = FIYEAR-high(4) && FIYEAR-high+5(2) && '01' ." 高 2459 PERFORM set_date 2460 USING l_sdate l_endate 2461 CHANGING lv_date." 计算两端时间相差 个月 2462 2463 * ---> 获取需要明细的日期 2464 CLEAR: l_seqno,l_months. 2465 lv_date = lv_date + 1 . 2466 DO lv_date TIMES. 2467 add 1 TO l_seqno. 2468 PERFORM get_first_few_months 2469 USING l_endate l_months 2470 CHANGING l_tdate. " 获取前几个月的日期 2471 l_sdate = l_tdate(6) && '01'. " 第一天 2472 PERFORM get_lastdate_of_month 2473 USING l_sdate " 日期最后一天 2474 CHANGING l_tdate. 2475 2476 gt_datum-text1 = fiyear-sign."标志 2477 gt_datum-text2 = 'EQ'."fiyear-option."选项 2478 gt_datum-opedatem = l_sdate. " 开始日期 2479 gt_datum-enddatem = l_tdate. " 结束日期 2480 2481 APPEND gt_datum. 2482 l_months = l_months + 1. 2483 ENDDO. 2484 ELSEIF FIYEAR-option EQ 'NB'. 2485 l_sdate = FIYEAR-low(4) && FIYEAR-low+5(2) && '01' ." 底 2486 l_endate = FIYEAR-high(4) && FIYEAR-high+5(2) && '01' ." 高 2487 PERFORM set_date 2488 USING l_sdate l_endate 2489 CHANGING lv_date." 计算两端时间相差 个月 2490 2491 * ---> 获取需要明细的日期 2492 CLEAR:l_seqno. 2493 lv_date = lv_date + 1 . 2494 DO lv_date TIMES. 2495 add 1 TO l_seqno. 2496 PERFORM get_first_few_months 2497 USING l_endate l_months 2498 CHANGING l_tdate. " 获取前几个月的日期 2499 l_sdate = l_tdate(6) && '01'. " 第一天 2500 PERFORM get_lastdate_of_month 2501 USING l_sdate " 日期最后一天 2502 CHANGING l_tdate. 2503 2504 gt_datum-text1 = fiyear-sign."标志 2505 gt_datum-text2 = 'NE'."fiyear-option."选项 2506 gt_datum-opedatem = l_sdate. " 开始日期 2507 gt_datum-enddatem = l_tdate. " 结束日期 2508 2509 APPEND gt_datum. 2510 l_months = l_months + 1. 2511 ENDDO. 2512 ELSE. 2513 gt_datum-text1 = fiyear-sign."标志 2514 gt_datum-text2 = fiyear-option."选项 2515 gt_datum-opedatem = fiyear-low+0(4) && fiyear-low+5(2) && '01'. " 开始日期 2516 gt_datum-enddatem = fiyear-low+0(4) && fiyear-low+5(2) && '01'. " 结束日期 2517 APPEND gt_datum. 2518 ENDIF. 2519 ENDLOOP. 2520 2521 IF Have_data EQ 'Y'. 2522 PERFORM Have_data CHANGING p_return." 选择屏弹框 2523 CLEAR: Have_data. 2524 ENDIF. 2525 2526 * IF i_elikz EQ 'X'. " 下限日期决定是否跑最新呆滞期 2527 " 最后一期需要跑名细资料 2528 LOOP AT gt_datum WHERE opedatem EQ L_FIYEAR. 2529 l_index = '1'. 2530 ENDLOOP. 2531 IF l_index NE '1'. 2532 gt_datum-text1 = 'I'."标志 2533 gt_datum-text2 = 'EQ'."选项 2534 gt_datum-opedatem = date4(6) && '01'. " 开始日期 2535 gt_datum-enddatem = date4. " 结束日期 2536 2537 APPEND gt_datum. 2538 ENDIF. 2539 2540 SORT gt_datum by opedatem ASCENDING. 2541 PERFORM set_period1." 动态获取周期 2542 ENDFORM. 2543 2544 *&---------------------------------------------------------------------* 2545 *& Form GT_DETAIL 2546 *&---------------------------------------------------------------------* 2547 *& text 2548 *&---------------------------------------------------------------------* 2549 *& --> p1 text 2550 *& <-- p2 text 2551 *&---------------------------------------------------------------------* 2552 FORM gt_Detail . 2553 DATA:b_wersks1(4), 2554 b_wersks2(4), 2555 b_wersks3(4), 2556 l_index1 LIKE sy-tabix. 2557 2558 2559 DATA: lv_datum LIKE sy-datum," 明细周期变量 2560 lv_datum1 LIKE sy-datum. " 选择屏周期变量 2561 IF gt_bukrs[] is INITIAL. 2562 b_wersks1 = '100'. 2563 b_wersks2 = '200'. 2564 b_wersks3 = '300'. 2565 ENDIF. 2566 2567 LOOP AT gt_datum WHERE text2 NE 'NE'. 2568 2569 * 选择屏期间 2570 IF gt_datum-text1 EQ 'E' AND 2571 ( gt_datum-text2 EQ 'LE' 2572 OR gt_datum-text2 EQ 'LT' ). " 小于 或 小于等于 2573 2574 lv_datum = gt_datum-opedatem . 2575 IF gt_datum-text2 EQ 'LE' . 2576 LOOP AT gt_datum1 WHERE opedatem > lv_datum. 2577 lv_datum1 = gt_datum1-opedatem. 2578 * 循环获取往期数据 2579 LOOP AT gt_datum WHERE text2 NE 'NE' 2580 AND opedatem EQ lv_datum1. 2581 2582 PERFORM text_script USING 2583 b_wersks1 b_wersks2 2584 b_wersks3 gt_datum-opedatem. 2585 2586 " 下载明细 2587 IF p_return EQ '1'. 2588 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2589 ENDIF. 2590 "mail 明细 2591 IF s_send EQ 'X'. "发送 mail 2592 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2593 ENDIF. 2594 IF gt_datum-opedatem NE date4_day. 2595 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2596 sum_100[],sum_200[],sum_300[], 2597 sum_100_1[],sum_200_1[],sum_300_1[], 2598 g_mslb1[],g_mslb2[],g_mslb3[], 2599 g_msku1[],g_msku2[],g_msku3[], 2600 g_ebew1[],g_ebew2[],g_ebew3[]. 2601 ENDIF. 2602 ENDLOOP. 2603 ENDLOOP. 2604 ELSE. 2605 LOOP AT gt_datum1 WHERE opedatem >= lv_datum. 2606 lv_datum1 = gt_datum1-opedatem. 2607 * 循环获取往期数据 2608 LOOP AT gt_datum WHERE text2 NE 'NE' AND opedatem EQ lv_datum1. 2609 PERFORM text_script USING 2610 b_wersks1 b_wersks2 2611 b_wersks3 gt_datum-opedatem. 2612 " 下载明细 2613 IF p_return EQ '1'. 2614 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2615 ENDIF. 2616 2617 "mail 明细 2618 IF s_send EQ 'X'. "发送 mail 2619 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2620 ENDIF. 2621 IF gt_datum-opedatem NE date4_day. 2622 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2623 sum_100[],sum_200[],sum_300[], 2624 sum_100_1[],sum_200_1[],sum_300_1[], 2625 g_mslb1[],g_mslb2[],g_mslb3[], 2626 g_msku1[],g_msku2[],g_msku3[], 2627 g_ebew1[],g_ebew2[],g_ebew3[]. 2628 ENDIF. 2629 ENDLOOP. 2630 ENDLOOP. 2631 ENDIF. 2632 2633 ELSEIF gt_datum-text1 EQ 'E' 2634 AND ( gt_datum-text2 EQ 'GE' 2635 OR gt_datum-text2 EQ 'GT' ). 2636 2637 lv_datum = gt_datum-opedatem . 2638 IF gt_datum-text2 EQ 'GE' . 2639 LOOP AT gt_datum1 WHERE opedatem < lv_datum. 2640 lv_datum1 = gt_datum1-opedatem. 2641 * 循环获取往期数据 2642 LOOP AT gt_datum WHERE text2 NE 'NE' 2643 AND opedatem EQ lv_datum1. 2644 2645 PERFORM text_script USING 2646 b_wersks1 b_wersks2 2647 b_wersks3 gt_datum-opedatem. 2648 " 下载明细 2649 IF p_return EQ '1'. 2650 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2651 ENDIF. 2652 2653 "mail 明细 2654 IF s_send EQ 'X'. "发送 mail 2655 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2656 ENDIF. 2657 2658 IF gt_datum-opedatem NE date4_day. 2659 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2660 sum_100[],sum_200[],sum_300[], 2661 sum_100_1[],sum_200_1[],sum_300_1[], 2662 g_mslb1[],g_mslb2[],g_mslb3[], 2663 g_msku1[],g_msku2[],g_msku3[], 2664 g_ebew1[],g_ebew2[],g_ebew3[]. 2665 ENDIF. 2666 ENDLOOP. 2667 ENDLOOP. 2668 ELSE. 2669 LOOP AT gt_datum1 WHERE opedatem <= lv_datum. 2670 lv_datum1 = gt_datum1-opedatem. 2671 * 循环获取往期数据 2672 LOOP AT gt_datum WHERE text2 NE 'NE' 2673 AND opedatem EQ lv_datum1. 2674 2675 PERFORM text_script USING 2676 b_wersks1 b_wersks2 2677 b_wersks3 gt_datum-opedatem. 2678 2679 " 下载明细 2680 IF p_return EQ '1'. 2681 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2682 ENDIF. 2683 "mail 明细 2684 IF s_send EQ 'X'. "发送 mail 2685 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2686 ENDIF. 2687 IF gt_datum-opedatem NE date4_day. 2688 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2689 sum_100[],sum_200[],sum_300[], 2690 sum_100_1[],sum_200_1[],sum_300_1[], 2691 g_mslb1[],g_mslb2[],g_mslb3[], 2692 g_msku1[],g_msku2[],g_msku3[], 2693 g_ebew1[],g_ebew2[],g_ebew3[]. 2694 ENDIF. 2695 ENDLOOP. 2696 ENDLOOP. 2697 ENDIF. 2698 ELSEIF gt_datum-text1 EQ 'I' AND 2699 ( gt_datum-text2 EQ 'LE' 2700 OR gt_datum-text2 EQ 'LT' ). " 小于 或 小于等于. 2701 2702 lv_datum = gt_datum-opedatem . 2703 IF gt_datum-text2 EQ 'LE' . 2704 LOOP AT gt_datum1 WHERE opedatem <= lv_datum. 2705 lv_datum1 = gt_datum1-opedatem. 2706 * 循环获取往期数据 2707 LOOP AT gt_datum WHERE text2 NE 'NE' 2708 AND opedatem EQ lv_datum1. 2709 2710 PERFORM text_script USING 2711 b_wersks1 b_wersks2 2712 b_wersks3 gt_datum-opedatem. 2713 2714 " 下载明细 2715 IF p_return EQ '1'. 2716 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2717 ENDIF. 2718 "mail 明细 2719 IF s_send EQ 'X'. "发送 mail 2720 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2721 ENDIF. 2722 IF gt_datum-opedatem NE date4_day. 2723 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2724 sum_100[],sum_200[],sum_300[], 2725 sum_100_1[],sum_200_1[],sum_300_1[], 2726 g_mslb1[],g_mslb2[],g_mslb3[], 2727 g_msku1[],g_msku2[],g_msku3[], 2728 g_ebew1[],g_ebew2[],g_ebew3[]. 2729 ENDIF. 2730 ENDLOOP. 2731 ENDLOOP. 2732 ELSE. 2733 LOOP AT gt_datum1 WHERE opedatem < lv_datum. 2734 lv_datum1 = gt_datum1-opedatem. 2735 * 循环获取往期数据 2736 LOOP AT gt_datum WHERE text2 NE 'NE' 2737 AND opedatem EQ lv_datum1. 2738 2739 PERFORM text_script USING 2740 b_wersks1 b_wersks2 2741 b_wersks3 gt_datum-opedatem. 2742 " 下载明细 2743 IF p_return EQ '1'. 2744 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2745 ENDIF. 2746 "mail 明细 2747 IF s_send EQ 'X'. "发送 mail 2748 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2749 ENDIF. 2750 IF gt_datum-opedatem NE date4_day. 2751 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2752 sum_100[],sum_200[],sum_300[], 2753 sum_100_1[],sum_200_1[],sum_300_1[], 2754 g_mslb1[],g_mslb2[],g_mslb3[], 2755 g_msku1[],g_msku2[],g_msku3[], 2756 g_ebew1[],g_ebew2[],g_ebew3[]. 2757 ENDIF. 2758 ENDLOOP. 2759 ENDLOOP. 2760 ENDIF. 2761 ELSEIF gt_datum-text1 EQ 'I' 2762 AND ( gt_datum-text2 EQ 'GE' 2763 OR gt_datum-text2 EQ 'GT' ). 2764 2765 lv_datum = gt_datum-opedatem . 2766 IF gt_datum-text2 EQ 'GE' . 2767 LOOP AT gt_datum1 WHERE opedatem >= lv_datum. 2768 lv_datum1 = gt_datum1-opedatem. 2769 * 循环获取往期数据 2770 LOOP AT gt_datum WHERE text2 NE 'NE' 2771 AND opedatem EQ lv_datum1. 2772 2773 PERFORM text_script USING 2774 b_wersks1 b_wersks2 2775 b_wersks3 gt_datum-opedatem. 2776 " 下载明细 2777 IF p_return EQ '1'. 2778 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2779 ENDIF. 2780 "mail 明细 2781 IF s_send EQ 'X'. "发送 mail 2782 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2783 ENDIF. 2784 IF gt_datum-opedatem NE date4_day. 2785 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2786 sum_100[],sum_200[],sum_300[], 2787 sum_100_1[],sum_200_1[],sum_300_1[], 2788 g_mslb1[],g_mslb2[],g_mslb3[], 2789 g_msku1[],g_msku2[],g_msku3[], 2790 g_ebew1[],g_ebew2[],g_ebew3[]. 2791 ENDIF. 2792 ENDLOOP. 2793 ENDLOOP. 2794 ELSE. 2795 LOOP AT gt_datum1 WHERE opedatem > lv_datum. 2796 lv_datum1 = gt_datum1-opedatem. 2797 * 循环获取往期数据 2798 LOOP AT gt_datum WHERE text2 NE 'NE' 2799 AND opedatem EQ lv_datum1. 2800 2801 PERFORM text_script USING 2802 b_wersks1 b_wersks2 2803 b_wersks3 gt_datum-opedatem. 2804 " 下载明细 2805 IF p_return EQ '1'. 2806 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2807 ENDIF. 2808 "mail 明细 2809 IF s_send EQ 'X'. "发送 mail 2810 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2811 ENDIF. 2812 IF gt_datum-opedatem NE date4_day. 2813 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2814 sum_100[],sum_200[],sum_300[], 2815 sum_100_1[],sum_200_1[],sum_300_1[], 2816 g_mslb1[],g_mslb2[],g_mslb3[], 2817 g_msku1[],g_msku2[],g_msku3[], 2818 g_ebew1[],g_ebew2[],g_ebew3[]. 2819 ENDIF. 2820 ENDLOOP. 2821 ENDLOOP. 2822 ENDIF. 2823 ELSEIF gt_datum-text1 EQ 'I' AND gt_datum-text2 EQ 'EQ' . 2824 2825 lv_datum = gt_datum-opedatem . 2826 LOOP AT gt_datum1 WHERE opedatem = lv_datum. 2827 lv_datum1 = gt_datum1-opedatem. 2828 * 循环获取往期数据 2829 LOOP AT gt_datum WHERE text2 NE 'NE' 2830 AND opedatem EQ lv_datum1. 2831 2832 PERFORM text_script USING 2833 b_wersks1 b_wersks2 2834 b_wersks3 gt_datum-opedatem. 2835 " 下载明细 2836 IF p_return EQ '1'. 2837 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2838 ENDIF. 2839 "mail 明细 2840 IF s_send EQ 'X'. "发送 mail 2841 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2842 ENDIF. 2843 IF gt_datum-opedatem NE date4_day. 2844 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2845 sum_100[],sum_200[],sum_300[], 2846 sum_100_1[],sum_200_1[],sum_300_1[], 2847 g_mslb1[],g_mslb2[],g_mslb3[], 2848 g_msku1[],g_msku2[],g_msku3[], 2849 g_ebew1[],g_ebew2[],g_ebew3[]. 2850 ENDIF. 2851 ENDLOOP. 2852 ENDLOOP. 2853 ELSEIF gt_datum-text1 EQ 'I' AND gt_datum-text2 EQ 'NE' . 2854 lv_datum = gt_datum-opedatem . 2855 LOOP AT gt_datum1 WHERE opedatem NE lv_datum. 2856 lv_datum1 = gt_datum1-opedatem. 2857 * 循环获取往期数据 2858 LOOP AT gt_datum WHERE text2 NE 'NE' 2859 AND opedatem EQ lv_datum1. 2860 2861 PERFORM text_script USING 2862 b_wersks1 b_wersks2 2863 b_wersks3 gt_datum-opedatem. 2864 " 下载明细 2865 IF p_return EQ '1'. 2866 PERFORM donw_mb52 USING gt_datum-opedatem. " 下载数据 2867 ENDIF. 2868 "mail 明细 2869 IF s_send EQ 'X'. "发送 mail 2870 PERFORM mail_detail USING gt_datum-opedatem. " 明细发 mail 2871 ENDIF. 2872 IF gt_datum-opedatem NE date4_day. 2873 CLEAR:gt_mb52_1[],gt_mb52_2[],gt_mb52_3[], 2874 sum_100[],sum_200[],sum_300[], 2875 sum_100_1[],sum_200_1[],sum_300_1[], 2876 g_mslb1[],g_mslb2[],g_mslb3[], 2877 g_msku1[],g_msku2[],g_msku3[], 2878 g_ebew1[],g_ebew2[],g_ebew3[]. 2879 ENDIF. 2880 ENDLOOP. 2881 ENDLOOP. 2882 ENDIF. 2883 ENDLOOP. 2884 ENDFORM. 2885 2886 *&---------------------------------------------------------------------* 2887 *& Form INT_WERKS 2888 *&---------------------------------------------------------------------* 2889 *& text 2890 *&---------------------------------------------------------------------* 2891 *& --> L_WERKS 2892 *&---------------------------------------------------------------------* 2893 FORM INT_WERKS USING in_sign in_option in_werks. 2894 2895 gt_bukrs-text1 = p_werks-sign. 2896 gt_bukrs-text2 = p_werks-option. 2897 gt_bukrs-opewerks = in_werks. 2898 gt_bukrs-endwerks = in_werks. 2899 APPEND gt_bukrs. 2900 CLEAR: gt_bukrs. 2901 ENDFORM. 2902 *&---------------------------------------------------------------------* 2903 *& Form TEXT_SCRIPT 2904 *&---------------------------------------------------------------------* 2905 *& text 脚本 2906 *&---------------------------------------------------------------------* 2907 *& --> B_WERKS1 2908 *& --> B_WERKS2 2909 *& --> B_WERKS3 2910 *& --> GT_DATUM 2911 *&---------------------------------------------------------------------* 2912 FORM TEXT_SCRIPT USING b_wersks1 b_wersks2 b_wersks3 in_datum. 2913 *--->等于下限日期时跑全部明细资料 (新资料写入SAP) 2914 DATA:en_datum LIKE sy-datum. 2915 2916 DATA: lv1_labst LIKE mardh-labst, 2917 lv2_labst LIKE mardh-labst, 2918 lv3_labst LIKE mardh-labst. 2919 2920 DATA:gr_data1 TYPE REF TO data, 2921 gr_data2 TYPE REF TO data, 2922 gr_data3 TYPE REF TO data. 2923 2924 IF in_datum EQ date4_day . 2925 b_wersks1 = '100'. 2926 b_wersks2 = '200'. 2927 b_wersks3 = '300'. 2928 ENDIF. 2929 2930 CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' 2931 EXPORTING 2932 day_in = in_datum "输入日期 2933 IMPORTING 2934 last_day_of_month = en_datum "返回日期:20140131 2935 EXCEPTIONS 2936 day_in_no_date = 1 2937 OTHERS = 2. 2938 2939 *----->1000 2940 SELECT * FROM MARDH 2941 INNER JOIN mara ON mara~matnr EQ mardh~matnr 2942 INTO CORRESPONDING FIELDS OF table gt_mb52_1 "一般 2943 WHERE mardh~werks EQ b_wersks1 2944 AND mardh~lfgja EQ gt_datum-opedatem(4) 2945 AND mardh~lfmon EQ gt_datum-opedatem+4(2) 2946 AND ( mardh~labst > 0 OR mardh~umlme > 0 2947 OR mardh~insme > 0 OR mardh~einme > 0 2948 OR mardh~speme > 0 OR mardh~retme > 0 2949 OR mardh~vklab > 0 OR mardh~vkuml > 0 ) 2950 AND mardh~matnr in s_matnr. 2951 2952 SELECT mslbh~matnr mslbh~werks 2953 mslbh~sobkz mslbh~lifnr 2954 lblab as labst lbins as insme 2955 lbein as einme lbuml as bwesb 2956 mara~mtart mara~matkl 2957 mara~meins 2958 FROM mslbh 2959 INNER JOIN mara ON mara~matnr EQ mslbh~matnr 2960 INTO CORRESPONDING FIELDS OF table g_mslb1 " O 2961 WHERE werks EQ b_wersks1 AND 2962 lfgja EQ gt_datum-opedatem(4) AND 2963 lfmon EQ gt_datum-opedatem+4(2) AND 2964 ( lblab > 0 OR lbins > 0 2965 OR lbein > 0 OR lbuml > 0 ) 2966 AND mslbh~matnr in s_matnr. 2967 2968 SELECT mskuh~matnr mskuh~werks 2969 mskuh~sobkz mskuh~kunnr 2970 kulab as labst kuins as insme 2971 kuein as einme kuuml as bwesb 2972 mara~mtart mara~matkl 2973 mara~meins 2974 FROM mskuh 2975 INNER JOIN mara ON mara~matnr EQ mskuh~matnr 2976 INTO CORRESPONDING FIELDS OF table g_msku1 " W 2977 WHERE werks EQ b_wersks1 AND 2978 lfgja EQ gt_datum-opedatem(4) AND 2979 lfmon EQ gt_datum-opedatem+4(2) AND 2980 ( kulab > 0 OR kuins > 0 2981 OR kuein > 0 OR kuuml > 0 ) 2982 AND mskuh~matnr in s_matnr. 2983 2984 SELECT mskah~matnr mskah~werks 2985 mskah~sobkz mskah~vbeln 2986 mskah~posnr 2987 kalab as labst kains as insme 2988 kaein as einme kaspe as speme 2989 lgort as lgort 2990 mara~mtart mara~matkl 2991 mara~meins 2992 FROM mskah 2993 INNER JOIN mara ON mara~matnr EQ mskah~matnr 2994 INTO CORRESPONDING FIELDS OF table g_ebew1 " E 2995 WHERE werks EQ b_wersks1 AND 2996 lfgja EQ gt_datum-opedatem(4) AND 2997 lfmon EQ gt_datum-opedatem+4(2) AND 2998 ( kalab > 0 OR kains > 0 OR kaein > 0 ) 2999 AND mskah~matnr in s_matnr. 3000 3001 * -----> 2000 3002 SELECT * FROM MARDH 3003 INNER JOIN mara ON mara~matnr EQ mardh~matnr 3004 INTO CORRESPONDING FIELDS OF table gt_mb52_2 "一般 3005 WHERE mardh~werks EQ b_wersks2 3006 AND mardh~lfgja EQ gt_datum-opedatem(4) 3007 AND mardh~lfmon EQ gt_datum-opedatem+4(2) 3008 AND ( mardh~labst > 0 OR mardh~umlme > 0 3009 OR mardh~insme > 0 OR mardh~einme > 0 3010 OR mardh~speme > 0 OR mardh~retme > 0 3011 OR mardh~vklab > 0 OR mardh~vkuml > 0 ) 3012 AND mardh~matnr in s_matnr. 3013 * AND makt~spras = @sy-langu. 3014 3015 SELECT mslbh~matnr mslbh~werks 3016 mslbh~sobkz mslbh~lifnr 3017 lblab as labst lbins as insme 3018 lbein as einme lbuml as bwesb 3019 mara~mtart mara~matkl 3020 mara~meins 3021 FROM mslbh 3022 INNER JOIN mara ON mara~matnr EQ mslbh~matnr 3023 INTO CORRESPONDING FIELDS OF table g_mslb2 " O 3024 WHERE werks EQ b_wersks2 AND 3025 lfgja EQ gt_datum-opedatem(4) AND 3026 lfmon EQ gt_datum-opedatem+4(2) AND 3027 ( lblab > 0 OR lbins > 0 3028 OR lbein > 0 OR lbuml > 0 ) 3029 AND mslbh~matnr in s_matnr. 3030 3031 SELECT mskuh~matnr mskuh~werks 3032 mskuh~sobkz mskuh~kunnr 3033 kulab as labst kuins as insme 3034 kuein as einme kuuml as bwesb 3035 mara~mtart mara~matkl 3036 mara~meins 3037 FROM mskuh 3038 INNER JOIN mara ON mara~matnr EQ mskuh~matnr 3039 INTO CORRESPONDING FIELDS OF table g_msku2 " W 3040 WHERE werks EQ b_wersks2 AND 3041 lfgja EQ gt_datum-opedatem(4) AND 3042 lfmon EQ gt_datum-opedatem+4(2) AND 3043 ( kulab > 0 OR kuins > 0 3044 OR kuein > 0 OR kuuml > 0 ) 3045 AND mskuh~matnr in s_matnr. 3046 3047 SELECT mskah~matnr mskah~werks 3048 mskah~sobkz mskah~vbeln 3049 mskah~posnr 3050 kalab as labst kains as insme 3051 kaein as einme kaspe as speme 3052 lgort as lgort 3053 mara~mtart mara~matkl 3054 mara~meins 3055 FROM mskah 3056 INNER JOIN mara ON mara~matnr EQ mskah~matnr 3057 INTO CORRESPONDING FIELDS OF table g_ebew2 " E 3058 WHERE werks EQ b_wersks2 AND 3059 lfgja EQ gt_datum-opedatem(4) AND 3060 lfmon EQ gt_datum-opedatem+4(2) AND 3061 ( kalab > 0 OR kains > 0 OR kaein > 0 ) 3062 AND mskah~matnr in s_matnr. 3063 3064 * -----> 3000 3065 SELECT mardh~matnr mardh~werks 3066 mardh~lgort mardh~insme 3067 mardh~einme mardh~speme 3068 mardh~retme "mardh~vklab 3069 mardh~labst mara~mtart 3070 mara~matkl mara~zwhcode as s_zwhcode 3071 mara~meins 3072 FROM MARDH 3073 INNER JOIN mara ON mara~matnr EQ mardh~matnr 3074 INTO CORRESPONDING FIELDS OF table gt_mb52_3 "一般 3075 WHERE mardh~werks EQ b_wersks3 3076 AND mardh~lfgja EQ gt_datum-opedatem(4) 3077 AND mardh~lfmon EQ gt_datum-opedatem+4(2) 3078 AND ( mardh~labst > 0 OR mardh~umlme > 0 3079 OR mardh~insme > 0 OR mardh~einme > 0 3080 OR mardh~speme > 0 OR mardh~retme > 0 3081 OR mardh~vklab > 0 OR mardh~vkuml > 0 ) 3082 AND mardh~matnr in s_matnr. 3083 * AND makt~spras = sy-langu. 3084 3085 SELECT mslbh~matnr mslbh~werks 3086 mslbh~sobkz mslbh~lifnr 3087 lblab as labst lbins as insme 3088 lbein as einme lbuml as bwesb 3089 mara~mtart mara~matkl 3090 mara~zwhcode as s_zwhcode 3091 mara~meins 3092 FROM mslbh 3093 INNER JOIN mara ON mara~matnr EQ mslbh~matnr 3094 INTO CORRESPONDING FIELDS OF table g_mslb3 " O 3095 WHERE mslbh~werks EQ b_wersks3 AND 3096 mslbh~lfgja EQ gt_datum-opedatem(4) AND 3097 mslbh~lfmon EQ gt_datum-opedatem+4(2) AND 3098 ( lblab > 0 OR lbins > 0 3099 OR lbein > 0 OR lbuml > 0 ) 3100 AND mslbh~matnr in s_matnr. 3101 3102 SELECT mskuh~matnr mskuh~werks 3103 mskuh~sobkz mskuh~kunnr 3104 kulab as labst kuins as insme 3105 kuein as einme kuuml as bwesb 3106 mara~mtart mara~matkl 3107 mara~zwhcode as s_zwhcode 3108 mara~meins 3109 FROM mskuh 3110 INNER JOIN mara ON mara~matnr EQ mskuh~matnr 3111 INTO CORRESPONDING FIELDS OF table g_msku3 " W 3112 WHERE werks EQ b_wersks3 AND 3113 lfgja EQ gt_datum-opedatem(4) AND 3114 lfmon EQ gt_datum-opedatem+4(2) AND 3115 ( kulab > 0 OR kuins > 0 3116 OR kuein > 0 OR kuuml > 0 ) 3117 AND mskuh~matnr in s_matnr. 3118 3119 SELECT mskah~matnr mskah~werks 3120 mskah~sobkz mskah~vbeln 3121 mskah~posnr 3122 kalab as labst kains as insme 3123 kaein as einme kaspe as speme 3124 lgort as lgort 3125 mara~mtart mara~matkl 3126 mara~zwhcode as s_zwhcode 3127 mara~meins 3128 FROM mskah 3129 INNER JOIN mara ON mara~matnr EQ mskah~matnr 3130 INTO CORRESPONDING FIELDS OF table g_ebew3 " E 3131 WHERE werks EQ b_wersks3 AND 3132 lfgja EQ gt_datum-opedatem(4) AND 3133 lfmon EQ gt_datum-opedatem+4(2) AND 3134 ( kalab > 0 OR kains > 0 OR kaein > 0 ) 3135 AND mskah~matnr in s_matnr. 3136 3137 3138 PERFORM set_100 USING in_datum. 3139 PERFORM set_200 USING in_datum. 3140 PERFORM set_300 USING in_datum. 3141 ENDFORM. 3142 3143 3144 3145 *&---------------------------------------------------------------------* 3146 *& Form HAVE_DATA 3147 *&---------------------------------------------------------------------* 3148 *& text 选择屏弹框 3149 *&---------------------------------------------------------------------* 3150 *& --> HAVE_DATA 3151 *&---------------------------------------------------------------------* 3152 FORM HAVE_DATA CHANGING in_return. 3153 DATA: G_RETURN TYPE C . 3154 3155 CALL FUNCTION 'POPUP_TO_CONFIRM' 3156 EXPORTING 3157 * TITLEBAR = '是需要这几个月资料明细' 3158 * DIAGNOSE_OBJECT = ' ' 3159 TEXT_QUESTION = '明细是否需要下载Web或本端档案' 3160 * TEXT_BUTTON_1 = 'Ja'(001) 3161 ICON_BUTTON_1 = '下载' 3162 * TEXT_BUTTON_2 = 'Nein'(002) 3163 ICON_BUTTON_2 = '不需要下载 ' 3164 DEFAULT_BUTTON = '1' 3165 DISPLAY_CANCEL_BUTTON = 'X' 3166 * USERDEFINED_F1_HELP = ' ' 3167 START_COLUMN = 25 3168 START_ROW = 6 3169 * POPUP_TYPE = 3170 * IV_QUICKINFO_BUTTON_1 = ' ' 3171 * IV_QUICKINFO_BUTTON_2 = ' ' 3172 IMPORTING 3173 ANSWER = G_RETURN 3174 * TABLES 3175 * PARAMETER = 3176 EXCEPTIONS 3177 TEXT_NOT_FOUND = 1 3178 OTHERS = 2 . 3179 IF G_RETURN EQ 'A'. 3180 stop. 3181 ENDIF. 3182 in_return = G_RETURN. 3183 ENDFORM. 3184 3185 *&---------------------------------------------------------------------* 3186 *& Form SET_PERIOD1 3187 *&---------------------------------------------------------------------* 3188 *& text 3189 *&---------------------------------------------------------------------* 3190 *& --> p1 text 3191 *& <-- p2 text 3192 *&---------------------------------------------------------------------* 3193 FORM SET_PERIOD1 . 3194 DATA:l_tdate LIKE sy-datum, 3195 l_months TYPE i, 3196 lv_date2 TYPE i, 3197 l_seqno LIKE gt_period-seqno. 3198 3199 *-->获取选择屏期间获取最后一天 3200 DATA: L_Start TYPE SY-DATUM. 3201 3202 L_Start = P_Start+0(4) && P_Start+5(2) && '01'. 3203 L_FIYEAR = P_FIYEAR+0(4) && P_FIYEAR+5(2) && '01'. 3204 3205 PERFORM set_date USING L_Start L_FIYEAR 3206 CHANGING lv_date2." 计算两端时间相差 个月 3207 3208 CLEAR:l_seqno. 3209 lv_date2 = lv_date2 + 1. 3210 DO lv_date2 TIMES. 3211 add 1 TO l_seqno. 3212 PERFORM get_first_few_months 3213 USING L_FIYEAR l_months 3214 CHANGING l_tdate. " 获取前几个月的日期 3215 l_sdate = l_tdate(6) && '01'. " 第一天 3216 3217 PERFORM get_lastdate_of_month 3218 USING l_sdate " 日期最后一天 3219 CHANGING l_tdate. 3220 MOVE:l_tdate TO gt_period2-datum, 3221 l_seqno TO gt_period2-seqno, 3222 l_sdate TO gt_period2-sdate, 3223 l_tdate TO gt_period2-tdate. 3224 CONCATENATE l_tdate(4) '/' l_tdate+4(2) INTO gt_period2-ptext. 3225 CONCATENATE 'M' gt_period2-ptext 3226 INTO gt_period2-ptext SEPARATED BY space. 3227 APPEND gt_period2. CLEAR: gt_period2. 3228 l_months = l_months + 1. 3229 ENDDO. 3230 3231 gt_period[] = gt_period1[] = gt_period3[] = gt_period2[]. 3232 ENDFORM. 3233 3234 *&---------------------------------------------------------------------* 3235 *& Form MAIL_DETAIL 3236 *&---------------------------------------------------------------------* 3237 *& text 明细发 mail 3238 *&---------------------------------------------------------------------* 3239 *& --> p1 text 3240 *& <-- p2 text 3241 *&---------------------------------------------------------------------* 3242 FORM MAIL_DETAIL USING in_datum. 3243 DATA: l_title TYPE so_obj_des, 3244 l_file_name(50) TYPE c. 3245 3246 PERFORM detail_data_1. 3247 PERFORM detail_data_2. 3248 PERFORM detail_data_3. 3249 *---> 信件主旨 3250 CONCATENATE p_title in_datum(6) '期明细' INTO l_title. 3251 l_file_name = l_title. 3252 3253 PERFORM send_mail2 TABLES s_addr 3254 USING l_title l_file_name in_datum. 3255 3256 3257 ENDFORM. 3258 3259 *&---------------------------------------------------------------------* 3260 *& Form DETAIL_DATA_1 3261 *&---------------------------------------------------------------------* 3262 *& text 3263 *&---------------------------------------------------------------------* 3264 *& --> p1 text 3265 *& <-- p2 text 3266 *&---------------------------------------------------------------------* 3267 FORM DETAIL_DATA_1 . 3268 CLEAR: g_datel_1. 3269 DATA: l_line TYPE string. 3270 DATA:lv_text1(50), 3271 lv_text2(50), 3272 lv_text3(50), 3273 lv_text4(50), 3274 lv_text5(50). 3275 3276 *--> column header 3277 CONCATENATE '存储地点' '工厂' '物料类型' '物料群组' '料号' 3278 '物料说明' '存储位置说明' '储格' '未限制' '未限制值' '特别库存' 3279 '品质检验中' '限制使用库存' '值已限制' '已冻结' '冻结库存值' '退货' 3280 '冻结退货值' 'MRP控制员' '评估GR冻结库存' '已评估的收货冻结库存' 3281 '特殊库存号码' '单位' '币别' '销售库存' '评估库存' 3282 INTO l_line SEPARATED BY gc_tab. 3283 *--> 斷行 3284 CONCATENATE g_datel_1 l_line gc_crlf INTO g_datel_1. 3285 LOOP AT gt_mb52_1 WHERE 3286 ( labst > 0 OR insme > 0 OR retme > 0 OR speme > 0 OR einme > 0 ). 3287 3288 lv_text1 = gt_mb52_1-lgort . 3289 lv_text2 = gt_mb52_1-werks . 3290 lv_text3 = gt_mb52_1-mtart . 3291 lv_text4 = gt_mb52_1-matkl . 3292 lv_text5 = gt_mb52_1-matnr . 3293 3294 CONCATENATE lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3295 INTO l_line SEPARATED BY gc_tab. 3296 3297 lv_text1 = gt_mb52_1-maktx . 3298 lv_text2 = gt_mb52_1-lgobe . 3299 lv_text3 = gt_mb52_1-lgpbe . 3300 lv_text4 = gt_mb52_1-labst . 3301 lv_text5 = gt_mb52_1-salk3 . 3302 3303 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3304 INTO l_line SEPARATED BY gc_tab. 3305 3306 lv_text1 = gt_mb52_1-sobkz . 3307 lv_text2 = gt_mb52_1-insme . 3308 lv_text3 = gt_mb52_1-einme . 3309 lv_text4 = gt_mb52_1-salk3_1 . 3310 lv_text5 = gt_mb52_1-speme . 3311 3312 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3313 INTO l_line SEPARATED BY gc_tab. 3314 3315 lv_text1 = gt_mb52_1-salk3_2. 3316 lv_text2 = gt_mb52_1-retme. 3317 lv_text3 = gt_mb52_1-salk3_3. 3318 lv_text4 = gt_mb52_1-dispo. 3319 lv_text5 = gt_mb52_1-salk3_4. 3320 3321 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3322 INTO l_line SEPARATED BY gc_tab. 3323 3324 lv_text1 = gt_mb52_1-bwesb . 3325 lv_text2 = gt_mb52_1-ssnum . 3326 lv_text3 = gt_mb52_1-meins . 3327 lv_text4 = gt_mb52_1-waers . 3328 lv_text5 = gt_mb52_1-lbkum_e . 3329 3330 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3331 INTO l_line SEPARATED BY gc_tab. 3332 3333 lv_text1 = gt_mb52_1-lbkum_m . 3334 * lv_text2 = gt_mb52_1-price . 3335 * lv_text3 = gt_mb52_1-stprs . 3336 3337 CONCATENATE l_line lv_text1 "lv_text2 lv_text3 3338 INTO l_line SEPARATED BY gc_tab. 3339 * --> 斷行 3340 CONCATENATE g_datel_1 l_line gc_crlf INTO g_datel_1. 3341 ENDLOOP. 3342 3343 ENDFORM. 3344 3345 *&---------------------------------------------------------------------* 3346 *& Form DETAIL_DATA_2 3347 *&---------------------------------------------------------------------* 3348 *& text 3349 *&---------------------------------------------------------------------* 3350 *& --> p1 text 3351 *& <-- p2 text 3352 *&---------------------------------------------------------------------* 3353 FORM DETAIL_DATA_2 . 3354 CLEAR: g_datel_2. 3355 DATA: l_line TYPE string. 3356 DATA:lv_text1(50), 3357 lv_text2(50), 3358 lv_text3(50), 3359 lv_text4(50), 3360 lv_text5(50), 3361 lv_text6(50). 3362 3363 *--> column header 3364 CONCATENATE '存储地点II' '呆滞期' '工厂' '物料类型' '物料群组' '料号' 3365 '物料说明' '存储地点' '储格地点说明' '储格' '值未限制' '特别库存' '限制使用库存' 3366 '值已限制' '已冻结' '冻结库存值' '退货' '冻结退货值' '评估GR冻结库存' 3367 '已评估的收货冻结库存' '特殊库存号码' 'DF存储位置等级' '单位' '币别' 3368 '未限制' '品质检验中' 'MRP控制员' '未限制值 + 品质检验中' '单价' '金额' 3369 "'异动平均价格' '标准价格' 3370 INTO l_line SEPARATED BY gc_tab. 3371 *--> 斷行 3372 CONCATENATE g_datel_2 l_line gc_crlf INTO g_datel_2. 3373 3374 LOOP AT gt_mb52_2 WHERE labst_insme > 0. 3375 3376 lv_text1 = gt_mb52_2-lgort2. 3377 lv_text2 = gt_mb52_2-text. 3378 lv_text3 = gt_mb52_2-werks . 3379 lv_text4 = gt_mb52_2-mtart . 3380 lv_text5 = gt_mb52_2-matkl . 3381 3382 3383 CONCATENATE lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3384 INTO l_line SEPARATED BY gc_tab. 3385 3386 lv_text1 = gt_mb52_2-matnr. 3387 lv_text2 = gt_mb52_2-maktx . 3388 lv_text3 = gt_mb52_2-lgort . 3389 lv_text4 = gt_mb52_2-lgobe . 3390 lv_text5 = gt_mb52_2-lgpbe . 3391 3392 lv_text6 = gt_mb52_2-salk3 . 3393 3394 CONCATENATE l_line lv_text1 lv_text2 lv_text3 3395 lv_text4 lv_text5 lv_text6 3396 INTO l_line SEPARATED BY gc_tab. 3397 3398 lv_text1 = gt_mb52_2-sobkz . 3399 lv_text2 = gt_mb52_2-einme . 3400 lv_text3 = gt_mb52_2-salk3_1 . 3401 lv_text4 = gt_mb52_2-speme . 3402 lv_text5 = gt_mb52_2-salk3_2 . 3403 3404 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3405 INTO l_line SEPARATED BY gc_tab. 3406 3407 lv_text1 = gt_mb52_2-retme . 3408 lv_text2 = gt_mb52_2-salk3_3 . 3409 lv_text3 = gt_mb52_2-salk3_4 . 3410 lv_text4 = gt_mb52_2-bwesb . 3411 lv_text5 = gt_mb52_2-ssnum . 3412 3413 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3414 INTO l_line SEPARATED BY gc_tab. 3415 3416 lv_text1 = gt_mb52_2-lvorm . 3417 lv_text2 = gt_mb52_2-meins . 3418 lv_text3 = gt_mb52_2-waers . 3419 lv_text4 = gt_mb52_2-labst . 3420 lv_text5 = gt_mb52_2-insme . 3421 3422 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3423 INTO l_line SEPARATED BY gc_tab. 3424 3425 lv_text1 = gt_mb52_2-dispo . 3426 lv_text2 = gt_mb52_2-labst_insme . 3427 lv_text3 = gt_mb52_2-price. 3428 lv_text4 = gt_mb52_2-hsl. 3429 * lv_text5 = gt_mb52_2-price1. 3430 3431 * lv_text6 = gt_mb52_2-stprs. 3432 3433 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 3434 "lv_text5 lv_text6 3435 INTO l_line SEPARATED BY gc_tab. 3436 * --> 斷行 3437 CONCATENATE g_datel_2 l_line gc_crlf INTO g_datel_2. 3438 ENDLOOP. 3439 ENDFORM. 3440 3441 *&---------------------------------------------------------------------* 3442 *& Form DETAIL_DATA_3 3443 *&---------------------------------------------------------------------* 3444 *& text 3445 *&---------------------------------------------------------------------* 3446 *& --> p1 text 3447 *& <-- p2 text 3448 *&---------------------------------------------------------------------* 3449 FORM DETAIL_DATA_3 . 3450 CLEAR: g_datel_3. 3451 DATA: l_line TYPE string. 3452 DATA:lv_text1(50), 3453 lv_text2(50), 3454 lv_text3(50), 3455 lv_text4(50), 3456 lv_text5(50), 3457 lv_text6(50). 3458 3459 *--> column header 3460 CONCATENATE 'WH CODE & MBS库存' '工厂' '物料类型' '物料群组' '料号' 'MBS库存' 'WH CODE' 3461 '物料说明' '存储地点' '储格地点说明' '储格' '未限制' '值未限制' '特别库存' '品质检验中' 3462 '限制使用库存' '值已限制' '已冻结' '冻结库存值' '退货' '冻结退货值' 'MRP控制员' '评估GR冻结库存' 3463 '已评估的收货冻结库存' '特殊库存号码' '单位' '币别' "'异动平均价格' '标准价格' 3464 INTO l_line SEPARATED BY gc_tab. 3465 *--> 斷行 3466 CONCATENATE g_datel_3 l_line gc_crlf INTO g_datel_3. 3467 3468 LOOP AT gt_mb52_3 WHERE 3469 ( labst > 0 OR insme > 0 OR retme > 0 3470 OR speme > 0 OR einme > 0 ). 3471 3472 lv_text1 = gt_mb52_3-zwhcode. 3473 lv_text2 = gt_mb52_3-werks. 3474 lv_text3 = gt_mb52_3-mtart . 3475 lv_text4 = gt_mb52_3-matkl . 3476 lv_text5 = gt_mb52_3-matnr . 3477 3478 3479 CONCATENATE lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3480 INTO l_line SEPARATED BY gc_tab. 3481 3482 lv_text1 = gt_mb52_3-mb_zwhcode. 3483 lv_text2 = gt_mb52_3-s_zwhcode. 3484 lv_text3 = gt_mb52_3-maktx . 3485 lv_text4 = gt_mb52_3-lgort . 3486 lv_text5 = gt_mb52_3-lgobe . 3487 3488 3489 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3490 INTO l_line SEPARATED BY gc_tab. 3491 3492 lv_text1 = gt_mb52_3-lgpbe . 3493 lv_text2 = gt_mb52_3-labst . 3494 lv_text3 = gt_mb52_3-salk3. 3495 lv_text4 = gt_mb52_3-sobkz . 3496 lv_text5 = gt_mb52_3-insme . 3497 3498 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3499 INTO l_line SEPARATED BY gc_tab. 3500 3501 lv_text1 = gt_mb52_3-einme . 3502 lv_text2 = gt_mb52_3-salk3_1 . 3503 lv_text3 = gt_mb52_3-speme . 3504 lv_text4 = gt_mb52_3-salk3_2 . 3505 lv_text5 = gt_mb52_3-retme. 3506 3507 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3508 INTO l_line SEPARATED BY gc_tab. 3509 3510 lv_text1 = gt_mb52_3-salk3_3 . 3511 lv_text2 = gt_mb52_3-dispo. 3512 lv_text3 = gt_mb52_3-salk3_4 . 3513 lv_text4 = gt_mb52_3-bwesb. 3514 lv_text5 = gt_mb52_3-ssnum . 3515 3516 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 lv_text5 3517 INTO l_line SEPARATED BY gc_tab. 3518 3519 lv_text1 = gt_mb52_3-meins . 3520 lv_text2 = gt_mb52_3-waers . 3521 * lv_text3 = gt_mb52_3-price. 3522 * lv_text4 = gt_mb52_3-stprs. 3523 3524 CONCATENATE l_line lv_text1 lv_text2 lv_text3 lv_text4 3525 INTO l_line SEPARATED BY gc_tab. 3526 * --> 斷行 3527 CONCATENATE g_datel_3 l_line gc_crlf INTO g_datel_3. 3528 ENDLOOP. 3529 ENDFORM. 3530 3531 FORM send_mail2 TABLES lt_mail_addr STRUCTURE s_addr 3532 USING in_subject in_filename in_datum. 3533 TYPES: BEGIN OF bin_file, 3534 name TYPE string, 3535 size TYPE i, 3536 data TYPE solix_tab, 3537 END OF bin_file. 3538 3539 DATA:name1 TYPE string, 3540 name2 TYPE string, 3541 name3 TYPE string. 3542 3543 DATA: wa_bindata TYPE bin_file, 3544 it_bindata TYPE standard TABLE OF bin_file. 3545 3546 DATA: lv1_xstring TYPE xstring, 3547 lv2_xstring TYPE xstring, 3548 lv3_xstring TYPE xstring. 3549 3550 DATA: l_send_request TYPE REF TO cl_bcs, 3551 l_zip TYPE REF TO cl_abap_zip, 3552 l_sender TYPE REF TO cl_sapuser_bcs, 3553 l_recipient TYPE REF TO cl_cam_address_bcs, 3554 l_body_text TYPE bcsy_text, 3555 l_obj_len TYPE so_obj_len, 3556 l_subject TYPE so_obj_des, 3557 l_exception TYPE REF TO cx_bcs, 3558 l_message TYPE string, 3559 l_content TYPE solix_tab, 3560 l_html_xstr TYPE xstring, 3561 l_zip_xstr TYPE xstring, 3562 l_len TYPE i, 3563 l_document TYPE REF TO cl_document_bcs. 3564 3565 DATA: l_c_detal_1 TYPE solix_tab, 3566 l_c_detal_2 TYPE solix_tab, 3567 l_c_detal_3 TYPE solix_tab, 3568 l_detal_1 TYPE so_obj_len, 3569 l_detal_2 TYPE so_obj_len, 3570 l_detal_3 TYPE so_obj_len, 3571 l_filename_detal_1 TYPE sood-objdes, 3572 l_filename_detal_2 TYPE sood-objdes, 3573 l_filename_detal_3 TYPE sood-objdes. 3574 3575 * -------------------------------------------------------------- 3576 * convert the text string into UTF-16LE binary data including 3577 * byte-order-mark. Mircosoft Excel prefers these settings 3578 * all this is done by new class cl_bcs_convert (see note 1151257) 3579 3580 CONCATENATE in_filename '_100_' sy-datum INTO l_filename_detal_1. 3581 3582 TRY. 3583 cl_bcs_convert=>string_to_solix( 3584 EXPORTING 3585 iv_string = g_datel_1 3586 iv_codepage = '4103' "suitable for MS Excel, leave empty 3587 iv_add_bom = 'X' "for other doc types 3588 IMPORTING 3589 et_solix = l_c_detal_1 3590 ev_size = l_detal_1 ). 3591 CATCH cx_bcs. 3592 MESSAGE e445(so). 3593 ENDTRY. 3594 3595 CONCATENATE in_filename '_200_' sy-datum INTO l_filename_detal_2. 3596 3597 TRY. 3598 cl_bcs_convert=>string_to_solix( 3599 EXPORTING 3600 iv_string = g_datel_2 3601 iv_codepage = '4103' "suitable for MS Excel, leave empty 3602 iv_add_bom = 'X' "for other doc types 3603 IMPORTING 3604 et_solix = l_c_detal_2 3605 ev_size = l_detal_2 ). 3606 CATCH cx_bcs. 3607 MESSAGE e445(so). 3608 ENDTRY. 3609 3610 CONCATENATE in_filename '_300_' sy-datum INTO l_filename_detal_3. 3611 3612 TRY. 3613 cl_bcs_convert=>string_to_solix( 3614 EXPORTING 3615 iv_string = g_datel_3 3616 iv_codepage = '4103' "suitable for MS Excel, leave empty 3617 iv_add_bom = 'X' "for other doc types 3618 IMPORTING 3619 et_solix = l_c_detal_3 3620 ev_size = l_detal_3 ). 3621 CATCH cx_bcs. 3622 MESSAGE e445(so). 3623 ENDTRY. 3624 3625 wa_bindata-data = l_c_detal_1. 3626 wa_bindata-size = l_detal_1. 3627 * wa_bindata-name = 'aa.xls'. 3628 APPEND wa_bindata TO it_bindata. 3629 3630 CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' 3631 EXPORTING 3632 input_length = wa_bindata-size 3633 IMPORTING 3634 buffer = lv1_xstring 3635 TABLES 3636 binary_tab = wa_bindata-data. 3637 3638 wa_bindata-data = l_c_detal_2. 3639 wa_bindata-size = l_detal_2. 3640 * wa_bindata-name = 'aa.xls'. 3641 APPEND wa_bindata TO it_bindata. 3642 3643 CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' 3644 EXPORTING 3645 input_length = wa_bindata-size 3646 IMPORTING 3647 buffer = lv2_xstring 3648 TABLES 3649 binary_tab = wa_bindata-data. 3650 3651 wa_bindata-data = l_c_detal_3. 3652 wa_bindata-size = l_detal_3. 3653 * wa_bindata-name = 'aa.xls'. 3654 APPEND wa_bindata TO it_bindata. 3655 3656 CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' 3657 EXPORTING 3658 input_length = wa_bindata-size 3659 IMPORTING 3660 buffer = lv3_xstring 3661 TABLES 3662 binary_tab = wa_bindata-data. 3663 3664 TRY. 3665 l_send_request = cl_bcs=>create_persistent( ). 3666 l_subject = in_subject. 3667 APPEND: 3668 '<HTML><BODY>' TO l_body_text, 3669 'Hello, everyone!,' TO l_body_text, 3670 '<p>This mail system is automatically issued,</br> ' TO l_body_text, 3671 '<B> jingyinghuiyi</B>' TO l_body_text, 3672 'detailed information for reference,</br>' TO l_body_text, 3673 ' disturb you, please understand.' TO l_body_text, 3674 '<p> Thank you!.' TO l_body_text, 3675 '</BODY><HTML>' TO l_body_text. 3676 l_document = cl_document_bcs=>create_document( 3677 i_type = 'HTM' 3678 i_text = l_body_text 3679 i_subject = l_subject 3680 ). 3681 3682 CREATE OBJECT l_zip. 3683 3684 CONCATENATE in_datum(6) '_jingyi_100_Detail.xls' INTO name1. 3685 CONCATENATE in_datum(6) '_jingyi_200_Detail.xls' INTO name2. 3686 CONCATENATE in_datum(6) '_jingyi_300_Detail.xls' INTO name3. 3687 3688 3689 CALL METHOD l_zip->add 3690 EXPORTING 3691 name = name1 3692 content = lv1_xstring."l_html_xstr. 3693 3694 CALL METHOD l_zip->add 3695 EXPORTING 3696 name = name2 3697 content = lv2_xstring. 3698 3699 CALL METHOD l_zip->add 3700 EXPORTING 3701 name = name3 3702 content = lv3_xstring. 3703 3704 CALL METHOD l_zip->save 3705 RECEIVING 3706 zip = l_zip_xstr. 3707 3708 CALL METHOD cl_bcs_convert=>xstring_to_solix 3709 EXPORTING 3710 iv_xstring = l_zip_xstr "lv_xstring 3711 RECEIVING 3712 et_solix = l_content. 3713 3714 l_obj_len = XSTRLEN( l_zip_xstr ) ."lv_xstring ). 3715 3716 CALL METHOD l_document->add_attachment 3717 EXPORTING 3718 i_attachment_size = l_obj_len 3719 i_attachment_type = 'ZIP' 3720 i_attachment_subject = l_subject 3721 i_att_content_hex = l_content. 3722 l_send_request->set_document( l_document ). 3723 l_sender = cl_sapuser_bcs=>create( sy-uname ). 3724 LOOP AT s_addr. 3725 l_recipient = cl_cam_address_bcs=>create_internet_address( s_addr-low ). 3726 CALL METHOD l_send_request->add_recipient 3727 EXPORTING 3728 i_recipient = l_recipient. 3729 ENDLOOP. 3730 CALL METHOD l_send_request->set_send_immediately( 'X' ). 3731 CALL METHOD l_send_request->send( 3732 EXPORTING 3733 i_with_error_screen = 'X' 3734 ). 3735 COMMIT WORK. 3736 CATCH cx_bcs INTO l_exception. 3737 l_message = l_exception->get_text( ). 3738 MESSAGE l_message TYPE 'E'. 3739 ENDTRY. 3740 ENDFORM.