08-10-2007 6:44 AM
Hi all,
I have to get all the wagetypes maintained in infotype 0008. I am using a function CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL'
Please see my code below:-
DATA : WAGETYPES1 LIKE BAPIP0008P OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF IT_0001 OCCURS 0,
PERNR LIKE PA9003-PERNR,
BASIC2 LIKE T510-BETRG,
DERNES LIKE T510-BETRG,
STAG LIKE T510-BETRG,
PERSPAY LIKE T510-BETRG,
NPA LIKE T510-BETRG,
WAL LIKE T510-BETRG,
REQDATE TYPE DATS,
ZZDATE1 TYPE ZZDATE1,
WAGETYPE LIKE BAPIP0008P-WAGETYPE,
END OF IT_0001.
LOOP AT IT_0001.
DO 20 TIMES VARYING WAGETYPES-E_LGA FROM P0008-LGA01 NEXT P0008-LGA02
VARYING WAGETYPES-E_BET FROM P0008-BET01 NEXT P0008-BET02.
IF WAGETYPES-E_LGA = '1001'.
SELECT SINGLE BETRG FROM T510 INTO T510-BETRG WHERE LGART = '1001' AND
TRFAR = P0008-TRFAR
AND TRFGB = P0008-TRFGB
AND TRFGR = P0008-TRFGR
AND TRFST = P0008-TRFST.
IF SY-SUBRC = 0.
IT_0001-BASIC2 = T510-BETRG.
ENDIF.
ENDIF.
ENDDO.
CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL'
EXPORTING
EMPLOYEENUMBER = PERNR-PERNR
SUBTYPE = P0008-SUBTY
OBJECTID = P0008-OBJPS
LOCKINDICATOR = P0008-SPRPS
VALIDITYBEGIN = DATE1
VALIDITYEND = '99991231'
RECORDNUMBER = P0008-SEQNR
TABLES
WAGETYPES = WAGETYPES1.
LOOP AT WAGETYPES1 .
IT1-AMOUNT = WAGETYPES1-AMOUNT.
IT1-NAMEOFWAGETYPE = WAGETYPES1-NAMEOFWAGETYPE.
APPEND IT1.
DELETE IT1 WHERE AMOUNT = '0.0000'.
ENDLOOP.
Now, is teher any other way to get these values without using function 'BAPI_BASICPAY_GETDETAIL' and structure BAPIP0008P ???? Please advice..its urgent!!!!
Thanks & Regards,
Preeti
08-10-2007 7:20 AM
08-23-2007 4:52 AM
Please use RP_FILL_WAGE_TYPE_TABLE FM .It will update all the values in the respective Infotype .
usage is like this .
CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
EXPORTING
APPLI = 'E'
BEGDA = P0008-BEGDA
ENDDA = P0008-ENDDA
INFTY = '0008'
PERNR = P0008-PERNR
SUBTY = P0008-SUBTY
TABLES
PPBWLA = PPBWLA
EXCEPTIONS
ERROR_AT_INDIRECT_EVALUATION = 1
OTHERS = 2