Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En esta pgina estn todas las instrucciones ABAP/4 del sistema SAP R/3, adems cada una de ellas contiene un pequeo ejemplo (o al menos esa es mi intencin). Las sentencias estn ordenadas alfabticamente para una mejor bsqueda y adems cada sentencia tiene su propia pgina para facilitar su impresin, copia, tratamiento, etc...
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Letra A
q q q q q q q q q q q q q q
ADD ADD-CORRESPONDING APPEND ASSIGN AT .. ENDAT AT END OF .. ENDAT AT FIRST .. ENDAT AT LAST .. ENDAT AT LINE-SELECTION AT NEW .. ENDAT AT Pfnn AT SELECTION-SCREEN AT USER-COMMAND AUTHORITY-CHECK
Letra B
q q q
Letra C
q q q q q q q q q q q q q q q q q
CALL CALL CUSTOMER-FUNCTION CALL DIALOG CALL FUNCTION CALL METHOD CALL SCREEN CALL SUBSCREEN CALL TRANSACTION CASE .. ENDCASE CHAIN CHECK CLEAR CLOSE CURSOR CLOSE DATASET CNT COLLECT COMMIT WORK
COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT DATE CONVERT TEXT CREATE OBJECT
Letra D
q q q q q q q q q q q q q q q q q
DATA DEFINE .. END-OF-DEFINITION DELETE DELETE DATASET DELETE DYNPRO DELETE FROM DATABASE DELETE FROM SHARED BUFFER DELETE REPORT DELETE TEXTPOOL DESCRIBE DISTANCE DESCRIBE FIELD DESCRIBE LIST DESCRIBE TABLE DETAIL DIVIDE DIVIDE-CORRESPONDING DO .. ENDDO
Letra E
q q q q q q q q q q q q q
EDITOR-CALL FOR REPORT END-OF-PAGE END-OF-SELECTION EXEC SQL .. ENDEXEC EXIT EXIT FROM STEP-LOOP EXIT FROM SQL EXPORT EXPORT DYNPRO EXPORT TO DATABASE EXPORT TO DATASET EXPORT TO MEMORY EXPORT TO SHARED BUFFER
EXTRACT
Letra F
q q q q q q q q q q q q
FETCH FIELD FIELD-GROUPS FIELD-SYMBOLS FIELDS FORM .. ENDFORM FORMAT FREE FREE MEMORY FREE OBJECT FUNCTION .. ENDFUNCTION FUNCTION-POOL
Letra G
q q q q q q q q q q
GENERATE DYNPRO GENERATE REPORT GENERATE SUBROUTINE POOL GET GET CURSOR GET LOCALE LANGUAGE GET PARAMETER GET PROPERTY GET RUN TIME GET TIME
Letra H
q
HIDE
Letra I
q q q q q q q q q q q q q q
IF .. ENDIF IMPORT DIRECTORY FROM DATABASE IMPORT DYNPRO IMPORT FROM DATABASE IMPORT FROM DATASET IMPORT FROM LOGFILE IMPORT FROM MEMORY IMPORT SHARED BUFFER INCLUDE INCLUDE STRUCTURE INCLUDE TYPE INFOTYPES INITIALIZATION INSERT
Letra L
q q q q q q q q q q
LEAVE LEAVE PROGRAM LEAVE SCREEN LEAVE TO LIST-PROCESSING LEAVE TO SCREEN LEAVE TO TRANSACTION LOAD REPORT LOCAL LOOP .. ENDLOOP LOOP AT SCREEN .. ENDLOOP
Letra M
q q q q q q q q q q q
MESSAGE MODIFY MODIFY CURRENT LINE MODIFY LINE MODIFY SCREEN MODULE MODULE .. ENDMODULE MOVE MOVE-CORRESPONDING MULTIPLY MULTIPLY-CORRESPONDING
Letra N
q q
NEW-LINE NEW-PAGE
Letra O
q q q q q
ON CHANGE OF .. ENDON OPEN CURSOR OPEN DATASET Operador de asignacin "=" OVERLAY
Letra P
q q q q q
Letra R
q q q q q q q q q q q q q q q q q q
RAISE RANGES READ CALENDAR READ CURRENT LINE READ DATASET READ LINE READ REPORT READ TABLE READ TEXTPOOL RECEIVE RESULTS FROM FUNCTION REFRESH REFRESH CONTROL REFRESH SCREEN REJECT REPLACE REPORT RESERVE ROLLBACK WORK
Letra S
q q q q q q q q q q q q q q q q q q
SCAN SCROLL LIST SEARCH SELECT .. ENDSELECT SELECT-OPTIONS SELECTION-SCREEN SET BLANK LINES SE COUNTRY SET CURSOR SET EXTEND 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
Letra T
q q q q q q q
Letra U
q q q
Letra W
q q q q q
ADD
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.
q q
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 q 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. Vease tambin: COMPUTE, ADD-CORRESPONDING
ADD-CORRESPONDING
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.
Vease tambin: ADD MOVE-CORRESPONDING SUBTRACT-CORRESPONDING MULTIPLY-CORRESPONDING DIVIDE-CORRESPONDING .
APPEND
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.
q
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 metodo.
q
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 para crear tablas ranking no muy grandes. Si queremos ordenar tablas de muchas entradas es preferible utilizar las sentencias SORT por razones de rendimiento. Vease tambin: INSERT, MODIFY.
ASSIGN
APPEND
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 vceremos 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:
q
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 aqullos 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 field-symbol, pero hasta la ejecucin no sabemos de dicha rea de trabajo se puede utilizar la siguiente variante dinmica de la sentencia ASSIGN:
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (1 de 5) [09/11/2000 11:22:42]
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 field-symbol 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. Resumamos estas variantes a continuacin: ASSIGN (<FS1>) TO <FS2> { <tipo> } { <decimales> }. ASSIGN (<FS1>) { +<offset> } { (<longitud>) }TO <FS2> { <tipo> } { <decimales> }. ASSIGN (<campo>) TO <FS2> { <tipo> } { <decimales> }. ASSIGN TABLE FIELD (<campo>) TO <FS> { <tipo> } { <decimales> }. <campo> es un objeto de datos con el valor de un field-symbol. Las clusulas <tipo> y <decimales> son opcionales y las veremos en posteriores apartados. Se puede especificar componentes de un field-string a un field-symbol con la siguiente variante de la sentencia ASSIGN: ASSIGN COMPONENT <c> OF STRUCTURE <e> TO <FS> { <tipo> } { <decimales> }. El sistema asigna el componente <c> de la estructura <e> al field-symbol <FS>. <c> puede ser un literal o una variable. Si la asignacin es satisfactoria, SY-SUBRC es 0; en caso contrario es 4. Las clusulas <tipo> y <decimales> son opcionales y las veremos en posteriores apartados.
q
Se puede definir el tipo de un field-symbol utilizando la clusula TYPE de la sentencia ASSIGN. La clusula TYPE se puede utilizar con todas las variantes de la sentencia ASSIGN vistas anteriormente. <tipo> puede ser un literal a una variable. Se produce un error en tiempo de ejecucin si el tipo de datos es desconocido, o si la longitud del tipo de datos especificado es incompatible con el tipo de dato asignado. Tambin se puede especificar el nmero de decimales de un field-symbol si el campo asignado es del tipo P (empaquetado). Para ello se especifica la clusula DECIMALS de la sentencia ASSIGN. La clusula DECIMALS se puede utilizar con todas las variantes de la sentencia ASSIGN. Con esta clusula se puede tener distinto nmero de decimales entre el objeto de dato asignado y el field-symbol. <decimales> puede ser un literal o una variable. Un erro en tiempo de ejecucin se produce si <decimales> no tiene un valor comprendido entre 0 y 14, o si el objeto de dato asignado no es del tipo P.
Cuando trabajamos con subrutinas, se puede estar interesados en crear copias locales de datos globales sobre la pila de datos. Para realizar esto, disponemos de la siguiente clusula de la sentencia ASSIGN: ASSIGN LOCAL COPY OF ... TO <FS>. El sistema es una copia del dato global especificado sobre la pila. En la subrutina, se puede acceder y cambiar esta copia sin cambiar el valor del dato global. Se puede utilizar esta clusula con todas las variantes de la sentencia ASSIGN a excepcin de la vista en el apartado "Sentencia ASSIGN con componentes de un field-string". Ejemplo 1:
DATA NAME(4) VALUE 'JOHN'. FIELD-SYMBOLS <F>. ASSIGN NAME TO <F>. WRITE <F>.
Salida: JOHN Ejemplo 2:
ASSIGN
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', 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:
ASSIGN
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.
ASSIGN
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 Vease tambin: DESCRIBE FIELD, MOVE.
AT .. ENDAT
AT <fg> .. 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.
q
La clusula WITH se utiliza para indicar que la sentencia AT se debe ejecutar si para el field-group <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.
Vease tambin: LOOP, EXTRACT.
AT END OF .. ENDAT
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 (*). No se debe utilizar la sentencia AT END OF .. 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. AT END OF NAME. SUM. WRITE: / COMPANIES-NAME, COMPANIES-SALES. ENDAT. ENDLOOP.
AT FIRST .. ENDAT
AT FIRST .. ENDAT
Definicin La sentencia AT FIRST .. ENDAT slo puede ser utilizada dentro de un bucle LOOP .. ENDLOOP e identifica un bloque de proceso. La sentencia se ejecuta con el primer valor o primer registro de la sentencia LOOP .. ENDLOOP. Sintaxis: AT FIRST. <bloque-sentencias> ENDAT. La sentencia AT FIRST se cierra con ENDAT, identificando de esta forma un bloque de proceso. En un bloque AT FIRST .. 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 FIRST 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 FIRST .. 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 FIRST. NEW-PAGE. WRITE / COMPANIES-BUKRS. ENDAT. WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES. ENDLOOP.
AT LAST .. ENDAT
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
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. Este evento se describe con mayor detalle en el Captulo 15: "Programas interactivos". 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: q En el men "edicin", se elige la opcin "seleccionar".
q q
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:'.
AT LINE-SELECTION
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 PFnn
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. Este evento se describe con mayor detalle en el Captulo 15: "Programas interactivos". 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. Recomiendo no utilizar este evento, es preferible utiliza 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
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 radiobutton 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 SELECTION-SCREEN. 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.
AT SELECTION-SCREEN
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
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, NUMBER2 TYPE I VALUE 5, RESULT TYPE I. START-OF-SELECTION. WRITE: / NUMBER1, '?', NUMBER2. AT USER-COMMAND. CASE SY-UCOMM. WHEN 'ADD'. RESULT = NUMBER1 + NUMBER2. WHEN 'SUBT'. RESULT = NUMBER1 - NUMBER2. WHEN 'MULT'. RESULT = NUMBER1 * NUMBER2. WHEN 'DIVI'. RESULT = NUMBER1 / NUMBER2. WHEN OTHERS. WRITE 'Unknown function code'. EXIT. ENDCASE. WRITE: / 'Result:', RESULT.
AUTHORITY-CHECK
AUTHORITY-CHECK
Definicin Esta sentencia nos permite comprobar las autorizaciones de un usuario. Recordemos que dichas autorizaciones forman parte del perfil de usuario y el sistema las guarda en el maestro de usuarios. Sintaxis: AUTHORITY-CHECK OBJECT '<objeto>' ID 'campo1> { FIELD <valor1> | DUMMY } ID 'campo2> { FIELD <valor2> | DUMMY } ... ID 'campon> { FIELD <valorn> | DUMMY } <objeto> es el nombre del objeto de autorizacin que hay que comprobar.
q
Un objeto de autorizacin esta compuesto de campos de autorizacin, todos ellos deben estar especificados a continuacin de las clusulas ID (<campo1>, <campo2> ..., <campon>). <valor1, <valor2>, ..., <valorn> son los valores de autorizacin que hay que comprobar. <valorx> puede ser un literal o una variable. El sistema busca en el perfil del usuario el objeto especificado en la sentencia, y comprueba si el usuario tiene autorizacin para todos los campos del objeto. Se puede saltar la comprobacin de un campo sustituyendo la clusula FIELD por DUMMY. Si SY-SUBRC vale 0, el usuario esta autorizado, en caso contrario, SY-SUBRC toma un valor distinto de 0.
Ejemplo 1:
AUTHORITY-CHECK OBJECT 'M_EINF_WRK' ID 'WERKS' FIELD '0002' ID 'ACTVT' FIELD '02'. AUTHORITY-CHECK OBJECT 'M_EINF_WRK' ID 'WERKS' DUMMY ID 'ACTVT' FIELD '01'.
BACK
BACK
Definicin Para situar la lnea de salida en la lnea siguiente de la cabecera de pgina se puede utilizar la sentencia BACK. Sintaxis: BACK Esta sentencia puede ser utilizada en combinacin con la sentencia RESERVER. Si la sentencia BACK se utiliza sola, el sistema actualiza la lnea actual de salida a la siguiente cabecera de pgina. Adems actualiza la variable SY-COLNO a 1 y SY-LINNO al valor que corresponda en funcin del nmero de lneas de cabecera. En combinacin con la sentencia RESERVE se aplican otras condiciones. El sistema actualiza la lnea actual de salida a la primera lnea del bloque de lneas creado con la sentencia RESERVE. Ejemplo 1:
DATA:
TOWN(10) VALUE 'New York', CUSTOMER1(10) VALUE 'Charly', CUSTOMER2(10) VALUE 'Sam', SALES1 TYPE I VALUE 1100, SALES2 TYPE I VALUE 2200. RESERVE 2 LINES. WRITE: TOWN, CUSTOMER1, / CUSTOMER2 UNDER CUSTOMER1. BACK. WRITE: 50 SALES1, / SALES2 UNDER SALES1. Vease tambin: RESERVE.
BREAK
BREAK
Definicin Con esta sentencia activamos la transaccin de depuracin de programas. Sintaxis: BREAK <usuario>. Cuando esta sentencia se ejecuta, si el usuario que est ejecutando el programa es el especificado en el literal <usuario>, se activa la transaccin de depuracin de programas. <usuarios> no debe ir entre comillas como sera lgico en un literal. El efecto es el mismo que el de la sentencia BREAK-POINT, para un mayor detalle ver esta sentencia.
BREAK-POINT
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-WORK de la base de datos.
CALL
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 linkar de nuevo el kernel de SAP, para ello sera necesario tener los cdigos fuente de la aplicacin SAP. q 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
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 (como ha sucedido en tantas ocasiones en el sistema R/2 que no acepta este concepto). 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>. Aunque la sentencia no esta limitada al uso interno de SAP (como sucede con otras sentencias) realmente no veo la necesidad de utilizar esta sentencia. Si necesitamos crear un mdulo de funcin os recomiendo que utilicis CALL FUNCTION.
CALL DIALOG
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. q 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.
q
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. q La clusula MODE tiene el mismo significado que en la sentencia CALL TRANSACTION USING.
q
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:
1. CALL_DIALOG_NOT_FOUND -> El mdulo de dilogo no existe. 2. CALL_DIALOG_WRONG_TDCT_MODE -> El mdulo de dilogo contiene errores. 3. CALL_DIALOG_NAME_TOO_LONG -> El nombre de algn parmetro es ms largo que el
permitido.
CALL FUNCTION
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.
q
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:
q q
CALL_FUNCTION_NOT_FOUND -> Mdulo de funcin desconocido. CALL_FUNCTION_NO_VB -> Slo mdulos de funcin de actualizacin pueden ser llamados desde la tarea de actualizacin. CALL_FUNCTION_NO_ACTIVE -> Mdulo de funcin creado pero no activo. CALL_FUNCTION_PARM_MISSING -> El mdulo de funcin espera un parmetro que no ha sido utilizado en la llamada. CALL_FUNCTION_CONFLICT_LENG -> Parmetro con longitud errnea. CALL_FUNCTION_CONFLICT_TYPE -> Parmetro con tipo errneo. CALL_FUNCTION_CONFILCT_GEN_TYPE -> El tipo de parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. CALL_FUNCTION_WRONG_ALIGNMENT -> El parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. CALL_FUNCTION_BASE_LITL -> Se ha pasado un literal en un parmetro estructurado.
q q
q q q
CALL FUNCTION <funcin> STARTING NEW TASK <tarea> [ DESTINATION <destino> ] [ DESTINATION IN GROUP { <grupo> | DEFAULT } ] [ PERFORMING <rutina> ON END OF TASK ] [ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan>
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_function.htm (1 de 3) [09/11/2000 11:22:50]
CALL FUNCTION
[ EXCEPTIONS <p1> = <e1> MESSAGE <m1> ... <pn> = <en> MESSAGE <mm> ].
El sistema arranca el mdulo de funcin asncronamente en un nuevo modo. En contraste con el formato bsico, esta variante hace que el sistema continu con la ejecucin del programa aunque el mdulo de funcin no haya terminado. Las clusula opcionales son las siguientes:
q q q q q q
Con la clusula DESTINATION el mdulo de funcin se ejecuta externamente como una "Remote Function Call" (RFC). <destino> puede ser una variable o un literal. Con la clusula DESTINATION IN GROUP el mdulo de funcin se ejecuta en todos los servidores definidos en un grupo. Los mdulos de funcin se ejecutarn en paralelo. La clusula PERFORMING nos permite controlar los errores que se puedan producir en la ejecucin del mdulo de funcin. <rutina> determina la rutina a ejecutar. La clusula EXPORTING se utiliza para pasar parmetros al mdulo de funcin, de la misma forma que en la variante 1. La clusula TABLES se utiliza para pasar tablas internas al mdulo de funcin, de la misma forma que en la variante 1. La clusula EXCEPTIONS nos permite manejar dos excepciones del sistema (en ambos casos se puede utilizar la opcin MESSAGE para activar un mensaje):
1. SYSTEM_FAILURE -> Si el sistema destino no funciona. 2. COMMUNICATION_FAILURE -> Si no se puede conectarnos o comunicarnos con el sistema destino.
Para poder utilizar esta variante de la sentencia CALL FUNCTION, tanto el sistema servidor como el sistema cliente deben estar en versin 3.0 o superior.
CALL FUNCTION <funcin> IN UPDATE TASK [ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan>
Con esta variante el mdulo de funcin se ejecutar en la tarea de actualizacin. La ejecucin no es inmediata, los parmetros traspasados con las clusulas EXPORTING y TABLES se almacenan en la base de datos. En el siguiente COMMIT WORK causa que el mdulo de funcin se ejecute en la tarea de actualizacin. Las clusulas EXPORTING y TABLES tienen el mismo significado que en la variante 1.
CALL FUNCTION <funcin> DESTINATION <destino> [ 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>] ].
El mdulo de funcin se ejcuta desde una fuente externa, a travs de una llamada "Remote Function Call" (RFC). <destino> puede ser un literal o una variable. Dependiendo del destino especificado el mdulo de funcin podr ser ejecutado en un sistema R/3 o un sistema R/2. <destino> es una clave que permite al sistema saber qu sistema remoto estamos asignado. Los destinos se definen en la transaccin SM59. La forma de llegar a travs de los mens es la siguiente: (Pantalla inicial de SAP) -> Herramientas -> Gestin; Gestin -> Red Destinos RFC. Hay ciertos destinos que tienen un significado especial: NONE -> Este destino apunta al propio sistema donde se realiza la llamada al mdulo de funcin. BACK -> Este destino fuerza a que el programa que realiza la llamada al mdulo de funcin tenga que ser llamado desde un sistema diferente. Si el programa se ejecuta desde el mismo sistema se produce la excepcin COMMUNICATION_FAILURE. Las clusulas opcionales tienen el mismo significado que el de la variante 1 (llamada bsica).
CALL FUNCTION <funcin> IN BACKGROUND TASK [ AS SEPARATE UNIT ] [ DESTINATION <destino> ] [ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan>
Llamada al mdulo de funcin de modo asncrono. Con la clusula AS SEPARATE UNIT el mdulo de funcin se ejecuta en una nueva LUW. El resto de las clusulas ya han sido comentadas anteriormente.
CALL FUNCTION
CALL METHOD
CALL METHOD
Definicin Llama a un mtodo de un objeto externo. Utilizado para la programa 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. q En <f>, si se especifica, el sistema guarda el cdigo de retorno de la sentencia. q Con la clusula EXPORTING se especifican parmetros a pasar al mtodo. q Con la clusula NO FLUSH continu con el proceso aunque la siguiente sentencia no sea una sentencia OLE.
CALL SCREEN
CALL SCREEN
Definicin Se utiliza para llamar a una dynpro. Sintaxis:
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:
CALL SUBSCREEN
CALL SUBSCREEN
Definicin Una subscreen es una pantalla independiente que se muestra en un rea de otra pantalla principal. Sintaxis:
CALL TRANSACTION
CALL TRANSACTION
Definicin La sentencia CALL TRANSACTION permite ejecutar una transaccin. Sintaxis:
Esta sentencia tiene una variante con la clusula USING que cambia totalmente el significado de la sentencia. Se utiliza como mtodo de batch-input.
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: q SY-MSGID -> Identificador de mensaje (REPORT ..... MESSAGE-ID xx).
q q q q q q
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): 1. A -> Se muestran todas las pantallas.
2. E -> Se muestran slo las pantallas con error. 3. N -> No se muestra ninguna pantalla.
Con la clusula UPDATE especificamos el modo de actualizacin de la base de datos. <actualizacin> puede tener uno de los siguientes valores (el valor por defecto es A): 1. A -> Modo asncrono.
CALL TRANSACTION
se generan en la transaccin. La tabla interna debe tener la estructura BDCMSGCOLL. Los errores que se pueden producir en tiempo de ejecucin son los siguientes: 1. CALL_TRANSACTION_NOT_FOUND -> Transaccin desconocida. 2. CALL_TRANSACTION_IS_MENU -> La transaccin especificada es un men. 3. CALL_TRANSACTION_USING_NESTED -> Se ha utilizado una llamada recursiva invlida para esta sentencia.
CASE .. ENDCASE
CASE .. ENDCASE
Definicin Para ejecutar diferentes bloques de sentencias en funcin del contenido de una variable, se utiliza la sentencia CASE. Sintaxis:
CASE <c>. WHEN <c1> [ OR <c11> ]. [ <bloque-sentencias> [ WHEN <c2> [ OR <C21> ]. [ <bloque-sentencias> [ WHEN OTHERS. ] [ <bloque-sentencias> ENDCASE.
q q q
] ] ] ]
El sistema ejecuta el bloque de sentencias correspodiente a la clusula WHEN que cumpla que el valor de <c> coincida con el valor de <cn>, continuando el proceso a continuacin de la clusula ENDCASE. Con la clusula OR, se puede indicar ms de un campo para realizar la comparacin. El bloque de sentencias correspondiente a la clusula WHEN OTHERS se procesar si ninguna de las clusulas WHEN se cumple. La clusula ENDCASE es obligatoria.
Ejemplo:
DATA: ONE TYPE I VALUE 1, THREE TYPE P VALUE 3. DO 5 TIMES. CASE SY-INDEX. WHEN ONE. WRITE / 'Este es'. WHEN 2. WRITE 'un'. WHEN THREE. WRITE 'buen'. WRITE 'ejmeplo'. WHEN OTHERS. WRITE '!'. ENDCASE. ENDDO.
Salida: " Este es un buen ejemplo ! ! " Vease tambin: IF, ELSEIF.
CHAIN
CHAIN
Definicin La sentencia CHAIN permite agrupar campos de pantalla. Sintaxis:
CHECK
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:
CLEAR
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
Vease tambin: REFRESH.
CLOSE CURSOR
CLOSE CURSOR
Definicin Sentencia utilizada para cerrar un cursor de una tabla de la base de datos. Sintaxis:
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
CLOSE DATASET
Definicin Esta sentencia cierra un fichero del servidor de aplicacin. Sintaxis:
CNT
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. Vease tambin: SUM.
COLLECT
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:
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 fecto 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:
COMMIT WORK
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:
CREATE OBJECT
CREATE OBJECT
Definicin Genera un objeto de una clase determinada. Sentencia utilizada en los programa OLE. Sintaxis:
COMMUNICATION
COMMUNICATION
Definicin Permite realizar comunicacin directa "programa-a-programa" (CPI-C) definida por IBM en el contexto de los estndares SAA. Sintaxis:
COMMUNICATION RECEIVE ID <id> BUFFER <f> DATAINFO <d> STATUSINFO <s> [ RETURNCODE <rc> ] [ LENGTH <longitud> ] [ RECEIVED <m> ] [ HOLD ].
Recibe datos de otro programa sobre el campo <f>. En el campo <rc> se actualiza con el cdigo de retorno de la sentencia. La clusula LENGTH se utiliza para especificar la longitud del campo <f>. Despus de la llamada el campo <m> contiene el nmero de bytes recibidos. Con la clusula HOLD el proceso espera la recepcin completa de los datos.
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
COMMUNICATION INIT DESTINATION DEST ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK. WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT. ENDIF.
Ejemplo 2:
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.
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:
COMMUNICATION
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 CPIC_RC. IF CPIC_RC NE CM_OK. WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT. ENDIF. RECORD = 'Prueba de mensaje'. 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.
Ejemplo 5:
RETURNCODE
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. INCLUDE RSCPICDF. COMMUNICATION ACCEPT ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK. EXIT. ENDIF. COMMUNICATION RECEIVE ID CONVID BUFFER RECORD STATUSINFO SINFO
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (3 de 7) [09/11/2000 11:23:55]
COMMUNICATION
TYPES: CONVERSATION_ID(8) TYPE C, DESTINATION(8) TYPE C, RETURN_CODE LIKE SY-SUBRC, C_INFO(4) TYPE X. DATA: CONVID TYPE CONVERSATION_ID, CPIC_RC TYPE RETURN_CODE, DEST TYPE DESTINATION VALUE 'C00'. DATA: RECORD(80) TYPE C, LENG TYPE I VALUE 20. 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'. 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.
Ejemplo 7:
COMMUNICATION
PROGRAM ZCPICTST. TYPES: CONVERSATION_ID(8) TYPE C, DESTINATION(8) TYPE C, RETURN_CODE LIKE SY-SUBRC, C_INFO(4) TYPE X. DATA: BEGIN OF CONNECT_STRING, REQID(4) VALUE 'CONN', TYPE(4) VALUE 'CPIC', MODE(4) VALUE '1 ', MANDT(3) VALUE '000', NAME(12) VALUE 'CPICUSER', PASSW(8) VALUE 'CPIC', LANGU(1) VALUE 'D', KORRV(1), REPORT(8) VALUE 'ZCPICTST', FORM(30) VALUE 'CPIC_EXAMPLE', END OF CONNECT_STRING. DATA: CONVID TYPE CONVERSATION_ID, DEST TYPE DESTINATION VALUE 'R2-SYST', CPIC_RC TYPE RETURN_CODE, DINFO TYPE C_INFO, SINFO TYPE C_INFO. DATA: RECORD(80) TYPE C, LENG TYPE I VALUE 20. 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
COMMUNICATION
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
COMMUNICATION
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
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:
En lugar de utilizar los operadores bsicos +, -, * y / se puede utilizar las sentencias ADD, SUBTRACT, MULTIPLY y DIVIDE respectivamente. Estas sentencias ya las veremos en posteriores apartados. 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:
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 Significado 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 Ejemplo resultado = ABS(campo ). resultado = SIGN(campo ).
resultado = CEIL(campo ).
COMPUTE
Valor entero superior al argumento Parte entera del argumento Parte fraccionaria del argumento
Funciones slo para el tipo F: Operador ACOS ASIN ATAN COS SIN TAN COSH SINH TANH EXP LOG LOG10 SQRT Significado Arcocoseno Arcoseno Arcotangente Coseno Seno Tangente Coseno hiperblico Seno hiperblico Tangente hiperblico Exponenciacin Logaritmo natural (base e) Logaritmo base 10 Raz cuadrada Ejemplo 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 ). resultado = LOG(campo1 ). 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: Operador STRLEN Significado Determina la longitud hasta el ltimo carcter distinto del espacio en blanco. Ejemplo resultado = STRLEN(campo ).
CONCATENATE
CONCATENATE
Definicin Se utiliza para concatenar varios campos alfanumricos en uso solo. Sintaxis:
VALUE 'Ivan', VALUE ' Rodrigo', VALUE ' Baos', TWO THREE INTO NAME.
DATA: ONE(10) VALUE 'Ivan', TWO(3) VALUE 'Rodrigo', THREE(10) VALUE 'Baos', NAME(20), SEPARATOR(4) VALUE 'GAUSS'. CONCATENATE SPACE ONE TWO THREE INTO NAME SEPARATED BY SPACE.
La variable NAME valdra: IvanGAUSSRodrigoGAUS y SY-SUBRC valdra 4. Vease tambin: SPLIT, SHIFT, REPLACE, TRANSLATE, CONDENSE.
CONDENSE
CONDENSE
Definicin Para borrar espacios en blanco superfluos en campos alfanumricos. Sintaxis:
DATA: BEGIN OF NAME, TITLE(8), VALUE 'Dr.', FIRST_NAME(10), VALUE 'Michael', SURNAME(10), VALUE 'Hofmann', END OF NAME. CONDENSE NAME. WRITE NAME.
La salida en pantalla sera: Dr. Michael Hofmann Ejemplo 2:
DATA: BEGIN OF NAME, TITLE(8), VALUE 'Dr.', FIRST_NAME(10), VALUE 'Michael', SURNAME(10), VALUE 'Hofmann', END OF NAME. CONDENSE NAME NO-GAPS.
La variable NAME valdra: Dr.MichaelHofmann Vease tambin: SPLIT, SHIFT, REPLACE, TRANSLATE, CONCATENATE.
CONSTANTS
CONSTANTS
Definicin Declaracin de constantes, es decir, variables o registros cuyos valores no pueden ser modificados durante la ejecucin del programa. Sintaxis:
CONSTANTS CONSTANTS
CONSTANTS: BEGIN OF CONST_REC, C(2) TYPE I VALUE N(2) TYPE N VALUE X TYPE X VALUE I TYPE I VALUE P TYPE P VALUE F TYPE F VALUE D TYPE D VALUE T TYPE T VALUE END OF CONST_REC.
CONTINUE
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 continu con el siguiente paso: Ejemplo:
DO 100 TIMES. IF SY-INDEX >= 10 AND SY-INDEX <= 20. CONTINUE. ENDIF. ... ENDDO.
Vease tambin: CHECK, EXIT.
CONTROLS
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:
CONVERT DATE
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. Vease tambin: CONVERT TEXT.
CONVERT TEXT
CONVERT TEXT
Definicin Se utiliza para convertir un campo alfanumrico en un formato vlido para la ordenacin. Sintaxis:
DATA
DATA
Definicin Declaracin de objetos de datos. Sintaxis:
No utilizar el "guin" ya que podramos confundir la variable con un field-string. Utilizar el "gui bajo" para nombres especiales. No utilizar los caracteres especiales. Utilizar siempre una letra como primer carcter del nombre.
Con la opcin <tipo> se especifica el tipo de variable. Tenemos dos opciones: 1. TYPE <tipo> 2. LIKE <objeto-dato> q Con la clusula TYPE se puede utilizar cualquier tipo de datos, predefinido o definido por el usuario. Para algunos tipos de datos (C, P, N, y X) se puede definir la longitud con la clusula <longitud>. Si no se especifica longitud, estos tipos tienen una longitud por defecto. Si no se especifica la clusula <tipo> el sistema utiliza el tipo alfanumrico C.
q
Con la clusula LIKE asignamos el tipo de dato de forma indirecta, con el tipo de dato del objeto de dato especificado. El objeto de dato debe estar ya declarado, y puede ser de cualquier tipo. A menudo se utiliza esta clusula para crear variables que almacenarn datos de tablas externas. Si se modifican las caractersticas del campos de la tabla externa, de forma automtica, se cambian los atributos de la variable. Una variante para las clusulas TYPE y LIKE es la siguiente: TYPE LINE OF <tabla-intera> y LIKE LINE OF <tabla-interna>. Con esta variante creamos un objeto de dato con la estructura de lnea de la tabla interna.
Con la opcin <calor> se asigna un valor a la variable, distinto al valor inicial. El formato es el siguiente: VALUE <valor>. <valor> puede ser un literal, una constante o IS INITIAL. Con la opcin <decimales> se puede especificar el nmero de decimales para los campos de tipo P. El formato es el siguiente: DECIMALS <num>, siendo <num> el nmero de dgitos despus del punto decimal. El nmero mximo de decimales es de 14.
Si utilizamos la clusula WITH HEADER LINE la tabla interna se crea con el rea de trabajo <tabla>. El rea de trabajo y la tabla interna tienen el mismo nombre. En funcin de la sentencia que estemos utilizando, el sistema sabe si queremos emplear el rea de trabajo o la tabla.
DATA
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 field-string, 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
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.
Vease tambin: FORM, FUNCTION.
DELETE
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.
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.
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.
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. 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. 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
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 continu 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. SY-DBCNT 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'.
Vease tambin: MODIFY, APPEND, INSERT.
DELETE DATASET
DELETE DATASET
Definicin Para borrar ficheros del servidor de aplicacin se utiliza esta sentencia. Sintaxis:
DELETE DYNPRO
DELETE DYNPRO
Definicin Se utiliza para borrar un dynpro de la base de datos. Sintaxis:
Si el sistema puede borrar el cluster, SY-SUBRC vale 0, en caso contrario, SY-SUBRC vale 4.
Ejemplo:
TABLES INDX. DATA: BEGIN OF TAB OCCURS 1, CONT(30), END OF TAB. DATA: FLD(30) TYPE C. ... EXPORT TAB FLD TO DATABASE INDX(AR) ID 'TEST'.
Vase tambin: EXPORT TO DATABASE.
DELETE REPORT
DELETE REPORT
Definicin Borra ciertos objetos parciales de un programa. Sintaxis:
DELETE TEXTPOOL
DELETE TEXTPOOL
Definicin Sentencia utilizada para borrar elementos de texto de la base de datos. Sintaxis:
DESCRIBE DISTANCE
DESCRIBE DISTANCE
Definicin Sentencia utilizada para borrar elementos de texto de la base de datos. Sintaxis:
DESCRIBE FIELD
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> ].
q q
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.
q q q
Ejemplo 1:
DESCRIBE LIST
DESCRIBE LIST
Definicin Recupera cierta informacin sobre las lneas o pginas de un listado. Sintaxis:
Clusula LINE-COUNT. El sistema actualiza la variable <filas> con el nmero de filas de la pgina <pgina>. Clusula LINES. El sistema actualiza la variable <lneas> con el nmero de lneas mostradas de la pgina <pgina>. Clsula FIRST-LINE. El sistema actualiza la variable <lin1> con el valor absoluto de la primera lnea de la pgina <pgina>. Clusula TOP-LINES. El sistema actualiza la variable <top> con el nmero de lneas de cabecera de la pgina <pgina>. 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
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:
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
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. Vase tambin: FORMAT.
DIVIDE
DIVIDE
Definicin Operacin matemtica para dividir dos campos. Sintaxis:
DIVIDE-CORRESPONDING
DIVIDE-CORRESPONDING
Definicin Variante de DIVIDE que slo dividir aquellos componentes que se llamen igual. Sintaxis:
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'.
Vase tambin: COMPUTE, DIVIDE.
DO .. ENDDO
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. q 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.
q
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. WRITE: / 'SY-INDEX - Inicio:', (3) SY-INDEX. IF SY-INDEX = 10. EXIT. ENDIF. WRITE: 'Fin:', (3) SY-INDEX. ENDDO.
Vase tambin: WHILE, STOP, EXIT, REJECT.
END-OF-PAGE
END-OF-PAGE
Definicin Este evento define un bloque de proceso que se activa cuando el sistema detecta que hemos escrito en la ltima lnea de la pgina actual. Sintaxis:
END-OF-PAGE.
El nmero de lneas por pgina se define en la sentencia REPORT. Este evento se utiliza para componer pies de pgina. Vase tambin: TOP-OF-PAGE.
END-OF-SELECTION
END-OF-SELECTION
Definicin Este evento define un bloque de proceso que se ejecuta despus de que se hayan procesado los eventos GET, es decir, despus de haber sido ledas todas las tablas especificadas de la base de datos lgica asociada al programa. Sintaxis:
END-OF-SELECTION.
Este evento puede ser utilizado, por ejemplo, para escribir la informacin que hemos ledo de las tablas de diccionario y hemos grabado en tablas internas. Vase tambin: START-OF-SELECTION.
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.
Vase tambin: SELECT, INSERT, UPDATE, MODIFY.
EXIT
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). Vase tambin: STOP, CHECK.
EXPORT
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:
EXPORT DYNPRO
EXPORT DYNPRO
Definicin Sentencia que se utiliza para exportar un dynpro a 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:
EXPORT TO DATABASE
EXPORT TO DATABASE
Definicin Para almacenar cluster en un fichero cluster de la base de datos se utiliza esta sentencia. Sintaxis:
EXPORT <campo11> [ FROM <campo12> ] <campo21> [ FROM <campo22>] ... TO DATABASE <tabla>(<rea>) [ CLIENT <mandante> ] ID <clave>.
Almacena los objetos de datos especificados (<campo11>, <campo21>, ..) bajo un cluster con clave <clave> en el fichero <tabla>, en el rea <rea>. <rea> es un campo de dos posiciones que el sistema almacenar en el campo RELID. <tabla> indentifica el fichero cluster. La mxima longitud para <clave> est limitada por la longitud del campo clave del fichero cluster utilizado, por ejemplo, para el fichero INDX, esta longitud es de 22 caracteres.
q
Sin la clusula CLIENT, el sistema rellena de forma automtica el campo MANDT con el mandante de conexin. Con la clusula ser el valor <mandante> el que actualice el campo MANDT. La clusula CLIENT debe especificarse slo a continuacin de la especificacin del fichero y rea. Los campos de usuario definidos en el fichero sern transportados al fichero de forma automtica, pero deben ser rellenados previamente. Esta sentencia siempre sobreescribe cualquier cluster existente con la misma clave y rea para un mismo mandante.
Si utilizamos tablas internas con cabecera de lnea, ser el contenido de la tabla y no la cabecera de la tabla la que se guarde en el fichero cluster. La cabecera de lnea en ningn caso se guarda en el fichero cluster. Ejemplo:
TABLES INDX. DATA: INDXKEY LIKE INDX-SRTFD VALUE 'VALORCLAVE', F1(4), F2 TYPE P, BEGIN OF ITAB3 OCCURS 2, CONT(4), END OF ITAB3. * Antes de exportar los campos son * rellenados INDX-AEDAT = SY-DATUM. INDX-USERA = SY-UNAME. * Exportamos a la base de datos. EXPORT F1 F2 ITAB3 TO DATABASE INDX(ST) ID INDXKEY.
Vase tambin: IMPORT TO DATABASE.
EXPORT TO DATASET
EXPORT TO DATASET
Definicin Sirve para exportar objetos a un ficheros de datos que esta en el servidor de aplicacin. Esta sentencia es obsoleta y en su lugar se utiliza la sentencia TRANSFER Sintaxis:
EXPORT TO MEMORY
EXPORT TO MEMORY
Definicin Se utiliza para guardar objetos de un programa ABAP/4 a la memoria ABAP/4. Sintaxis:
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. q 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>.
q
La clave puede tener hasta 32 caracteres e indentifica el cluster en la memoria ABAP/4. La sentencia EXPORT 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. Vase tambin: IMPORT FROM MEMORY.
EXPORT <objeto1> [ FROM <g1>]... <objeton> [ FROM <gn>] TO SHARED BUFFER <tabla>(<rea>) ID <clave> [ CLIENT <mandante>]
Exporta los objetos <objeto1> ... <objeton> en forma de cluster al buffer. La tabla <tabla> debe tener estructura estndar. Para identificar el rea se utiliza <rea>. Con <clave> se especifica la clave del cluster de datos. La clusula FROM sirve para especificar el rea de trabajo de donde debe obtener los datos la sentencia. Y la clusula CLIENTE sirve para indicar el mandante. 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. Vase tambin: IMPORT SHARED BUFFER.
EXTRACT
EXTRACT
Definicin Escribe un field-group sobre un extracto de datos. Sintaxis:
EXTRACT <field-group>.
Escribe todos los campos del field-group en un registro de un extracto de datos. 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: q EXTRACT_AFTER_SORT/LOOP -> Se ha realizado un EXTRACT despus de la sentencia LOOP o SORT.
q q q
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.
FETCH
FETCH
Definicin Para obtener la siguiente lnea del resultado de la orden OPEN CURSOR utilizaremos la sentencia FETCH. Sintaxis:
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.
Vase tambin: OPEN CURSOR, CLOSE CURSOR.
FIELD
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:
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 GROUPS
FIELD GROUPS
Definicin Se utiliza para declarar un extracto de datos, tambin llamado grupo de campos o field-groups. Sintaxis:
FIELD-GROUPS <nombre>.
Un field-group se utiliza para agrupar un conjunto de campo con el mismo nombre. El nombre HEADER es especial, los campos que se definan en ese field-groups servirn como criterio de ordenacin en la sentencia SORT. Ejemplo:
FIELD-SYMBOLS
FIELD-SYMBOLS
Definicin Declara un field-symbol. Las asignacin se realiza con la sentencia ASSIGN en tiempo de ejecucin. Sintaxis:
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.
Vase tambin: ASSIGN, DATA.
FIELDS
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
FORM .. ENDFORM
Definicin Esta sentencia permite definir subrutinas. Sintaxis:
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.
FORM .. ENDFORM
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 NUMBER_2 TYPE I TEXT_1(10) TEXT_2(10) PERFORM CONFUSE USING
VALUE 1, VALUE 2, VALUE 'one', VALUE 'two'. 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:
= 5 = 7 'two' 'three'
FORMAT
FORMAT
Definicin Se utiliza para dar formato a las sentencias de escritura en el dispositivo de salida. Sintaxis:
FORMAT RESET.
Con esta variante ponemos todas las opciones de formato a sus valores por defecto.
ON | OFF ] INVERSE [
ON | OFF ].
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
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/format.htm (1 de 2) [09/11/2000 11:24:32]
FORMAT
FREE
FREE
Definicin Se utiliza para liberar el espacio de memoria que se reserva despus de utilizar las sentencias REFRESH o CLEAR . Sintaxis:
FREE <tabla>.
Vase tambin: CLEAR, REFRESH.
FREE MEMORY
FREE MEMORY
Definicin Se utiliza para borrar cluster de la memoria ABAP/4. Sintaxis:
FREE OBJECT
FREE OBJECT
Definicin Libera el espacio utilizado en memoria por un objeto OLE. Sintaxis:
FUNCTION .. ENDFUNCTION
FUNCTION .. ENDFUNCTION
Definicin Define un mdulo de funcin. Sintaxis:
FUNCTION-POOL
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. Vase tambin: CALL FUNCTION, REPORT.
GENERATE DYNPRO
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: q 0 -> No existen errores y la dynpro se ha generado correctamente.
q q
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: q OFFSET -> Si ocurre un error el campo <c4> contiene la posicin de la palabra incorrecta. q 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. Vase tambin: IMPORT DYNPRO, EXPORT DYNPRO, DELETE DYNPRO.
GENERATE REPORT
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: q 0 -> El programa se genera correctamente.
q q q
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: q MESAGE -> Cuando ocurre un error de sintaxis el error se almacena en la variable <c1>.
q q q q q q q
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. Vase tambin: SYNTAX-CHECK.
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: q 0 -> Generacin correcta.
q q
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. Vase tambin: SYNTAX-CHECK.
GET
GET
Definicin Identifica un bucle de lectura. Sintaxis:
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.
Vase tambin: PUT.
GET CURSOR
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: q OFFSET -> Contiene la posicin relativa del cursor sobre el campo. La primera posicin tiene el offset 0.
q q q
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: q OFFSET -> Contiene la posicin del cursor en la lnea seleccionada.
q q
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.
Vase tambin: SET CURSOR.
GET PARAMETER
GET PARAMETER
Definicin Lee el valor del parmetro actualizando el contenido del campo. Sintaxis:
GET PROPERTY
GET PROPERTY
Definicin Recupera las propiedades de un objeto OLE. Sintaxis:
INCLUDE OLE2INCL. DATA: EXCEL TYPE OLE2_OBJECT, VISIBLE TYPE I. CREATE OBJECT EXCEL 'Excel.Application'. GET PROPERTY OF EXCEL 'Visible' = VISIBLE.
Vase tambin: SET PROPERTY, CALL METHOD, CREATE OBJECT, FREE OBJECT.
DATA: T1 TYPE I, T2 TYPE I, TMIN TYPE I. DATA: F1(4000), F2 LIKE F1. TMIN = 1000000. DO 10 TIMES. GET RUN TIME FIELD T1. MOVE F1 TO F2. "Medicin la sentencia MOVE GET RUN TIME FIELD T2. T2 = T2 - T1. IF T2 < TMIN. TMIN = T2. ENDIF. ENDDO. WRITE: 'Mover 4000 bytes toma', TMIN, 'microsegundos'.
GET TIME
GET TIME
Definicin Se utiliza para obtener la hora del sistema. Sintaxis:
HIDE
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. Vase tambin: AT LINE SELECTION, AT PFx, AT USER-COMMAND, READ LINE, WRITE.
IF .. ENDIF
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. Las clusulas IF y ENDIF son obligatorias. Se puede anidar tantas sentencias IF como queramos, y dentro del bloque se sentencias no puede haber ninguna sentencia de evento (START-OF-SELECTION). Vase tambin: CHECK, ELSEIF.
IMPORT DIRECTORY INTO <directorio> FROM DATABASE <tabla>(<rea>) [ CLIENT <mandante> ] ID <clave>.
Esta sentencia crea una lista con los objetos de datos contenidos en todos los clusters existentes en el fichero <tabla>, para el rea <rea>. Esta informacin se almacena en la tabla interna <directorio>. La tabla <tabla> se debe declarar con la sentencia TABLES.
Esta sentencia tambin lee informacin contenida en los campos de usuario existentes en el fichero cluster. Si la tabla directorio puede ser creada SY-SUBRC valdr 0, en caso contrario 4. La tabla interna debe tener la estructura que la tabla de diccionario CDIR. TABLES INDX. DATA: INDXKEY LIKE INDX-SRTFD, F1(4), F2 TYPE P, BEGIN OF TAB3 OCCURS 10, CONT(4), END OF TAB3, BEGIN OF DIRTAB OCCURS 10. INCLUDE STRUCTURE CDIR. DATA END OF DIRTAB. INDXKEY = 'INDXKEY'. EXPORT F1 F2 TAB3 TO DATABASE INDX(ST) ID INDXKEY. " TAB3 tiene 17 entradas ... IMPORT DIRECTORY INTO DIRTAB FROM DATABASE INDX(ST) ID INDXKEY. La tabla DIRTAB contendr lo siguiente: NAME OTYPE FTYPE TFILL FLENG ----------------------------------F1 F C 0 4 F2 F P 0 8 TAB3 T C 17 4
Vase tambin: EXPORT, INCLUDE STRUCTURE.
IMPORT DYNPRO
IMPORT DYNPRO
Definicin Se utiliza para importar un dynpro. Sintaxis:
IMPORT <campo11> [ TO <campo12> ] <campo21> [ TO <campo22> ] FROM DATABASE ... <tabla>(<rea>) [ CLIENT <mandante> ] {ID <clave> | MAJOR-ID <mayor> [ MINOR-ID <menor> ] }.
Lee los objetos de datos especificados en la lista <campo11>, <campo21>, ... de un cluster de datos almacenados en fichero cluster <tabla> (esta tabla tiene que estar declaradas en la sentencia TABLES). q Sin la clusula TO el objeto de datos <campo11> de la base de datos se asigna sobre el objeto de datos con el mismo nombre definido en el programa. Con la clusula TO el objeto de datos <campo11> ledo de la base de datos se almacena sobre el campo <campo12> declarado en el programa.
q q q
<rea> es un campo o literal alfanumrico de dos posiciones que identifica el rea del fichero cluster. Recordemos que el rea se almacena en el campo RELID del fichero cluster. <clave> identifica la clave del fichero cluster y tendr una longitud mxima del fichero. Por ejemplo, para el fichero INDX, la longitud mxima es de 22 caracteres. Se puede utiliza la clusula MAJOR-ID en vez de la clusula ID. De esta forma el cluster seleccionado ser el primero en que coincida parte de la clave. del cluster con <mayor>. Si aparte especificamos la opcin MINOR-ID, el cluster seleccionado ser el que en la segunda parte del nombre del cluster (la primera parte es la de la clusula MAJOR-ID) sea mayor o igual a <menor>.
No es necesario leer todos los objetos almacenados en el cluster slo habr que especificar en la lista de objetos aquellos que deseemos leer. Si no existe cluster para un fichero, rea y clave especificado la variable SY-SUBRC valdr 4 en caso contrario valdr 0. Si algn objeto de dato especificado en la lista no existe en el cluster, ste permanece sin cambios. 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. Vase tambin: EXPORT TO DATABASE.
INCLUDE
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
INCLUDE STRUCTURE
Definicin La sentencia INCLUDE STRUCTURE se utiliza para incluir estructuras del diccionario de datos en nuestros programas. Sintaxis:
DATA: BEGIN OF rec. INCLUDE STRUCTURE subRec. DATA: END OF rec. Es equivalente: DATA rec LIKE subRec.
Vase tambin: INCLUDE TYPE.
INCLUDE TYPE
INCLUDE TYPE
Definicin Se utiliza para incluir en una definicin un tipo ya definido. Sintaxis:
INFOTYPES
INFOTYPES
Definicin Declara un objeto de tipo infotipo, los infotipos son exclusivos del mdulo de HR (Recursos humanos). Sintaxis:
INFOTYPE <nmero> [ NAME <nombre> [ OCCURS <tabla> ] ] [ MODE <n> ] [ VALID FROM <inicio> TO <final> ].
<nmero> determina el nmero de infotipo, con la clusula NAME declaramos una tabla interna con la misma estructura que el infotipo. La clusula OCCURS tiene el mismo significado que el de la sentencia DATA. La clusula VALID slo se puede utilizar junto a la sentencia GET con la tabla PERNR. Recupera slo aquellos registros del infotipo vlidos entre las fecha <inicio> y <final>. Ejemplo:
INITIALIZATION
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.
Vase tambin: AT SELECTION-SCREEN, START-OF-SELECTION.
INSERT
INSERT
Definicin Se utiliza para insertar lneas en una tabla interna antes de una posicin determinada. Sintaxis:
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> ]
q
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.
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> [ ACCEPTING DUPLICATE KEYS].
En esta variante se puede insertar ms de una lnea en la tabla de diccionario. La estructura de la tabla interna debe ser la misma que la estructura de la tabla en la que se van a insertar lneas. Las lneas sern ejecutadas en una sola operacin. Si la sentencia se ejecuta correctamente SY-SUBRC valdr 0, en caso contrario valdr 4. Si alguna de las lneas de la tabla interna no puede ser insertada, el sistema activa un error en tiempo de ejecucin (suele ser por duplicacin de claves). Para evitar este error en tiempo de ejecucin, se utiliza la clusula ACCEPTING DUPLICATE KEYS. Con estos forzamos al sistema a saltar las lneas que no puede insertar. La variable SY-DBCNT tendremos las lneas insertadas y la variable SY-SUBRC valdr 4 cuando se salte alguna lnea. Es ms eficiente utilizar esta ltima sentencia para insertar un conjunto de lneas, que utilizar las otras variantes que las insertara de en una en una. Ejemplo 1:
DATA: VALUE TYPE I, ITAB TYPE I OCCURS 100 WITH HEADER LINE.
INSERT
ITAB = 5. VALUE = 36. INSERT ITAB INDEX 1. INSERT VALUE INTO ITAB INDEX 2. INSERT INITIAL LINE INTO ITAB INDEX 2.
Ejemplo 2:
TYPES NAME(10) TYPE C. DATA: NAME_TAB_1 TYPE NAME OCCURS 5, NAME_TAB_2 TYPE NAME OCCURS 5. APPEND 'Alice' TO NAME_TAB_1. APPEND 'Martha' TO NAME_TAB_1. APPEND 'Ruth' TO NAME_TAB_1. APPEND 'Harry' TO NAME_TAB_2. APPEND 'Walter' TO NAME_TAB_2. INSERT LINES OF NAME_TAB_1 FROM 2 INTO NAME_TAB_2 INDEX 2.
Vase tambin: APPEND, COLLECT, MODIFY, LOOP, READ TABLE.
INSERT .. INTO
INSERT .. INTO
Definicin Declara los campos que formaran parte de de una agrupacin de campos o field-group. Sintaxis:
INSERT .. REPORT
INSERT REPORT
Definicin Se utiliza para insertar un programa en el sistema. Sintaxis:
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
INSERT TEXTPOOL
Definicin Se utiliza para aadir elementos de texto en la base de datos. Sintaxis:
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.
Vase tambin: DELETE REPORT, READ REPORT, GENERATE REPORT.
LEAVE
LEAVE
Definicin Abandona un modo CALL. Sintaxis:
LEAVE.
Abandona un modo introducido con las sentencias CALL TRANSACTION, CALL DIALOG, SUBMIT ... AND RETURN. El control vuelve al punto donde se realiz la llamada. Vase tambin: LEAVE PROGRAM, LEAVE SCREEN, LEAVE LIST-PROCESSING.
LEAVE PROGRAM
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. Vase tambin: LEAVE, LEAVE SCREEN, LEAVE LIST-PROCESSING.
LEAVE SCREEN
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. Vase tambin: LEAVE TO SCREEN, SET SCREEN.
LEAVE LIST-PROCESSING
LEAVE TO LIST-PROCESSING
Definicin Sentencia utilizada para abandonar el modo de ejecucin de listado para volver al modo de dilogo. Sintaxis:
LEAVE TO SCREEN
LEAVE TO SCREEN
Definicin Permite abandonar la dynpro actual para pasar a otra dynpro. Sintaxis:
LEAVE TO TRANSACTION
LEAVE TO TRANSACTION
Definicin Permite abandonar la dynpro actual para pasar a otra dynpro. Sintaxis:
LOAD REPORT
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:
q q q
0 -> La parte del programa se carga satisfactoriamente. 4 -> La parte del programa a cargar no existe. 8 -> El programa existe pero no tiene versin generada.
Las posibles partes a cargar de un programa es: PARTE ... HEAD TRIG CONT DATA DDNM DATV SELC STOR LITL SYMB LREF SSCR BASE INIT DATP TXID COMP Se carga sobre la tabla interna ... La cabecera del programa Los bloques de control de evento Los bloques de control de proceso La descripcin de los datos estticos El nombre de las estructuras del diccionario de datos utilizadas en el programa. La descripcin de las variables La descripcin de las variables de seleccin Los valores iniciales de los datos globales La tabla de literales La tabla de smbolos La lnea de referencia La descripcin de la pantalla de seleccin La tabla de segmento Los valores iniciales de los datos locales Las descripciones de los parmetros El ndice de los elementos de texto La descripcin de los componentes internos. Estructura de <tabla> RHEAD RTRIG RCONT RDATA RDDNM RDATA RSELC Un campo de tipo X Un campo de tipo X RSYMB RLREF RSSCR RBASE Un campo de tipo X RDATA RTXID RDATA
LOAD_REPORT_PART_NOT_FOUND -> Se especifico una parte no vlida. LOAD_ REPORT_PROGRAM_NOT_FOUND -> El programa especificado no existe. LOAD_REPORT_TABLE_TOO_SHORT -> La tabla especificada es demasiado pequeo.
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. Vase tambin: CALL TRANSACTION.
LOCAL
LOCAL
Definicin Declara un objeto local dentro de una subrutina. Sintaxis:
LOOP ENDLOOP
LOOP .. ENDLOOP
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.
q
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 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: q CURSOR define el cursor de la tabla interna.
q q q
WITH CONTROL define una tabla de control. FROM define la lnea desde donde realizamos el traspaso de datos. TO define la lnea lmite de asociacin con la tabla de la pantalla.
Ejemplo 1:
DATA: BEGIN OF T OCCURS 100, BAREA(5), BLNCE(5), END OF T. LOOP AT T FROM 7 TO 8. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/loop_endloop.htm (1 de 2) [09/11/2000 11:25:05]
LOOP ENDLOOP
Ejemplo 2:
DATA: BEGIN OF T OCCURS 100, BAREA(5), BLNCE(5), END OF T. DATA CMP_BAREA LIKE T-BAREA. CMP_BAREA = '01'. LOOP AT T WHERE BAREA = CMP_BAREA. WRITE: / T-BAREA, T-BLNCE. ENDLOOP.
Vase tambin: APPEND, INSERT, COLLECT, MODIFY, DELETE, SORT, READ TABLE.
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. Vase tambin: MODIFY SCREEN
MESSAGE
MESSAGE
Definicin El sistema permite reaccionar a acciones incorrectas por parte del usuario mostrando un mensaje, el cual afectar al flujo del programa. Sintaxis:
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. q La clusula TYPE se utiliza para determinar el tipo de mensaje. La clusula NUMBER se utiliza para especificar el nmero de mensaje.
q
Un mensaje puede tener cinco diferentes tipos: q 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.
q
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.
q q
Ejemplo 1:
MODIFY
MODIFY
Definicin Se utiliza para sustituir lneas de una tabla interna. Sintaxis:
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 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' 'Input' 'color 1' '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.
Vase tambin: MODIFY LINE.
MODIFY LINE
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: q INDEX -> Se modifica la lnea <n> del listado de nivel definido en <ndice>.
q q
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: q LINE FORMAT -> Actualiza el formato de salida de la lnea a modificar de acuerdo con las especificaciones realizadas en <opcin-1> ... <opcin-n>.
q
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
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. Vase tambin: LOOP AT SCREEN.
MODULE
MODULE
Definicin Se utiliza para llamar a un mdulo. El mdulo debe encontrarse en el modulpool de la transaccin. Sintaxis:
MODULE .. ENDMODULE
MODULE .. ENDMODULE
Definicin Declaracin de un mdulo. Sintaxis:
La clusula INPUT define un mdulo que ser procesado en el bloque PAI (Process After Input). La clusula INPUT es el valor po defecto de la sentencia y no es necesario incluirla. La clusula INPUT y OUTPUT no se pueden especificar a la vez. Un mensaje de tipo E (error) cancela el proceso del mdulo. Un mensaje de tipo W (warning) hace repetir el mdulo actual (o la de mdulos, sentencia CHAIN). Si presionamos INTRO despus del mensaje W el proceso contina despus de la sentencia MESSAGE.
MOVE
MOVE
Definicin Asigna un literal o el contenido de un campo fuente sobre un campo objeto se utiliza la sentencia MOVE. Sintaxis:
MOVE-CORRESPONDING
MOVE-CORRESPONDING
Definicin Se utiliza para copiar los datos de un componente field-string sobre otro componente field-string. Sintaxis:
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.
Vase tambin: MOVE.
MULTIPLY
MULTIPLY
Definicin Multiplica el contenido de campos. Sintaxis:
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.
Vase tambin: MULTIPLY-CORRESPONDING.
MULTIPLY-CORRESPONDING
MULTIPLY-CORRESPONDING
Definicin Multiplica el contenido de los componentes del registro <m> y del registro <n>. Sintaxis:
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'.
Vase tambin: MULTIPLY.
NEW-LINE
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-PAGE
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. Vase tambin: RESERVE.
ON CHANGE OF .. ENDON
ON CHANGE OF .. ENDON
Definicin Ejecuta un bloque de proceso si cambia el valor de un campo. Sintaxis:
* 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.
Vase tambin: RESERVE.
<tabla1> = <tabla2>. <tabla1> = <tabla2>[]. <tabla1> = ... = <tablan>. <tabla1> = ... = <tablan>[].
Todo lo comentado para la sentencia MOVE es vlido para este operador de asignacin. Vase tambin: MOVE, MOVE TO.
OVERLAY
OVERLAY
Definicin Se utiliza para sobrescribir un campo alfanumrico con otro campo. Sintaxis:
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 '-*---***-*++-*+.' .
Vase tambin: REPLACE, SHIFT, SEARCH, TRANSLATE.
PACK
PACK
Definicin Empaqueta el contenido de un campo sobre otro. Sintaxis:
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'
Vase tambin: UNPACK.
PARAMETERS
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. q 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.
q
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 NO-DISPLAY 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. Para significar el hecho de la obligatoriedad, el sistema presenta el campo con el signo de interrogacin (?). AS CHECKBOX -> Un checkbox es un campo de entrada de longitud 1 sobre el que se puede activar o desactivar un vise. Para definirlo utiliza la clusula AS CHECKBOX. El valor interno del parmetro ser "X" o " " si est activo o desactivo respectivamente. El usuario para activar o desactivar el parmetro debe hacer un click sobre el parmetro. Si utilizamos la opcin LIKE en la sentencia PARAMETERS haciendo referencia a un campo del diccionario de tipo C, longitud 1 y valores permitidos "X" y " " ( a travs del dominio), el parmetro aparece automticamente como checkbox. RADIOBUTTON -> Es un conjunto de campo de entrada de longitud 1 sobre el que se puede activar o desactivar uno y slo uno de ellos. Para definir un grupo de campos con el formato de radiobutton se utiliza la clusula RADIOBUTTON GROUP. Cada parmetro definido como radiobutton es de tipo C y longitud 1, y se asigna al grupo <grupo>. La mxima longitud del campo <grupo> es de 4. La clusula LIKE se puede utilizar pero debe referenciar un campo de tipo C y longitud 1. Se deben asignar al menos dos parmetros por cada
q q
PARAMETERS
grupo. Slo un parmetro por grupo podr tener un valor por defecto con la clusula DEFAULT, y este valor slo podr ser "X". Cuando el usuario hace un click sobre el radiobutton, el sistema activa dicho parmetro (valor interno: "X") y desactiva (valor interno: " ") el parmetro del grupo que estuviera activo. Siempre un parmetro del grupo est activo. Si ningn parmetro se activa por definicin, o en el evento INITIALIZATION, el sistema activa el primer parmetro del grupo.
q
MEMORY ID -> El sistema presentar en el parmetro de la pantalla el valor almacenado en un parmetro de memoria SPA/GPA. <memoria> identifica el nombre del parmetro y debe tener hasta tres caracteres de longitud. MODIF ID -> Se utiliza para asignar un parmetro a un grupo de modificacin. Ese grupo de modificacin podr ser utilizada por la sentencia MODIFY SCREEN para modificar los atributos de la pantalla de seleccin. <grupo> es el nombre del grupo de modificacin y debe ser un string de tres caracteres sin las comillas ( ' ). <grupo> se asigna a la columna SCREEN-GROUP1 de la tabla interna SCREEN. En el evento AT SELECTION-SCREEN se puede manipular la pantalla de seleccin gracias a las sentencias LOOP AT SCREEN y MODIFY SCREEN. FOR TABLE y AS MATCHCODE STRUCTURE -> Asignamos el parmetro a la tabla de la base de datos <tabla>. Esto slo tiene sentido en programas de acceso a bases de datos lgicas. A diferencia de un campo de un programa de dilogo (transaccin), el istema no valida si el valor introducido existe en el matchcode. Las opciones VALUE-REQUEST y HELP-REQUEST -> Slo se pueden ser utilizadas en programas de definicin de bases de datos.
PERFORM
PERFORM
Definicin Nos permite realizar una llamada a una subrutina. Se puede llamar a subrutinas que se encuentran en el mismo programa donde se encuentra la llamada (subrutinas internas) o en otros programas (subrutinas externas). Se puede especificar el nombre de la subrutina esttica o dinmicamente en tiempo de ejecucin. Se puede realizar llamadas a subrutinas desde un subrutina, incluso es posible que una subrutina se llame as misma (llamada recursiva). Sintaxis:
PERFORM <subrutina>(<programa>) [ [ [ [
Esta variante permite realizar llamadas a subrutinas que se encuentran en otro programa. La nica forma de pasar datos es a travs de los parmetros o utilizando un rea comn de memoria (COMMON PARTS). q Si utilizamos la clusula IF FOUND, el programa continuar sin producir ningn error si la subrutina no existe. Cada vez que llamamos a una subrutina externa, el programa que la contiene se carga en memoria. Este hecho hay que tenerlo muy en cuenta a la hora de disear una aplicacin para evitar cargas excesivas de informacin.
PERFORM <subrutina>(<programa>) IN PROGRAM <programa> [ TABLES <parmetros_actuales> ] [ USING <parmetro_actuales> ] [ CHANGING <parmetro_actuales> ] [ IF FOUND ].
Aqu se permite realizar una llamada a una subrutina que especificamos en tiempo de ejecucin. Con la clusula IN PROGRAM se puede determinar que la subrutina es externa, tambin de forma dinmica.
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:
PERFORM
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 Sin especificacin / TYPE ANY TYPE TABLE TYPE C, N, P o X TYPE D, F, I o T LIKE <campo> / TYPE <tipo-usuario> Ejemplo 1: Conversin El sistema acepta cualquier tipo del parmetro actual. Todos los atributos del parmetro actual se traspasan al parmetro formal. El sistema comprueba si el parmetro actual es una tabla interna. Todos los atributos y estructura del parmetro actual se transporta al parmetro formal. 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. El tipo de dato del parmetro actual debe coincidir con el tipo de dato del parmetro formal.
DATA: RNAME(30) VALUE 'WRITE_STATISTIC', PNAME(8) VALUE 'ZYX_STAT'. PERFORM WRITE_STATISTIC(ZYX_STAT). PERFORM (RNAME) IN PROGRAM ZYX_STAT. PERFORM WRITE_STATISTIC IN PROGRAM (PNAME). PERFORM (RNAME) IN PROGRAM (PNAME).
Ejemplo 2:
DATA: BEGIN OF ITAB OCCURS 100, TEXT(50), NUMBER TYPE I, END OF ITAB. STRUC LIKE T005T. ... PERFORM DISPLAY TABLES ITAB USING STRUC. FORM DISPLAY TABLES PAR_ITAB STRUCTURE ITAB USING PAR STRUCTURE T005T. DATA LOC_COMPARE LIKE PAR_ITAB-TEXT. WRITE: / PAR-LAND1, PAR-LANDX. ... LOOP AT PAR_ITAB WHERE TEXT = LOC_COMPARE. ... ENDLOOP.
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/perform.htm (2 de 3) [09/11/2000 11:25:16]
PERFORM
... ENDFORM.
Ejemplo 3:
DATA: NUMBER_I TYPE I VALUE 5, NUMBER_P TYPE P VALUE 4, BEGIN OF PERSON, NAME(10) VALUE 'Paul', AGE TYPE I VALUE 28, END OF PERSON, ALPHA(10) VALUE 'abcdefghij'. FIELD-SYMBOLS . ASSIGN NUMBER_P TO . PERFORM CHANGE USING 1 NUMBER_I NUMBER_P PERSON ALPHA+NUMBER_I(). FORM CHANGE USING VALUE(PAR_1) PAR_NUMBER_I PAR_NUMBER_P PAR_POINTER PAR_PERSON STRUCTURE PERSON PAR_PART_OF_ALPHA. ADD PAR_1 TO PAR_NUMBER_I. PAR_NUMBER_P = 0. 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
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: ==========
Vase tambin: WRITE...AT.
PRINT-CONTROL
PRINT-CONTROL
Definicin Para definir el formatop de impresin se utiliza la sentencia PRINT-CONTROL. El formato de la sentencia es el siguiente: Sintaxis:
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.
PROCESS
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 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.
PROGRAM
PROGRAM
Definicin Se definen ciertas caractersticas de un programa. Sintaxis: En las versiones actuales de la aplicacin SAP R/3, la sentencia PROGRAM tiene el mismo efecto que la sentencia REPORT. Vase tambin: REPORT.
PROVIDE .. ENDPROVIDE
PROVIDE .. ENDPROVIDE
Definicin Recupera objetos de datos de tablas internas. Sintaxis:
PROVIDE <campo11> <campo12> ... <campo21> <campo22> ... ... * ... BETWEEN <valor1> AND <valor2>.
Ejemplo:
DATA: BEGIN OF SE OCCURS 3, FROM TYPE D, TO TYPE D, NAME(15) TYPE C, AGE TYPE I, END OF SE, BEGIN OF PR OCCURS 4, START TYPE D, END TYPE D, PRICE TYPE I, NAME(10) TYPE C, END OF PR, BEGIN OF SH OCCURS 2, CLOSED TYPE D, STR(20) TYPE C, OPENED TYPE D, END OF SH VALID BETWEEN OPENED AND CLOSED, BEGIN TYPE D VALUE '19910701', END TYPE D VALUE '19921001'. SE-FROM = '19910801'. SE-TO = '19910930'. SE-NAME = 'Shorty'. SE-AGE = 19. APPEND SE. SE-FROM = '19911005'. SE-TO = '19920315'. SE-NAME = 'Snowman'. SE-AGE = 35. APPEND SE. SE-FROM = '19920318'. SE-TO = '19921231'. SE-NAME = 'Tom'. SE-AGE = 25. APPEND SE. PR-START = '19910901'. PR-END = '19911130'. PR-NAME = 'Car'. PR-PRICE = 30000. APPEND PR. PR-START = '19911201'. PR-END = '19920315'. PR-NAME = 'Wood'. PR-PRICE = 10. APPEND PR. PR-START = '19920318'. PR-END = '19920801'. PR-NAME = 'TV'. PR-PRICE = 1000. APPEND PR. PR-START = '19920802'. PR-END = '19921031'. PR-NAME = 'Medal'. PR-PRICE = 5000. APPEND PR. SH-CLOSED = '19920315'. SH-STR = 'Gold Avenue'.
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/provide_endprovide.htm (1 de 2) [09/11/2000 11:25:28]
PROVIDE .. ENDPROVIDE
SH-OPENED = '19910801'. APPEND SH. SH-CLOSED = '19921031'. SH-STR = 'Wall Street'. SH-OPENED = '19920318'. APPEND SH. PROVIDE NAME AGE FROM SE NAME FROM PR * FROM SH BETWEEN BEGIN AND END. ... ENDPROVIDE.
PUT
PUT
Definicin Es una sentencia nueva que aparece en el programa de las BDL. Esta sentencia permite interactuar entre los dos programas. 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. Vase tambin: GET, CHECK, REJECT.
RAISE
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.
Vase tambin: CALL FUNCTION.
RANGES
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:
READ CALENDAR
READ CALENDAR
Definicin Sentencia que recupera informacin del calendario. Slo es vlida en el entorno R/2 de SAP. En el entorno R/3 ha sido sustituida por mdulos de funcin.
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. Vase tambin: MODIFY CURRENT LINE.
READ DATASET
READ DATASET
Definicin Lee un fichero secuencial en el servidor de aplicacin. Sintaxis:
DO. READ DATASET '/usr/test' INTO REC. IF SY-SUBRC <> 0. EXIT. ENDIF. WRITE: / REC-TEXT, REC-NUMBER. ENDDO.
Vase tambin: OPEN DATASET, CLOSE DATASET, TRANSFER.
READ LINE
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: q 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, ...)
q q q
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
READ REPORT
Definicin Lee un programa de la base de datos. Sintaxis:
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.
Vase tambin: LOOP .. AT, INSERT, MODIFY. .
READ TABLE
READ TABLE
Definicin Se utiliza para leer una sola lnea de una tabla interna. Sintaxis:
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: q 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.
q q
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>.
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.
Vase tambin: LOOP .. AT, INSERT, MODIFY. .
READ TEXTPOOL
READ TEXTPOOL
Definicin Lee los elementos de textos de un programa. Sintaxis:
KEY
DATA: PROGRAM(8) VALUE 'PROGNAME', TAB LIKE TEXTPOOL OCCURS 50 WITH HEADER LINE. READ TEXTPOOL PROGRAM INTO TAB LANGUAGE SY-LANGU.
Vase tambin: INSERT TEXTPOOL, DELETE TEXTPOOL. .
RECEIVED RESULTS FROM FUNCTION <funcin> [ IMPORTING <parmetro1> = <campo1> ... <parmetron> = <campon> ] [ TABLES <parmetro1> = <campo1> ... <parmetron> = <campon> ] [ EXCEPTIONS <excepcin1> = <campo1> ... <excepcinn> = <campon> ].
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.
Vase tambin: CALL FUNCTION .. STARTING NEW TASK.
REFRESH
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. Vase tambin: CLEAR, FREE.
REFRESH CONTROL
REFRESH CONTROL
Definicin Inicializa un control de pantalla. Sintaxis:
REFRESH SCREEN
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>. Vase tambin: RECEIVE RESULTS FROM FUNCTION.
REJECT
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' . Vase tambin: RECEIVE RESULTS FROM FUNCTION.
REPLACE
REPLACE
Definicin Reemplaza cierta parte de un string por otro string. Sintaxis:
DATA FIELD(10). MOVE 'ABCB' TO FIELD. REPLACE 'B' WITH 'string' INTO FIELD. Devuelve: FIELD = 'AstringCB', SY-SUBRC = 0
Vase tambin: SEARCH, TRANSLATE, OVERLAY.
REPORT
REPORT
Definicin Define ciertas caractersticas de un programa. Sintaxis:
REPORT <nombre> [ [ [ [
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: q NO STANDARD PAGE HEADING -> Excluye la cabecera estndar.
q q
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: q NO STANDARD PAGE HEADING -> Suprimimos la cabecera estndar del sistema.
q
LINE-SIZE -> Definimos el nmero de columnas por pgina. El mximo de columnas es de 255 caracteres. Si no especificamos la clusula, el programa tendr el nmero de columnas correspondiente a la pantalla actual. Este valor se guarda en la variable del sistema SY-LINSZ. El campo <columna> no deber ser escrito entre comillas. Si la salida va a ser por impresora, hay que tener en cuenta que ciertas impresoras no admiten ms de 132 caracteres. LINE-COUNT -> Indica el nmero de filas por pginas, <filas> indica el nmero de lneas y <n> el nmero de lneas para el pie de pgina (evento END-OF-PAGE). Si omitimos <n> el evento END-OF-PAGE no tendr efecto. La variable del sistema SY-LINCT contiene el nmero actual de lneas por pgina en un listado. Si la clusula no se especifica, el nmero de lneas por pgina se obtiene a partir de la variable del sistema SY-LINCT. El campo <fila> no debe ser escrito entre comillas. MESSAGE-ID -> Definimos la clase de mensaje que utilizar el programa. <clase> define la clase de mensaje y debe existir en la tabla de mensajes T100. <clase> no debe ir encerrada entre comillas. DEFINING DATABASE se utiliza exclusivamente en los programas de definicin de bases de datos lgicas. Estas clusula se incluye automticamente si utilizamos las herramientas estndar de creacin de bases de datos lgica.
q q
Es aconsejable seguir las reglas de nomenclatura de SAP para objetos de cliente, sobretodo para los nombres de los programas. Un programa que no siga la norma puede ser borrado accidentalmente con un upgrade del sistema. Los programas de usuario deben comenzar por "Z" o por "Y". El resto de caracteres es de libre uso.
RESERVE
RESERVE
Definicin Para forzar un salto de pgina en funcin de cierta condicin se utiliza la sentencia RESERVE. Sintaxis:
ROLLBACK WORK
ROLLBACK WORK
Definicin Deshace los cambios realizados en la base de datos. Sintaxis:
ROLLBACK WORK.
Si la operacin se realiza satisfactoriamente, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0.. Vase tambin: COMMIT WORK.
SCAN
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.
El resto de las sentencias es la siguiente: q FROM y TO -> Con ellas delimitamos las lneas de la tabla interna que hay que analizar.
q q
KEYWORDS FROM -> Solo tratamos las sentencias contenidas en la tabla <tabla4>. Si la tabla esta vaca se analizan todas las sentencias. 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
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 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.
SEARCH
SEARCH
Definicin Se utiliza para buscar una cadena de caracteres en un campo alfanmerico. Sintaxis:
SEARCH <campo> FOR <str> { ABREVIATED | STARTING AT <n1> | ENDING AT <n2> | AND MARK }.
Esta sentencia busca en el campo <campo> la secuenca de caracteres <str>. Si se encuentra, la variable del sistema SY-SUBRC vale 0 y SY-FDPOS toma el valor del offset del string encontrado. En caso contrario, SY-SUBRC vale 4. El string <str> puede contener caracteres con cierto significado particular. Operador <string> .<string>. *<string> <string>*
q q q q
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
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. ]
q q q q q q
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. ORDER BY -> Es opcional y sirve para marcar el criterio de ordenacin. ENDSELECT -> Marca el final de un bloque si la sentencia SELECT no se ha puesto la opcin SINGLE.
La sentencia Open SQL utilizan de forma automtica el campo mandante. Las sentencias acceden a tablas dependientes de mandante leen y procresan slo los datos del mandante actual (mandante de conexin). Sin la clusula CLIENT SPECIFIED no es posible utilizar el campo mandante en la clusula WHERE (provocan un error de sintaxis). Si rellenamos el campo mandante en las sentencias INSERR, UPDATE o DELETE no se produce ningn error en tiempo de ejecucin, el sistema sobrescribe el campo mandante del rea de trabajo con el mandante actual antes de procesar la sentencia Open SQL. Si deseamos especificar un mandante distinto al actual debemos utilizar la clusula CLIENT SPECIFIED en las sentencias SELECT, INSERT, UPDATE, MODIFY o DELETE.
SELECT [ SINGLE [ FOR UPDATE ] ] [ DISTINCT ] { * | <campos> | MAX(<campo> ) AS <m> | MIN(<campo> ) AS <m> | AVG(<campo> ) AS <m> | SUM(<campo> ) AS <m> | COUNT(* ) as <m> | (lista) COUNT([ DISTINCT ] <campo> ) AS <m> } ... [ ENDSELECT ].
Para leer todas las columnas de una tabla se utiliza el asterisco (*). Con la clusula SINGLE es necesario especificar todos los campos de la clave primaria en la clusula WHERE para identificar de forma nica un registro. Si la lnea no se encuentra SY-SUBRC vale 4. Si el sistema consigue leer hasta una lnea SY-SUBRC valdr 0. Con la clusula FOR UPDATE el sistema bloquea la lnea leda. Slo puede ser utilizada en combinacin con la clusula SINGLE. El programa espera hasta que recibe por parte del sistema confirmacin del bloqueo. Si no se pudiera realizar el bloqueo el programa termina con un error. La clusula no se pudiera realizar el bloqueo el programa termina con un error. La clusula FOR UPDATE debe ser utilizada en combinacin con los mecanismos de bloque y desbloqueo. Con la clusula SINGLE leemos una sola lnea de la tabla y sin la clusula la seleccin es mltiple. Cada vez que el sistema nos deja una lnea sobre el rea de trabajo especificado, se ejecuta el bloque de sentencias hasta la sentencia ENDSELECT. Con la opcin DISTINCT automticamente se excluyen las lnea duplicadas. Si al menos se lee una lnea de la tabla, SY-SUBRC vale 0, en caso contrario vale 4. La variable del sistema SY-DBCNT se incrementa en uno por cada paso del bucle. Al final de ste conserva el nmero de lneas ledas. En lugar de leer todas las columnas de la tabla se puede leer ciertas columnas o aplicar ciertas funciones a dichas columnas. Veamos todas las posibilidades de la clusula: q * -> Son todos los campos de la tabla.
q q q
<campo> -> Es una lista de campos de la tabla. MAX(<campo> ) -> Devuelve el valor mximo de la columna <campo>. MIN(<campo> ) -> Devuelve el valor mnimo de la columna <campo>.
SELECT .. ENDSELECT
q q q q
AVG(<campo> ) -> Devuelve la media de valores de la columna <campo>. SUM(<campo> ) -> Devuelve la suma de valores de la columna <campo>. COUNT([ DISTINCT ]<campo> ) -> Devuelve el nmero de registros seleccionados. Con DISTINCT slo se cuentan los registros distinto (<tabla> ) -> Es una tabla interna donde se especifica cualquier opcin de las vistas anteriormente.
Se deben dejar espacios en blanco entre los parntesis y el argumento de la funcin. Con la opcin AS se utiliza un nombre alternativo <m>. Si se especifican campos a leer o funciones, la clusula INTO es obligatoria. Opciones de la clusula FROM Esta clusula especifica la tabla o vista de la base de datos que va a ser leda.
FROM { <tabla> | <vista> | <tabla> } [ CLIENT SPECIFIED ] [ BYPASSING BUFFER ] [ UP TO <n> ROWS ]
La tabla o vista <tabla> debe estar definida en el diccionario de datos, y debe estar declarada en el programa en la sentencia TABLES. Con la opcin BYPASSING BUFFER el sistema lee los datos de la tabla directamente de la base de datos, sin utilizar el buffer de la tabla. Con ellos nos aseguramos de que los datos son los ms recientes. Cuando se define un tabla en el diccionario de datos se puede especificar que el sistema utilice un buffer local de la tabla. Este buffer se actualiza de forma asncrona. Normalmente la sentencia SELECT utiliza este buffer, y no tiene por qu ser la versin ms reciente. Para asegurar la lectura de la ltima versin, se utiliza esta opcin. Si queremos leer un nmero determinado de lneas se utiliza la opcin UP TO <n> ROWS. <n> determina el nmero de lneas a leer. Si <n> es igual a 0 se leen todas las lneas, si <n> es menor que 0, se produce un error en tiempo de ejecucin. Si combinamos la opcin UP TO <n> ROWS con la clusula ORDER BY, el sistema primero ordena la tabla y posteriormente procesa las <n> primeras lneas. Se puede especificar el nombre de la tabla en tiempo de ejecucin, para ello, se utiliza la clusula (<campo>). <campo> contiene el nombre de la tabla, y no tiene por qu declararse con la sentencia TABLES. Con esta opcin la clusula INTO es obligatoria. Opciones de la clusula INTO Para especificar un rea de destino de los datos seleccionados se utiliza la clusula INTO de la sentencia SELECT.
WHERE { <campo_bd> <operador> <campo> <campo_bd> [ NOT ] BETWEEN <campo1> AND <campo2> <campo_bd> [ NOT ] LIKE <campo> [ ESCAPE <e> ] <campo_bd> [ NOT ] IN <campo1> (campo1>, ... , <campon> ) <campo_bd> IS [ NOT ] NULL <campo_bd> [ NOT ] IN <criterio_seleccion> ( <tabla_condiciones> ) } [ { NOT, AND, OR, (, ) } ... ]
El significado de las opciones de esta clusula es el siguiente: q <campo_bd> <operador> <campo> -> Los operadores vlidos para <operador> son los siguientes: Operador EQ NE Equivalente = <> o >< Significado Igual a No igual
| | | | | |
SELECT .. ENDSELECT
LT LE GT GE
q
<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 ] 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> <campo1> (campo1>, ... , <campon> ) -> El valor de la base de datos debe, o no, ser el valor nulo. <campo_bd> IS [ NOT ] NULL -> El valor del campo de la base de datos debe, o no, ser el valor nulo. <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.
q q q q
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:
(<tabla>) }
Con campo <campo1> ... <campon> especificamos los campos de agrupamiento. Con (<tabla>) se puede especificar los campos de agrupamiento dinmicamente, es decir, en tiempo de ejecucin. Opciones de la clusula ORDER BY Con dicha clusula fijamos un criterio de ordenacin en los datos.
ORDER BY { PRIMARY KEY | <campo1> [ ASCENDING | DESCENDING ] ... <campon> [ ASCENDING | DESCENDING ] | (<tabla>) }
Con la opcin PRIMARY KEY se ordenan por los campo de la clave primaria ascendentemente. <campo1> puede ser cualquier campo de la tabla. Se puede especificar si el criterio de ordenacin, en cada campo, es ascendente (por defecto) o descendente. Si especificamos ms de un campo se ordenarn en la secuencia especificada. Con la opcin (<tabla>) se puede indicar los campos de ordenacin dinmicamente. La lnea de la tabla debe ser del tipo C y longitud 72. Ejemplo:
TABLES SBOOK. SELECT * FROM SBOOK WHERE CARRID = 'LH ' AND CONNID = '0400' AND FLDATE = '19950228' ORDER BY PRIMARY KEY. WRITE: / SBOOK-BOOKID, SBOOK-CUSTOMID, SBOOK-CUSTTYPE, SBOOK-SMOKER, SBOOK-LUGGWEIGHT, SBOOK-WUNIT, SBOOK-INVOICE. ENDSELECT.
SELECT .. ENDSELECT
SELECT-OPTIONS
SELECTION-SCREEN
Definicin Se utiliza para definir un criterio de seleccin. Algunas de las variantes de esta sentencia slo se pueden utilizar en programas de definicin de bases de datos lgicas. Sintaxis:
SELECT-OPTIONS <criterio> FOR <campo> [ DEFAULT <g> [ TO <h> ] [ OPTION <opcin> SIGN <signo> ] [ MEMORY ID <memoria> ] [ MODIF ID <clave> ] [ MATCHCODE OBJECT <objeto> ] [ NO-DISPLAY ] [ LOWER CASE ] [ OBLIGATORY ] [ NO-EXTENSION ] [ NO INTERVALS ] [ NO DATABASE SELECTION ] [ VALUE REQUEST ][ FOR LOW/HIGH ] ] [ VALUE-REQUEST [ FOR LOW/HIGH ] ] [ HELP-REQUESTM [ FOR LOW/HIGH ] ].
Esta sentencia crea el criterio de seleccin <criterio> para el campo <campo>. <campo> puede ser un campo de una tabla de la base de datos o un campo interno al programa. <criterio> puede ser como mximo de 8 caracteres de longitud. El criterio de seleccin lo rellena el usuario en la pantalla de seleccin. Los textos descriptivos que aparecen a la izquierda del criterio de seleccin se pueden cambiar utilizando (igual que con los parmetros definidos con PARAMETERS) con el objeto parcial a un programa, elementos de texto. El significado de las clusulas es el siguiente: q DEFAULT -> Se puede incluir una lnea en el criterio de seleccin con valores por defecto. <g> actualiza el campo LOW del criterio de seleccin. Con TO <h> incluimos un valor por defecto en el campo HIGH del criterio de seleccin. 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.
q
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.
q q
q q
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'.
SELECT-OPTIONS
SELECTION-SCREEN
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: q SKIP -> Provoca lneas en blanco en la pantalla de seleccin. <n> es opcional se utiliza para saltar ms de una lnea. q 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>.
q q
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. Con la opcin NO INTERVALS todas las sentencias SELECT-OPTIONS se procesan como si tuvieran la sentencia NO INTERVALS. Con esta opcin, si utilizamos adems WITH FRAME, el cuadro ser menos ancho.
Se puede crear hasta cinco botones en la barra de botones sobre la pantalla de seleccin. Estos botones se conectan automticamente a teclas de funcin.<i> debe estar comprendido entre 1 y 5. El texto que aparece sobre el botn se especifica en tiempo de ejecucin moviendo un valor sobre el campo SSCRFIELDS-FUNCTXT_0<i>. La estructura SSCRFIELDS debe estar declarada con la sentencia TABLES. Cuando el usuario activa un botn, el valor FC0<i> es introducido sobre el campo SSCRFIELDS-UCOMM, el cual puede ser chequeado en el evento AT SELECTION-SCREEN. Existe tambin la posibilidad de situar botones sobre la pantalla de seleccin con la opcin PUSHBUTTON. Las opciones barra (/), posicin>, <longitud> y MODIF ID <clave> son las mismas que las explicadas en la clusula COMMENT. <campo> es el texto que aparece sobre el botn. Para <cmd> se debe especificar un cdigo de hasta cuatro caracteres. Cuando el usuario presiona el botn, <cmd> es introducido en el campo SSCRFIELDS-UCOMM. Como suceda en la clusula anterior, SCCRFIELDS debe declararse con la
file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/selection_screen.htm (1 de 2) [09/11/2000 11:25:41]
SELECTION-SCREEN
sentencia TABLES. El campo SSCRFIELDS-UCOMM puede ser utilizado en el evento AT SELECTION-SCREEN. El resto de clusulas se utilizan exclusivamente en los programas de definicin de bases de datos. Ejemplo 1:
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(10) TEXT-001. PARAMETERS: P1(3), P2(5), P3(1). SELECTION-SCREEN END OF LINE.
Ejemplo 2:
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 10(20) TEXT-001 FOR FIELD PARM. SELECTION-SCREEN POSITION POS_LOW. PARAMETERS PARM LIKE SAPLANE-PLANETYPE. SELECTION-SCREEN END OF LINE.
Ejemplo 4:
TABLES SSCRFIELDS. ... SELECTION-SCREEN PUSHBUTTON /10(20) CHARLY USER-COMMAND ABCD. ... INITIALIZATION. MOVE 'My text' TO CHARLY. ... AT SELECTION-SCREEN. IF SSCRFIELDS-UCOMM = 'ABCD'. ... ENDIF.
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.
Vase tambin: PARAMETERS, SELECT-OPTIONS, INITIALIZATION.
DATA: BEGIN OF TEXTTAB OCCURS 100, LINE(72), END OF TEXTTAB. SET BLANK LINES ON. LOOP AT TEXTTAB. WRITE / TEXTTAB-LINE. ENDLOOP.
SET COUNTRY
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:
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
SET CURSOR
Definicin Sita el cursor en una posicin determinada. Sintaxis:
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 LANGUAGE
SET LANGUAGE
Definicin Inicializacin de los elementos de texto. Sintaxis:
DATA: NUMBER TYPE I, SUB_NUMBER TYPE I. NEW-PAGE NO-TITLE NO-HEADING. DO 10 TIMES. NUMBER = SY-INDEX. DO 10 TIMES. SUB_NUMBER = SY-INDEX. WRITE: /(10) NUMBER, '|', (10) SUB_NUMBER, '|'. SET LEFT SCROLL-BOUNDARY. No hara falta ponerlo aqu porque ya esta declarado en el evento TOP-OF-PAGE . WRITE: 'Data 1', '|', 'Data 2', '|', 'Data 3', '|'. " ... 'Data n' 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.
<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
SET MARGIN
Definicin Determina el margen superior-izquierdo en la impresin directa de un informe. Sintaxis:
SET PARAMETER
SET PARAMETER
Definicin Actualizacin de un parmetro SPA/GPA. Sintaxis:
SET PF-STATUS
SET PF-STATUS
Definicin Una interfaz de usuario est compuesta de un estatus y un ttulo. Para poder utilizar funciones de usuario es necesario crear interfaz particulares. Estas interfaces se definen con la transaccin Menu Painter (SE41). La sentencia PF-STATUS define un estatus para el listado actual (bsico o secundario). Sintaxis:
SPACE -> Indicamos al sistema que ha de utilizar el estatus estndar. EXCLUDING -> Desactiva funciones especificas. En un programa que necesite varios estatus que difieren muy poco, se puede crear un nico estatus y eliminar funciones con esta clusula. Para indicar una nica funcin utilizamos la opcin <funcin>. <funcin> es un literal o una variable que indica el cdigo de la funcin a desactivar. Tambin se puede utilizar una tabla interna para desactivar todas las funciones almacenadas en la tabla. INMEDIATILY -> Modificamos el estatus que en estos momentos est activo. Si esta clusula modificamos el estatus del siguiente listado a mostrar.
Ejemplo:
DATA: BEGIN OF TAB OCCURS 10, FCODE(4), END OF TAB. REFRESH TAB. MOVE 'DELE' TO TAB-FCODE. APPEND TAB. MOVE 'AUSW' TO TAB-FCODE. APPEND TAB. SET PF-STATUS 'STA3' EXCLUDING TAB.
Vase tambin: SET TITLEBAR.
SET PROPERTY
SET PROPERTY
Definicin Actualiza una propiedad de un objeto. Sintaxis:
INCLUDE OLE2INCL. DATA EXCEL TYPE OLE2_OBJECT. CREATE OBJECT EXCEL 'Excel.Application'. SET PROPERTY OF EXCEL 'Visible' = 1.
Vase tambin: GET PROPERTY, CALL METHOD, CREATE OBJECT.
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.
Vase tambin: GET PROPERTY, CALL METHOD, CREATE OBJECT.
SET SCREEN
SET SCREEN
Definicin Determina cual va ser la dynpro siguiente en procesarse. Sintaxis:
SET SCREEN
SET TITLEBAR
Definicin Define un ttulo para la pantalla de salida. Sintaxis:
SET USER-COMMAND
SET USER-COMMAND
Definicin Permite activar un evento desde el programa. Sintaxis:
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
SHIFT
Definicin Se utiliza para desplazar el contenido de un campo alfanumrico. Disponemos de distintas variantes en funcin del modo de desplazamiento. Sintaxis:
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> 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', FIVE TYPE I VALUE 5. SHIFT ALPHABET BY FIVE PLACES.
ALPHABET contendra 'FGHIJ' . Ejemplo 3:
SHIFT
SKIP
SKIP
Definicin Genera lneas en blanco en el dispositivo de salida. Sintaxis:
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
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: q 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 BY- Con 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.
q
AS TEXT -> Influye en el mtodo de ordenacin para campos alfanumricos. Sin esta opcin, el sistema ordena los campos binariamente, de acuerdo con el sistema donde tengamos el sistema SAP R/3. Con la opcin AS TEXT, el sistema ordena los campos alfanumricos de forma alfabtica. Si especificamos AS TEXT antes de la clusula BY, slo afectar a los campo de tipo C. Si lo especificamos despus de la clusula BY slo podr ser utilizada en campos de tipo C, con lo cual la ordenacin no es estable. Esto quiere decir que lneas con la misma clave de ordenacin no tienen por qu ser ordenadas de la misma forma en distintas ejecuciones. Si no hay suficiente espacio en memoria para ordenar la tabla, el sistema escribe los datos en un fichero externo temporal. El nombre de ese fichero est especificado en el parmetro DIR_SORTTMP del perfil de arranque de SAP.
Ejemplo:
DATA: ONR(7), DATE TYPE D, POSITION(3) TYPE N, CUSTOMER(16), PNR(5) TYPE N, NAME(10), UNITS TYPE I, ORDERS TYPE I. FIELD-GROUPS: HEADER, ORDER, PRODUCT, DATE_FIRST. INSERT ONR DATE POSITION INTO HEADER. INSERT CUSTOMER INTO ORDER. INSERT PNR NAME UNITS INTO PRODUCT. INSERT DATE ONR POSITION INTO DATE_FIRST. ONR = 'GF00012'. DATE = '19921224'. POSITION = '000'. CUSTOMER = 'Good friend (2.)'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '12345'. NAME = 'Screw'. UNITS = 100. EXTRACT PRODUCT. ADD 1 TO POSITION. PNR = '23456'. NAME = 'Nail'. UNITS = 200. EXTRACT PRODUCT. ONR = 'MM00034'. DATE = '19920401'. POSITION = '000'. CUSTOMER = 'Moneymaker'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '23456'. NAME = 'Nail'. UNITS = 300. EXTRACT PRODUCT. ADD 1 TO POSITION.
SORT
PNR = '34567'. NAME = 'Hammer'. UNITS = 4. EXTRACT PRODUCT. ONR = 'GF00011'. DATE = '19921224'. POSITION = '000'. CUSTOMER = 'Good friend (1.)'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '34567'. NAME = 'Hammer'. UNITS = 5. EXTRACT PRODUCT. SORT BY DATE_FIRST. LOOP. 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:
Moneymaker ordered: 23456 Nail 300 34567 Hammer 4 Good friend (1.) ordered: 34567 Hammer 5 Good friend (2.) ordered: 12345 Screw 100 23456 Nail 200
SPLIT
SPLIT
Definicin Divide un campo alfanumrico en varios campos, gracias a algn separador. Sintaxis:
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:
DATA: BEGIN OF ITAB OCCURS 10, WORD(20), END OF ITAB. SPLIT 'STOP Two STOP Three STOP
La tabla interna tendr tres lneas, la primera en blanco, la segunda contiene "Two" y la tercera contiene "Three". Vase tambin: SHIFT, CONCATENATE, SEARCH.
START-OF-SELECTION
START-OF-SELECTION
Definicin Este evento nos permite crear un bloque de proceso despus de procesar la pantalla de seleccin y antes del evento GET. Sintaxis:
START-OF-SELECTION.
Se puede utilizar para cargar cierta informacin despus de procesar la pantalla de seleccin y antes del evento GET. Vase tambin: INITIALIZATION, END-OF-SELECTION.
STATICS
STATICS
Definicin Declaracin de objetos de datos internos a un procedimiento (subrutina o mdulo de funcin) con valores estticos, es decir, el valor quedar retenido en el procedimiento. Si llamamos varias veces al procedimiento, el valor del objeto de dato permanecer sin cambios de una llamada a otra. Sintaxis:
STOP
STOP
Definicin Permite abandonar cualquier bloque de proceso e ir directo al bloque de proceso del evento END-OF-SELECTION. El abandono se realiza de forma incondicional. Sintaxis:
STOP.
Vase tambin: EXIT, REJECT, CHECK.
SUBMIT
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. El significado de las clusulas es el siguiente: q LINE-SIZE -> El programa se visualiza con el nmero de columnas definido en <columnas>.
q q
LINE-COUNT -> El programa se visualiza con el nmero de lneas definido en <filas>. TOP SAP-SPOOL -> Especifica los parmetros de impresin. El significado de las clusulas es el siguiente:
q q q q q q q q q q q q q q q q q
DESTINATION -> Dispositivo de salida. COPIES -> Nmero de copias. LIST NAME -> Nombre del listado. LIST DATASET -> Nombre del spool dataset. COVER TEXT -> Ttulo de la cubierta. LIST AUTHORITY -> Autorizacin de display. INMEDIATELY -> Impresin inmediata. KEEP IN SPOOL. Guardar el listado despus de la impresin. NEW LIST IDENTIFICATION -> Identificacin del nuevo listado. DATASET EXPIRACION -> Fecha de expiracin. LINE-COUNT -> Lneas por pgina. LINE-SIZE -> Columnas del informe. LAYOUT -> Formato de impresin. SAP COVER PAGE -> Con cartula de impresin. COVER PAGE -> Seleccin de cubierta. RECEIVER -> Usuario receptor. DEPARTMENT -> Nombre del departamento.
SUBMIT
q q q
ARCHIVE MODE -> Modo de archivo. ARCHIVE PARAMETERS -> Parmetros de archivo. q WITHOUT SPOOL DYNPRO -> Salta la pantalla de control de impresin. q SPOOL PARAMETERS -> Parmetros de impresin. VIA SELECTION-SCREEN -> Aparece al usuario la pantalla de seleccin. AND RETURN -> El programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina se devuelve control al programa llamador. Para ello se crea una sesin interna.
q q
EXPORTING LIST TO MEMORY -> El listado de salida del programa llamado no aparece en pantalla. En su lugar se guarda en memoria. El programa llamador puede leer el listado de la memoria. Esta clusula no puede ser utilizada en combinacin con la clusula TO SAP-SPOOL. USER <usuario> VIA JOB <job> NUMER <n> -> Se utiliza para incluir un paso de job en un proceso de background. USING SELECTION-SETS OF PROGRAM -> El programa llamado utiliza las variantes del programa <programa1>. Si los parmetros y criterios de seleccin de ambos programas no coinciden, las variables de <programa1> se pueden borrar.
q q
Los mensajes de error que se pueden producir son los siguientes: q LOAD_PROGRAM_NOT_FOUND -> El programa especfico no existe. q SUBMIT_WRONG_TYPE -> El programa especificado no es un report.
q q q
SUBMIT_IMPORT_ONLY_PARAMETER -> Valor invlido pasado por parmetro. SUBMIT_WRONG_SIGN -> Valor invlido pasado a un criterio de seleccin. SUBMIT_IN_ITAB_ILL_STRUCTURE -> Tabla pasado como criterio con estructure errnea.
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
SUBTRACT
Definicin Resta el contenido de dos campos. Sintaxis:
DATA NUMBER TYPE P VALUE 3, RESULT TYPE I VALUE 7. SUBTRACT NUMBER FROM RESULT.
RESULT valdr 4 y NUMBER valdr 3. Vase tambin: COMPUTE, SUBTRACT-CORRESPONDING.
SUBTRACT-CORRESPONDING
SUBTRACT-CORRESPONDING
Definicin Substrae el contenido de campos de una estructura. Sintaxis:
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 Vase tambin: SUBTRACT, ADD-CORRESPONDING, MULTIPLY-CORRESPONDING, DIVIDE-CORRESPONDING.
SUM
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 .. ENDAT. En este caso, los campos a sumar sern: q FIRST -> Suman todas las lneas. q LAST -> Suman todas las lneas. q NEW <campo> -> Suman todas las lnea para el valor del campo que activa la sentencia. q 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
SUMMARY
Definicin Se utiliza para resaltar las lneas de salida. Sintaxis:
SUMMAY.
Despus de esta sentencia, todas las sentencias de escritura tienen alta intensidad. Vase tambin: FORMAT.
SYNTAX-CHECK
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.
SUPRESS DIALOG
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: q <f> -> Contiene el texto del mensaje de error. Tipo alfanumrico.
q q
<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: q 0 -> El programa no tiene errores de sintaxis. q 4 -> El programa contiene errores de sintaxis. q 8 -> El programa tiene errores que no son de sintaxis. El significado de las clusula es el siguiente: q 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.
q q q q q q q q
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. No debe ser utilizado por usuarios. <id> contiene el tipo de informacin que ser escrito en la tabla interna <tab>. <id> puede contener los siguientes valores:
q q q q q q q q q q q q q q q q q q
MSG -> Mensajes warnings. CORR -> Correciones. SYMB -> Dumps. DATA -> Objetos del programa. DPAR -> Parmetros del programa. TYPE -> Tipos de datos del programa. FOTY -> Tipos de datos utilizados en subrutinas. FUTY -> Tipos de datos utilizados en mdulos de funcin. TYCH -> Componentes de tipos de objetos. CROS -> Objetos de datos referenciados. STR -> Identificadores. FORM -> Rutinas FORM. FPAR -> Parmetros FORM. PERF -> Llamadas a rutinas (PERFORM). APAR -> Parmetros PERFORM. FUNC -> Mdulos de funcin. FFPA -> Parmetros de mdulos de funcin. CALL -> Llamadas a CALL FUNCTION.
SUPRESS DIALOG
q q q
FAPA -> Parmetros CALL FUNCTION. HYPH -> Objetos de datos con guiones en el nombre. INCL -> Include del programa.
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. Vase tambin: SYNTAX-CHECK FOR DYNPRO.
SYNTAX-CHECK FOR DYNPRO <h> <f> <e> <m> MESSAGE <c1> LINE <g> WORD <c2> WORD <c3>[ OFFSET <c4> ][ TRACE-TABLA <tabla> ].
Toda la informacin necesaria para validar el dynpro se toma del campa <h> y de las tablas internas <f>, <e> y <m>. Este campo y tablas internas tiene la misma estructura y significado que el de la sentencia IMPORT DYNPRO. Si ocurre un error de sintaxis el campo <c1> se rellena con el texto del mensaje, <c2> se rellena con la lnea de la pantalla donde ocurre el error y <c3> contiene la palabra con el error. La variable del sistema SY-SUBRC toma el valor 0 su no existen errores, en caso contrario valdr 4. El significado de las clusulas es el siguiente: q OFFSET -> Si ocurre un error, el campo <c4> contiene la posicin de la palabra incorrecta.
q
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. Vase tambin: SYNTAX-CHECK.
SYNTAX-TRACE
SYNTAX-TRACE
Definicin Activa / desactiva el trazador sintctico. Sintaxis:
TOP-OF-PAGE
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:
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:
TRANSFER
TRANSFER
Definicin Escribe registros sobre un fichero en el servidor de aplicacin. Sintaxis:
TRANSLATE
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
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.
DATA: LETTERS(10) VALUE 'abcX', CHANGE(6) VALUE 'aXBY'. TRANSLATE LETTERS USING CHANGE.
El campo LETTERS contendr 'XbcX' . Vase tambin: REPLACE, OVERLAY.
TYPE-POOL
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-POOLS
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:
TYPES
TYPES
Definicin Declaracin de tipos de datos. Sintaxis:
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
ULINE
Definicin Para escribir lneas horizontales se puede utilizar la sentencia ULINE. Sintaxis:
UNPACK
UNPACK
Definicin Desempaqueta el contenido de un campo sobre otro. Sintaxis:
DATA: P_FIELD(2) TYPE P VALUE 103, C_FIELD(4) TYPE C. UNPACK P_FIELD TO C_FIELD.
P_FIELD: P'103C' -> C_FIELD: C'0103'. Vase tambin: PACK.
UPDATE
UPDATE
Definicin Sentencia utilizada para modificar registros de una tabla de la base de datos. Sintaxis:
[ WHERE <condicin> ].
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: q - <f> = <g>. -> <f> es un campo de la tabla <tabla>. <g> es un valor.
q q
- <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.
TABLES SCUSTOM. DATA WA LIKE SCUSTOM. WA-ID = '12400177'. WA-TELEPHONE = '06201/44889'. UPDATE SCUSTOM FROM WA.
Vase tambin: MODIFY, INSERT.
WAIT
WAIT
Definicin Sentencia utilizada para esperar la terminacin de la ejecucin asncrona de un mdulo de funcin. Sintaxis:
WHILE .. ENDWHILE
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. IF NUMBER > SEARCH_ME. MAX = NUMBER - 1. ELSE. MIN = NUMBER + 1. ENDIF. ENDWHILE.
Vase tambin: CALL FUNCTION STARTING NEW TASK.
WINDOW
WINDOW
Definicin Esta sentencia muestra el listado secundario que se presenta en una venta en lugar de en una pantalla completa. Sintaxis:
WRITE TO
WRITE TO
Definicin Cuando asignamos valores a objetos de datos con la sentencia, se puede utilizar las opciones de la sentencia WRITE a excepcin de UNDER y NO-GAP. Sintaxis:
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 ". Vase tambin: WRITE.