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.