2017年2月11日 星期六

ABAP/4 : How to trigger REPORT END-OF-PAGE block event (SKIP or RESERVE)

在 ABAP/4 Report 中時常發現報表的 END-OF-PAGE 會被驅動



主要的原因是因為 END-OF-PAGE 一定要在畫面被寫滿時才會被 Trigger,也因此必需要自行對報表的內容填滿每一行。

即 REPORT Y_EX_END_OF_PAGE LINE-COUNT 15(2). 即表示畫面上的 15 行都有要值,扣掉表頭 2 行,表尾 2 行,則總共還要再填滿 11。

因此要達到填滿畫面又不想自行計算還差幾行,可直接在最下面使用 SKIP 15 即可 Trigger END-OF-PAGE. 而 SKIP 即使超過該頁的行數,也不會觸發 NEW-PAGE,因此透過 SKIP 已達到填滿該頁觸發 NEW-PAGE 又不會造成換頁 (如果自行計算 Write : SPACE 則有可能誤判而觸發換頁)


REPORT  Y_EX_END_OF_PAGE LINE-SIZE 64 LINE-COUNT 15(2).

DATA: IT_BKPF LIKE STANDARD TABLE OF BKPF WITH HEADER LINE.

TOP-OF-PAGE.
  WRITE: 1(64) 'TOP-OF-PAGE'.
  ULINE.

END-OF-PAGE.
  ULINE.
  WRITE: 1(64) 'END-OF-PAGE'.

START-OF-SELECTION.

  SELECT * UP TO 5 ROWS INTO CORRESPONDING FIELDS OF TABLE IT_BKPF
    FROM BKPF.

END-OF-SELECTION.

LOOP AT IT_BKPF.
  WRITE:/ IT_BKPF-BELNR.
ENDLOOP.

SKIP 10.

即可觸發該頁的 END-OF-PAGE

另外 SKIP n. 也可改用 RESERVE n LINES.,效果相同均可觸發 END-OF-PAGE.

沒有留言:

張貼留言

How to install & specified python version or distreibtuion package version in google colab

在買了 RTX 3080 要來 挖礦...  嗯~是跑機器學習後,結果發現了 GOOGLE COLAB,其實之前在「GAN 對抗式生成網路」一書就有看到,但資訊人就是什麼都想自己安裝,在本機用 Anaconda + pyCharm 弄了 GPU 環境,結果有天從新竹回家發現家裡沒...