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:
Comentarios (Atom)