Plantilla sencilla que permite cargar un archivo .csv separado por ";" y que muestra los datos subidos en ALV, faltaría agregar el procesamiento de los registros mediante un evento.
Mis respaldos SAP
(Esos pequeños tips que no quiero volver a buscar) By Daniel F. Ruiz, Santiago, Chile.
20170907
20170804
Plantilla LVC con PNPCE nueva
20170329
ABAP Tips: Imprimir múltiples HRFORM
Función para obtener múltiples HRFORM de un empleado (o de múltiples si se desea) y que permite imprimir en pantalla y exportar el binario para Web Dynpro. Puede ser mejorado sin duda.
FUNCTION zhr_sgu_liquidaciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_PERNR) TYPE PERSNO
*" VALUE(I_MES_INI) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_INI) TYPE PABRJ OPTIONAL
*" VALUE(I_MES_FIN) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_FIN) TYPE PABRJ OPTIONAL
*" EXPORTING
*" VALUE(E_RETURN) TYPE BAPIRET2
*" VALUE(E_BIN_FILE) TYPE XSTRING
*"----------------------------------------------------------------------
FUNCTION zhr_sgu_liquidaciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_PERNR) TYPE PERSNO
*" VALUE(I_MES_INI) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_INI) TYPE PABRJ OPTIONAL
*" VALUE(I_MES_FIN) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_FIN) TYPE PABRJ OPTIONAL
*" EXPORTING
*" VALUE(E_RETURN) TYPE BAPIRET2
*" VALUE(E_BIN_FILE) TYPE XSTRING
*"----------------------------------------------------------------------
20150703
ABAP Tips: ALV vía Submit to Spool
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.
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.
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.
Suscribirse a:
Entradas (Atom)