Sample Report 

REPORT RPTTMWBS.

DATA: RGDIR LIKE PC261 OCCURS 0 WITH HEADER LINE.
DATA: EVPDIR LIKE RGDIR OCCURS 0 WITH HEADER LINE.
DATA: PREVIOUS_RESULTS LIKE RGDIR OCCURS 0 WITH HEADER LINE.
DATA: CALCD TYPE C.
DATA: IN_ENTRY LIKE PC261.
DATA: OUT_ENTRY LIKE PC261.

INCLUDE RPCCCD09.

    CALL FUNCTION 'CU_READ_RGDIR'
      EXPORTING
         PERSNR = '00021218'
         TABLES IN_RGDIR = RGDIR
      EXCEPTIONS
         NO_RECORD_FOUND = 1
         OTHERS = 2.
* Read RGDIR

  CALL FUNCTION 'CD_EVALUATION_PERIODS'
     EXPORTING
         BONUS_DATE = '00000000'
         INPER_MODIF = '02'
         INPER = '199603'
         PAY_TYPE = CD_C-REGULAR
         PAY_IDENT = ' '
     TABLES
         RGDIR = RGDIR
         EVPDIR = EVPDIR
*        IABKRS =
     EXCEPTIONS
         NO_RECORD_FOUND = 1
         OTHERS = 2.
* output:
* 00006
* 00007
* 00008

* Read regular payroll results for January
* A results (original result plus retroactive calculations)
* and P results

  LOOP AT EVPDIR WHERE SRTZA = CD_C-ACTUAL.

* Only current results (00007 and 00008)

  CALL FUNCTION 'CD_RETROCALC_PERIOD'
     EXPORTING
        ENTRY = EVPDIR
     IMPORTING
        CALCD = CALCD
     EXCEPTIONS
        OTHERS = 1.
* Determine, whether original result
        CHECK CALCD = ' '.
* Special processing: Only the original period
* March is processed (seqnr 00008).
        IN_ENTRY = EVPDIR.

  CALL FUNCTION 'CD_READ_PREVIOUS_ORIGINAL'
     EXPORTING
        IN_RECORD = IN_ENTRY
     IMPORTING
        OUT_RECORD = OUT_ENTRY
     TABLES
        RGDIR = RGDIR
     EXCEPTIONS
        OTHERS = 1.

* out_entry now contains the previous results
* Input 00008 ----> Output 00006
  ENDLOOP.

  LOOP AT EVPDIR WHERE SRTZA = CD_C-ACTUAL.
     IN_ENTRY = EVPDIR.

  CALL FUNCTION 'CD_READ_PREVIOUS'
     EXPORTING
        IN_RECORD = IN_ENTRY
     TABLES
        RGDIR = RGDIR
        OUT_RGDIR = PREVIOUS_RESULTS
     EXCEPTIONS
        NO_RECORD_FOUND = 1
        OTHERS = 2.

* Input 00007 ---> 00006
* Input 00008 ---> no record found

* Output structure is a table, since there can be

*
several previous results: for example, if legal person
* changes, and is retroactively deleted
ENDLOOP.