Problema: Al ejecutar un reporte vía SUBMIT TO SPOOL el cual imprime un ALV, éste no se imprime en la salida, por ser ejecutado vía Job de Fondo (Batch). Esto se soluciona con la función GET_PRINT_PARAMETERS, como se ve en el siguiente ejemplo:
IF sy-batch = 'X'.
CLEAR print_parameters.
report = sy-repid.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
report = report
archive_mode = '1'
mode = 'BATCH'
no_dialog = 'X'
IMPORTING
out_parameters = print_parameters
valid = valid_flag
EXCEPTIONS
invalid_print_params = 2
OTHERS = 4.
IF valid_flag = 'X' AND sy-subrc = 0.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
TO SAP-SPOOL
SPOOL PARAMETERS print_parameters.
ENDIF.
ELSE.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
AND RETURN.
ENDIF.
(Esos pequeños tips que no quiero volver a buscar) By Daniel F. Ruiz, Santiago, Chile.
20150703
20140423
ABAP Tips: Programa que carga cualquier tabla desde un excel (.csv)
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.
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
*"----------------------------------------------------------------------
Suscribirse a:
Entradas (Atom)