A continuación se listan las variables del Sistema disponibles.
SY-ABCDE - ABCDEFGHIJKLMNOPQRSTUVWXYZ
SY-BATCH - Informa si la ejecución es en batch
SY-CPROG - Nombre del programa principal
SY-CUCOL - Columna seleccionada
SY-CUROW - Fila seleccionada
SY-DATLO - Fecha del día (AAAAMMDD) local
SY-DATUM - Fecha del día (AAAAMMDD) del servidor
SY-DBCNT - cantidad de registros seleccionados (select)
SY-DBSYS - Nombre del Sistema de gestión de Base de Datos
SY-FDPOS - Posición encontrada en el string (después de la consulta)
SY-HOST - Nombre del host
SY-INDEX - Cantidad de pases dentro de un loop (do)
SY-LANGU - Lenguaje por defecto
SY-LINSZ - Tamaño de la línea de salida (write)
SY-LISEL - Contenido de la línea seleccionada
SY-LSIND - Nivel de entradas en listas interactivas
SY-MANDT - Mandante
SY-MSGID - Identificador de mensajes
SY-OPSYS - Sistema Operativo
SY-PAGNO - Número de página
SY-REPID - Nombre del programa (Inexistente en nuevas versiones)
SY-SAPRL - Release de SAP
SY-SCOLS - Cantidad de columnas en pantalla
SY-SROWS - Cantidad de filas en pantalla
SY-STACO - Columna inicial de la pantalla en curso
SY-STARO - Fila inicial de la pantalla en curso
SY-SUBRC - Código de retorno
SY-SYSID - Identificación del sistema (xxx, yyy ..)
SY-TABIX - Indice de una tabla interna
SY-TCODE - Nombre de la Transacción
SY-TIMLO - Hora local (HHMMSS)
SY-TITLE - Título del Listado
SY-TZONE - Zona horaria del servidor
SY-UCOMM - Campo OK code
SY-ULINE - ---------------
SY-UNAME - Nombre de usuario
SY-UZEIT - Hora del servidor (HHMMSS)
SY-VLINE - |
SY-WAERS - Moneda (PTS, DM .)
SY-ZONLO - Zona horaria local
SAP - ABAP
jueves, 3 de noviembre de 2016
Transacciones más utilizadas
Desarrollo | |
SE38 | Editor ABAP |
SE80 | Examinador de objetos |
SM35 | BatchInput |
SE37 | Funciones |
BAPI | Explorador Bapis |
SE93 | Transacciones |
ST05 | Traza de programas |
SE18 | Consultar BADI (definición) |
SE19 | Modificar BADI (implementación) |
ST22 | Ver dumps |
SE24 | Class Builder |
SM36 | Crear JOBs |
SM37 | Traza de JOBs |
SM62 | Creación eventos |
SAAB | Gestión de break-points y asserts |
SLG0 | Crear objetos de LOG |
SLG1 | Consultar LOGs |
SLG2 | Borrar LOGs |
WE60 | Consulta de IDOCs |
DWDM | Ejemplos ABAP |
SM02 | Mensajería |
SWO3 | Explorador de Business Objects |
Tablas/Estructuras | |
SE11 SE14 |
Diccionario ABAP Actualización del contenido al modificar elementos de datos |
SE16 | Visualizar tabla |
SE16N | Visualizar tabla |
SM30 | Vistas de actualización / Mantenimiento |
BS22 | Status de órdenes |
SNRO | Secuencias de números |
Smartforms | |
SE71 | SapScript |
NACE | Gestión de mensajes |
SE73 | Gestión de fuentes |
SMARTSTYLES | Definir el estilo del formulario |
SMARTFORMS | Crear el formulario |
SE63 | Traducción de SmartForms |
SE78 | Cargar/Gestionar Imágenes (bitmap / para sapscript o smartform) |
SO10 | Textos estándares - Cargar/Gestionar Imágenes (tiff / solo para sapscript) |
SPAD | Gestión de SPOOL(definiciones de impresoras, tamaños de papel...) |
Sistema | |
SM04 | Eliminar sesiones abiertas |
SM12 | Liberar bloqueos |
SE01 | Transporte |
STMS | Transporte |
SPAD | Impresoras |
SP01 | Spool de impresiones en general de cualquier usuario |
SP02 | Spool de impresiones propias o del usuario utilizado |
SE03 | Buscar objetos en orden de transporte y tareas |
SM59 | Cambiar de sistema (internamente) |
SM36 | Crear Jobs |
SM62 | Crear eventos |
SM37 | Borrar Jobs |
ST05 | Trazas |
SU01 | Configuración de usuarios |
AL11 | Navegador sist. ficheros |
SXDA | Direct Input |
SM69 | Ejecución de comandos del S.O. |
CACS_FILE_COPY | Subir/Bajar ficheros del servidor |
LSMW | Legacy System Migration Workbench(cargas masivas de datos) |
BDLR | Biblioteca de programas para cargas de datos |
SOST | Verificar mails enviados |
SCC1 | Transportar ordenes de un mandante a otro |
Querys | |
SQ01 | Editor Query |
PP: Producción | |
CO01 | Crear orden de producción |
CO02 | Editar orden de producción |
CO03 | Visualizar orden de producción |
CO11N | Notificar orden de producción |
KO88 | Liquidar orden de producción |
CO13 | Anular notificación |
SD: Ventas | |
VA01 | Crear pedido |
VA02 | Modificar pedido |
VA03 | Visualizar pedido |
VL02N | Modificar entrega |
VL03N | Visualizar entrega |
VF01 | Crear factura |
VF02 | Modificar factura |
VF03 | Consultar factura |
VA22 | Ofertas |
MM: Gestión de materiales | |
ME23N | Consultar pedidos de compras |
ME22N | Modificar pedidos de compras |
ME21N | Crear pedidos de compras |
MM02 | Editar material |
MB51 | Buscar docs de material |
MB03 | Consultar doc de material |
MB1C | Movimientos de mercancía (poner stock...) |
MMSC | Dar de alta un material en un almacén |
FI: finanzas | |
FB01 | Crear asiento contable |
FB02 | Modificar asiento contable |
FB03 | Consultar asiento contable |
FIBF | Acceso a BTEs |
IDoc/EDI | |
WE60 | Mensajes IDoc |
WE21 | Puertas IDoc |
WE20 | Interlocutores EDI |
WE02 | Listado IDoc con status |
WE16 | Cargar fichero de texto IDoc |
WE19 | Reprocesado de IDoc (visible/debugging) |
BD87 | Reprocesado de IDoc |
Workflow | |
SWO1 | Repositorio de objetos |
PFWS | Actualizar Modelo Workflow |
PFTS | Tarea Estándar |
PFTC | Actualización general de tareas |
PFAC | Actualizar regla |
SWE2 | Visual./Actual.acoplam.tipo eventos-Modificar y visualizar eventos |
SWEC | Acoplam.eventos p.docs.modificación-Chequear tipo de de evento |
PPOM | Actualizar estructura organizativa |
PPOMW | Mod.org.y ocupación (workflow) |
PPOME | Modific.organización y ocupación |
PPOMA | Modificar atributos |
SBWP | SAP Business Workplace |
SWU3 | Customizing de workflow automático |
SWELS | Act./Desactivar trace eventos |
SWEL | Visualizar trace de eventos |
SWI1 | Report selección para workflows |
SWIA | Report administración para WI |
SWPR | WFM: Reiniciar workflow tras error |
SWPC | WFM: Continuar workflow tras fallo del sistema |
SWU_OBUF | Mem.interm.tiempo ejecución PD-Org |
PPWFBUF | Sincronizar memo.interm.workflow OM |
SWDD | Creación y edición |
Crear una transacción asociada a un reporte
Introducción
Una transacción asociada a un reporte en SAP, se utiliza para que
los usuarios puedan acceder mediante una transacción a los programas que nosotros hemos
creado anteriormente, dado que muchas veces ellos no tendran permisos para
ejecutar la transacción SE38 o otras transacciones utilizadas para desarrollo.
Ejecución
Iremos a la transacción SE93, esta se utiliza
para crear transacciones asociadas a reportes. Esta nos mostrará una pantalla, donde
pondremos el nuevo nombre de la transacción, (recordamos que las transacciones no estándar empiezan por Z) y le daremos botón CREATE.
A continuación veremos una ventana de diálogo donde
rellenamos el campo descripción breve y en el tipo de transacción seleccionamos
transacción de reporte y hacemos click en continuar.
En la siguiente pantalla, rellenaremos los campos program con el nombre del programa (creado
anteriormente) y Selection Screen, que dejaremos con
el valor por defecto 1000. También podríamos agregar una variante para asociarla con la transacción , para acabar grabamos y la asignamos al paquete correspondiente y Orden de Transporte.
Para finalizar comprobaremos que funciona
correctamente, la escribimos en el campo de comandos y veremos que se ejecuta
como cualquier otra transacción de SAP.
Clases para trabajar con ficheros en SAP
Listado de Clases y sus correspondientes Métodos para subir y bajar archivos de diferentes tipos desde o hacia la computadora.
Aporte de Yesica Castellano.
cl_gui_frontend_services=>file_save_dialog
Muestra un popup donde se puede
seleccionar dónde guardar un fichero
data: filename type string,
path type string,
fullpath type string.
cl_gui_frontend_services=>file_save_dialog(
changing
filename = filename
path = path
fullpath = fullpath ).
cl_gui_frontend_services=>gui_download
Graba un fichero en el PC local
cl_gui_frontend_services=>gui_download(
exporting
filename = fullpath
filetype = 'BIN'
changing
data_tab = binary_tab ).
cl_gui_frontend_services=>file_open_dialog
Abre un popup donde seleccionar un
fichero a cargar
data retfiletable type filetable.
data retrc type sysubrc.
data retuseraction type i.
at selection-screen on value-request for filename.
call method cl_gui_frontend_services=>file_open_dialog
exporting
multiselection = abap_false
file_filter = '*.xls'
default_extension = 'xls'
changing
file_table = retfiletable
rc = retrc
user_action = retuseraction.
read table retfiletable into filename index 1.
cl_gui_frontend_services=>gui_upload
Lee un fichero del PC local
data l_filename type string.
l_filename = filename.
call method cl_gui_frontend_services=>gui_upload
exporting
filetype = 'BIN'
filename = l_filename
importing
filelength = input_length
changing
data_tab = binary_tab.
cl_gui_frontend_services=>directory_browse
Recupera la lista de ficheros dentro
de un directorio
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Selecciona un directorio'(090).
initial_folder = 'C:\'
CHANGING
selected_folder = l_s_fol
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
cl_gui_frontend_services=>get_computer_name
Recupera el nombre del PC en SAP
data: l_hostname type string.
CALL METHOD cl_gui_frontend_services=>get_computer_name
CHANGING
computer_name = l_hostname
* EXCEPTIONS
* CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
* others = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
cl_gui_frontend_services=>clipboard_export
Exporta el contenido de una tabla
interna al portapapeles.
DATA rc TYPE i.
CALL METHOD cl_gui_frontend_services=>clipboard_export
IMPORTING
data = source
CHANGING
rc = rc.
miércoles, 2 de noviembre de 2016
Crear rango de períodos
Para empezar vamos a necesitar declarar un rango de tipo DATUM
DATA: r_fecha TYPE RANGE OF datum,
sr_fecha LIKE LINE OF r_fecha.
Luego se loopea el SELECT-OPTIONS/PARAMETER que contiene las fechas para armar el rango.
En este ejemplo vamos a usar un SELECT-OPTIONS
LOOP AT s_peri.
* Se limpia la estructura del rango al inicio de cada vuelta.
CLEAR sr_fecha.
* Como se trata de un rango el valor de option debe ser BT(BeTween).
sr_fecha-option = 'BT'.
* Se asigna el indicador para incluir/excluir valores
sr_fecha-sign = s_peri-sign.
* Modificamos el dia del LOW por el 1
s_peri-low+6(2) = c_01.
* y lo asignamos al LOW de nuestro rango previamente declarado
sr_fecha-low = s_peri-low.
* En este caso necesitamos que el HIGH del SELECT-OPTIONS no esté vacío
* entonces lo validamos
IF s_peri-high IS INITIAL.
MESSAGE s055(zmm) "Debe ingresar período hasta.
DISPLAY LIKE c_e.
LEAVE LIST-PROCESSING.
ELSE.
"Obtenemos el último día del período ingresado.
CONCATENATE c_cero
s_peri-high+4(2)
INTO v_poper.
v_anio = s_peri-high(4).
* Obtener el último día del mes.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = v_anio
i_periv = c_periv
i_poper = v_poper
IMPORTING
e_date = v_high
EXCEPTIONS
input_false = 1
t009_notfound = 2
t009b_notfound = 3
OTHERS = 4.
"Si se produce un error.
IF sy-subrc IS NOT INITIAL.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ELSE.
* Se asigna la fecha del último día del mes ingresado en el HIGH
sr_fecha-high = v_high.
* Se calcula la cantidad de meses en el rango porque se necesita que no haya mas de tres períodos de diferencia
CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'
EXPORTING
beg_da = sr_fecha-low
end_da = sr_fecha-high
IMPORTING
no_month = v_meses
no_year = v_anios
EXCEPTIONS
dateint_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ELSE.
* Si es mayor a 3 se muestra el mensaje.
IF v_meses GT 3
OR v_anios NE 0.
MESSAGE s056(zmm) "La diferencia entre períodos no puede ser mayor a 3.
DISPLAY LIKE c_e.
LEAVE LIST-PROCESSING.
ELSE.
* Si está todo correcto se apendea la linea al rango
APPEND sr_fecha
TO r_fecha.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
Recordar declara cada variable para uso en las funciones con el tipo indicado dentro de la función.
DATA: r_fecha TYPE RANGE OF datum,
sr_fecha LIKE LINE OF r_fecha.
Luego se loopea el SELECT-OPTIONS/PARAMETER que contiene las fechas para armar el rango.
En este ejemplo vamos a usar un SELECT-OPTIONS
LOOP AT s_peri.
* Se limpia la estructura del rango al inicio de cada vuelta.
CLEAR sr_fecha.
* Como se trata de un rango el valor de option debe ser BT(BeTween).
sr_fecha-option = 'BT'.
* Se asigna el indicador para incluir/excluir valores
sr_fecha-sign = s_peri-sign.
* Modificamos el dia del LOW por el 1
s_peri-low+6(2) = c_01.
* y lo asignamos al LOW de nuestro rango previamente declarado
sr_fecha-low = s_peri-low.
* En este caso necesitamos que el HIGH del SELECT-OPTIONS no esté vacío
* entonces lo validamos
IF s_peri-high IS INITIAL.
MESSAGE s055(zmm) "Debe ingresar período hasta.
DISPLAY LIKE c_e.
LEAVE LIST-PROCESSING.
ELSE.
"Obtenemos el último día del período ingresado.
CONCATENATE c_cero
s_peri-high+4(2)
INTO v_poper.
v_anio = s_peri-high(4).
* Obtener el último día del mes.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = v_anio
i_periv = c_periv
i_poper = v_poper
IMPORTING
e_date = v_high
EXCEPTIONS
input_false = 1
t009_notfound = 2
t009b_notfound = 3
OTHERS = 4.
"Si se produce un error.
IF sy-subrc IS NOT INITIAL.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ELSE.
* Se asigna la fecha del último día del mes ingresado en el HIGH
sr_fecha-high = v_high.
* Se calcula la cantidad de meses en el rango porque se necesita que no haya mas de tres períodos de diferencia
CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'
EXPORTING
beg_da = sr_fecha-low
end_da = sr_fecha-high
IMPORTING
no_month = v_meses
no_year = v_anios
EXCEPTIONS
dateint_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ELSE.
* Si es mayor a 3 se muestra el mensaje.
IF v_meses GT 3
OR v_anios NE 0.
MESSAGE s056(zmm) "La diferencia entre períodos no puede ser mayor a 3.
DISPLAY LIKE c_e.
LEAVE LIST-PROCESSING.
ELSE.
* Si está todo correcto se apendea la linea al rango
APPEND sr_fecha
TO r_fecha.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
Recordar declara cada variable para uso en las funciones con el tipo indicado dentro de la función.
Suscribirse a:
Entradas (Atom)