Академический Документы
Профессиональный Документы
Культура Документы
READ REPORT
READ TABLE
READ TEXTPOOL
RECEIVE RESULTS FROM FUNCTION
REFRESH
REFRESH CONTROL
REFRESH SCREEN
REJECT
REPLACE
REPORT
RESERVE
ROLLBACK WORK
SCAN
SCROLL LIST
SEARCH
SELECT .. ENDSELECT
SELECTION-OPTIONS
SELECTION-SCREEN
SET BLANK LINES
SET COUNTRY
SET CURSOR
SET EXTENDED CHECK
SET LANGUAGE
SET LEFT SCROLL-BOUNDARY
SET LOCALE LANGUAGE
SET MARGIN
SET PARAMETER
SET PF-STATUS
SET PROPERTY
SET RUN TIME ANALIZER
SET SCREEN
SET TITLEBAR
SET UPDATE TASK LOCAL
SET USER-COMMAND
SHIFT
SKIP
SORT
SPLIT
START-OF-SELECTION
STATICS
STOP
SUBMIT
SUBTRACT
SUBTRACT-CORRESPONDING
SUM
SUMMARY
SUPRESS DIALOG
SYNTAX-CHECK
SYNTAX-CHECK FOR DYNPRO
SYNTAX-TRACE
TABLES
TOP-OF-PAGE
TRANSFER
TRANSLATE
TYPE-POOL
TYPE-POOLS
TYPES
ULINE
UNPACK
UPDATE
WAIT
WHILE .. ENDWHILE
WINDOW
WRITE TO
ANEXO II FUNCIONES UTILES
FUNCIONES DE SAP
APPL_LOG_DISPLAY
APPL_LOG_DISPLAY_INTERN
APPL_LOG_DELETE
APPL_LOG_DELETE_WITH_LOGNUMBER
APPL_LOG_INIT
APPL_LOG_INIT_MESSAGES
BDC_INSERT
BDC_OPEN_GROUP
BP_CALCULATE_NEXT_JOB_STARTS
BP_CHECK_EVENTID
BP_EVENT_RAISE
BP_FIND_JOBS_WITH_PROGRAM
BP_JOB_DELETE
BP_JOB_COPY
BP_JOB_GET_PREDECESSORS
BP_JOB_GET_SUCESSORS
BP_JOBLIST_PROCESSOR
BP_JOBLOG_READ
BP_JOBLOG_SHOW
BP_JOBVARIANT_OVERVIEW
BP_JOBVARIANT_SCHEDULE
BP_START_DATE_EDITOR
DOWNLOAD
DB_SELECT_FULL_TABLE
DYNP_VALUES_READ
DYNP_VALUES_UPDATE
DISPLAY_LIST
GET_PRINT_PARAMETERS
JOB_CLOSE
JOB_OPEN
JOB_SUBMIT
LIST_FROM_MEMORY
MESSAGE_PREPARE
POPUP_NO_LIST
POPUP_TO_CONFIRM_LOSS_OF_DATA
POPUP_TO_CONFIRM_STEP
POPUP_TO_CONFIRM_WITH_MESSAGE
POPUP_TO_DECIDE_WITH_VALUE
POPUP_TO_DECIDE
POPUP_TO_DECIDE_LIST
POPUP_TO_DECIDE_WITH_MESSAGE
POPUP_TO_DISPLAY_TEXT
SCHEDULE_MAIL_SEND
UPLOAD
WS_DOWNLOAD
WS_QUERY
WS_UPLOAD
WRITE_LIST
FUNCIONES DE INTERNET
CALL_BROWSER
WWW_LIST_TO_HTML
WWW_ITAB_TO_HTML
ANEXO III ALGUNOS REPORTES UTILES DE SAP
ANEXO IV VARIABLES DEL SISTEMA
ANEXO V TABLA DE CONVERSION DE TIPO DE DATOS
ANEXO VI STANDARES DE PROGRAMACION
************************************************************
* Definicin de inicializaciones
************************************************************
INITIALIZATION.
************************************************************
* Proceso principal
************************************************************
START-OF-SELECTION.
************************************************************
* Acciones de final de proceso
************************************************************
END-OF-SELECTION.
************************************************************
* Definicin de cabeceras del listado
************************************************************
TOP-OF-PAGE.
************************************************************
* Acciones previas a mostrar la pantalla
************************************************************
AT SELECTION-SCREEN OUTPUT.
************************************************************
* Acciones en la pantalla de seleccin
************************************************************
AT SELECTION-SCREEN.
************************************************************
* Acciones cuando se selecciona una lnea (double click)
************************************************************
AT LINE-SELECTION.
************************************************************
* Acciones dependientes de usuario
************************************************************
AT USER-COMMAND.
************************************************************
* Acciones dependientes de las teclas de funcin
************************************************************
AT PFN.
*************************************************************
*
SUBRUTINAS
*
************************************************************
EVENTO 1
Instruccin 1
Instruccin 2
Evento 2
Instruccin n
Evento 3
SI
EVENTO 2
Instruccin 1
Instruccin 2
Evento 1
Instruccin n
SI
EVENTO 3
Instruccin 1
Instruccin 2
Fin
Instruccin n
Aplicaciones.
Reporting (clsico e interactivo)
programacin de dialogo o Transacciones (diseo de superficies CUA y diseo de pantallas
Screen Painter
Manu Painter (CUA Painter)
Otras aplicaciones (Interfases Batch input, Formularios SAPScript, comunicaciones, etc)
Creando un Programa ABAP.
El paso previo al desarrollo en definir los atributos del programa.
Cuando creamos un programa nuevo, introducimos su nombre Zxx00000 a travs de SE38 o siguiendo los pasos de
Men de SAP.
Indicar el titulo del programa
Tipo de programa (Obligatorio), generalmente un 1 = Report
Status del programa (Opcional)
Aplicacin sobre la que haremos referencia en el programa. Con un * especificamos que puede hacer
referencia a cualquier aplicacin.
Clase del programa (Opcional)
Base de datos lgica (Opcional)
Aplicacin de la base de datos lgica (Opcional)
Imagen de seleccin (Opcional)
Inicio va variante (Opcional)
Luego de introducir los atributos se solicita la clase de desarrollo, que es una manera de agrupar los programas
funcionalmente. Si aun no se conoce dicha clase, consideramos provisionalmente el programa como o un objeto local
privado.
Una vez escrito el programa en el editor ABAP, podemos verificarlo sintcticamente y antes de ejecutarlo debemos
generarlo. En el proceso de generacin SAP transfiere el estado del programa a diversas tablas del Diccionario de
Datos. La tabla TRDIR contiene informacin de los programas del sistema.
Con tecla F1 parado el cursor sobre una instrucciones podemos obtener toda la informacin de sintaxis de la misma.
Podemos grabar o recuperar programas de un dispositivo local, desde Men de Utilidades.
Carcter
Punto flotante
Entero
Texto Numrico
Nmero Packed
Hexadecimal
Fecha yyyymmdd
Hora hhmmss
Declaracin de campos.
Se declaran mediante la sentencia DATA. Si no se determina el tipo, se asume carcter de longitud 1.
Para determinar longitud especifica la sentencia es: DATA XXX(longitud).
Con el parmetro TYPE se pueden utilizar otros tipos de datos:
DATA NUM(5) TYPE N.
DATA NUMERO(2) TYPE P.
DATA FECHA TYPE D.
Con el parmetro LIKE se puede definir una variable con los atributos de longitud y tipo de una variable de base de
datos.
DATA XXX LIKE LFA1-XXXX.
Con el parmetro VALUE se puede inicializar variables a valores distintos de los prefijados
DATA NUM TIPE P VALUE 1.
Registro de Datos. Es un conjunto de campos relacionados lgicamente en una estructura.
DATA: BEGIN OF DATOS
DATO1(20) VALUE zzzzzzzzzz,
DATO2 TYPE D,
DATO3 LIKE BASE-DATO3,
END OF DATOS.
El acceso a estos campos ser de la forma:
DATOS-DATO1 .... DATOS-DATO3.
Tablas Internas. Se guardan en memoria y no en el diccionario de datos.
La clusula OCCURS determina la cantidad de lneas a guardar. Si hay desborde, el resto
de las lneas se guarda en disco, realizando paginado.
Se declaran, inicializan y referencian como un registro de datos.
DATA: BEGIN OF DATOS OCCURS 100
DATO1 LIKE BASE1-DATO1,
DATO2 LIKE BASE2-DATO2,
DATO3 LIKE BASE3-DATO3,
END OF DATOS.
Estructura de una base. Se define una variable con la misma estructura de una tabla de base de datos.
DATA: BEGIN OF DATOS OCCURS 100
INCLUDE STRUCTURE T001
DATA END OF DATOS.
Asignacin de valores.
Hay distintas formas de realizarlo. Una asignacin directa, como resultado de una operacin o de una conversin
automtica entre campos, como resultado de un MOVE.
El MOVE realiza un transporte del contenido del campo 1 al campo 2.
MOVE dato 1 TO dato 2 equivalente a
Dato 2 = Dato 1
equivalente a
COMPUTE Dato 2 = Dato 1
Se puede asignar valores de una parte de la variable utilizando OFFSET:
VARIABLE+offset(longitud)
Offset:
Longitud:
p.e.
DATA:
Operaciones aritmticas.
Con la instruccin COMPUTE y + - / * y con las instrucciones ADD TO, SUBTRACT FROM, MULTIPLY BY y
DIVIDE BY.
Tambin estn disponibles las funciones matemticas EXP, LOG, SIN, COS, SQRT, DIV, MOD y STRLEN.
Si se utiliza parntesis en una operacin deber estar precedido y seguido por un blanco.
Cadenas de Texto
Desplazamiento del contenido de un campo, utilizar
SHIFT variable.
(desplaza a izquierda 1 caracter)
SHIFT variable BY n PLACES
(desplaza a izquierda n caracteres)
SHIFT variable BY n PLACES RIGHT
(desplaza a derecha n caracteres)
SHIFT variable BY n PLACES CIRCULAR (desplaza CIRCULAR a izquierda n caracteres)
SHIFT variable BY n PLACES CIRCULAR RIGHT (desplaza CIRCULAR a derecha n caracteres)
p.e.
campo antes
= HOLA
campo despus = HO LA
CONDENSE campo
Elimina los blancos existentes a la izquierda del campo y si entre caracteres existe mas de un blanco, deja uno
solamente.
CONDENSE campo NO-GAPS
Elimina todos los blancos.
Variables del sistema.
ABAP tiene algunas variables internas que se actualizan automticamente, todas ellas comienzan con el prefijo SY-.
Un detalle de las mismas se encuentra en el Anexo IV
Control de flujos y condicionantes.
En ABAP se dispone de una serie de instrucciones para la operacin de ciclos o flujos de proceso
IF condicin.
ENDIF.
IF condicin.
ELSE.
ENDIF.
IF condicin.
ELSEIF.
ELSEIF.
ELSE.
ENDIF.
CASE campo.
WHEN valor.
WHEN OTHERS.
ENDCASE.
Verificacin de rangos, utilizar
IF Campo1 BETWEEN Campo2 AND Campo3 .
Verificacin de valores iniciales
IF Campo1 IS INITIAL.
instruccin condicional basada en el cambio de algn dato durante el acceso a una BD o tabla interna
ON CHANGE OF campo.
ENDON.
Ciclos repetitivos
DO n TIMES.
ENDDO.
Se pueden anidar distintos niveles de DO..ENDDO.
La variable SY-INDEX lleva el conteo del numero de ciclos. En el caso anidado, har referencia al ciclo en proceso.
Ciclos bajo cumplimiento de una condicin
WHILE condicin.
ENDWHILE.
Se pueden anidar distintos niveles de WHILE...ENDWHILE.
Condicionantes.
En las condiciones se podr utilizar los clsicos operadores:
AND
OR
EQ (=)
EN (<>)
GT (>)
LT (<)
GE (>=)
LE (<=)
Campo1 NP Patron1
Instrucciones de control.
Las sentencias que se detallan a continuacin permiten finalizar un ciclo o proceso.
CHECK condicin.
EXIT.
STOP.
LEAVE.
memoria en forma simultanea. Si el OCCURS es muy pequeo, generar procesos de paginacin a disco, si es muy
grande generara un gran gasto de recursos.
Definicin
DATA: BEGIN OF nombre de tabla OCCURS n
Definicin de campos
END OF nombre de tabla.
Llenado.
Aade un registro a una tabla interna con los valores que se tengan en el rea de trabajo
APEND nombre de tabla.
Aade o suma la lnea de cabecera. Sumara los campos de tipo P,F,I si existe en la tabla una lnea con
campos idnticos (tipo C) a los del rea de trabajo. Es una instruccin muy lenta que normalmente se
sustituye con la combinacin de READ, INSERT o MODIFY
COLLECT
Llenar la tabla directamente, si la misma tiene igual estructura que la BD.
SELECT * FROM Tabla de Base de Datos INTO TABLE Nombre de Tabla
Ordenar.
SORT Nombre de Tabla.
(Ordena por la estructura, independientemente del tipo de campos)
SORT Nombre de Tabla BY campo1 ... campon ASCENDING | DESCENDING.
(Default ASCENDING)
Procesar.
Para recorrer una tabla utilizaremos
LOOP AT Nombre de Tabla [WHERE condicin]
ENDLOOP.
En cada iteracin coloca la lnea de la tabla que se esta procesando en la lnea de cabecera.
Se puede restringir el proceso con la condicin WHERE. Si no existe ningn registro que cumpla la
condicin SY-SUBRC ser distinto de 0.
SY-TABLX contiene el numero de entrada que se esta procesando.
Se puede procesar entre limites
LOOP AT Nombre de Tabla FROM Inicio TO Fin
Se pueden generar procesos de ruptura dentro del LOOP. La tabla debe estar ordenada con igual orden
que la utilizacin de los niveles de ruptura.
AT FIRST.
Instrucciones
ENDAT.
AT LAST.
Instrucciones
ENDAT.
AT NEW campo.
Instrucciones
ENDAT.
AT END OF campo
Instrucciones
ENDAT.
Si utilizamos la sentencia SUM dentro de un AT .. ENDAT realizara la suma de todos los campos P,I,F
de ese nivel de ruptura (para el clculo de subtotales). El resultado lo deja en el rea de trabajo de la
tabla.
Los modulos de funcion son guardados en una librera central y agrupados por el
tipo de funcion que realizan. Se caracterizan por tener una interfase definida y
porque realizan tratamiento de excepciones.
CALL FUNCTION Nombre de Funcion
EXPORTING parametros de Entrada = valor
[IMPORTING parametros de Salida = valor de retorno]
[TABLES Nombre de Tabla = Tabla del Programa]
EXCEPTIONS excepcion = valor
En el EXPORTING se especificanm los parmetros de entrada
En el IMPORTING (opcional) el resultado o retorno de la funcion
En TABLES (opcional) las tablas que se usan como parmetros.
En la interfase de los modulos de funcion se indican los valores de las
excepciones, que posteriormente con SY-SUBRC pueden ser accedidos.
Las excepciones se activan mediante:
MESSAGE ....... RAISING excepcion.
o
RAISE excepcion.
Intercambio de datos entre Reportes distintos.
Es posible intercambiar datos entre distintos programas (llamados desde instrucciones SUBMIT)
a traves de la memoria de SAP.
Para grabar en memoria
EXPORT campo1...campon INTO MEMORY.
Para recuperar de memoria.
IMPORT campo1...campon TO campox.campoz FROM MEMORY.
ADD
Definicin
Aade el contenido del campo <n> sobre el campo <m>.
Adems del formato bsico, la sentencia ADD tiene otra variante para la suma de campos
adyacentes.
Sintaxis:
ADD <n> TO <m>.
ADD <n1> THEN <n2> UNTIL <nz> { GIVING | TO }<m>.
Suma la secuencia de campos <n1>, <n2>, ... , <nz>. <m>. <n1>, >n2>, ... , <nz> deben ser una
secuencia de campos equidistantes en memoria del mismo tipo y longitud.
Con la clusula GIVING el campo <m> se actualiza con el resultado de la suma.
Con la clusula TO al campo <m> se le aade el resultado de la suma.
Ejemplo 1
DATA:
NUMBER TYPE I VALUE 3,
SUM TYPE I VALUE 5.
ADD NUMBER TO SUM.
Ejemplo 2
DATA:
BEGIN OF NUMBERS,
ONE TYPE P VALUE 10,
TWO TYPE P VALUE 20,
THREE TYPE P VALUE 30,
FOUR TYPE P VALUE 40,
FIVE TYPE P VALUE 50,
SIX TYPE P VALUE 60,
END OF NUMBERS,
SUM TYPE I VALUE 1000.
ADD NUMBERS-ONE THEN NUMBERS-TWO
UNTIL NUMBERS-FIVE GIVING SUM.
Errores
BCD_BADDATA : El campo P tiene un formato BCD incorrecto.
BCD_FIELD_OVERFLOW : El campo del resultado es demasiado pequeo.
BCD_OVERFLOW : Overflow al hacer la operacin aritmtica .
COMPUTE_INT_PLUS_OVERFLOW : Al aadir se ha producido un "Overflow" en un entero.
ADD-CORRESPONDING
Definicin
Aade el contenido de los componentes de un registro sobre otro.
Sintaxis:
ADD-CORRESPONDING <n> TO <m>.
Aade el contenido de los componentes del registro <n> sobre el registro <m>, para aquellos
componentes que tengan el mismo nombre.
Ejemplo:
DATA:
BEGIN OF VECTOR,
X TYPE I,
Y TYPE I,
LENGTH TYPE I,
END OF VECTOR,
BEGIN OF CIRCLE,
VOLUME TYPE P
Y TYPE P,
RADIUS TYPE I,
X TYPE I,
END OF CIRCLE.
...
ADD-CORRESPONDING VECTOR TO CIRCLE.
APPEND
Definicin
Se utiliza para aadir registros en una tabla interna.
Sintaxis:
APPEND { <rea-trabajo> TO | INITIAL LINE TO} <tabla>.
Esta sentencia aade una lnea sobre la tabla <tabla>.
La sentencia APPEND no comprueba duplicidades en la clave estndar.
Despus de cada sentencia APPEND, la variable del sistema SY-TABIX contiene el ndice de la
lnea aadida.
Con la clusula <rea-trabajo> TO se especifica el rea de trabajo que queremos aadir.
Con tablas internas con cabecera de lnea se puede omitir esta clusula, los datos sern ledos del
rea de trabajo de la tabla interna.
En lugar de esta opcin se puede utilizar INITIAL LINE TO, la cual aade una lnea en la tabla
interna con los valores iniciales correspondientes a cada componente de la tabla.
APPEND LINES OF <tabla1> { FROM <n1> } | {TO <n2>} TO <tabla2>.
Para aadir parte del contenido de una tabla interna (o toda la tabla) al final de otra tabla, se puede
utilizar la sentencia APPEND con el formato anterior.
Despus de ejecutarse la sentencia la variable del sistema SY-TABIX tiene el ndice de la ltima
lnea aadida.
Este mtodo de aadir lneas de una tabla sobre otra es de tres a cuatro veces ms rpido si lo
hacemos lnea a lnea.
Siempre que sea posible, es mejor utilizar este mtodo.
Si no se especifican las clusulas FROM <n1> y TO <n2> la tabla <tabla1> se copia entera sobre
la tabla <tabla2>.
Con la clusula FROM <n1> especificamos desde donde se copia la tabla.
Con TO <n2> especificamos hasta dnde se copia la tabla. <n1> y <n2> son ndices de la tabla
interna.
APPEND { <rea-trabajo> TO } <tabla> SORTED BY <campo>.
Con este formato de la sentencia las lneas de la tabla no son aadidas al final de la tabla, sino que
son aadidas en la tabla <tabla> ordenadas por el campo <campo> de forma descendente.
La tabla interna slo puede contener las entradas especificadas en la clusula OCCURS.
Esto es una excepcin a la regla general. Si se aade una lnea y con ello rebasamos el lmite
definido, la ltima lnea es eliminada.
Por este motivo, esta sentencia es para crear tablas RANKING no muy grandes.
Si queremos ordenar tablas de muchas entradas es preferible utilizar las sentencias SORT por
razones de rendimiento.
ASSIGN
Definicin
Asigna con una referencia directa o dinmica el nombre del objeto que deseamos asignar a un
campo.
Sintaxis:
Si conocemos el nombre del objeto de datos que deseamos asignar a un field-symbol antes de la
ejecucin del programa debemos realizar una asignacin esttica, es decir, con una referencia
directa al objeto de dato.
Si no conocemos el objeto de dato hasta la ejecucin del programa, la asignacin deber ser
dinmica, es decir, con una referencia indirecta.
La sintaxis de la sentencia ASSIGN esttica, sin especificacin del offset, es la siguiente:
ASSIGN <campo> TO <FS> { <tipo> } { <decimales> }.
Despus de la asignacin, el field-symbol <FS> tiene los atributos del objeto de datos <campo>, y
apunta a la misma posicin de memoria.
Las clusulas <tipo> y <decimales> son opciones y las veremos en posteriores apartados.
La sintaxis de la sentencia ASSIGN esttica, con especificacin del offset, es la siguiente:
ASSIGN <campo> { +<offset> } { (<longitud>) } TO <FS> { <tipo> } { <decimales> }.
La nica diferencia con la variante anterior es que en sta especificamos el offset y la longitud del
objeto de datos que hay que asignar.
Las clusulas <tipo> y <decimales> son opcionales y las veremos en posteriores apartados. <offset>
y <longitud> pueden ser variables.
El sistema no comprueba si la parte seleccionada en el campo, contando el offset y la longitud, es
mayor que la longitud del campo.
Se puede referenciar direcciones ms all de la longitud del campo, siempre y cuando no
sobrepasemos el rea de memoria asignada.
Si no especificamos la longitud del campo con <longitud>, el field-symbol <FS> apunta al rea
perteneciente a los lmites del campo.
Si <offset> es mayor que 0, <FS> siempre apunta a un rea perteneciente a los lmites del campo.
Si <offset> es menor que la longitud del campo, se puede especificar un asterisco (*) para
<longitud>, para evitar sobrepasar el rea asignada al campos. las clusulas <tipo> y <decimales>
son opcionales y las veremos en posteriores apartados.
Si slo en tiempo de ejecucin conocemos el nombre del objeto de dato que hay que asignar al
field-symbol debemos realizar una asignacin dinmica.
Para ello utilizaremos la sentencia ASSIGN con la siguiente sintaxis:
ASSIGN (<campo>) TO <FS> { <tipo> } { <decimales> }.
El nombre de objeto de dato que hay que asignar al field-symbol estar contenido en <campo>
(asignacin indirecta).
En tiempo de ejecucin, el sistema busca el campo referenciado siguiendo la siguiente secuencia:
Si la asignacin se realiza en una subrutina o mdulo de funcin, el sistema busca el campo en la
subrutina o mdulo de funcin como objeto local.
Si la asignacin se realiza fuera de una subrutina o mdulo de funcin, o el campo no se
encuentra all, el sistema busca el campo como objeto global al programa.
Si el campo tampoco se encuentra como objeto global al programa, el sistema busca un rea de
trabajo declarada con la sentencia TABLES en el programa principal, o en el grupo de programas
actual.
La definicin "grupo de programas" engloba un programa principal y todos los programa
contenidos, incluyendo aquellos en los que se realice una llamada a una subrutina.
Si la bsqueda del campo es satisfactoria y el campo puede ser asignado al field-symbol, el campo
SY-SUBRC valdr 0. En otro caso valdr 4.
Por razones de seguridad, se debe comprobar el valor de SY-SUBRC despus de realizar la
asignacin para prevenir que un field-symbol apunte a un rea indefinida.
Las clusulas <tipo> y <decimales> son opcionales y las veremos en posteriores apartados.
Ya que este tipo de bsqueda tiene unos efectos adversos en cuanto al tiempo de respuesta del
programa, debemos utilizar este tipo de asignacin slo si es absolutamente necesario.
Si antes de la ejecucin del programa sabemos que la asignacin slo ser de reas de trabajo, se
puede utilizar la variante de la sentencia ASSIGN que veremos a continuacin.
Si antes de la ejecucin del programa sabemos que vamos a asignar un rea de trabajo a un fieldsymbol, pero hasta la ejecucin no sabemos de dicha rea de trabajo se puede utilizar la siguiente
variante dinmica de la sentencia ASSIGN:
ASSIGN TABLE FIELD (<campo>) TO <FS> { <tipo> } { <decimales> }.
El sistema busca el objeto de dato que vamos a asignar al field-symbol slo en las reas de trabajo
declaradas con la sentencia TABLES en el programa principal de un grupo de programa.
El sistema slo realiza el paso 3 de la sentencia anteriormente vista.
Si la bsqueda es satisfactoria y el campo puede ser asignado al field-symbol, SY-SUBRC es 0; en
caso contrario es 4.
Las clusulas <tipo> y <decimales> son opcionales y las veremos en posteriores apartados.
Adems de poder asignar objetos de datos a field-symbols, el sistema nos permite asignar un fieldsymbol sobre otro field-symbol.
Para realizar esto se puede utilizar cualquier variante vista hasta el momento de la sentencia
ASSIGN, pero en lugar de utilizar un objeto de dato utilizaremos un field-symbol.
Ejemplo 2:
DATA: NAME(12) VALUE 'JACKJOHNCARL',
X(10) VALUE 'XXXXXXXXXX'.
FIELD-SYMBOLS <F>.
ASSIGN NAME+4 TO <F>.
WRITE <F>.
ASSIGN NAME+4(*) TO <F>.
WRITE <F>.
Salida: JOHNCARLXXXX JOHNCARL
Ejemplo 3:
DATA SALES_DEC2(10) TYPE P DECIMALS 2 VALUE 1234567.
FIELD-SYMBOLS <SALES_DEC5>.
ASSIGN SALES_DEC2 TO <SALES_DEC5> DECIMALS 5.
WRITE: / SALES_DEC2,
/ <SALES_DEC5>.
Salida:
1,234,567.00
1,234.56700
Ejemplo 4:
DATA X(4) VALUE 'Carl'.
PERFORM U.
FORM U.
FIELD-SYMBOLS <F>.
ASSIGN LOCAL COPY OF X TO <F>.
WRITE <F>.
MOVE 'John' TO <F>.
WRITE <F>.
WRITE X.
ENDFORM.
Salida: Carl John Carl
Ejemplo 5:
DATA: NAME(4) VALUE 'XYZ', XYZ VALUE '5'.
FIELD-SYMBOLS <F>.
ASSIGN (NAME) TO <F>.
WRITE <F>.
Salida: 5
Ejemplo 6:
TABLES TRDIR.
DATA NAME(10) VALUE 'TRDIR-NAME'.
FIELD-SYMBOLS <F>.
MOVE 'XYZ_PROG' TO TRDIR-NAME.
ASSIGN TABLE FIELD (NAME) TO <F>.
WRITE <F>.
Salida: XYZ_PROG
Ejemplo 7:
TABLES TRDIR.
DATA: F(8) VALUE 'F_global',
G(8) VALUE 'G_global'.
MOVE 'XYZ_PROG' TO TRDIR-NAME.
PERFORM U.
FORM U.
DATA: F(8) VALUE 'F_local',
NAME(30) VALUE 'F'.
FIELD-SYMBOLS <F>.
ASSIGN (NAME) TO <F>.
WRITE <F>.
MOVE 'G' TO NAME.
ASSIGN (NAME) TO <F>.
WRITE <F>.
MOVE 'TRDIR-NAME' TO NAME.
ASSIGN (NAME) TO <F>.
WRITE <F>.
ENDFORM.
Salida: F_local G_global XYZ_PROG
Ejemplo 8:
PROGRAM P1MAIN.
TABLES TRDIR.
DATA NAME(30) VALUE 'TFDIR-PNAME'.
FIELD-SYMBOLS <F>.
MOVE 'XYZ_PROG' TO TRDIR-NAME.
PERFORM U(P1SUB).
ASSIGN (NAME) TO <F>.
WRITE <F>.
CALL FUNCTION 'EXAMPLE'.
PROGRAM P1SUB.
TABLES TFDIR.
...
FORM U.
FIELD-SYMBOLS <F>.
DATA NAME(30) VALUE 'TRDIR-NAME'.
ASSIGN TABLE FIELD (NAME) TO <F>.
WRITE <F>.
MOVE 'FCT_PROG' TO TFDIR-PNAME.
ENDFORM.
FUNCTION-POOL FUN1.
FUNCTION EXAMPLE.
DATA NAME(30) VALUE 'TRDIR-NAME'.
FIELD-SYMBOLS <F>.
ASSIGN (NAME) TO <F>.
IF SY-SUBRC = 0.
WRITE <F>.
ELSE.
WRITE / 'TRDIR-NAME cannot be accessed'.
ENDIF.
ENDFUNCTION.
Salida: XYZ_PROG FCT_PROG
TRDIR-NAME no se tiene acceso.
Ejemplo 9:
PROGRAM P1MAIN.
TABLES TRDIR.
DATA NAME(30) VALUE 'TFDIR-PNAME'.
FIELD-SYMBOLS <F>.
MOVE 'XYZ_PROG' TO TRDIR-NAME.
CALL FUNCTION 'EXAMPLE'.
FUNCTION-POOL FUN1.
FUNCTION EXAMPLE.
DATA NAME(30) VALUE 'TRDIR-NAME'.
FIELD-SYMBOLS <F>.
ASSIGN LOCAL COPY OF MAIN
TABLE FIELD (NAME) TO <F>.
IF SY-SUBRC = 0.
WRITE <F>.
ELSE.
WRITE / 'TRDIR-NAME cannot be accessed'.
ENDIF.
ENDFUNCTION.
Salida: XYZ_PROG
Ejemplo 10:
PROGRAM P1MAIN.
DATA: BEGIN OF REC,
A VALUE 'a',
B VALUE 'b',
C VALUE 'c',
D VALUE 'd',
END OF REC,
CN(5) VALUE 'D'.
FIELD-SYMBOLS <FS>.
DO 3 TIMES.
ASSIGN COMPONENT SY-INDEX OF
STRUCTURE REC TO <FS>.
IF SY-SUBRC <> 0. EXIT. ENDIF.
WRITE <FS>.
ENDDO.
ASSIGN COMPONENT CN OF STRUCTURE REC TO <FS>.
WRITE <FS>.
Output: a b c d
AT .. ENDAT
Definicin
La sentencia AT <fg> .. ENDAT slo puede ser utilizada dentro de un bucle LOOP..ENDLOOP para
extractos, e identifica un bloque de proceso.
La sentencia se ejecuta cuando se detecta que cambia algn valor en el field-group.
Sintaxis:
AT <zfg> { WITH <fg1> }.
<bloque-sentencias>
ENDAT.
La setencia AT <fg> se cierra con ENDAT, identificando de esta forma un bloque de proceso.
La clusula WITH se utiliza para indicar que la sentencia AT se debe ejecutar si para el fieldgroup <fg> le sigue el field-group <fg1>.
Ejemplo 1:
DATA: NAME(30),
SALES TYPE I.
FIELD-GROUPS: HEADER, INFOS.
INSERT: NAME INTO HEADER,
SALES INTO INFOS.
...
LOOP.
AT NEW NAME.
NEW-PAGE.
ENDAT.
...
AT END OF NAME.
WRITE: / NAME, SUM(SALES).
ENDAT.
ENDLOOP.
AT END OF .. ENDAT
Definicin
La sentencia AT END OF .. ENDAT slo puede ser utilizada dentro de un bucle LOOP.ENDLOOP
e identifica un bloque de proceso.
La sentencia se ejecuta cuando se detecta que cambia algn valor para el campo especificado.
Sintaxis:
AT END OF <campo>.
<bloque-sentencias>
ENDAT.
La sentencia AT END OF se cierra con ENDAT, identificando de esta forma un bloque de proceso.
En un bloque AT END OF .. ENDAT el rea de trabajo no se rellena con la lnea actual de la tabla
interna.
Todos los campos que no forman parte de la clave estndar de la tabla toman el valor inicial.
Para la condicin de lnea END OF <campo> el sistema sobrescribe todos los campos de la clave
estndar, que se encuentran a la derecha del campo <campo> con asterisco (*).
LOOP AT COMPANIES.
AT FIRST.
NEW-PAGE.
WRITE / COMPANIES-BUKRS.
ENDAT.
WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.
ENDLOOP.
AT LAST .. ENDAT
Definicin
La sentencia AT LAST .. ENDAT slo puede ser utilizada dentro de un bucle LOOP..ENDLOOP e
identifica un bloque de proceso.
La sentencia se ejecuta con el ltimo valor o ltimo registro de la sentencia LOOP..ENDLOOP.
Sintaxis:
AT LAST.
<bloque-sentencias>
ENDAT.
La sentencia AT LAST se cierra con ENDAT, identificando de esta forma un bloque de proceso.
En un bloque AT LAST .. ENDAT el rea de trabajo no se rellena con la lnea actual de la tabla
interna.
Todos los campos que no forman parte de la clave estndar de la tabla toman el valor inicial.
Para la condicin de lnea LAST el sistema sobrescribe todos los campos de la clave estndar, que
se encuentran a la derecha del campo <campo> con asterisco (*).
No se debe utilizar la sentencia AT LAST .. ENDAT en combinacin con la sentencia
LOOP.ENDLOOP con las clusulas FROM, TO o WHERE.
Ejemplo 1:
DATA: BEGIN OF COMPANIES OCCURS 20,
NAME(30),
PRODUCT(20),
SALES TYPE I,
END OF COMPANIES.
...
LOOP AT COMPANIES.
AT NEW NAME.
NEW-PAGE.
ENDAT.
WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.
AT LAST.
SUM.
WRITE: / COMPANIES-NAME, COMPANIES-SALES.
ENDAT.
ENDLOOP.
AT LINE-SELECTION
Definicin
Para permitir al usuario seleccionar una lnea de un listado y realizar alguna accin, se puede
escribir un bloque de proceso en el programa para el evento AT LINE-SELECTION.
Sintaxis:
AT LINE-SELECTION..
<bloque-de-proceso>
ENDAT.
Este evento define un bloque de proceso que se activa cuando seleccionamos una lnea del informe.
Este evento se utiliza en los informes interactivos cuando generan salidas secundarias.
Si no definimos una interfaz particular para el listado (a travs de la transaccin "menu painter") el
sistema crea una interfaz estndar.
La apariencia de esta interfaz es la misma que la de cualquier informe, interactivo o no.
El usuario podr activar este evento a travs de las siguientes acciones:
En el men "edicin", se elige la opcin "seleccionar".
Presionando la tecla de funcin F2.
Realizando un doble-click sobre la lnea o un solo click sobre un hotspot (ver las opciones
sentencia WRITE). despus de posicionar el cursor sobre una lnea y realizar alguna de las acciones
anteriores, el evento AT LINE-SELECTION se activa.
Internamente, el cdigo de funcin PICK activa el evento AT LINE-SELECTION.
En la interfaz predefinida, la opcin de men "edicin" -> "seleccionar" y la tecla de funcin F"
estn asignadas al cdigo de funcin PICK.
Ejemplo 1:
DATA TEXT(20).
START-OF-SELECTION.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
AT LINE-SELECTION.
CASE TEXT.
WHEN 'List index'.
PERFORM WRITE_AND_HIDE USING 'X' SPACE.
WHEN 'User command'.
PERFORM WRITE_AND_HIDE USING SPACE 'X'.
WHEN OTHERS.
SUBTRACT 2 FROM SY-LSIND.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
ENDCASE.
CLEAR TEXT.
FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.
WRITE / 'SY-LSIND:'.
PERFORM WRITE_WITH_COLOR USING SY-LSIND P_FLAG_LSIND.
TEXT = 'List index'.
HIDE TEXT.
WRITE / 'SY-UCOMM:'.
PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.
TEXT = 'User command'.
HIDE TEXT.
IF SY-LSIND > 0.
WRITE / 'PICK here to go back one list level'.
ENDIF.
ENDFORM.
FORM WRITE_WITH_COLOR USING P_VALUE
P_FLAG_POSITIVE.
IF P_FLAG_POSITIVE = SPACE.
WRITE P_VALUE COLOR COL_NORMAL.
ELSE.
WRITE P_VALUE COLOR COL_POSITIVE.
ENDIF.
ENDFORM.
AT NEW .. ENDAT
Definicin
La sentencia AT NEW .. ENDAT slo puede ser utilizada dentro de un bucle LOOP..ENDLOOP e
identifica un bloque de proceso.
La sentencia se ejecuta cuando se detecta que para el campo especificado se va a producir un nuevo
valor
Sintaxis:
AT NEW <campo>.
<bloque-sentencias>
ENDAT.
La sentencia AT NEW se cierra con ENDAT, identificando de esta forma un bloque de proceso.
En un bloque AT .. ENDAT el rea de trabajo no se rellena con la lnea actual de la tabla interna.
Todos los campos que no forman parte de la clave estndar de la tabla toman el valor inicial.
Para la condicin de lnea NEW el sistema sobrescribe todos los campos de la clave estndar, que se
encuentran a la derecha del campo <campo> con asterisco (*).
No se debe utilizar la sentencia AT .. ENDAT en combinacin con la sentencia LOOP..ENDLOOP
con las clusulas FROM, TO o WHERE.
Ejemplo 1:
DATA: BEGIN OF COMPANIES OCCURS 20,
NAME(30),
PRODUCT(20),
SALES TYPE I,
END OF COMPANIES.
...
LOOP AT COMPANIES.
AT NEW NAME.
NEW-PAGE.
WRITE / COMPANIES-NAME.
ENDAT.
WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.
ENDLOOP.
AT PFnn
Definicin
Para permitir que el usuario realice una accin tras pulsar una tecla de funcin, se puede escribir un
bloque de proceso en el programa, encabezado por el evento ATPFnn.
Sintaxis:
AT PFnn
<bloque-de-proceso>
Este evento define un bloque de proceso que se activa cuando pulsamos la tecla de funcin PFnn,
siendo "nn" un valor comprendido entre 1 y 24.
Este evento se utiliza en los informes interactivos cuando generan salidas secundarias.
De igual forma que en los eventos anteriores, si no definimos una interfaz de usuario particular para
el programa, el sistema incorpora una estndar.
Si el usuario presenta una tecla de funcin el sistema procesar el bloque de proceso de esa tecla de
funcin (si existe).
La posicin del cursor no es relevante.
Para ver una lista de tecla de funcin predefinidas se puede crear un programa que tenga un evento
AT PFnn, ejecutar el listado, y sobre ste pulsar el botn derecho del ratn.
Aparecer un listado con todas las teclas de funcin definidas con un texto.
Se recomienda no utilizar este evento, es preferible utilizar el evento AT USER-COMMAND.
Hace ms amigable la interfaz del usuario el uso de botones que el uso de teclas de funcin.
Ejemplo 1:
DATA NUMBER LIKE SY-INDEX.
START-OF-SELECTION.
DO 9 TIMES.
WRITE: / 'Row', (2) SY-INDEX.
NUMBER = SY-INDEX.
HIDE NUMBER.
ENDDO.
AT PF8.
CHECK NOT NUMBER IS INITIAL.
WRITE: / 'Cursor was in row', (2) NUMBER.
CLEAR NUMBER.
AT SELECTION-SCREEN
Definicin
El evento AT SELECTION-SCREEN provee de varias posibilidades de bloques de proceso pero
todos relacionados con la pantalla de seleccin.
Algunos se ejecutan antes de la pantalla de seleccin y otros despus.
Sintaxis:
AT SELECTION-SCREEN
Si utilizamos la palabra clave sin usar ninguna opcin, el bloque de proceso correspondiente se
ejecuta despus de que el sistema procese la pantalla de seleccin.
Si durante la ejecucin del bloque de proceso se activa algn mensaje de error, vuelve a aparecer la
pantalla de seleccin.
Todos los campos de la pantalla de seleccin se pueden modificar.
La sentencia MESSAGE activa mensajes.
Los tipo de error pueden ser A (abend), E (Error), I (Informativo), S (siguiente pantalla) o W
(Warning).
EL grupo de mensajes se especifica en la sentencia REPORT (Clusula MESSAGE-ID ...).
AT SELECTION-SCREEN ON <parmetro>.
La siguiente variante nos permite crear un bloque de proceso para un solo campo de la pantalla de
seleccin. <parmetro> debe ser una parmetro.
El bloque de proceso se arranca cuando el sistema ha procesado el campo en cuestin.
El sistema realiza primero validaciones de formato.
Una vez analizado el formato, se arranca el bloque de proceso.
Si activamos un mensaje de error en este bloque de proceso, vuelve a aparecer la pantalla de
seleccin y slo se puede modificar el campo tratado.
AT SELECTION-SCREEN ON END OF <criterio>.
La siguiente variante nos permite validar un criterio de seleccin de la pantalla de seleccin.
El bloque de proceso se ejecuta despus de introducir valores en la pantalla "compleja" de
introduccin de datos en un criterio de seleccin.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR <campo>.
La siguiente variante permite crear un bloque de proceso asociado cuando el usuario pulsa el botn
de posibles valores (tambin se activa pulsando la tecla de funcin F4).
Dicho botn aparece automticamente a la derecha del campo (parmetro o criterio de seleccin)
cuando se utiliza este evento. En el bloque de proceso se debe programar una lista de valores de
proceso.
AT SELECTION-SCREEN ON HELP-REQUEST FOR <campo>.
La siguiente variante permite crear un bloque de proceso asociado a la tecla de funcin F1 (ayuda
en el estndar).
Normalmente lo que codifica en el bloque de proceso es una ventana de ayuda.
AT SELECTION-SCREEN ON RADIOBUTTON GROUP <botn>.
La siguiente variante nos permite asociar un bloque de proceso a un radiobutton (grupo de botones).
El bloque proceso se activa despus de que el sistema procesa el radiobutton definido en <botn>.
Si activamos un mensaje de error en el bloque de proceso vuelve a aparecer la pantalla de seleccin.
Slo el radio-button relacionado puede ser modificado.
AT SELECTION-SCREEN ON BLOCK <bloque>.
La siguiente variante nos permite activar un bloque de proceso cuando el sistema termina de
procesar un bloque.
Recordemos que en un bloque de pantalla de seleccin se define con la sentencia SELECTIONSCREEN.
Si activamos un mensaje de error en el bloque de proceso aparece de nuevo la pantalla de seleccin.
Slo los campos del bloque relacionado se pueden modificar.
AT SELECTION-SCREEN OUTPUT.
La siguiente variante nos permite activar un bloque de proceso antes de que el sistema muestre la
pantalla de seleccin (parte PBO de la lgica de proceso).
Este bloque de proceso se puede utilizar, por ejemplo, para mover valores a los campos de la
pantalla de seleccin, pero hay que tener en cuenta que cada vez que se procesa la pantalla de
seleccin (puede haber mensajes de error en otros eventos AT SELECTION-SCREEN) se procesa
este evento.
En cierta ocasiones puede ser ms recomendable utilizar el evento INITIALIZATION.
Ejemplo 1:
SELECT-OPTIONS NAME FOR SY-REPID MODIF ID XYZ.
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CHECK SCREEN-GROUP1 = 'XYZ'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDLOOP.
AT USER-COMMAND
Definicin
Para permitir que el programa reaccione a las funciones que el usuario active se utiliza el evento AT
USER-COMMAND.
Sintaxis:
AT USER-COMMAND.
<bloque-de-proceso>
Este evento define un bloque de proceso que se activa cuando seleccionamos un comando.
Los comandos se pueden seleccionar a travs de los botones proporcionados en el programa, o a
travs del campo OK-CODE.
Este evento se utiliza en los informes interactivos cuando generan salidas secundarias.
El bloque de proceso del evento AT USER-COMMAND se ejecuta cuando el usuario activa un
cdigo de funcin presente en el status activo en ese momento.
Este evento no se activa por los cdigos de funcin predefinido del sistema o por el cdigo de
funcin PICK que, como ya hemos visto, activa el evento AT LINE-SELECTION.
El campo del sistema SY-UCOMM nos permite saber qu cdigo de funcin ha activado el usuario.
Ejemplo 1:
DATA: NUMBER1 TYPE I VALUE 20,
BREAK-POINT
Definicin
Sentencia utilizada para activar la transaccin de depuracin de programas.
Sintaxis:
BREAK-POINT <campo>.
La sentencia BREAK-POINT interrumpe el proceso y activa el depurador de programa en ese
punto.
Una vez activo el depurador se pueden realizar todas las funciones que permite el sistema de
debugging.
Si el sistema es incapaz de activar el modo depuracin, por ejemplo, si el programa se est
ejecutando en fondo (background) o si el programa es de actualizacin, el sistema genera un
mensaje en el log del sistema.
El contenido de <campo>, para ejecuciones en background o en procesos de actualizacin, se graba
en el mensaje del log del sistema.
Despus de procesar el sistema la sentencia BREAK-POINT se realiza automticamente un
COMMIT-WORKde la base de datos.
CALL
Definicin
Permite realizar una llamada a una funcin del sistema.
Sintaxis:
CALL <funcin> [ID <id1> FIELD <c1> ... ID <idn> FIELD <cn> ].
La funcin <funcin> debe existir en el fichero sapactab.h.
Si cambiamos o creamos nuevas funciones del sistema tendremos que compilar y linkear de nuevo
el kernel de SAP, para ello sera necesario tener los cdigos fuente de la aplicacin SAP.
La clusula ID nos permite pasar parmetros por referencia. <id1> ... <idn> son los nombres de
los parmetros de la funcin del sistema, <c1> ... <cn> son los campos (o literales) con los valores
que hay que pasar.
Esta sentencia fue creada para uso exclusivo de los programa estndar de SAP R/3.
CALL CUSTOMER-FUNCTION
Definicin
Esta sentencia se utiliza para llamar a mdulos de funcin, desarrollados por el usuario, que pueden
o no estar activos.
Sintaxis:
CALL CUSTOMER-FUNCTION <funcin>.
Esta sentencia la utiliza el sistema de manera estndar para desarrollar el concepto de "ampliacin".
La idea es la siguiente, en los programas estndar del sistema, en aquellos puntos donde se ha
considerado interesante, se ha incluido esta sentencia con llamadas a mdulos existentes pero sin
desarrollar y sin activar.
El usuario puede incluir en estos mdulos el desarrollo necesario para las especificaciones concretas
de un sistema y activar posteriormente el mdulo.
De esta forma se evita que se modifiquen los programas estndar.
El nombre del mdulo de funcin tiene la siguiente nomenclatura: EXIT_XXXXXXXX_NNN,
siendo XXXXXXXX el nombre del programa que realiza la llamada y NNN el nmero de funcin
especificado en la llamada: <funcin>.
Si necesitamos crear un mdulo de funcin utilizar CALL FUNCTION.
CALL DIALOG
Definicin
La sentencia CALL DIALOG llama a un mdulo de dilogo.
Sintaxis:
CALL DIALOG <mdulo-dilogo>
[ AND SKIP FIRST SCREEN ]
[ EXPORTING <f1> [ FROM <g1> ] ... <fn> [ FROM <gn> ] ]
[ IMPORTING <f1> [ TO <g1> ] ... <fn> [ TO <gn> ] ]
[ USING <tabla> MODE <modo> ].
<mdulo-dilogo> puede ser un literal o una variable.
Con la clusula AND SKIP FIRST SCREEN el sistema procesa la primera pantalla del mdulo de
dilogo en background, si hemos rellenado todos los campos obligatorios, gracias a la sentencia
SET PARAMETERS.
Con la clusula EXPORTING especificamos todos los objetos de datos (campos, registros, tablas)
que se pasan al mdulo de funcin.
Si el objeto de dato en el mdulo de dilogo y en el programa coinciden en el nombre, la opcin
FROM no es necesaria.
Si no coinciden, <fi> apunta a los objetos de datos del mdulo de dilogo y <gi> a los objetos de
datos del programa.
Con la clusula IMPORTING especificamos todos los objetos de datos (campos, registros, tablas)
que se devuelven desde el mdulo de funcin.
Si el objeto de dato en el mdulo de dilogo y en el programa coinciden en el nombre, la opcin TO
no es necesaria.
Si no coinciden, <fi> apunta a los objetos de datos del mdulo de dilogo y <gi> a los objetos de
datos del programa.
El campo SY-SUBRC se exporta y se importa automticamente.
Los objetos de datos export o import desconocidos se ignoran en el mdulo de funcin.
Los objetos de datos pasados deberan tener el mismo tipo o estructura en el mdulo de dilogo y en
el programa.
CALL DIALOG <mdulo-dilogo> USING <tabla> [ MODE <modo> ].
Esta sentencia permite implementar el mtodo de batch-input CALL DIALOG USING.
La sentencia llama al mdulo de dilogo <mdulo-dilogo> y le pasa la informacin, en formato de
juego de datos, en la tabla interna <tabla>.
Al igual que en la sentencia CALL TRANSACTION USING, el sistema rellena ciertas variables del
sistema con informacin referente a un mensaje.
La clusula MODE tiene el mismo significado que en la sentencia CALL TRANSACTION
USING.
Los cdigos de retorno devueltos por la sentencia son los mismos que en la sentencia CALL
TRANSACTION USING.
A diferencia de la anterior sentencia, CALL DIALOG USING no realiza COMMIT de la base de
datos. Los errores en tiempo de ejecucin que se pueden producir son los siguientes:
CALL_DIALOG_NOT_FOUND -> El mdulo de dilogo no existe.
CALL_DIALOG_WRONG_TDCT_MODE -> El mdulo de dilogo contiene errores.
CALL_DIALOG_NAME_TOO_LONG -> El nombre de algn parmetro es ms largo que el
permitido.
CALL FUNCTION
Definicin
La sentencia CALL FUNCTION se utiliza para llamar a un mdulo de funcin.
Esta sentencia tiene varias variantes en funcin de la tarea de trabajo que procesa el mdulo de
funcin.
Sintaxis:
CALL FUNCTION <funcin>
[ EXPORTING <p1> = <f1> ... <pn> = <fn> ]
[ IMPORTING <p1> = <f1> ... <pn> = <fn> ]
[ TABLES <p1> = <tabla1> ... <pn> = <tablan> ]
[ CHANGING <p1> = <f1> ... <pn> = <fn> ]
[ EXCEPTIONS <p1> = <exc1l> ... <pn> = <excn> [ OTHERS = <nn>] ].
Llamada bsica a un mdulo de funcin.
Llama al mdulo de funcin <funcin>.
<funcin puede ser un literal o una variable.
La asignacin de los nombre entre el programa y el mdulo de funcin se realiza por el nombre, no
por la secuencia de los parmetros.
Con la clusula EXPORTING se puede pasar campos, field-strings o tablas al mdulo de funcin.
Estos parmetros se deben declarar en el mdulo de funcin como parmetros IMPORT.
Cuando se realiza la llamada debemos asignar valores a todos los parmetros que no se les haya
definido un valor por defecto.
La clusula IMPORTING se utiliza para que el mdulo de funcin devuelva al programa valores
en campos, field-strings o tablas internas.
Estos parmetros deben estar declarados como tablas en el mdulo de funcin.
Cuando llamamos al mdulo de funcin debemos indicar todas las tablas a las que no se les haya
asignado una tabla por defecto.
Con la clusula CHANGING se puede pasar valores en campos. field-strings o tablas internas al
mdulo de funcin, que podrn ser modificados en el mdulo de funcin y devueltos al programa.
Con la clusula EXCEPTIONS especificamos las excepciones que queremos considerar en la
llamada al mdulo.
Las excepciones se activan con las sentencias RAISE y MESSAGE (con la clusula RAISING).
Una llamada a un mdulo de funcin puede generar los siguientes mensajes de error:
Definicin
Llama a un mtodo de un objeto externo. Utilizado para la programacion OLE2.
Sintaxis:
CALL METHOD OF <objeto> <mtodo> [ = <f> ]
[ EXPORTING <p1> = <f1> ... <pn> = <fn> ]
[ NO FLUSH ]
Llama al mtodo <mtodo> del objeto <objeto>. <mtodo> puede ser un literal o una variable.
En <f>, si se especifica, el sistema guarda el cdigo de retorno de la sentencia.
Con la clusula EXPORTING se especifican parmetros a pasar al mtodo.
Con la clusula NO FLUSH continu con el proceso aunque la siguiente sentencia no sea una
sentencia OLE.
CALL SCREEN
Definicin
Se utiliza para llamar a una dynpro.
Sintaxis:
CALL SCREEN <dynpro> [ STARTING AT <x1> <y1> [ ENDING AT <x2> <y2> ] ]
Llama al dynpro <dynpro>. <dynpro> es un nmero de pantalla del programa principal.
Para abandonar la pantalla se deben utilizar las sentencias SET SCREEN o LEAVE SCREEN.
Con la clusula STARTING/ENDING definimos el tamao de la ventana. <x1> y <y1> definen la
esquina superior izquierda de la ventana, <x2> y <y2> definen la esquina inferior derecha de la
ventana.
Si no se utiliza la clusula ENDING la esquina inferior derecha ser el lmite de la pantalla.
Se puede producir el siguiente error en tiempo de ejecucin:
DYNP_TOO_MANY_CALL_SCREENS -> Hemos alcanzado el lmite de pantallas abiertas para
un programa.
El lmite actualmente es de 50 pantallas.
CALL SUBSCREEN
Definicin
Una subscreen es una pantalla independiente que se muestra en un rea de otra pantalla principal.
Sintaxis:
CALL SUBSCREEN <rea> INCLUDING <programa> <pantalla>.
La sentencia se debe utilizar en ambos procesos PBO y PAI.
CALL TRANSACTION
Definicin
La sentencia CALL TRANSACTION permite ejecutar una transaccin.
Sintaxis:
CALL TRANSACTION <transaccion> [AND SKIP FIRST SCREEN ].
Esta sentencia llama a la transaccin <transaccin>. <transaccin> puede ser un literal o una
variable.
Para retornar desde la transaccin al programa se utiliza la sentencia LEAVE PROGRAM.
Con la clusula AND SKIP FIRST SCREEN adems de llamar a la sentencia indicada se puede
saltar la primera pantalla de la transaccin.
Esta accin debe ir combinada con el uso de parmetros SPA/GPA de los campos de la primera
pantalla de la transaccin (sentencia SET PARAMETERS) para que el momento de la ejecucin de
la transaccin, sta tome los parmtros de la memoria (sentencia GET PARAMETERS) y as, de
esta forma, poder saltar la primera pantalla.
Si para pasar la primera pantalla se necesita rellenar parametros que no indicamos, el sistema
presenta la primera pantalla y ser el usuario el que realiza la entrada manualmente.
Esta sentencia tiene una variante con la clusula USING que cambia totalmente el significado de
la sentencia.
Se utiliza como mtodo de batch-input.
Sentencia utilizada para implementar el mtodo CALL TRANSACTION.
CALL TRANSACTION <transaccin> USING <tabla>
[ MODE <modo> ]
[ UPDATE <actualizacin> ]
[ MESSAGES INTO <tabla-mensajes ].
<transaccin> es el cdigo de la transaccin, a la cual vamos a realizar el batch-input.
<tabla> es la tabla interna con los datos de batch-input (estructura BDCDATA).
Si la transaccin devuelve algn tipo de mensaje, las siguientes variables del sistema guardan la
siguiente informacin:
SY-MSGID -> Identificador de mensaje (REPORT .... MESSAGE-ID xx).
SY-MSGTY -> Tipo de mensaje (A -> Abend, E-> Error, ...)
SY-MSGNO -> Nmero de mensaje.
SY-MSGV1 -> Valor 1 del mensaje (si existe).
SY-MSGV2 -> Valor 2 del mensaje (si existe).
SY-MSGV3 -> Valor 3 del mensaje (si existe).
SY-MSGV4 -> Valor 4 del mensaje (si existe).
La variable del sistema SY-SUBRC toma el valor 0 si el proceso ha sido satisfactorio.
En caso contrario toma un valor distinto de 0.
Una llamada a una transaccin puede terminar satisfactoriamente si se realiza un COMMIT WORK,
un CALL SCREEN con valor 0 o un LEAVE
TO TRANSACTION <cdigo-transaccin>.
Con la clusula MODE especificamos el modo de ejecucin de la transaccin.
<modo> puede tener uno de los siguientes valores (el valor por defecto es A):
A -> Se muestran todas las pantallas.
E -> Se muestran slo las pantallas con error.
N -> No se muestra ninguna pantalla.
WHEN THREE.
WRITE 'buen'.
WRITE 'ejmeplo'.
WHEN OTHERS.
WRITE '!'.
ENDCASE.
ENDDO.
Salida: " Este es un buen ejemplo ! ! "
CHAIN
Definicin
La sentencia CHAIN permite agrupar campos de pantalla.
Sintaxis:
CHAIN.
...
ENDCHAIN.
Si ocurre algn error sobre algn campo de pantalla interno a un CHAIN .. ENDCHAIN, todos los
campos de la agrupacin permiten entrada de datos.
Esto sirve para que campos relacionados, si se produce algn error, se puedan modificar
conjuntamente.
CHECK
Definicin
Permite terminar con la ejecucin de un bloque de proceso de forma condicional.
Para terminar el paso de un bucle de forma condicional se utiliza la sentencia CHECK.
Sintaxis:
CHECK <condicin>.
CHECK {<criterio-seleccion> | SELECT-OPTIONS}
Con la primera variante de la sentencia CHECK utilizamos una condicin.
Si <condicion> resulta FALSE, el sistema abandona el actual bloque de proceso para continuar con
la prxima ocurrencia del mismo evento (para el evento GET) o el siguiente evento.
<condicin> puede ser cualquier expresin lgica.
La siguiente variante de la sentencia CHECK se utiliza conjuntamente con el evento GET.
<criterio-seleccin> puede ser un criterio de seleccin con la sentencia SELECT-OPTIONS o con la
sentencia RANGES.
En la definicin se asocia un criterio de seleccin a un campo de una tabla de la base de datos.
En el evento GET con la tabla de la base de datos relacionada se puede utilizar esta variante.
El campo debe cumplir las condiciones del criterio de seleccin.
Con la clusula SELECT-OPTIONS el sistema comprueba todos los criterios de seleccin
definidos para campos de la tabla referenciada en el evento GET.
CHECK <condicin>.
Si la condicin resulta FALSE, el sistema deja de procesar el resto de sentencias del bloque para
pasar al siguiente paso del bucle.
<condicin> es cualquier expresin lgica.
CHECK { <criterio> | SELECT-OPTIONS }.
<criterio> es un criterio de seleccin definido con la sentencia SELECT-OPTIONS.
La sentencia CHECK comprueba si el dato ledo con la sentencia GET cumple las condiciones del
criterio de seleccin.
Con la clusula SELECT-OPTIONS la sentencia CHECK comprueba todos los criterios de
seleccin definidos para la tabla leda con CHECK.
La sentencia CHECK termina una subrutina de forma condicional.
CHECK <condicin>.
Si la condicin es FALSE, el sistema abandona la subrutina.
El programa contina la ejecucin en el punto donde se realiz la llamada.
CLEAR
Definicin
Con la sentencia CLEAR se puede inicializar, o la lnea de cabecera de la tabla, o el contenido de la
tabla.
Sintaxis:
CLEAR <campo>.
Esta sentencia inicia el contenido del objeto de datos <campo> a sus valores iniciales por defecto.
Se puede distinguir entre los siguientes casos:
Tipos de datos elementales.
El sistema inicia el valor del campo <campo> a su valor por defecto, no el valor inicial asignado
con la sentencia DATA, con la clusula VALUE. las constantes no se pueden iniciar.
Field-string.
Aplicando la sentencia CLEAR sobre un field-string, el contenido de cada componente se inicia a
su valor por defecto.
Tablas internas.
En una tabla interna se inicia el rea de trabajo de la tabla interna, y no su contenido.
CLEAR <tabla> | <tabla> [].
Con la <tabla> inicializamos la lnea de cabecera de la tabla.
Con <tabla> [ ] vaciamos el contenido de la tabla interna.
Ejemplo:
DATA: TEXT(10) VALUE 'Hello',
NUMBER TYPE I VALUE 12345,
ROW(10) TYPE N VALUE '1234567890',
BEGIN OF PLAYER,
NAME(10) VALUE 'John',
TEL(8) TYPE N VALUE '08154711',
MONEY TYPE P VALUE 30000,
END OF PLAYER.
...
CLEAR: TEXT, NUMBER, PLAYER.
El contenido de los campos seran los siguientes:
ROW = '1234567890'
TEXT = ' '
NUMBER = 0
PLAYER-NAME = ' '
PLAYER-TEL = '00000000'
PLAYER-MONEY = 0
CLOSE CURSOR
Definicin
Sentencia utilizada para cerrar un cursor de una tabla de la base de datos.
Sintaxis:
CLOSE CURSOR <cursor>.
Debemos cerrar aquellos cursores que no vayan a ser utilizados ms en un programa.
El cursor se cierra automticamente en los siguientes casos:
Cuando se ejecuta una de las siguientes sentencias COMMIT WORK o ROLLBACK WORK.
Cuando una sentencia nativa (native SQL) realiza una de las siguientes funciones commit o
rollback (con la opcin WITH HOLD no sucede esto).
Cuando se produce un cambio de pantalla (reports interactivos o transacciones).
Cuando se realiza una RFC o "Remote Function Call".
CLOSE DATASET
Definicin
Esta sentencia cierra un fichero del servidor de aplicacin.
Sintaxis:
CLOSE DATASET <fichero>.
Cierra el fichero <fichero>. <fichero> puede ser un literal o un campo, de la misma forma que en la
sentencia OPEN DATASET.
La operacin de cerrar un fichero es slo necesaria si quieres borrar el contenido de ste durante
otra operacin de escritura.
Para evitar errores y hacer que los programas sean ms fciles de leer, se debe cerrar un fichero
antes de volver a utilizar la sentencia OPEN DATASET.
Utilizando la sentencia CLOSE el programa se divide en bloques lgicos, haciendo ms fcil el
mantenimiento.
CNT
Definicin
La sentencia CNT no es realmente una sentencia, es una campo que el sistema crea y rellena en los
tratamientos de extractos de datos.
Sintaxis:
CNT ( <campo> ).
Esta sentencia slo puede ser utilizada dentro de un bucle LOOP .. ENDLOOP para el
procesamiento de un extracto de datos.
Si la condicin es FALSE, el sistema abandona la subrutina.
El programa contina la ejecucin en el punto donde se realiz la llamada.
COLLECT
Definicin
Para rellenar lneas en una tabla interna con la comprobacin por parte del sistema de que la clave
estndar de la tabla ser nica.
Sintaxis:
COLLECT [ <rea-trabajo> INTO ]<tabla> [ SORTED BY <campo> ].
Para especificar un rea de trabajo distinta al rea de trabajo de la tabla interna se utiliza la
clusula <rea-trabajo> INTO.
El sistema comprueba si existe alguna lnea en la tabla interna con la misma clave estndar.
Recordemos que la clave estndar esta compuesta de todos los campos no numricos.
De no existir una lnea con la misma clave, el efecto de esta sentencia es el mismo que el de la
sentencia APPEND, aade una entrada en la tabla.
Si existe ya una lnea con la misma clave estndar, no se inserta ninguna lnea a la tabla interna; si
hay campos numricos, se sumarn.
La clusula SORTED BY <campo> no debe utilizarse.
En futuras versiones esta clusula desaparecer.
En su lugar se puede utilizar la sentencia APPEND.
Ejemplo:
DATA: BEGIN OF COMPANIES OCCURS 10,
NAME(20),
SALES TYPE I,
END OF COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 10.
COLLECT COMPANIES.
COMPANIES-NAME = 'Tiger'. COMPANIES-SALES = 20.
COLLECT COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 30.
COLLECT COMPANIES.
El resultado en la tabla companies sera el siguiente:
NAME SALES
Duck 40
Tiger 20
COMMIT WORK
Definicin
A veces es necesario asegurarse que los cambios en la base de datos se han realizado, antes de
continuar con el proceso.
Por el contrario, a veces es necesario deshacer algunos cambios realizados en la base de datos.
Para confirmar los cambios realizados sobre la base de datos se utiliza la sentencia COMMIT
WORK
Sintaxis:
COMMIT WORK [ AND WAIT ].
para deshacer los cambios realizados en la base de datos se utiliza la sentencia ROLLBACK
WORK.
Estas sentencias tienen un papel importante en la programacin de transacciones de dilogo.
Con la clusula AND WAIT, el programa se para hasta que la tarea de actualizacin termina.
Si la actualizacin es satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor
distinto de 0.
COMMUNICATION
Definicin
Permite realizar comunicacin directa "programa-a-programa" (CPI-C) definida por IBM en el
contexto de los estndares SAA.
Sintaxis:
COMMUNICATION INIT DESTINATION <destino> ID <id>
[ RETURNCODE <rc> ].
Inicia la conexin "programa-a-programa".
En el campo <rc> se actualiza con el cdigo de retorno de la sentencia.
COMMUNICATION ALLOCATE ID <id>
[ RETURNCODE <rc> ].
Establece la conexin con el otro programa.
Esta sentencia debe estar a continuacin de la variante anterior.
En el campos <rc> se actualiza con el cdigo de retorno de la sentencia.
COMMUNICATION ACCEPT ID <id>
[ RETURNCODE <rc> ].
Acepta la conexin requerida por el programa que controla la comunicacin.
En el campo <rc> se actualiza con el cdigo de retorno de la sentencia.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC.
EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVID RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC.
EXIT.
ENDIF.
Ejemplo 3:
FORM CPIC_EXAMPLE.
TYPES: CONVERSATION_ID(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION ACCEPT ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.
ENDFORM.
Ejemplo 4:
TYPES: CONVERSATION_ID(8) TYPE C,
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
DEST TYPE DESTINATION VALUE 'C00',
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC.
EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVID RETURNCODE
CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC.
EXIT.
ENDIF.
RECORD = 'Prueba de mensaje'.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION INIT, RC = ', CPIC_RC.
EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION ALLOCATE, RC = ', CPIC_RC.
EXIT.
ENDIF.
* Convert logon data to EBCDIC
TRANSLATE CONNECT_STRING TO CODE PAGE '0100'.
COMMUNICATION SEND ID CONVID BUFFER CONNECT_STRING.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION ALLOCATE, RC = ', CPIC_RC.
EXIT.
ENDIF.
* Receive acknowledgement of logon
COMMUNICATION RECEIVE ID CONVID
BUFFER RECORD
DATAINFO DINFO
STATUSINFO SINFO
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION RECEIVE, RC = ', CPIC_RC.
EXIT.
ENDIF.
* Convert acknowledgement to ASCII
TRANSLATE RECORD FROM CODE PAGE '0100'.
* Now begin user-specific data exchange
RECORD = 'The quick brown fox jumps over the lazy dog'.
* Depending on the partner system, convert to another
* character set
TRANSLATE RECORD TO CODE PAGE '0100'.
COMMUNICATION SEND ID CONVID
BUFFER RECORD
LENGTH LENG
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION SEND, RC = ', CPIC_RC.
EXIT.
ENDIF.
COMMUNICATION DEALLOCATE ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION DEALLOCATE, RC = ', CPIC_RC.
EXIT.
ENDIF.
PROGRAM ZCPICTST.
INCLUDE RSCPICDF.
* The receiving procedure in the relevant partner program follows
FORM CPIC_EXAMPLE.
TYPES: CONVERSATION_ID(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC,
C_INFO(4) TYPE X.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE,
RECORD(80) TYPE C,
DINFO TYPE C_INFO,
SINFO TYPE C_INFO.
COMMUNICATION ACCEPT ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.
COMMUNICATION RECEIVE ID CONVID
BUFFER RECORD
STATUSINFO SINFO
DATAINFO DINFO
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK AND CPIC_RC NE CM_DEALLOCATED_NORMAL.
EXIT.
ENDIF.
ENDFORM.
COMPUTE
Definicin
Para procesar objetos de datos numricos al asignar el valor resultante a un objeto de datos, se
puede utilizar la sentencia compute.
Sintaxis:
[ COMPUTE ]<campo> = <expresin>.
La palabra clave COMPUTE es opcional (nica sentencia que su palabra clave es opcional).
El resultado de la operacin matemtica especificada en <expresin> se asigna al campo <campo>.
Si el resultado de la operacin no tiene el mismo tipo de dato que el campo <campo>, el sistema
realiza la conversin oportuna de forma automtica.
Los operndos de <expresin> deben ser de tipo numrico.
Los operadores vlidos son los siguientes:
Operador
+
-
Significado
Suma
Diferencia
Ejemplo
resultado = campo1 + campo2.
resultado = campo1 - campo2.
*
/
DIV
MOD
**
Multiplicacin
Divisin
Divisin entera
Resto de una divisin
entera
Exponenciacin
En lugar de utilizar los operadores bsicos +, -, * y / se puede utilizar las sentencias ADD,
SUBTRACT, MULTIPY y DIVIDE respectivamente.
Los operadores vistos anteriormente, as como los parntesis, son palabras clave del lenguaje
ABAP/4, por ellos, deben ir con al menos un espacio en blanco por delante y por detrs.
En la divisin, el divisor no puede ser cero.
Si combinamos varias expresiones, los operadores de igualdad y prioridad se evalan de derecha a
izquierda.
Excepto en el caso del operador de exponenciacin, que se evala de derecha a izquierda.
La prioridad a la hora de evaluar una expresin es la siguiente: parntesis, funciones,
exponenciacin (**), operadores *, /, MOD y DIV y operadores "+" y "-".
Adems de los operadores vistos hasta ahora se puede utilizar un conjunto de funciones
predefinidas.
El formato que hay que utilizar es el siguiente:
[ COMPUTE ] <campo> = <funcin> ( <argumento> ).
Los espacios en blanco entre los parntesis y los argumentos son obligatorios.
El resultado de llamar a la funcin <funcin> con el argumento <argumento> es asignado a
<campo>.
Las funciones existentes pueden clasificarse en los siguientes grupos:
Funciones vlidas para todos los tipos numricos (tipo F, I y P).
El argumento no tiene por qu ser numrico.
Si utilizamos otro tipo, ste es convertido a un tipo numrico.
Por razn de optimizacin es recomendable utilizar tipo de datos numricos.
Funciones slo para el tipo F.
Para estas funciones existen las restricciones normales lgicas de las funciones matemticas, por
ejemplo, la raz cuadrada slo es vlida con nmeros positivos.
El argumento no tiene por qu ser del tipo F.
De no ser de este tipo el sistema realizar la conversin necesaria de forma automtica.
Funciones vlidas para todos los tipos numricos (F, I y P):
Operador
ABS
SIGN
CEIL
FLOOR
TRUNC
FRAC
Significado
Ejemplo
Valor absoluto del argumento
Signo del argumento. La funcin de
vuelve 1 si el argumento es positivo, 0
si el argumento es 0 y -1 si es negativo.
Valor entero inferior al argumento
Valor entero superior al argumento
Parte entera del argumento
Parte fraccionaria del argumento
resultado = ABS(campo ).
resultado = SIGN(campo ).
resultado = CEIL(campo ).
resultado = FLOOR(campo ).
resultado = TRUNC(campo1 ).
resultado = FRAC(campo1 ).
Significado
Ejemplo
Arcocoseno
Arcoseno
Arcotangente
Coseno
Seno
Tangente
Coseno hiperblico
Seno hiperblico
Tangente hiperblico
Exponenciacin
Logaritmo natural (base e) resultado
resultado = ACOS(campo ).
resultado = ASIN(campo ).
resultado = ATAN(campo ).
resultado = COS(campo ).
resultado = SINcampo1 ).
resultado = TAN(campo1 ).
resultado = COSHcampo1 ).
resultado = SINHcampo1 ).
resultado = TANH(campo1 ).
resultado = EXP(campo1 ).
= LOG(campo1 ).
LOG10
SQRT
Logaritmo base 10
Raz cuadrada
resultado = LOG10(campo1 ).
resultado = SQRT(campo1 ).
Si el atributo Aritmtica en coma fija no est marcado, los campos empaquetados (tipo P) son
enteros sin punto decimal.
El parmetro DECIMALS de la sentencia DATA slo es efectivo para la sentencia WRITE.
Por esta razn SAP recomienda que siempre que trabajemos con campos de tipo P marquemos el
atributo Aritmtica en coma fija.
Cuando tenemos marcado este atributo, no slo tiene efecto con la sentencia WRITE, sino que
tambin toma relevancia en las operaciones numricas.
Los resultados intermedios se guardan con 31 posiciones significativas antes y despus del punto
decimal.
Los tipos de datos fecha y hora no son tipo numricos pero se pueden realizar operaciones
aritmticas se suele usar el offset de los campos.
Existe una funcin que opera con los campos alfanumricos:
STRLEN Determina la longitud hasta el ltimo carcter distinto del espacio en blanco. resultado =
STRLEN(campo ).
CONCATENATE
Definicin
Se utiliza para concatenar varios campos alfanumricos en uso solo.
Sintaxis:
CONCATENATE <c1> ... <cn> INTO <campo> [ SEPARATED BY <s> ].
Esta sentencia concatena los campos campos <c1> ... <cn> en el campo <campo>.
Los espacios en blanco se ignoran durante la operacin.
Con la clusula SEPARATED BY se puede especificar un campo alfanumrico (el campo <s>) que
ser utilizado como separador entre los campos <c1> ... <cn>.
END OF NAME.
CONDENSE NAME NO-GAPS.
La variable NAME valdra: Dr.MichaelHofmann
CONSTANTS
Definicin
Declaracin de constantes, es decir, variables o registros cuyos valores no pueden ser modificados
durante la ejecucin del programa.
Sintaxis:
CONSTANTS <constante> [ (<longitud>) ] [ <tipo> ] <valor> [ <decimales> ].
<longitud>, <tipo>, <valor> y <decimales> son las mismas opciones de la sentencia DATA.
Debemos darnos cuenta de que en esta sentencia, la opcin <valor> es obligatoria.
El valor inicial indicado con <valor> no puede ser cambiado durante la ejecucin del programa.
CONSTANTS: BEGIN OF <registro>,
....
END OF <registro>.
La sintaxis de un registro de constantes es igual a la sintaxis de la sentencia DATA, con la diferencia
de que la clusula VALUE es obligatoria.
Ejemplo:
CONSTANTS CHAR1 VALUE 'X'.
CONSTANTS INT TYPE I VALUE 99.
CONSTANTS: BEGIN OF CONST_REC,
C(2) TYPE I VALUE 'XX',
N(2) TYPE N VALUE '12',
X TYPE X VALUE 'FF',
I TYPE I VALUE 99,
P TYPE P VALUE 99,
F TYPE F VALUE '9.99E9',
D TYPE D VALUE '19950101',
T TYPE T VALUE '235959',
END OF CONST_REC.
CONTINUE
Definicin
Se utiliza para terminar el paso de un bucle de forma incondicional.
Sintaxis:
CONTINUE
Despus de la sentencia CONTINUE el sistema no procesa ninguna sentencia ms del actual paso
del bucle, y continua con el siguiente paso:
Ejemplo:
DO 100 TIMES.
IF SY-INDEX >= 10 AND SY-INDEX <= 20.
CONTINUE.
ENDIF.
...
ENDDO.
CONTROLS
Definicin
Declara un control, objeto de dato especial que de momento slo se puede utilizar para la
declaracin de tablas grficas en las pantallas:
Sintaxis:
CONTROLS <control> TYPE <tipo>.
<control> especifica el nombre del control, y <tipo> su tipo. hasta el momento el nico tipo de dato
vlido es TABLEVIEW, tipo utilizado para presentar tablas en pantalla.
CONVERT DATE
Definicin
Se utiliza para convertir campos con formato fecha (tipo D) a un formato de fecha invertida, por
ejemplo, ordenar dicho campo de manera descendente.
Sintaxis:
CONVERT DATE <fecha1> INTO INVERTED-DATE <fecha2>.
CONVERT INVERTED-DATE <fecha1> INTO DATE <fecha2>.
La primera sentencia convierte un campo fecha con formato fecha a formato fecha invertida. La
segunda sentencia realiza la funcin contraria.
Para la conversin el sistema utiliza el complemento a 9.
Ejemplo:
DATA DATE_INV LIKE SY-DATUM.
CONVERT DATE SY-DATUM INTO INVERTED-DATE DATE_INV.
Si por ejemplo la representacin interna de la fecha 11.05.95 en SY-DATUM es 19950511, el valor
de la variable DATE_INV despus de la ejecucin de CONVERT sera 80049488.
CONVERT TEXT
Definicin
Se utiliza para convertir un campo alfanumrico en un formato vlido para la ordenacin.
Sintaxis:
END OF <tabla>.
Con esta sentencia definimos la tabla interna <tabla>.
Los componentes de la lnea de la tabla interna se definen entre las clusula BEGIN OF y END OF.
A excepcin de la clusula OCCURS, el resto de la sintaxis es igual a la definicin de un fieldstring, visto anteriormente.
Esta sentencia siempre crea un rea de trabajo.
<n> tiene el mismo significado que el visto anteriormente.
Ejemplo:
DATA: BEGIN OF PERSON_TYPE,
NAME(20),
AGE TYPE I,
END OF PERSON_TYPE,
PERSONS LIKE PERSON_TYPE OCCURS 20 WITH HEADER LINE.
PERSONS TYPE LINE_TYPE OCCURS 20,
PERSONS_WA TYPE LINE_TYPE.
DATA TAB TYP TYPE I OCCURS 10.
DATA TAB_WA TYPE LINE OF TAB.
DATA NUMBER TYPE I VALUE 123,
FLAG VALUE 'X',
TABLE_INDEX LIKE SY-TABIX VALUE 45.
Tipo de datos predefinido:
Tipo
C
N
D
T
X
I
P
F
Descripcin
Texto (carcter)
Texto numrico
Fecha (YYYYMMDD)
Hora (HHMMSS)
Hexadecimal
Entero
Numero empaquetado
Nmero punto flotante
Lo
1
1
8
6
1
4
8
8
Valor inicial
Blanco
'00...0'
'00000000'
'000000'
X'00'
0
0
'0.0'
DEFINE .. END-OF-DEFINITION
Definicin
Define una macro que contiene parte de cdigo fuente, con la posibilidad de utilizar parmetros.
Sintaxis:
DEFINE <macro>.
... [ <&1> ... <&9> ]
END-OF-DEFINITION.
<macro> [ <p1> ... <p9> ]
Para definir una macro se utilizan las palabras claves DEFINE y END-OF-DEFINITION.
Entre ellas se incluyen las sentencias que formarn la macro.
Se pueden incluir parmetros ( <&1> ... <&9> ) que sern sustituidos en la llamada.
La llamada a la macro se realiza con el nombre de la macro. Durante la generacin del programa el
sistema reemplaza los parmetros utilizados en la llamada.
Ejemplo:
DEFINE ++.
ADD 1 TO &1.
END-OF-DEFINITION.
DATA: NUMBER TYPE I VALUE 1.
...
++ NUMBER.
DELETE
Definicin
Para borrar lneas de una tabla interna contamos con la sentencia DELETE. Varios formatos de la
sentencia nos permiten borrar lneas de una forma diferente.
Sintaxis:
DELETE <tabla>.
El sistema slo puede procesar esta sentencia dentro de un bucle LOOP..ENDLOOP. La sentencia
DELETE borra la lnea que estemos tratando en el bucle.
DELETE <tabla> INDEX <ndice>.
Con la clusula INDEX, el sistema borra la lnea con el ndice <ndice> en la tabla interna
<tabla>.
Despus de borrar la lnea, el ndice de la siguiente lnea es decrementado en 1.
Si la operacin es completada, la variable SY-SUBRC vale 0.
Si la lnea con el ndice <ndice> no existe, SY-SUBRC vale 4.
DELETE ADJACENT DUPLICATE ENTRIES FROM <tabla> [ COMPARING <c> ].
Esta sentencia borra todas las entradas duplicada adyacentes de una tabla interna.
Dos lneas se consideran duplicadas si cumplen uno de los siguientes criterios de comparacin:
Sin la clusula COMPARING, el contenido de los campos claves estndar deben ser iguales.
Con la clusula COMPARING con el formato siguiente: COMPARING <c1> <c2> ....
El contenidos de los campos ( c1, c2 ....) debe ser igual.
Tambin se puede especificar el nombre de los campos que hay que comparar en tiempo de
ejecucin utilizando la siguiente sintaxis: (<campo>).
La variable <campo> contiene el nombre de la variable que se va a comparar.
Si en el momento de procesar la sentencia DELETE, <campo> est vaco, el sistema la ignora.
Si contiene el nombre invlido, se produce un error en tiempo de ejecucin.
Con la clusula COMPARING con el siguiente formato: COMPARING ALL FIELDS, el
contenido de todos los campos debe ser igual.
Si el sistema borra al menos una lnea de la tabla la variable SY-SUBRC valdr 0 si no borra
ninguna lnea, SY-SUBRC valdr 4.
Es recomendable que la tabla interna este ordenada antes de ejecutar esta sentencia.
DELETE <TABLA> [ FROM <n1> ] [ TO <n2> ] [ WHERE <condicin> ].
Sentencia utilizada para borrar registros de una tabla de la base de datos.
Con esta sentencia se puede borrar una o varias lneas de una tabla.
Slo se pueden borrar lneas de una tabla a travs de una vista si sta slo hace referencia a una
nica tabla.
Se debe indicar al menos una de las tres clusulas.
Si utilizamos la sentencia sin la clusula WHERE, el sistema borrar todas las lneas de la tabla
<tabla> cuyo ndice est comprendido entre <n1> y <n2>.
Si no utilizamos la clusula FROM, el sistema borrar desde la primera lnea.
Si no utilizamos la clusula TO, el sistema borrar hasta la ltima lnea.
Con la clusula WHERE el sistema slo borrar aquellas lnea de la tabla <tabla> que cumplen la
condicin especificada en <condicin>.
En <condicin> se puede utilizar cualquier expresin lgica.
El primer operando debe ser un componente de la estrucutra de lnea de la tabla interna.
Si el sistema borra al menos una lnea la variable SY-SUBRC valdr 0, si no borra ninguna valdr 4.
DELETE {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ FROM <rea> ].
Con la clusula FROM, la lnea que se borra es la que coincide con la clave primara del rea
<rea>.
Sin la clusula FROM, la lnea que se borra es la que coincide con la clave primaria del rea de
trabajo de la tabla tabla>
El rea de trabajo <rea> debe tener al menos, la longitud de la clave primaria.
Si se borra al menos una lnea de la tabla la variable SY-SUBRC valdr 0, si no se borra ninguna
valdr 4.
Con la especificacin dinmica de la tabla, la clusula FROM es obligatoria.
DELETE FROM {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ WHERE <condicin> ].
Esta variante nos permite borrar una o varias lneas de la tabla <tabla> en funcin de las
especificaciones de la clusula WHERE.
Dicha clusula tiene las mismas opciones que las vistas para la sentencia SELECT.
Si no especificamos la clusula WHERE, todas las lneas de la tabla se borran. <tabla> debe estar
declarada con la sentencia TABLES.
La variable del sistema SY-DBCNT contiene el nmero de lneas borrar.
Si se borra al menos una lnea de la tabla la variable SY-SUBRC valdr 0, si no se borra ninguna
valdr 4.
Hay que vigilar mucho con la clusula WHERE para no borrar toda la tabla o lneas que no
deseamos borrar.
La nica forma de recuperar lo borrada es restaurar el backup de la base de datos.
DELETE {<tabla> | (<tabla>) } [ CLIENT SPECIFIED ] FROM TABLE <tabla-interna>.
Con esta variante se puede borrar lnea de una tabla de diccionario, basndose las lneas de una
tabla interna. <tabla> y (<tabla>) sirve para especificar el nombre de la tabla de forma esttica o
dinmica.
Esta sentencia borra aquellas lneas de la tabla cuya clave primaria coincida con la definida en una
lnea de la tabla interna.
La tabla interna debe tener la longitud de la clave primaria de la tabla.
Si el sistema no puede borrar ninguna entrada de la tabla porque no coincide ninguna clave
primaria, el sistema continua con la siguiente lnea de la tabla interna.
Si todas las lneas de la tabla interna se procesan, SY-SUBRC vale 0, en caso contrario vale 4. SYDBCNT nos indica el nmero de lneas borradas.
Si la tabla interna esta vaca, SY-SUBRC y SY-DBCNT valen 0.
Ejemplo 1:
DATA: BEGIN OF NAMETAB OCCURS 100,
NAME(30) TYPE C,
END OF NAMETAB.
...
DELETE NAMETAB FROM 5 TO 36 WHERE NAME CA 'ABC'.
DELETE DATASET
Definicin
Para borrar ficheros del servidor de aplicacin se utiliza esta sentencia.
Sintaxis:
DELETE DATASET <fichero>.
Esta sentencia borra el fichero <fichero>. <fichero> puede ser un literal o un campo, de la misma
forma que en la sentencia OPEN DATASET.
Si el sistema borra el fichero SY-SUBRC valdr 0 en caso contrario valdr 4.
DELETE DYNPRO
Definicin
Se utiliza para borrar un dynpro de la base de datos.
Sintaxis:
DELETE DYNPRO <dynpro>.
Borra el dynpro <dynpro> de la base de datos.
La variable SY-SUBRC valdr 0 si la dynpro se borra correctamente y valdr 4 en caso contrario.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
DELETE FROM DATABASE
Definicin
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
DESCRIBE DISTANCE
Definicin
Sentencia utilizada para borrar elementos de texto de la base de datos.
Sintaxis:
DESCRIBE DISTANCE BETWEEN <campo1> AND <campo2> INTO <campo3>.
Determina la distancia entre los campos <campo1> y <campo2> dejando el resultado (en bytes) en
el campo <campo3>.
DESCRIBE FIELD
Definicin
Recupera los atributos de una variable.
Sintaxis:
DESCRIBE FIELD <variable>
[ LENGTH <longitud> ]
[ TYPE <tipo> [ COMPONENTS <n> ] ]
[ OUTPUT-LENGTH <salida> ]
[ DECIMALS <decimales> ]
[ EDIT MASK <mascara> ].
La opcin LENGTH nos actualiza la variable <longitud> con la longitud del campos.
La opcin TYPE nos actualiza la variable <tipo> con el tipo del campo, que podr ser uno de los
siguientes valores: "C", "D", "F", "I", "N", "P", "T" y "X" para los tipos predefinidos. "s" para
enteros de dos bytes con signo, "b" para enteros de un byte sin signo, "h" para tablas internas, y "C"
para estructuras.
Con la opcin COMPONENTS, la sentencia devuelve en el campo <tipo>: "u" para estructuras sin
una tabla como componente, y "v" para estructuras con al menos una tabla interna como
componente o subcomponente; y sobre el campo <n> el nmero de componentes directos.
La opcin OUTPUT-LENGTH actualiza la variable <salida> con la longitud de salida de la
variable especificada.
La opcin DECIMALS actualiza la variable <decimales> con el nmero de decimales de la
variable especificada.
Para determinar si existe una rutina de conversin para un campo en el diccionario de datos y
adems cul es el nombre de esa rutina se utiliza la opcin EDIT MASK.
Si existe rutina de conversin, el campo del sistema SY-SUBRC contendr el valor 0 y la variable
<mscara> contendr el nombre de la rutina de conversin.
Si el campo no tiene rutina de conversin el campo del sistema SY-SUBRC tendr el valor 4.
Ejemplo 1:
DATA: FLD(8),
LEN TYPE P.
Clusula TITLE-LINES.
El sistema actualiza la variable <ttulo> con el nmero de lneas de la cabecera de pgina estndar
de la pgina <pgina>.
Clusula HEAD-LINES.
El sistema actualiza la variable <cabecera> con el nmero de lneas de la cabecera de columna
estndar de la pgina <pgina>.
Clusula END-LINES.
El sistema actualiza la variable <pie> con el nmero de lneas de pi de pgina de la pgina
<pgina>.
DESCRIBE TABLE
Definicin
Se utiliza para saber el nmero de lneas de una tabla interna y para saber el valor de la clusula
OCCURS de la definicin de la tabla.
Sintaxis:
DESCRIBE TABLE <tabla> [ LINES <lnea> ] [ OCCURS <tamao> ].
Si utilizamos la clusula LINES el sistema actualiza <lnea> con el nmero de entradas en la
tabla interna <tabla>.
Con la clusula OCCURS el sistema actualiza <tamao> con el tamao definido de la tabla.
DETAIL
Definicin
Se utiliza para que las lneas de salida se realicen en intensidad normal.
Sintaxis:
DETAIL
Despus de esta sentencia, todas las sentencias de escritura se realizan en intensidad normal.
DIVIDE
Definicin
Operacin matemtica para dividir dos campos.
Sintaxis:
DIVIDE <m> BY <n>.
Divide el contenido del campo <m> por <n>, dejando el resultado en <m>.
DIVIDE-CORRESPONDING
Definicin
Variante de DIVIDE que slo dividir aquellos componentes que se llamen igual.
Sintaxis:
DIVIDE-CORRESPONDING <m> BY <n>.
Divide el contenido de los componentes del registro <m> por los del registro <n>, para aquellos que
se llamen igual.
El resultado permanece en los componentes del registro <m>.
Ejemplo:
DATA: BEGIN OF MONEY,
VALUE_IN(20) VALUE 'Marcos alemanes'.
USA TYPE I VALUE 100,
FRG TYPE I VALUE 200,
AUT TYPE I VALUE 300,
END OF MONEY,
BEGIN OF CHANGE,
DESCRIPTION(30)
VALUE 'DM en moneda nacional'.
USA TYPE F VALUE '1.5',
FRG TYPE F VALUE '1.0',
AUT TYPE F VALUE '0.14286',
END OF CHANGE.
DIVIDE-CORRESPONDING MONEY BY CHANGE.
MONEY-VALUE_IN = 'Moneda nacional'.
DO .. ENDDO
Definicin
Ejecucin de sentencias indefinidamente hasta que se procese la sentencia EXIT, STOP o REJECT.
Sintaxis:
DO [<n> TIMES ] [ VARYING <c> FROM <c1> NEXT <c2> ]
<bloque-de-sentencias>
ENDDO.
La sentencia DO sin clusulas ejecuta el bloque de sentencias indefinidamente, o hasta que se
procese una sentencia EXIT, STOP o REJECT.
Para limitar el nmero de pasos de un bucle se puede utilizar la opcin TIMES.
<n> puede ser un literal o una variable.
Si <n> es 0 o negativo, el sistema no procesar el bucle.
La clusula ENDDO es obligatoria (marca el fin del bloque de sentencias).
La variable SY-INDEX contiene el nmero de veces que el bucle ha sido ejecutado.
Utilizando la opcin VARYING se pueden ir asignando valores a una variable <c> a partir de un
conjunto de campos del mismo tipo y longitud de memoria por cada paso de bucle.
En una sentencia DO se pueden utilizar varias opciones VARYING.
Ejemplo:
DO.
Definicin
Una sentencia nativa debe incluirse en un bloque EXEC SQL .. ENDEXEC.
Sintaxis:
EXEC SQL [ PERFORMING <rutina> ].
<sentencia-nativa-SQL> [ ; ]
ENDEXEC.
El punto y coma (;) es opcional.
El punto (.) utilizado en cualquier sentencia ABAP/4 para marcar el final de sta, no puede ser
utilizado en el bloque.
Dentro del bloque, la sentencia doble comilla (") no marca un comienzo de comentario.
La tabla utilizada es una sentencia nativa no tiene por que estar definida en el diccionario ABAP/4,
por lo tanto, no es necesario declarar la tabla con la sentencia TABLES.
El sistema no procesa de forma automtica el campo mandante.
La comunicacin entre la tabla de la base de datos y el programa se realiza a travs de las variables
de entorno, que se identifican en la sentencia nativa gracias al carcter dos puntos (:).
Como variable de entorno se puede utilizar campos elementales, as como campos estructurados.
Si el resultado de la sentencia SELECT es una tabla, se puede utilizar la clusula PERFORMING.
Por cada lnea leda en la sentencia SELECT, se procesa la rutina especificada en PERFORMING.
Ejemplo:
EXEC SQL.
CREATE TABLE AVERI_CLNT (
CLIENT CHAR(3) NOT NULL,
ARG1 CHAR(3) NOT NULL,
ARG2 CHAR(3) NOT NULL,
FUNCTION CHAR(10) NOT NULL,
PRIMARY KEY (CLIENT, ARG1, ARG2)
)
ENDEXEC.
En este ejemplo se crea la tabla AVERI_CLNT.
Y con el siguiente ejemplo leemos dicha tabla:
DATA: F1(3), F2(3), F3(3).
F3 = ' 1 '
EXEC SQL PERFORMING WRITE_AVERI_CLNT.
SELECT CLIENT, ARG1 INTO :F1, :F2 FROM AVERI_CLNT
WHERE ARG2 = :F3
ENDEXEC.
FORM WRITE_AVERI_CLNT.
WRITE: / F1, F2.
ENDFORM.
EXIT
Definicin
Termina un bucle de forma incondicional.
Sintaxis:
EXIT
Con esta sentencia abandonamos todos los bloques de proceso, a excepcin de los que empiezan por
AT, para ir directamente a la pantalla de salida.
El abandono se realiza de forma incondicional.
Si la sentencia se utiliza en un evento que empieza por AT (como AT SELECTION-SCREEN, etc..)
se deja de procesar el evento tratado, pero se procesa el siguiente evento lgico.
A diferencia con la sentencia STOP, el evento END-OF-SELECTION no se ejecuta. Despus de
ejecutarse la sentencia EXIT el sistema abandona el bucle inmediatamente para continuar el proceso
en la sentencia siguiente al bucle.
Para terminar el proceso de una subrutina contamos con las sentencias EXIT y CHECK. Ambas
sentencias se utilizan de la misma forma que en los bucles LOOP .. ENDLOOP.
Despus de parar el proceso de una subrutina el sistema contina en el punto donde se realizo la
llamada (sentencia PERFORM).
EXIT FROM STEP-LOOP
Definicin
Esta sentencia se utiliza para abandonar un bucle LOOP en el PBO o PAI.
Sintaxis:
EXIT FROM STEP-LOOP.
Hay que recordar que un bucle LOOP en un proceso lgico de un dynpro nos permite leer una tabla
de pantalla. La lnea actual tratara y las posteriores no son mostradas, si el LOOP se encuentra en el
proceso PBO, o no son tratadas, si el LOOP se encuentra en el proceso PAI.
EXIT FROM SQL
Definicin
Abandona un bucle de lectura realizado dentro de un bloque EXEC SQL .. ENDEXEC.
Sintaxis:
EXIT FROM SQL.
Despus de que el sistema procese esta sentencia, se abandona el bloque de proceso EXEC SQL ..
ENDEXEC.
EXPORT
Definicin
Exporta la descripcin de una estructura generada. SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
Sintaxis:
Si se ha definido un field-group con el nombre HEADER, los registros se aaden con la clave
definida en dicho field-group.
Los errores en tiempo de ejecucin que se pueden producir son los siguiente:
EXTRACT_AFTER_SORT/LOOP -> Se ha realizado un EXTRACT despus de la sentencia
LOOP o SORT.
EXTRACT_FIELD_TOO_LARGE -> La longitud de los datos a pasar es ms grande que la
longitud del campo donde queremos guardar dicho dato.
EXTRACT_HEADER_NOT_UNIQUE -> El field-group HEADER se ha modificado despus
que los registros se hayan extrado con la sentencia EXTRACT.
EXTRACT_TOO_LARGE -> La longitud total de los datos que se van a extraer (incluido los
campos del HEADER) es demasido grande.
EXPORT <campo11> [ FROM <campo12>] <campo21> [ FROM <campo22>] ...
TO MEMORY ID <clave>.
Se utiliza para almacenar los datos especificados en la lista <campo11>, <campo21>, ... como
cluster en la memoria ABAP/4.
Sin la clusula FROM el objeto de datos <campo11> se guarda con su propio nombre, con la
opcin FROM el objeto de dato <campo12> se guarda con el nombre <campo11>.
La clave puede tener hasta 32 caracteres e identifica el cluster en la memoria ABAP/4.
La sentencia siempre sobrescribe cualquier cluster que exista con la misma clave.
Si utilizamos tablas internas con cabecera de lnea, ser el contenido de la tabla y no la cabecera la
que se guarde en el cluster.
FETCH
Definicin
Para obtener la siguiente lnea del resultado de la orden OPEN CURSOR utilizaremos la sentencia
FETCH.
Sintaxis:
FETCH NEXT CURSOR <cursor> INTO <destino>.
Cursor identifica el cursor, previamente tiene que estar abierto.
Las lneas ledas sobre el rea de trabajo <destino>, que se especifica en la clusula INTO.
Si se puede leer la siguiente lnea la variable SY-SUBRC valdr 0, en caso contrari valdr 4.
Ejemplo:
TABLES SBOOK.
DATA C TYPE CURSOR,
WA LIKE SBOOK.
OPEN CURSOR C FOR SELECT * FROM SBOOK
WHERE
CARRID = 'LH ' AND
CONNID = '0400' AND
FLDATE = '19950228'
ORDER BY PRIMARY KEY.
DO.
FETCH NEXT CURSOR C INTO WA.
IF SY-SUBRC <> 0.
CLOSE CURSOR C. EXIT.
ENDIF.
WRITE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,
WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,
WA-INVOICE.
ENDDO.
FIELD
Definicin
Con esta sentencia se puede validar las entradas realizadas sobre un campo.
Existen dos variantes, la primera realiza la validacin en la lgica de proceso y la segunda
sobre el modulpool.
Sintaxis:
FIELD <campo-pantalla> VALUES (<lista-valores>).
Con esta variante validamos la entrada realizada sobre el campo <campo-pantalla> directamente en
la lgica de proceso de la pantalla a travs de una lista de valores.
Si el valor introducido no es igual a uno de los valores introducidos en la lista de valores <listavalores> el sistema vuelve a mostrar la pantalla para realizar una nueva entrada.
Los posibles formatos en la lista de valores pueden ser los siguientes:
Valor Sintaxis
Valor individual (<valor>)
Negacin de un valor individual (NOT <valor>)
Varios valores individuales con o sin negacin (<valor1>, <valor2>, NOT <valor3>)
Intervalo de valores (BETWEEN <valor1> AND <valor2>)
Negacin de un intervalo de valores (NOT BETWEEN <valor1> AND <valor2>)
Para utilizar esta variante el campo de la pantalla ha de ser de tipo CHAR o NUMC.
Adems todos los valores de la lista de valores han de estar en maysculas.
Esta sentencia solo tiene sentido utilizarla en el PAI.
FIELD <campo-pantalla> MODULE <mdulo>
[ ON INPUT \ ON REQUEST \ ON *-INPUT \ ON CHAIN-INPUT \ ON CHAIN-REQUEST ]
Con esta variante los chequeos se realizan en el modulpool.
Para el campo <campo-pantalla> se ejecuta el mdulo <mdulo>.
Si durante la ejecucin del mdulo se activa un mensaje de error, el sistema vuelve a presentar la
pantalla y slo permite realizar cambios sobre el campo <campo-pantalla>.
ON INPUT -> El mdulo se ejecuta si el valor del campo es distinto a su valor por defecto.
ON REQUEST -> El mdulo se ejecuta si el usuario cambia el valor del campo.
ON *-INPUT -> El mdulo se ejecuta si el usuario introduce un asterisco en la primera posicin del
campo, y si el campo tiene marcado el atributo "*-entry".
ON CHAIN-INPUT -> Tiene un significado parecido a ON INPUT.
El mdulo se procesa si algn campo definido en la cadena CHAIN .. ENDCHAIN tiene un valor
distinto al valor por defecto del campo.
El field-symbol <fs> adquiere la estructura <fs> que puede ser cualquier field-string o estructura
definida en el diccionario de datos.
Las estructuras del diccionario de datos referenciadas en esta sentencia no tienen que ser declaradas
con la sentencia TABLES.
La estructura se debe especificar sin encerrar entre comillas (""), sin ser posible su especificacin en
tiempo de ejecucin.
Si <estructura> no tiene componentes de tipo F o I, <campo> puede ser cualquier campo interno
con la longitud de <estructura>.
Si <campo> es menor que <estructura> aparecer un error de sintaxis cuando verifiquemos el
programa.
Si durante la ejecucin asignamos un campo al field-string, el sistema verificar la longitud.
Si la longitud es menor a la de la estructura entonces se producir un error en tiempo de ejecucin.
Si la estructura <estructura> tiene campos de tipo F o I, debemos especificar un campo con la
misma estructura.
Ejemplo 1:
FIELD-SYMBOLS <PT>.
TABLES SFLIGHT.
...
ASSIGN SFLIGHT-PLANETYPE TO <PT>.
WRITE <PT>.
Ejemplo 2:
DATA SBOOK_WA LIKE SBOOK.
FIELD-SYMBOLS <SB> STRUCTURE SBOOK
DEFAULT SBOOK_WA.
...
WRITE: <SB>-BOOKID, <SB>-FLDATE.
FIELDS
Definicin
Se utiliza para direccionar un campo.
Sintaxis:
FIELDS <campo>.
Se utiliza principalmente para direccionar campos de manera esttica, que posteriormente sern
utilizados dinmicamente.
FORM .. ENDFORM
Definicin
Esta sentencia permite definir subrutinas.
Sintaxis:
FORM <subrutina> [ TABLES <parmetros-formales> ]
[ USING <parmetros-formales> ]
[ CHANGING <parmetros-formales> ]
<subrutina> define el nombre de la subrutina.
Con TABLES, USING y CHANGING definimos los parmetros formales de la subrutina.
Para las subrutina internas nos es definir parmetros ya que la subrutina tiene acceso a todos los
objetos de datos declarados en el programa principal.
Para las subrutinas externas se puede elegir pasar los objetos de datos mediante parmetros o
utilizar memoria compartida entre el programa que llama a la subrutina y la subrutina (sentencia
COMMON PART).
Ejemplo 1:
PERFORM WELCOME.
FORM WELCOME.
WRITE / 'Hola mundo'.
ENDFORM.
Ejemplo 2:
DATA: BEGIN OF X.
INCLUDE STRUCTURE SFLIGHT.
DATA: ADDITION(8) TYPE C,
END OF X.
...
PERFORM U USING X.
...
FORM U USING X STRUCTURE SFLIGHT.
WRITE: X-FLDATE.
ENDFORM.
Ejemplo 3:
TYPES: BEGIN OF FLIGHT_STRUC,
FLCARRID LIKE SFLIGHT-CARRID,
PRICE LIKE SFLIGHT-FLDATE,
END OF FLIGHT_STRUC.
DATA: MY_FLIGHT TYPE FLIGHT_STRUC OCCURS 0 WITH HEADER LINE,
IBOOK1 LIKE SBOOK OCCURS 0 WITH HEADER LINE,
IBOOK2 LIKE IBOOK1 OCCURS 0,
STRUC LIKE SBOOK.
PERFORM DISPLAY TABLES MY_FLIGHT IBOOK1 IBOOK2 USING STRUC.
FORM DISPLAY TABLES P_ITAB LIKE MY_FLIGHT[]
P_BOOK1 LIKE IBOOK1[]
P_BOOK2 LIKE IBOOK2[]
USING P_STRU LIKE STRUC.
DATA L_CARRID LIKE P_ITAB-FLCARRID.
...
WRITE: / P_STRU-CARRID, P_STRU-CONNID.
...
LOOP AT P_ITAB WHERE FLCARRID = L_CARRID.
...
ENDLOOP.
...
ENDFORM.
Ejemplo 4:
DATA: NUMBER_1 TYPE I VALUE 1,
NUMBER_2 TYPE I VALUE 2,
TEXT_1(10) VALUE 'one',
TEXT_2(10) VALUE 'two'.
PERFORM CONFUSE USING NUMBER_1
NUMBER_2
TEXT_1
NUMBER_1
TEXT_2.
FORM CONFUSE USING PAR_NUMBER_1 TYPE I
PAR_NUMBER_2 TYPE I
PAR_TEXT_1 TYPE C
VALUE(PAR_V_NUMBER_1) TYPE I
VALUE(PAR_V_TEXT_2) TYPE C.
ADD 3 TO PAR_V_NUMBER_1.
ADD 4 TO PAR_NUMBER_1.
ADD NUMBER_1 TO PAR_NUMBER_2.
TEXT_2 = 'three'.
PAR_TEXT_1 = PAR_V_TEXT_2.
PAR_V_TEXT_2 = 'four'.
ENDFORM.
El contenido de los campos despus de la llamada al PERFORM Es:
NUMBER_1 = 5
NUMBER_2 = 7
TEXT_1 = 'two'
TEXT_2 = 'three'
FORMAT
Definicin
Se utiliza para dar formato a las sentencias de escritura en el dispositivo de salida.
Sintaxis:
FORMAT <opcin1> [ ON | OFF ] <opcin2> [ ON | OFF ] .....
Con esta opcin variante podemos dar opciones de formato estticamente.
Las opciones de formato <opcin1>, <opcin2> ..., tienen efecto a partir de la ejecucin de esta
sentencia y hasta que nos encontremos una de desactivacin (o sea, que ponga OFF).
ON y OFF son opcionales, la opcin por defecto es ON.
Algunas de las opciones ms utilizadas son las siguientes:
Opcin
Significado
COLOR
Color del listado.
INTENSIFIED
Intensidad de salida.
INPUT
Campos de entrada en el listado.
HOTSPOT
Define campos sensibles al cursor (hotspot).
<c>
color
OFF o COL_BACKGROUND
1 o COL_HEADING
2 o COL_NORMAL
3 o COL_TOTAL
4 o COL_KEY
5 o COL_POSITIVE
6 o COL_NEGATIVE
7 o COL_GROUP
0
1
2
3
4
5
6
7
Color de fondo
Cabeceras
Cuerpo del listado
Totales
Columnas clave
Significado positivo
Significado negativo
Niveles
Ejemplo:
FORMAT INTENSIFIED INPUT.
WRITE 5 'JOHN'.
FORMAT INPUT OFF.
WRITE 40 'CARL'COLOR COL_GROUP.
La salida en pantalla es la siguiente:
....+....10...+....20...+....30...+....40...+
JOHN CARL
Salida <------->
intensificado: <------------------------------------------>
color: <--->
FREE
Definicin
Se utiliza para liberar el espacio de memoria que se reserva despus de utilizar las sentencias
REFRESH o CLEAR.
Sintaxis:
FREE <tabla>.
FREE MEMORY
Definicin
Se utiliza para borrar cluster de la memoria ABAP/4.
Sintaxis:
FREE MEMORY [ ID <clave> ].
Sin la clusula ID, el sistema borra todos los clusters creados en la memoria intermedia ABAP/4 (y
con ello se puede producir inconsistencias debido a que hay cluster que son generador por
programas de SAP),.
Con la clusula ID slo se borra el cluster bajo la clave <clave>.
FREE OBJECT
Definicin
Libera el espacio utilizado en memoria por un objeto OLE.
Sintaxis:
FREE OBJECT <objeto>.
El objeto no podr ser de nuevo utilizado.
Esta sentencia pertenece a un conjunto de sentencias que permitan gestionar objetos externos al
sistema.
Actualmente solo se puede trabajar con objetos OLE2.
FUNCTION .. ENDFUNCTION
Definicin
Define un mdulo de funcin.
Sintaxis:
FUNCTION <funcin>
...
ENDFUNCTION.
Todas las sentencias incluidas entre FUNCTION y ENDFUNCTION sern ejecutadas cuando se
realice una llamada a la funcin.
Para crear, modificar o visualizar un mdulo tenemos que ir a (desde el men principal)
Herramientas -> Abap/4 Workbench -> Mdulo funcin.
O ir directamente a travs de la transaccin SE37.
FUNCTION-POOL
Definicin
Esta sentencia es equivalente a la sentencia REPORT.
Con ella introducimos un grupo de funciones.
Sintaxis:
FUNCTION-POOL <grupo>.
Un grupo de funciones contiene mdulos de funcin que estn encabezados con la sentencia
FUNCTION.
GENERATE DYNPRO
Definicin
Genera una dynpro de la base de datos.
Sintaxis:
GENERATE DYNPRO <h> <f> <e> <m> ID <id> MESSAGE <c1> LINE <c2>
WORD <c3> [ OFFSET <c4> ] [ TRACE-FILE <tabla> ]
La informacin necesaria para generar un dynpro se toma del campo <h> y de las tablas internas
<f>,<e> y <m>.
El campo <h> y las tablas internas <f>, <e> y <m> tienen la misma estructura y significado que en
la sentencia IMPORT DYNPRO.
Si se produce un error al generar el mensaje de error se guarda en <c1>, la lnea donde se produce el
error se guarda en <c2> y la palabra con el error se guarda en <c3>.
La variable SY-SUBRC devuelve los siguientes valores:
0 -> No existen errores y la dynpro se ha generado correctamente.
4 -> El error se encuentra en la lgica de proceso.
8 -> El error se encuentra en los campos del dynpro.
El significado de las clusulas es el siguiente:
OFFSET -> Si ocurre un error el campo <c4> contiene la posicin de la palabra incorrecta.
TRACE-TABLE -> Cualquier salida del trazador se deposita en la tabla <tabla>.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
GENERATE REPORT
Definicin
Genera un programa
Sintaxis:
GENERATE REPORT <programa> [ MESSAGE <C1> ] [ INCLUDE <c2> ] [ LINE C3 ]
[ WORD <c4> ] [ OFFSET <c5> ] [ TRACE-FILE <c6> ] [ DIRECTORY ENTRY <c7> ]
[ WITHOUT SELECTION-SCREEN ]
Genera el programa especificado en <programa>.
Si el programa es un report (programas del tipo I) tambin la pantalla de seleccin se genera.
La variable SY-SUBRC puede tomar los siguiente valores:
0 -> El programa se genera correctamente.
4 -> Error de sintaxis y el report no se genera.
8 -> Error de generacin y el report no se genera.
12 -> Error en la generacin de la pantalla de seleccin y el report no se genera.
El significado de las clusulas es el siguiente:
MESAGE -> Cuando ocurre un error de sintaxis el error se almacena en la variable <c1>.
INCLUDE -> Cuando ocurre un error de sintaxis el nombre del programa include relacionado se
almacena en el campo <c2>.
LINE -> Cuando ocurre un error de sintaxis el nmero de lnea errnea se almacena en <c3>.
WORD -> Cuando ocurre un error de sintaxis la palabra incorrecta se almacena en <c4>.
OFFSET -> Cuando ocurre un error de sintaxis la posicin de la palabra incorrecta se almacena
en el campo <c5>.
TRACE-FILE -> La traza de salida del programa se almacena en el fichero <c6>.
Con esta clusula se activa de forma automtica el trazador de programas.
DIRECTORY ENTRY -> Los atributos del programa requeridos para la comprobacin sintctica
son tomados del campo <c7>.
Este campo debe tener la estructura de la tabla TRDIR.
WITHOUT SELECTION-SCREEN -> Con esta clusula no se genera la pantalla de seleccin.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
GENERATE SUBROUTINE POOL
Definicin
Generamos en memoria un pool de subrutinas.
Sintaxis:
GENERATE SUBROUTINE POOL <tabla> NAME <nombre> [ MESSAGE <c1> ] [ INCLUDE
<c2> ] [ LINE <c3> ]
[ WORD <c4> ] [ OFFSET <c5> ] [ TRACE-FILE <c6> ]
Genera un pool de subrutinas temporales en memoria.
El cdigo fuente de las subrutinas se encuentra en la tabla interna <tabla>.
El campo <nombre> contiene el nombre bajo el cual las rutinas FORM puede ser direccionadas a
travs de la sentencia PERFORM.
La variable SY-SUBRC puede tomar los siguiente valores:
0 -> Generacin correcta.
4 -> Error de sintaxis.
8 -> Error de generacin.
En contraste con la sentencia GENERATE REPORT, el cdigo fuente se encuentra en una tabla
interna y no en la base de datos.
La versin generada slo se encuentra en memoria principal.
Las subrutinas generadas con esta sentencia slo tiene validez para el programa que las ha
generado.
Hasta 36 pools de rutinas se puede generar en un solo programa.
Las clusula MESSAGE, INCLUDE, LINE, WORD, OFFSET y TRACE-FILE tiene el mismo
significado que en la sentencia GENERATE REPORT.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
GET
Definicin
Identifica un bucle de lectura.
Sintaxis:
GET <tabla> [ FIELDS <lista> ]
GET <tabla> LATE.
Este evento es el ms importante en los programas de informes que utilicen bases de datos lgicas.
Por cada ejecucin de la sentencia GET se realiza una llamada al programa de bases de datos lgica
(PBDL), a su correspondiente sentencia PUT.
En el PBDL se realiza la lectura de la base de datos, para pasar la informacin al programa principal
sobre el rea de trabajo de la tabla referenciada <tabla>.
Sin la clusula FIELDS, el PBDL devuelve todos los campos de la tabla referenciada.
Con la clusula FIELDS slo sern devueltos los campos especificados en <lista>.
Ejemplo:
TABLES: SFLIGHT, SBOOK.
DATA SMOKERS TYPE I.
GET SFLIGHT.
ULINE.
WRITE: / SFLIGHT-SEATSMAX,
SFLIGHT-SEATSOCC.
SMOKERS = 0.
GET SBOOK FIELDS SMOKER.
CHECK SBOOK-SMOKER <> SPACE.
ADD 1 TO SMOKERS.
GET SFLIGHT LATE FIELDS SEATSMAX SEATSOCC.
WRITE SMOKERS.
GET CURSOR
Definicin
Recupera informacin a partir de la posicin del cursor.
Sintaxis:
GET CURSOR FIELD <campo> [ OFFSET <offset> ] [ LINE <lnea> ]
[ VALUE <valor> ] [ LENGTH <longitud> ]
Esta variante transfiere el nombre del campo sobre el cual se encuentra posicionando el cursor.
Si el cursor se encuentra sobre algn campo, SY-SUBRC toma el valor 0, en caso contrario toma el
valor 4.
El sistema transporta el nombre de variables globales, campos simblicos, constantes o parmetros
referenciados de subrutinas.
Para literales y campos locales, SY-SUBRC vale 0 pero el campo <campo> toma el valor SPACE.
El significado de las clusulas es el siguiente:
OFFSET -> Contiene la posicin relativa del cursor sobre el campo. La primera posicin tiene el
offset 0.
LINE -> Contiene el nmero de la lnea en el listado (variable SY-LILLI).
VALUE -> Contiene el string de salida, incluyendo los formatos, del campo sobre el que est
situado el cursor.
LENGTH -> Contiene la longitud de salida del campo sobre el que est situado el cursor.
GET CURSOR LINE <lnea> [ OFFSET <offset> ] [ VALUE <valor> ] [ LENGTH <longitud> ]
Transfiere a <lnea> el nmero de la lnea sobre la cual est situado el cursor.
Si el cursor est sobre alguna lnea del listado SY-SUBRC valdr 0, en caso contrario valdr 4.
Esta variante se puede utilizar para validar que el usuario ha seleccionado una lnea.
El significado de las clusulas es el siguiente:
OFFSET -> Contiene la posicin del cursor en la lnea seleccionada.
VALUE -> Contiene el string de salida de la lnea donde se encuentra el cursor.
LENGTH -> Contiene la longitud de salida donde se encuentra el cursor.
Ejemplo:
DATA: CURSORFIELD(20),
GLOB_FIELD(20) VALUE 'campo global',
REF_PARAMETER(30) VALUE 'parmetro por referencia',
VAL_PARAMETER(30) VALUE 'parmetro por valor',
FIELD_SYMBOL(20) VALUE 'field-symbol'.
FIELD-SYMBOLS: <F>.
PERFORM WRITE_LIST USING REF_PARAMETER VAL_PARAMETER.
ASSIGN GLOB_FIELD TO <F>.
AT LINE-SELECTION.
GET CURSOR FIELD CURSORFIELD.
WRITE: / CURSORFIELD, SY-SUBRC.
FORM WRITE_LIST USING RP VALUE(VP).
DATA: LOK_FIELD(20) VALUE 'lokal field'.
ASSIGN FIELD_SYMBOL TO <F>.
WRITE: / GLOB_FIELD, / LOK_FIELD,
/ RP, / VP,
/ 'literal', / FIELD_SYMBOL.
ENDFORM.
GET LOCALE LANGUAGE
Definicin
Recupera los valores actuales del entorno texto.
Sintaxis:
GET LOCALE LANGUAGE <lenguaje> COUNTRY <pas> MODIFIER <modificador>.
Recupera los valores actuales del entorno.
En el campo <lenguaje> recupera el valor actual de lenguaje, en el campo <pas> recupera el pas
actual del lenguaje, y en el campo <versin> recupera la versin del pas del lenguaje actual.
Por ejemplo se puede tener distintas versiones en funcin del pas: Estados Unidos, Gran Bretaa,
etc.. y adems se puede especificar, para un mismo pas, distintas versiones de idiomas.
GET PARAMETER
Definicin
Lee el valor del parmetro actualizando el contenido del campo.
Sintaxis:
GET PARAMETER ID '<parametro>' FIELD <campos>.
El sistema lee el valor del parmetro <parmetro> actualizando el contenido del campo <campo>.
<parmetro> siempre es un literal alfanumrico de 3 posiciones y debe ir con las comillas (' ').
El valor del parmetro de memoria no varia.
A partir de la versin 4.x se puede utilizar la variable SY-SUBRC.
En esta versin si conseguimos leer el parmetro de memoria correctamente SY-SUBRC valdr 0,
en caso contrario valdr 4.
En versiones anteriores haba que introducir un valor errneo y una vez ejecutado la sentencia GET
PARAMETER comprobar si el valor haba cambiado.
Ejemplo:
DATA : REPID(8).
GET PARAMETER ID 'RID' FIELD REPID.
GET PROPERTY
Definicin
Recupera las propiedades de un objeto OLE.
Sintaxis:
GET PROPERTY OF <objeto> = <campo> [ NO FLUSH ].
Sintaxis:
GET TIME [ FIELD <hora> ].
Se actualiza la variable SY-UZEIT con la hora actual del sistema.
Tambin se inicia el campo SY-DATUM, SY-TIMLO, SY-DATLO, SY-TSTLO y SY-ZONLO.
Con la clusula FIELD, actualiza el campo <hora> con la hora actual del sistema.
Los campos anteriores no sufren cambios.
HIDE
Definicin
La sentencia HIDE permite asociar a cada lnea de un listado ciertos campos, que posteriormente
podrn ser ledos.
Estos campos puede no salir en el listado.
Sintaxis:
HIDE <campo>.
La orden HIDE almacena el contenido del campo <campo> en relacin con la lnea actual de salida.
El campo <campo> puede o no puede aparecer en el listado.
IF .. ENDIF
Definicin
Con esta sentencia permite bifurcar el flujo de un programa en bloques de sentencias dependiendo
de una condicin.
Sintaxis:
IF <condicin>.
[ <bloque-sentencias> ]
[ ELSEIF <condicin>.]
[ <bloque-sentencias> ]
[ ELSEIF <condicin>.]
[ <bloque-sentencias> ]
...
[ ELSE. ]
[ <bloque-sentencias> ]
ENDIF.
<condicin> puede ser cualquier expresin lgica.
<bloque-sentencias> puede ser cualquier combinacin de sentencias.
Un bloque de sentencias estar limitado por las palabras clave IF, ELSEIF, ELSE y ENDIF.
La condiciones se evalan de forma secuencial.
Cuando el resultado de una condicin es TRUE se ejecuta el bloque de sentencias de esa condicin.
Una vez se haya ejecutado el bloque de sentencias el proceso continua a partir de la clusula
ENDIF.
En tiempo de ejecucin del sistema comprueba en el momento de ejecutar la sentencia que los tipos
de los objetos de datos almacenados en el cluster y los provistos en la sentencia son compatibles.
IMPORT FROM LOGFILE
Definicin
Recupera objetos de datos del rea de modificacin de datos de la base de datos. SAP cre esta
sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
Sintaxis:
IMPORT <campo> <tabla> FROM LOGFILE ID <clave>.
Recupera objetos de datos (variables, field-strings, tablas, etc.) del rea de updates de la base de
datos.
Se recomienda no utilizar esta sentencia.
IMPORT FROM MEMORY
Definicin
Se utiliza para leer objetos de un programa ABAP/4 de la memoria ABAP/4.
Sintaxis:
IMPORT <campo11> [ TO <campo12>] <campo21> [ TO <campo22>] ...
FROM MEMORY ID <clave>.
Lee los objetos especificados en la lista <campo11>, <campo21>, ... del cluster almacenado en la
memoria ABAP/4.
Sin la clusula TO el objeto de dato almacenado en el cluster se guarda en el objeto definido en el
programa con el mismo nombre.
Con la clusula TO, el objeto de dato <campo11> almacenado en el cluster se guarda en el objeto de
dato <campo12> que esta definido en el programa.
La clave <clave> puede tener hasta 32 caracteres e identifica el cluster de la memoria ABAP/4.
No es necesario leer todos los objetos de datos almacenados en el cluster.
Si intentamos leer un cluster bajo una clave que no existe SY-SUBRC vale 4, en caso contrario, o
sea, que exista la clave aunque no indiquemos un objeto de datos la variable valdr 0.
Si el objeto de dato especificado no existe el cluster no varia.
Esta sentencia no comprueba si la estructura de los objetos en memoria coincide con los
especificados en la lista.
El transporte se realiza bit a bit, por lo tanto, si la estructuras no coinciden se puede generar
inconsistencias.
INCLUDE
Definicin
Se utiliza para incluir parte cdigo fuente a un programa.
Sintaxis:
INCLUDE <include>.
El programa <include> se include en el programa donde se ha utilizado la sentencia.
Las sentencias del objeto INCLUDE se chequean en la comprobacin sintctica.
Esta sentencia se utiliza para dividir programa grandes en unidades ms pequeas y manejables,
tambin se suele utilizar para definir slo una vez las reas de memoria comn o common part.
Esta sentencia no se puede expandir en ms de una lnea, ni puede compartir lnea con otras
sentencias.
Si un programa es tipo I (include), slo podr ser utilizado como include en otros programas.
Un ejemplo de como el sistema utiliza las includes es el programa estndar RSINCL00.
Ejemplo:
INCLUDE LSPRITOP.
INCLUDE STRUCTURE
Definicin
La sentencia INCLUDE STRUCTURE se utiliza para incluir estructuras del diccionario de datos en
nuestros programas.
Sintaxis:
INCLUDE STRUCTURE <estructura>.
Esta sentencia se utiliza en combinacin de las sentencias DATA o TYPES para la definicin de
objetos de datos o tipos de datos respectivamente.
SAP no recomienda su uso, en su lugar, se puede utilizar las clusula TYPE en las sentencia DATA
o TYPE.
Ejemplo:
DATA: BEGIN OF rec.
INCLUDE STRUCTURE subRec.
DATA: END OF rec.
Es equivalente:
DATA rec LIKE subRec.
INCLUDE TYPE
Definicin
Se utiliza para incluir en una definicin un tipo ya definido.
Sintaxis:
INCLUDE TYPE <estructura>.
Cuando definimos una estructura esta sentencia copia en dicha estructura los campos de la
estructura <estructura>.
INITIALIZATION
Definicin
Con este evento podemos inicializar los campos de una pantalla de seleccin (o cualquier otro
campo u otra variable) si este programa la posee antes de que aparezca.
Sintaxis:
INITIALIZATION.
Si queremos que los campos que aparecen en pantalla de seleccin (o cualquier otra variable o
campo) tengan ciertos valores o, en general, si queremos realizar cualquier accin antes de que
aparezca la pantalla de seleccin.
Hay que recordar que en nuestro ABAP/4 aparece una pantalla de seleccin por dos motivos.
El primero es porque hayamos puesto en nuestro programa alguna sentencia de criterio de seleccin
y segundo en el programa accedemos a una base de datos lgica que tenga criterios de seleccin.
En un principio no sabemos que campos de seleccin aparecen en un programa que utiliza base de
datos lgica.
Para saber que campos podemos ir a la transaccin SLDB (Base de datos lgica) o por men (desde
la pantalla principal) sera: Herramientas, Workbench, Desarrollo, Entorno de
programacin, base de datos lgica.
Con esta transaccin podemos ver los campos definidos en la pantalla de seleccin.
Otra forma es nos posicionamos en el campo, que queremos saber el nombre, y pulsamos F1 (la
tecla de ayuda) y a continuacin pulsaremos el botn que pone: Informacin tcnica.
En la pantalla resultante tendremos entre otras cosas el nombre del campo.
Ejemplo:
PARAMETERS QUAL_DAY TYPE D DEFAULT SY-DATUM.
INITIALIZATION.
QUAL_DAY+6(2) = '01'.
QUAL_DAY = QUAL_DAY - 1.
INSERT
Definicin
Se utiliza para insertar lneas en una tabla interna antes de una posicin determinada.
Sintaxis:
INSERT [ <rea-trabajo> INTO | INITIAL LINE INTO ] <tabla> [ INDEX <ndice> ].
Con <rea-trabajo> INTO especificamos el rea de trabajo que vamos a insertar.
Si omitimos esta opcin, el rea de trabajo que se va a insertar ser la asociada con la tabla interna.
El significado de las clusulas es el siguiente:
INITIAL LINE TO -> inserta una lnea con los valores iniciales de cada campo.
INDEX -> Inserta una lnea antes de la posicin indicada en <ndice> y la nueva tiene el ndice
<ndice>.
Si la tabla tiene <ndice> - 1 entradas la lnea se insertara en la ltima posicin.
Si la tabla tiene menos de <ndice> - 1 posiciones la lnea no se insertara.
Si se produce algn error al insertar la lnea la variable SY-SUBRC valdr 4, en caso contrario
valdr 0.
Si la sentencia se utiliza sin la clusula INDEX slo se podr utilizar en un LOOP .. ENDLOOP.
El sistema insertara la lnea antes de la lnea tratada en el bucle.
INSERT LINES OF <tabla1> [ FROM <n1> ] [ TO <n2> ] INTO <tabla2> [ INDEX <ndice> ]
Si no se especifican las clusulas FROM <n1> y TO <n2> la tabla <tabla1> se inserta entera
sobre la tabla <tabla2>.
Especificando estas clusulas se puede indicar la primera y la ltima lnea que se va insertar. <n1> y
<n2> son ndice de la tabla interna.
Si especificamos la clusula INDEX <ndice>, la lnea se insertar antes de la lnea con el ndice
<ndice>.
Si la sentencia INSERT se utiliza sin la clusula INDEX slo se podr ser utilizada en un bucle
LOOP .. ENDLOOP.
El sistema inserta la lnea tratada en el bucle.
Despus de ejecutarse la sentencia la variable del sistema SY-TABIX tiene el ndice de la ltima
lnea aadida.
Dependiendo del tamao de la tabla interna que hay que copiar, con este mtodo el proceso en 20
veces ms rpido que insertarlas lnea a lnea.
La sentencia INSERT puede ser utilizada para insertar una o varias lneas (a partir de una tabla
interna) en una tabla de la base de datos.
Si no sabemos si la clave primaria existe, se debe utilizar la sentencia MODIFY.
Se puede utilizar una vista como especificacin de tabla, siempre y cuando la vista haga referencia a
una sola tabla.
INSERT INTO { <tabla> | (<campo>) } [ CLIENT SPECIFIED ] VALUES <rea>.
Esta sentencia se utiliza para insertar una lnea a una tabla de diccionario.
El contenido del rea de trabajo <rea> ser escrito en la tabla de la base de datos <tabla>.
La tabla tiene que estar declarada en la sentencia TABLES y la rea de trabajo <rea> tiene que
tener la misma estructura que <tabla> (se recomienda utilizar el operador LIKE en la sentencia
DATA para declararla de la misma estructura).
Si la tabla no contiene una lnea con la misma clave primaria que la especificada en el rea de
trabajo <rea>, la variable SY-SUBRC valdr 0, en caso contrario, la lnea no se insertara y la
variable SY-SUBRC valdr 4.
Para especificar el nombre de la tabla en tiempo de ejecucin utilizaremos la opcin (<campo>).
En tiempo de ejecucin se debe rellenar con el nombre de la tabla donde realizaremos la operacin
de insercin.
INSERT { <tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ FROM <field-string> ].
Esta variante tiene el mismo efecto que la variante vista anteriormente.
Se trata de una versin simplificada donde la clusula INTO no se especifica y en lugar de
VALUES se pone FROM.
Si no se especifica la clusula FROM, los datos que hay que insertar sern los del rea de trabajo
de la tabla <tabla>.
Si especificamos el nombre de la tabla en tiempo de ejecucin, la clusula FROM es obligatoria.
INSERT { <tabla> | (<campo>) } [ CLIENT SPECIFIED ] FROM TABLE <tabla-interna>
Definicin
Se utiliza para insertar un programa en el sistema.
Sintaxis:
INSERT REPORT <programa> FROM <tabla>.
El cdigo fuente del programa esta en una tabla interna <tabla>.
Las lneas de la tabla interna no puede tener ms de 72 caracteres de longitud.
Los atributos del programa (tipo, fecha, ...) son asignados automticamente por el sistema.
Los atributos se pueden modificar desde el editor de programas o a travs de la tabla TRDIR.
Los errores en tiempo de ejecucin son los siguientes:
INSERT_PROGRAM_INTERNAL_NAME -> El nombre del programa esta reservado para el
sistema (%_T).
INSERT_PROGRAM_NAME_BLANK -> El nombre del programa no puede contener espacios
en blanco.
INSERT_PROGRAM_NAME_TOO_LONG -> El nombre del programa no puede superar los 8
caracteres.
INSERT_REPORT_LINE_TOO_LONG -> Una lnea o ms de una no puede superar los 72
caracteres.
INSERT TEXTPOOL
Definicin
Se utiliza para aadir elementos de texto en la base de datos.
Sintaxis:
INSERT TEXTPOOL <programa> FROM <tabla> LANGUAGE <lenguaje>.
Aade a la base de datos los elementos contenidos en la tabla interna <tabla> al programa
<programa> en el lenguaje <lenguaje>.
La tabla interna debe tener la estructura TEXTPOOL.
Ejemplo:
DATA: PROGRAM(8) VALUE 'PROGNAME',
TAB LIKE TEXTPOOL OCCURS 50 WITH HEADER LINE.
TAB-ID = 'T'. TAB-KEY = SPACE. TAB-ENTRY = 'Ventas'.
APPEND TAB.
TAB-ID = 'I'. TAB-KEY = '200'. TAB-ENTRY = 'Impuestos'.
APPEND TAB.
TAB-ID = 'H'. TAB-KEY = '001'. TAB-ENTRY = 'Nombre Edad'.
APPEND TAB.
TAB-ID = 'S'. TAB-KEY = 'CUST'. TAB-ENTRY = 'Vendedor'.
APPEND TAB.
TAB-ID = 'R'. TAB-KEY = SPACE. TAB-ENTRY = 'Test programa'.
APPEND TAB.
SORT TAB BY ID KEY.
INSERT TEXTPOOL PROGRAM FROM TAB LANGUAGE SY-LANGU.
LEAVE
Definicin
Abandona un modo CALL.
Sintaxis:
LEAVE.
Abandona un modo introducido con las sentencias CALL TRANSACTION, CALL DIALOG o
SUBMIT....AND RETURN.
El control vuelve al punto donde se realiz la llamada.
LEAVE PROGRAM
Definicin
Se utiliza para abandonar el programa actual.
Sintaxis:
LEAVE.
Abandona el programa actual y contina el proceso despus de la sentencia CALL
TRANSACTION, CALL DIALOG o SUBMIT....AND RETURN.
Esta sentencia termina la ejecucin del programa sin ejecutar ninguna sentencia ms.
LEAVE SCREEN
Definicin
Se utiliza para abandonar el proceso de la pantalla actual.
Sintaxis:
LEAVE SCREEN.
Con esta sentencia abandonamos el proceso del dynpro actual.
El siguiente dynpro puede haber sido definido estticamente en los atributos del dynpro o
dinmicamente con la sentencia SET SCREEN.
Si el siguiente dynpro que se va a procesar es el 0, el sistema devuelve control al programa que
realiz la llamada al dynpro.
LEAVE TO LIST-PROCESSING
Definicin
Sentencia utilizada para abandonar el modo de ejecucin de listado para volver al modo de dilogo.
Sintaxis:
LEAVE LIST-PROCESSING [ AND RETURN TO SCREEN <dynpro>].
No es necesario utilizar esta sentencia cuando en un programa interactivo pulsamos una tecla de
funcin.
Cuando se ejecuta la sentencia el sistema devuelve control al proceso PBO del dynpro donde
realizamos la llamada.
Si utilizamos la clusula AND RETURN TO SCREEN <dynpro> el programa ir a la dynpro del
programa que le indiquemos <dynpro>.
LEAVE TO SCREEN
Definicin
Permite abandonar la dynpro actual para pasar a otra dynpro.
Sintaxis:
LEAVE TO SCREEN <dynpro>.
<dynpro> identifica el nmero del dynpro que se va a procesar.
Esta sentencia es una mezcla de la sentencia SET SCREEN y LEAVE SCREEN.
Si <dynpro> es 0 se devuelve el control al programa que realiz la llamada al mdulo de funcin.
El ejemplo de la sentencia SET SCREEN nos sirve para ver un ejemplo de la sentencia LEAVE
SCREEN.
LEAVE TO TRANSACTION
Definicin
Permite abandonar la dynpro actual para pasar a otra dynpro.
Sintaxis:
LEAVE TO TRANSACTION <transaccin> [ AND SKIP FIRST SCREEN ].
La transaccin llamada se especifica en <transaccin>.
La clusula AND SKIP FIRST SCREEN tiene el mismo significado que en la sentencia CALL
TRANSACTION.
LOAD REPORT
Definicin
Esta sentencia proporciona una herramienta para analizar distintas partes de un programa.
Sintaxis:
LOAD REPORT <programa> PART { 'HEAD' | 'TRIG' | 'CONT' | 'DATA' | 'DDNM' |
'DATV' | 'SELC' | 'STOR' | 'LITL' | 'SYMB' | 'LREF' | 'SSCR' | 'BASE' |
'INIT' | 'DATP' | 'TXID' | 'COMP' } INTO <tabla>.
Carga la parte especfica en la clusula PART de la versin generada del programa sobre la tabla
interna con el nico propsito de anlisis.
Los posibles valores en la variable SY-SUBRC son los siguientes:
0 -> La parte del programa se carga satisfactoriamente.
Estructura de <tabla>
HEAD
TRIG
CONT
DATA
DDNM
RHEAD
RTRIG
RCONT
RDATA
RDDNM
DATV
SELC
STOR
LITL
SYMB
LREF
SSCR
BASE
INIT
DATP
TXID
COMP
RDATA
RSELC
Un campo de tipo X
Un campo de tipo X
RSYMB
RLREF
RSSCR
RBASE
Un campo de tipo X
RDATA
RTXID
RDATA
Definicin
Esta sentencia lee una tabla interna lnea a lnea a travs de un bucle de lectura.
Permite realizar un bucle en una tabla de pantalla.
Sintaxis:
LOOP AT <tabla> [ INTO <rea-trabajo> ] [ FROM <n1> ] [ TO <n2> ]
[ WHERE <condicin> ].
...
ENDLOOP.
Con la clusula INTO <rea-trabajo> especificamos un rea de trabajo, la cual se convierte en el
rea de destino.
En el caso de tablas con cabeceras de lnea, esta clusula es opcional.
La tabla interna <tabla> se lee lnea a lnea sobre <rea-trabajo> (si se especifica) o sobre el rea de
trabajo de la tabla <tabla>.
Por cada lnea leda el sistema procesa el bloque de sentencias del bucle LOOP .. ENDLOOP.
Con la sentencia AT se puede controlar el flujo de bloque de sentencias.
Mientras se procesa el bloque de sentencias, la variable SY-TABIX contiene el ndice de la actual
lnea tratada.
El bucle termina en cuanto se han ledo todas las lneas de la tabla interna.
Despus de salir del bucle, la variable SY-SUBRC ser 0 si al menos una lnea ha sido leda, si no,
tendr el valor 4.
Se puede restringir el nmero de lneas para leer, con las clusulas FROM, TO y WHERE.
Con la clusula FROM, en <n1> especificamos el ndice desde donde comenzaremos la lectura.
Con la clusula WHERE especificamos cualquier expresin lgica en <condicin>.
El primer operando de la expresin lgica debe ser un componente de la estructura de la lnea.
No se puede utilizar la clusula WHERE si en el bloque de proceso se utiliza la sentencia AT.
Con las clusulas FROM y TO limitamos las lecturas de la tabla interna, mientras que con la
clusula WHERE leemos todas las entradas para poder aplicar la expresin lgica.
Por razones de optimizacin, y siempre que podamos, se debe utilizar las clusulas FROM y TO.
LOOP [ WITH CONTROL <tabla-control> ]
...
ENDLOOP.
Esta variante permite realizar un bucle sobre una tabla de pantalla.
La tabla de pantalla puede ser una tabla de control, y si es as, se debe utilizar la clusula WITH
CONTROL.
LOOP AT <tabla> CURSOR <cursor> [ WITH CONTROL <tabla-control> ]
[ FROM <lnea1> ] [ TO <lnea2> ].
...
ENDLOOP.
Esta variante nos permite rellenar los campos de la tabla de pantalla a travs de campos de una tabla
interna.
El significado de las clusulas es el siguiente:
CURSOR define el cursor de la tabla interna.
Tipo
C
C
C
C
C
lg.
30
3
3
3
3
Significado
Nombre del campo.
Grupo de evaluacin de modificacin 1.
Grupo de evaluacin de modificacin 2.
Grupo de evaluacin de modificacin 3.
Grupo de evaluacin de modificacin 4.
REQUIRED
INPUT
OUTPUT
INTENSIFIED
INVISIBLE
LENGTH
ACTIVE
DISPLAY_3D
VALUE_HELP
C
C
C
C
C
X
C
C
C
1
1
1
1
1
1
1
1
1
Campo obligatorio.
Campo de entrada.
Campo de salida.
Campo con intensidad.
Campo invisible.
Longitud del campo.
Campo activo.
Atributo formato 3-D
Atributo de campo de ayuda.
Los atributos se activan con el valor '1' y se desactivan con el valor '0'.
Ejemplo:
CONSTANTS OFF VALUE '0'.
LOOP AT SCREEN.
SCREEN-INPUT = OFF.
MODIFY SCREEN.
ENDLOOP.
Con esta bucle indicamos que todos los campos solo son de salida.
MESSAGE
Definicin
El sistema permite reaccionar a acciones incorrectas por parte del usuario mostrando un mensaje, el
cual afectar al flujo del programa.
Sintaxis:
REPORT <programa> ... MESSAGE-ID <clase>.
Los mensajes se almacenan en la tabla T100.
Los mensajes estn ordenados por el lenguaje, la identificacin de la clase de mensaje (2 caracteres)
y por el nmero de mensaje (3 caracteres).
En un programa se puede utilizar varias clases de mensaje, pero slo una de ellas podr ser definida
estticamente, que se define en la sentencia REPORT.
En la sentencia REPORT existe la clusula MESSAGE-ID que nos permite asociar al programa, de
manera esttica, una clase de mensaje.
MESSAGE <tipo><num> [ WITH <c1> <c2> <c3> <c4> ].
<tipo> define el tipo de mensaje.
<num> indentifica el nmero de mensaje.
En esta sentencia se mostraran los mensajes de la clase de mensaje definidos en la sentencia
REPORT....
La clusula WITH permite aadir variables en el mensaje.
Existe la limitacin de cuatro variables por mensaje. En el mensaje alamacenado en la tabla T100,
las variables se definen con un ampersand (&) acompaado de un nmero del 1 al 4.
MESSAGE ID <clase> TYPE <tipo> NUMBER <num> [ WITH <c1> <c2> <c3> <c4> ].
Con esta variante especificamos la clase del mensaje de forma dinmica. <clase> determina la clase
de mensaje.
La clusula TYPE se utiliza para determinar el tipo de mensaje.
La clusula NUMBER se utiliza para especificar el nmero de mensaje.
La clusula WITH tiene el mismo significado que en la anterior variante.
Un mensaje puede tener cinco diferentes tipos:
Tipo A (Abend) -> El sistema muestra este tipo de mensaje en una ventana de dilogo.
Despus de que el usuario confirme el mensaje pulsando la tecla INTRO, el sistema abandona la
transaccin donde este.
Tipo E (Error) o tipo W(Warning) -> El sistema muestra el mensaje en la lnea de status.
Despus de que el usuario pulsa INTRO el sistema acta en funcin del punto de proceso donde nos
encontremos.
Si nos encontramos en la creacin del listado bsico, SAP termina el programa.
Si nos encontramos en la creacin de un listado secundario, el sistema termina el actual bloque de
proceso y presenta el listado del nivel anterior.
Tipo I (Informacin) -> El sistema muestra el mensaje en una ventana de dilogo.
Despus de que el usuario pulse INTRO, el sistema contina con el proceso.
Tipo S (Success) -> El sistema muestra el mensaje en la lnea de status del listado creado.
Ejemplo 1:
MESSAGE ID 'XX' TYPE 'E' NUMBER '001'
WITH 'Text'.
Ejemplo 2:
MESSAGE E010 WITH 'Example' SY-UNAME.
MODIFY
Definicin
Se utiliza para sustituir lneas de una tabla interna.
Sintaxis:
MODIFY <tabla> [ FROM <rea-trabajo> ] [ INDEX <ndice> ].
El rea de trabajo <rea-trabajo> sustituye a la lnea de la tabla interna.
En el caso de tablas internas con lneas de cabecera, la clusula FROM es opcional.
Si utilizamos la clusula INDEX, la lnea que hay que reemplazar ser la existente con el ndice
<ndice>.
Si el sistema puede realizar la modificacin, la variable del sistema SY-SUBRC es 0.
Si la tabla interna tiene menos lneas que las indicadas en <ndice>, la modificacin no se realiza y
SY-SUBRC vale 4.
Si no utilizamos la clusula INDEX, la sentencia solo puede ser procesada en un bucle LOOP ..
ENDLOOP.
En este caso la lnea que se modificara ser la que se este tratando.
MODIFY { <tabla> | (<tabla>) }[ CLIENT SPECIFIED ] [ FROM <rea> ].
Sentencia utilizada para modificar o insertar registros de una tabla de la base de datos.
Con esta sentencia tenemos dos posibilidades.
Si la tabla de base de datos no tiene ninguna lnea con la misma clave primera se inserta.
En caso contrario se modifica.
Por cuestiones de rendimiento se debe limitar su uso al mximo.
Con <tabla> se especifica el nombre de la tabla de forma esttica.
Para especificar la tabla de forma dinmica se utiliza la opcin (<tabla>).
Con la especificacin dinmica, la clusula FROM es obligatoria.
MODIFY { <tabla> | (<tabla>) }[ CLIENT SPECIFIED ] [ FROM TABLE <rea> ].
Esta sentencia modifica o inserta el contenido de rea de trabajo <rea> sobre la tabla de la base de
datos.
Las lneas de la tabla interna <tabla-interna> modifican las lneas de la tabla de la base de datos si la
clave primera existe.
Para el resto de entradas de la tabla interna, se aaden a la tabla.
SY-SUBRC es siempre 0. SY-DBCNT toma el valor del nmero de entradas de la tabla interna.
Cuando se aaden entradas, la sentencia funciona como la sentencia INSERT y cuando se modifican
entradas, las sentencias funciona como la sentencia MODIFY.
MODIFY CURRENT LINE
Definicin
Esta sentencia modifica la ltima lnea leda.
Sintaxis:
MODIFY CURRENT LINE [ LINE FORMAT <opcin-1> ... <opcin-n> ]
[ LINE FORMAT <opcin-1> ... <opcin-n> ]
[ FIELD VALUE <c11> [ FROM <c12> ] ... <cn1> [ FROM <cn2> ] ] [ FIELD FORMAT <c1>
<opciones-1> ... <cn> [<opciones-n> ].
Si no utilizamos ninguna opcin, la ltima lnea leda se modifica con el contenido actual del campo
SY-LISEL.
El rea HIDE de la lnea se sustituye por los valores actuales de los campo correspondientes, sin
embargo esto no influye en los valores mostrados.
Si el sistema puede modificar la lnea, el campo del sistema SY-SUBRC toma el valor 0.
En caso contrario toma un valor distinto de 0.
Ejemplo 1:
DATA I TYPE I VALUE 2.
WRITE: / 'Intensified' INTENSIFIED,
'Input' INPUT,
'color 1' COLOR 1,
'intensified off' INTENSIFIED OFF.
* Line selection
AT LINE-SELECTION.
MODIFY CURRENT LINE
LINE FORMAT INVERSE
INPUT OFF
COLOR = I.
Ejemplo 2:
DATA: FLAG VALUE 'X',
TEXT(20) VALUE 'Australia',
I TYPE I VALUE 7.
FORMAT INTENSIFIED OFF.
WRITE: / FLAG AS CHECKBOX, TEXT COLOR COL_NEGATIVE.
AT LINE-SELECTION.
MODIFY CURRENT LINE
LINE FORMAT INTENSIFIED
FIELD VALUE FLAG FROM SPACE
FIELD FORMAT FLAG INPUT OFF
TEXT COLOR = I.
MODIFY LINE
Definicin
Esta sentencia modifica cualquier lnea de un listado.
Sintaxis:
MODIFY LINE <n> [ INDEX <ndice> | OF CURRENT PAGE | OF PAGE <pgina> ]
[ LINE FORMAT <opcin-1> ... <opcin-n> ]
[ LINE FORMAT <opcin-1> ... <opcin-n> ]
[ FIELD VALUE <c11> [ FROM <c12> ] ... <cn1> [ FROM <cn2> ] ]
[ FIELD FORMAT <c1> <opciones-1> ... <cn> [<opciones-n> ].
Sin las clusulas opcionales de la primera lnea de la sentencia, el sistema modifica la lnea <n> del
listado en el cual ocurra el evento (ndice SY-LISTI).
Con las clusula de la primera lnea se puede modificar lo siguiente:
INDEX -> Se modifica la lnea <n> del listado de nivel definido en <ndice>.
OF CURRENT PAGE -> Se utiliza para modificar la lnea <n> de la pgina <pgina>.
OF PAGE -> Se utiliza para modificar la lnea <n> de la pgina <pgina>.
El significado del resto de clusulas es el siguiente:
LINE FORMAT -> Actualiza el formato de salida de la lnea a modificar de acuerdo con las
especificaciones realizadas en <opcin-1> ... <opcin-n>.
FIELD VALUE -> Modifica ciertos campos de la lnea que modificamos.
El campo <c11> se modifica con el valor actual del campo <c1> o del campo <c12> si se especifica
la clusula FROM.
Si el campo especificado se utiliza ms de una vez en la lnea que se quiere modificar, el sistema
modifica, slo el primer campo.
Si en el campo no aparece en la lnea que hay que modificar slo el primer campo.
Si en el campo no aparece en la lnea que hay que modificar, la opcin se ignora.
El sistema modifica el contenido del campo de la lnea que se debe modificar, independientemente
del contenido actual del campo del sistema SY-LISEL.
Adems de modificar un campo con esta clusula se puede modificar directamente la variable del
sistema SY-LISEL.
FIELD FORMAT -> Modifica el formato de salida del campo especificado en <c1>, con las
opciones <opciones-1>.
En opciones <opciones-1> se puede especificar una o ms de una opcin de la clusula FORMAT.
Esta clusula sobreescribe las opciones utilizadas con la clusula LINE FORMAT.
Si el campo especificado se utiliza ms de una vez en la lnea que se va a modificar, el sistema
modifica slo el primer campo.
Si el campo no aparece en la lnea que se va a modificar, la opcin se ignora.
MODIFY SCREEN
Definicin
Modifica ciertos atributos de campos de un dynpro.
Sentencia utilizada para modificar los atributos de los campos de pantalla.
Sintaxis:
MODIFY SCREEN.
Las modificaciones realizadas en los atributos de campos de un dynpro se deben realizar en un
bucle LOOP AT SCREEN ... ENDLOOP.
En el sistema existe una tabla denominada SCREEN donde se guardan los atributos de los campos
de un dynpro.
Dicha tabla, y dentro de un bucle, se puede actualizar los valores de la tabla para luego modificarla
con esta sentencia.
Esta sentencia solo se puede utilizar en el proceso PBO de un dynpro o de la pantalla de seleccin
de un dynpro.
Esta sentencia solo tiene sentido en combinacin con la sentencia LOOP AT SCREEN.
MODULE
Definicin
Se utiliza para llamar a un mdulo.
El mdulo debe encontrarse en el modulpool de la transaccin.
Sintaxis:
MODULE <mdulo> [ AT EXIT-COMMAND ].
La clusula AT EXIT-COMMAND tiene un efecto especial.
El mdulo se ejecuta si el usuario activa una funcin de tipo E (exit).
MODULE .. ENDMODULE
Definicin
Declaracin de un mdulo.
Sintaxis:
MODULE <mdulo> [ INPUT | OUTPUT ].
...
ENDMODULE.
Si una tabla interna tiene rea de trabajo, rea y tabla tienen el mismo nombre, para poder
distinguirlos se utilizan los corchetes ( [ ] ).
Con los corchetes ser el contenido de la tabla interna el que se copiar, en lugar del rea de trabajo.
La sentencia MOVE copia el contenido de la primera tabla interna (o rea de trabajo) especificada
sobre la segunda tabla interna ( o rea de trabajo).
Las tablas utilizadas pueden tener como componentes a su vez tablas internas.
El contenido de <tabla2> se sobrescribe.
Slo se pueden copiar tablas internas sobre otras tablas internas, no sobre field-strings o campos
elementales.
Para poder copiar tablas internas, las lneas de la tablas deben ser convertibles (aunque no sean
compatibles).
MOVE-CORRESPONDING
Definicin
Se utiliza para copiar los datos de un componente field-string sobre otro componente field-string.
Sintaxis:
MOVE-CORRESPONDING <string1> TO <string2>.
Asigna el contenido de los componentes del registro <string1> sobre los componentes del registro
<string2> que se llamen igual.
Por cada para de nombres coincidentes el sistema ejecuta una sentencia MOVE, adems realiza
todos los tipo de conversin necesarios de forma separada.
Ejemplo:
DATA: BEGIN OF INT_TABLE OCCURS 10,
WORD(10),
NUMBER TYPE I,
INDEX LIKE SY-INDEX,
END OF INT_TABLE,
BEGIN OF RECORD,
NAME(10) VALUE 'not WORD',
NUMBER TYPE I,
INDEX(20),
END OF RECORD.
...
MOVE-CORRESPONDING INT_TABLE TO RECORD.
MULTIPLY
Definicin
Multiplica el contenido de campos.
Sintaxis:
MULTIPLY <m> BY <n>.
Multiplica el contenido de los campos <m> y <n>, dejando el resultado sobre el campo <m>.
Ejemplo:
DATA: DAYS_PER_YEAR TYPE P VALUE 365,
HOURS_PER_DAY TYPE F VALUE '24.0',
MINUTES_PER_YEAR TYPE I VALUE 1.
MULTIPLY MINUTES_PER_YEAR BY DAYS_PER_YEAR.
MULTIPLY MINUTES_PER_YEAR BY HOURS_PER_DAY.
MULTIPLY MINUTES_PER_YEAR BY 60.
MINUTES_PER_YEAR contiene 525600.
MULTIPLY-CORRESPONDING
Definicin
Multiplica el contenido de los componentes del registro <m> y del registro <n>.
Sintaxis:
MULTIPLY-CORRESPONDING <m> BY <n>.
Multiplica el contenido de los campos <m> y <n>, para aquellos componentes que se llamen igual.
El resultado actualiza los componentes del registro <m>.
Ejemplo:
DATA: BEGIN OF MONEY,
VALUE_IN(20) VALUE 'Marcos germanos'.
USA TYPE I VALUE 100,
FRG TYPE I VALUE 200,
AUT TYPE I VALUE 300,
END OF MONEY,
BEGIN OF CHANGE,
DESCRIPTION(30)
VALUE 'DM a moneda del pas'.
USA TYPE F VALUE '0.6667',
FRG TYPE F VALUE '1.0',
AUT TYPE F VALUE '7.0',
END OF CHANGE.
MULTIPLY-CORRESPONDING MONEY BY CHANGE.
MONEY-VALUE_IN = 'Moneda del pas'.
NEW-LINE
Definicin
Para provocar un salto de lnea se puede utilizar la clusula AT o "/" de la sentencia WRITE, la
sentencia ULINE, o la sentencia NEW-LINE.
Sintaxis:
NEW-LINE [ NO-SCROLLING | SCROLLING ].
Esta sentencia posiciona la salida en una nueva lnea, SY-COLNO toma el valor 1 y SY-LINNO
incrementa su valor en 1.
Esta sentencia, a diferencia con la sentencia SKIP, no genera lneas en blanco.
Si despus de esta sentencia no hay ms sentencias de escritura, sta no tiene ningn efecto.
Con la opcin NO-SCROLLING la siguiente lnea no se desplaza con el scrolling horizontal.
Con la opcin SCROLLING desactivada.
La otra opcin tiene efecto si anteriormente se ha utilizado la opcin NO-SCROLLING y no se ha
realizado ninguna salida en la nueva lnea.
NEW-PAGE
Definicin
Si en un informe escribimos ms lneas en el dispositivo de salida que las definidas en la clusula
LINE-COUNT de la sentencia REPORT, el sistema crea automticamente una nueva pgina. Aparte
de esta creacin automtica de pginas, se puede forzar al sistema a crear una nueva pgina con las
sentencias NEW-PAGE y RESERVE.
Sintaxis:
NEW-PAGE.
Esta sentencia termina con las lneas de salida en la pgina actual.
Cualquier nueva lnea de salida saldr en una nueva pgina.
La nueva pgina ser creada si a partir de la sentencia NEW-PAGE aparecen sentencias de escritura
en el dispositivo de salida (WRITE, SKIP, ...).
Destacar que el evento END-OF-PAGE no se activa despus de la sentencia NEW-PAGE.
ON CHANGE OF .. ENDON
Definicin
Ejecuta un bloque de proceso si cambia el valor de un campo.
Sintaxis:
ON CHANGE OF <campo1> [ OR <campo2> ]
...
ENDON.
El bloque de proceso marcado por la sentencia ON CHANGE OF y ENDON se ejecuta si se
produce algn cambio en el campo <campo1>.
Con la clusula OR se puede especificar ms campo para considerar posibles cambios.
Ejemplo:
* Base de datos lgica F1S
TABLES: SPFLI, SFLIGHT, SBOOK.
GET SBOOK.
ON CHANGE OF SPFLI-CARRID OR
SPFLI-CONNID OR
SFLIGHT-FLDATE.
ULINE.
WRITE: /5 SPFLI-CARRID, SPFLI-CONNID,
5 SFLIGHT-FLDATE, SPFLI-FLTIME,
5 SFLIGHT-SEATSMAX, SFLIGHT-SEATSOCC.
ENDON.
WRITE: / SBOOK-CUSTOMID.
OPEN CURSOR
Definicin
Se puede leer lneas de una tabla de la base de datos utilizando un cursor. Antes de poder utilizar un
cursor (con la sentencia FETCH) es necesario abrirlo y, para ello, contamos con la sentencia OPEN
CURSOR.
Sintaxis:
OPEN CURSOR [ WITH HOLD ] <cursor> FOR SELECT ... [ WHERE <condicin>].
La sentencia lleva implcita una sentencia SELECT que nos sirve para seleccionar las lneas que
sern recorridas por el cursor.
El cursor <cursor> debe estar definido con la sentencia DATA y ser del tipo CURSOR.
Si utilizamos la opcin WITH HOLD, el cursor permanece abierto despus de un COMMIT de la
base de datos con una sentencia Native SQL.
En la clusula SELECT no se puede utilizar la opcin SINGLE y funciones de agregacin.
El resto de opciones estn permitidas.
OPEN DATASET
Definicin
Abre un fichero en el servidor de aplicacin.
Sintaxis:
OPEN DATASET <fichero> [ MESSAGE <mensaje> ]
[ FOR INPUT | FOR OUPUT | FOR APPENDING ]
[ IN BINARY | IN TEXT MODE ] [ AT POSITION <posicin> ].
Abre el fichero <fichero>.
Si no se especifica la opcin para el modo de apertura, el fichero se abre para lectura en modo
binario.
Si el sistema puede abrir el fichero, SY-SUBRC vale 0.
En caso contrario vale 8. <fichero> puede ser un literal o un campo que contenga el nombre del
fichero.
Si no se especifica el camino de acceso del fichero, el sistema abre el fichero en el directorio donde
el sistema SAP se est ejecutnado, en el servidor de aplicacin.
Para abrir un fichero, el usuario bajo el que se est ejecutando el sistema SAP debe tener las
apropiadas autorizaciones del sistema operativo.
MESSAGE -> Sobre el campo <mensaje> recibimos mensajes del sistema operativo de cmo ha
ido la operacin de apertura del fichero.
<mensaje> y la variable del sistema SY-SUBRC nos pueden servir para controlar los posibles
errores que puedan surgir.
FOR INPUT -> El fichero se abre para lectura.
OVERLAY
Definicin
Se utiliza para sobrescribir un campo alfanumrico con otro campo.
Sintaxis:
OVERLAY <campo1> WITH <campo2> [ ONLY <string> ].
Esta sentencia sobrescribe todas las posiciones del campo <campo1> que contengan las letras de
<string> con el contenido del campo <campo2>. <campo2> permanece sin cambios.
Si omitimos la clusula ONLY, slo las posiciones con espacios en blanco sern sobrescritas.
Si al menos una posicin del campo <campo1> es sustituida, SY-SUBRC ser 0.
En caso contrario ser 4. Si <campo1> es superior a la longitud que <campo2>, slo los caracteres
correspondientes a la longitud de <campo2> podrn ser actualizados en <campo1>.
Ejemplo 1:
DATA: WORK(20) VALUE 'Th t h s ch ng d.',
HELP(20) VALUE 'Grab a pattern'.
OVERLAY WORK WITH HELP.
La variable WORK vale 'That has changed.'
Ejemplo 2:
DATA: ONE(16), TWO(16).
ONE = '----****++++....'.
TWO = '-*+.-*+.-*+.-*+.'.
OVERLAY ONE WITH TWO ONLY '.'.
OVERLAY TWO WITH ONE ONLY '.+'.
OVERLAY ONE WITH TWO ONLY '+*'.
El campo ONE contiene '-----***-*++-*+.' y el campo TWO contiene '-*---***-*++-*+.' .
PACK
Definicin
Empaqueta el contenido de un campo sobre otro.
Sintaxis:
PACK <campo1> TO <campo2>.
Empaqueta el campo <campo1> en el campo <campo2>.
La operacin contraria ser hara con la sentencia UNPACK.
Ejemplo:
DATA C_FIELD(4) TYPE C VALUE '0103',
P_FIELD(2) TYPE P.
PACK C_FIELD TO P_FIELD.
C_FIELD: C'0103' --> P_FIELD: P'103C'
PARAMETERS
Definicin
Si queremos dar la posibilidad al usuario de introducir valores en variables en la pantalla de
seleccin, debemos definir dichas variables con la sentencia PARAMETERS.
La declaracin de variables con la sentencia PARAMETERS es muy parecida a la sentencia DATA.
Sintaxis:
PARAMETERS <parmetro> [ (<longitud)>].
[ TYPE <tipo> | LIKE <campo> ]
[ DECIMALS <decimales> ] [ DEFAULT <valor> ]
[ MEMORY ID <memoria>] [ MODIF ID <grupo> ]
[ MATCHCODE OBJECT <objeto> ] [ AS MATCHCODE STRUCTURE]
[ NO-DISPLAY ] [ LOWER CASE ] [ OBLIGATORY ] [ FOR TABLE <tabla> ]
[ AS CHECKBOX ] [ RADIOBUTTON GROUP <grupo> ]
[ VALUE-REQUEST ] [ HELP REQUEST ].
Con esta sentencia definimos el parmetro <parmetro>.
Las clusulas <longitud>, <tipo> y <decimales> sin iguales a las de la sentencia DATA.
Cuando el usuario arranque el programa aparece una pantalla de seleccin con el parmetro
<parmetro>, con longitud la especificada en <longitud>, o la longitud por defecto del campo si la
clusula no se define.
Por defecto la descripcin que aparece a la izquierda del campo es el nombre del campo.
El objeto parcial de programa Elementos de texto, la opcin Textos de seleccin nos
permite asociar al parmetro un texto significativo.
Otra posibilidad es la utilizacin de la sentencia SELECTION-SCREEN como veremos en el
apartado correspondiente a esta sentencia.
Se puede utilizar los parmetros de seleccin, por ejemplo, para que el usuario limite los valores
desde y hasta para una posterior lectura de la base de datos.
Si las condiciones de seleccin son ms complejas que indicar un valor desde y hasta, es preferible
utilizar la sentencia SELECT-OPTIONS.
DEFAULT -> <valor> puede ser un literal o el nombre de un campo.
Si especificamos el nombre de un campo el valor por defecto en el parmetro ser el valor del
campo en el momento de presentar la pantalla de seleccin.
Recordemos que el evento INITIALIZATION se ejecuta antes de la presentacin de la pantalla de
seleccin, en l se puede actualizar el valor del campo especificado.
El usuario puede modificar el valor que aparece por defecto.
NO-DISPLAY -> El parmetro no aparece en la pantalla de seleccin.
Se le puede dar un valor con la clusula DEFAULT, en el evento INITILIZATION, o con una
llamada al programa con la sentencia SUBMIT.
Si queremos mostrar el parmetro bajo ciertas circunstancias no se debe utilizar la clusula NODISPLAY ya que con ella no se podr hacer visible el parmetro.
Se debe definir visible y si no queremos que aparezca el campo utilizamos la sentencia MODIFY
SCREEN.
LOWER-CASE -> El sistema no convierte el valor del parmetro a maysculas, es decir, respeta
la entrada del usuario, sea con caracteres en maysculas y/o minsculas.
Si definimos el tipo de parmetro con la opcin LIKE y referenciamos un campo del diccionario de
datos, la clusula LOWER CASE no se puede utilizar.
OBLIGATORY -> Obliga a introducir un valor al usuario en el parmetro.
Un parmetro (formal o actual) puede ser definido con la clusula TABLES, USING o
CHANGING.
El significado de cada una de estas clusulas:
TABLES -> Los parmetros definidos con esta clusula slo pueden ser tablas internas, con o sin
lnea de cabecera.
USING -> Los parmetros definidos con esta clusula pueden ser de cualquier tipo de dato,
incluidas las tablas internas.
Se suelen utilizar como parmetros de entrada a la subrutina.
CHANGING -> Los parmetros definidos con esta clusula pueden ser de cualquier tipo de dato,
incluidas las tablas internas.
Se suelen utilizar como parmetro de salida de la subrutina.
Los parmetros formales con USING o CHANGING pueden ser especificados en el parmetro
actual utilizando los siguientes mtodos:
Llamada por referencia -> Es el mtodo por defecto.
No se especifica nada, tanto en los parmetros USING como en los parmetros CHANGING.
En la llamada transferimos la direccin del objeto de dato.
Cualquier modificacin realizada sobre el objeto de dato tendr efecto despus de la llamada.
Llamada por valor -> Se antepone a los parmetros la opcin VALUE (el parmetro entre
parntesis) con la clusula USING.
En la llamada se crea una copia del parmetro, que ser la utilizada por la subrutina.
Cualquier modificacin realizada en la subrutina no afectar al objeto de dato fuera de sta.
Llamada por valor y resultado -> Se antepone a los parmetros la opcin VALUE (el parmetro
entre parntesis) con la clusula CHANGING.
En la llamada se crea una copia del parmetro, que ser la utilizada por la subrutina.
Cualquier modificacin realizada en la subrutina (copia de parmetro actual) afectar al objeto de
dato (parmetro actual) slo si la subrutina termina correctamente, es decir, si no se ha ejecutado
ninguna sentencia MESSAGE.
Este tipo de mtodo slo tiene sentido en programacin de transacciones.
En los parmetros formales (sentencia FORM) se puede especificar un tipo de dato para
asegurarnos el tipo de ste.
Las conversiones de tipo realizadas entre los parmetros actuales y los parmetros formales
cumplen las siguientes reglas:
Especificacin de tipo Conversin
Sin especificacin / TYPE ANY
El sistema acepta cualquier tipo del parmetro actual.
Todos los atributos del parmetro actual se traspasan al parmetro formal.
TYPE TABLE
El sistema comprueba si el parmetro actual es una tabla interna.
Todos los atributos y estructura del parmetro actual se transporta al parmetro formal.
TYPE C, N, P o X
El sistema comprueba si el parmetro actual es del tipo especificado.
La longitud del parmetro y las especificamos de decimales, para el tipo P se transportan del
parmetro actual al parmetro formal.
TYPE D, F, I o T
El tipo de dato del parmetro actual debe coincidir con el tipo de dato del parmetro formal.
LIKE <campo> / TYPE <tipo-usuario>
Ejemplo 1:
PAR_PERSON-NAME+4(1) = ALPHA.
PAR_PERSON-AGE = NUMBER_P + 25.
ADD NUMBER_I TO PAR_POINTER.
PAR_PART_OF_ALPHA = SPACE.
ENDFORM.
El contenido de los campos despus del PERFORM es:
NUMBER_I = 6
NUMBER_P = 6
PERSON-NAME = 'Paula'
PERSON-AGE = 25
ALPHA = 'abcde j'
POSITION
Definicin
Para especificar una posicin de salida horizontal, SAP ofrece dos posibilidades.
La primera con la clusula AT en las sentencias WRITE y ULINE, y la segunda con la sentencia
POSITION.
Sintaxis:
POSITION <columna>.
El sistema, tras ejecutar la sentencia, pone la posicin de salida horizontal y la variable del sistema
SY-COLNO con el valor <columna>.
Si <columna> sobrepasa los lmites del informe, las subsiguientes sentencias de escritura se
ignoran.
Las variables del sistema SY-COLNO y SY-LINNO contienen la posicin de la columna actual y la
lnea actual respectivamente.
Aunque estas variables se pueden actualizar es recomendable no hacerlo y slo utilizarlas de
lectura.
Si las actualizamos SAP no garantiza que el resultado del programa sea correcto.
Ejemplo:
FORM LINEOUTPUT USING COLUMN LENGTH CHAR.
DATA LINEPOS TYPE P.
LINEPOS = COLUMN.
DO LENGTH TIMES.
POSITION LINEPOS. WRITE CHAR.
ADD 1 TO LINEPOS.
ENDDO.
ENDFORM.
Si llamamos al form de esta forma:
PERFORM LINEOUTPUT USING 5 10 '='.
El resultado sera:
==========
PRINT-CONTROL
Definicin
Cdigo
CI<cpi>
LI<lpi>
CO001
CO002
CO003
CO004
CO005
CO006
LM<m>
FO<font>
<cdigo>
Significado
Caracteres por pulgada
Lneas por pulgada
Color negro
Color rojo
Color azul
Color verde
Color amarillo
Color rosa
Margen izquierdo
Font de impresin
Especificacin directa de cdigo
Con la opcin FUNCTION se puede especificar cualquier cdigo que exista en el sistema.
Los print-control se definen a travs de la transaccin SAPD (Herramientas -> Gestin; Spool ->
Administracin del Spool).
Tambin la sentencia PRINT-CONTROL nos permite incluir lneas en el spool que luego no sern
impresas.
PRINT-CONTROL INDEX-LINE <campo>.
Esta sentencia escribe el contenido del campo <campo> en una lnea determinada lnea-indice a
partir de la lnea actual de salida.
Esta lnea se almacenar en el spool, y ser visible desde el spool pero no ser impresa.
Con esta sentencia se puede incluir informacin en los informes, por ejemplo, para la
administracin del spool.
PROCESS
Definicin
Sentencia de evento que indica el inicio del proceso PBO.
Sentencia de evento que indica el inicio del proceso PAI.
Sentencia de evento que marca el inicio del proceso donde se definen las ayudas no estndar de
campos.
Sentencia de evento que marca el inicio del proceso donde se definen los posibles valores para un
campo.
Sintaxis:
PROCESS BEFORE OUTPUT.
El proceso PBO se suele utilizar para iniciar los campo de la pantalla, posicionar el cursor, mostrar
o esconder campo o cambiar los atributos de los campos dinmicamente.
PROCESS AFTER INPUT.
El proceso PAI se suele utilizar para validar las entradas realizadas por el usuario, procesar la
posicin del cursor o procesar las funciones activadas.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F1 estando el cursor sobre algn campo de la
pantalla.
Si el evento se define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la
programa en la transaccin.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F4 estando el cursor sobre algn campo de la
pantalla.
Si el evento se define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la
programa en la transaccin.
PROVIDE .. ENDPROVIDE
Definicin
Recupera objetos de datos de tablas internas.
Sintaxis:
PROVIDE <campo11> <campo12> ... FROM <tabla1>
<campo21> <campo22> ... FROM <tabla2>
...
* FROM <tablan>
...
BETWEEN <valor1> AND <valor2>.
Ejemplo:
Sintaxis:
PUT <tabla_BD>.
Esta setencia slo puede utilizarse en programas de bases de datos lgicas.
Esta sentencia activa el evento GET para la tabla especificada en <tabla_BD> en el programa
asociado a la BDL.
Las reas de trabajo de las tablas definidas en la BDL y el programa se comparten.
RAISE
Definicin
Activa una excepcin dentro de un mdulo de funcin.
Sintaxis:
RAISE EXCEPCIN.
Activa una excepcin dentro de un mdulo de funcin.
Esta sentencia se tiene que ejecutar dentro de un mdulo de funcin.
Ejemplo:
FUNCTION-POOL CSTR.
FUNCTION STRING_SPLIT.
...
IF STRING NA DELIMITER.
RAISE NOT_FOUND.
ENDIF.
...
ENDFUNCTION.
El programa que llama a la funcin contiene el siguiente cdigo:
PROGRAM EXAMPLE.
...
CALL FUNCTION 'STRING_SPLIT'
* ...
EXCEPTIONS
NOT_FOUND = 7.
IF SY-SUBRC = 7.
WRITE / 'Hay un problema.'.
ELSE.
...
ENDIF.
RANGES
Definicin
Con esta sentencia declaramos una tabla interna con el mismo formato que el utilizado en los
criterios de seleccin.
El objeto declarado con esta sentencia podr ser utilizado en una expresin lgica con el operador
IN.
Sintaxis:
RANGES <criterio> FOR <campo>.
Se declara el criterio de seleccin <criterio>, el cual referencia al campo <campo>.
<campo> puede ser un campo de una tabla de la base de datos, o cualquier otro tipo de campo.
Se puede declarar una tabla con los campos de un criterio de seleccin: SIGN, OPTION, LOW y
HIGH.
READ CURRENT LINE
Definicin
Vuelve a una lnea ya tratada, por ejemplo, por el evento de la tecla de funcin F2, o por la
sentencia READ LINE.
Sintaxis:
READ CURRENT LINE [ FIELD VALUE <c11> [ INTO <c12> ] ... <cn1> [ INTO <cn2> ] ].
La clusula FIELD VALUE tiene el mismo efecto que el visto en la sentencia READ LINE.
READ DATASET
Definicin
Lee un fichero secuencial en el servidor de aplicacin.
Sintaxis:
READ DATASET <fichero> INTO <campo> [ LENGTH <longitud> ].
Lee datos del fichero secuencial <fichero> sobre el campo <campo>.
Para decidir el formato de <campo> es necesario conocer la estructura del fichero.
El modo de transferencia se indica en la sentencia OPEN DATASET.
Si el fichero no esta abierto para lectura, el sistema intenta abrir el fichero en modo binario, o con
las opciones de la ltima sentencia OPEN DATASET sobre ese fichero.
No obstante, es recomendable abrir siempre el fichero con la sentencia OPEN DATASET.
Si la operacin de lectura ha sido satisfactoria la variable SY-SUBRC vale 0, si vale 4 quiere decir
que hemos llegado al final del fichero, y si vale 8 es que el fichero no ha podido ser abierto.
Trabajando en el modo binario, se puede utilizar la clusula LENGTH para que el sistema actualice
el campo <longitud> con la longitud del campo ledo.
Ejemplo:
DO.
READ DATASET '/usr/test' INTO REC.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WRITE: / REC-TEXT, REC-NUMBER.
ENDDO.
READ LINE
Definicin
Permite leer lneas de un listado.
Sintaxis:
READ LINE <lnea> [ INDEX <ndice> ]
[ FIELD VALUE <c11> [ INTO <c12> ] ... <cn1> [ INTO <cn2> ] ]
[ OF CURRENT PAGE | OF PAGE <pgina> ].
Esta sentencia sin utilizar ninguna opcin lee la lnea con ndice <lnea> en el listado actual,
actualizando la variable SY-LISEL con el contenido de la lnea, y actualizando todos los campos
asociados a la lnea con la sentencia HIDE.
Si la lnea indica existe, SY-SUBRC toma el valor 0, en caso contrario toma el valoe 4.
Las distintas opciones de la sentencia tienen los siguientes efectos:
INDEX -> La lnea que hay que leer ser del listado con el nivel determinado en <ndice>. podr
ser una lnea del listado bsico (valor 0) o de un listado secundario (valor 1, 2, ...)
FIELD VALUE -> El sistema interpreta la salida del campo <c11> sobre la lnea <lnea> para
almacenarlo sobre el mismo campo o sobre el campo alternativo <c12> si utilizamos la opcin
INTO.
OF CURRENT PAGE -> Con est clusula el valor de <lnea> no se refiere al listado completo,
sino a la posicin en la pgina actual.
OF PAGE -> Con esta clusula el valor de <lnea> no se refiere al listado completo, sino a la
posicin relativa de la pgina <pgina>.
READ REPORT
Definicin
Lee un programa de la base de datos.
Sintaxis:
READ REPORT <programa> INTO <tabla>.
Lee el programa <programa> de la base de datos sobre la tabla interna <tabla>.
La longitud de la lnea de la tabla interna debe ser, al menos, de 72 caracteres.
Si el programa lee, SY-SUBRC vale 0, en caso contrario vale distinto de 0.
Ejemplo:
DATA: BEGIN OF INT_TABLE OCCURS 100,
COMP1,
COMP2,
COMP3,
END OF INT_TABLE.
FORM PUT_ENTRY USING ENTRY LIKE LINE OF INT_TABLE.
READ TABLE INT_TABLE WITH KEY COMP2 = ENTRY-COMP2
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
INSERT ENTRY INTO INT_TABLE INDEX SY-TABIX.
ENDIF.
ENDFORM.
READ TABLE
Definicin
Se utiliza para leer una sola lnea de una tabla interna.
Sintaxis:
READ TABLE <tabla> [ INTO <rea-trabajo> ] INDEX <ndice>.
Con la clusula INTO especificamos un rea de trabajo distinto a la lnea de cabecera de la tabla.
La clusula INTO es opcional si la tabla especificada tiene lnea de cabecera.
El sistema lee la lnea correspondiente al ndice <ndice>.
Si el sistema encuentra la lnea con el ndice indicado la variable SY-SUBRC valdr 0 y SY-TABIX
contiene el ndice de la lnea 0; sino, SY-SUBRC es distinto de 0.
Si <ndice> es menor o igual a 0 se produce un error en tiempo de ejecucin.
Si el ndice excede del tamao de la tabla, SY-SUBRC es 4.
READ TABLE <tabla> [ INTO <rea-trabajo> ] WITH KEY <clave> [ BINAY SEARCH ].
Con esta variante se puede leer de una tabla interna a travs de una clave particular o una tabla
estndar.
Con esta variante tambin se puede ejecutar una bsqueda binaria en lugar de la secuencial.
<clave> puede tener las siguientes opciones:
WITH KEY <campo1> = <valor1> ... <campon> = <valorn> -> Los campos <campo1> son
campos de la tabla.
Los campos <valor1> son los valores que deben coincidir con los campos de la tabla.
WITH KEY = <valor> -> <valor> es una lnea completa de la tabla.
WITH KEY <valor> -> Con esta opcin el sistema compara la parte izquierda de la tabla con el
campo <valor>.
La longitud que hay que comparar viene definida por la longitud del campo <valor>.
READ TABLE <tabla> [ INTO <rea-trabajo> ] [ BINAY SEARCH ].
Con esta variante leemos una lnea con la clave estndar de la tabla interna.
Esta variante slo puede ser utilizada con tablas con cabecera de lnea.
Ejemplo:
DATA: BEGIN OF INT_TABLE OCCURS 100,
COMP1,
COMP2,
COMP3,
END OF INT_TABLE.
FORM PUT_ENTRY USING ENTRY LIKE LINE OF INT_TABLE.
READ TABLE INT_TABLE WITH KEY COMP2 = ENTRY-COMP2
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
Recupera todos los parmetros de una funcin que ha sido ejecutada asincrnicamente, como por
ejemplo con la sentencia CALL FUNCTION .. STARTING NEW TASK.
Ejemplo:
DATA: INFO LIKE RFCSI,
* Result of RFC_SYSTEM_INFO function
SYSTEM_MSG(80) VALUE SPACE.
* Exception handling
CALL FUNCTION 'RFC_SYSTEM_INFO'
STARTING NEW TASK 'INFO'
PERFORMING 'RETURN_INFO' ON END OF TASK.
WRITE: 'Wait for reply'.
...
AT USER-COMMAND.
* Return from FORM routine RETURN_INFO
IF SYSTEM_MSG = SPACE.
WRITE: 'Destination =', INFO-RFCDEST.
ELSE.
WRITE SYSTEM_MSG.
ENDIF.
...
FORM RETURN_INFO USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'
IMPORTING RFCSI_EXPORT = INFO
EXCEPTIONS SYSTEM_FAILURE MESSAGE SYSTEM_MSG.
REFRESH SCREEN. "Simula el campo de comando = return key
ENDFORM.
REFRESH
Definicin
Se utiliza para inicializar una tabla, con o sin lnea de cabecera.
Sintaxis:
REFRESH <tabla>.
Despus de procesar el sistema esta sentencia, la tabla interna no contiene ninguna lnea.
REFRESH CONTROL
Definicin
Inicializa un control de pantalla.
Sintaxis:
REFRESH CONTROL <tabla> FROM SCREEN <pantalla>.
Inicializa el control de pantalla <control> de la pantalla <pantalla>..
REFRESH SCREEN
Definicin
Refresca la pantalla de la interfaz grfica de usuario (SAPGUI).
Sintaxis:
REFRESH SCREEN.
Inicializa el control de pantalla <control> de la pantalla <pantalla>.
REJECT
Definicin
Termina con el bloque de proceso del evento GET para ir a la siguiente iteracin del mismo evento
u otro de evento GET.
Sintaxis:
REJECT [ <tabla> ].
La sentencia sin parmetros es el de abandonar el actual bloque de proceso y continuar con la
siguiente iteracin del mismo evento GET.
Con <tabla> en lugar de irnos al mismo evento GET, el sistema ejecuta el evento GET para la tabla
indicada.
<tabla> deber ser una tabla con jerarqua superior (estructura jerrquica de tablas de una base de
datos lgica) a la tabla tratada en el actual evento GET.
Ejemplo:
Base de datos lgica F1S
Jerarqua: SPFLI -> SFLIGHT -> SBOOK
TABLES: SFLIGHT,
SBOOK.
GET SFLIGHT.
...
GET SBOOK.
...
REJECT 'SFLIGHT'.
...
REJECT cancela el proceso del evento 'GET SBOOK' y continua con el procesamiento del evento
'GET SFLIGHT' .
REPLACE
Definicin
Reemplaza cierta parte de un string por otro string.
Sintaxis:
REPLACE <string1> WITH <string2> INTO <campo> [ LENGTH <longitud> ].
El sistema busca en el campo <campo> la primera ocurrencia del string <string1> para sustituirla
por el string <string2>.
Con la clusula LENGTH slo se sustituir los caracteres indicados en <longitud>.
Si no se especifica la clusula LENGTH la sustituicin del string <string1> ser completa.
Si el string <string1> se encuentra en el campo <campo> es sustituido por <string2> y la variable
del sistema SY-SUBRC toma el valor 0.
En caso contrario, no se reemplaza nada y SY-SUBRC toma el valor 4. <string1>, <string2> y
<longitud> pueden ser variables.
Ejemplo:
DATA FIELD(10).
MOVE 'ABCB' TO FIELD.
REPLACE 'B' WITH 'string' INTO FIELD.
Devuelve:
FIELD = 'AstringCB', SY-SUBRC = 0
REPORT
Definicin
Define ciertas caractersticas de un programa.
Sintaxis:
REPORT <nombre> [ NO STANDARD PAGE HEADING ]
[ LINE-SIZE <ancho> ]
[ LINE-COUNT <lneas> ]
[ MESSAGE-ID <mm> ].
Por defecto el sistema ofrece una cabecera estndar compuesta de una primera lnea con el ttulo del
programa (sacado de los atributos del programa) y un nmero, y una segunda lnea compuesta de
una lnea horizontal.
El significado de las clusulas es la siguiente:
NO STANDARD PAGE HEADING -> Excluye la cabecera estndar.
LINE-SIZE indicamos el nmero de columnas del informe, <ancho> es un literal numrico que
indica ese valor.
LINE-COUNT -> Indicamos el nmero de lnea por pgina.
El nmero de lneas est indicado por <lneas>.
Si utilizamos el evento END-OF-PAGE habr que indicar entre parntesis el nmero de lneas en
ese evento a continuacin de las lneas por pgina.
MESSAGE-ID -> Indica la clase de mensaje que utilizaremos en el programa.
Esta clusula no tiene ningn efecto en el formato de la pgina.
REPORT <programa> [ NO STANDARD PAGE HEADING ]
[ LINE-SIZE <ancho> ]
[ LINE-COUNT <lneas> ]
[ MESSAGE-ID <mm> ]
[ DEFINING DATABASE <base-de-datos> ].
<programa> puede ser cualquier combinacin de hasta 8 caracteres de longitud.
El significado de las clusulas puede ser el siguiente:
Sintaxis:
ROLLBACK WORK.
Si la operacin se realiza satisfactoriamente, SY-SUBRC vale 0, en caso contrario, SY-SUBRC
toma un valor distinto de 0..
SCAN
Definicin
Analiza un programa.
Sintaxis:
SCAN ABAP-SOURCE <tabla1> TOKENS INTO <tabla2>
[ STATEMENTS INTO <tabla3> ] [ FROM <n1> TO <n2> ] [ KEYWORDS FROM <tabla4> ]
[ LEVELS INTO <tabla5> ] [ OVERFLOW INTO <campo1> ] [ WITH ANALYSIS ]
[ WITH COMMENTS ] [ WITH INCLUDES ] [ WITHOUT TRMAC ] [ PROGRAM FROM
<campo2> ]
[ INCLUDED INTO <campo3> ] [ MESSAGE INTO <campo4> ]
[ WORD INTO <campo5> ] [ LINE INTO <n3> ] [ OFFSET INTO <n4> ].
Desglosa el cdigo fuente de un programa contenido en la tabla <tabla1> en elementos sobre la
tabla <tabla2> (estructura STOKEN o STOKEX si se especifica la clusula WITH ANALYSIS).
Los comentarios son eliminados del anlisis a no ser que utilicemos la clusula WITH
COMMENTS.
Con la clusula STATEMENTS INTO cada sentencia del programa que hay que analizar se incluye
en la tabla <tabla3> (estructura SSTMNT).
Las sentencias anidadas se dividen en sentencias elementales.
Los cdigos de retorno devueltos por el sistema (se almacenan en la variable SY-SUBRC) son los
siguientes:
Valor
0
1
2
4
8
Significado
La tabla con el cdigo fuente no est vaca, no contiene errores sintcticos y se
ha podido subdividir en elementos.
La tabla con el cdigo fuente no est vaca y se ha podido subdividir en
elementos pero al menos un programa include no existe. Este error slo puede
ocurrir si se pone la clusula WITH INCLUDES.
La tabla con el cdigo fuente est vaca (o el rango seleccionado con las
clusulas FROM y TO).
La sentencia detecta errores en el cdigo fuente.
Otro tipo de error.
LEVELS INTO -> Expande sobre la tabla <tabla5> un mayor detalle de ciertas sentencias de la
tabla <tabla2>, como por ejemplo la sentencia INCLUDE.
<tabla5> tiene la estructura SLEVEL.
SCROLL LIST
Definicin
Se utiliza para hacer un desplazamiento (scrolling) del informe de salida, por ejemplo, como
respuesta a una entrada por parte del usuario. El scrolling puede ser horizontal o vertical.
Sintaxis:
SCROLL LIST { FORWARD | BACKWARD } [ INDEX <ndice> ] [ <n> PAGES ].
Con la clusula FORWARD el scrolling se realiza haca adelante.
Con BACKWARD se realiza haca atrs.
Sin la opcin INDEX, el scrolling se realiza desde la posicin actual en listado actual, una pgina
adelante oatrs en funcin de la primera clusula.
Con la opcin INDEX el scrolling se realiza en el nivel marcado por <ndice>.
Sin la clusula PAGE se avanza o retrocede una pgina.
En todas las variantes que veremos de la sentencia la clusula INDEX tiene el mismo significado
que el visto anteriormente.
La sentencia SCROLL tiene efecto sobre el listado completo.
La sentencia no tiene efecto si se utiliza antes de la primera sentencia de salida del listado.
Si se utiliza despus de la primera sentencia de salida, el efecto de la sentencia es para todo el
listado, incluyendo posibles sentencias de salida posteriores.
SCROLL LIST TO { FIRST PAGE | LAST PAGE | PAGE <pgina> }
[ INDEX <ndice> ] [ LINE <lnea> ].
El informe se desplazar hasta la primera pgina con la opcin FIRST PAGE, a la ltima pgina con
la opcin LAST PAGE, o a una pgina determinada con la opcin PAGE <pgina>.
Con la opcin LINE el sistema muestra la pgina en la cual se encuentra la lnea <lnea>.
Las lneas de la cabecera y pie de pgina no se consideran a la hora de contar las lneas del informe.
SCROLL LIST { LEFT | RIGHT } [ BY <n> PLACES ] [ INDEX <ndice> ].
El scrolling se realiza horizontalmente, con LEFT hasta el margen izquierdo, con RIGHT hasta el
margen izquierdo.
Con la clusula BY especificamos el nmero de columnas que queramos desplazar.
SCROLL LIST { LEFT | RIGHT } [ BY <n> PLACES ] [ INDEX <ndice> ].
Desplaza el informe horizontalmente hasta la columna <col>.
El desplazamiento, por lo tanto, podr ser hacia la izquierda o hasta la derecha en funcin de la
columna actual de listado.
SEARCH
Definicin
Significado
Cualquier sentencia de caracteres. Los espacios en blanco se ignoran.
Cualquier sentencia de caracteres. Los espacios en blanco no se ignoran.
Cualquier palabra terminada con el string especificado.
Cualquier palabra que empiece con el string especificado.
ABREVIATED -> Los caracteres de <string> a buscar en <campo> pueden estar separados por
otros caracteres, pero el conjunto de caracteres deben formar un sola palabra.
STARTING AT -> La bsqueda en el campo <campo> se realiza a partir de la posicin <n1>.
El resultado en SY-FDPOS es relativo a la posicin <n1> y no al principio del campo <campo>.
ENDING AT -> Limitamos la bsqueda hasta la posicin <n2>.
AND MARK -> Si la bsqueda es satisfactoria, todos los caracteres del string de bsqueda se
convierten en maysculas.
SELECT .. ENDSELECT
Definicin
Se utiliza para leer un/os registro/s de una tabla de la base de datos.
Lectura de un nico registro de una tabla de la base de datos.
Sintaxis:
SELECT [ SINGLE ] <opciones-select>
FROM <opciones-from>
[ INTO <opciones-into | APPENDING <opciones-appending> ]
[ WHERE <opciones-where> ]
[ GROUP BY <opciones-group> ]
[ ORDER BY <opciones-order> ].
...
[ ENDSELECT. ]
Con la clusula SELECT identificamos los campos que queremos leer, si se usa con la clusula
FROM es obligatoria e identifica la tabla que hay que leer.
INTO o APPENDING -> Son opcionales e identifican los campos destino de la lectura.
WHERE -> Es opcional e identifica las condiciones de seleccin.
GROUP BY -> Es opcional y sirve para la agrupacin de campos.
Las reas de trabajo de las tablas se generan automticamente en el momento de declarar la tabla
con la sentencia TABLES.
La clusula INTO tambin aparece en otras sentencias Open SQL como FETCH.
El campo <rea> debe estar declarado como objeto de datos y debe tener, al menos, la longitud de
los campos ledos.
Con la opcin CORRESPONDING FIELD OF el sistema deja los campos sobre la estructura
especificada, sobre los campos con el mismo nombre que los ledos.
Con la opcin TABLE la lectura se realiza en una sola operacin (no es necesario ENDSELECT) y
cada lnea leda es insertada en la tabla interna.
Si se especifica la clusula PACKAGE SIZE la lectura se realiza en paquetes de <n> lneas (si es
necesario ENDSELECT).
Opciones de la clusula APPENDING
Con la clusula APPENDING las lneas aadidas en la tabla interna se aaden al finalGE
>=
Mayor o igual que
<campo_bd> [ NOT ] BETWEEN <campo1> AND <campo2> -> El valor del campo de la base
de datos <campo_bd> debe estar comprendido (o no, si se utiliza NOT) entre los valores de los
campos <campo1> y <campo2>. <campo1> y <campo2> pueden ser literales.
<campo_bd> [ NOT ] IN <criterio_seleccion> <campo1> (campo1>, ... , <campon> ) -> El valor
de la base de datos debe, o no, ser el valor nulo.
<campo_bd> [ NOT ] LIKE <campo> [ ESCAPE <e> ] -> Esta opcin slo puede ser utilizada
con campos alfanumricos.
El campo de la base de datos debe, o no, corresponder con el patrn <campo>.
Patrn significa que el campo puede tener caracteres con un significado especial.
El guin bajo ( _ ) representa cualquier carcter individual, el carcter porcentaje ( % ) representa
cualquier nmero de caracteres.
Si queremos utilizar estos caracteres especiales como carcter significativo hay que anteponerle el
carcter de escape <e>.
<campo_bd> [ NOT ] IN <criterio_seleccion> -> El campo de la base de datos debe, o no,
cumplir las condiciones del criterio.
( <tabla_condiciones> ) -> Se puede especificar la expresin en tiempo de ejecucin a travs de la
tabla interna <tabla_condiciones>.
La tabla debe contener slo un campo alfanmerico de longitud 72.
La tabla debe estar especificada entre parntesis sin espacios en blanco entre los parntesis y el
nombre de la tabla.
Puede estar combinada con expresiones estticas gracias a los operadores AND y OR.
<campo_bd> IS [ NOT ] NULL -> El valor del campo de la base de datos debe, o no, ser el valor
nulo.
Se puede crear una expresin combinada gracias a los operadores AND, OR y NOT. NOT no tiene
prioridad sobre AND y a su vez OR.
Se pueden utilizar los parntesis para marcar la prioridad en una expresin.
Hay un formato especial de la sentencia WHERE que es el siguiente:
FOR ALL ENTRIES IN <tabla> WHERE <condicin>.
APPENDING [ CORRESPONDING FIELD OF]
TABLE <tabla> [ PACKAGE SIZE <n> ]
Las opciones CORRESPONDING FIELDS OF, TABLE y PACKAGE SIZE tienen el mismo
significado que en la clusula INTO.
Equivalente
=
<> o ><
<
<=
>
Significado
Igual a
No igual
Menor que
Menor o igual a
Mayor que
El campo o literal <opcin>, utilizado en OPTION, incluye un valor en el campo SIGN del criterio
de seleccin.
Todos los campos vistos en esta clusula, <g>, <h>, <opcin> y <signo> pueden ser variables o
literales.
NO-EXTENSION -> Restringe que el usuario slo pueda introducir una lnea en el criterio de
seleccin.
El sistema no presenta el campo de extensin que aparece a la derecha de los criterios de seleccin,
por lo tanto, el usuario no puede realizar extensiones.
NO-INTERVALS -> Restringe que el usuario no puede introducir intervalos y se limite a
introducir nicamente valores sencillos.
El sistema elimina la columna de valores hasta.
NO DATABASE SELECTION -> Si el criterio de seleccin definido tiene otro objetivo que el de
la seleccin de datos se puede utilizar esta clusula para que no sea transportado al programa de la
base de datos.
Cuando declaramos un criterio de seleccin para un campo de una tabla de la base de datos y
utilizamos un programa de bases de datos lgica (sentencia GET), el sistema, por defecto,
transporta el criterio de seleccin al programa de la base de datos para limitar la lectura de registros.
NO-DISPLAY, LOWER CASE, OBLIGATORY, MEMORY ID, MODIF ID y MATCHCODE
OBJECT -> Se utilizan de la misma forma que en la sentencia PARAMETERS.
VALUE-REQUEST y HELP-REQUEST -> Se utilizan exclusivamente en los programa de
definicin de bases de datos lgica.
Ejemplo 1:
TABLES SAPLANE.
...
SELECT-OPTIONS S_PTYPE FOR SAPLANE-PLANETYPE MODIF ID ABC.
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ABC'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Ejemplo 2:
SELECT-OPTIONS DATE FOR SY-DATUM DEFAULT SY-DATUM.
SELECTION-SCREEN
Definicin
En la pantalla de seleccin los parmetros y criterios de seleccin aparecen uno detrs de otro en
filas distintas.
Si este formato de pantalla no es suficiente para nuestras necesidades se puede utilizar la sentencia
SELECTION-SCREEN para formatear la pantalla de seleccin.
Sintaxis:
SELECTION-SCREEN BEGIN OF LINE...
....
SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP [ <n> ].
SELECTION-SCREEN ULINE [ [ / ]
<posicin> ( <longitud>) ] [ / ] SELECTION-SCREEN POSITION <posicin>.
SELECTION-SCREEN COMMENT [ / ] <
posicin> (<longitud>) <campo>
[ FOR FIELD <campo2> ] [ MODIF ID <clave> ] .
SELECTION-SCREEN BEGIN OF BLOCK <bloque> [ WITH FRAME [ TITLE <ttulo>
] ] [ NO INTERVALS ]
...
SELECTION-SCREEN END OF BLOCK <bloque>. SELECTION-SCREEN FUNCTION
KEY <i>.
SELECTION-SCREEN BEGIN OF VERSION <
versin> TEXT-xxx. SELECTION-SCREEN END OF VERSION <versin>.
SELECTION-SCREEN EXCLUDE
SELECTION-SCREEN DYNAMIC
SELECTIONS FOR TABLE <tabla>. SELECTION-SCREEN FIELD SELECTION FOR
TABLE <tabla>.
El significado de las clusulas es el siguiente:
SKIP -> Provoca lneas en blanco en la pantalla de seleccin. <n> es opcional se utiliza para
saltar ms de una lnea.
ULINE -> Subraya una lnea o parte de ella en la pantalla de seleccin.
Si no utilizamos la opcin <posicin> (<longitud>) una nueva lna se crea.
Si utilizamos la opcin <posicin>(<longitud>) la nueva lnea comienza en la posicin <posicin>
con una longitud de <longitud> caracteres.
Con varios elementos sobre una lnea se puede especificar <longitud> sin especificar <posicin>.
MODIF ID -> Tiene el mismo significado que en la sentencia PARAMETERS.
COMMENT -> Se utiliza para escribir texto sobre la pantalla de seleccin. Con la barra ( / )
saltamos de lnea y con <posicin> y <longitud> definimos la posicin y la longitud del texto en la
pantalla.
<campo1> puede ser un elemento de texto o un campo con una longitud mxima de 8 caracteres.
Para asignar un texto a un parmetro o a un criterio de seleccin se utiliza la opcin FOR FIELD,
<campo2> identifica el nombre del parmetro o criterio de seleccin.
La opcin MODIF ID tiene el mismo significado que en la clusula PARAMETERS.
BEGIN OF LINE ... END OF LINE -> Se utiliza para situar en una misma lnea varios
parmetros y/o comentarios en la pantalla de seleccin.
Cuando utilizamos esta clusula el posible elemento de texto habr que utilizar la clusula
COMMENT de la sentencia SELECTION-SCREEN.
Los criterios de seleccin no se pueden incluir.
La opcin barra ( / ) no se puede especificar, y la opcin <posicin> se puede omitir.
POSITION -> Sita un parmetro o un comentario en una posicin determinada.
Para <posicin> se puede especificar un nmero, POS_LOW y POS_HIGH. POS_LOW y
POS_HIGH son las posiciones del campo desde y campo hasta de un criterio de seleccin sobre
la pantalla.
Esta clusula slo puede ser utilizada en un bloque BEGIN OF LINE ... END OF LINE.
BEGIN OF BLOCK ... END OF BLOCK -> Crea un bloque lgico sobre la pantalla de seleccin.
Con la opcin WITH FRAME el bloque se engloba con un cuadreo.
Con la opcin TITLE aparecer el ttulo <ttulo> en la primera lnea del cuadro.
<ttulo> puede ser un elemento de texto o un literal.
Ejemplo 5:
TABLES SAPLANE. SELECTION-SCREEN
BEGIN OF BLOCK CHARLY
WITH FRAME TITLE TEXT-001. PARAMETERS PARM(5).
SELECT-OPTIONS SEL FOR SAPLANE-PLANETYPE. SELECTION-SCREEN END OF
BLOCK CHARLY.
SET BLANK LINES
Definicin
Se utiliza para escribir lneas en blanco con la clusula AT de la sentencia WRITE.
Sintaxis:
SET BLANK LINES.
Por defecto el sistema no crea lnea en blanco en el dispositivo de salida con la sentencia
WRITE..AT.
Una lnea en blanco es una lnea nicamente compuesta del carcter espacio en blanco.
Con la opcin ON el sistema no elimina las lneas en blanco creadas con la sentencia WRITE.
Con la opcin OFF dejamos la opcin por defecto en el sistema.
Ejemplo:
DATA: BEGIN OF TEXTTAB OCCURS 100,
LINE(72),
END OF TEXTTAB.
SET BLANK LINES ON.
LOOP AT TEXTTAB.
WRITE / TEXTTAB-LINE.
ENDLOOP.
SET COUNTRY
Definicin
Define el formato del punto decimal y el formato de la fecha para todas las sentencias de escritura
(WRITE) que se utilicen a continuacin, de acuerdo con la parametrizacin que se haya realizado
sobre la tabla T005X.
Sintaxis:
SET COUNTRY <pas>.
Con <pas> identificamos el cdigo de pas a utilizar en la sentencia.
Si el pas existe en la tabla de pases T005X, el cdigo de retorno de la sentencia es 0, en caso
contrario, es 4.
Si pas tiene el valor SPACE se formatea la salida al formato especificado en el registro maestro del
usuario.
El efecto de esta sentencia no se limita a la ejecucin de un programa, sino que su efecto se extiende
a toda el rea de trabajo del usuario.
Ejemplo:
DATA: RECEIVER_COUNTRY LIKE T005X-LAND,
DATE LIKE SY-DATUM,
AMOUNT TYPE P DECIMALS 2.
...
SET COUNTRY RECEIVER_COUNTRY.
IF SY-SUBRC = 4.
WRITE: / RECEIVER COUNTRY, ' es desconocido'.
ENDIF.
WRITE: / DATE, AMOUNT.
SET CURSOR
Definicin
Sita el cursor en una posicin determinada.
Sintaxis:
SET CURSOR <columna> <fila>.
Esta variante permite situar el cursor sobre la columna <columna> y fila <fila> respecto de la
ventana actual de salida.
SET CURSOR [ FIELD <campo> ]LINE <lnea> [ OFFSET <offset> ].
Esta variante permite situar el cursor sobre una posicin del listado actual.
El significado de las clusulas es el siguiente:
FIELD -> Es opcional. Si se utiliza sita el cursor sobre el campo especificado en <campo>.
Si se ha utilizado la clusula FIELD el desplazamiento ser relativo al campo.
Si no se ha utilizado la clusula FIELD el desplazamiento ser relativo a la lnea.
LINE -> Es obligatoria y determina el nmero de lnea absoluto del listado.
OFFSET -> Es opcional y determina el offset o desplazamiento utilizado.
Ejemplo:
MOVE 'MODUS' TO F.
MOVE '1234567890' TO MODUS.
DO 10 TIMES.
NEW-LINE. POSITION SY-INDEX WRITE MODUS.
ENDDO.
AT LINE-SELECTION.
SET CURSOR FIELD F LINE SY-LILLI.
SET EXTENDED CHECK
Definicin
Esta sentencia activa o desactiva la comprobacin sintctica de un programa.
Sintaxis:
ENDDO.
ENDDO.
ULINE.
TOP-OF-PAGE.
ULINE.
WRITE: /(10) 'No', '|',
(10) 'Sub_No', '|'.
SET LEFT SCROLL-BOUNDARY.
WRITE: 'DATA 1', '|', 'DATA 2', '|', 'DATA 3', '|'. " ... 'DATA n'
ULINE.
SET LOCALE LANGUAGE
Definicin
Las variables de entorno de texto se almacenan en el registro maestro del usuario, pero se puede
modificar dichas variables, slo para la ejecucin del programa, a travs de la sentencia SET
LOCALE.
Sintaxis:
SET LOCALE LANGUAGE <lenguaje> [ COUNTRY <pas> ][ MODIFIER <mod> ].
Esta sentencia pone la variable de entorno de texto en el lenguaje especificado en <lenguaje>.
El significado de las clusula es el siguientes:
COUNTRY -> Se utiliza para especificar adicionalmente en pas del lenguaje.
Hay ciertos lenguajes que dependiendo del pas, los criterios de ordenacin varian.
MODIFIER -> Especificamos el criterio de seleccin.
<pas> y <mod> deben ser del tipo C y deben ser de la misma longitud que el campo clave de la
tabla TCP0C.
Las variables del entorno afectan a todas las operaciones que dependan del juego de caracteres.
SET MARGIN
Definicin
Determina el margen superior-izquierdo en la impresin directa de un informe.
Sintaxis:
SET MARGIN <x> [ <y> ].
<x> determina el margen izquierdo.
<y> es opcional y determina el margen superior de impresin.
Esta sentencia slo tiene efecto si el listado es enviado directamente al spool, con o sin impresin
inmediata.
Si la impresin se realiza en pantalla no tiene efecto.
SET PARAMETER
Definicin
APPEND TAB.
SET PF-STATUS 'STA3' EXCLUDING TAB.
SET PROPERTY
Definicin
Actualiza una propiedad de un objeto.
Sintaxis:
SET PROPERTY OF <objeto> <propiedad> = <campo> [ FLUSH ].
Actualiza la propiedad <propiedad> del objeto <objeto> con el valor del campo <campo>.
<objeto> debe ser del tipo OLE2_OBJECT.
Con la clusula FLUSH la sentencia no se ejecuta hasta la prxima sentencia OLE2 que no lleve la
clusula FLUSH.
De esta forma se pueden agrupar las sentencias en una sola operacin de transporte.
Ejemplo:
INCLUDE OLE2INCL.
DATA EXCEL TYPE OLE2_OBJECT.
CREATE OBJECT EXCEL 'Excel.Application'.
SET PROPERTY OF EXCEL 'Visible' = 1.
SET RUN TIME ANALIZER
Definicin
Sentencia que activa o desactiva la grabacin de informacin en el fichero de anlisis..
Sintaxis:
SET RUN TIME ANALYZER { ON [ MODE <modo> ] | OFF }.
Con la clusula ON activa la grabacin de la informacin en el fichero de anlisis.
Con la clusula OFF se cierra el fichero de anlisis y se desactiva la grabacin.
Con la opcin MODE se especifica que tipo de informacin se graba en el fichero de anlisis.
<modo> es un literal numrico.
Su representacin binaria determina que informacin se almacena.
Un 0 activa la grabacin, un 1 la desactiva.
Cada posicin tiene un significado determinado:
Byte 1: con un "1" la informacin referente a tablas internas (APPEND, COLLECT...) no se
graba en el fichero de anlisis.
Byte 2: con un "1" cierta informacin tcnica de la base de datos (OPEN, FETCH...) no se graba
en el fichero de anlisis.
Byte 3: con un "1" las subrutinas (PERFORM) no se graban en el fichero de anlisis.
Despus de crear el fichero de anlisis se puede ir a la transaccin de anlisis para estudiar dicho
fichero.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
Ejemplo:
DO 2 TIMES.
IF SY-UNAME = 'SMITH'.
CALL FUNCTION 'S_ABAP_TRACE_OPEN_FILE'.
SET RUN TIME ANALYZER ON.
ENDIF.
* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
* The modularization unit to be measured is called
* here.
* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
IF SY-UNAME = 'SMITH'.
SET RUN TIME ANALYZER OFF.
ENDIF.
ENDDO.
SET SCREEN
Definicin
Determina cual va ser la dynpro siguiente en procesarse.
Sintaxis:
SET SCREEN <dynpro>.
<dynpro> determina el nmero del dynpro que ser procesado cuando en dynpro actual se haya
procesado completamente.
Para termina el proceso de un dynpro se puede utilizar la sentencia SET SCREEN con el valor 0 o
la sentencia LEAVE SCREEN.
Un proceso tambin termina cuando se han ejecutado todos los mdulos del proceso lgico del
dynpro.
SET TITLEBAR
Definicin
Define un ttulo para la pantalla de salida.
Sintaxis:
SET TITLEBAR <ttulo> [ WITH <var1> <var2> <var3> <var4> ].
Al utilizar esta sentencia sustituimos el ttulo estndar por el ttulo definido en <ttulo>.
El ttulo permanece activo en todas las pantallas de salida (listado bsico y listado secundarios)
mientras no volvamos a utilizar esta sentencia. <ttulo> es un campo de tres posiciones que hace
referencia al ttulo definido en la transaccin Menu painter.
El significado de las clusulas es el siguiente:
WITH -> Se puede aadir al ttulo de la pantalla hasta cuatro variables.
Las variables se definen en el texto del ttulo, en la transaccin Menu painter, con un
ampersand (&) y un nmero, del 1 al 4.
Las variables definidas en el texto del ttulo pero no especificadas en la sentencia SET TITLEBAR
se sustituyen por espacios en blanco.
El texto del ttulo puede tener hasta setenta caracteres.
SET UPDATE TASK LOCAL
Definicin
Le dice al sistema que las actualizaciones se deben realizar localmente.
Sintaxis:
SET UPDATE TASK LOCAL.
SET USER-COMMAND
Definicin
Permite activar un evento desde el programa.
Sintaxis:
SET USER-COMMAND <comando>.
Esta sentencia tiene efecto despus de que el actual listado, bsico o secundario, haya sido
completado.
Si utilizamos sentencias SET USER-COMMAND durante la generacin de un mismo listado, slo
tendr efecto el ltimo listado.
Ejemplo:
WRITE: 'List'... "Create a list
SET CURSOR LINE 7.
SET USER-COMMAND 'PICK'.
El evento AT LINE-SELECTION es procesado para la lnea siete.
SHIFT
Definicin
Se utiliza para desplazar el contenido de un campo alfanumrico.
Disponemos de distintas variantes en funcin del modo de desplazamiento.
Sintaxis:
SHIFT <campo> [ BY <n> PLACES ] [ { LEFT | RIGHT | CIRCULAR } ].
Desplaza el contenido del campo <campo> <n> posiciones.
El significado de las clusulas es el siguiente:
BY -> Si se omite, el desplazamiento es de una posicin.
Si <n> es cero o negativo no se realiza ningn desplazamiento.
Si <n> excede de la longitud del campo <campo>, el desplazamiento se rellena con espacios en
blanco.
<n> puede ser una variable.
LEFT -> el desplazamiento se realiza hacia la izquierda, con relleno de espacios en blanco por la
derecha.
RIGHT -> El desplazamiento se realiza hacia la derecha, con relleno de espacios en blanco por la
izquierda.
CIRCULAR -> El desplazamiento se realiza haca la izquierda.
Los caracteres que desaparecen por la izquierda aparecen por la derecha.
SHIFT <campo> UP TO <string> [ { LEFT | RIGHT | CIRCULAR } ].
Realiza un desplazamiento del contenido de un campo hasta un string dado.
El sistema busca el string <string> en el campo <campo>.
Si el string est contenido en el campo <campo> se realizar el desplazamiento hasta alcanzar el
string.
De no contener <campo> el string <string> no se realizar ningn desplazamiento.
<string> puede ser una variable.
El modo de desplazamiento es el mismo que en la variante anterior.
Si el string se encuentra en el campo <campo>, SY-SUBRC es 0, en caso contrario es 4.
SHIFT <campo> LEFT DELETING LEADING <string>.
SHIFT <campo> RIGHT DELETING LEADING <string>.
Realiza un desplazamiento hasta que el primer o ltimo carcter cumpla cierto criterio.
Esta sentencia desplaza el contenido del campo <campo> hasta que el primer carcter de la
izquierda (primera sentencia) o el ltimo carcter de la derecha (segunda sentencia) satisface cierta
condicin.
El desplazamiento se rellena con espacios en blanco. <string> puede ser una variable.
Ejemplo 1:
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ'.
SHIFT ALPHABET CIRCULAR.
ALPHABET contendra 'BCDEFGHIJA' .
Ejemplo 2:
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ',
FIVE TYPE I VALUE 5.
SHIFT ALPHABET BY FIVE PLACES.
ALPHABET contendra 'FGHIJ' .
Ejemplo 3:
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ',
THREE(3) VALUE 'DEF',
FOUR(4) VALUE 'DEF '.
SHIFT ALPHABET UP TO THREE CIRCULAR.
ALPHABET contendra 'DEFGHIJABC' .
SKIP
Definicin
Genera lneas en blanco en el dispositivo de salida.
Sintaxis:
SKIP { [ <n> ] | TO LINE <n> }.
Con la primera opcin el sistema salta <n> lneas en blanco. Si <n> no se especifica slo se salta
una lnea.
Con la segunda opcin situamos la posicin de salida en la lnea indicada con <n>.
Con esta opcin se puede ir a lneas anteriores como posteriores, adems se actualiza la variable del
sistema SY-LINNO.
Si <n> no est comprendido entre 1 y la longitud de la pgina, el sistema ignora la sentencia.
Tambin se tienen en cuenta la cabecera y el pie de pgina (no hay que olvidar este detalle).
Ejemplo:
REPORT TEST NO STANDARD PAGE HEADING.
DATA: ROW TYPE I VALUE 3.
WRITE 'Line 1'.
SKIP TO LINE 5.
WRITE 'Line 5'.
SKIP TO LINE ROW
WRITE 'Line 3'.
SORT
Definicin
Ordena una tabla interna.
Sintaxis:
SORT <tabla> [ <orden> ][ AS TEXT ]
[ BY <campo1> [ <orden> ][ AS TEXT ] ... <campon> [ <orden>][ AS TEXT ] ].
El significado de las clusulas es el siguiente:
BY -> Si no la utilizamos la tabla interna es ordenada por la clave estndar.
Para definir un criterio de ordenacin distinto a la clave estndar se utiliza la clusula BYCon la clusula BY los campos se ordenarn de acuerdo con los componentes especificados
<campo1> ... <campon>.
Estos componentes puede ser de cualquier tipo (incluido tablas).
El nmero de campos que se pueden ordenar est restringido a 250.
El sistema utiliza las opciones utilizadas antes de BY (<orden> y AS TEXT) como valores por
defecto para los campos especificados en BY.
Se pueden especificar el criterio de ordenacin en tiempo de ejecucin, utilizando ( <nombre> ) en
lugar de <campo>.
La variable <nombre> contiene el nombre del componente de la tabla interna.
Si la variable <nombre> est vaca, el sistema ignorar el criterio de ordenacin, si contiene un
nombre de componente invlido, producir un error en tiempo de ejecucin.
Para cualquier campo, componente de una tabla interna, se puede indicar un offset (posicin) y
longitud.
En <orden> se puede especificar cmo se debe ordenar la tabla, de forma descendente,
DESCENDING, o de formas ascendente, ASCENDING,.
Por defecto el orden es ascendente.
AT ORDER.
WRITE: /, / DATE, ONR, POSITION,
CUSTOMER, 'ordered:'.
ENDAT.
AT PRODUCT.
WRITE: / DATE, ONR, POSITION,
PNR, NAME, UNITS.
ENDAT.
ENDLOOP.
El resultado en pantalla sera:
01041992 MM00034 000 Moneymaker ordered:
01041992 MM00034 001 23456 Nail 300
01041992 MM00034 002 34567 Hammer 4
24121992 GF00011 000 Good friend (1.) ordered:
24121992 GF00011 001 34567 Hammer 5
24121992 GF00012 000 Good friend (2.) ordered:
24121992 GF00012 001 12345 Screw 100
24121992 GF00012 002 23456 Nail 200
SPLIT
Definicin
Divide un campo alfanumrico en varios campos, gracias a algn separador.
Sintaxis:
SPLIT <campo> AT <delimitador> INTO <c1> ... <cn>.
Esta sentencia utiliza el campo indicado en <delimitador> para separar los campos <c1> ... <cn> el
contenido del campo <campo>.
Si no hay especificado los suficientes campos para poder separar todo el contenido del campo
<campo>, sobre el ltimo se rellena el resto del campo <campo>.
Si todos los campos destino son lo suficientemente grandes como para almacenar las partes de
<campo>, SY-SUBRC vale 0. En caso contrario SY-SUBRC vale 4.
Tambin se puede situar las partes del campo que se quiere separar en una tabla interna con el
siguiente formato:
SPLIT <campo> AT <delimitador> INTO TABLE <tabla>.
Por cada parte del campo <campo el sistema aade una nueva lnea en la tabla interna <tabla>.
Ejemplo 1:
DATA: NAMES(30) VALUE 'Charly, John, Peter',
ONE(10),
TWO(10),
DELIMITER(2) VALUE ','.
SPLIT NAMES AT DELIMITER INTO ONE TWO.
ONE valdr "Charly" y TWO tendr el valor "John, Pete".
Ejemplo 2:
Definicin
Permite abandonar cualquier bloque de proceso e ir directo al bloque de proceso del evento ENDOF-SELECTION.
El abandono se realiza de forma incondicional.
Sintaxis:
STOP.
SUBMIT
Definicin
Ejecuta un programa.
Sintaxis:
SUBMIT { <programa> | (<programa>) } [ LINE-SIZE <columnas> ] [ LINE-COUNT <filas> ]
[ TO SAP-POOL
[ DESTINATION <destino> ]
[ COPIES <copias> ]
[ LIST NAME <nombre> ]
[ COVER TEXT <texto> ]
[ LIST AUTHORITY <autorizacin> ]
[ INMEDIATELY <flag> ]
[ KEEP IN SPOOL <flag> ]
[ NEW LIST IDENTIFICATION <flag> ]
[ DATASET EXPIRATION ]
[ LINE-COUNT <lneas> ]
[ LINE-SIZE <columnas> ]
[ LAYOUT <layout> ]
[ SAP COVER PAGE <modo> ]
[ COVER PAGE <flag> ]
[ RECEIVER <receptor> ]
[ DEPARTMENT <departamento> ]
[ ARCHIVE MODE <modo> ]
[ ARCHIVE PARAMETERS <parmetros> ]
[ WITHOUT SPOOL DYNPRO ] ]
[ SPOOL PARAMETERS <parmetros> ]
[ ARCHIVE PARAMETERS <parmetros> ]
[ WITHOUT SPOOL DYNPRO ]
[ VIA SELECTION-SCREEN ]
[ AND RETURN ]
[ EXPORTING LIST TO MEMORY ]
[ USER <usuario> VIA JOB <job> NUMBER <nmero> ]
[ USING SELECTION-SETS OF PROGRAM <programa1> ].
Esta sentencia llama al REPORT <programa>.
El nombre del programa se puede especificar dinmicamente utilizando una variable entre
parntesis.
La sentencia submit, con una determina clusula tambin nos permite aadir pasos a un job creado
con el mdulo de funcin JOB_OPEN.
SUBMIT <report> AND RETURN
USER <usuario>
VIA JOB <nombre_job> NUMBER <id_job>
TO SAP-SPOOL SPOOL PARAMETERS <parmetros_impresin>
ARCHIVE PARAMETERS <parmetro_archivo>
WITHOUT SPOOL DYNPRO.
SUBTRACT
Definicin
Resta el contenido de dos campos.
Sintaxis:
SUBTRACT <n> FROM <m>
Resta el contenido de dos estructuras.
Ejemplo:
DATA NUMBER TYPE P VALUE 3,
RESULT TYPE I VALUE 7.
SUBTRACT NUMBER FROM RESULT.
RESULT valdr 4 y NUMBER valdr 3.
SUBTRACT-CORRESPONDING
Definicin
Substrae el contenido de campos de una estructura.
Sintaxis:
SUBTRACT-CORRESPONDING <n> FROM <m>.
Substrae el contenido de los componentes del registro <n> del registro <m>, para aquellos
componentes que se llamen igual.
Ejemplo:
DATA: BEGIN OF PERSON,
NAME(20) VALUE 'Paul',
MONEY TYPE I VALUE 5000,
END OF PERSON,
BEGIN OF PURCHASES OCCURS 10,
PRODUCT(10),
MONEY TYPE I,
END OF PURCHASES.
PURCHASES-PRODUCT = 'Table'.
PURCHASES-MONEY = 100.
APPEND PURCHASES.
PURCHASES-PRODUCT = 'Chair'.
PURCHASES-MONEY = 70.
APPEND PURCHASES.
LOOP AT PURCHASES.
SUBTRACT-CORRESPONDING PURCHASES FROM PERSON.
ENDLOOP.
El campo PERSON-MONEY valdr 4830
SUM
Definicin
La sentencia SUM slo se puede utilizar en el bucle LOOP..ENDLOOP.
Con ella, el sistema suma todos aquellos campos numricos, componentes de la tabla interna,
dejando el resultado sobre el rea de trabajo de la tabla interna.
Sintaxis:
SUM.
Si la sentencia SUM puede ser utilizada en la sentencia AT..ENDDAT.
En este caso, los campos a sumar sern:
FIRST -> Suman todas las lneas.
LAST -> Suman todas las lneas.
NEW <campo> -> Suman todas las lnea para el valor del campo que activa la sentencia.
END OF <campo> -> Suman todas las lnea para el valor del campo que activa la sentencia.
Si algn componente de la tabla interna es a su vez una tabla interna, la sentencia SUM no puede
ser utilizada.
SUMMARY
Definicin
Se utiliza para resaltar las lneas de salida.
Sintaxis:
SUMMARY.
Despus de esta sentencia, todas las sentencias de escritura tienen alta intensidad.
SUPRESS DIALOG
Definicin
Suspende la presentacin de una pantalla en el procesamiento de un dynpro.
Esta sentencia hace que el sistema no muestre la pantalla.
Sintaxis:
SUPRESS DIALOG.
El flujo de proceso continua en el proceso PAI. Esta sentencia debera ser utilizada en el proceso
PBO.
Lgicamente esta sentencia slo tiene sentido en el proceso PBO del dynpro.
SYNTAX-CHECK
Definicin
Nos permite verificar la sintaxis de un programa.
Sintaxis:
SYNTAX-CHECK FOR <tabla> MESSAGE <f> LINE <g> WORD <h>
[ PROGRAM <f1> ][ INCLUDE <f2> ] [ OFFSET <f3> ] [ TRACE-TABLE <t1> ]
[ DIRECTORY ENTRY <f4> ] [ REPLACING <f5> ] [ FRAME ENTRY <f6> ] [ MESSAGE-ID
<f7> ] [ ID <id> TABLE <tab> ].
El cdigo del programa est contenido en <tabla>.
Si la sentencia detecta algn error durante la comprobacin sintctica, los campos <f>, <g> y <h>
son rellenados con la siguiente informacin:
<f> -> Contiene el texto del mensaje de error. Tipo alfanumrico.
<g> -> Contiene la lnea del programa donde aparece el error. Tipo numrico.
<h> -> Contiene la palabra con el error. Tipo alfanumrico.
La variable SY-SUBRC puede tomar los siguiente valores:
0 -> El programa no tiene errores de sintaxis.
4 -> El programa contiene errores de sintaxis.
8 -> El programa tiene errores que no son de sintaxis.
El significado de las clusula es el siguiente:
PROGRAM -> Especifica el nombre del programa en <f1>.
Si no se utiliza la clusula DIRECTORY ENTRY, el nombre del programa se utiliza para determinar
los atributos, por ejemplo, si se trata de un programa, un include o una base de datos lgica.
El campo <f1> debe tener el formato de la variable del sistema SY-REPID.
INCLUDE <f2> -> Si existe un error y este aparece en un include, <f2> contiene el nombre del
programa include.
El campo <f1> debe tener el formato de la variable del sistema SY-REPID.
OFFSET -> Si existe un error, <f3> contiene la posicin de la palabra incorrecta en la lnea
incorrecta.
<f3> debe ser declarado de tipo entero.
TRACE-TABLE -> La traza de salida se almacena en la tabla <t1>.
Para activar o desactivar la traza durante las comprobaciones sintcticas del programa se utiliza la
sentencia SYNTAX-TRACE.
DIRECTORY ENTRY -> Los atributos del programa requerido para la comprobacin sintctica
del programa se especifican en el campo <f4>, el cual debe tener la estructura de la tabla TRDIR.
REPLACING -> Si el programa a validar contiene un include con el nombre especificado en
<f5>, el contenido de la tabla interna deber ser tomado.
FRAME ENTRY -> Los atributos del programa principal se especifican en el campo <f6>, que
debe tener la estructura de la tabla TRDIR.
MESSAGE-ID -> Si ocurre un error, el campo <f7> contiene la clave del mensaje relevante.
<f7> debe tener la estructura de la tabla TRMSG.
ID <id> TABLE <tabla> -> Devuelve informacin de la comprobacin sintctica.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
SYNTAX-TRACE
Definicin
Activa / desactiva el trazador sintctico.
Sintaxis:
SYNTAX-TRACE { ON [ OPTION { CODING | EXPAND } ] | OFF }.
El significado de las clusulas es el siguiente:
ON -> Se activa el trazador sintctico.
OFF ->Se desactiva el trazador sintctico.
OPTION CODING -> Slo se activa en el programa actual.
OPTION EXPAND -> No tiene ningn efecto.
SAP cre esta sentencia para uso interno.
Se puede utilizar pero hay que tener en cuenta que SAP puede cambiar o eliminar la sintaxis sin
previo aviso.
TABLES
Definicin
Hace que una tabla de la base de datos, una vista o una estructura del diccionario de datos sea
reconocida por un programa.
Sintaxis:
TABLES <objeto-bd>.
<objeto-bd> es el nombre del objeto del diccionario de datos.
Adems el sistema genera un registro con la misma estructura que la definida en el diccionario de
datos que podr ser utilizada en el programa., por ejemplo, para realizar operaciones de
lectura/escritura sobre la base de datos.
La secuencia y los nombre de los componentes del registro (comnmente llamado rea de trabajo)
de la tabla son los mismos que los definidos en el objeto en el diccionario de datos.
Para referenciar un componente de un rea de trabajo de una tabla, vista o estructura del diccionario
de datos se utiliza la siguiente sintaxis:
<objeto-bd>-<componente>
La correspondencia de tipos de datos entre el diccionario de datos y el programa es la siguiente:
Tipo de dato en diccionario de datos
Tipo de dato en programa
ACCP
N(6)
CHAR n
C(n)
CLNT
C(3)
CUKY
C(5)
CURR n, m, s
P((n+2)/2) DECIMALS m [ NO-SIGN ]
DEC n,m, s
DATS
FLTP
INT1
INT2
INT4
LCHR n
LRAW n
LANG
NUMC n
PREC
QUAN n, m, s
RAW n
UNIT n
VARC c
TOP-OF-PAGE
Definicin
Este evento define un bloque de proceso que se activa cuando el sistema detecta que vamos a
comenzar a escribir en la pgina actual.
El nmero de lneas por pgina se define en la sentencia REPORT. Se suele utilizar este evento para
componer cabeceras de pginas.
Sintaxis:
TOP-OF-PAGE.
En los listados secundarios el sistema no muestra la cabecera de pgina estndar, ni tampoco activa
el evento TOP-OF-PAGE.
Para crear cabeceras de pgina en los listados secundarios se utiliza el siguiente evento:
TOP-OF-PAGE DURING LINE-SELECTION.
El sistema activa este evento en todos los listados secundarios.
Si queremos crear diferentes cabeceras de pgina para los diferentes listados secundarios debemos
programar el bloque de proceso del evento de acuerdo, por ejemplo, con las variables del sistema
SY-LSIND o SY-PFKEY en combinacin con las sentencias de control IF o CASE.
Cuando nos desplazamos verticalmente en un listado secundario, la cabecera permanece fija.
Ejemplo:
PROGRAM DOCUEXAM NO STANDARD PAGE HEADING.
START-OF-SELECTION.
WRITE: / 'line 1'.
WRITE: / 'line 2'.
WRITE: / 'line 3'.
TOP-OF-PAGE.
WRITE: / 'Heading'.
ULINE.
La salida en pantalla sera:
Heading
------------------------------line 1
line 2
line 3
TRANSFER
Definicin
Escribe registros sobre un fichero en el servidor de aplicacin.
Sintaxis:
TRANSFER <campo> TO <fichero> [ LENGTH <longitud> ].
Escribe el valor del campo <campo> en el fichero <fichero>.
El modo de transferencia se especifica en la sentencia OPEN DATASET.
Si el fichero no esta abierto para escritura, el sistema intenta abrirlo en modo binario o con las
opciones de la ltima sentencia OPEN DATASET para ese fichero, sin embargo, es recomendable
abrir siempre el fichero con la sentencia OPEN DATASET.
<fichero> puede ser un literal o un campo como en la sentencia OPEN DATASET.
<campo> pude ser de un tipo elemental, o un string que no contenga tablas internas como
componentes.
Las tablas internas no se puede escribir directamente sobre ficheros.
Con la opcin LENGHT se puede especificar la longitud del datos que va a ser transferido.
El sistema transfiere los primeros <longitud> bytes sobre el fichero.
Si el campo <longitud> es ms pequeo que el campo, se trunca.
Si <longitud> es ms grande que el campo, el campo se rellena con espacios en blanco.
TRANSLATE
Definicin
Se utiliza para convertir caracteres de mayscula a minscula o viceversa, o para realizar
sustituciones de caracteres a travs de ciertas reglas.
Sintaxis:
TRANSLATE <campo> TO { UPPER | LOWE } CASE.
Con la opcin UPPER, las letras minsculas de <campo> se convierten en maysculas.
Y con la opcin LOWER las letras maysculas se convierten en minsculas.
Para utilizar reglas de conversin se utiliza la siguiente sintaxis.
TRANSLATE <campo> USING <regla>.
Esta sentencia reemplaza todos los caracteres de <campo> que cumplan la regla de sustitucin
<regla>.
La regla de sustitucin contiene pares de letras, la primera de ellas indica el carcter a sustituir, la
segunda indica el carcter de sustitucin. <regla> puede ser una variable.
Ejemplo:
DATA: LETTERS(10) VALUE 'abcX',
CHANGE(6) VALUE 'aXBY'.
TRANSLATE LETTERS USING CHANGE.
El campo LETTERS contendr 'XbcX' .
TYPE-POOL
Definicin
Introduce la definicin de un type-groups.
Sintaxis:
TYPE-POOL <nombre>.
Un type-groups en el diccionario de datos no es ms que un fragmento de programa, compuesto
de declaracin de tipo o constantes.
La primera sentencia que debe aparecer es TYPE-POOL.
El nombre de todos los tipos o constantes debe comenzar con el nombre del type-groups y un
guin bajo ( _ ).
Ejemplo:
TYPE-POOL ABCDE.
TYPES: ABCDE_PACKED TYPE P,
ABCDE_INT TYPE I.
TYPE-POOLS
Definicin
Para utilizar un type-groups en un programa se utiliza la sentencia TYPE-POOLS.
Sintaxis:
TYPE-POOLS <nombre>.
La variable <nombre> identifica el type-groups a utilizar.
En un programa se pueden utilizar varios type-groups.
Ejemplo:
TYPE-POOLS VERI1.
DATA X TYPE VERI1_TYP1.
TYPES
Definicin
Declaracin de tipos de datos.
Sintaxis:
TYPES <tipo> [ <longitud> ] <tipo> [ <decimales> ].
Los parmetros de estas sentencias son los mismos que los utilizados en la sentencia DATA.
El nico parmetro que no se utiliza es <valor> ya que la sentencia TYPES no tiene memoria
asociada, y por lo tanto no se le puede asignar ningn valor.
TYPES: BEGIN OF <registro>,
...
END OF <registro>.
Declaracin de un tipo de datos con estructura de registro.
TYPES <tabla> <tipo> OCCURS <n>.
Para crear un tipo de dato de tabla interna es necesario especificar la clusula OCCURS en la
sentencia TYPES.
Las lneas de la tabla interna tendrn el tipo de dato especificado en <tipo>.
En <tipo> se puede especificar las clusulas TYPE o LIKE.
Con la clusula LIKE se puede referenciar una estructura de la base de datos.
De esta forma se puede crear tablas internas con la misma estructura de tablas del diccionario de
datos.
<n> especifica el nmero inicial de lneas de la tabla interna.
El sistema reserva memoria para el nmero de lneas especificado en el momento en que
escribamos la primera lnea sobre la tabla interna.
Si aadimos ms lneas a la tabla interna que las especificadas en <n>, el sistema expande el
espacio reservado en memoria automticamente.
Si no hay suficiente espacio en memoria para la tabla interna, la ampliacin se realizar en disco
(rea de paginacin).
Ejemplo:
DATA: BEGIN OF PERSON,
NAME(20),
AGE TYPE I,
END OF PERSON.
TYPES TYPE_PERSONS LIKE PERSON OCCURS 20.
DATA PERSONS TYPE TYPE_PERSONS.
PERSON-NAME = 'Michael'.
PERSON-AGE = 25.
APPEND PERSON TO PERSONS.
PERSON-NAME = 'Gabriela'.
PERSON-AGE = 22.
APPEND PERSON TO PERSONS.
ULINE
Definicin
Para escribir lneas horizontales se puede utilizar la sentencia ULINE.
Sintaxis:
ULINE [ AT ] [ / ] [ <posicin> ] [ (<longitud>) ].
Esta variante nos permite modificar una o varias lneas de la tabla <tabla> en funcin de las
especificaciones de la clusula WHERE.
Dicha clusula tiene las mismas opciones que las vistas para la sentencia SELECT.
Si no especificamos la clusula WHERE, todas las lneas de la tabla se cambian. <tabla> debe estar
declaradas con la sentencia TABLES.
Para identificar las columnas a cambiar se utiliza la clusula SET.
La lista de comandos especificados en la clusula SET debe respetar uno de los siguientes formatos:
- <f> = <g>. -> <f> es un campo de la tabla <tabla>.
<g> es un valor.
- <f> = <f> + <g>. -> <f> es un campo de la tabla <tabla>.
<g> es un valor.
El valor de <f> es incrementado con el valor de <g>.
- <f> = <f> - <g>. -> <f> es un campo de la tabla <tabla>.
<g> es un valor.
El valor de <f> es decrementado con el valor de <g>.
<g> puede ser un literal o una variable.
Para ver la regla de conversin entra campos de la base de datos y campos de un programa, ver la
clusula INTO de la sentencia SELECT.
SY-DBCNT contiene el nmero de lneas cambiadas.
SY-SUBRC es 0 si al menos una lnea es cambiada y 4 si ninguna lnea es cambiada.
En esta variante de sentencia no se puede especificar el nombre de la tabla en tiempo de ejecucin.
UPDATE { <tabla> | (<tabla>) } [ CLIENT SPECIFIED ] [ FROM TABLE
<tabla_interna> ].
Otra forma de actualizar varias lneas de una tabla es con la anterior variante de la sentencia
UPDATE.
Se puede definir la tabla que hay que actualizar estticamente con la opcin <tabla>, o
dinmicamente con la opcin (<tabla>).
Las lneas de la tabla interna sobrescriben las lneas de la tabla internas que tengan la misma clave
primaria.
Las lneas de la tabla interna <tabla_interna> deben tener la misma longitud que el rea de trabajo
de la tabla.
Para asegurarnos de esto, se suele declarar la tabla interna (en el DATA o TYPE) con la misma
estructura que la tabla de diccionario (clusula LIKE).
Si el sistema no puede cambiar una lnea porque la clave primaria no existe en la tabla de la base de
datos, el sistema contina con la siguiente lnea de la tabla interna.
Si todas las lneas se procesan satisfactoriamente, SY-SUBRC vale 0, en caso contrario vale 4. SYDBCNT toma el valor del nmero de lneas actualizadas por la sentencia.
Con esta sentencia sucede lo mismo que con la sentencia INSERT.
Es mucho ms eficiente modificar un conjunto de lneas en una sola operacin (segunda variante de
la sentencia UPDATE) que modificarlas una a una (primera variante de la sentencia UPDATE).
Ejemplo 1:
UPDATE SCUSTOM SET: DISCOUNT = '003',
TELEPHONE = '0621/444444'
WHERE ID = '00017777'.
Ejemplo 2:
TABLES SCUSTOM.
DATA WA LIKE SCUSTOM.
WA-ID = '12400177'.
WA-TELEPHONE = '06201/44889'.
UPDATE SCUSTOM FROM WA.
WAIT
Definicin
Sentencia utilizada para esperar la terminacin de la ejecucin asncrona de un mdulo de funcin.
Sintaxis:
WAIT UNTIL <expresin_lgica> [ UP TO <segundos> SECONDS ].
La sentencia espera a que la expresin lgica <expresin_lgica> sea TRUE.
Esta sentencia slo debe ser utilizada en combinacin con la sentencia
CALL FUNCTION STARTING NEW TASK <tarea>
WHILE .. ENDWHILE
Definicin
Ejecuta un bloque de sentencias ms de una vez, hasta que una condicin se cumpla.
Sintaxis:
WHILE <condicin> [ VARY <f> FROM <f1> NEXT <f2> ].
<bloque_de_sentencias>.
ENDWHILE.
El sistema procesa el bloque de sentencias hasta que se cumpla la condicin o hasta que el sistema
procesa una sentencia EXIT, STOP o REJECT.
Para condicin se puede utilizar cualquier expresin lgica.
El campo del sistema SY-INDEX contiene el nmero de veces que el bucle ha sido ejecutado.
El sistema permite anidar sentencias WHILE, as como combinarlas con otras sentencias de bucle.
La opcin VARY acta de la misma forma en que acta la opcin VARYING en la sentencia DO. Al
igual en la sentencia DO, se puede utilizar ms de una opcin VARY en una sentencia WHILE.
Ejemplo:
DATA: SEARCH_ME TYPE I,
MIN TYPE I VALUE 0,
MAX TYPE I VALUE 1000,
TRIES TYPE I,
NUMBER TYPE I.
SEARCH_ME = 23.
WHILE NUMBER <> SEARCH_ME.
ADD 1 TO TRIES.
NUMBER = ( MIN + MAX ) / 2.
Tipo de dato
C
D
F
I
N
P
T
X
Longitud de salida
Longitud del campo
8
22
11
Longitud del campo
2* Longitud del campo (+1)
6
2 * Longitud del campo
Posicionamiento
Justificado a la izquierda
Justificado a la izquierda
Justificado a la derecha
Justificado a la derecha
Justificado a la izquierda
Justificado a la derecha
Justificado a la izquierda
Justificado a la izquierda
Los campos numricos F, I y P estn justificados a la derecha rellenados con espacios en blanco por
la izquierda.
Si hay suficiente espacio se escriben los separadores de miles.
Estos separados van desapareciendo en funcin del espacio disponible en salida.
Si el campos es del tipo P y tiene posiciones decimales, la longitud de salida se incrementa en 1.
Con los tipos de datos D, el formato interno del campo difiere del formato de salida.
Para campos de tipo D, el sistema lee el formato de salida especificado en el registro maestro de
usuario.
Posibles formatos de salida son DD/MM/YY o MM/DD/YYYY, donde, DD es el da, MM es el mes
y YYYY es el ao.
Se puede dar formato al campo de salida con las opciones /, <offset> y <longitud>.
Con / forzamos un salto de lnea antes de la salida.
<posicin> es un nmero o una variable de hasta tres dgitos de longitud que sirve para indicar la
posicin en el dispositivo de salida.
<longitud> es un nmero o una variable de hasta tres dgitos de longitud que sirve para indicar la
longitud de salida del campo.
Si <posicion> y <longitud> son literales numricos la clusula es AT es opcional.
Si utilizamos la opcin <posicin>, el campo saldr en esa posicin aunque no haya espacio, o haya
sido utiliza esa posicin por otro campo.
Si <longitud> es menor que el campo de salida, si ste es alfanumrico se trunca y si es numrico se
rellena por la izquierda con un asterisco (*).
Se pueden utilizar distintas opciones de formato con <opciones>.
Las opciones son las siguientes:
LEFT-JUSTIFIED -> Salida justificada a la izquierda.
CENTERED -> Salida centrada.
RIGHT-JUSTIFIED -> Salida justificada a la derecha.
UNDER <campo> -> La salida se posiciona bajo el campo <campo>.
NO-GAP -> El espacio en blanco posterior a la salida se omite.
USING EDIT MASK <mscara> -> Se especifica un formato de salida.
USING NO EDIT MASK -> Desactiva el formato que puede tener un campo del diccionario de
datos.
NO-ZERO -> Si un campo tiene ceros, se reemplazan por espacios en blanco.
En campos de tipo C y N, los ceros a la izquierda se reemplaza automticamente.
Las opciones para los campo numricos es la siguiente:
NO-SIGN -> Salida sin signo.
DECIMALS <decimales> -> <decimales> especifica el nmero de dgitos despus del punto.
EXPONENT <exponente> -> En campos de tipo F, <exponente> especifica el exponente.
Tambin se puede especificar el nombre del campo fuente en tiempo de ejecucin, para ello,
encerramos entre parntesis el nombre del objeto de dato que contiene el nombre del objeto de dato
que vamos a utilizar.
Sin embargo, no se puede especificar en tiempo de ejecucin el campo destino. Para ello deberemos
utilizar field-symbols.
Se puede especificar el offset y la longitud, tanto del campo fuente como del campo destino.
En esta sentencia, el offset y la longitud del campo pueden ser variable.
SAP recomienda la asignacin del campos con offset y longitud entre campos no numricos.
Con campos numricos, el resultado puede ser imprevisible.
WRITE { <campo> [ +<o1> ] TO <tabla> [ +<o2> ] [ <l2>) ] INDEX
<ndice>.
El contenido de la seccin del campo <campo> con desplazamiento de <o1> posiciones y longitud
<l1> es sobrescrito en la tabla interna <tabla>, en la lnea con ndice <ndice>, en la seccin con
desplazamiento de <o2> posiciones y longitud <l2>.
Observemos que en esta sentencia no se utiliza en ningn caso el rea de trabajo. Esto es una
variante de la sentencia WRITE .. TO (utilizada para otros casos).
La sentencia WRITE .. TO no reconoce la estructura de lnea de la tabla interna.
SAP recomienda el uso de esta sentencia slo si queremos, por ejemplo, sustituir flag del que
sabemos exactamente su posicin.
Tambin puede ser utilizada para tablas con estructuras de un nico campo alfanumrico; tablas con
esta estructura son importantes, por ejemplo, para la generacin automtica de programas.
Ejemplo 1:
DATA: NAME(5) VALUE 'FIELD',
FIELD(5) VALUE 'Harry',
DEST(18) VALUE 'Robert James Smith',
OFF TYPE I,
LEN TYPE I.
OFF = 7.
LEN = 8.
WRITE (NAME) TO DEST+OFF(LEN).
El campo DEST valdr " Robert Harry ith ".
ANEXO II
FUNCIONES UTILES DE SAP
APPL_LOG_DISPLAY
Definicion:
Con este mdulo de funcin se puede analizar logs de la base de datos.
Sintaxis:
CALL FUNCTION 'APPL_LOG_DISPLAY'
EXPORTING OBJECT = <objeto>
SUBOJECT = <subobjecto>
EXTERNAL_NUMBER = <clase>
OBJECT_ATTRIBUTE = <>
SUBOBJECT_ATTRIBUTE = <>
EXTERNAL_NUMBER_ATTRIBUTE = <>
DATE_FROM = <>
TIME_FROM = <>
DATE_TO = <>
TIME_TO = <>
TITLE_SELECTION_SCREEN = <>
TITLE_LIST_SCREEN = <>
COLUMN_SELECTION = <>
SUPRESS_SELECTION_DIALOG = <>
COLUMN_SELECTION_MSG_JUMP = <flag>
IMPORTING NUMBER_OF_PROTOCOLS = <protocolos>
EXCEPTIONS NO_AUTHORITY = 1
OTHERS = 99.
significado de los parmetros es el siguiente:
OBJECT -> Nombre del objeto.
SUBOBJECT -> Nombre del subobjeto.
COLUMN_SELECTION -> El campo tiene la estructura BALDISP
APPL_LOG_DISPLAY_INTERN
Definicion:
Con este mdulo de funcin se puede analizar logs en memoria local.
Sintaxis:
CALL FUNCTION 'APPL_LOG_DISPLAY_INTERN'
EXPORTING OBJECT = <objeto>
SUBOJECT = <subobjecto>
TITLE_LIST_SCREEN = <ttulo>
COLUMN_SELECTION = <atributos>
COLUMN_SELECTION_MSG_JUMP = <flag>
IMPORTING NUMBER_OF_PROTOCOLS = <contador>
EXCEPTIONS NO_AUTHORITY = 1
SUBOBJECT_NOT_FOUND = 2
OTHERS = 99.
El significado de los parmetros es el siguiente:
OBJECT -> Nombre del objeto.
TITLE_LIST_SCREEN ->
SUBOJECT -> Nombre del subobjeto.
COLUMN_SELECTION -> El campo tiene la estructura BALDISP
COLUMN_SELECTION_MSG_JUMP
APPL_LOG_DELETE
Definicion:
Con este mdulo de funcin borramos los logs en la base de datos de acuerdo con las selecciones
especificadas.
Sintaxis:
CALL FUNCTION 'APPL_LOG_DELETE'
EXPORTING OBJECT = <objeto>
SUBOJECT = <subobjecto>
EXTERNAL_NUMBER = <nmero externo>
DATE_TO = <fecha>
TIME_TO = <hora>
LOG_CLASS = <clase>
IMPORTING NUMBER_OF_DELETED_LOGS = <borrados>
NUMBER_OF_NON_DELETED_LOGS = <no-borrados>
EXCEPTIONS NO_AUTHORITY = 1
OTHERS = 99.
El significado de los parmetros es el siguiente:
OBJECT -> Nombre del objeto.
SUBOBJECT -> Nombre del subobjeto.
EXTERNAL_NUMBER -> Nmero externo de log.
DATE_TO -> Fecha de vencimiento de log. La funcin considera todos los logs cuya fecha de
vencimiento sea menor a la definida en este parmetro.
TIME_TO -> Hora de vencimiento de log. La funcin considera todos los logs cuya hora de
vencimiento sea menor a la definida en este parmetro, considerando tambin la fecha de
DATE_TO.
LOG_CLASS -> Clase de log.
NUMBER_OF_DELETED_LOGS -> Nmero de logs de aplicacin ledos y borrados.
NUMBER_OF_NON_DELETED_LOGS -> Nmero de logs de aplicacin ledos y no borrados.
El significado de la excepcin es el siguiente:
Excepcin NO_AUTHORITY -> Usuario sin autorizacin a borrar logs de aplicacin.
APPL_LOG_DELETE_WITH_LOGNUMBER
Definicion:
Con este mdulo de funcin borramos los logs de aplicacin a partir del nmero de log.
Sintaxis:
CALL FUNCTION 'APPL_LOG_DELETE_WITH_LOGNUMBER'
IMPORTING NUMBER_OF_DELETED_LOGS = <borrados>
NUMBER_OF_NON_DELETED_LOGS = <no-borrados>
TABLES LOGNUMBER = <tabla>
EXCEPTIONS OTHERS = 99.
El significado de los parmetros es el siguiente:
NUMBER_OF_DELETED_LOGS -> Nmero de logs de aplicacin ledos y borrados.
NUMBER_OF_NON_DELETED_LOGS -> Nmero de logs de aplicacin ledos y no borrados.
El significado de la tabla es el siguiente:
LOG_NUMBER -> Tabla con los logs de aplicacin a borrar. Se identifica el nmero de log. Debe
tener la estructura BALNO.
APPL_LOG_INIT
Definicion:
Con este mdulo de funcin comprueba si el objeto o subobjeto especificado existe, y borra todos
los datos asociados existentes en la memoria local.
Sintaxis:
CALL FUNCTION 'APPL_LOG_INIT'
EXPORTING OBJECT = <objeto>
SUBOBJECT = <subobjeto>
EXCEPTIONS OBJECT_NOT_FOUND = 1
SUBOBJECT_NOT_FOUND = 2
OTHERS = 3.
El significado de los parmetros es el siguiente:
OBJECT -> Nombre del objeto.
SUBOBJECT -> Nombre del subobjeto.
El significado de las excepciones es el siguiente:
OBJECT_NOT_FOUND -> Objeto no encontrado
SUBOBJECT_NOT_FOUND -> Subobjeto no encontrado.
APPL_LOG_INIT_MESSAGES
Definicion:
Con este mdulo de funcin inicia los mensajes asociados a un objeto existentes en la memoria
local.
Sintaxis:
CALL FUNCTION 'APPL_LOG_INIT_MESSGES'
EXPORTING OBJECT = <objeto>
SUBOBJECT = <subobjeto>
CONTINUE_PROTOCOL = <protocolo>
EXCEPTIONS OBJECT_NOT_FOUND = 1
SUBOBJECT_NOT_FOUND = 2
OTHERS = 3.
El significado de los parmetros es el siguiente:
OBJECT -> Nombre del objeto.
SUBOBJECT -> Nombre del subobjeto.
CONTINUE_PROTOCOL -> Protocolo.
El significado de las excepciones es el siguiente:
OBJECT_NOT_FOUND -> Objeto no encontrado
SUBOBJECT_NOT_FOUND -> Subobjeto no encontrado.
BDC_INSERT
Definicion:
Se utiliza para aadir transacciones a una sesin de batch-input.
Sintaxis:
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = <transaccin>
TABLES DYNPROTAB = <tabla>
EXCEPTION INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
El significado de los parmetros es el siguiente:
TCODE -> Cdigo de la transaccin que ser ejecutado. El parmetro es obligatorio.
DYNPROTAB -> Tabla con la estructura BDCDATA. Contiene los datos necesarios para completar
una transaccin. El parametro es obligatorio.
El significado de las excepciones es el siguiente:
INTERNAL_ERROR -> Error interno.
NOT_OPEN -> Sesin de batch-input no abierta.
QUEUE_ERROR -> Error en la cola de batch-input.
TCODE_INVALID -> Cdigo de transaccin invlido.
BDC_OPEN_GROUP
Definicion:
Con este mdulo de funcin se crea una nueva sesin de batch-input.
Sintaxis:
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = <mandante>
GROUP = <nombre>
HOLDDATE = <fecha>
KEEP = <guardar>
USER = <usuario>
EXCEPTIONS QUEUE_ERROR = 1
CLIENT_INVALID = 2
GROUP_INVALID = 3.
No se puede reabrir una sesin de batch-input que haya sido cerrada, Si abrimos una sesin de
batch-input con un nombre que ya exista se crea una nueva sesin con el mismo nombre que el
existente. Un programa de batch-input slo puede tener una sesin de batch-input abierta a la vez.
El significado de los parmetros es el siguiente:
CLIENT -> El campo <mandante> determina el mandante en el cual la sesin ser procesada. Si no
se especifica el parmetro, el mandante ser en el que estemos ejecutando el programa que genera la
sesin de batch-input.
GROUP -> En <nombre> se especifica el nombre de la sesin a crear. Puede ser hasta de 12
caracteres. El parmetro es obligatorio.
HOLDDATE -> fecha de bloqueo. <fecha> determina hasta que fecha la sesin queda bloqueada y
no puede ser procesada. Slo el administrador del sistema (con autorizacin LOCK) puede
desbloquear y ejecutar la sesin antes de la fecha indicada. El parmetro es opcional.
KEEP -> Retener sesin. Si el campo <guardar> tiene el valor "X" la sesin sesin ser retenida
despus de ser procesada satisfactoriamente. La sesin quedar en el sistema hasta que el
administrador la borre. Si la sesin no se procesara correctamente se guarda en el sistema aunque no
se haya marcado este campo. El parmetro es opcional, si no se especifica, la sesin se borra si
termina correctamente (slo se guarda el log de la sesin).
USER -> Usuario de la sesin. En <usuario> identificamos el usuario para que el sistema
compruebe las autorizaciones de proceso en fondo (background). El usuario deber estar autorizado
a todas las transacciones de la sesin, en caso contrario, la transaccin terminar con un mensaje de
falta de autorizacin. Los usuarios pueden ser de dilogo o de fondo. Los usuarios de dilogo suelen
ser usuario que interaccionan con el sistema. Los usuarios de fondo se crean, normalmente, para
ejecutar sesiones de batchinput (lgicamente en fondo).
Las excepciones que se pueden producir son las siguientes:
QUEUE_ERROR -> Error en la "cola" de batch-input.
CLIENT_INVALID -> Mandante invlido.
GROUP_INVALID -> Nombre de la sesin invlida.
BP_CALCULATE_NEXT_JOB_STARTS
Definicion:
Este mdulo de funcin se utiliza para calcular la fecha y hora en la cual un job planificado podra
ser ejecutado.
Para ello se puede especificar un intervalo de tiempo para el anlisis. La identificacin del job se
debe tomar del mdoulo de funcin JOB_OPEN. Las fechas y horas de arranque sern devueltas en
una tabla interna de formato TBTCJOB.
Sintaxis:
CALL FUNCTION 'BP_CALCULATE_NEXT_JOB_STARTS'
EXTERNAL_PROGRAM_NAME = <programa>
DIALOG = <modo>
TABLES JOBLIST = <tabla>
EXCEPTIONS NO_JOBS_FOUND = 1
PROGRAM_SPECIFICATION_MISSING = 2
INVALID_DIALOG_TYPE = 3
JOB_FIND_CANCELED = 4
OTHERS = 99.
El significado de los parmetros es el siguiente:
ABAP_PROGRAM_NAME -> Programa ABAP/4 (tipo como SY-REPID).
ABAP_VARIANT_NAME ->Variante del programa (tipo como RALDB-VARIANT).
EXTERNAL_PROGRAM_NAME -> Programa externo.
DIALOG -> Modo de dilogo: "Y" -> S, "N" -> No.
JOBLIST -> Tabla con los jobs seleccionados (tabla TBTCJOB).
Las excepciones que se pueden producir son las siguientes:
NO_JOBS_FOUND -> Para la seleccin realizada no existen jobs.
PROGRAM_SPECIFICATION_MISSING -> Sin especificacin de programa.
INVALID_DIALOG_TYPE -> Modo de dilogo invlido.
INVALID_DIALOG_TYPE -> Modo de dilogo invlido.
JOB_FIND_CANCELED -> Bsqueda cancelada.
BP_JOB_DELETE
Definicin:
Con esta funcin podremos borrar jobs.
Sintaxis:
CALL FUNCTION 'BP_JOB_DELETE'
EXPORTING FORCEDMODE = <modo>
JOBNAME = <job>
JOBCOUNT = <id_job>
EXCEPTIONS CANT_DELETE_EVENTE_ENTRY = 1
CANT_DERELEASE_SUCCESOR = 2
CANT_DELETE_JOB = 3
CANT_DELETE_JOBLOG = 4
CANT_DELETE_STEPS = 5
CANT_DELETE_TIME_ENTRY = 6
CANT_ENQ_PREDECESSOR = 7
CANT_ENQ_SUCCESOR = 8
CANT_ENQ_TBTCO_ENTRY = 9
CANT_UPDATE_PREDECESSOR = 10
CANT_UPDATE_SUCESSOR = 11
COMMIT_FAILED = 12
JOBCOUNT_MISSING = 13
JOBNAME_MISSING = 14
JOB_DOES_NOT_EXIST = 15
JOB_IS_ALREADY_RUNNING = 16
NO_DELETE_AUTHORITY = 17
OTHERS = 99.
El significado de los parmetros es el siguiente:
FORCEDMODE -> Forzar el borrado aunque ocurran ciertos errores.
JOBNAME ->Nombre del job que se quiere borrar.
JOBCOUNT -> Id. del job que se quiere borrar.
Las excepciones que se pueden producir son las siguientes:
CANT_DELETE_EVENT_ENTRY -> La planificacin del evneto no puede ser borrada.
CANT_DELETE_JOB -> El job no puede ser borrado.
CANT_DELETE_JOBLOG -> El log del job no puede ser borrado.
CANT_DELETE_STEPS -> Los pasos del job no pueden ser borrados.
CANT_DELETE_TIME_ENTRY -> La planificacin de fechas no puede ser borrada.
CANT_DERELEASE_SUCCESOR -> El job previo no puede ser modificado.
CANT_ENQ_PREDECESSOR -> El job predecesor no puede ser bloqueado.
CANT_ENQ_SUCCESSOR -> El job previo no puede ser bloqueado.
CANT_ENQ_TBTCO_ENTRY -> El job no puede ser bloqueado.
CANT_UPDATE_PREDECESSOR -> El job predecesor no puede ser modificado.
CANT_UPDATE_SUCCESSOR -> El job previo no puede ser modificado.
COMMIT_FAILED -> Error en el commit work.
JOBCOUNT_MISSING -> El id. del job no fue especificado.
JOBNAME_MISSING -> El nombre del job no fue especificado.
JOB_DOES_NOT_EXIST -> El job no existe.
JOB_IS_ALREADY_RUNNING -> El job se esta ejecutando.
NO_DELETE_AUTHORITY -> El usuario no tiene autorizacin para borrar ese job.
BP_JOB_COPY
Definicin:
Se utiliza para copiar procesos de fondo. La copia incluye los pasos del job y atributos asociados.
Sintaxis:
CALL FUNCTION 'BP_JOB_COPY'
EXPORTING DIALOG = <modo>
SOURCE_JOBCOUNT = <id_job_fuente>
SOURCE_JOBNAME = <job_fuente>
TARGET_JOBNAME = <id_job_destino>
IMPORTING NEW_JOBHEAD = <id_job_destino>
EXCEPTIONS CANT_CREATE_NEW_JOB = 1
CANT_ENQ_JOB = 2
CANT_READ_SOURCEDATA = 3
INVALID_OPCODE = 4
JOBNAME_MISSING = 5
JOB_COPY_CANCELED = 6
NO_COPY_PRIVILEGE_GIVEN = 7
NO_PLAN_PRIVILEGE_GIVEN = 8
OTHERS = 99.
EXCEPTIONS UNKNOWN_SELECTION_ERROR = 1
OTHERS = 99.
Las excepciones que se pueden producir son las siguientes:
UNKNOWN_SELECTION_ERROR -> Error desconocido.
BP_JOB_SELECT
Definicin:
Permite seleccionar jobs.
Sintaxis:
CALL FUNCTION 'BP_JOB_SELECT'
EXPORTING JOBSELECT_DIALOG = <id_job>
JOBSEL_PARAM_IN = <parmetros>
IMPORTING JOBSEL_PARAM_OUT = <parmetros>
TABLES JOBSELECT_JOBLIST = <tabla>
EXCEPTIONS INVALID_DIALOG_TYPE = 1
JOBNAME_MISSING = 2
NO_JOBS_FOUND = 3
SELECTION_CANCELED = 4
USERNAME_MISSING = 5
OTHERS = 99.
El significado de los parmetros es el siguiente:
JOBSELECT_DIALOG -> Modo de dilogo "Y -> con dilogo", "N-> sin dilogo". Formato
BTCH0000-CHAR1.
JOBSEL_PARAM_IN -> Parmetros de seleccin de entrada. Formato BTCSELECT.
JOBSEL_PARAM_OUT -> Parmetros de seleccin de salida. Formato BTCSELECT.
JOBSELECT_JOBLIST -> Tabla con los jobs seleccionados. Formato TBTCJOB.
Las excepciones que se pueden producir son las siguientes:
INVALID_DIALOG_TYPE -> Modo de dilogo invlido.
JOBNAME_MISSING -> Nombre del job no especificado.
NO_JOBS_FOUND -> Para la seleccin realizada no existen jobs.
SELECTION_CANCELED -> Parmetros de seleccin invlidos.
USERNAME_MISSING -> No se ha especificado el usuario.
BP_JOBLIST_PROCESSOR
Definicion:
Se utiliza para presentar al usuario una lista de jobs para su mantenimiento.
Sintaxis:
CALL FUNCTION 'BP_JOBLIST_PROCESSOR'
EXPORTING JOBLIST_OPCODE = <modo_operacin>
JOBLIST_REFR_PARAM = <refresco>
IMPORTING JOBLIST_SEL_JOB = <seleccin>
Por cada proceso de background que se ejecuta, el sistema genera un log que contiene lo siguiente:
Mensajes del sistema background, mensajes de error de los programas del job. los programas
externos no pueden generar mensajes en el log.
BP_JOBLOG_SHOW
Definicion:
Sirve para mostrar una ventana al usuario con el job seleccionado.
Sintaxis:
CALL FUNCTION 'BP_JOBLOG_SHOW'
EXPORTING CLIENT = <mandante>
JOBCOUNT = <id_job>
JOBNAME = <nombre_job>
EXCEPTIONS JOBLOG_DOES_NOT_EXIST = 1
JOBLOG_IS_EMPTY = 2
NO_JOBLOG_THERE_YET = 3
NO_SHOW_PRIVILEGE_GIVEN = 4
OTHERS = 99.
El significado de los parmetros es el siguiente:
CLIENT -> Mandante
JOBCOUNT -> Id. del job.
JOBNAME -> Nombre del job.
Las excepciones que se pueden producir son las siguientes:
JOBLOG_DOS_NOT_EXIST -> El log ya ha sido borrado.
JOBLOG_IS_EMPTY -> El job todava no se ha ejecutado.
NO_JOBLOG_THERE_YET -> El job todava no se ha ejecutado.
NO_SHOW_PRIVILIGE_GIVEN -> El usuario no tiene autorizacin para ver el log del job.
BP_JOBVARIANT_OVERVIEW
Definicion:
Ofrece una interfaz simplificada para la gestin de jobs.
Sintaxis:
CALL FUNCTION 'BP_JOBVARIANT_OVERVIEW'
EXPORTING TITLE_NAME = <ttulo>
JOB_NAME = <nombre>
PROG_NAME = <cdigo>
EXCEPTIONS NO_SUCH_REPORT = 1.
El significado de los parmetros es el siguiente:
TITLE_NAME -> Ttulo que aparece en la gestin de jobs
JOBNAME -> Nombre del proceso background a listar
PROG_NAME -> Nombre del programa a listar.
A continuacin el mdulo de funcin muestra una pantalla donde el usuario puede seleccionar el
modo de ejecucin. Si arranca el job inmediatamente o si arranca a una fecha y hora determinada.
Adems el usuarios puede decidir si el job se debe arrancar peridicamente.
A continuacin el job queda planificado.
BP_START_DATE_EDITOR
Definicion:
Se utiliza para que el usuario pueda espeficar cundo y cmo un job ser arrancado. El mdulo de
funcin ofrece las mismas posibilidades de planificacin que las de la transaccin estndar:
ejecucin inmediate, ventana de arranque, especificacin de job predecesor, evento, etc..
Sintaxis:
CALL FUNCTION 'BP_START_DATE_EDITOR'
EXPORTING STDT_DIALOG = <modo dilogo>
STDT_OPCODE = <modo edicin>
STDT_INPUT = <especificacin>
STDT_TITLE = <ttulo venta>
EXCEPTIONS NO_SUCH_REPORT = 1.
Las excepciones que se pueden producir son las siguientes:
NO_SUCH_REPORT -> El nombre de programa especificado no existe.
Este mdulo de funcin permitir planificar un job con una de las siguientes opciones:
Arranque inmediato.
Arranque a una hora y feha determinada y hasta una hora y fecha determinada.
Arranque cuando se produzca un evento.
Arranque cuando se produzca un evento.
Arranque cuando se active un nuevo modo de operacin.
Arranque despus de que termine otro job (job predecesor).
Arranque en un da de un mes.
Adems se puede especificar qu acciones se deben tomar si la fecha de arranque
DOWNLOAD
Definicion:
Para escribir datos a partir de una tabla interna sobre un fichero secuencial en el servidor de
presentacin con dilogo con el usuario, se utiliza el mdulo de funcin DOWNLOAD. Veamos en
la siguiente tabla los parmetros del mdulo. El dilogo con el usuario se realiza a travs de una
caja de dilogo donde el usuario puede introducir, por ejemplo, el nombre y el tipo de fichero. Los
campos que aparecen en la caja de dilogo pueden aparecer con valores por defecto.
Sintaxis:
CALL FUNCTION 'DOWNLOAD'
EXPORTING BIN_FILESIZE = <tamao ASCII>
CODEPAGE = <tipo fichero DOS>
FILENAME = <nombre fichero>
FILETYPE = <tipo fichero>
ITEM = <ttulo cabecera>
Definicion:
Se utiliza para modificar el valor de un campo(s) de un modul-pool. Esta funcin solo se puede
utilizar en el PBO o PAI de una dynpro. Se suele utilizar en exits de campo para leer ciertos campos
y despus tratarlos. Con esta funcin se puede modificar el contenido de cualquier campo de una
dynpro, inclusive, steps-loops.
Sintaxis:
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING DYNAME = <nombre_dynpro>
DYNUMB = <numero_dynpro>
TRANSLATE_TO_UPPER = <mayusculas_minusculas>
TABLES DYNPFIELDS = <campos>
EXCEPTION INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMBER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8
OTHERS = 9.
El significado de los parmetros es el siguiente:
DYNAME -> Nombre de la dynpro.
DYNUMB -> Nmero de dynpro.
TRANSLATE_TO_UPPER -> Convertir el nombre de los campos en maysculas.
DYNPFIELDS -> Tabla donde se le pasan el nombre del campo o los campos con los el nuevo
valor . Si el campo pertenece a un steps-loop se le pasa el nmero del campo en el steps-loop que
queremos leer.
El significado de las excepciones es el siguiente:
INVALID_ABAPWORKAREA -> Error al leer en la rea de ABAP.
INVALID_DYNPROFIELD -> Campo pasado no existe en la dynpro introducida.
INVALID_DYNPRONAME -> El nombre de la dynpro no existe.
INVALID_DYNPRONUMBER -> El nmero de la dynpro no existe.
INVALID_PARAMETER -> Error en los parmetros.
UNDEFIND_ERROR -> Error no definido.
DISPLAY_LIST
Definicion:
Visualiza el listado recuperado de la memoria a travs de la funcin list_from_memory. El listado se
visualiza con el formato del listado original o el guardado en memoria. El listado se visualiza en una
ventana de dilogo.
Sintaxis:
CALL FUNCTION 'WRITE_LIST'
TABLES LISTOBJECT = <listado>
EXCEPTION EMPTY_LIST = 1
OTHERS = 2.
El significado de los parmetros es el siguiente:
LISTOBJECT -> Tabla interna con el listado a visualizar.
El significado de las excepciones es el siguiente:
EMPTY_LIST -> Tabla del listado esta vaca.
GET_PRINT_PARAMETERS
Definicion:
Indica los parmetros de impresin de un job.
Sintaxis:
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING MODE = <modo>
REPORT = <report>
NO_DIALOG = <flag_dilogo>
IMPORTING OUT_PARAMETERS = <parmetros_impresin>
OUT_ARCHIVE_PARAMETERS = <parmetros_archivo>
VALID = <vlido>
EXCEPTION OTHERS = 99.
El significado de los parmetros es el siguiente:
MODE -> Modo de ejecucin.
REPORT -> Nombre del report. El mdulo de funcin utilizar las clasulas LINE-COUNT y
LINE-SIZE del report especificado para presentar al usuario un formato de impresin por defecto.
NO_DIALOG ->Modo de ejecucin: interactivo o no interactivo.
OUT_PARAMETERS -> Parmetros de impresin
OUT_ARCHIVE_PARAMETERS -> Parmetros de archivo ptico.
VALID -> Flag de error (si es SPACE existe error).
Si un programa ABAP/4 que ser ejecutado en un proceso de fondo generar un listado, esta salida
se deposita en el spool del sistema. Con el mdulo GET_PRINT_PARAMETERS se puede
especificar cmo se debe depositar la salida en el spool. Con este mdulo de funcin se puede
especificar los parmetros de impresin y de archivo ptico en dos modos: interactivo o no
interactivo. El modo interactivo presenta una ventana al usuario para que especifique los
parmetros. El modo no interactivo toma los datos del perfil de usuario. Siempre debemos utilizar
este mdulo de funcin en una creacin de un job productivo, a no ser que el job no genere ninguna
salida. Un job no productivo no es necesario que utilice este mdulo de funcin. Los parmetros por
defecto de paginacin son 80 caracteres de ancho y 59 lneas por pgina. Puede que este formato no
corresponda con el formato del report y la salida, por lo tanto, ser incorrecta.
No se pueden modificar directamente las estructuras utilizadas por el mdulo de funcin
GET_PRINT_PARAMETERS. Es obligatorio utilizar el mdulo de funcin para actualizar los
parmetros de impresin que se van a utilizar en un job.
JOB_CLOSE
Definicion:
Se utiliza para pasar el job al sistema de procesos de fondo para ser ejecutado.
Sintaxis:
CALL FUNCTION 'JOB_CLOSE'
EXPORTING JOBNAME = <nombre>
JOBCOUNT = <id_job>
STRTIMMED = <inmediato>
SDLSTRTDT = <fecha>
SDLSTRTTM = <hora>
LASTSTRDT = <hasta_fecha>
LASTSTRTTM = <hasta_hora>
PRDDAYS = <rep_da>
PRDHOURS = <rep_hora>
PRDMIN = <rep_min>
PRDMONTHS = <rep_mes>
PRDWEEKS = <rep_semana>
TARGETSYSTEM = <destino>
AT_OPMODE = <modo>
AT_OPMODE_PERIODIC = <flag_periodo>
PRED_JOBNAME = <pred_nombre>
PRED_JOBCOUNT = <pred_id>
PREDJOB_CHECKSTAT = <pred_check>
EVENT_ID = <id_evento>
EVENT_PARAM = <par_evento>
EVENT_PERIODIC = <per_evento>
CALENDAR_ID = <id_calendario>
STARTDATE_RESTRICTION = <rest_fecha>
START_ON_WORKDAY_NOT_BEFORE = <no_antes_fecha>
START_ON_WORKDAY_NR = <nr_da>
WORKDAY_COUNT_DIRECTION = <direccin>
IMPORTING JOB_WAS_RELEASED = <liberado>
EXCEPTION INVALID_STARTDATE = 1
JOBNAME_MISSING = 2
JOB_CLOSE_FAILED = 3
JOB_NOSTEPS = 4
JOB_NOTEX = 5
LOCK_FAILED = 6
OTHERS = 99.
El significado de los parmetros es el siguiente:
JOBNAME -> Nombre del job.
JOBCOUNT -> Id del job.
STRTIMMED ->Arranque inmediato.
SDLSTRDT -> Fecha de arranque.
SDLSTRTTM -> Hora de arranque.
LASTSTRDT -> Hasta la fecha de arranque.
LASTSTRTTM -> hasta la hora de arranque.
PRDDAYS -> Da (proceso repetitivo).
PRDHOURS -> Hora (proceso repetitivo).
SDLSTRTDT = <fecha>
SDLSTRTTM = <hora>
IMPORTING JOBCOUNT = <numero_job>
EXCEPTION CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.
El significado de los parmetros es el siguiente:
DELANFREP -> Activando el campo (con X) el job se borrar despus de una ejecucin
satisfactoria.
JOBGROUP -> Grupo que se le asigna al job.
JOBNAME -> Nombre del job.
SDLSTRDT -> Fecha de arranque.
SDLSTRTTM -> Hora de arranque.
JOBCOUNT -> Nmero identificativo del job.
El significado de las excepciones es el siguiente:
CANT_CREATE_JOB -> El job no puede ser creado..
INVALID_JOB_DATA -> Datos invlidos en el job.
JOBNAM_MISSING -> Nombre del job no especificado..
La funcin devuelve un nmero de identificacibn nico que, junto con el nombre del job, es
requerido para identificar el proceso. Una vez que el proceso se abre, se puede aadir pasos al job
utilizando la funcin JOB_SUBMIT (o la sentencia SUBMIT). Para submitir el proceso de fondo se
utiliza la funcin JOB_CLOSE. Los job tienen una prioridad que cuando se crean se le asigna por
defecto la C, pero se puede cambiar a travs de la transaccin SM36 o SM37.
JOB_SUBMIT
Definicion:
Se utiliza para aadir pasos a un job que se haya abierto previamente con la funcin JOB_OPEN.
Sintaxis:
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING AUTHCKNAM = <usuario>
JOBCOUNT = <id_job>
JOBNAME = <nombre_job>
REPORT = <report>
VARIANT = <variante>
PRIPARAMS = <parmetros_impresin>
ARCPARAMS = <parmetros_archivos>
EXTPGM_NAME = <programa>
EXTPGM_PARAM = <parmetros>
EXTPGM_SYSTEM = <sistema>
EXTPGM_WAIT_FOR_TERMINATION = <flag1>
EXTPGM_STDOUT_IN_JOBLOG = <flag2>
EXTPGM_SET_TRACE_ON = <flag3>
EXTPGM_STDERRR_IN_JOB = <flag4>
EXCEPTION BAD_PRIPARAMS = 1
INVALID_JOBDATA = 2
JOBNAME_MISSING = 3
JOB_NOTEX = 4
JOB_SUBMIT_FAILED = 5
LOCK_FAILED = 6
PROGRAM_MISSING = 7
PROG_ABAP_AND_EXTPG_SET = 8
BAD_XPGFLAGS = 9
OTHERS = 99.
El significado de los parmetros es el siguiente:
AUTHCKNAM -> Usuario para comprobaciones de autorizacin.
JOBCOUNT -> Id del job.
JOBNAME ->Nombre del job.
REPORT -> Nombre del report
VARIANT -> Nombre de la variante del report.
PRIPARAMS -> Parmetros de impresin.
ARCPARAMS -> Parmetros de archivo.
EXTPGM_NAME -> Nombre del programa externo.
EXTPGM_PARAM-> Parmetros del programa externo.
EXTPGM_SYSTEM-> Sistema de ejecucin.
EXTPGM_WAIT_FOR_TERMINATION -> Flag para programas externos.
EXTPGM_STDOUT_IN_JOBLOG -> Flag para programas externos.
EXTPGM_SET_TRACE_ON -> Flag para programas externos.
EXTPGM_STDERR_IN_JOBLOG-> Flag para programas externos.
El significado de las excepciones es el siguiente:
BAD_PRIPARAMS -> Parmetros de impresin errneos.
INVALID_JOBDATA -> Datos del job invlidos
JOBNAME_MISSING -> Nombre del job sin especificar.
JOB_NOTEX -> Job no existente.
JOB_SUBMIT_FAILED -> Error en llamada submit.
LOCK_FAILED -> Error de bloqueo.
PROGRAM_MISSING -> Programa especificado inexistente.
PROG_ABAP_AND_EXTPF_SET -> Error en el programa especificicado.
BAD_XPGFLAGS -> Error de uso de algn flag.
Un paso de job es una unidad independiente, donde se ejecuta un programa externo al sistema SAP.
Cada paso puede tener sus propias autorizaciones de usuario y sus propias especificaciones de
impresin y archivo. Una vez los pasos esten includos en el job, se debe utilizar la funcin
JOB_CLOSE para lanzar el job.
LIST_FROM_MEMORY
Definicion:
Recupera un listado de la memoria de SAP. El listado es enviado a travs de submit... exporting list
to memory.
Sintaxis:
CALL FUNCTION 'LIST_FROM_MEMORY'
Definicion:
Muestra una venta de dilogo para que el usuario elija una de las opciones posibles, o cancelar la
accin.
Sintaxis:
CALL FUNCTION 'POPUP_TO_DECIDE'
EXPORTING DEFAULTOPTION = <opcin>
TEXTLINE1 = <texto1>
TEXTLINE2 = <texto2>
TEXTLINE3 = <texto3>
TEXT_OPTION1 = <texto_opcin_1>
TEXT_OPTION2 = <texto_opcin_2>
TITEL = <ttulo>
START_COLUMN = <columna>
START_ROW = <fila>
CANCEL_DISPLAY = <cancelar>
IMPORTING ANSWER = <respuesta>
EXCEPTION OTHERS = 99.
El significado de los parmetros es el siguiente:
DEFAULT_OPTION -> Botn seleccionado por defecto. "1 - Primera opcin" y "2 - segunda
opcin".
TEXTLINE1 -> Primera lnea de texto de la ventana de dilogo.
TEXTLINE2 -> Segunda lnea de texto de la ventana de dilogo.
TEXTLINE3 -> Tercera lnea de texto de la ventana de dilogo.
TEXT_OPTION1 -> Texto de la opcin 1.
TEXT_OPTION2 -> Texto de la opcin 2.
TITEL -> Ttulo de la ventana.
START_COLUMN -> Columna de la esquina superior izquierda de la ventana.
START_ROW -> Fila de la esquina superior izquierda de la ventana.
CANCEL_DISPLAY -> Eliminar el botn de cancelar. "X" -> No y " " -> S.
ANSWER -> Respuesta del usuario -> "1 - Primera opcin", "2 - Segunda opcin" y "A Cancelar".
POPUP_TO_DECIDE_LIST
Definicion:
Se muestra una ventana de dilogo para que el usuario elija una de las posibles opciones que
presenta.
Sintaxis:
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING CURSORLINE = <lnea_marcada>
MARK_FLAG = <flag>
MARK_MAX = <lmite_lneas>
START_COL = <columna>
START_ROW = <fila>
TEXTLINE1 = <texto1>
TEXTLINE2 = <texto2>
TEXTLINE3 = <texto3>
TITEL = <ttulo>
IMPORTING ANSWER = <respuesta>
TABLE T_SPOPLI = <opciones>
EXCEPTION OTHERS = 99.
El significado de los parmetros es el siguiente:
CURSORLINE -> Lnea marcada por defecto.
MARK_FLAG -> " " -> Las opciones son radiobutton. "X" -> Las opciones son checkbox.
MARK__MAX -> Limita el nmero de opciones.
START_COL -> Columna de la esquina superior izquierda de la ventana.
START_ROW -> Fila de la esquina superior izquierda de la ventana.
TEXTLINE1 -> Primera lnea de texto de la ventana de dilogo.
TEXTLINE2 -> Segunda lnea de texto de la ventana de dilogo.
TEXTLINE3 -> Tercera lnea de texto de la ventana de dilogo.
TITEL -> Ttulo de la ventana.
ANSWER -> Respuesta del usuario -> "1 - Primera opcin", "2 - Para la segunda", etc...
T_SPOPLI -> Tabla con los textos de cada opcin.
POPUP_TO_DECIDE_WITH_MESSAGE
Definicion:
Presenta una ventana de dilogo para que el usuario escojaa una de las dos opciones posibles, o
cancele la accin.
Sintaxis:
CALL FUNCTION 'POPUP_TO_DECIDE_WITH_MESSAGE'
EXPORTING DEFAULTOPTION = <opcin>
DIAGNOSETEXT1 = <texto_descriptivo_1>
DIAGNOSETEXT2 = <texto_descriptivo_2>
DIAGNOSETEXT3 = <texto_descriptivo_3>
TEXTLINE1 = <texto1>
TEXTLINE2 = <texto2>
TEXT_OPTION1 = <texto_opcin_1>
TEXT_OPTION2 = <texto_opcin_2>
TITEL = <ttulo>
START_COLUMN = <columna>
START_ROW = <fila>
CANCEL_DISPLAY = <cancelar>
IMPORTING ANSWER = <respuesta>
EXCEPTION OTHERS = 99.
El significado de los parmetros es el siguiente:
DEFAULT_OPTION -> Botn seleccionado por defecto. "Y - S", "N - No" y "A - Cancelar".
DIAGNOSETEXT1 -> Texto descriptivo de la accin 1.
DIAGNOSETEXT2 -> Texto descriptivo de la accin 2.
DIAGNOSETEXT3 -> Texto descriptivo de la accin 3.
TEXTLINE1 -> Primera lnea de texto de la ventana de dilogo.
/n
/i
/o
/nend
BASIS/ABAP
SEARCH_SAP_MENU
DI02
OY19
S001
SA38
SCU0
SE09
SE11
SE12
SE13
SE14
SE15
SE16
SE16N
SE17
SE24
SE30
SE32
SE35
SE36
SE37
SE38
SE39
SE41
SE43
SE48
SE49
SE51
Show the menu path to use to execute a given tcode. You can search
by transaction code or menu text.
ABAP/4 Repository Information System: Tables.
Compare Tables
ABAP Development Workbench
Execute a program.
Compare Tables
Workbench Organizer
ABAP/4 Dictionary Maintenance
Dictionary: Initial Screen - enter object name.
Access tables in ABAP/4 Dictionary.
Utilities for Dictionary Tables
ABAP/4 Repository Information System
Data Browser: Initial Screen.
Table Browser (the N stands for New, it replaces SE16).
General Table Display
Class Builder
ABAP/4 Runtime Analysis
ABAP/4 Text Element Maintenance
ABAP/4 Dialog Modules
ABAP/4: Logical Databases
ABAP/4 Function Modules
ABAP Editor
Splitscreen Editor: Program Compare
Menu Painter
Maintain Area Menu
Show program call hierarchy. Very useful to see the overall structure
of a program.
Table manipulation. Show what tables are behind a transaction code.
Screen Painter: Initial Screen.
SE54
SE61
SE71
SE72
SE73
SE74
SE75
SE76
SE77
SE80
SE81
SE82
SE83
SE84
SE85
SE86
SE87
SE88
SE91
SE92
SE93
SEU
SHD0
SM21
SM30
SM31
SM32
SM35
SM37
SM50
SM62
SMEN
SQ00
SQ01
SQ02
SQ03
SQ07
ST05
ST22
WEDI
WE02
OLE
REKH0004
SAP demo program that shows how to do 2D, 3D, and 4D graphics.
RGUGBR00
Substitution/Validation utility
RKCTSEAR
Search source code for up to two strings.
RPR_ABAP_SOURCE_SCAN Search ABAP code for a string. Has many more options for
selecting the ABAPs to search than RSRSCAN1 or RKCTSEAR.
RSABAPIV
Mass print/display of ABAP/4 help text
RSBDCBTC
Submit a BDC job with an internal batch number and wait for the end of the
batch input session.
RSBDCDRU
Prints the contents of a Batch Input session. No options for error transactions
only.
RSBDCSUB
Release batch input sessions automatically
RSBTCDEL
Clean the old background job records
RSDBCREO
Clean batch input session log
RSORAREL
Get the Oracle Release
RSPARAM
Display all instance parameters
RSPO0041
Removing old spooling objects
RSRSCAN1
Search source code for a given string. Will also search includes.
RSSNAPDL
Clean the old ABAP error dumps
RSTXFCON
Converts SAPScript page formats
RSTXSCRP
Save a SAPScript layout set to disk, and load it back into SAP.
RSTXSCRP
Upload and download SAPScript layout sets
RSTXTPDF4
Pass the spool number of a report's output to this program to have the output
converted to PDF format.
RSWBO052
Change development class of a sapscript
RSWBO060
Put objects into a request and transport
TIPO
CHAR
RAW
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
DEC
DEC
DATS
CUKY
CUKY
INT4
INT4
CHAR
CHAR
CHAR
INT4
INT4
CHAR
DATS
CHAR
INT4
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
INT1
INT4
CHAR
INT4
CHAR
INT4
INT4
CHAR
CHAR
CHAR
INT4
CHAR
LANG
CHAR
INT4
INT4
INT4
INT4
CHAR
INT4
C
X
C
C
C
C
C
C
C
C
C
C
C
P
P
D
C
C
X
X
C
C
C
X
X
C
D
C
X
C
C
C
C
C
C
C
C
X
X
C
X
C
X
X
C
C
C
X
C
C
C
X
X
X
X
C
X
LONGITUD
26
2
1
1
1
1
1
1
1
4
1
1
8
5
5
8
5
5
4
4
8
4
1
4
4
1
8
1
4
2
10
4
1
8
4
4
72
1
4
8
4
3
4
4
1
1
8
4
1
1
8
4
4
4
4
255
4
DESCRIPCION
CONSTANT: Alfabeto (A,B,C,....)
Aplicaciones SAP
Batch Activo (X)
SUBMIT batch: Diario
SUBMIT batch: Mensual
SUBMIT batch: Unico
SUBMIT batch: Inmediato
SUBMIT batch: Semanal
Batch input activo (X)
SUBMIT batch: Nombre de raiz del report de llamada
SUBMIT batch: Salida de lista en SPOOL
CALL modo activo (X)
IMPRIMIR: ID para funciones de pantalla
Tipo cambio/Campo resultado CURRENCY CONVERT
Tipo cambio en Tabla de Aplicacion CURRENCY CONVESION
Fecha de Tipo de Cambio de CURRENCY CONVESION
Uso interno
Uso interno
Columna actual en la creacin de la lista
Numero de pagina actual
RUNTIME: Programa principal
Tabla de Tipo de Cambio en CURRENCY CONVERSION
Tipo de Cambio M, B, G de CURRENCY CONVERSION
Posicin del cursor (columna)
Posicin del cursor (fila)
Indicador: Datos recibidos
SYSTEM: Fecha del da
Horario de verano activo
Cantidad de elementos tratados en operaciones de BD
Base de Datos lgica en report ABAP
SYSTEM: Sistema de base de datos
Sistema de dialogo
Uso interno
RUNTIME: Nombre del set de datos para salida en SPOOL
Grupo de dynpros del dynpro actual
Numero de la imagen en pantalla actual
Uso interno
Da de la semana en el calendario
Lugar de hallazgo en un string
INTERNO: Flatfile (USING/GENERATING DATASET)
Uso interno (longitud de campo)
Men de cdigos de funciones actual
Uso interno (cantidad de decimales)
Uso interno (longitud de salida del campo)
Uso interno (tipo de campo)
INTERNO: Concatenacin
Nombre de la maquina
Cantidad de repeticiones de ciclos
Uso interno
Clave de idioma de SAP
PROGRAM: Programa ABAP de base de datos para SY-DBNAM
Numero de lnea de la lista actual
Cantidad de lneas de la lista
Lnea actual en la creacin de la lista
Ancho de la lnea de la lista
INTERACT: Linea seleccionada
Numero de lnea de la lista actual
SY-LOCDB
SY-LOCOP
SY-LOOPC
SY-LPASS
SY-LSIND
SY-LSTAT
SY-MACDB
SY-MACOL
SY-MANDT
SY-MARKY
SY-MAROW
SY-MODNO
SY-MSGID
SY-MSGLI
SY-MSGNO
SY-MSGTY
SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
SY-NEWPA
SY-NRPAG
SY-ONCOM
SY-OPSYS
SY-PAART
SY-PAGCT
SY-PAGNO
SY-PAUTH
SY-PDEST
SY-PEXPI
SY-PFKEY
SY-PLAYO
SY-PLAYP
SY-PLIST
SY-PNWPA
SY-PRABT
SY-PRBIG
SY-PRCOP
SY-PRDSN
SY-PREFX
SY-PRI40
SY-PRIMM
SY-PRINI
SY-PRLOG
SY-PRNEW
SY-PRREC
SY-PRREL
SY-PRTXT
SY-REPI2
SY-REPID
SY-RSTRT
SY-RTITL
SY-SAPRL
SY-SCOLS
SY-SFNAM
SY-SFOFF
SY-SLSET
SY-SPONO
SY-SPONR
SY-SROWS
CHAR
CHAR
INT4
CHAR
INT4
CHAR
CHAR
INT4
CHAR
CHAR
INT4
CHAR
CHAR
CHAR
NUMC
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
INT4
INT4
NUMC
CHAR
NUMC
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
NUMC
CHAR
CHAR
CHAR
CHAR
NUMC
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
INT4
CHAR
INT4
CHAR
NUMC
NUMC
INT4
C
C
X
C
X
C
C
X
C
C
X
C
C
C
N
C
C
C
C
C
C
C
C
C
C
X
X
N
C
N
C
C
C
C
C
C
C
N
C
C
C
C
N
C
C
C
C
C
C
C
C
C
C
X
C
X
C
N
N
X
1
1
4
4
4
16
4
4
3
1
4
1
2
60
3
1
50
50
50
50
1
1
1
10
16
4
4
2
4
1
8
5
1
12
1
12
1
3
6
3
1
1
1
1
1
12
1
68
8
8
1
70
4
4
30
4
14
5
5
4
SY-STACO
SY-STARO
SY-STEPL
SY-SUBCS
SY-SUBRC
SY-SUBTY
SY-SYSID
SY-TABID
SY-TABIX
SY-TCODE
SY-TFDSN
SY-TFILL
SY-TITLE
SY-TLENG
SY-TLOPC
SY-TMAXL
SY-TNAME
SY-TOCCU
SY-TPAGI
SY-TSTIS
SY-TTABC
SY-TTABI
SY-TVAR0
SY-TVAR1
ST-TVAR2
SY-TVAR3
SY-TVAR4
SY-TVAR5
SY-TVAR6
SY-TVAR7
SY-TVAR8
SY-TVAR9
SY-TZONE
SY-UCOMM
SY-ULINE
SY-UNAME
SY-UZEIT
SY-VLINE
SY-WAERS
SY-WILLI
SY-WINCO
SY-WINDI
SY-WINRO
SY-WINSL
SY-WINX1
SY-WINX2
SY-WINY1
SY-WINY2
SY-WTITL
SY-XCODE
SY-XFORM
SY-XPROG
INT4
INT4
INT4
CHAR
INT4
RAW
CHAR
CHAR
INT4
CHAR
CHAR
INT4
CHAR
INT4
INT4
INT4
CHAR
INT4
INT4
INT4
INT4
INT4
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
INT4
CHAR
CHAR
CHAR
TIMS
CHAR
CUKY
INT4
INT4
INT4
INT4
CHAR
INT4
INT4
INT4
INT4
CHAR
CHAR
CHAR
CHAR
X
X
X
C
X
X
C
C
X
C
C
X
C
X
X
X
C
X
X
X
X
X
C
C
C
C
C
C
C
C
C
C
X
C
C
C
T
C
C
X
X
X
X
C
X
X
X
X
C
C
C
C
4
4
4
1
4
1
8
8
4
4
8
4
70
4
4
4
30
4
4
4
4
4
20
20
20
20
20
20
20
20
20
20
4
70
255
12
6
1
5
4
4
4
4
79
4
4
4
4
1
70
30
8
La opcin CURRENT LINE de las sentencias READ LINE y MODIFY LINE siempre se refiere a la lnea SY-LILLI de
la lista SY-LISTI
A
C
D
F
N
T
P
X
C
D
F
N
P
T
X
C
D
F
N
P
T
X
C
D
F
N
P
T
X
C
D
F
N
P
T
X
C
D
F
N
P
T
X
D
F
N
P
T
X
PROCESO
Transfiere justificado a izquierda, rellena con blancos a derecha
El campo DE debe ser de 8 caracteres con formato YYYYMMDD
El string de caracteres de DE debe ser una representacin valida de un numero en punto flotante
Solo permite caracteres numricos. Transfiere justificando a derecha. Rellena a izquierda con ceros
El campo DE debe ser de 6 caracteres con formato HHMMSS
El campo DE contiene un numero decimal, puede tener signo y punto decimal.
El campo DE contiene un string hexadecimal. Transfiere hasta el primer blanco.
Transfiere sin conversin. Justifica a izquierda
Transfiere sin conversin.
Como D a P y luego P a F
Como D a C y luego C a N
Inversa de P a D
No soportado
Inversa de X a D
Convierte el numero en formato exponencial . La longitud de HASTA debe ser de al menos 6.
Ver F a N
Transfiere sin conversin
El campo DE es redondeado y luego tratado como un campo P
El campo DE es redondeado
Ver F a N
Ver F a N
El campo DE es tratado como si fuera un campo C. Rellena con ceros
Como N a C y luego C a D
Como N a P y luego P a F
Justifica a derecha. Rellena con ceros a izquierda o trunca si es mayor
El campo DE es empaquetado con signo positivo y luego transferido
Como N a C y luego C a T
Como N a P y luego P a X
El campo DE es transferido con signo y punto decimal
El valor de DE es la fecha absoluta y es transferido con formato YYYYMMDD
El campo DE es transferido como un numero en punto flotante
Justifica a derecha sin signo, rellena a izquierda con ceros
Transfiere sin conversin
El valor del campo DE debe ser tiempo absoluto, lo transfiere con formato HHMMSS
Lo transfiere y transforma en valor hexadecimal. Si es mayor trunca a derecha
Como D a C
No soportado
Como T a P y luego P a F
Como T a C
Inversa de P a T
Transfiere sin conversin
Inversa de X a T
El valor en campo DE es una fecha absoluta, transfiere en formato YYYYMMDD
Como X a P y luego P a F
Como X a P y luego P a N
Lo transfiere en formato empaquetado
El valor en campo DE es una hora absoluta, transfiere en formato HHMMSS
Justifica a izquierda, rellena con X00 a derecha
V
VISTAS
M
MATCH-CODE
AA
Describe la aplicacin
NNNN Descripcin literal
CAMPOS:
Los nombres de los campos dentro de las tablas sern de largo variable y descripcin literal alfabtica.
ELEMENTOS DE DATOS:
Para los nombres de estos objetos se deber anteponer al nombre del campo una letra Z .
DOMINIOS:
Los nombres de los dominios se dividirn de la siguiente forma
ZCCCCNNT donde:
Z
Por definicin SAP
CCCC Tipo de formato del campo
CHAR CARACTERES
DATS FORMATO FECHA AAAAMMDD
DEC CAMPO EMPAQUETADO CON COMA Y SIGNO
NUMC CARACTER SOLO NUMEROS
QUAN CAMPO PARA CANTIDADES
TIMS FORMATO HORA HHMMSS
UNIT CLAVE DE UNIDADES PARA CAMPOS QUAN
FLTP CIFRA DE COMA FLOTANTE
NN
Longitud del campo
T
Valor fijo para determinar si tiene tabla de valores
TRANSACCIONES:
Los cdigos de transaccin se debern codificar de la siguiente forma
ZANN donde:
Z
Por definicin SAP
AA
Descripcin de la aplicacin
NNN Secuencia numrica.
MENES:
Los mens se codificaran de la siguiente forma
ZAMN donde:
Z
Por definicin SAP
A
Descripcin de la aplicacin
M
Valor fijo que describe que es un men
N
Secuencia numrica
FORMULARIOS:
Los nombres de estos objetos se codificaran como
ZF_AA_XXXXXXX
donde:
Z
Por definicin SAP
F
Valor fijo
A
Aplicacin
X X Descripcin literal
FUNCIONES:
Los nombres de las funciones debern codificarse de la siguiente forma
ZAA_XX...X. donde:
Z
Por definicin de SAP
AA
Aplicacin
X...X Descripcin literal referente
DOCUMENTOS:
Los documentos Word que se creen para documentar el desarrollo debern respetar la nomenclatura
siguiente:
ZAA_CCNN donde:
Z
Por definicin SAP
AA
Aplicacin
CC
Tipo de documentacin
DC
PROCESOS SEGUN SAP
DD
DOCUMENTACION DESARROLLOS
GC
MANUAL DE PARAMETRIZACION
GU
MANUAL DEL USUARIO
NN
MS
MODIFICACIONES AL ESTANDAR
TD
ELEMENTOS DEL DICCIONARIO
OM
OBJETOS DE MATCHCODE
TX
TRANSACCIONES
IN
INTERFASES
TS
PRUEBAS
AV
INFORMES DE AVANCE
Secuencia numrica
Atributos de Programa
Ser obligatorio completar los atributos de programa que se detallan en los puntos siguientes. El resto de los atributos
solo se completarn en caso de ser necesarios.
Ttulo
El ttulo del programa deber ser claro y conciso, de tal manera que no deje dudas cual es el
objetivo del programa.
Tipo
Utilizar alguno de los tipos que se corresponda con el desarrollo a efectuar.
Aplicacin
Completar con Z, para el caso de programas desarrollados
Estructura para nuevos programas
Esta estructura est referida solamente a los programas cuyo atributo de tipo est indicado con 1.
Documentacion de cambios
Todas las lneas eliminadas (comentariadas) debern contar con la REFERENCIA correspondiente en las columnas 1 a
7 que deber ser la fecha de modificacin en formato *aammdd.
Todas las lneas agregadas debern contar con la REFERENCIA correspondiente en las columnas 1 a 7 que deber ser
la fecha de modificacin en formato *aammdd.
Nota: una modificacin implica la eliminacin (comentariado) de la lnea existente y el agregado de una lnea nueva.
Cabecera del programa
La cabecera de un programa ABAP deber respetar el siguiente formato:
REPORT ZPPAAXXX MESSAGE-ID Z1
LINE-SIZE 132
LINE-COUNT 65
NO STANDARD PAGE HEADING.
*******************************************************
*PropiedaddeBancoColumbiaS.A.*
*******************************************************
*PROGRAMA:<programa>*
*DESCRIPCION:<objetivodelprograma>*
*FECHA:<dd/mm/aaaa>*
*RESPONSABLE:<nombredelprogramador>*
*REQUERIMIENTO:<nmeroderequerimiento>*
*TRANSPORTE:<nmerodetransporte>*
**
*MODIFICACIONES*
**
Para cada modificacion se adicionaran las siguientes lineas:
**
*MODIFICACION:<descripcindelamodificacin>*
*FECHA:<dd/mm/aaaa>*
*RESPONSABLE:<nombredelprogramador>*
*REQUERIMIENTO:<nmeroderequerimiento>*
*TRANSPORTE:<nmerodetransporte>*
**
Declaracin de datos globales
Utilizar esta seccion para declaracion de variables elementales, estructuras y tablas internas ( de lo mas simple a lo mas
complejo)
Esta seccin se debe utilizar para la declaracin de todas las variables globales utilizadas en el programa.
La declaracin de datos debe respetar el siguiente formato:
**
* DECLARACION DE TABLAS
*
**
TABLES:
xxxxx,
"Descripcion
yyyyy.
"Descripcion
**
* DECLARACION DE VARIABLES
*
**
* Campos globales
DATA: G_CAMPO1 LIKE T001-BUKRS,
"Adicionar comentario
G_CAMPO2(3),
"Adicionar comentario
G_CAMPO3 TYPE N,
"Adicionar comentario
G_CAMPO4 LIKE BKPF-BUDAT.
"Adicionar comentario
* Estructuras
DATA: BEGIN OF E_XXXXXX,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BSEG-BELNR,
END OF E_XXXXXX.
DATA: BEGIN OF E_BKPF.
INCLUDE STRUCTURE BKPF.
DATA: END OF E_BKPF.
* Tablas internas
DATA: BEGIN OF T_XXXXXX OCCURS 10,
BUKRS LIKE BKPF-BUKRS,
BUDAT LIKE BKPF-BUDAT,
END OF T_XXXXXX.
DATA: BEGIN OF T_BKPF OCCURS 100.
INCLUDE STRUCTURE BKPF.
DATA: END OF T_BKPF.
* Rangos
RANGES: R_BUKRS FOR BKPF-BUDAT.
"Nombre de Tabla
"Adicionar comentario
"Agregar comentario
"Nombre de Tabla
"Agregar comentario
"Agregar comentario
"Rango
* Field symbols
FIELD-SYMBOLS:
<FS_001>,
<FS_002>.
* Fields groups
FIELD-GROUPS: HEADER,
FG_DETALLE.
"Agregar comentario
"Agregar comentario
Donde:
Las primeras lneas de este bloque deben utilizarse para la declaracin de las tablas y estructura de datos utilizada por el
programa. Cada tabla declarada debe tener a su derecha el comentario sobre la descripcin breve de la tabla
La segunda seccin del bloque se utilizar para la declaracin de variables globales. Esto incluye campos, tablas
internas, estructuras, etc. en la forma y orden en que se muestra en el ejemplo de arriba.
Cada objeto adicionado debe comentarse.
Debe tratarse en lo posible de definir las variables haciendo referencia a campos definidos en el diccionario de datos,
mediante la utilizacin del LIKE.
Declaracin de campos de pantalla.
Esta seccin se debe utilizar para la declaracin de todos los campos que se mostrarn en la pantalla de inicio del
programa y que permiten la seleccin de la informacin ( PARAMETERS, SELECTOPTIONS, ETC ).
En esta seccin del programa deben codificarse todas las sentencias que permitan mostrar campos en la pantalla de
seleccin.
La declaracin de parmetros de pantalla debe respetar el siguiente formato:
**
* DISEO PANTALLA DE SELECCIN
*
**
SELECTION-SCREEN BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_BUKRS FOR BKPF-BUKRS
NO INTERVALS,
S_BLART FOR BKPF-BLART.
PARAMETERS: P_GJAHR LIKE BKPF-GJAHR
OBLIGATORY,
P_MONAT LIKE BKPF-MONAT.
SELECTION-SCREEN END OF BLOCK BLK01.
PARAMETERS: P_KUNNR LIKE KNA1-KUNNR.
Donde:
Deben posicionarse los distintos PARAMETERS y SELECT-OPTIONS, de acuerdo a la posicin que se desea
aparezcan en la pantalla.
Debe comentarse cada parmetro declarado.
Este tipo de variables deben ser utilizadas para evitar los HARD_CODES
Validacin de campos de pantalla e inicializacin
En esta seccin del programa se deben efectuar las validaciones de todos los campos de la pantalla de
seleccin y realizar las inicializaciones de variables si corresponde.
En esta seccin del programa deben codificarse todas las validaciones de los campos de la pantalla
El formato es el que se muestra a continuacin:
**
* INICIALIZACION
*
**
INITIALIZATION.
PERFORM F_INICIALIZACION_NN.
**
* VALIDACION DE PARAMETROS DE PANTALLA
*
**
AT SELECTION-SCREEN ON BLOCK BLK01.
AT SELECTION-SCREEN ON P_KUNNR.
Donde:
Toda validacin que se realice sobre los parmetros de entrada debe efectuarse utilizando estos eventos. De esta manera,
se enviarn los mensajes de error o informacin segn corresponda y los mismos aparecern sobre la pantalla de
seleccin, posibilitando de esa manera que el usuario corrija el error.
Debe comentarse cada parmetro declarado.
Pueden crearse subrutinas del tipo PERFORM para agrupar las validaciones correspondientes a un evento de este tipo y
de esa manera mejorar la modularizacin del programa, facilitando los probables cambios posteriores.
El evento INITIALIZATION debe utilizarse para cargar previamente a su utilizacin las variables deseadas. Podr
crearse una subrutina para agrupar todas las inicializaciones y modularizar el programa.
Rutina principal del programa.
Esta seccin del programa representa el cuerpo principal de cdigo y debe utilizarse para la extraccin de la
informacin en las bases de datos o en su defecto codificar el nudo del desarrollo.
El formato es el que se muestra a continuacin:
**
* LECTURAS DE BASES DE DATOS
*
* BDL: Base de datos logica utilizada - Nro.pantalla
*
**
START-OF-SELECTION.
Realizar aqu todos los procesos necesarios para recuperar la informacion de las bases de datos, ya sea utilizando una
BDL o no.
Tratar de agupar codigo en subrutinas.
La informacin debe tratar de almacenarse en tablas internas
GET BKPF.
GET BSEG.
GET BKPF LATE.
MOVE-CORRESPONDING BKPF TO T_XXXXXX.
MOVE-CORRESPONDING BSEG TO T_XXXXXX.
APPEND T_XXXXXX.
Donde:
La rutina principal del programa siempre debe comenzar con el evento START-OF-SELECTION.
Comentar el bloque principal del programa, indicando en el caso de utilizar una BDL, cul es y que pantalla de
seleccin utiliza, as como tambin incluir todo comentario de inters sobre la funcionalidad de la rutina.
Los datos ledos deben almacenarse en una tabla interna para despus de realizada la seleccin controlar que se haya
efectuado con xito.
Pueden crearse subrutinas del tipo PERFORM para agrupar el cdigo y de esa manera mejorar la modularizacin del
programa, facilitando la lectura y los probables cambios posteriores.
Tratamiento de los datos obtenidos.
Esta seccin del programa debe ser utilizada para codificar el tratamiento de los datos obtenidos en la seccin anterior.
El formato es el que se muestra a continuacin:
*----------------------------------------------------------------------*
* FIN DE SELECCION DE DATOS
*----------------------------------------------------------------------*
END-OF-SELECTION.
DESCRIBE TABLE T_XXXXXX LINES SY-INDEX.
IF SY-INDEX IS INITIAL.
MESSAGE S001(Z1).
EXIT.
ENDIF.
En esta seccin debe codificarse la parte del proceso referida a la generacin de la salida, ya sea un reporte, un call
transaction o o alguna otra funcionalidad.
Debe tratar de agruparse el cdigo en subrutinas.
PERFORM F_SUBRUTINA USING G_CAMPO1
G_CAMPO2.
PERFORM F_LISTA.
*----------------------------------------------------------------------*
Una vez verificado que el programa tiene todos los datos para trabajar, debe codificarse en un a rutina todo lo que sea
necesario para complementar la informacion seleccionada.
Por ultimo se creara una rutina donde se codificaran las sentencias necesarias para emitir el reporte
Donde:
La codificacin en esta parte del programa siempre debe comenzar con el evento END-OFSELECTION.
Luego debe validarse que la seleccin de datos ha sido exitosa. En ese caso se contina con el programa, caso contrario,
se debe enviar un mensaje de tipo S, informndole al usuario que verifique los datos ingresados en la pantalla de
seleccin y dar por terminado el programa.
Una vez verificado que el programa tiene datos para trabajar, debe codificarse en una subrutina todo lo que haga falta
para complementar los datos seleccionados, ordenarlos, etc.
Por ultimo, se crear una subrutina adicional donde se codificarn las sentencias necesarias para emitir el reporte.
( WRITE, FORMAT, etc.)
Eventos de control.
Esta seccin del programa debe ser utilizada para codificar todos los posibles eventos de control, que son aquellos que
se disparan una vez generada la salida.
Debe verificarse que la bsqueda de la informacin en las bases de datos fue exitosa. Si esto no fuera as, deber
terminarse el programa enviando un mensaje de aviso al usuario, para que revise la seleccin efectuada
No ser necesario codificar todos los eventos en esta seccin del programa sino solamente los necesarios.
El formato es el que se muestra a continuacin:
* EVENTOS DE CONTROL
*----------------------------------------------------------------------*
TOP-OF-PAGE.
END-OF-PAGE.
TOP-OF-PAGE DURING LINE-SELECTION.
AT LINE-SELECTION.
AT PFNN.
AT USER-COMMAND.
Donde:
No es necesaria la codificacin de la totalidad de los eventos sino solamente los estrictamente necesarios.
No tienen un orden establecido.
Subrutinas internas.
Es la ltima seccin del programa. Deben codificarse en esta todas las subrutinas internas que son llamadas en el
programa.
El formato es el que se muestra a continuacin:
*----------------------------------------------------------------------*
* SUBRUTINAS INTERNAS
*----------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*& Form F_INICIALIZACION_NN
*&--------------------------------------------------------------------*
* Documentar en esta parte la funcionalidad de la subrutina*
*----------------------------------------------------------------------*
* --> p1 documentacin de parametros
* <-- p2 Dcoumentacion de parametros
*----------------------------------------------------------------------*
FORM F_INICIALIZACION_NN.
ENDFORM. " F_INICIALIZACION_NN
*&--------------------------------------------------------------------*
*& Form F_SUBRUTINA
*&--------------------------------------------------------------------*
* Documentar aqu la funcionalidad de la subrutina
*
*----------------------------------------------------------------------*
* --> p1 documentar parametros de entrada
* <-- p2 documentar parametros de salida
*----------------------------------------------------------------------*
FORM F_SUBRUTINA USING U_PAR1
U_PAR2.
DATA: L_CAMPO1 TYPE D. "Adicionar comentario
ENDFORM. " F_SUBRUTINA
Donde:
En el encabezado de la sub-rutina debe comentarse la funcionalidad principal de la misma, as como tambin cada uno
de los parmetros pasados, comentando su contenido.
Convencin para nombres internos ABAP/4
Se detalla a continuacin la nomenclatura que debe respetarse en la codificacin de programas ABAP.
Se recomienda incluir dentro del nombre (en la parte libre) el mismo nombre de variable que el campo de SAP. Ej.:
G_BUKRS
OBJETO
LG.MAX.
Variables globales
10
Variables locales 10
Tablas Internas
10
Estructuras
10
Rangos
8
Field Symbols
8
Fields Groups
10
Select-options
8
Parameters
8
Forms Libre
1-2
Parmetros actuales
8
VALOR
G_Libre
L_Libre
T_Libre
E_Libre
R_Libre
FS_Libre
FG_Libre
S_Libre
P_Libre
F_Libre
U_Libre