miércoles, 30 de julio de 2008
PENDIENTE DE ESTUDIAR
En el editor, escribimos transfer y pulsamos f1 para la ayuda.
Vemos las opciones del DATASET, y un capitulillo al final llamado consistencia de datos.
NOMBRES DE FICHEROS INDEPENDIENTES DE LA PLATAFORMA
Hay un sistema en SAP/ABAP para esto, no se que tal funcionará.
ficheros en abap.open dataset comenzando
Abrir en local.
Realmente no se puede abrir un fichero en local, se pueden exportar e importar
con funciones preparadas para ello. Lo natural en abap es manejar ficheros en el servidor.
Abrir en el servidor de aplicaciones.
La forma básica de abrir un fichero en el servidor de aplicaciones es esta:
Ejemplo:
DATA FNAME(60).
FNAME = '/tmp/myfile'.
OPEN DATASET 'myfile'.
Pero ¿Donde lo abre?.En el servidor de aplicaciones, ¿Que pasa cuando hay varios servidores de aplicaciones? pues no se.
El programa no funciona porque necesita mas opciones.
Opciones OPEN DATASET
Tipo de acceso
OPEN DATASET 'myfile' for input.
- ... INPUT
- ... OUTPUT
- ... APPENDING
- ... UPDATE
OPEN DATASET 'MYFILE' FOR INPUT BINARY MODE.
- ... BINARY MODE
- ... TEXT MODE encoding [linefeed]
- ... LEGACY BINARY MODE [{BIG|LITTLE} ENDIAN ] [CODE PAGE cp]
- ... LEGACY TEXT MODE [{BIG|LITTLE} ENDIAN] [CODE PAGE cp]
- [linefeed]
- Extras:
- ... {BIG|LITTLE} ENDIAN
... CODE PAGE cp
- Mas cosas sobre codificación
- enconding
- linefeed
TRABAJANDO CON EL DATASET
READ DATASET
para leer datos del ficheroTRANSFER
GET DATASET
para leer posicion del fichero.
SET DATASET
para cambiar la posicion del fichero
TRUNCATE DATASET
Para acabar el fichero donde queramos
CLOSE DATASET
Cerrar el fichero
DELETE DATASET
Borrar el fichero.
XXXXX
jueves, 24 de julio de 2008
abap mensajes
http://help.sap.com/saphelp_46c/helpdata/en/9f/dba79435c111d1829f0000e829fbfe/frameset.htm
EN el worbench http://help.sap.com/saphelp_46c/helpdata/en/d1/801b3e454211d189710000e8322d00/frameset.htm
En principio, los mensajes son siemplemente textos almacenados en la tabla T100, que podemos mantener por la transación SE91 y navegando con el workbench.
La extructura de la tabla T100 es:
- Clave de lenguaje.
- Clase de mensaje (30 caracteres)
- Numero de mensaje
- Texto del mensaje (up to 72 characters)
La clase de mensaje asigna mensajes a una aplicación o a una clase de desarrollo... y los numeros identifican el mensaje individual. Cuando necesitamos un mensaje o nos envian un mensaje, esta identificado por una clave de lenguaje, la clase de mensaje y el número de mensaje.
LA SENTENCIA MENSAJE.
En el propio .report, se puede de fininir la identidad o las clases de mensajes que vamos a utilizar ejemplo:
REPORT DEMO_MESSAGES_SIMPLE MESSAGE-ID SABAPDOCU.
La clase de mensajes que vamos a utilizar son los SABAPDOCU
La clave del mensaje es lo que llamaremos en abap
This context includes all situations where a selection screen is being processed, that is, the program is reacting to user input. In ABAP programs, this corresponds to the AT SELECTION-SCREEN processing blocks, except those with the OUTPUT addition.
Message Processing
Type | Display | Processing |
A | Dialog box | Program terminates, and control returns to last area menu |
E | Status bar | Selection screen processing terminates, and the selection screen is redisplayed. The screen fields specified through the additions to the AT SELECTION-SCREEN statement are ready for input. The user must enter a new value. The system then restarts the selection screen processing using the new values. You cannot use error messages with the ON HELP-REQUEST or ON VALUE-REQUEST additions. Instead, a runtime error occurs. |
I | Dialog box | Program continues processing after the MESSAGE statement |
S | Status bar of next screen | Program continues processing after the MESSAGE statement |
W | Status bar | Like type E, but the user can confirm the message by pressing ENTER without having to enter new values. The system then resumes selection screen processing directly after the MESSAGE statement. You cannot use warning messages with the ON HELP-REQUEST or ON VALUE-REQUEST additions. Instead, a runtime error occurs. |
X | None | Triggers a runtime error with short dump |
abao USO DE MESSAGE
PRIMER METODO:
Expecificar la clase de mensajes en el report
REPORT ASDFASDF MESSAGE-ID SABAPDOCU.
LLamar al mensaje de la forma
MESSAGE I003.
Así llamamos al mensaje 003 del tipo I, de la clase SABAPDOCU.
SEGUNDA FORMA :
MESSAGE I003(SABAPDOCU).
LLamamos al mensaje 003 de la clase SABAPDOCU, del tipo I
TERCERA FORMA :
DInamicamente:
MESSAGE ID 'SABAPDOCU' TYPE 'S' NUMBER '014'.
Podemos substituir los literales por variables.
OPCIONES DE MESSAGE
MESSAGE ..... {WITH
a veces el mensaje (el texto del mensaje) tiene caracteres anspersan que se pueden substituir por parametros a la hora de formar el mensaje, con la opción with podemos implementar estos parámetros.
MESAGE ..... RAISING
para lanzar la excepcion exe, caso de no existir, pues el programa continua.
logical databases
Cuidado, esta tecnica esta obsoleta
screens. select screen
dialogos screen
select screen
listas.
los dialogos screen , se hacen con el worbench y el screen painter.
los select screen se hacen directamente en abap
las listas no definen botones y recursos con nombres que luego se utilizan en ABAP
en este caso se utilizan areas de trabajo libres y las sentencias WRITE, ULINE; and SKIP .
SELECT SCREEN
http://help.sap.com/saphelp_46c/helpdata/en/1e/401ad6ee3c11d1951d0000e8353423/frameset.htm
Tres sentencias para manejar las select screen.
- PARAMETERS for single fields
- SELECT-OPTIONS for complex selections
- SELECTION-SCREEN for formatting the selection screen and defining user-specific selection screens
Una pantalla tipo select screen está definida entre estas dos sentencias :
SELECTION-SCREEN BEGIN OF SCREEN <numb><title>] [AS WINDOW].</title> [TITLE
...
SELECTION-SCREEN END OF SCREEN <numb>.
donde el número <nunb> hay que tener cuidado no este repetido y AS WINDOW es si la ventana se quiere modal.
PODEMOS DEFINIR UNA PANTALLA SIN TENER ESTAS DOS SENTENCIAS, Y ENTONCES EL VALOR POR DEFECTO ES EL 1000 (numbe=1000).
Dentro de estas sentencias podemos poner los parámetros que queramoos.
ADEMAS DE PARAMETROS, PODEMOS INCLUIR :
Bloques (varios parametros encuadrados en un mismo bloque).
SELECTION-SCREEN BEGIN OF BLOCK <block>
[WITH FRAME [TITLE <title>]]
[NO INTERVALS].
...
SELECTION-SCREEN END OF BLOCK <block>.
lineas en blanco
SELECTION-SCREEN SKIP [<n>].
lineas rectas
SELECTION-SCREEN ULINE [[/]<pos(len)>] [MODIF ID <key>].
comentarios
SELECTION-SCREEN COMMENT [/]
varios elementos en una linea
SELECTION-SCREEN BEGIN OF LINE.
...
SELECTION-SCREEN END OF LINE.
posicion del siguiente elemento
SELECTION-SCREEN POSITION <pos>.
xx
complex selection la sentencia select-option ????? tiene que ver con las logical databasses.
logical databases
Las logical databases esta obsoleto y no deberían usarse.
faltan las llamadas y los eventos.
x
atributos de la tabla screen http://help.sap.com/saphelp_46c/helpdata/en/9f/dbab6f35c111d1829f0000e829fbfe/frameset.htm
---------------------------------
Eventos antes de la edicion de selection screen (BPO) en SELECTION SCREEN.
EVENTO AT SELECTION-SCREEN OUTPUT.
Una vez definidos los selection screen, podemos definir los enventos antes de ediccion en el evento
AT SELECTION-SCREEN OUTPUT.
EVENTO AT SELECTION-SCREEN
Este es el evento "despues de output"
Este evento ocurre cuando pulsamos return, o el relojito de la pantalla.
podemos revisar los campos, antes de entrar en el proceso.
Esta es una forma de comprobar si la variable se ha modificado.
IF VARIABLE IS INITIAL
XXXXXXXXXXXXXX
sap/abap elementos de texto
Los elementos de texto son textos que sirven para que los programa muestren textos unificados e independientes del idioma. :
cualquier texto mostrado por una pantalla de programa puede ser mantenido con el mantenimiento de elementos de texto.
TRANSACION SE32
Hay tres tipos de elementos de texto:
Los simbolos de texto, los textos de seleccion y las cabeceras de lista.
simbolo de textos,
hay un identificador de 3 caracteres.
en abap, usaremos estos textos de dos formas:
text-
'texto que queramos'(
en cualquiermomento text-aaa es el texto con identidad aaa
'texto que queramos'(aaa) si existe el id aaa esto es equivalente a text-aaa, si no existe el id aaa, usara el 'texto que queramos'.
sap. problemas de navegacion y varios.
Voy a crear una tabla (bla-bla-bla). Creando Un elemento de datos y un dominio.
Pues nada me voy al diccionario(S11),
marco el pirulillo de "tabla base de datos" y escribo en el campo de nombre de la tabla ZTABLAMIA Y pincho el boton de crear.
Me sale una pantalla donde escribo:
descripcion breve: esta es una tabla mia
Tipo de entrega: L tabla de datos temporales entregada vacía.
Browse datos/actualizar tabla : le digo que visualizacion/actualizacion permitida.
Me voy a la pestaña de campos y le meto el nombre que quiero.
En el texbox de tipo de dato escribimos el que nos de la gana (que no exista) y doble click en el. nos pide que si queremos grabar (da igual) y nos saca el ventanuco de elemento de datos.
Ventana pa crear Elemento de datos:
nos pide el nombre breve (el que nos de la gana).
y el dominio: escribimos el que nos de la gana (uno que no exista) y de nuevo doble click y nos presenta la ventana de crear un dominio. (antes nos pedira grabar (optativo) y si queremos crear un nuevo dominio, decir que siiiii),
descripcion breve
tipo de datos char y ya esta
posiciones 10 y al disquete a grabar
En la ventana de crear catalogo bla bla bla, punchamos objeto local
activamos y Damos flecha azul pa tras (no la verde de arriba), coño y nos ha perdido lo del elemento de datos.
No pasa nada, nos ha salido la ventana de creación de campos y volvemos a punchar dos veces al tipo de datos
Grabamos y activamos el elemento de datos, antes nos pide actualizar denominadores de campo, pues nada, los actualizamos y a correr.
Acordarse de pulsar return despues de escribir un elemento de datos.
No hay forma humana de activar la tabla. Si verificamos el unico error que da es la falta de clave, pero la podemos poner y sigue sin activarse.
Para activar la tabla, tengo que punchar el boton opciones tecnicas y poner algo en clase de datos y categoria tamaño, darle a grabar y ya esta, pero da un "warning". Para quitar el warnin de no se que de categoria de ampliación, voy a detalles->categoria de ampliacion, pongo algo y ya esta. ya no hay warning
En Clase de entrega hemos puesto temporal porque si no es asi no nos permite tabla sin mandante.
En otras clases como la A hace falta un campo de mandante.
simplemente con crear un campo llamado mandt de elementos de datos mandt y ponerlo en el indice ya esta.
browser datos.
En el propio diccionario mientras estamos viendo los campos de la tabla, en utilidades->contenido de la tabla, podemos ver datos y añadir datos.
(en la pestaña de la tabla de entrega y actualizacion segun lo que tengamos puesto, permitirá unas cosas y otras).
SE16, SE17, SM30, and SM31 son posibles formas de browser.