REPORT 
ZR_D200_HRAS111_EMPREPORT.
TABLES PERNR.
INFOTYPES: 0000,0001,0002,0006,0008.
RANGES:R_PERNR FOR PERNR-PERNR,
      
R_INFTY FOR P0008-INFTY.
DATA IT_LOG TYPE PLDOC_KEY_TAB.
DATA WA_LOG TYPE PLDOC_KEY.
DATA IT_INFTY_B TYPE PRELP_TAB.
DATA WA_INFTY_B TYPE PRELP.
DATA IT_INFTY_A TYPE PRELP_TAB.
DATA WA_INFTY_A TYPE PRELP.
DATA IT_FIELDS LIKE HRINFTYLOG_FIELDS
OCCURS 0 WITH HEADER LINE.
DATA:BEGIN OF ITAB OCCURS 0,
     
FNAME(6) TYPE C,
     
OLD(10)  TYPE C,
     
NEW(10)  TYPE C,
     
PERNR TYPE PERNR,
     
NACHN TYPE NACHN,
     
HIRE  TYPE PREL-BEGDA,
     
WERKS TYPE P0001-WERKS,
     
BTRTL TYPE P0001-BTRTL,
     
STRAS TYPE P0006-STRAS,
     
ORT01 TYPE P0006-ORT01,
     
ORT02 TYPE P0006-ORT02,
     
PSTLZ TYPE P0006-PSTLZ,
     
TRFAR TYPE P0008-TRFAR,
     
TRFGB TYPE P0008-TRFGB,
     
TRFGR TYPE P0008-TRFGR,
     
ANSAL TYPE P0008-ANSAL,
    
END OF ITAB.
DATA: D_PERNR TYPE PERNR,
     
D_NACHN TYPE NACHN,
     
D_HIRE  TYPE PREL-BEGDA,
     
D_WERKS TYPE P0001-WERKS,
     
D_BTRTL TYPE P0001-BTRTL,
     
D_STRAS TYPE P0006-STRAS,
     
D_ORT01 TYPE P0006-ORT01,
     
D_ORT02 TYPE P0006-ORT02,
     
D_PSTLZ TYPE P0006-PSTLZ,
     
D_TRFAR TYPE P0008-TRFAR,
     
D_TRFGB TYPE P0008-TRFGB,
     
D_TRFGR TYPE P0008-TRFGR,
     
D_ANSAL TYPE P0008-ANSAL.
DATA IT_HIFI TYPE PHIFI OCCURS 0 WITH
HEADER LINE.
DATA IT_UNAME TYPE UNAME_RANGE OCCURS 0
WITH HEADER LINE.
PARAMETER P_FNAME TYPE STRING
OBLIGATORY.
AT SELECTION-SCREEN ON
VALUE-REQUEST FOR P_FNAME.
CALL METHOD CL_RSAN_UT_FILES=>F4
 
EXPORTING
   
I_APPLSERV              = SPACE
   
I_TITLE                 = 'CHOOSE
FILE FOR DOWN LOAD'
   
I_GUI_EXTENSION         = '.TXT'
   
I_GUI_EXT_FILTER        = SPACE
*   
I_GUI_INITIAL_DIRECTORY =
*   
I_APPLSERV_LOGICAL      = 'X'
*   
I_APPLSERV_AL11         = 'X'
* 
IMPORTING
*   
E_CANCELED              =
*   
E_LOGICAL_FILE          =
*   
E_AL11_CHOSEN           =
 
CHANGING
   
C_FILE_NAME             = P_FNAME
* 
EXCEPTIONS
*   
FAILED                  = 1
*   
others                  = 2
       
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY
NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3
SY-MSGV4.
ENDIF.
START-OF-SELECTION.
GET PERNR.
 
RP-READ-ALL-TIME-ITY PN-BEGDA PN-ENDDA.
 
CALL FUNCTION 'RP_HIRE_FIRE'
  
EXPORTING
    
BEG             = PN-BEGDA
    
END             = PN-ENDDA
  
IMPORTING
*    
FIRE_DATE       =
    
HIRE_DATE       = D_HIRE
   
TABLES
     
PPHIFI          = IT_HIFI
     
PP0000          = P0000
     
PP0001          = P0001
            .
 
REFRESH R_PERNR[].
 
R_PERNR-SIGN = 'I'.
 
R_PERNR-OPTION = 'EQ'.
 
R_PERNR-LOW = PERNR-PERNR.
 
APPEND R_PERNR.
 
REFRESH R_INFTY.
 
R_INFTY-SIGN = 'I'.
 
R_INFTY-OPTION = 'EQ'.
 
R_INFTY-LOW = '0000'.
 
APPEND R_INFTY.
 
CLEAR R_INFTY.
 
R_INFTY-SIGN = 'I'.
 
R_INFTY-OPTION = 'EQ'.
 
R_INFTY-LOW = '0001'.
 
APPEND R_INFTY.
 
CLEAR R_INFTY.
 
R_INFTY-SIGN = 'I'.
 
R_INFTY-OPTION = 'EQ'.
 
R_INFTY-LOW = '0006'.
 
APPEND R_INFTY.
 
CLEAR R_INFTY.
 
R_INFTY-SIGN = 'I'.
 
R_INFTY-OPTION = 'EQ'.
 
R_INFTY-LOW = '0008'.
 
APPEND R_INFTY.
 
CLEAR R_INFTY.
 
IT_UNAME-SIGN = 'I'.
 
IT_UNAME-OPTION = 'EQ'.
 
IT_UNAME-LOW = 'SAPUSER'.
 
APPEND IT_UNAME.
 
CLEAR IT_UNAME.
 
CALL FUNCTION 'HR_INFOTYPE_LOG_GET_LIST'
  
EXPORTING
    
TCLAS                    = 'A'
    
BEGDA                    =
PN-BEGDA
    
ENDDA                    =
PN-ENDDA
*  
AUTH_CHECK               = 'X'
*  
USE_ARCHIVE              = ' '
* IMPORTING
*  
SUBRC                    =
  
TABLES
    
PERNR_TAB                = R_PERNR[]
    
INFTY_TAB                =
R_INFTY[]
    
INFTY_LOGG_KEY_TAB       = IT_LOG
*  
DATUM_TAB                =
  
UNAME_TAB                =
IT_UNAME
            .
 
LOOP AT IT_LOG INTO WA_LOG.
   
CALL FUNCTION 'HR_INFOTYPE_LOG_GET_DETAIL'
     
EXPORTING
       
LOGGED_INFOTYPE        = WA_LOG
*  
AUTH_CHECK             = 'X'
*  
USE_ARCHIVE            = ' '
* IMPORTING
*  
SUBRC                  =
     
TABLES
       
INFTY_TAB_BEFORE       =
IT_INFTY_B
       
INFTY_TAB_AFTER        = IT_INFTY_A
       
FIELDS                 = IT_FIELDS
              .
   
MOVE:       PERNR-PERNR TO
D_PERNR,
                P0002-NACHN TO D_NACHN,
                P0001-WERKS TO D_WERKS,
                P0001-BTRTL TO D_BTRTL,
                P0006-STRAS TO D_STRAS,
                P0006-ORT01 TO D_ORT01,
                P0006-ORT02 TO D_ORT02,
                P0006-PSTLZ TO D_PSTLZ,
                P0008-TRFAR TO D_TRFAR,
                P0008-TRFGB TO D_TRFGB,
                P0008-TRFGR TO D_TRFGR,
                P0008-ANSAL TO D_ANSAL.
   
LOOP AT IT_FIELDS.
     
IF IT_FIELDS-FNAME = 'PERSK' OR IT_FIELDS-FNAME = 'STAT2'
          OR IT_FIELDS-FNAME = 'ORT01' OR
IT_FIELDS-FNAME = 'TRFGB'.
       
IF IT_FIELDS-OLDDT NE IT_FIELDS-NEWDT.
 
        MOVE: IT_FIELDS-FNAME TO
ITAB-FNAME,
                IT_FIELDS-OLDDT TO ITAB-OLD,
                IT_FIELDS-NEWDT TO ITAB-NEW,
                D_PERNR TO ITAB-PERNR,
                D_NACHN TO ITAB-NACHN,
                D_HIRE  TO ITAB-HIRE,
    
           D_WERKS TO ITAB-WERKS,
                D_BTRTL TO ITAB-BTRTL,
                D_STRAS TO ITAB-STRAS,
                D_ORT01 TO ITAB-ORT01,
                D_ORT02 TO ITAB-ORT02,
                D_PSTLZ TO ITAB-PSTLZ,
                D_TRFAR TO ITAB-TRFAR,
                D_TRFGB TO ITAB-TRFGB,
                D_TRFGR TO ITAB-TRFGR,
                D_ANSAL TO ITAB-ANSAL.
          APPEND ITAB.
          CLEAR ITAB.
       
ENDIF.
     
ENDIF.
   
ENDLOOP.
 
ENDLOOP.
END-OF-SELECTION.
 CALL METHOD
CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
 
EXPORTING
*   
BIN_FILESIZE              =
   
FILENAME                  =
P_FNAME
   
FILETYPE                  = 'ASC'
   
APPEND                    = SPACE
   
WRITE_FIELD_SEPARATOR     = 'X'
*   
HEADER                    = '00'
*   
TRUNC_TRAILING_BLANKS     = SPACE
*   
WRITE_LF                  = 'X'
*   
COL_SELECT                = SPACE
*   
COL_SELECT_MASK           = SPACE
   
DAT_MODE                  = 'X'
*   
CONFIRM_OVERWRITE         = SPACE
*    NO_AUTH_CHECK             = SPACE
*   
CODEPAGE                  = SPACE
*   
IGNORE_CERR               =
ABAP_TRUE
*   
REPLACEMENT               = '#'
*   
WRITE_BOM                 = SPACE
*   
TRUNC_TRAILING_BLANKS_EOL = 'X'
*   
WK1_N_FORMAT              = SPACE
*   
WK1_N_SIZE                = SPACE
*   
WK1_T_FORMAT              = SPACE
*   
WK1_T_SIZE                = SPACE
* 
IMPORTING
*   
FILELENGTH                =
 
CHANGING
   
DATA_TAB                  = ITAB[]
* 
EXCEPTIONS
*   
FILE_WRITE_ERROR          = 1
*   
NO_BATCH                  = 2
*   
GUI_REFUSE_FILETRANSFER   = 3
*   
INVALID_TYPE              = 4
*   
NO_AUTHORITY              = 5
*   
UNKNOWN_ERROR             = 6
*   
HEADER_NOT_ALLOWED        = 7
*   
SEPARATOR_NOT_ALLOWED     = 8
*   
FILESIZE_NOT_ALLOWED      = 9
*   
HEADER_TOO_LONG           = 10
*   
DP_ERROR_CREATE           = 11
*   
DP_ERROR_SEND             = 12
*   
DP_ERROR_WRITE            = 13
*   
UNKNOWN_DP_ERROR          = 14
*   
ACCESS_DENIED             = 15
*   
DP_OUT_OF_MEMORY          = 16
*   
DISK_FULL                 = 17
*   
DP_TIMEOUT                = 18
*   
FILE_NOT_FOUND            = 19
*   
DATAPROVIDER_EXCEPTION    = 20
*   
CONTROL_FLUSH_ERROR       = 21
*   
NOT_SUPPORTED_BY_GUI      = 22
*   
ERROR_NO_GUI              = 23
*   
others                    = 24
       
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY
NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3
SY-MSGV4.
ENDIF.

