DATA
: LS_RETURN
TYPE BAPIRETURN1
,
LT_BASICPAYTAB TYPE TABLE OF BAPIPAKEY ,
LS_BASICPAYTAB LIKE LINE OF LT_BASICPAYTAB ,
LT_WAGETYPES TYPE TABLE OF BAPIP0008P ,
LS_WAGETYPES LIKE LINE OF LT_WAGETYPES .
CLEAR :LS_RETURN ,LT_BASICPAYTAB ,LS_BASICPAYTAB ,LT_WAGETYPES ,LS_WAGETYPES .
CASE P_INT .
WHEN 2 .
CALL FUNCTION 'BAPI_BASICPAY_GETLIST'
EXPORTING
EMPLOYEENUMBER = PERNR -PERNR
TIMEINTERVALLOW = PYENDDA
TIMEINTERVALHIGH = PYENDDA
IMPORTING
RETURN = LS_RETURN
TABLES
BASICPAYEMPKEY = LT_BASICPAYTAB .
IF LS_RETURN IS INITIAL .
*
LOOP AT LT_BASICPAYTAB INTO LS_BASICPAYTAB .
CLEAR : LS_RETURN .
CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL'
EXPORTING
EMPLOYEENUMBER = LS_BASICPAYTAB -EMPLOYEENO
SUBTYPE = LS_BASICPAYTAB -SUBTYPE
OBJECTID = LS_BASICPAYTAB -OBJECTID
LOCKINDICATOR = LS_BASICPAYTAB -LOCKINDIC
VALIDITYBEGIN = LS_BASICPAYTAB -VALIDBEGIN
VALIDITYEND = LS_BASICPAYTAB -VALIDEND
RECORDNUMBER = LS_BASICPAYTAB -RECORDNR
IMPORTING
RETURN = LS_RETURN
TABLES
WAGETYPES = LT_WAGETYPES .
READ TABLE LT_WAGETYPES INTO LS_WAGETYPES WITH KEY WAGETYPE = L_LGART .
IF SY -SUBRC = 0 .
ADD LS_WAGETYPES -AMOUNT TO <DYN_FIELD> .
ENDIF .
ENDLOOP .
ENDIF .
WHEN 1 .
* overseas allowance
SELECT BETRG
FROM PA0014
INTO <DYN_FIELD>
UP TO 1 ROWS
WHERE PERNR = PERNR -PERNR
AND LGART = L_LGART
AND BEGDA <= PYENDDA
AND ENDDA >= PYENDDA .
ENDSELECT .
WHEN OTHERS .
ENDCASE .
LT_BASICPAYTAB TYPE TABLE OF BAPIPAKEY ,
LS_BASICPAYTAB LIKE LINE OF LT_BASICPAYTAB ,
LT_WAGETYPES TYPE TABLE OF BAPIP0008P ,
LS_WAGETYPES LIKE LINE OF LT_WAGETYPES .
CLEAR :LS_RETURN ,LT_BASICPAYTAB ,LS_BASICPAYTAB ,LT_WAGETYPES ,LS_WAGETYPES .
CASE P_INT .
WHEN 2 .
CALL FUNCTION 'BAPI_BASICPAY_GETLIST'
EXPORTING
EMPLOYEENUMBER = PERNR -PERNR
TIMEINTERVALLOW = PYENDDA
TIMEINTERVALHIGH = PYENDDA
IMPORTING
RETURN = LS_RETURN
TABLES
BASICPAYEMPKEY = LT_BASICPAYTAB .
IF LS_RETURN IS INITIAL .
*
LOOP AT LT_BASICPAYTAB INTO LS_BASICPAYTAB .
CLEAR : LS_RETURN .
CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL'
EXPORTING
EMPLOYEENUMBER = LS_BASICPAYTAB -EMPLOYEENO
SUBTYPE = LS_BASICPAYTAB -SUBTYPE
OBJECTID = LS_BASICPAYTAB -OBJECTID
LOCKINDICATOR = LS_BASICPAYTAB -LOCKINDIC
VALIDITYBEGIN = LS_BASICPAYTAB -VALIDBEGIN
VALIDITYEND = LS_BASICPAYTAB -VALIDEND
RECORDNUMBER = LS_BASICPAYTAB -RECORDNR
IMPORTING
RETURN = LS_RETURN
TABLES
WAGETYPES = LT_WAGETYPES .
READ TABLE LT_WAGETYPES INTO LS_WAGETYPES WITH KEY WAGETYPE = L_LGART .
IF SY -SUBRC = 0 .
ADD LS_WAGETYPES -AMOUNT TO <DYN_FIELD> .
ENDIF .
ENDLOOP .
ENDIF .
WHEN 1 .
* overseas allowance
SELECT BETRG
FROM PA0014
INTO <DYN_FIELD>
UP TO 1 ROWS
WHERE PERNR = PERNR -PERNR
AND LGART = L_LGART
AND BEGDA <= PYENDDA
AND ENDDA >= PYENDDA .
ENDSELECT .
WHEN OTHERS .
ENDCASE .