Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

SAP

SAP PUERTA 18
by

stephanie morales

on 14 February 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of SAP

Agregar Datos ABAP. SAP. P18 * Definición TABLAS INTERNAS * Manejo de Datos * Análisis y Modificación
de los contenidos Definición Manejo de Datos Análisis y Modificación
de los contenidos de una tabla usar Construcciones Copia de Datos
de una tabla a otra Obtener Información Mostrar Contenido
a través de un Editor Insertar filas Operador del cuerpo
de la tabla Modificar filas Eliminar el contenido Ordenar Datos * Si la tabla interna contiene datos
* cuantas filas contiene Obtener Información
a) Determinar si una tabla interna esta vacía

Si el cuerpo de una tabla interna contiene sólo valores iniciales (espacios en blanco y espacios).

Utilizamos la siguiente declaración:

if it []is initial.

Si la prueba es verdadera, la tabla esta vacía.
Si es falso, significa que contiene al menos una fila.

b) Determinar el numero de filas

Utilizamos la variable sy-tfill (número de filas). Es fijado por la declaración DESCRIBE TABLE.

Sintaxis para la Declaración:

describe table it [lines i] [occurs j].

donde:
it --nombre de la tabla interna
i y j --variables numéricas Copia de Datos de una tabla a otra Instrucción APPEND LINES

Cuando se desea anexar al final de la tabla de destino.

Sintaxis para la Declaración:

append lines of it1 [from nf] [to nt] to it2.

Donde:
it1 y it2 -- tablas internas con o sin líneas de cabecera.
nf y nt -- variables numéricas, literales , o constantes.

Se aplican los siguientes puntos:

•Las estructuras de it1 y it2 deben coincidir
•nf índice de la primera fila para ser copiados de it1
•nt índice de la última fila para ser copiados de it2 * Si dos tablas internas tienen la misma estructura, utilizamos la siguiente instrucción para duplicar el contenido de una T.I. a otra.

Sintaxis para la declaración:

it2[] = it1[]. Instrucción INSERT LINES

Cuando se quiere insertar filas en un lugar que no sea el final en la tabla de destino.

Sintaxis para la Declaración:

insert lines of it1 [from nf] [to nt] into it2 [index nb].

Donde:
nb -- variable numérica, literal, o constante. Si deseamos copiar una parte de una tabla interna a otra, utilizamos append lines e insert lines. Se puede utilizar el operador cuerpo de la tabla para comparar el contenido de dos tablas, como se muestra aquí:

if it1[] = it2[].

Para emplear esta construcción, las tablas internas deben tener la misma estructura. b) Comparar el contenido de dos T.I. A) Copia de una parte de una tabla interna Mostrar Contenido a través de un editor Mostrar el contenido de una tabla interna para el usuario en un editor. Es útil para la depuración, y es como una interfaz simple que permite al usuario introducir y modificar los datos en la forma tabular. Sintaxis para la Declaración:

editor-call for it [title t] [display mode]

donde:
t -- variable numérica, literal, o constante.

Se aplican los siguientes puntos:

•it solo puede contener componentes de tipo c
•La longitud máxima de una fila es de 72 carácteres
•t es el texto que aparece en la barra de título de la ventana del editor

La adición de display mode (modo de visualización): hace que los datos que se muestran en el editor se vean en modo de visualización. El usuario podrá buscar y desplazarse, pero no podrá cambiar los contenidos. Insertar Filas Para insertar una fila en una tabla interna, utilizaremos la instrucción insert. Sintaxis para la Declaración:

insert [wa into] it [index n]

donde:
wa-- área de trabajo con la misma estructura que una fila de la tabla interna de it.
n -- literal, constante o variable.

Se aplican los siguientes puntos:

•si wa se especifica, el contenido de wa se inserta en it. Wa debe tener la misma estructura de it.
•Si wa no se especifica, el contenido de la línea de cabecera se inserta en it. Si no tiene línea de c. wa debe ser especificado.
•Si se especifica un index (índice), la nueva fila se inserta antes de n filas. Fila n se convierte entonces en la fila n+ 1.
•Insert se puede usar dentro o fuera of loop at it. Si está afuera, debe especificarse. Si esta adentro el index es opcional. Modificar Filas Sintaxis para la Declaración:

modify it [from wa] [index n] [transporting c1 c2 ... [where exp]]

donde:
it –- nombre de una tabla interna con o sin línea de cabecera.
wa -- area de trabajo con la misma estructura que una fila de la tabla interna de it.
n -- literal, constante o variable
c1 y c2 -- componentes de it
exp –- expresión lógica que afecta a componentes de it

Se aplican los siguientes puntos:

•si desde wa se especifica, la fila se sobrescribe con el contenido de wa
•si desde wa no se especifica, la fila se sobrescribe con el contenido de la línea de cabecera
•si el índice n se especifica, n indica el numero de la fila que se sobrescribe
•modify it puede especificarse dentro o fuera of loop at it. Si está afuera, el index n debe especificarse. Si esta adentro el index n es opcional. Para modificar el contenido de una o más filas de una tabla interna, utilizaremos la sentencia de modify. Eliminar el contenido de una tabla Instrucción FREE

Nos sirve para eliminar todas las filas de una tabla interna y liberar la memoria asociada.

Sintaxis para la Declaración:

free it.

Donde:
it -- nombre de una tabla interna con o sin línea de cabecera.

Se aplican los siguientes puntos:

•todos los registros se borran y toda la memoria usada por el cuerpo de la tabla interna es liberada.
•La línea de cabecera, si es que existe, no ha cambiado. Instrucción REFRESH

Nos sirve para eliminar todas las filas de una tabla interna, pero no dejan la memoria asignada.

Sintaxis para la Declaración:

refresh it.

Se aplican los siguientes puntos:

•Todas la filas se eliminan. Toda la memoria usada por el cuerpo de la T.I. permanece asignado.
•La línea de cabecera, si es que existe, no ha cambiado. Instrucción DELETE

Para borrar uno o mas filas de una tabla interna.

Sintaxis para la Declaración:

delete it (a) [index n]
(b) [from i] [to j]
(c) [where exp]

Donde:
n -- variable numérica, literal o constante.
exp -- expresión lógica que afecta a componentes de it

Se aplican los siguientes puntos:

•(a), (b) y (c) son opcionales
•Solo uno (a), (b) o (c) puede ser especificado
.Si desde i se especifica, se eliminan filas empezando por la fila i.
Si a j se especifica, se eliminan filas hasta e incluyendo la fila j-ésima.
.Si frome no se especifica con to, forme 1 asume.
Si el índice se especifica n, la fila n de it sea eliminado. Lectura de Datos •Tabla temporal almacenada en la RAM del servidor de aplicación.
•Es creada mientras se ejecuta el programa, descartada cuando termina.
•Consiste en una o más filas con la misma estructura.

Estructura de tablas interna:

•Body (cuerpo): Contiene las filas de la tabla interna (todas las filas tienen la misma estructura).

•Header (encabezado): Es una fila como las del body que se encarga de guardar el registro antes de ser agregados a la tabla interna.

Para definir la cantidad de filas que vamos a ingresar a la tabla usamos la sentencia “occurs”
Para poner un header usamos la sentencia “begin of” o “with header line” en la definición de la tabla. Definición de Tabla Interna

append [wa to] [initial line to] it.

Ejemplo:

1 report ztx1103.
2 data: begin of it occurs 3,
3 f1(1),
4 f2(2),
5 end of it.
6 it-f1 = 'A'.
7 it-f2 = 'XX'.
8 append it to it. "introduce el contenido header it a la fila
9 write: / 'sy-tabix =', sy-tabix.
10 it-f1 = 'B'.
11 it-f2 = 'YY'.
12 append it. "lo mismo que la línea 8
13 write: / 'sy-tabix =', sy-tabix.
14 it-f1 = 'C'.15 append it. "la tabla interna tiene 3 lineas.16 write: / 'sy-tabix =', sy-tabix. Agregar Datos a una tabla interna Leer Datos de una tabla interna Si queremos leer datos de una tabla interna usamos la sentencia “loop at” o “read table”.

loop at it [into wa] [from m] [to n] [where exp].
---
endloop.

Tenemos sentencias en el loop:

exist: termina el loop inmediatamente y continua luego del endloop.

Continue: va directo al endloop salteando todo el código, esa línea es salteada y sigue el bucle.

Check exp: Si el exp es verdadero la sentencia sigo como si nada, si es falso hace el mismo efecto que el continue.

Ejemplo 3.1 key expression

c1 = v1 c2 = v2 ...

(f1) = v1 (f2) = v2 ...


= wa


wa Effect

Busca la primer fila de la table interna donde el campo c1 tiene el valor v1(literal)

Igual que el anterior, pero f1 es una variable que contiene el nombre del componente que se ha comparado. El valor de f1 debe estar en mayúsculas. Si f1 está en blanco, la comparación se ignora

La wa tiene la misma estructura que la fila de la tabla interna. Esta expresión busca la primera fila que tiene el mismo contenido del wa(los blank son tomados como un valor, busca otro blank)

Como el anterior pero se usa si el wa tiene N campos, entonces busca una fila que coincida en los N campos. Cmpexp

f1 f2 ...




All fields


no fields Description

Después de una fila, se utilizará el valor de f1 en la fila encontrada superpone el valor de f1 en el área de trabajo. Entonces, el valor de F2 se superpone al valor de F2 en el área de trabajo, y así sucesivamente. Sólo los componentes con nombres de transporte se mueven. Todos los demás componentes permanecen sin cambios.

Todos los campos son transportados. Este es el valor por defecto, y tiene el mismo efecto que dejar fuera de la adición transporte.

No hay campos transportados. Ninguno de los campos en el área de trabajo se cambian. Búsqueda Binaria

Si usamos “with key” deberiamos usar una busqueda binaria para lozalizar la linea, en vez de un scan tradicional.

Comparing
•Si, después de una fila se ha encontrado y el contenido del wa y de la fila son el mismo el sy-bubrc = 0.
•Si el contenido es distinto sy-bubrc=2 y remplaza el contenido del wa por el del la fila).
•Si no se encuentra la fila el sy-bubrc>2 y el contenido del wa se deja igual. sort it [descending] [as text] [by f1 [ascending|descending] [as text]
f2 ...].

Ejemplo:

sort it by f1 descending f2.

Formas de ordenar:

•De forma binaria, teniendo en cuenta que cada carácter tiene un valor determinado.

•Usando el “as text” podemos ordenar por letras, teniendo en cuenta el “text eviornmet”(podemos cambiar el text evironmet con la sentencia “set locale”) Ordenar contenido de una tabla interna Ejemplo cuadro1.1 Si queremos agregar datos a una tabla interna, usamos la sentencia “append”. Si queremos ordenar el contenido de una tabla podemos usar la sentencia “sort it”. Utilizaremos las siguientes declaraciones:

.FREE
.REFRESH
.CLEAR
.DELETE
Instrucción CLEAR

Se puede utilizar para:

. eliminar todas las filas de una tabla interna y dejar la memoria asignada
. borrar la línea de cabecera

Sintaxis para la Declaración:

clear it | clear it[]

Se aplican los siguientes puntos:

•Si it tiene una línea de cabecera, clear it[] elimina todas las filas y la L.C.
•Si it no tiene L.C. ambas formas borran todas las filas y dejan la memoria asignada El cuerpo de una tabla interna está representada por la sintaxis it [], donde it es el nombre de la misma.

No puede haber nada entre los corchetes. Se puede usar esta sintaxis para realizar operaciones eficientes sin requerir el uso de la línea de cabecera. Si la tabla interna it no tiene línea de cabecera, podes utilizar cualquiera de los dos it[] ó it para representar el cuerpo. Proporciona: -la existencia de datos -comparar 2 tablas internas -duplicar una tabla interna Llenar una tabla interna
de
una tabla de Base de Datos Controlar el proceso
de rupturas Selección de varias filas Agregar filas En ABAP/4, la información que uno coloca en una tabla interna proviene de una o varias tablas de base de datos.

Las maneras de llenar una tabla interna desde una base de datos pueden ser de dos formas:

•Seleccionando todas las sentencias directamente del cuerpo de la tabla interna.
•Seleccionando solo algunas sentencias individualmente en un área de trabajo y luego anexarlas. Para seleccionar sentencias directamente de una tabla interna, se usa into table adicionado con el estado de selección. Esto toma la selección de las sentencias y las ubica esto en el cuerpo de la tabla interna en tan solo una sola operación sabiendo la operación de matriz. No pueden ser áreas trabajadas o áreas usadas o necesitadas. Esta operación realiza la selección de las sentencias de una sola vez, y no hay que andar seleccionando cada una a la vez. Esta operación es más eficaz y sencilla.

La siguiente es la sintaxis para into table en adición con la sentencia Select.

(a) select *
(b) select f1 f2 . . .

from dbtab into [corresponding fields of] table it.
Donde:

•dbtab -- el nombre de la tabla de base de datos.
•f1 y f2 -- los campos dentro de la tabla de base de datos dbtab.
•it -- nombre de la tabla interna.

Los siguientes puntos se aplican:

•it puede tener una cabecera.
•Otras adiciones, como el where y order by, puede estar seguido del it.
•Endselect no es usado con el into table. Seleccionar y Ordenar en la tabla Supongamos que el programa ya leyó los datos de la tabla interna. Si estos datos necesitan ser oredenados, se usa la sentencia sort .No se usa order by en select, solo si los campos están soportados por un index. En un sistema silencioso, independiente, el ordenamiento es un proceso mas rápido. Incluso si fueran a la par este método seria elegido, ya que descarga la suma de ciclos desde el servidor de base de datos hacia el servidor de aplicaciones. Los campos que son seleccionados deben estar en la tabla interna

Esta tabla muestra el uso de select con into table.La selección de campos deben ajustarse a la de la tabla interna. Esta tabla muestra las restricciones con las cuales se pueden encontrar. Reglas para el uso de SELECT con INTO TABLE
Sentencia

Select *

Select f1 Cuales filas están seleccionadas?

Todos los campos en la table de base de datos

f1 desde la tabla de base de datos La tabla interna debe tener tantas filas como las tiene la tabla de base de datos, y deben ser como los campos de la tabla de base de datos.

La tabla interna debe empezar con el campo como f1, o debe tener solo un campo y debe ser como el del f1. Restricciones Utilizando select para agregar lineas de una a la vez se requiere el uso de área de trabajo y segunda declaración, como append, insert, o collect.

Omitiendo la table la adición define la fila asignada al espacio de trabajo.

Es común el uso de una linea de cabecera en una tabla interna como también en un área de trabajo. Después de llenar con información una tabla interna, se va a necesitar escribir la salida de la información. Esta salida frecuentemente tiene una salida de información resumida (como total) en la parte superior o inferior del reporte. También podrían ser resúmenes provisionales (como subtotales) dentro de cuerpo del reporte.

Para hacer esto, tenemos que leer la información de la tabla interna y luego dentro loop at, usando las siguientes sentencias:

•at first / endat
•at last / endat
•at new / endat
•at end of / endat
•sum
•on change of / endon

Nuevo termino:

La primera sentencia de cada uno de estos estados pares-a excepción de sum (total)-controles cuando el código entre ellos es ejecutado. Este tipo de control es llamado control break. Su propósito es ejecutar el código entre ellos cuando una condición especifica de los datos es detectado en el proceso del circuito. Usando las sentencias at first y at last loop at it.
---
at first.
---
endat.
---
at last.
---
endat.
---
endloop.

Donde:
•it -- es la tabla interna.
•--- representa cualquier numero de líneas del código( incluyendo cero)

Se aplican los siguientes puntos:

•Estas sentencias pueden ser solamente utilizadas dentro de loop at; ellos no pueden ser usadas dentro de select.
•at first no tiene que venir antes de at last. El orden de estas sentencias pueden ser intercambiables.
•Estas sentencias pueden aparecer mchas veces en el mismo procedimiento. Por ejemplo podes tener 2 at first y 3 at last sentencias dentro de un procedimiento,ellos pueden aparecer en cualquier orden.
• Estas sentencias no deberían estar juntas una dentro de la otra. (esto quiere decir que at last no deberia estar ubicado dentro at first y endat).
•No hay adiciones a estas sentencias. Usa at first para:

•Inicio del proceso de procedimiento
•Escribiendo los totales en la parte superior del informe.
•Escribiendo cabezales. Usa at last para:

•Proceso terminado del procedimiento.
•Escribir los totales en la parte inferior del reporte.
•Escribir fundamentos en el pie del procedimiento. Usamos las sentencias at first y el at last para mostrar el proceso durante la primera o el último circuito al pasar una tabla interna. La siguiente sintaxis es para las sentencias at new y at end of.

sort by c.
loop at it.
---
at new c.
---
endat.
---
at end of c.
---
endat.
---
endloop.

Donde:
•c es el componente para it.

Los siguientes puntos se aplican a:

•Las sentencias pueden ser solo usadas dentro loop at; pero no se pueden utilizar dentro del select.
•at new no tiene que venir antes de at end of. Esta sentencia puede aparecer en cualquier orden.
•Estas sentencias pueden aparecer muchas veces dentro del mismo procedimiento.
•Esta sentencia no debería estar anidada dentro de otra (esto es que , at end of no debería estar ubicado dentro de at new / endat).
•No hay adiciones a estas sentencias. Usando las sentencias at new y at end Se usa las sentencias at new y at end of para detectar el cambio en la columna desde el paso del procedimiento hasta el próximo. Estas sentencias permiten ejecutar el código al principio y el final del grupo de registros. La sentencia sum se usa para calcular el total de filas en un nivel de control.

Sintaxis para la sentencia sum.

at first/last/new/end of.
---
sum.
---
endat.

Sum calcula un total para el valor actual del nivel de control que la contiene.

Esto es lo que hace:

•Encuentra todas las filas que tienen el mismo valor dentro del campo de nivel y todos los campos a la izquierda de la misma.
•Suma el número de columnas de la derecha del control de nivel.
•Ubica el total correspondiente de campos del área de trabajo. Usando la Sentencia SUM Otra sentencia que se puede utilizar para realizar el procesamiento de control de ruptura es on change of. Este tiene un comportamiento similar a la sentencia new.

Sintaxis para la sentencia on change:

on change of v1 [or v2 . . .].
---
[else.
---]
endon.

Donde:
•v1 y v2 son variables o nombre de los campos encadenados.
•. . . indica el núero o las condiciones que podrían seguirse.

Los siguientes puntos se aplican:

•Si el valor de cualquier variable (v1, v2, y sucesivamente) puede cambiar desde una prueba a otra, la sentencia on change of es ejecutado.
•Si los cambios no son detectados y else especificamente, las sentencias seguida de else son ejecutadas Usando la Sentencia on change of Bibliografía http://www.sapnet.ru/abap21day/ch13/ch13.htm#ControlBreakProcessing La información ha sido utilizada de la siguiente fuente: Integrantes * Camila Challapa
* Stephanie Morales
* Juan Manuel Viere FIN * Llenar una tabla interna * Controlar el proceso de rupturas read table it [into wa] [index i | with key keyexp [binary search] ] [comparing cmpexp] [transporting texp].
Full transcript