martes, 9 de junio de 2015

Formateo de Fechas Internal / External

CONVERT_DATE_TO_EXTERNAL

Cambia el formato de:     aaammdd --> dd.mm.aaaa




















CONVERT_DATE_TO_INTERNAL              
Cambia el formato de:     dd.mm.aaaa --> aaammdd

Diferencia entre Horas

function z_test.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     REFERENCE(FECHA_INI) TYPE  DATUM DEFAULT '04022012'
*"     REFERENCE(HORA_INI) TYPE  UZEIT DEFAULT '160000'
*"     REFERENCE(FECHA_FIN) TYPE  DATUM DEFAULT '05022012'
*"     REFERENCE(HORA_FIN) TYPE  UZEIT DEFAULT '010000'
*"  EXPORTING
*"     VALUE(E_TDIFF) LIKE  TVRO-FAHZTD
*"     VALUE(E_DATE2_EARLY) LIKE  RV56A-SELKZ
*"----------------------------------------------------------------------
  call function 'SD_CALC_DURATION_FROM_DATETIME'
    exporting
      i_date1          = fecha_ini
      i_time1          = hora_ini
      i_date2          = fecha_fin
      i_time2          = hora_fin
    importing
      e_tdiff          = e_tdiff
      e_date2_early    = e_date2_early
    exceptions
      invalid_datetime = 1
      others           = 2.

endfunction.

*"----------------------------------------------------------------------

Suma y Resta fechas

*&---------------------------------------------------------------------*
*&      Form  MFECH
*&---------------------------------------------------------------------*
*       Suma y Resta fechas.
*----------------------------------------------------------------------*
*      -->P_FECHA    Fecha Pivote
*      -->DAY        Número de Días
*      -->MONTH      Número de Meses
*      -->YEAR       Número de Años
*      -->OPERACION  Suma o Resta [+ ó -]
*----------------------------------------------------------------------*
FORM MFECH USING  P_FECHA DAY MONTH YEAR OPERACION.
  DATA: L_FECHA LIKE SY-DATUM.
  CALL FUNCTION 'J_1H_CAL_DATE_IN_INTERVAL'
    EXPORTING
      DATE      = P_FECHA
      DAYS      = DAY
      MONTHS    = MONTH
      SIGNUM    = OPERACION  "'+ Ó -'
      YEARS     = YEAR
    IMPORTING
      CALC_DATE = L_FECHA.
  MOVE L_FECHA TO P_FECHA.

ENDFORM.                    "MFECH
*----------------------------------------------------------------------*

Día de la Semana


*&---------------------------------------------------------------------*
form get_diasemana using p_datum changing p_dsema.
  data: lv_day type casdayattr occurs 0 with header line.
  p_dsema = ''.
  check p_datum is not initial.
*
  call function 'DAY_ATTRIBUTES_GET'
    exporting
      date_from                  = p_datum
      date_to                    = p_datum
      language                   = sy-langu
    tables
      day_attributes             = lv_day
    exceptions
      factory_calendar_not_found = 1
      holiday_calendar_not_found = 2
      date_has_invalid_format    = 3
      date_inconsistency         = 4
      others                     = 5.
  if ( sy-subrc eq 0 ).
    read table lv_day index 1.
    p_dsema = lv_day-weekday_s.
  endif.
*
endform.                    "get_diaSemana

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
form cargar_diaturno .

  ti_detalle-pernr = hd-pernr.
  ti_detalle-dia   = hd-datum.
  ti_detalle-dianumero = ti_detalle-dia+6(2).

  call function 'HRIQ_GET_DATE_DAYNAME'
    exporting
      langu  = sy-langu
      date   = ti_detalle-dia
    importing
      daytxt = v_diatexto.

  ti_detalle-diatexto = v_diatexto+0(2).
  translate ti_detalle-diatexto to upper case.

  ti_detalle-hora_teo_ini = hd-sobeg.
  ti_detalle-hora_teo_fin = hd-soend.

  ti_detalle-turno = hd-tprog.

endform.                    " CARGAR_DIATURNO
*&---------------------------------------------------------------------*





Meses - MONTH_NAMES_GET


Documentación estándar de Objetos SAP

Para mostrar la documentación estándar utilizaremos la siguiente Función

 CALL FUNCTION 'DOCU_CALL'

    EXPORTING                 
      id            = docuid
      object        = docname
      typ           = doctype
      langu         = rsdxx-mdf_lang
      displ         = display
      displ_mode    = displ_mode

      use_sec_langu = display.




Desbloqueo de Registro de Infotipo

FORM unlocked.
  DATAlt_p2007   LIKE p2007.
  DATAlv_return  LIKE bapireturn1,
        lv_user    LIKE sy-uname.
*.El proceso de desbloquedo se desarrolla de forma estandar, ya que eso
* Permite tener control de los posibles bloquedos desde la PA u otros
* procesos propios de HCM
  LOOP AT gt_outlist WHERE cmak  EQ 'X'       "Marcado en ALV
                       AND sprps EQ c_icon_lo."Bloqueado 
*...Bloqueo al trabajador
    CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
      EXPORTING
        number       gt_outlist-pernr
      IMPORTING
        return       lv_return
        locking_user lv_user.
    IF NOT lv_return-type IS INITIAL ).
      CONCATENATE 'Usuario Bloqueado por: ' lv_user
      INTO gt_outlist-statu RESPECTING BLANKS.
      MODIFY gt_outlist INDEX sy-tabix.
      EXIT.
    ENDIF.
*...Desbloquedo el Registro del Infotipo
    MOVE-CORRESPONDING gt_outlist-it2007 TO lt_p2007.
*    lt_p2007-sprps = ' '.
    CALL FUNCTION 'HR_INFOTYPE_OPERATION'
      EXPORTING
        infty         '2007'
        number        lt_p2007-pernr
        subtype       lt_p2007-subty
        objectid      lt_p2007-objps
        lockindicator lt_p2007-sprps
        validityend   lt_p2007-endda
        validitybegin lt_p2007-begda
        recordnumber  lt_p2007-seqnr
        record        lt_p2007
        operation     'EDQ' 
        tclas         'A'
        dialog_mode   '0'
        nocommit      ' '
      IMPORTING
        return        lv_return.
    IF lv_return-id =  space ).
      gt_outlist-sprps c_icon_un.
      gt_outlist-statu 'Desbloqueado con exito'.
      MODIFY gt_outlist INDEX sy-tabix.
    ENDIF.
*...Desbloqueo al trabajador.
    CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
      EXPORTING
        number gt_outlist-pernr
      IMPORTING
        return lv_return.
  ENDLOOP.

ENDFORM.                    "unlocked