自己的一個ALV隱藏列例子


  1 *&---------------------------------------------------------------------*
  2 *& Report  ZR_FI_01
  3 *&
  4 *&---------------------------------------------------------------------*
  5 *&----------  6 *&
  7 *&---------------------------------------------------------------------*
  8 
  9 REPORT  zr_fi_ma.
 10 
 11 
 12 TABLES: bseg,t001,bkpf ,skat.
 13 
 14 *定義ALV相關變量
 15 
 16 TYPE-POOLS : slis.
 17 DATA: afield TYPE slis_fieldcat_alv.
 18 DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
 19 DATA: fieldcat TYPE slis_t_fieldcat_alv.
 20 DATA: gs_layout TYPE slis_layout_alv.
 21 DATA: g_repid TYPE sy-repid.
 22 DATA: i_layout TYPE slis_layout_alv.
 23 DATA gridlsl TYPE lvc_s_glay.
 24 DATA itab1 LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
 25 *DATA itab2 LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
 26 DATA itab LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
 27 DATA: c1(2) TYPE c VALUE '',c2(2) TYPE c VALUE '',c3(2) TYPE c VALUE '',
 28       c4(4) TYPE c ,c5(2) TYPE c ,c6(2) TYPE c ,c7(20) TYPE c .
 29 *DATA LEN TYPE I.
 30 *定義內表字段
 31 
 32 DATA:BEGIN OF itab_skat OCCURS 0,
 33   txt50 LIKE skat-txt50,
 34   saknr LIKE skat-saknr,
 35   END OF itab_skat.
 36 
 37 DATA:BEGIN OF itab_bkpf OCCURS 0,
 38     bktxt LIKE bkpf-bktxt, "憑證抬頭文本
 39     usnam LIKE bkpf-usnam, "用戶名
 40     budat LIKE bkpf-budat, "過賬日期
 41     belnr LIKE bkpf-belnr, "會計憑證
 42     gjahr LIKE bkpf-gjahr, "會計年度
 43     bukrs LIKE bkpf-bukrs, "代碼公司
 44     monat LIKE bkpf-monat, "會計期間
 45     blart LIKE bkpf-blart,  "憑證類型
 46     bldat LIKE bkpf-bldat,  "憑證日期
 47     numpg LIKE bkpf-numpg,  "頁數
 48     STBLG LIKE BKPF-STBLG,  "沖銷憑證號
 49     WAERS LIKE BKPF-WAERS,  "貨幣
 50     KURSF LIKE BKPF-KURSF,   "匯率
 51     BSTAT LIKE BKPF-BSTAT,   "憑證狀態
 52   END OF itab_bkpf.
 53 
 54 
 55 DATA:BEGIN OF itab_t001 OCCURS 0,
 56   butxt LIKE t001-butxt,  "公司代碼
 57   bukrs LIKE t001-bukrs,  "代碼公司
 58   END OF itab_t001.
 59 
 60 DATA: BEGIN OF wa_alv OCCURS 0,
 61     flag(1) ,
 62     augdt01 LIKE zstr_pz-augdt01,
 63     bukrs LIKE bseg-bukrs,"代碼公司
 64     belnr LIKE bseg-belnr,"會計憑證
 65     gjahr LIKE bseg-gjahr,"會計年度
 66     butxt LIKE t001-butxt,"公司代碼
 67     augdt LIKE bseg-augdt,"清帳日期
 68     hkont LIKE bseg-hkont,"總分類帳帳目
 69     bktxt LIKE bkpf-bktxt,"憑證抬頭文本
 70     buzei LIKE bseg-buzei,"會計憑證中的行項目數
 71     txt50 LIKE skat-txt50,"總賬科目成文本
 72     wrbtr LIKE bseg-wrbtr,"憑證貨幣金額
 73     shkzg LIKE bseg-shkzg,"借方/貸方標識
 74     wrbtr01 LIKE bseg-wrbtr,"憑證貨幣金額
 75     shkzg01 LIKE bseg-shkzg,"借方/貸方標識
 76     usnam LIKE bkpf-usnam,  "用戶名
 77     budat LIKE bkpf-budat,  "過賬日期
 78     blart LIKE bkpf-blart,  "憑證類型
 79     bldat LIKE bkpf-bldat,  "憑證日期
 80     numpg LIKE bkpf-numpg,  "頁數
 81     stblg LIKE bkpf-stblg,  "沖銷憑證號
 82     waers LIKE bkpf-waers,  "貨幣
 83     kursf LIKE bkpf-kursf,   "匯率
 84     bstat LIKE bkpf-bstat.   "憑證狀態
 85 DATA END OF wa_alv.
 86 
 87 DATA wa_alv01 LIKE TABLE OF wa_alv WITH HEADER LINE.
 88 
 89 DATA:BEGIN OF sum_itab OCCURS 0,
 90   belnr  TYPE bseg-belnr,
 91   count01 TYPE bseg-wrbtr,
 92   count02 TYPE bseg-wrbtr.
 93 DATA END OF sum_itab.
 94 *選擇屏幕
 95 SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text.
 96 
 97 SELECT-OPTIONS:     p_bukrs FOR bkpf-bukrs no INTERVALS OBLIGATORY DEFAULT 1000,
 98                     p_belnr FOR bkpf-belnr ,
 99                     p_gjahr FOR bkpf-gjahr no INTERVALS OBLIGATORY DEFAULT SY-DATUM,
100                     p_monat FOR bkpf-monat,
101                     p_usnam FOR bkpf-usnam NO INTERVALS.
102 
103 SELECTION-SCREEN END OF BLOCK blk.
104 
105 INITIALIZATION.
106   g_repid = sy-repid.
107   text = '憑證信息'.
108 
109 START-OF-SELECTION.
110   PERFORM getdata.
111   PERFORM layout_build.
112   PERFORM sub_init_fieldcat.
113   PERFORM sub_init_layout.
114   PERFORM sub_listado.
115 
116 END-OF-SELECTION.
117 
118 *&--------------------------------------------------------------------*
119 *&      Form  getdata
120 *&--------------------------------------------------------------------*
121 *       獲取數據 從數據庫表中選擇相應字段
122 *---------------------------------------------------------------------*
123 *&---------------------------------------------------------------------*
124 
125 FORM getdata ."從數據庫里取數到ALV
126 
127 ****************************************從BKPF中取數據
128   SELECT bktxt usnam budat belnr gjahr bukrs monat blart bldat numpg stblg waers kursf bstat
129   INTO CORRESPONDING FIELDS OF TABLE itab_bkpf
130   FROM bkpf
131   WHERE usnam in p_usnam  AND belnr IN p_belnr AND bukrs in p_bukrs AND monat IN p_monat AND gjahr in p_gjahr.
132    IF SY-SUBRC <> 0.
133     MESSAGE '所找數據不存在,請糾正' TYPE 'I'.
134     stop.
135     RETURN."跳出
136 ENDIF.
137 **********************************從BSEG中取數據
138   IF itab_bkpf[] IS NOT INITIAL.
139     SELECT bukrs belnr gjahr augdt hkont wrbtr shkzg buzei
140   INTO CORRESPONDING FIELDS OF  TABLE wa_alv
141 *    UP TO 100 ROWSC
142    FROM bseg
143    FOR ALL ENTRIES IN itab_bkpf
144    WHERE belnr = itab_bkpf-belnr ."AND gjahr IN p_gjahr and belnr = itab_bkpf-belnr.
145 
146   ENDIF.
147 
148 ***********************把指在BKPF里有的憑證編號取出來
149 LOOP AT ITAB_BKPF.
150  SELECT  SINGLE bukrs belnr gjahr augdt hkont wrbtr shkzg buzei
151   INTO CORRESPONDING FIELDS OF wa_alv
152    FROM bseg
153    WHERE belnr = itab_bkpf-belnr.
154    IF SY-SUBRC <> 0.
155      MOVE-CORRESPONDING itab_bkpf to wa_alv01.
156     APPEND WA_ALV01.
157    ENDIF.
158  ENDLOOP.
159 *************************************從T001中取數據
160   SELECT *
161     INTO CORRESPONDING FIELDS OF TABLE  itab_t001
162     FROM t001 "把數直接放到工作區間里面去,不會放在表頭!
163   WHERE bukrs in p_bukrs.
164 
165 ************從SKAT里取數
166   IF wa_alv[] IS NOT INITIAL.
167     SELECT txt50 saknr
168       INTO CORRESPONDING FIELDS OF TABLE itab_skat
169       FROM skat
170       FOR ALL ENTRIES IN wa_alv
171     WHERE saknr = wa_alv-hkont." AND SPRAS = '1' AND KTOPL = 'INT'.
172   ENDIF.
173 
174 *********************整理alv上要顯示的數據
175   LOOP AT wa_alv.
176 ***********    把借和貸分開
177     CASE wa_alv-shkzg.
178       WHEN 'S'.
179         wa_alv-wrbtr = wa_alv-wrbtr.
180       WHEN 'H'.
181         wa_alv-wrbtr01 = wa_alv-wrbtr.
182         CLEAR wa_alv-wrbtr.
183       WHEN OTHERS.
184     ENDCASE.
185 ************************把BUTXT整理到ALV內表里面
186     READ TABLE itab_t001 WITH KEY bukrs = wa_alv-bukrs.
187     IF sy-subrc EQ 0.
188       MOVE itab_t001-butxt TO wa_alv-butxt.
189     ENDIF.
190 **********************把BKTXT USNAM BUDAT NUMPG整理到ALV內表去
191     READ TABLE itab_bkpf WITH KEY bukrs = wa_alv-bukrs gjahr = wa_alv-gjahr belnr = wa_alv-belnr  .
192     IF sy-subrc EQ 0.
193       MOVE itab_bkpf-bktxt TO wa_alv-bktxt.
194       MOVE itab_bkpf-usnam TO wa_alv-usnam.
195       MOVE itab_bkpf-budat TO wa_alv-budat.
196       MOVE itab_bkpf-numpg TO wa_alv-numpg.
197 
198       MOVE itab_bkpf-blart TO wa_alv-blart.
199       MOVE itab_bkpf-bldat TO wa_alv-bldat.
200       MOVE itab_bkpf-stblg TO wa_alv-stblg.
201       MOVE itab_bkpf-waers TO wa_alv-waers.
202 
203       MOVE itab_bkpf-kursf TO wa_alv-kursf.
204       MOVE itab_bkpf-bstat TO wa_alv-bstat.
205       MOVE itab_bkpf-numpg TO wa_alv-numpg.
206     ENDIF.
207 ************************************* 把TXT50整理到內表去,
208     READ TABLE itab_skat WITH  KEY saknr = wa_alv-hkont.
209     IF sy-subrc EQ 0.
210       MOVE itab_skat-txt50 TO wa_alv-txt50.
211     ENDIF.
212 
213     MODIFY wa_alv.
214   ENDLOOP.
215 
216 **********************把數據轉移到要顯示的ALV屏幕上的內表WA_ALV01上
217   LOOP AT wa_alv.
218     MOVE-CORRESPONDING wa_alv TO wa_alv01.
219     APPEND wa_alv01.
220   ENDLOOP.
221 
222 *******************根據物料編號排序,把相同的物料編號刪除
223   SORT wa_alv01 BY belnr.
224   DELETE ADJACENT DUPLICATES FROM wa_alv01 COMPARING belnr.
225   DELETE WA_ALV01 WHERE BELNR = ''.
226 ENDFORM.                    " GETDATA
227 *&---------------------------------------------------------------------*
228 *&      Form  SUB_INIT_FIELDCAT
229 *&---------------------------------------------------------------------*
230 *       text
231 *----------------------------------------------------------------------*
232 *  -->  p1        text
233 *  <--  p2        text
234 *----------------------------------------------------------------------*
235 FORM layout_build .
236   i_layout-box_fieldname        = 'FLAG'.
237   i_layout-colwidth_optimize    = 'X'. "優化列寬選項是否設置
238   i_layout-zebra                = 'X'.
239   i_layout-detail_initial_lines = 'X'.
240   i_layout-no_vline             = 'X'." layout_build
241 
242 ENDFORM.                    " LAYOUT_BUILD
243 
244 *&---------------------------------------------------------------------*
245 *&      Form  SUB_INIT_FIELDCAT
246 *&---------------------------------------------------------------------*
247 *       text
248 *----------------------------------------------------------------------*
249 FORM sub_init_fieldcat .
250 
251   i_fieldcat-fieldname = 'BUKRS'. "公司代碼
252   i_fieldcat-tabname = 'ITEM'.
253   i_fieldcat-reptext_ddic = '公司代碼'.
254   i_fieldcat-outputlen = 10.
255   i_fieldcat-key = 'X'.
256   i_fieldcat-just = 'C'.
257   APPEND i_fieldcat.
258   CLEAR i_fieldcat.
259 
260   i_fieldcat-fieldname = 'BUTXT'. "公司代碼
261   i_fieldcat-tabname = 'ITEM'.
262   i_fieldcat-reptext_ddic = '核算單位'.
263   i_fieldcat-outputlen = 10.
264   i_fieldcat-key = 'X'.
265 *  i_fieldcat-no_out ='X'.
266   i_fieldcat-just = 'C'.
267   APPEND i_fieldcat.
268   CLEAR i_fieldcat.
269 
270   i_fieldcat-fieldname = 'BELNR'. "會計憑證
271   i_fieldcat-tabname = 'ITEM'.
272   i_fieldcat-reptext_ddic = '憑證編號'.
273   i_fieldcat-outputlen = 12.
274   i_fieldcat-key = 'X'.
275   i_fieldcat-just = 'C'.
276   APPEND i_fieldcat.
277   CLEAR i_fieldcat.
278 
279   i_fieldcat-fieldname = 'GJAHR'.
280   i_fieldcat-tabname = 'ITEM'.
281   i_fieldcat-reptext_ddic = '會計年度'.
282   i_fieldcat-outputlen = 4.
283   i_fieldcat-key = 'X'.
284   i_fieldcat-just = 'C'.
285   APPEND i_fieldcat.
286   CLEAR i_fieldcat.
287 
288   i_fieldcat-fieldname = 'BLART'. "會計憑證
289   i_fieldcat-tabname = 'ITEM'.
290   i_fieldcat-reptext_ddic = '憑證類型'.
291   i_fieldcat-outputlen = 2.
292   i_fieldcat-just = 'C'.
293   APPEND i_fieldcat.
294   CLEAR i_fieldcat.
295 
296   i_fieldcat-fieldname = 'BLDAT'. "會計憑證
297   i_fieldcat-tabname = 'ITEM'.
298   i_fieldcat-reptext_ddic = '憑證日期'.
299   i_fieldcat-outputlen = 8.
300   i_fieldcat-just = 'C'.
301   APPEND i_fieldcat.
302   CLEAR i_fieldcat.
303 
304   i_fieldcat-fieldname = 'BUDAT'. "清單日期
305   i_fieldcat-tabname = 'ITEM'.
306   i_fieldcat-reptext_ddic = '過賬日期'.
307   i_fieldcat-outputlen = 10.
308   i_fieldcat-just = 'C'.
309   APPEND i_fieldcat.
310   CLEAR i_fieldcat.
311 
312   i_fieldcat-fieldname = 'USNAM'. "用戶名
313   i_fieldcat-tabname = 'ITEM'.
314   i_fieldcat-reptext_ddic = ' 制       單'.
315   i_fieldcat-outputlen = 18.
316   i_fieldcat-just = 'C'.
317   APPEND i_fieldcat.
318   CLEAR i_fieldcat.
319 
320   i_fieldcat-fieldname = 'STBLG'.
321   i_fieldcat-tabname = 'ITEM'.
322   i_fieldcat-reptext_ddic = '沖銷憑證號'.
323   i_fieldcat-outputlen = 10.
324   i_fieldcat-just = 'C'.
325   APPEND i_fieldcat.
326   CLEAR i_fieldcat.
327 
328   i_fieldcat-fieldname = 'BKTXT'.
329   i_fieldcat-tabname = 'ITEM'.
330   i_fieldcat-reptext_ddic = '憑證抬頭文本'.
331   i_fieldcat-outputlen = 10.
332   i_fieldcat-just = 'C'.
333   APPEND i_fieldcat.
334   CLEAR i_fieldcat.
335 
336   i_fieldcat-fieldname = 'WAERS'.
337   i_fieldcat-tabname = 'ITEM'.
338   i_fieldcat-reptext_ddic = '貨幣'.
339   i_fieldcat-outputlen = 14.
340   i_fieldcat-just = 'C'.
341   APPEND i_fieldcat.
342   CLEAR i_fieldcat.
343 
344   i_fieldcat-fieldname = 'KURSF'. "用戶名
345   i_fieldcat-tabname = 'ITEM'.
346   i_fieldcat-reptext_ddic = ' 匯率'.
347   i_fieldcat-outputlen = 9.
348   i_fieldcat-just = 'C'.
349   APPEND i_fieldcat.
350   CLEAR i_fieldcat.
351 
352   i_fieldcat-fieldname = 'BSTAT'.
353   i_fieldcat-tabname = 'ITEM'.
354   i_fieldcat-reptext_ddic = '憑證狀態'.
355   i_fieldcat-outputlen = 2.
356   i_fieldcat-just = 'C'.
357   APPEND i_fieldcat.
358   CLEAR i_fieldcat.
359 
360   i_fieldcat-fieldname = 'NUMPG'.
361   i_fieldcat-tabname = 'ITEM'.
362   i_fieldcat-reptext_ddic = '頁數'.
363   i_fieldcat-outputlen = 3.
364   i_fieldcat-just = 'C'.
365   APPEND i_fieldcat.
366   CLEAR i_fieldcat.
367 
368 ENDFORM.                    " SUB_INIT_FIELDCAT
369 *&---------------------------------------------------------------------*
370 *&      Form  SUB_INIT_LAYOUT
371 *&---------------------------------------------------------------------*
372 *       text
373 *----------------------------------------------------------------------*
374 *  -->  p1        text
375 *  <--  p2        text
376 *----------------------------------------------------------------------*
377 FORM sub_init_layout .
378 DATA:num TYPE i VALUE 0.
379 *  DATA: l_output(50).
380 *  i_layout-zebra = 'X'.
381 *  l_output = '會計憑證'.
382 *  i_layout-window_titlebar = l_output.
383 *  i_layout-colwidth_optimize = 'X'.
384 * sort wa_alv by NUMPG.
385 *
386 *read table wa_alv with key NUMPG = '' BINARY SEARCH.
387 
388  LOOP AT wa_alv WHERE NUMPG <> ''. 389    num = 1. 390  ENDLOOP. 391 IF num = 0. 392  LOOP AT i_fieldcat. 393     i_fieldcat-no_out = ''. 394     IF i_fieldcat-fieldname = 'NUMPG' . 395       i_fieldcat-no_out = 'X'. 396  ENDIF. 397  MODIFY i_fieldcat . 398  ENDLOOP. 399 
400 ENDIF. 401 *  CALL METHOD go_grid->set_frontend_fieldcatalog
402 *    EXPORTING
403 *      it_fieldcatalog = gt_fieldcat.
404 *  CALL METHOD go_grid->refresh_table_display    .
405 
406 ENDFORM.                    " SUB_INIT_LAYOUT
407 *&---------------------------------------------------------------------*
408 *&      Form  SUB_LISTADO
409 *&---------------------------------------------------------------------*
410 *       text
411 *----------------------------------------------------------------------*
412 *  -->  p1        text
413 *  <--  p2        text
414 *----------------------------------------------------------------------*
415 FORM sub_listado .
416   g_repid = sy-repid.
417   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
418     EXPORTING
419       i_callback_user_command  = 'USER_COMMAND'
420       i_callback_pf_status_set = 'USER_STATUS'
421       i_callback_program       = g_repid
422       is_layout                = i_layout
423       it_fieldcat              = i_fieldcat[]
424 *     it_events                = i_events[]
425     TABLES
426       t_outtab                 = wa_alv01
427     EXCEPTIONS
428       program_error            = 1
429       OTHERS                   = 2.
430 ENDFORM.                    " SUB_LISTADO
431 
432 *&---------------------------------------------------------------------*
433 *&      Form  user_command
434 *&---------------------------------------------------------------------*
435 *       text
436 *----------------------------------------------------------------------*
437 *      -->R_UCOMM      text
438 *      -->RS_SELFIELD  text
439 *----------------------------------------------------------------------*
440 FORM user_command USING r_ucomm LIKE sy-ucomm
441                         rs_selfield TYPE slis_selfield.
442 
443   DATA: ok_code TYPE sy-ucomm.
444   ok_code = sy-ucomm.
445   CLEAR sy-ucomm.
446 
447   CASE ok_code.
448     WHEN 'BACK'.
449       LEAVE TO SCREEN 0.
450     WHEN 'EXIT'.
451       EXIT.
452     WHEN 'COPY'.
453 *      LEAVE TO SCREEN 0.
454       PERFORM dayin.
455     WHEN 'SAVE'.
456       LEAVE TO SCREEN 0.
457     WHEN OTHERS.
458       EXIT.
459   ENDCASE.
460 
461 
462 ENDFORM.                    " USER_COMMAND
463 *&---------------------------------------------------------------------*
464 *&      Form  USER_STATUS
465 *&---------------------------------------------------------------------*
466 *       text
467 *----------------------------------------------------------------------*
468 *  -->  p1        text
469 *  <--  p2        text
470 *----------------------------------------------------------------------*
471 FORM user_status USING extab TYPE slis_t_extab.
472   SET PF-STATUS 'FIPZ_STU01'.
473   SET TITLEBAR 'FIPZ_TIT'.
474 ENDFORM.                    "user_status
475 *&---------------------------------------------------------------------*
476 *&      Form  DAYIN
477 *&---------------------------------------------------------------------*
478 *       text
479 *----------------------------------------------------------------------*
480 *  -->  p1        text
481 *  <--  p2        text
482 *----------------------------------------------------------------------*
483 FORM dayin .
484 
485   PERFORM get_data.
486   DATA fm_name TYPE rs38l_fnam.
487   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
488     EXPORTING
489       formname           = 'ZFI_PZ002'"寫自己設計的smartforms名字.自動返回對應的function module函數代碼
490     IMPORTING
491       fm_name            = fm_name        "這里系統返回的是函數代碼(/1BCDWB/SF00000003)
492     EXCEPTIONS
493       no_form            = 1
494       no_function_module = 2
495       OTHERS             = 3.
496   IF sy-subrc <> 0.
497     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
498             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
499   ENDIF.
500 
501   CALL FUNCTION fm_name     "調用SMARTFORM,很顯然這里是以FUNCTION MOUDULE的方式和SMARTFORM交互.
502       EXPORTING
503        user_settings = 'X'
504       TABLES                                "填寫SF調用的表和程序的表對應
505         itab1 = itab1             "前一個是sf 后面是程序的.
506         itab =  itab            "把ITAB內表的內容傳遞到SMARTFORM中去
507        EXCEPTIONS
508           formatting_error = 1
509           internal_error = 2
510           send_error = 3
511           user_canceled = 4
512          OTHERS = 5.
513 
514 ENDFORM.                    " DAYIN
515 *&---------------------------------------------------------------------*
516 *&      Form  GET_DATA
517 *&---------------------------------------------------------------------*
518 *       text
519 *----------------------------------------------------------------------*
520 *  -->  p1        text
521 *  <--  p2        text
522 *----------------------------------------------------------------------*
523 FORM get_data .
524   CLEAR: itab[],itab.
525   CLEAR:itab1[],itab1.
526 *  定義了上面的這兩行,就可以實現多次打印!
527 
528   LOOP AT wa_alv01 WHERE flag = 'X'.
529 
530 *******************************檢驗是否能打印
531    IF wa_alv01-butxt is INITIAL.
532      DATA:ME01(10) TYPE C,
533           ME02(25) TYPE C.
534       ME01 = wa_alv01-BELNR.
535       CONCATENATE '憑證' ME01 '沒有行項目,無法打印' INTO ME02.
536       MESSAGE  ME02 TYPE 'I'.
537     ENDIF.
538 
539 *************************把需要的數據傳到與SF相連額橋梁表
540     LOOP AT wa_alv WHERE belnr = wa_alv01-belnr.
541 
542 *******************    時間格式轉換
543       PERFORM time_data.
544 
545       MOVE-CORRESPONDING wa_alv TO itab1.
546       APPEND itab1.
547       SORT itab1 BY bktxt belnr wrbtr wrbtr01 .
548 
549     ENDLOOP.
550 
551   ENDLOOP.
552 
553   DELETE ADJACENT DUPLICATES FROM itab1 COMPARING ALL FIELDS."刪除重復行。
554 
555   LOOP AT itab1.
556     MOVE itab1-butxt      TO itab-butxt.
557 *    MOVE ITAB-AUGDT+0(4) TO ITAB1-YYYY.
558 *    MOVE ITAB-AUGDT+4(2) TO ITAB1-MM.
559 *    MOVE ITAB-AUGDT+6(2) TO ITAB1-DD.
560     MOVE itab1-belnr      TO itab-belnr.
561     MOVE itab1-usnam      TO itab-usnam.
562     APPEND itab.
563     DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS."*   = COLLECT ITAB1.
564     MOVE itab1-belnr   TO  sum_itab-belnr.
565     sum_itab-count01 =  itab1-wrbtr.
566     sum_itab-count02 =  itab1-wrbtr01 .
567     COLLECT sum_itab.
568     CLEAR  sum_itab.
569 
570   ENDLOOP.
571 
572   LOOP AT itab.
573     READ TABLE sum_itab WITH KEY belnr = itab-belnr.
574     IF sy-subrc = 0 .
575       itab-count01  =  sum_itab-count01 .
576       itab-count02  =  sum_itab-count02.
577 
578     ENDIF.
579     LOOP AT itab1 WHERE belnr = itab1-belnr AND butxt = itab1-butxt AND usnam = itab1-usnam .
580       IF itab1-augdt01 <> ''.
581         MOVE itab1-augdt01 TO itab-augdt01.
582       ENDIF.
583     ENDLOOP.
584     MODIFY itab[] FROM itab.
585   ENDLOOP.
586   SORT itab1 BY wrbtr01.
587 
588 
589 
590 
591 ENDFORM.                    " GET_DATA
592 *&---------------------------------------------------------------------*
593 *&      Form  TIME_DATA
594 *&---------------------------------------------------------------------*
595 *       text改為需求的日期
596 *----------------------------------------------------------------------*
597 *  -->  p1        text
598 *  <--  p2        text
599 *----------------------------------------------------------------------*
600 FORM time_data .
601   IF wa_alv-budat NE 0.
602     MOVE wa_alv-budat+0(4) TO c4.
603     MOVE wa_alv-budat+4(2) TO c5.
604     MOVE wa_alv-budat+6(2) TO c6.
605     CONCATENATE c4 c1 c5 c2 c6 c3 INTO wa_alv-augdt01.
606     MODIFY wa_alv[] FROM wa_alv.
607   ENDIF.
608 ENDFORM.                    " TIME_DATA

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM