Este programa lo encontré hace mil años en una página en chino, permite cargar cualquier tabla "Z"! desde un excel exportado a .csv con los mismos campos que la estructura de la misma, especificándole el nombre de tabla y archivo con datos.
(Esos pequeños tips que no quiero volver a buscar) By Daniel F. Ruiz, Santiago, Chile.
20140423
20130107
ABAP TIPS: Algoritmo para Matchcodes dinámicos
El clásico algoritmo que permite generar un matchcode por pantalla, cuando no se tiene uno definido, y que se puede encontrar en cualquier blog:
PARAMETERS p_subty TYPE p9901-subty OBLIGATORY.
*----------------------------------------------------------------------*
* Eventos de Pantalla *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_subty.
DATA: BEGIN OF gt_matchcode OCCURS 0,
subty TYPE subty,
stext TYPE t591s-stext,
END OF gt_matchcode.
DATA lt_return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
IF gt_matchcode[] IS INITIAL.
SELECT subty stext FROM t591s
APPENDING CORRESPONDING FIELDS OF TABLE gt_matchcode
WHERE sprsl = sy-langu
AND infty = '9901'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SUBTY'
window_title = 'Conceptos'
value_org = 'S'
TABLES
value_tab = gt_matchcode
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_return_tab INDEX 1.
MOVE lt_return_tab-fieldval TO p_subty.
ENDIF.
* Eventos de Pantalla *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_subty.
DATA: BEGIN OF gt_matchcode OCCURS 0,
subty TYPE subty,
stext TYPE t591s-stext,
END OF gt_matchcode.
DATA lt_return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
IF gt_matchcode[] IS INITIAL.
SELECT subty stext FROM t591s
APPENDING CORRESPONDING FIELDS OF TABLE gt_matchcode
WHERE sprsl = sy-langu
AND infty = '9901'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SUBTY'
window_title = 'Conceptos'
value_org = 'S'
TABLES
value_tab = gt_matchcode
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_return_tab INDEX 1.
MOVE lt_return_tab-fieldval TO p_subty.
ENDIF.
20121221
ABAP Tips: Indicador de Progreso
Algoritmo de ejemplo para crear correctamente un indicador de progreso en ABAP.
Primero se debe obtener el total de registros o procesos (lv_total), y dentro de un LOOP a los registros a procesar, realizar el algoritmo siguiendo el ejemplo a continuacion :
DATA:
lv_total(7) TYPE n,
lv_actua(7) TYPE n,
lv_porce TYPE i,
lv_resto TYPE i,
lv_texto(40) TYPE c.
lv_total = <cantidad de registros>
lv_actua = 0.
LOOP AT <registros>...
* Progress Indicator
lv_actua = lv_actua + 1.
lv_resto = lv_actua MOD 8.
CONCATENATE 'Procesando partida' lv_actua 'de' lv_total
INTO lv_texto SEPARATED BY space.
IF lv_resto IS INITIAL. "Para no perder tanto performance con el mje
lv_porce = ( lv_actua * 100 ) / lv_total.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = lv_porce
text = lv_texto.
ENDIF.
ENDLOOP.
Primero se debe obtener el total de registros o procesos (lv_total), y dentro de un LOOP a los registros a procesar, realizar el algoritmo siguiendo el ejemplo a continuacion :
DATA:
lv_total(7) TYPE n,
lv_actua(7) TYPE n,
lv_porce TYPE i,
lv_resto TYPE i,
lv_texto(40) TYPE c.
lv_total = <cantidad de registros>
lv_actua = 0.
LOOP AT <registros>...
* Progress Indicator
lv_actua = lv_actua + 1.
lv_resto = lv_actua MOD 8.
CONCATENATE 'Procesando partida' lv_actua 'de' lv_total
INTO lv_texto SEPARATED BY space.
IF lv_resto IS INITIAL. "Para no perder tanto performance con el mje
lv_porce = ( lv_actua * 100 ) / lv_total.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = lv_porce
text = lv_texto.
ENDIF.
ENDLOOP.
20121107
ABAP HR Tips: Inscribir Persona a Tipo de Evento
Esta función permite realizar la inscripción de una Persona a un Tipo de Evento de HR
Transacción: PV00 / PV07
FUNCTION Z_HR_UC35_INSCRIPCIONES.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" T_INSCRIPCIONES STRUCTURE ZXTV_INSCRIPCIONES
*"----------------------------------------------------------------------
Transacción: PV00 / PV07
FUNCTION Z_HR_UC35_INSCRIPCIONES.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" T_INSCRIPCIONES STRUCTURE ZXTV_INSCRIPCIONES
*"----------------------------------------------------------------------
ABAP HR Tips: Función para crear Tipo de Evento
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
*"----------------------------------------------------------------------
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
*"----------------------------------------------------------------------
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
*"----------------------------------------------------------------------
Suscribirse a:
Entradas (Atom)