Saturday, March 12, 2016


Uploading using BAPI

TABLES : T510, T511, PA0007.
TYPE-POOLS : SLIS.
TABLES : T7INA5.
TYPES : BEGIN OF TY_0008,
PERNR TYPE BAPIP0008-PERNR,
BEGDA TYPE CHAR10,
TRFAR TYPE BAPIP0008-TRFAR,
TRFGB TYPE BAPIP0008-TRFGB,
TRFGR TYPE BAPIP0008-TRFGR,
TRFST TYPE BAPIP0008-TRFST,
LGA01(4),
BET01(15),
LGA02(4),
BET02(15),
LGA03(4),
BET03(15),
LGA04(4),
BET04(15),
LGA05(4),
BET05(15),
LGA06(4),
BET06(15),
LGA07(4),
BET07(15),
LGA08(4),
BET08(15),
LGA09(4),
BET09(15),
LGA10(4),
BET10(15),
LGA11(4),
BET11(15),
LGA12(4),
BET12(15),
LGA13(4),
BET13(15),
LGA14(4),
BET14(15),
LGA15(4),
BET15(15),
LGA16(4),
BET16(15),
LGA17(4),
BET17(15),
LGA18(4),
BET18(15),
LGA19(4),
BET19(15),
LGA20(4),
BET20(15),

DATE TYPE SY-DATUM,
ERROR,
END OF TY_0008.

DATA : BEGIN OF WAGETYPES,
LGART(4),
BETRG(15),
END OF WAGETYPES.

DATA : BEGIN OF IT_TAB1 OCCURS 0,
PERNR(8),
BEGDA(8),
ENDDA(8),
TRFAR(2),
TRFGB(2),
TRFGR(8),
TRFST(2),
LGART(4),
BETRG TYPE P0008-BET01,
INDVALUAT(1),
ADSUM,
END OF IT_TAB1.

DATA : T_WAGES TYPE TABLE OF BAPIP0008P WITH HEADER LINE.
DATA : RETURN TYPE BAPIRETURN1.
DATA: P0008 TYPE TABLE OF P0008.
DATA : WA_P0008 TYEP P0008.
DATA : P0001 TYPE TABLE OF P0001.
DATA : WA_0001 TYPE P0001.
DATA : WA_T511 TYPE T511.
DATA : IT_T539A TYPE TABLE OF T539A WITH HEADER LINE.
DATA : BEGDA TYPE SY-DATUM.


TYPES : BEGIN OF TY_LOG,
PERNR(8),
INFTY(04),
BEGDA TYPE SY-DATUM,
ENDDA TYPE SY-DATUM,
TYPE TYPE CAHR1,
ID TYPE BAPIRETURN1-ID,
NUMBER TYPE BAPIRETURN1-NUMBER,
MESSAGE TYPE BAPIRETURN1-MESSAGE,
LINE_COLOR(4) TYPE C,
END OF TY_LOG.

DATA : IT-LOG TYPE TABLE OF TY_LOG.
DATA : WA_LOG TYPE TY_LOG.

DATA : IT_0008 TYPE TABLE OF TY_0008.
DATA : WA_0008 LIKE LINE OF IT_0008.
DATA : T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
G_REPID LIKE SY-REPID VALUE SY-REPID,
T_LISTEVENTS TYPE SLIS_T_EVENT,
T_LISTHEADER TYPE SLIS_T_LISTHEADER,
WA_LISTEVENTS TYPE SLIS_ALV_EVENT,
D_TABIX LIKE SY-TABIX,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_LISTHEADER TYPE SLIS_LISTHEADER.


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITILE TEXT-010.
PARAMETERS : WRK_PATH TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST OR WRK_PATH.

CALL FUNCTION 'F4_FILENAME'.
EXPORTING
PROGRAM_NAME  = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME  = WRK_PATH.

START-OF-SELECTION.
PERFORM UPLOAD_FILE.
PERFORM PROCESS_DATA.
PERFORM UPLOAD_DATA.
PERFORM SHOW_ERROR_FILE.

END-OF-SELECTION.


FORM UPLOAD_FILE.
DATA : L_FILE TYPE STRING.
L_FILE  = WRK_PATH.
CALL METHOD CL_FUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = L_FILE
FILETYPE  = 'ASC'
HAS_FIELD_SEPARATOR  = '#'
CHANGING
DATA_TAB   = IT_0008.

ENDFORM.




FORM PROCESS_DATA.
DATA : P_TRFKZ TYPE T503-TRFKZ.
DATA : P_LGMST TYPE LGMST.
DATA : RTALGRP TYPE T7INA3-ALGRP,
L_TABIX TYPE SY-TABIX,
MM(02) TYPE N,
DD(02) TYPE N,
YYYY TYPE GJAHR.
DATA : BAPIRETURN TYPE BAPIRETURN.


LOOP AT IT_0008 INTO WA_0008.
L_TABIX = SY-TABIX.

CALL FUNCTION 'BAPI_EMPLOYEE_CHECKEXISTENCE'
EXPORTING
NUMBER = WA+_0008-PERNR
IMPORTING
RETURN = BAPIRETURN.

IF BAPIRETURN IS INITIAL.

SPLIT WA_0008-BEGDA AT '.' INTO DD MM YYYY.
PERFORM CONVERT_MMDDYYYY USING DD MM YYYY.
CONCATENATE YYYY MM DD INTO WA_0008-DATE.
CONCATENATE DD MM YYYY INTO WA_0008-BEGDA SEPARATED BY '.'.
MODIFY IT_0008 FROM WA_0008 INDEX L_TABIX.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL  = WA_0008-BEGDA
IMPORTING
DATE_INTERNAL  = BEGDA
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS  = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

DO 21 TIMES VARYING WAGETYPES-LGART FROM WA_0008-LGA01 NEXT WA_0008-LGA02
VARYING WAGETYPES-BETRG FROM WA_0008-BET01 NEXT WA_0008-BET02.

IF WAGETYPES-LGART IS INITIAL.
CONTINUE.
ELSE.
CLEAR IT_TAB1.
CLEAR WA_T511.

IT_TAB1-PERNR  = WA_0008-PERNR.
IT_TAB1-BEGDA  = BEGDA.
IT_TAB1-ENDDA = '99991231'.
IT_TAB1-TRFAR = WA_0008-TRFAR.
IT_TAB1-TRFGB = WA_0008-TRFGB.
IT_TAB1-TRFGR = WA_0008-TRFGR.
IT_TAB1-TRFST = WA_0008-TRFST.
IT_TAB1-LGART = WAGETYPES-LGART.
IT_tAB1-BETRG = WAGETYPES-BETRG.
APPEND IT_TAB1.
ENDIF.
ENDDO.

LOOP AT IT_T539A.
CLEAR BEGDA.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL   = WA_0008-BEGDA
IMPORTING
DATE_INTERNAL  = BEGDA
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID  = 1
OTHERS     = 2.
IF SY-SUBRC <> 0.
ENDIF.

READ TABLE IT_TAB1 WITH KEY PERNR = WA_0008-PERNR
BEGDA  = BEGDA
LGART = IT_T539A-LGART.

IF SY-SUBRC NE 0.


Thursday, December 17, 2015

Smartforms Report



*&---------------------------------------------------------------------*
*& Program Name       :
*& Module Name        :
*& Sub-Module         :
*& Functional Analyst :
*& Programmer         :
*& Create Date        :
*& Program Type       :
*& Description        : Driver program
*& Transaction Code   :
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
*                    Modification Log                                  *
*----------------------------------------------------------------------*
* Date          Modified by            CTS number     Comments         *
*----------------------------------------------------------------------*
REPORT zpm0001
     NO STANDARD PAGE HEADING LINE-SIZE 255.
*----------------------------------------------------------------------*
*          T-Y-P-E P-O-O-L-S
*----------------------------------------------------------------------*
TYPE-POOLS: slis, sscr.
*----------------------------------------------------------------------*
*          T-A-B-L-E-S
*----------------------------------------------------------------------*
TABLES: qmel. "Quality Notification

DATA : it_tab1 TYPE TABLE OF tline,
       it_tab2  TYPE TABLE OF tline,
       it_tab3  TYPE TABLE OF tline.

DATA : lv_qmnum TYPE qmel-qmnum,
       lv_id     TYPE thead-tdid,
       lv_object TYPE thead-tdobject,
       lv_qname  TYPE thead-tdname.
*----------------------------------------------------------------------*
*          V-A-R-I-A-B-L-E-S
*----------------------------------------------------------------------*
DATA:
  gv_time      TYPE  maueh,
  gv_part      TYPE  z_part,
  gv_stopage   TYPE  zstopage,
  gv_ploss     TYPE  z_ploss,
  gv_impact    TYPE  z_impact,
  gv_action1   TYPE  z_action,
  gv_action2   TYPE  z_action,
  gv_action3   TYPE  z_action,
  gv_action4   TYPE  z_action,
  gv_action5   TYPE  z_action,
  gv_resp1     TYPE  z_resp,
  gv_resp2     TYPE  z_resp,
  gv_resp3     TYPE  z_resp,
  gv_resp4     TYPE  z_resp,
  gv_resp5     TYPE  z_resp,
  gv_due1      TYPE  z_duedate,
  gv_due2      TYPE  z_duedate,
  gv_due3      TYPE  z_duedate,
  gv_due4      TYPE  z_duedate,
  gv_due5      TYPE  z_duedate,
  gv_status1   TYPE  z_status,
  gv_status2   TYPE  z_status,
  gv_status3   TYPE  z_status,
  gv_status4   TYPE  z_status,
  gv_status5   TYPE  z_status,
  gv_comments1 TYPE  z_comments,
  gv_comments2 TYPE  z_comments,
  gv_comments3 TYPE  z_comments,
  gv_comments4 TYPE  z_comments,
  gv_comments5 TYPE  z_comments,
  gv_text1     TYPE  string,
  gv_text2     TYPE  string,
  gv_text3     TYPE  string.
*----------------------------------------------------------------------*
*          I-N-T-E-R-N-A-L T-A-B-L-E-S
*----------------------------------------------------------------------*
DATA: it_qmel TYPE STANDARD TABLE OF qmel.
DATA : gt_otf TYPE ssfcrescl, "Smart Forms: Return value at end of form printing
         gt_otf_f TYPE tsfotf.
*----------------------------------------------------------------------*
*          W-O-R-K A-R-E-A
*----------------------------------------------------------------------*
DATA: wa_qmel TYPE qmel.
*----------------------------------------------------------------------*
*          S-E-L-E-C-T-I-O-N S-C-R-E-E-N
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_qmnum TYPE qmel-qmnum OBLIGATORY. " VALUE CHECK,
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
*          I-N-I-T-I-A-L-I-Z-A-T-I-O-N
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
*                S-T-A-R-T O-F S-E-L-E-C-T-I-O-N
*----------------------------------------------------------------------*
START-OF-SELECTION.
*--get data
  PERFORM f_getdata.
*--output (calling smartform)
  PERFORM f_output.

END-OF-SELECTION.

FORM initilization.
  DATA: selopt   TYPE sscr_ass,
        opt_list TYPE sscr_opt_list,
        restrict TYPE sscr_restrict.

  CLEAR opt_list.
  opt_list-name = 'BT'.
  opt_list-options-bt    = 'X'.
  APPEND opt_list TO restrict-opt_list_tab.

  CLEAR selopt.
  selopt-kind            = 'S'.
  selopt-name            = 'S_DATE'.
  selopt-sg_main         = 'I'.
  selopt-sg_addy         = ' '.
  selopt-op_main         = 'BT'.
  selopt-op_addy         = 'BT'.
  APPEND selopt  TO restrict-ass_tab.

  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
    EXPORTING
      restriction            = restrict
    EXCEPTIONS
      too_late               = 1
      repeated               = 2
      selopt_without_options = 5
      selopt_without_signs   = 6
      invalid_sign           = 7
      empty_option_list      = 9
      invalid_kind           = 10
      repeated_kind_a        = 11
      OTHERS                 = 12.
ENDFORM.



FORM f_getdata.

  CLEAR : it_qmel,
          wa_qmel.

  SELECT * FROM qmel INTO TABLE it_qmel
                     WHERE qmnum = p_qmnum.
*--looping it_qmel
  CLEAR: gv_time,gv_part,gv_stopage,gv_ploss,gv_impact,
         gv_action1,gv_action2,gv_action3,gv_action4,gv_action5,
         gv_resp1,gv_resp2,gv_resp3,gv_resp4,gv_resp5,
         gv_due1,gv_due2,gv_due3,gv_due4,gv_due5,
         gv_status1,gv_status2,gv_status3,gv_status4,gv_status5,
         gv_comments1,gv_comments2,gv_comments3,gv_comments4,gv_comments5.




  LOOP AT it_qmel INTO wa_qmel.

    IF sy-subrc = 0.
      gv_time           = wa_qmel-zztime.
      gv_part           = wa_qmel-zzpart.
      gv_stopage        = wa_qmel-zzstopage.
      gv_ploss          = wa_qmel-zzploss.
      gv_impact         = wa_qmel-zzimpact.
      gv_action1        = wa_qmel-zzaction1.
      gv_action2        = wa_qmel-zzaction2.
      gv_action3        = wa_qmel-zzaction3.
      gv_action4        = wa_qmel-zzaction4.
      gv_action5        = wa_qmel-zzaction5.
      gv_resp1          = wa_qmel-zzresp1.
      gv_resp2          = wa_qmel-zzresp2.
      gv_resp3          = wa_qmel-zzresp3.
      gv_resp4          = wa_qmel-zzresp4.
      gv_resp5          = wa_qmel-zzresp5.
      gv_due1           = wa_qmel-zzdue1.
      gv_due2           = wa_qmel-zzdue2.
      gv_due3           = wa_qmel-zzdue3.
      gv_due4           = wa_qmel-zzdue4.
      gv_due5           = wa_qmel-zzdue5.
      gv_status1        = wa_qmel-zzstatus1.
      gv_status2        = wa_qmel-zzstatus2.
      gv_status3        = wa_qmel-zzstatus3.
      gv_status4        = wa_qmel-zzstatus4.
      gv_status5        = wa_qmel-zzstatus5.
      gv_comments1      = wa_qmel-zzcomments1.
      gv_comments2      = wa_qmel-zzcomments2.
      gv_comments3      = wa_qmel-zzcomments3.
      gv_comments4      = wa_qmel-zzcomments4.
      gv_comments5      = wa_qmel-zzcomments5.
**  read text
      lv_id = 'Z001'.
      lv_object = 'ZQMELWHY'.
      lv_qname = wa_qmel-qmnum.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = lv_id
          language                = 'E'
          name                    = lv_qname
          object                  = lv_object
*         ARCHIVE_HANDLE          = 0
*         LOCAL_CAT               = ' '
* IMPORTING
*         HEADER                  =
*         OLD_LINE_COUNTER        =
        TABLES
          lines                   = it_tab1
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      IF sy-subrc EQ 0.
        CLEAR lv_id.
      ENDIF.

      lv_id = 'Z002'.
**  read text
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = lv_id
          language                = 'E'
          name                    = lv_qname
          object                  = lv_object
*         ARCHIVE_HANDLE          = 0
*         LOCAL_CAT               = ' '
* IMPORTING
*         HEADER                  =
*         OLD_LINE_COUNTER        =
        TABLES
          lines                   = it_tab2
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      IF sy-subrc EQ 0.
        CLEAR lv_id.
      ENDIF.

      lv_id = 'Z003'.
**  read text
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = lv_id
          language                = 'E'
          name                    = lv_qname
          object                  = lv_object
*         ARCHIVE_HANDLE          = 0
*         LOCAL_CAT               = ' '
* IMPORTING
*         HEADER                  =
*         OLD_LINE_COUNTER        =
        TABLES
          lines                   = it_tab3
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.

    ENDIF.
  ENDLOOP.
*--Plants/Branches
  CLEAR wa_qmel.

ENDFORM.


FORM f_output.
  DATA: lf_formname        TYPE tdsfname,
        swnes              TYPE regud-swnes,
        langu              TYPE sy-langu,
        spell              TYPE spell,
        control_parameters TYPE ssfctrlop,          "Control Parameters
        output_options     TYPE ssfcompop.              "o/p options
*--control parameters
  control_parameters-preview   = 'X'.
  control_parameters-no_dialog = 'X'.
  control_parameters-device    = 'PRINTER'.
*--output options
  output_options-tdpageslct  = space.         "all pages
  output_options-tdcopies    = 1.             "one copy
  output_options-tddest      = 'ZLOC'.        "name of printer
  output_options-tdnoprev    = ' '.           "preview
  output_options-tdcover     = space.         "no cover page
  output_options-tdsuffix1   = 'ZLOC'.        "name or printer

*--smart form
  lf_formname = 'ZPMF0001'.
*--language
  langu = 'EN'.

  control_parameters-langu     = 'EN'.

  PERFORM f_call_form USING lf_formname
                                control_parameters
                                output_options.

ENDFORM. "f_output_form

FORM f_call_form USING lf_formname
                       control_parameters
                       output_options.
  DATA: lf_fm_name            TYPE rs38l_fnam.
  REFRESH: gt_otf_f.
  CLEAR gt_otf.
* determine smartform function module
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = lf_formname
    IMPORTING
      fm_name            = lf_fm_name
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.
  IF sy-subrc EQ 0.


    CALL FUNCTION lf_fm_name
      EXPORTING
*       ARCHIVE_INDEX      =
*       ARCHIVE_INDEX_TAB  =
*       ARCHIVE_PARAMETERS =
        control_parameters = control_parameters
*       MAIL_APPL_OBJ      =
*       MAIL_RECIPIENT     =
*       MAIL_SENDER        =
        output_options     = output_options
        user_settings      = ' '
        gv_part            = gv_part
        gv_stopage         = gv_stopage
        gv_ploss           = gv_ploss
        gv_impact          = gv_impact
        gv_action1         = gv_action1
        gv_action2         = gv_action2
        gv_action3         = gv_action3
        gv_action4         = gv_action4
        gv_action5         = gv_action5
        gv_resp1           = gv_resp1
        gv_resp2           = gv_resp2
        gv_resp3           = gv_resp3
        gv_resp4           = gv_resp4
        gv_resp5           = gv_resp5
        gv_due1            = gv_due1
        gv_due2            = gv_due2
        gv_due3            = gv_due3
        gv_due4            = gv_due4
        gv_due5            = gv_due5
        gv_status1         = gv_status1
        gv_status2         = gv_status2
        gv_status3         = gv_status3
        gv_status4         = gv_status4
        gv_status5         = gv_status5
        gv_comments1       = gv_comments1
        gv_comments2       = gv_comments2
        gv_comments3       = gv_comments3
        gv_comments4       = gv_comments4
        gv_comments5       = gv_comments5
      IMPORTING
*       DOCUMENT_OUTPUT_INFO       =
        job_output_info    = gt_otf
*       JOB_OUTPUT_OPTIONS =
      TABLES
        gt_ztline1         = it_tab1
        gt_ztline2         = it_tab2
        gt_ztline3         = it_tab3
      EXCEPTIONS
        formatting_error   = 1
        internal_error     = 2
        send_error         = 3
        user_canceled      = 4
        OTHERS             = 5.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.
*--PDF preview
    gt_otf_f[] = gt_otf-otfdata[]. " OTF data
    IF gt_otf_f[] IS NOT INITIAL.
      CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
        EXPORTING
          i_otf                    = gt_otf_f
        EXCEPTIONS
          convert_otf_to_pdf_error = 1
          cntl_error               = 2
          OTHERS                   = 3.
      IF sy-subrc <> 0.
*      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF.

  ENDIF.

ENDFORM. "f_call_form

*Selection texts
*----------------------------------------------------------
* P_QMNUM         Notification Number






Thursday, July 2, 2015

Time Management-2 for Absence combinations

METHOD if_ex_hrpad00infty~after_input.
  IF new_innnn-infty EQ '2001'.

    DATA lt_p2001             TYPE STANDARD TABLE OF p2001.
    DATA lx_p2001             TYPE p2001.
    DATA ls_p2001             TYPE p2001.
    DATA lv_date              TYPE datum.
    DATA lv_fdat              TYPE datum.
    DATA badi_message_handler   TYPE REF TO cl_hrpa_message_list.
    DATA message_handler        TYPE REF TO if_hrpa_message_handler.
    DATA msg                    TYPE symsg.
    DATA is_ok                  TYPE boole_d.

    DATA pernr_tab TYPE STANDARD TABLE OF  pdpnr.
    DATA pernr     TYPE pdpnr.
    DATA psp       TYPE STANDARD TABLE OF  pdpsp.
    DATA day_psp   TYPE STANDARD TABLE OF  pdsppsp.
    DATA lwa_day_psp   TYPE pdpsp.

    CREATE OBJECT badi_message_handler.
    message_handler badi_message_handler.


    CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
      EXPORTING
        prelp new_innnn
      IMPORTING
        pnnnn ls_p2001.

*    "" Get Emp Group for Validation
    lv_date =  ls_p2001-begda 1.
    lv_fdat =  ls_p2001-begda + 1.

    IF  pernr_tab IS INITIAL .
      pernr-pernr =  ls_p2001-pernr.
      APPEND pernr TO pernr_tab.
      CLEAR pernr.
    ENDIF.

    CALL FUNCTION 'HR_PERSON_READ_WORK_SCHEDULE'
      EXPORTING
        begin_date ls_p2001-begda
        end_date   ls_p2001-endda
      TABLES
        pernr_tab  pernr_tab
        psp        psp
        day_psp    day_psp.

    CALL FUNCTION 'HR_READ_INFOTYPE'
      EXPORTING
*       TCLAS           = 'A'
        pernr           new_innnn-pernr
        infty           '2001'
*       begda           = lv_date
*       endda           = lv_date
      TABLES
        infty_tab       lt_p2001
      EXCEPTIONS
        infty_not_found 1
        OTHERS          2.
    DATA lv_btime TYPE begti.
    IF sy-subrc 0.
      LOOP AT lt_p2001 INTO lx_p2001.

*        " Check For Previous Day Absence
        IF  lv_date BETWEEN
                    lx_p2001-begda AND lx_p2001-endda OR
            lv_fdat BETWEEN
                    lx_p2001-begda AND lx_p2001-endda.
*          " For Regular Employees
          IF i503-konty =  .
*            " Rectriction For Earned Leave Reg, Half Pay Leave
            IF    lx_p2001-subty  =  'ERNO' OR
                  lx_p2001-subty  =  'HPAL' OR
                  lx_p2001-subty  =  'OSTR' OR
                  lx_p2001-subty  =  'CHCL' OR
                  lx_p2001-subty  =  'CMLL'.

              IF lx_p2001-subty  =  'ERNO' OR
                  lx_p2001-subty  =  'HPAL'  OR
                  lx_p2001-subty  =  'CMLL' AND ls_p2001-stdaz LT 7.

                IF ls_p2001-subty  'CASL'.

                  READ TABLE psp INTO lwa_day_psp WITH KEY  datum  ls_p2001-begda.
                  IF  sy-subrc 0.

                    IF  lwa_day_psp-begzt+0(2GE 21.
                      lv_btime+0(2lwa_day_psp-endzt+0(24.
                    ELSE.
                      lv_btime+0(2)  lwa_day_psp-begzt+0(204.
                    ENDIF.

                    CONCATENATE lv_btime+0(2lwa_day_psp-begzt+2(4INTO lv_btime.
*                    IF lwa_day_psp-endzt GE ls_p2001-enduz.
*                      ELSE
                    IF lv_btime ls_p2001-enduz OR ls_p2001-enduz BETWEEN lv_btime AND ls_p2001-enduz ).
                      IF  ls_p2001-enduz GE lwa_day_psp-endzt.

                      ELSE.
                        msg-msgid 'ZHR'."'YHBN'.
                        msg-msgty 'E'.
                        msg-msgno '046'.

                        CALL METHOD message_handler->add_message
                          EXPORTING
                            message msg
                            cause   message_handler->unknown.
                        is_ok   space.

                        badi_message_handler->add_messagesmessage_handler ).
                        RAISE error_with_message.
                        EXIT.
                      ENDIF.
                    ENDIF.
*                  ENDIF.
                  ENDIF.
                ENDIF.
              ELSE.
                IF  ls_p2001-subty  =  'CMLL' OR
                    ls_p2001-subty  =  'SPDL' OR
                    ls_p2001-subty  =  'EORO' OR
                    ls_p2001-subty  =  'HPAL' OR
                    ls_p2001-subty  =  'MATL' OR
                    ls_p2001-subty  =  'OSTR' OR  "ls_p2001-subty  =  'CHCL' OR
                    ls_p2001-subty  =  'UNAL' OR
                    ls_p2001-subty  =  'ERNO' OR
                    ls_p2001-subty  =  'NRAL'.

                ELSE.
                  msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.
** condition for 1st day CHCL  and second day UNAL  not allowed    (27.04.2015)
         if lx_p2001-subty 'CHCL' OR lx_p2001-subty 'NRAL' ).
            IF LS_P2001-subty 'UNAL'.
              msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
            ENDIF.
         ENDIF.


*            "Casual Leave- Regular
            IF  lx_p2001-subty 'CASL'.

              IF  ls_p2001-subty  =  'CASL'
                  AND ls_p2001-stdaz LT 7.

                READ TABLE psp INTO lwa_day_psp WITH KEY  datum  ls_p2001-begda.

                IF  sy-subrc 0.

                  IF  lwa_day_psp-begzt+0(2GE 21.
                    lv_btime+0(2lwa_day_psp-endzt+0(24.
                  ELSE.
                    lv_btime+0(2)  lwa_day_psp-endzt+0(204.
                  ENDIF.
                  IF ls_p2001-beguz BETWEEN lv_btime  AND ls_p2001-enduz.
*                    msg-msgid = 'ZHR'."'YHBN'.
*                    msg-msgty = 'E'.
*                    msg-msgno = '046'.
*
*                    CALL METHOD message_handler->add_message
*                      EXPORTING
*                        message = msg
*                        cause   = message_handler->unknown.
*                    is_ok   = space.
*
*                    badi_message_handler->add_messages( message_handler ).
*                    RAISE error_with_message.
*                    EXIT.

                  ENDIF.
                ENDIF.

              ELSE.
                IF  ls_p2001-subty  =  'CASL' OR
                    ls_p2001-subty  =  'RESL' OR
                    ls_p2001-subty  =  'STTL' OR
                    ls_p2001-subty  =  'SCAL' OR
                    ls_p2001-subty  =  'DOFF' OR
                    ls_p2001-subty  =  'OT2A' OR
                    ls_p2001-subty  =  'COFF' OR
                    ls_p2001-subty  =  'OSTR' .

                ELSE.

                  msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.

*            ""  Extra Ordinary Leave
            IF    lx_p2001-subty 'EORO'.

              IF  lx_p2001-subty  =  'EORO'
                  AND ls_p2001-stdaz LT 7.

                IF ls_p2001-subty  'CASL'.

                  READ TABLE psp INTO lwa_day_psp WITH KEY  datum  ls_p2001-begda.
                  IF  sy-subrc 0.
                    IF  lwa_day_psp-begzt+0(2GE 21.
                      lv_btime+0(2lwa_day_psp-endzt+0(24.
                    ELSE.
                      lv_btime+0(2)  lwa_day_psp-begzt+0(204.
                    ENDIF.

                    CONCATENATE lv_btime+0(2lwa_day_psp-begzt+2(4INTO lv_btime.
*                    IF lwa_day_psp-endzt GE ls_p2001-enduz.
*                      ELSE
                    IF lv_btime ls_p2001-enduz OR ls_p2001-enduz BETWEEN lv_btime AND ls_p2001-enduz ).
                      IF  ls_p2001-enduz GE lwa_day_psp-endzt.

                      ELSE.
                        msg-msgid 'ZHR'."'YHBN'.
                        msg-msgty 'E'.
                        msg-msgno '046'.

                        CALL METHOD message_handler->add_message
                          EXPORTING
                            message msg
                            cause   message_handler->unknown.
                        is_ok   space.

                        badi_message_handler->add_messagesmessage_handler ).
                        RAISE error_with_message.
                        EXIT.
                      ENDIF.
                    ENDIF.
                  ENDIF.
                ENDIF.
              ELSE.

                IF  ls_p2001-subty  =  'HPAL' OR
                    ls_p2001-subty  =  'OSTR' OR
                    ls_p2001-subty  =  'NRAL' OR
                    ls_p2001-subty  =  'UNAL' OR
                    ls_p2001-subty  =  'EORO' OR
                    ls_p2001-subty  =  'ERNO' .

                ELSE.
                  msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.
                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.

*            ""  Special Casual Leave
            IF    lx_p2001-subty 'SCAL'.

              IF  ls_p2001-subty  =  'CASL' OR
                  ls_p2001-subty  =  'RESL' OR
                  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'ERNO' OR
                  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'OT2A' OR
                  ls_p2001-subty  =  'CMLL' .
              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*            ""  Special Disability Leave
            IF    lx_p2001-subty 'SPDL'.
              IF  lx_p2001-subty  =  'SPDL'
                    AND ls_p2001-stdaz LT 7.

                IF ls_p2001-subty  'CASL'.

                  READ TABLE psp INTO lwa_day_psp WITH KEY  datum  ls_p2001-begda.
                  IF  sy-subrc 0.
                    IF  lwa_day_psp-begzt+0(2GE 21.
                      lv_btime+0(2lwa_day_psp-endzt+0(24.
                    ELSE.
                      lv_btime+0(2)  lwa_day_psp-begzt+0(204.
                    ENDIF.

                    CONCATENATE lv_btime+0(2lwa_day_psp-begzt+2(4INTO lv_btime.
*                    IF lwa_day_psp-endzt GE ls_p2001-enduz.
*                      ELSE
                    IF lv_btime ls_p2001-enduz OR ls_p2001-enduz BETWEEN lv_btime AND ls_p2001-enduz ).
                      IF  ls_p2001-enduz GE lwa_day_psp-endzt.

                      ELSE.
                        msg-msgid 'ZHR'."'YHBN'.
                        msg-msgty 'E'.
                        msg-msgno '046'.

                        CALL METHOD message_handler->add_message
                          EXPORTING
                            message msg
                            cause   message_handler->unknown.
                        is_ok   space.

                        badi_message_handler->add_messagesmessage_handler ).
                        RAISE error_with_message.
                        EXIT.
                      ENDIF.
                    ENDIF.
                  ENDIF.
                ENDIF.
              ELSE.
                IF  ls_p2001-subty  =  'ERNO' OR
                    ls_p2001-subty  =  'EORO' OR
                    ls_p2001-subty  =  'MATL' OR
                    ls_p2001-subty  =  'UNAL' OR
                    ls_p2001-subty  =  'SPDL' OR
                    ls_p2001-subty  =  'CMLL' OR
                    ls_p2001-subty  =  'HPAL' .
                ELSE.
                  msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.
*            ""  Settling time leave
            IF    lx_p2001-subty 'STTL'.

              IF  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'OSTR' OR
                  ls_p2001-subty  =  'RESL' OR
                  ls_p2001-subty  =  'DOFF' OR
                  ls_p2001-subty  =  'OT2A' OR
                  ls_p2001-subty  =  'NRAL'.

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*COFF  Compensatory Off
*DOFF  Dharma OFF
            IF    lx_p2001-subty 'COFF' OR
                  lx_p2001-subty 'DOFF' OR
                  lx_p2001-subty 'RESL' .

              IF  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'CASL' OR
                  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'DOFF' OR
                  ls_p2001-subty  =  'OT2A' OR
                  ls_p2001-subty  =  'RESL' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*MATL  Maternity Leave
            IF    lx_p2001-subty  'MATL'.

              IF  lx_p2001-subty  =  'MATL'
                     AND ls_p2001-stdaz LT 7.

                IF ls_p2001-subty  'CASL'.

                  READ TABLE psp INTO lwa_day_psp WITH KEY  datum  ls_p2001-begda.
                  IF  sy-subrc 0.
                    IF  lwa_day_psp-begzt+0(2GE 21.
                      lv_btime+0(2lwa_day_psp-endzt+0(24.
                    ELSE.
                      lv_btime+0(2)  lwa_day_psp-begzt+0(204.
                    ENDIF.

                    CONCATENATE lv_btime+0(2lwa_day_psp-begzt+2(4INTO lv_btime.
*                    IF lwa_day_psp-endzt GE ls_p2001-enduz.
*                      ELSE
                    IF lv_btime ls_p2001-enduz OR ls_p2001-enduz BETWEEN lv_btime AND ls_p2001-enduz ).
                      IF  ls_p2001-enduz GE lwa_day_psp-endzt.

                      ELSE.
                        msg-msgid 'ZHR'."'YHBN'.
                        msg-msgty 'E'.
                        msg-msgno '046'.

                        CALL METHOD message_handler->add_message
                          EXPORTING
                            message msg
                            cause   message_handler->unknown.
                        is_ok   space.

                        badi_message_handler->add_messagesmessage_handler ).
                        RAISE error_with_message.
                        EXIT.
                      ENDIF.
                    ENDIF.
                  ENDIF.
                ENDIF.

              ELSE.
                IF  ls_p2001-subty  =  'CMLL' OR
                    ls_p2001-subty  =  'ERNO' OR
                    ls_p2001-subty  =  'EORO' OR
                    ls_p2001-subty  =  'HPAL' OR
                    ls_p2001-subty  =  'MATL' OR
                    ls_p2001-subty  =  'UNAL' OR
                    ls_p2001-subty  =  'METR' OR
                    ls_p2001-subty  =  'MEDT' OR
                    ls_p2001-subty  =  'MEDL' OR
                    ls_p2001-subty  =  'NRAL' .

                ELSE.
                  msg-msgid     'ZHR'.
                  msg-msgty     'E'.
                  msg-msgno     '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.
*NRAL  NR Absence
            IF    lx_p2001-subty 'NRAL' OR
                  lx_p2001-subty 'UNAL' .

              IF  ls_p2001-subty  =  'CMLL' OR
                  ls_p2001-subty  =  'ERNO' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'NRAL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'SPDL' OR
                  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'SDYL' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok         space
                .
                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
**********************************************************************
*            FOR Employee Group D Absence Type 2
*            Leave Restriction For Labour Confirmation
**********************************************************************
          ELSEIF i503-konty =  2.

*           ERNL   Earned Leave- Reg Labour
*           MEDL   Medi Leave- Confirm Labour
*           SPDL   Special Disability Leave
*           MATL   Maternity Leave
*           NRAL   NR Absence
*           UNAL   Unauthorised Absence
*           OSTR   On Strike
*           EORO   Extra Ordinary Leave

            IF    lx_p2001-subty 'ERNL' OR
                  lx_p2001-subty 'SPDL' OR
                  lx_p2001-subty 'MATL' OR
                  lx_p2001-subty 'NRAL' OR
                  lx_p2001-subty 'UNAL' OR
                  lx_p2001-subty 'OSTR' OR
                  lx_p2001-subty 'EORO' OR
                  lx_p2001-subty 'MEDL' .

              IF  ls_p2001-subty  =  'ERNL' OR
                  ls_p2001-subty  =  'MEDL' OR
                  ls_p2001-subty  =  'SPDL' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'OSTR' OR
                  ls_p2001-subty  =  'NRAL' OR
                  ls_p2001-subty  =  'UNAL'.


              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*COFF  Compensatory Off
*DOFF  Dharma OFF
            IF    lx_p2001-subty      'COFF' OR
                  lx_p2001-subty      'DOFF' OR
                  lx_p2001-subty      'SCAL' OR
                  lx_p2001-subty      'CSLL' .

              IF  ls_p2001-subty      =  'COFF' OR
                  ls_p2001-subty      =  'CSLL' OR
                  ls_p2001-subty      =  'SCAL' OR
                  ls_p2001-subty      =  'OSTR' OR
                  ls_p2001-subty      =  'RESL' OR
                  ls_p2001-subty      =  'DOFF' OR
                  ls_p2001-subty      =  'OT2A'.

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
* Employee Sub Group 4
          ELSEIF i503-konty =  .
            " Rectriction For Earned Leave Reg, Half Pay Leave
            IF  lx_p2001-subty    =  'ELPR' OR
                lx_p2001-subty    =  'HPAL' OR
                lx_p2001-subty    =  'OSTR' OR
                lx_p2001-subty    =  'CHCL' OR
                lx_p2001-subty    =  'CMLL' .


              IF  ls_p2001-subty    =  'CMLL' OR
                  ls_p2001-subty    =  'SPDL' OR
                  ls_p2001-subty    =  'EORO' OR
                  ls_p2001-subty    =  'HPAL' OR
                  ls_p2001-subty    =  'MATL' OR
                  ls_p2001-subty    =  'OSTR' OR
                  ls_p2001-subty    =  'UNAL' OR
                  ls_p2001-subty    =  'ELPR' OR
                  ls_p2001-subty    =  'NRAL'.

              ELSE.
                msg-msgid         'ZHR'."'YHBN'.
                msg-msgty         'E'.
                msg-msgno         '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

* Casual Leave- Regular
            IF  lx_p2001-subty 'CSRP'.

              IF  ls_p2001-subty    =  'CSRP' OR
                  ls_p2001-subty    =  'RESL' OR
                  ls_p2001-subty    =  'STTL' OR
                  ls_p2001-subty    =  'SACL' OR
                  ls_p2001-subty    =  'OSTR' .
              ELSE.
                msg-msgid         'ZHR'."'YHBN'.
                msg-msgty         'E'.
                msg-msgno         '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

*            ""  Extra Ordinary Leave
            IF    lx_p2001-subty    'EORO'.

              IF  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'OSTR' OR
                  ls_p2001-subty  =  'NRAL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'CMLL' OR
                  ls_p2001-subty  =  'ERNO' .
              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

*            ""  Special Casual Leave
            IF    lx_p2001-subty 'SCAL'.

              IF  ls_p2001-subty  =  'CSRP' OR
                  ls_p2001-subty  =  'RESL' OR
                  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'ERNO' OR
                  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'CMLL'.
              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

*         Special Disability Leave
            IF    lx_p2001-subty  'SPDL'.


              IF  ls_p2001-subty  =  'ERPR' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'CMLL' OR
                  ls_p2001-subty  =  'HPAL' .
              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*            ""  Settling time leave
            IF    lx_p2001-subty 'STTL'.

              IF  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'OSTR' OR
                  ls_p2001-subty  =  'RESL' OR
                  ls_p2001-subty  =  'NRAL'.

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*COFF  Compensatory Off
*DOFF  Dharma OFF
            IF    lx_p2001-subty 'DOFF' OR
                  lx_p2001-subty 'RESL' .

              IF  ls_p2001-subty  =  'COFF' OR
                  ls_p2001-subty  =  'CSRP' OR
                  ls_p2001-subty  =  'SCAL' OR
                  ls_p2001-subty  =  'RESL' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
*MATL  Maternity Leave
            IF    lx_p2001-subty 'MATL' .

              IF  ls_p2001-subty  =  'CMLL' OR
                  ls_p2001-subty  =  'ELPR' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'NRAL' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.


*NRAL  NR Absence
            IF    lx_p2001-subty 'NRAL' OR
                  lx_p2001-subty 'UNAL' .
              .
              IF  ls_p2001-subty  =  'CMLL' OR
                  ls_p2001-subty  =  'ELPR' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'HPAL' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'SPDL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'SDYL' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

          ELSEIF  i503-konty =  6.
*     NRAL  NR Absence
            IF    lx_p2001-subty 'METR' OR
                  lx_p2001-subty 'EORO' OR
                  lx_p2001-subty 'NRAL' OR
                  lx_p2001-subty 'UNAL' OR
                  lx_p2001-subty 'OSTR' OR
                  lx_p2001-subty 'MATL'.

              IF lx_p2001-subty 'METR'   OR
                   lx_p2001-subty 'EORO'   OR
                   lx_p2001-subty 'NRAL'   OR
                   lx_p2001-subty 'UNAL'   OR
                   lx_p2001-subty 'OSTR'   OR
                   lx_p2001-subty 'MATL' AND ls_p2001-stdaz LT 7.


              ELSE.

                IF  ls_p2001-subty  =  'METR' OR
                    ls_p2001-subty  =  'EORO' OR
                    ls_p2001-subty  =  'MATL' OR
                    ls_p2001-subty  =  'NRAL' OR
                    ls_p2001-subty  =  'UNAL' OR
                    ls_p2001-subty  =  'OSTR'.
                ELSE.
                  msg-msgid 'ZHR'."'YHBN'.
                  msg-msgty 'E'.
                  msg-msgno '031'.

                  CALL METHOD message_handler->add_message
                    EXPORTING
                      message msg
                      cause   message_handler->unknown.
                  is_ok   space.

                  badi_message_handler->add_messagesmessage_handler ).
                  RAISE error_with_message.
                  EXIT.
                ENDIF.
              ENDIF.
            ENDIF.

            IF    lx_p2001-subty 'CSRT' OR
                  lx_p2001-subty 'COFF'.

              IF  ls_p2001-subty  =  'CSRT' OR
                  ls_p2001-subty  =  'COFF' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.
* Absence Combination Restriction For Trainee Labours
          ELSEIF i503-konty =  5.
*MEDT  Medi Leave- Labour Trainee
*EORO  Extra Ordinary Leave
*MATL  Maternity Leave
*MTPL  MTP Leave
*UNAL  Unauthorised Absence
*OSTR  On Strike
            IF    lx_p2001-subty 'MEDT' OR
                  lx_p2001-subty 'EORO' OR
                  lx_p2001-subty 'NRAL' OR
                  lx_p2001-subty 'UNAL' OR
                  lx_p2001-subty 'OSTR' OR
                  lx_p2001-subty 'MATL' OR
                  lx_p2001-subty 'SPDL' OR
                  lx_p2001-subty 'MTPL'.

              IF  ls_p2001-subty  =  'MEDT' OR
                  ls_p2001-subty  =  'EORO' OR
                  ls_p2001-subty  =  'MATL' OR
                  ls_p2001-subty  =  'NRAL' OR
                  ls_p2001-subty  =  'UNAL' OR
                  ls_p2001-subty  =  'SPDL' OR
                  ls_p2001-subty  =  'OSTR'.
              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

            IF    lx_p2001-subty 'CSLT' OR
                  lx_p2001-subty 'COFF'.

              IF  ls_p2001-subty  =  'CSLT' OR
                  ls_p2001-subty  =  'COFF' .

              ELSE.
                msg-msgid 'ZHR'."'YHBN'.
                msg-msgty 'E'.
                msg-msgno '031'.

                CALL METHOD message_handler->add_message
                  EXPORTING
                    message msg
                    cause   message_handler->unknown.
                is_ok   space.

                badi_message_handler->add_messagesmessage_handler ).
                RAISE error_with_message.
                EXIT.
              ENDIF.
            ENDIF.

          ENDIF" Check For Absence Type
        ENDIF"" Check For Dates
      ENDLOOP.
    ENDIF.
  ENDIF.

ENDMETHOD.