‎2008 Feb 02 9:06 AM
HI All.
I M TRYING TO GETabsent data in in internal table IT_ATTEN e.g field REST_HOLIDAY , LWP,AL ETC .
BUT NOT ABLE TO GET .PLZ HELP ME IN EXTRACTING DATA INTO internal table IT_ATTEN .
THANKS .
FORM GET_WORK_SCHEDULE1 .
G_BEGDA = BEG_DATE .
G_ENDDA = END_DATE .
LOOP AT IT_PA0001 INTO WA_PA0001.
initailize leave type variable
CLEAR IT_PERNR.
SR_NO = SR_NO + 1.
REST_HOLIDAY = 0.
ACT_WORK_DAY = 0.
LWP = 0.
AEL = 0.
CL = 0.
XL = 0.
EL = 0.
AL = 0.
CO = 0.
EML = 0.
RL = 0.
ML = 0.
POD = 0.
SL = 0.
SPL = 0.
POW = 0.
A = 0.
NA = 0.
END********************
WA_PERNR-PERNR = WA_pa0001-PERNR.
WA_PERNR-ERROR = ' '.
APPEND WA_PERNR TO IT_PERNR.
Get work schedule for each employee.
CALL FUNCTION 'HR_PERSON_READ_WORK_SCHEDULE'
EXPORTING
BEGIN_DATE = G_BEGDA
END_DATE = G_ENDDA
GROUPING_DWS =
GROUPING_ATTENDENCE =
GROUPING_SUBSTITUTE =
READ_FROM_DATABASE = ' '
IM_READ_NO_LOCKED_RECORDS =
TABLES
PERNR_TAB = IT_PERNR
PSP = IT_OUT
DAY_PSP = IT_DUMMY
EXCEPTIONS
ERROR_IN_BUILD_PSP = 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.
Display work schedule date wise
LOOP AT IT_OUT INTO WA_OUT.
*****To Mark the Dates "N/A" Before Joining Date of Employee*****
IF WA_OUT-ACTIV = 'X'.
Week off's
IF WA_OUT-TPKLA = 1.
DISP1 = 'W/O'.
DISP2 = 'W/O'.
REST_HOLIDAY = REST_HOLIDAY + 1.
CASE WA_OUT-AWART.
WHEN 'ALWP'.
DISP1 = 'LWP'.
DISP2 = 'LWP'.
LWP = LWP + 1.
REST_HOLIDAY = REST_HOLIDAY - 1.
WHEN 'UABS'.
DISP1 = 'A'.
DISP2 = 'A'.
A = A + 1.
REST_HOLIDAY = REST_HOLIDAY - 1.
ENDCASE.
IF DISP1 = 'W/O' AND DISP2 = 'W/O'.
PERFORM CHECK_POW.
ENDIF.
ELSEIF WA_OUT-FTKLA = 1.
public holiday
DISP1 = 'PH'.
DISP2 = 'PH'.
REST_HOLIDAY = REST_HOLIDAY + 1.
CASE WA_OUT-AWART.
WHEN 'ALWP'.
DISP1 = 'LWP'.
DISP2 = 'LWP'.
LWP = LWP + 1.
REST_HOLIDAY = REST_HOLIDAY - 1.
WHEN 'UABS'.
DISP1 = 'A'.
DISP2 = 'A'.
A = A + 1.
REST_HOLIDAY = REST_HOLIDAY - 1.
ENDCASE.
ELSE.
other absense.
CASE WA_OUT-AWART.
WHEN 'ALWP'.
DISP1 = 'LWP'.
DISP2 = 'LWP'.
LWP = LWP + 1.
WHEN 'HAEL'.
DISP1 = 'AEL'.
DISP2 = 'AEL'.
AEL = AEL + 1.
WHEN 'HCSL'.
DISP1 = 'CL'.
DISP2 = 'CL'.
CL = CL + 1.
WHEN 'HEOL'.
DISP1 = 'XL'.
DISP2 = 'XL'.
XL = XL + 1.
WHEN 'HERL'.
DISP1 = 'EL'.
DISP2 = 'EL'.
EL = EL + 1.
WHEN 'HMAL'.
DISP1 = 'AL'.
DISP2 = 'AL'.
AL = AL + 1.
WHEN 'HMCO'.
DISP1 = 'CO'.
DISP2 = 'CO'.
CO = CO + 1.
WHEN 'HMLE'.
DISP1 = 'EML'.
DISP2 = 'EML'.
EML = EML + 1.
WHEN 'HMRL'.
DISP1 = 'RL'.
DISP2 = 'RL'.
RL = RL + 1.
WHEN 'HMTL'.
DISP1 = 'ML'.
DISP2 = 'ML'.
ML = ML + 1.
WHEN 'HPOD'.
DISP1 = 'POD'.
DISP2 = 'POD'.
POD = POD + 1.
WHEN 'HSKL'.
DISP1 = 'SL'.
DISP2 = 'SL'.
SL = SL + 1.
WHEN 'HSPL'.
DISP1 = 'SPL'.
DISP2 = 'SPL'.
SPL = SPL + 1.
WHEN 'UABS'.
DISP1 = 'A'.
DISP2 = 'A'.
A = A + 1.
WHEN 'ODDT'.
DISP1 = 'ODD'.
DISP2 = 'ODD'.
ACT_WORK_DAY = ACT_WORK_DAY + 1.
WHEN 'ODFT'.
DISP1 = 'ODF'.
DISP2 = 'ODF'.
ACT_WORK_DAY = ACT_WORK_DAY + 1.
WHEN 'ODLT'.
DISP1 = 'ODL'.
DISP2 = 'ODL'.
ACT_WORK_DAY = ACT_WORK_DAY + 1.
WHEN OTHERS.
DISP1 = 'P'.
DISP2 = 'P'.
ACT_WORK_DAY = ACT_WORK_DAY + 1.
ENDCASE.
ENDIF.
IF WA_OUT-TPKLA = 0 .
DISP1 = 'OFF' .
DISP2 = 'OFF'.
OFF = OFF + 1 .
ENDIF .
if working hours is less than 8 hrs
IF WA_OUT-DAUER NE 8 OR WA_OUT-DAUER NE 0.
LOOP AT IT_DUMMY INTO WA_DUMMY WHERE DATUM EQ WA_OUT-DATUM.
IF WA_DUMMY-BEGZT = WA_OUT-BEGZT.
CASE WA_DUMMY-AWART.
WHEN 'ALWP'.
DISP1 = 'LWP'.
LWP = LWP + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HAEL'.
DISP1 = 'AEL'.
AEL = AEL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HCSL'.
DISP1 = 'CL'.
CL = CL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HEOL'.
DISP1 = 'XL'.
XL = XL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HERL'.
DISP1 = 'EL'.
EL = EL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMAL'.
DISP1 = 'AL'.
AL = AL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMCO'.
DISP1 = 'CO'.
CO = CO + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMLE'.
DISP1 = 'EML'.
EML = EML + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMRL'.
DISP1 = 'RL'.
RL = RL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMTL'.
DISP1 = 'ML'.
ML = ML + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HPOD'.
DISP1 = 'POD'.
POD = POD + '0.25' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.25'.
WHEN 'HSKL'.
DISP1 = 'SL'.
SL = SL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HSPL'.
DISP1 = 'SPL'.
SPL = SPL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'UABS'.
DISP1 = 'A'.
A = A + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'ODDT'.
DISP1 = 'ODD'.
WHEN 'ODFT'.
DISP1 = 'ODF'.
WHEN 'ODLT'.
DISP1 = 'ODL'.
ENDCASE.
ELSEIF WA_DUMMY-ENDZT = WA_OUT-ENDZT.
CASE WA_DUMMY-AWART.
WHEN 'ALWP'.
DISP2 = 'LWP'.
LWP = LWP + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HAEL'.
DISP2 = 'AEL'.
AEL = AEL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HCSL'.
DISP2 = 'CL'.
CL = CL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HEOL'.
DISP2 = 'XL'.
XL = XL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HERL'.
DISP2 = 'EL'.
EL = EL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMAL'.
DISP2 = 'AL'.
AL = AL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMCO'.
DISP2 = 'CO'.
CO = CO + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMLE'.
DISP2 = 'EML'.
EML = EML + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMRL'.
DISP2 = 'RL'.
RL = RL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HMTL'.
DISP2 = 'ML'.
ML = ML + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HPOD'.
DISP2 = 'POD'.
POD = POD + '0.25' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.25'.
WHEN 'HSKL'.
DISP2 = 'SL'.
SL = SL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'HSPL'.
DISP2 = 'SPL'.
SPL = SPL + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'UABS'.
DISP2 = 'A'.
A = A + '0.5' .
ACT_WORK_DAY = ACT_WORK_DAY - '0.5'.
WHEN 'ODDT'.
DISP2 = 'ODD'.
WHEN 'ODFT'.
DISP2 = 'ODF'.
WHEN 'ODLT'.
DISP2 = 'ODL'.
ENDCASE.
ENDIF.
************************Changes By Vinay To Comment condition 25.05.2007 Start*****************
ENDLOOP.
ENDIF.
*****To Mark the Dates "N/A" Before Joining Date of Employee*****
ELSE.
DISP1 = 'N/A'.
DISP2 = 'N/A'.
NA = NA + 1.
ENDIF.
ENDLOOP.
""" I M NOT ABLE 2 GET REST_HOLIDAY,LWP HERE"
loop at it_atten into wa_atten .
WA_ATTEN-PERNR = WA_PERNR .
WA_ATTEN-REST_HOLIDAY = REST_HOLIDAY.
WA_ATTEN-ACT_WORK_DAY = ACT_WORK_DAY .
WA_ATTEN-LWP = LWP .
WA_ATTEN-AEL = AEL .
WA_ATTEN-CL = CL .
WA_ATTEN-XL = XL .
WA_ATTEN-EL = EL.
WA_ATTEN-AL = AL.
WA_ATTEN-CO = CO.
WA_ATTEN-EML = EML .
WA_ATTEN-RL = RL.
WA_ATTEN-ML = ML.
WA_ATTEN-POD = POD.
WA_ATTEN-SL = SL.
WA_ATTEN-SPL = SPL.
WA_ATTEN-POW = POW.
WA_ATTEN-A = A.
WA_ATTEN-WPD = WPD .
WA_ATTEN-NA = NA .
WA_ATTEN-OFF = OFF .
WA_ATTEN-SH = SH .
WA_ATTEN-NUM_DAY1 = NUM_DAY1 .
APPEND WA_ATTEN TO IT_ATTEN .
endloop .
CLEAR WA_ATTEN .
CLEAR: IT_OUT,
WA_OUT,
IT_DUMMY,
WA_DUMMY.
*****perform total1 .
endloop .
CLEAR : WA_ATTEN , WA_ATTEN. .
‎2008 Feb 04 8:06 PM
sorry, for me too little information and too much coding ...
‎2008 Feb 05 6:43 AM
include the required field in the select query
narendra