Esta función permite crear una Instancia o Tipo de Evento de HR
Transacción: PSV2
FUNCTION z_hr_uc34_secciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(OBJETO_PADRE) TYPE HROBJID
*" VALUE(DATUM) TYPE DATUM
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
(Esos pequeños tips que no quiero volver a buscar) By Daniel F. Ruiz, Santiago, Chile.
20121107
ABAP HR Tips: Función para crear Maestro de Evento
Esta función permite crear una Evento de HR
Transacción: S_AHR_61011887
FUNCTION z_hr_uc33_curso_sap.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(BEGDA) TYPE BEGDA OPTIONAL
*" VALUE(ENDDA) TYPE ENDDA OPTIONAL
*" VALUE(OBJETO_PADRE) TYPE HROBJID OPTIONAL
*" VALUE(DES_BREVE) TYPE SHORT_D OPTIONAL
*" VALUE(DES_LARGA) TYPE STEXT OPTIONAL
*" VALUE(DIAS) TYPE DAYCT
*" VALUE(HORAS) TYPE HRSCT
*" VALUE(CAP_MIN) TYPE KAPZ1 DEFAULT '1'
*" VALUE(CAP_OPT) TYPE KAPZ2
*" VALUE(CAP_MAX) TYPE KAPZ3
*" VALUE(PRECIO_INTERNO) TYPE IKOST
*" VALUE(PRECIO_EXTERNO) TYPE EXKOS
*" VALUE(SENCE) TYPE TEXT10
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*" TABLES
*" PTXT1002 STRUCTURE PT1002
*"----------------------------------------------------------------------
Transacción: S_AHR_61011887
FUNCTION z_hr_uc33_curso_sap.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(BEGDA) TYPE BEGDA OPTIONAL
*" VALUE(ENDDA) TYPE ENDDA OPTIONAL
*" VALUE(OBJETO_PADRE) TYPE HROBJID OPTIONAL
*" VALUE(DES_BREVE) TYPE SHORT_D OPTIONAL
*" VALUE(DES_LARGA) TYPE STEXT OPTIONAL
*" VALUE(DIAS) TYPE DAYCT
*" VALUE(HORAS) TYPE HRSCT
*" VALUE(CAP_MIN) TYPE KAPZ1 DEFAULT '1'
*" VALUE(CAP_OPT) TYPE KAPZ2
*" VALUE(CAP_MAX) TYPE KAPZ3
*" VALUE(PRECIO_INTERNO) TYPE IKOST
*" VALUE(PRECIO_EXTERNO) TYPE EXKOS
*" VALUE(SENCE) TYPE TEXT10
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*" TABLES
*" PTXT1002 STRUCTURE PT1002
*"----------------------------------------------------------------------
ABAP Tips: Calcular días hábiles entre dos fechas
Esta es una función bastante interesante que permite obtener la cantidad de días hábiles y no hábiles entre dos fechas, donde se contabilizan aparte los sábados, domingos y festivos según el calendario SAP (transacción SCAL).
Cortesía de @AleMadriaza
FUNCTION z_tv_08_dias_habiles.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_FECHA_INI) TYPE BEGDA
*" VALUE(I_FECHA_FIN) TYPE ENDDA
*" EXPORTING
*" VALUE(E_DIAS_HABILES) TYPE I
*" VALUE(E_DIAS_NO_HABILES) TYPE I
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
Cortesía de @AleMadriaza
FUNCTION z_tv_08_dias_habiles.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_FECHA_INI) TYPE BEGDA
*" VALUE(I_FECHA_FIN) TYPE ENDDA
*" EXPORTING
*" VALUE(E_DIAS_HABILES) TYPE I
*" VALUE(E_DIAS_NO_HABILES) TYPE I
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
20120921
ABAP Tips: Mensaje de Error de una RFC a Bapiret2
Un método útil para esa parte del CALL FUNCTION, cuando el SY-SUBRC es distinto de 0, pasarla directamente a una estructura de tipo BAPIRET2.
En este ejemplo se utiliza para la llamada una Función de OM que permite obtener el siguiente número disponible para la creación de objetos, que también es bastante útil.
CALL FUNCTION 'RH_GET_NEXT_NUMBER'
EXPORTING
action = 'GIVE'
ext_number = l_objid
otype = 'D'
plvar = '01'
IMPORTING
number = l_objid
EXCEPTIONS
invalid_action = 1
number_must_be_zero = 2
invalid_object = 3
no_external_interval_found = 4
no_internal_interval_found = 5
invalid_number = 6
no_more_numbers_available = 7
OTHERS = 8.
IF sy-subrc <> 0.
PERFORM get_message USING sy-msgty sy-msgid sy-msgno
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING e_return.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_message
*&---------------------------------------------------------------------*
FORM get_message USING type id num m1 m2 m3 m4
CHANGING e_ret STRUCTURE bapiret2.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = type
cl = id
number = num
par1 = m1
par2 = m2
par3 = m3
par4 = m4
IMPORTING
return = e_ret.
ENDFORM. " get_message
En este ejemplo se utiliza para la llamada una Función de OM que permite obtener el siguiente número disponible para la creación de objetos, que también es bastante útil.
CALL FUNCTION 'RH_GET_NEXT_NUMBER'
EXPORTING
action = 'GIVE'
ext_number = l_objid
otype = 'D'
plvar = '01'
IMPORTING
number = l_objid
EXCEPTIONS
invalid_action = 1
number_must_be_zero = 2
invalid_object = 3
no_external_interval_found = 4
no_internal_interval_found = 5
invalid_number = 6
no_more_numbers_available = 7
OTHERS = 8.
IF sy-subrc <> 0.
PERFORM get_message USING sy-msgty sy-msgid sy-msgno
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING e_return.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_message
*&---------------------------------------------------------------------*
FORM get_message USING type id num m1 m2 m3 m4
CHANGING e_ret STRUCTURE bapiret2.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = type
cl = id
number = num
par1 = m1
par2 = m2
par3 = m3
par4 = m4
IMPORTING
return = e_ret.
ENDFORM. " get_message
20120503
ABAP FI Tips: Liberar Solped y Modificar extensiones "Z"
Este es un pequeño ejemplo de una función realizada, la cual marca la liberación de la solped para el liberador actual, y además, modifica un campo de la extensión "Z", más conocida como ExtensionIn, en este caso, para agregar el nombre del usuario liberador, con la ayuda de la función BAPI_PR_CHANGE.
20120502
TIP: Cómo Hacer un Sort y Subtotal en un LVC
En pocas líneas:
1. Declarar tabla sort
DATA gs_sort TYPE LVC_T_SORT.
2. Llenar tabla sort para los mismos campos del Fieldcat
DATA ls_sort TYPE lvc_s_sort.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-ref_table = 'PA0001'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO gs_fieldcat.
CLEAR ls_sort.
ls_sort-spos = '01'.
ls_sort-fieldname = 'PERNR'.
ls_sort-up = 'X'. "sort hacia arriba
ls_sort-subtot = 'X'. "subtotal sobre el campo sumado
APPEND ls_sort TO gs_sort.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BETRG'.
ls_fieldcat-ref_table = 'PA9092'.
ls_fieldcat-cfieldname = 'WAERS'.
ls_fieldcat-do_sum = 'X'.
APPEND ls_fieldcat TO gs_fieldcat.
3. Agregar tabla a función de generación de LVC.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_buffer_active = 'X'
i_callback_program = g_repid
it_fieldcat_lvc = gs_fieldcat[]
is_layout_lvc = gs_layout
it_sort_lvc = gs_sort "<-- ahi
(... etc)
1. Declarar tabla sort
DATA gs_sort TYPE LVC_T_SORT.
2. Llenar tabla sort para los mismos campos del Fieldcat
DATA ls_sort TYPE lvc_s_sort.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-ref_table = 'PA0001'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO gs_fieldcat.
CLEAR ls_sort.
ls_sort-spos = '01'.
ls_sort-fieldname = 'PERNR'.
ls_sort-up = 'X'. "sort hacia arriba
ls_sort-subtot = 'X'. "subtotal sobre el campo sumado
APPEND ls_sort TO gs_sort.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BETRG'.
ls_fieldcat-ref_table = 'PA9092'.
ls_fieldcat-cfieldname = 'WAERS'.
ls_fieldcat-do_sum = 'X'.
APPEND ls_fieldcat TO gs_fieldcat.
3. Agregar tabla a función de generación de LVC.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_buffer_active = 'X'
i_callback_program = g_repid
it_fieldcat_lvc = gs_fieldcat[]
is_layout_lvc = gs_layout
it_sort_lvc = gs_sort "<-- ahi
(... etc)
20120223
ABAP Tips: Calcular RUT (Chile)
Este es el mi algoritmo definitivo para calcular el RUT de una persona, separado en distintos forms según se necesite (valida RUT, calcula DV y formatea RUT) e integrado en un solo programa validador.
Suscribirse a:
Entradas (Atom)