Sentencias abap

263
En esta página están todas las instrucciones ABAP/4 del sistema SAP R/3, además cada una de ellas contiene un pequeño ejemplo (o al menos esa es mi intención). Las sentencias están ordenadas alfabéticamente para una mejor búsqueda y además cada sentencia tiene su propia página para facilitar su impresión, 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 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 BACK BREAK BREAK-POINT Letra C 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 En esta página están todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (1 de 6) [09/11/2000 11:19:50]

Transcript of Sentencias abap

  1. 1. 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 ADDq ADD-CORRESPONDINGq APPENDq ASSIGNq AT .. ENDATq AT END OF .. ENDATq AT FIRST .. ENDATq AT LAST .. ENDATq AT LINE-SELECTIONq AT NEW .. ENDATq AT Pfnnq AT SELECTION-SCREENq AT USER-COMMANDq AUTHORITY-CHECKq Letra B BACKq BREAKq BREAK-POINTq Letra C CALLq CALL CUSTOMER-FUNCTIONq CALL DIALOGq CALL FUNCTIONq CALL METHODq CALL SCREENq CALL SUBSCREENq CALL TRANSACTIONq CASE .. ENDCASEq CHAINq CHECKq CLEARq CLOSE CURSORq CLOSE DATASETq CNTq COLLECTq COMMIT WORKq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (1 de 6) [09/11/2000 11:19:50]
  2. 2. COMMUNICATIONq COMPUTEq CONCATENATEq CONDENSEq CONSTANTSq CONTINUEq CONTROLSq CONVERT DATEq CONVERT TEXTq CREATE OBJECTq Letra D DATAq DEFINE .. END-OF-DEFINITIONq DELETEq DELETE DATASETq DELETE DYNPROq DELETE FROM DATABASEq DELETE FROM SHARED BUFFERq DELETE REPORTq DELETE TEXTPOOLq DESCRIBE DISTANCEq DESCRIBE FIELDq DESCRIBE LISTq DESCRIBE TABLEq DETAILq DIVIDEq DIVIDE-CORRESPONDINGq DO .. ENDDOq Letra E EDITOR-CALL FOR REPORTq END-OF-PAGEq END-OF-SELECTIONq EXEC SQL .. ENDEXECq EXITq EXIT FROM STEP-LOOPq EXIT FROM SQLq EXPORTq EXPORT DYNPROq EXPORT TO DATABASEq EXPORT TO DATASETq EXPORT TO MEMORYq EXPORT TO SHARED BUFFERq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (2 de 6) [09/11/2000 11:19:50]
  3. 3. EXTRACTq Letra F FETCHq FIELDq FIELD-GROUPSq FIELD-SYMBOLSq FIELDSq FORM .. ENDFORMq FORMATq FREEq FREE MEMORYq FREE OBJECTq FUNCTION .. ENDFUNCTIONq FUNCTION-POOLq Letra G GENERATE DYNPROq GENERATE REPORTq GENERATE SUBROUTINE POOLq GETq GET CURSORq GET LOCALE LANGUAGEq GET PARAMETERq GET PROPERTYq GET RUN TIMEq GET TIMEq Letra H HIDEq Letra I IF .. ENDIFq IMPORT DIRECTORY FROM DATABASEq IMPORT DYNPROq IMPORT FROM DATABASEq IMPORT FROM DATASETq IMPORT FROM LOGFILEq IMPORT FROM MEMORYq IMPORT SHARED BUFFERq INCLUDEq INCLUDE STRUCTUREq INCLUDE TYPEq INFOTYPESq INITIALIZATIONq INSERTq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (3 de 6) [09/11/2000 11:19:50]
  4. 4. INSERT .. INTOq INSERT REPORTq INSERT TEXTPOOLq Letra L LEAVEq LEAVE PROGRAMq LEAVE SCREENq LEAVE TO LIST-PROCESSINGq LEAVE TO SCREENq LEAVE TO TRANSACTIONq LOAD REPORTq LOCALq LOOP .. ENDLOOPq LOOP AT SCREEN .. ENDLOOPq Letra M MESSAGEq MODIFYq MODIFY CURRENT LINEq MODIFY LINEq MODIFY SCREENq MODULEq MODULE .. ENDMODULEq MOVEq MOVE-CORRESPONDINGq MULTIPLYq MULTIPLY-CORRESPONDINGq Letra N NEW-LINEq NEW-PAGEq Letra O ON CHANGE OF .. ENDONq OPEN CURSORq OPEN DATASETq Operador de asignacin "="q OVERLAYq Letra P PACKq PARAMETERSq PERFORMq POSITIONq PRINT-CONTROLq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (4 de 6) [09/11/2000 11:19:50]
  5. 5. PROCESSq PROGRAMq PROVIDE .. ENDPROVIDEq PUTq Letra R RAISEq RANGESq READ CALENDARq READ CURRENT LINEq READ DATASETq READ LINEq READ REPORTq READ TABLEq READ TEXTPOOLq RECEIVE RESULTS FROM FUNCTIONq REFRESHq REFRESH CONTROLq REFRESH SCREENq REJECTq REPLACEq REPORTq RESERVEq ROLLBACK WORKq Letra S SCANq SCROLL LISTq SEARCHq SELECT .. ENDSELECTq SELECT-OPTIONSq SELECTION-SCREENq SET BLANK LINESq SE COUNTRYq SET CURSORq SET EXTEND CHECKq SET LANGUAGEq SET LEFT SCROLL-BOUNDARYq SET LOCALE LANGUAGEq SET MARGINq SET PARAMETERq SET PF-STATUSq SET PROPERTYq SET RUN TIME ANALIZERq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (5 de 6) [09/11/2000 11:19:50]
  6. 6. SET SCREENq SET TITLEBARq SET UPDATE TASK LOCALq SET USER-COMMANDq SHIFTq SKIPq SORTq SPLITq START-OF-SELECTIONq STATICSq STOPq SUBMITq SUBTRACTq SUBTRACT-CORRESPONDINGq SUMq SUMMARYq SUPRESS DIALOGq SYNTAX-CHECKq SYNTAX-CHECK FOR DYNPROq SYNTAX-TRACEq Letra T TABLESq TOP-OF-PAGEq TRANSFERq TRANSLATEq TYPE-POOLq TYPE-POOLSq TYPESq Letra U ULINEq UNPACKq UPDATEq Letra W WAITq WHILE .. ENDWHILEq WINDOWq WRITEq WRITE TOq En esta pgina estn todas las instrucciones ABAP file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/sentencias_abap.htm (6 de 6) [09/11/2000 11:19:50]
  7. 7. ADD Definicin Aade el contenido del campo sobre el campo . Adems del formato bsico, la sentencia ADD tiene otra variante para la suma de campos adyacentes. Sintaxis: ADD TO . ADD THEN UNTIL { GIVING | TO }. Suma la secuencia de campos , , ... , . . , >n2>, ... , deben ser una secuencia de campos equidistantes en memoria del mismo tipo y longitud. Con la clusula GIVING el campo se actualiza con el resultado de la suma.q Con la clusula TO al campo se le aade el resultado de la suma.q Ejemplo 1 DATA: NUMBER TYPE I VALUE 3, SUM TYPE I VALUE 5. ADD NUMBER TO SUM. Ejemplo 2 DATA: BEGIN OF NUMBERS, ONE TYPE P VALUE 10, TWO TYPE P VALUE 20, THREE TYPE P VALUE 30, FOUR TYPE P VALUE 40, FIVE TYPE P VALUE 50, SIX TYPE P VALUE 60, END OF NUMBERS, SUM TYPE I VALUE 1000. ADD NUMBERS-ONE THEN NUMBERS-TWO UNTIL NUMBERS-FIVE GIVING SUM. Errores BCD_BADDATA : El campo P tiene un formato BCD incorrecto. BCD_FIELD_OVERFLOW : El campo del resultado es demasiado pequeo. BCD_OVERFLOW : Overflow al hacer la operacin aritmtica . COMPUTE_INT_PLUS_OVERFLOW : Al aadir se ha producido un "Overflow" en un entero. q Vease tambin: COMPUTE, ADD-CORRESPONDING ADD file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/add.htm [09/11/2000 11:21:20]
  8. 8. ADD-CORRESPONDING Definicin Aade el contenido de los componentes de un registro sobre otro. Sintaxis: ADD-CORRESPONDING TO . Aade el contenido de los componentes del registro sobre el registro , 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 . ADD-CORRESPONDING file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/add_corresponding.htm [09/11/2000 11:21:26]
  9. 9. APPEND Definicin Se utiliza para aadir registros en una tabla interna. Sintaxis: APPEND { TO | INITIAL LINE TO} . Esta sentencia aade una lnea sobre la tabla . La sentencia APPEND no comprueba duplicidades en la clave estndar. Despus de cada sentencia APPEND, la variable del sistema SY-TABIX contiene el ndice de la lnea aadida. Con la clusula 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. q 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. q APPEND LINES OF { FROM } | {TO } TO . 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. Si no se especifican las clusulas FROM y TO la tabla se copia entera sobre la tabla . Con la clusula FROM especificamos desde donde se copia la tabla. Con TO especificamos hasta dnde se copia la tabla. y son ndices de la tabla interna. q APPEND { TO } SORTED BY . 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 ordenadas por el 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. APPEND file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/append.htm [09/11/2000 11:21:40]
  10. 10. 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 TO { } { }. Despus de la asignacin, el field-symbol tiene los atributos del objeto de datos , y apunta a la misma posicin de memoria. Las clusulas y son opciones y las veremos en posteriores apartados. La sintaxis de la sentencia ASSIGN esttica, con especificacin del offset, es la siguiente: ASSIGN { + } { () } TO { } { }. 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 y son opcionales y las veremos en posteriores apartados. y 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 , el field-symbol apunta al rea perteneciente a los lmites del campo. Si es mayor que 0, siempre apunta a un rea perteneciente a los lmites del campo. Si es menor que la longitud del campo, se puede especificar un asterisco (*) para , para evitar sobrepasar el rea asignada al campos. las clusulas y 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 () TO { } { }. El nombre de objeto de dato que hay que asignar al field-symbol estar contenido en (asignacin indirecta). En tiempo de ejecucin, el sistema busca el campo referenciado siguiendo la siguiente secuencia: Si la asignacin se realiza en una subrutina o mdulo de funcin, el sistema busca el campo en la subrutina o mdulo de funcin como objeto local. q 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. q 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. q 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 y 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: ASSIGN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (1 de 5) [09/11/2000 11:22:42]
  11. 11. ASSIGN TABLE FIELD () TO { } { }. 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 y 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 () TO { } { }. ASSIGN () { + } { () }TO { } { }. ASSIGN () TO { } { }. ASSIGN TABLE FIELD () TO { } { }. es un objeto de datos con el valor de un field-symbol. Las clusulas y 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 OF STRUCTURE TO { } { }. El sistema asigna el componente de la estructura al field-symbol . puede ser un literal o una variable. Si la asignacin es satisfactoria, SY-SUBRC es 0; en caso contrario es 4. Las clusulas y son opcionales y las veremos en posteriores apartados. 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. 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. q 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. puede ser un literal o una variable. Un erro en tiempo de ejecucin se produce si no tiene un valor comprendido entre 0 y 14, o si el objeto de dato asignado no es del tipo P. q 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 . 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 . ASSIGN NAME TO . WRITE . Salida: JOHN Ejemplo 2: DATA: NAME(12) VALUE 'JACKJOHNCARL', X(10) VALUE 'XXXXXXXXXX'. ASSIGN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (2 de 5) [09/11/2000 11:22:42]
  12. 12. FIELD-SYMBOLS . ASSIGN NAME+4 TO . WRITE . ASSIGN NAME+4(*) TO . WRITE . Salida: JOHNCARLXXXX JOHNCARL Ejemplo 3: DATA SALES_DEC2(10) TYPE P DECIMALS 2 VALUE 1234567. FIELD-SYMBOLS . ASSIGN SALES_DEC2 TO DECIMALS 5. WRITE: / SALES_DEC2, / . Salida: 1,234,567.00 1,234.56700 Ejemplo 4: DATA X(4) VALUE 'Carl'. PERFORM U. FORM U. FIELD-SYMBOLS . ASSIGN LOCAL COPY OF X TO . WRITE . MOVE 'John' TO . WRITE . WRITE X. ENDFORM. Salida: Carl John Carl Ejemplo 5: DATA: NAME(4) VALUE 'XYZ', XYZ VALUE '5'. FIELD-SYMBOLS . ASSIGN (NAME) TO . WRITE . Salida: 5 Ejemplo 6: TABLES TRDIR. DATA NAME(10) VALUE 'TRDIR-NAME'. FIELD-SYMBOLS . MOVE 'XYZ_PROG' TO TRDIR-NAME. ASSIGN TABLE FIELD (NAME) TO . WRITE . Salida: XYZ_PROG Ejemplo 7: TABLES TRDIR. DATA: F(8) VALUE 'F_global', ASSIGN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (3 de 5) [09/11/2000 11:22:42]
  13. 13. 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 . ASSIGN (NAME) TO . WRITE . MOVE 'G' TO NAME. ASSIGN (NAME) TO . WRITE . MOVE 'TRDIR-NAME' TO NAME. ASSIGN (NAME) TO . WRITE . ENDFORM. Salida: F_local G_global XYZ_PROG Ejemplo 8: PROGRAM P1MAIN. TABLES TRDIR. DATA NAME(30) VALUE 'TFDIR-PNAME'. FIELD-SYMBOLS . MOVE 'XYZ_PROG' TO TRDIR-NAME. PERFORM U(P1SUB). ASSIGN (NAME) TO . WRITE . CALL FUNCTION 'EXAMPLE'. PROGRAM P1SUB. TABLES TFDIR. ... FORM U. FIELD-SYMBOLS . DATA NAME(30) VALUE 'TRDIR-NAME'. ASSIGN TABLE FIELD (NAME) TO . WRITE . MOVE 'FCT_PROG' TO TFDIR-PNAME. ENDFORM. FUNCTION-POOL FUN1. FUNCTION EXAMPLE. DATA NAME(30) VALUE 'TRDIR-NAME'. FIELD-SYMBOLS . ASSIGN (NAME) TO . IF SY-SUBRC = 0. WRITE . ELSE. WRITE / 'TRDIR-NAME cannot be accessed'. ENDIF. ASSIGN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (4 de 5) [09/11/2000 11:22:42]
  14. 14. 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 . MOVE 'XYZ_PROG' TO TRDIR-NAME. CALL FUNCTION 'EXAMPLE'. FUNCTION-POOL FUN1. FUNCTION EXAMPLE. DATA NAME(30) VALUE 'TRDIR-NAME'. FIELD-SYMBOLS . ASSIGN LOCAL COPY OF MAIN TABLE FIELD (NAME) TO . IF SY-SUBRC = 0. WRITE . 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 . DO 3 TIMES. ASSIGN COMPONENT SY-INDEX OF STRUCTURE REC TO . IF SY-SUBRC 0. EXIT. ENDIF. WRITE . ENDDO. ASSIGN COMPONENT CN OF STRUCTURE REC TO . WRITE . Output: a b c d Vease tambin: DESCRIBE FIELD, MOVE. ASSIGN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/assign.htm (5 de 5) [09/11/2000 11:22:42]
  15. 15. AT .. ENDAT Definicin La sentencia AT .. 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 { WITH }. ENDAT. La setencia AT se cierra con ENDAT, identificando de esta forma un bloque de proceso. La clusula WITH se utiliza para indicar que la sentencia AT se debe ejecutar si para el field-group le sigue el field-group . q 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 .. ENDAT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_endat.htm [09/11/2000 11:22:42]
  16. 16. 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 . 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 el sistema sobrescribe todos los campos de la clave estndar, que se encuentran a la derecha del 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. Vease tambin: LOOP. AT END OF .. ENDAT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_end_of_endat.htm [09/11/2000 11:22:43]
  17. 17. 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. 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 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. Vease tambin: LOOP. AT FIRST .. ENDAT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_first_endat.htm [09/11/2000 11:22:43]
  18. 18. 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. 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 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. Vease tambin: LOOP. AT LAST .. ENDAT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_last_endat.htm [09/11/2000 11:22:44]
  19. 19. 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.. 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: En el men "edicin", se elige la opcin "seleccionar".q Presionando la tecla de funcin F2.q Realizando un doble-click sobre la lnea o un solo click sobre un hotspot (ver las opciones sentencia WRITE).q 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_line_selection.htm (1 de 2) [09/11/2000 11:22:44]
  20. 20. 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. Vease tambin: HIDE, WINDOW, SCROLL LIST. AT LINE-SELECTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_line_selection.htm (2 de 2) [09/11/2000 11:22:44]
  21. 21. The following URL was not downloaded: http://usuarios.tripod.es/gaussr3/abap4/sentencias/at_new_endat.htm URL not downloaded file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_new_endat.htm [09/11/2000 11:22:45]
  22. 22. 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 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. Vease tambin: HIDE, SET PF-STATUS. AT PFnn file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_pf.htm [09/11/2000 11:22:45]
  23. 23. 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 . La siguiente variante nos permite crear un bloque de proceso para un solo campo de la pantalla de seleccin. 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 . 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 . 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 . 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 . 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 . 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 . 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_selection_screen.htm (1 de 2) [09/11/2000 11:22:46]
  24. 24. 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. Vease tambin: PARAMETERS, SELECT-OPTIONS. AT SELECTION-SCREEN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_selection_screen.htm (2 de 2) [09/11/2000 11:22:46]
  25. 25. 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. 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. Vease tambin: SCROLL. AT USER-COMMAND file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/at_user_command.htm [09/11/2000 11:22:46]
  26. 26. 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 '' ID 'campo1> { FIELD | DUMMY } ID 'campo2> { FIELD | DUMMY } ... ID 'campon> { FIELD | DUMMY } es el nombre del objeto de autorizacin que hay que comprobar. Un objeto de autorizacin esta compuesto de campos de autorizacin, todos ellos deben estar especificados a continuacin de las clusulas ID (, ..., ). q , ..., son los valores de autorizacin que hay que comprobar. 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. q 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. q 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'. AUTHORITY-CHECK file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/authority_check.htm [09/11/2000 11:22:47]
  27. 27. 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. BACK file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/back.htm [09/11/2000 11:22:47]
  28. 28. BREAK Definicin Con esta sentencia activamos la transaccin de depuracin de programas. Sintaxis: BREAK . Cuando esta sentencia se ejecuta, si el usuario que est ejecutando el programa es el especificado en el literal , se activa la transaccin de depuracin de programas. 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. Vease tambin: BREAK-POINT. BREAK file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/break.htm [09/11/2000 11:22:47]
  29. 29. BREAK-POINT Definicin Sentencia utilizada para activar la transaccin de depuracin de programas. Sintaxis: BREAK-POINT . 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 , 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. Vease tambin: BREAK. BREAK-POINT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/break_point.htm [09/11/2000 11:22:48]
  30. 30. CALL Definicin Permite realizar una llamada a una funcin del sistema. Sintaxis: CALL [ID FIELD ... ID FIELD ]. La 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. La clusula ID nos permite pasar parmetros por referencia. ... son los nombres de los parmetros de la funcin del sistema, ... son los campos (o literales) con los valores que hay que pasar. q Esta sentencia fue creada para uso exclusivo de los programa estndar de SAP R/3. Vease tambin: CALL FUNCTION, CALL CUSTOMER-FUNCTION, CALL DIALOG. CALL file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call.htm [09/11/2000 11:22:48]
  31. 31. 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 . 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: . 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. Vease tambin: CALL FUNCTION, CALL DIALOG, CALL. CALL CUSTOMER-FUNCTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_customer_function.htm [09/11/2000 11:22:48]
  32. 32. CALL DIALOG Definicin La sentencia CALL DIALOG llama a un mdulo de dilogo. Sintaxis: CALL DIALOG [ AND SKIP FIRST SCREEN ] [ EXPORTING [ FROM ] ... [ FROM ] ] [ IMPORTING [ TO ] ... [ TO ] ] [ USING MODE ]. puede ser un literal o una variable. Con la clusula AND SKIP FIRST SCREEN el sistema procesa la primera pantalla del mdulo de dilogo en background, si hemos rellenado todos los campos obligatorios, gracias a la sentencia SET PARAMETERS. 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, apunta a los objetos de datos del mdulo de dilogo y a los objetos de datos del programa. q 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, apunta a los objetos de datos del mdulo de dilogo y a los objetos de datos del programa. q 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. q CALL DIALOG USING [ MODE ]. Esta sentencia permite implementar el mtodo de batch-input CALL DIALOG USING. La sentencia llama al mdulo de dilogo y le pasa la informacin, en formato de juego de datos, en la tabla interna . Al igual que en la sentencia CALL TRANSACTION USING, el sistema rellena ciertas variables del sistema con informacin referente a un mensaje. La clusula MODE tiene el mismo significado que en la sentencia CALL TRANSACTION USING.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: q CALL_DIALOG_NOT_FOUND -> El mdulo de dilogo no existe.1. CALL_DIALOG_WRONG_TDCT_MODE -> El mdulo de dilogo contiene errores.2. CALL_DIALOG_NAME_TOO_LONG -> El nombre de algn parmetro es ms largo que el permitido. 3. Vease tambin: CALL FUNCTION, CALL CUSTOMER-FUNCTION, CALL. CALL DIALOG file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_dialog.htm [09/11/2000 11:22:49]
  33. 33. 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 [ EXPORTING = ... = ] [ IMPORTING = ... = ] [ TABLES = ... = ] [ CHANGING = ... = ] [ EXCEPTIONS = ... = [ OTHERS = ] ]. Llamada bsica a un mdulo de funcin. Llama al mdulo de funcin . Mdulo de funcin desconocido.q CALL_FUNCTION_NO_VB -> Slo mdulos de funcin de actualizacin pueden ser llamados desde la tarea de actualizacin. q CALL_FUNCTION_NO_ACTIVE -> Mdulo de funcin creado pero no activo.q CALL_FUNCTION_PARM_MISSING -> El mdulo de funcin espera un parmetro que no ha sido utilizado en la llamada. q CALL_FUNCTION_CONFLICT_LENG -> Parmetro con longitud errnea.q CALL_FUNCTION_CONFLICT_TYPE -> Parmetro con tipo errneo.q CALL_FUNCTION_CONFILCT_GEN_TYPE -> El tipo de parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. q CALL_FUNCTION_WRONG_ALIGNMENT -> El parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. q CALL_FUNCTION_BASE_LITL -> Se ha pasado un literal en un parmetro estructurado.q CALL FUNCTION STARTING NEW TASK [ DESTINATION ] [ DESTINATION IN GROUP { | DEFAULT } ] [ PERFORMING ON END OF TASK ] [ EXPORTING = ... = ] [ TABLES = ... = ] CALL FUNCTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_function.htm (1 de 3) [09/11/2000 11:22:50]
  34. 34. [ EXCEPTIONS = MESSAGE ... = MESSAGE ]. 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: Con la clusula DESTINATION el mdulo de funcin se ejecuta externamente como una "Remote Function Call" (RFC). puede ser una variable o un literal. q 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. q La clusula PERFORMING nos permite controlar los errores que se puedan producir en la ejecucin del mdulo de funcin. determina la rutina a ejecutar. q La clusula EXPORTING se utiliza para pasar parmetros al mdulo de funcin, de la misma forma que en la variante 1. q La clusula TABLES se utiliza para pasar tablas internas al mdulo de funcin, de la misma forma que en la variante 1.q La clusula EXCEPTIONS nos permite manejar dos excepciones del sistema (en ambos casos se puede utilizar la opcin MESSAGE para activar un mensaje): q SYSTEM_FAILURE -> Si el sistema destino no funciona.1. COMMUNICATION_FAILURE -> Si no se puede conectarnos o comunicarnos con el sistema destino.2. 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 IN UPDATE TASK [ EXPORTING = ... = ] [ TABLES = ... = ] 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 DESTINATION [ EXPORTING = ... = ] [ IMPORTING = ... = ] [ TABLES = ... = ] [ CHANGING = ... = ] [ EXCEPTIONS = ... = [ OTHERS = ] ]. El mdulo de funcin se ejcuta desde una fuente externa, a travs de una llamada "Remote Function Call" (RFC). 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. 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 IN BACKGROUND TASK [ AS SEPARATE UNIT ] [ DESTINATION ] [ EXPORTING = ... = ] [ TABLES = ... = ] 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_function.htm (2 de 3) [09/11/2000 11:22:50]
  35. 35. Vease tambin: CALL DIALOG, CALL CUSTOMER-FUNCTION, CALL. CALL FUNCTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_function.htm (3 de 3) [09/11/2000 11:22:50]
  36. 36. CALL METHOD Definicin Llama a un mtodo de un objeto externo. Utilizado para la programa OLE2. Sintaxis: CALL METHOD OF [ = ] [ EXPORTING = ... = ] [ NO FLUSH ] Llama al mtodo del objeto . puede ser un literal o una variable. En , 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.q CALL METHOD file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_method.htm [09/11/2000 11:22:50]
  37. 37. CALL SCREEN Definicin Se utiliza para llamar a una dynpro. Sintaxis: CALL SCREEN [ STARTING AT [ ENDING AT ] ] Llama al dynpro . es un nmero de pantalla del programa principal. Para abandonar la pantalla se deben utilizar las sentencias SET SCREEN o LEAVE SCREEN. Con la clusula STARTING/ENDING definimos el tamao de la ventana. y definen la esquina superior izquierda de la ventana, y 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: q DYNP_TOO_MANY_CALL_SCREENS -> Hemos alcanzado el lmite de pantallas abiertas para un programa. El lmite actualmente es de 50 pantallas. 1. Vease tambin: CALL SUBSCREEN. CALL SCREEN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_screen.htm [09/11/2000 11:22:51]
  38. 38. CALL SUBSCREEN Definicin Una subscreen es una pantalla independiente que se muestra en un rea de otra pantalla principal. Sintaxis: CALL SUBSCREEN INCLUDING . La sentencia se debe utilizar en ambos procesos PBO y PAI. Vease tambin: CALL SCREEN. CALL SUBSCREEN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_subscreen.htm [09/11/2000 11:22:51]
  39. 39. CALL TRANSACTION Definicin La sentencia CALL TRANSACTION permite ejecutar una transaccin. Sintaxis: CALL TRANSACTION [AND SKIP FIRST SCREEN ]. Esta sentencia llama a la transaccin . puede ser un literal o una variable. Para retornar desde la transaccin al programa se utiliza la sentencia LEAVE PROGRAM. Con la clusula AND SKIP FIRST SCREEN adems de llamar a la sentencia indicada se puede saltar la primera pantalla de la transaccin. Esta accin debe ir combinada con el uso de parmetros SPA/GPA de los campos de la primera pantalla de la transaccin (sentencia SET PARAMETERS) para que el momento de la ejecucin de la transaccin, sta tome los parmtros de la memoria (sentencia GET PARAMETERS) y as, de esta forma, poder saltar la primera pantalla. Si para pasar la primera pantalla se necesita rellenar parametros que no indicamos, el sistema presenta la primera pantalla y ser el usuario el que realiza la entrada manualmente. q Esta sentencia tiene una variante con la clusula USING que cambia totalmente el significado de la sentencia. Se utiliza como mtodo de batch-input. q Sentencia utilizada para implementar el mtodo CALL TRANSACTION. CALL TRANSACTION USING [ MODE ] [ UPDATE ] [ MESSAGES INTO es el cdigo de la transaccin, a la cual vamos a realizar el batch-input. es la tabla interna con los datos de batch-input (estructura BDCDATA). Si la transaccin devuelve algn tipo de mensaje, las siguientes variables del sistema guardan la siguiente informacin: SY-MSGID -> Identificador de mensaje (REPORT ..... MESSAGE-ID xx).q SY-MSGTY -> Tipo de mensaje (A -> Abend, E-> Error, ...)q SY-MSGNO -> Nmero de mensaje.q SY-MSGV1 -> Valor 1 del mensaje (si existe).q SY-MSGV2 -> Valor 2 del mensaje (si existe).q SY-MSGV3 -> Valor 3 del mensaje (si existe).q SY-MSGV4 -> Valor 4 del mensaje (si existe).q 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 . Con la clusula MODE especificamos el modo de ejecucin de la transaccin. puede tener uno de los siguientes valores (el valor por defecto es A): A -> Se muestran todas las pantallas.1. E -> Se muestran slo las pantallas con error.2. N -> No se muestra ninguna pantalla.3. Con la clusula UPDATE especificamos el modo de actualizacin de la base de datos. puede tener uno de los siguientes valores (el valor por defecto es A): A -> Modo asncrono.1. S -> Modo sncrono.2. Con la clusula MESSAGES INTO el sistema actualiza la tabla interna con todos los mensajes que CALL TRANSACTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_transaction.htm (1 de 2) [09/11/2000 11:22:52]
  40. 40. 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: CALL_TRANSACTION_NOT_FOUND -> Transaccin desconocida.1. CALL_TRANSACTION_IS_MENU -> La transaccin especificada es un men.2. CALL_TRANSACTION_USING_NESTED -> Se ha utilizado una llamada recursiva invlida para esta sentencia. 3. CALL_TRANSACTION_LOCKED -> Transaccin bloqueda.4. CALL TRANSACTION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/call_transaction.htm (2 de 2) [09/11/2000 11:22:52]
  41. 41. CASE .. ENDCASE Definicin Para ejecutar diferentes bloques de sentencias en funcin del contenido de una variable, se utiliza la sentencia CASE. Sintaxis: CASE . WHEN [ OR ]. [ ] [ WHEN [ OR ]. ] [ ] [ WHEN OTHERS. ] [ ] ENDCASE. El sistema ejecuta el bloque de sentencias correspodiente a la clusula WHEN que cumpla que el valor de coincida con el valor de , continuando el proceso a continuacin de la clusula ENDCASE. q 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. q La clusula ENDCASE es obligatoria.q 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. CASE .. ENDCASE file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/case_endcase.htm [09/11/2000 11:22:52]
  42. 42. CHAIN Definicin La sentencia CHAIN permite agrupar campos de pantalla. Sintaxis: CHAIN. ... ENDCHAIN. Si ocurre algn error sobre algn campo de pantalla interno a un CHAIN .. ENDCHAIN, todos los campos de la agrupacin permiten entrada de datos. Esto sirve para que campos relacionados, si se produce algn error, se puedan modificar conjuntamente. CHAIN file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/chain.htm [09/11/2000 11:22:52]
  43. 43. CHECK Definicin Permite terminar con la ejecucin de un bloque de proceso de forma condicional. Para terminar el paso de un bucle de forma condicional se utiliza la sentencia CHECK. Sintaxis: CHECK . CHECK { | SELECT-OPTIONS} Con la primera variante de la sentencia CHECK utilizamos una condicin. Si resulta FALSE, el sistema abandona el actual bloque de proceso para continuar con la prxima ocurrencia del mismo evento (para el evento GET) o el siguiente evento. puede ser cualquier expresin lgica. La siguiente variante de la sentencia CHECK se utiliza conjuntamente con el evento GET. puede ser un criterio de seleccin con la sentencia SELECT-OPTIONS o con la sentencia RANGES. En la definicin se asocia un criterio de seleccin a un campo de una tabla de la base de datos. En el evento GET con la tabla de la base de datos relacionada se puede utilizar esta variante. El campo debe cumplir las condiciones del criterio de seleccin. Con la clusula SELECT-OPTIONS el sistema comprueba todos los criterios de seleccin definidos para campos de la tabla referenciada en el evento GET. q CHECK . Si la condicin resulta FALSE, el sistema deja de procesar el resto de sentencias del bloque para pasar al siguiente paso del bucle. es cualquier expresin lgica. CHECK { | SELECT-OPTIONS }. es un criterio de seleccin definido con la sentencia SELECT-OPTIONS. La sentencia CHECK comprueba si el dato ledo con la sentencia GET cumple las condiciones del criterio de seleccin. Con la clusula SELECT-OPTIONS la sentencia CHECK comprueba todos los criterios de seleccin definidos para la tabla leda con CHECK. q La sentencia CHECK termina una subrutina de forma condicional. CHECK . 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: CONTINUE, EXIT, REJECT, STOP. CHECK file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/check.htm [09/11/2000 11:22:53]
  44. 44. 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 . Esta sentencia inicia el contenido del objeto de datos a sus valores iniciales por defecto. Se puede distinguir entre los siguientes casos: Tipos de datos elementales. El sistema inicia el valor del 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 | []. Con la inicializamos la lnea de cabecera de la tabla. Con [ ] 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. CLEAR file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/clear.htm [09/11/2000 11:22:53]
  45. 45. CLOSE CURSOR Definicin Sentencia utilizada para cerrar un cursor de una tabla de la base de datos. Sintaxis: CLOSE CURSOR . Debemos cerrar aquellos cursores que no vayan a ser utilizados ms en un programa. El cursor se cierra automticamente en los siguientes casos: Cuando se ejecuta una de las siguientes sentencias COMMIT WORK o ROLLBACK WORK.q Cuando una sentencia nativa (native SQL) realiza una de las siguientes funciones commit o rollback (con la opcin WITH HOLD no sucede esto). q Cuando se produce un cambio de pantalla (reports interactivos o transacciones).q Cuando se realiza una RFC o "Remote Function Call".q Vease tambin: OPEN CURSOR. CLOSE CURSOR file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/close_cursor.htm [09/11/2000 11:22:54]
  46. 46. CLOSE DATASET Definicin Esta sentencia cierra un fichero del servidor de aplicacin. Sintaxis: CLOSE DATASET . Cierra el fichero . puede ser un literal o un campo, de la misma forma que en la sentencia OPEN DATASET. La operacin de cerrar un fichero es slo necesaria si quieres borrar el contenido de ste durante otra operacin de escritura. Para evitar errores y hacer que los programas sean ms fciles de leer, se debe cerrar un fichero antes de volver a utilizar la sentencia OPEN DATASET. Utilizando la sentencia CLOSE el programa se divide en bloques lgicos, haciendo ms fcil el mantenimiento. Vease tambin: OPEN DATASET. CLOSE DATASET file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/close_dataset.htm [09/11/2000 11:22:54]
  47. 47. 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 ( ). 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. CNT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/cnt.htm [09/11/2000 11:22:55]
  48. 48. COLLECT Definicin Para rellenar lneas en una tabla interna con la comprobacin por parte del sistema de que la clave estndar de la tabla ser nica. Sintaxis: COLLECT [ INTO ] [ SORTED BY ]. Para especificar un rea de trabajo distinta al rea de trabajo de la tabla interna se utiliza la clusula INTO. q 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. q La clusula SORTED BY no debe utilizarse. En futuras versiones esta clusula desaparecer. En su lugar se puede utilizar la sentencia APPEND. q Ejemplo: DATA: BEGIN OF COMPANIES OCCURS 10, NAME(20), SALES TYPE I, END OF COMPANIES. COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 10. COLLECT COMPANIES. COMPANIES-NAME = 'Tiger'. COMPANIES-SALES = 20. COLLECT COMPANIES. COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 30. COLLECT COMPANIES. El resultado en la tabla companies sera el siguiente: NAME SALES Duck 40 Tiger 20 Vease tambin: APPEND, MODIFY, INSERT. COLLECT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/collect.htm [09/11/2000 11:22:55]
  49. 49. COMMIT WORK Definicin A veces es necesario asegurarse que los cambios en la base de datos se han realizado, antes de continuar con el proceso. Por el contrario, a veces es necesario deshacer algunos cambios realizados en la base de datos. Para confirmar los cambios realizados sobre la base de datos se utiliza la sentencia COMMIT WORK Sintaxis: COMMIT WORK [ AND WAIT ]. para deshacer los cambios realizados en la base de datos se utiliza la sentencia ROLLBACK WORK. Estas sentencias tienen un papel importante en la programacin de transacciones de dilogo. Con la clusula AND WAIT, el programa se para hasta que la tarea de actualizacin termina. Si la actualizacin es satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0. Vease tambin: ROLLBACK WORK. COMMIT WORK file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/commit_work.htm [09/11/2000 11:22:56]
  50. 50. CREATE OBJECT Definicin Genera un objeto de una clase determinada. Sentencia utilizada en los programa OLE. Sintaxis: CREATE OBJECT [ LANGUAGE ]. Para crear un de una clase determinada desde ABAP/4, dicho objeto debe ser registrado en el sistema SAP a travs de la transaccin SOLE. Con la clusula LANGUAGE determinamos el lenguaje del objeto. Si no especificamos esta clusula se utilizar el idioma ingls. q Vease tambin: SET PROPERTY, GET PROPERTY, CALL METHOD, FREE OBJECT. CREATE OBJECT file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/create_object.htm [09/11/2000 11:23:01]
  51. 51. COMMUNICATION Definicin Permite realizar comunicacin directa "programa-a-programa" (CPI-C) definida por IBM en el contexto de los estndares SAA. Sintaxis: COMMUNICATION INIT DESTINATION ID [ RETURNCODE ]. Inicia la conexin "programa-a-programa". En el campo se actualiza con el cdigo de retorno de la sentencia. COMMUNICATION ALLOCATE ID [ RETURNCODE ]. Establece la conexin con el otro programa. Esta sentencia debe estar a continuacin de la variante anterior. En el campos se actualiza con el cdigo de retorno de la sentencia. COMMUNICATION ACCEPT ID [ RETURNCODE ]. Acepta la conexin requerida por el programa que controla la comunicacin. En el campo se actualiza con el cdigo de retorno de la sentencia. COMMUNICATION SEND ID BUFFER [ RETURNCODE ] [ LENGTH ]. Envo de datos al programa principal. Los datos enviados se encuentran en el campo . En el campo se actualiza con el cdigo de retorno de la sentencia. La clusula LENGTH se utiliza para especificar la longitud del campo . COMMUNICATION RECEIVE ID BUFFER DATAINFO STATUSINFO [ RETURNCODE ] [ LENGTH ] [ RECEIVED ] [ HOLD ]. Recibe datos de otro programa sobre el campo . En el campo se actualiza con el cdigo de retorno de la sentencia. La clusula LENGTH se utiliza para especificar la longitud del campo . Despus de la llamada el campo contiene el nmero de bytes recibidos. Con la clusula HOLD el proceso espera la recepcin completa de los datos. COMMUNICATION DEALLOCATE ID [ RETURNCODE ]. Cierra la conexin "programa-a-programa" y libera todos los recursos utilizados. En el campo se actualiza con el cdigo de retorno de la sentencia. Ejemplo 1: 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (1 de 7) [09/11/2000 11:23:55]
  52. 52. 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: TYPES: CONVERSATION_ID(8) TYPE C, DESTINATION(8) TYPE C, RETURN_CODE LIKE SY-SUBRC. COMMUNICATION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (2 de 7) [09/11/2000 11:23:55]
  53. 53. DATA: CONVID TYPE CONVERSATION_ID, DEST TYPE DESTINATION VALUE 'C00', CPIC_RC TYPE RETURN_CODE. INCLUDE RSCPICDF. COMMUNICATION INIT DESTINATION DEST ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK. WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT. ENDIF. COMMUNICATION ALLOCATE ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK. WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT. ENDIF. RECORD = 'Prueba de mensaje'. 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: 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 COMMUNICATION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (3 de 7) [09/11/2000 11:23:55]
  54. 54. DATAINFO DINFO RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK. EXIT. ENDIF. ENDFORM. Ejemplo 6: 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (4 de 7) [09/11/2000 11:23:55]
  55. 55. 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (5 de 7) [09/11/2000 11:23:55]
  56. 56. 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 file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (6 de 7) [09/11/2000 11:23:55]
  57. 57. 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. COMMUNICATION file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/communication.htm (7 de 7) [09/11/2000 11:23:55]
  58. 58. COMPUTE Definicin Para procesar objetos de datos numricos al asignar el valor resultante a un objeto de datos, se puede utilizar la sentencia compute. Sintaxis: [ COMPUTE ] = . La palabra clave COMPUTE es opcional (nica sentencia que su palabra clave es opcional). El resultado de la operacin matemtica especificada en se asigna al campo . Si el resultado de la operacin no tiene el mismo tipo de dato que el campo , el sistema realiza la conversin oportuna de forma automtica. Los operandos de deben ser de tipo numrico. Los operadores vlidos son los siguientes: Operador Significado Ejemplo + Suma resultado = campo1 + campo2. - Diferencia resultado = campo1 - campo2. * Multiplicacin resultado = campo1 * campo2. / Divisin resultado = campo1 / campo2. DIV Divisin entera resultado = campo1 DIV campo2. MOD Resto de una divisin entera resultado = campo1 MOD campo2. ** Exponenciacin resultado = campo1 ** campo2. 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: [ COMPUTE ] = ( ). Los espacios en blanco entre los parntesis y los argumentos son obligatorios. El resultado de llamar a la funcin con el argumento es asignado a . Las funciones existentes pueden clasificarse en los siguientes grupos: q 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. q 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. q Funciones vlidas para todos los tipos numricos (F, I y P): Operador Significado Ejemplo ABS Valor absoluto del argumento resultado = ABS(campo ). SIGN Signo del argumento. La funcin de vuelve 1 si el argumento es positivo, 0 si el argumento es 0 y -1 si es negativo. resultado = SIGN(campo ). CEIL Valor entero inferior al argumento resultado = CEIL(campo ). COMPUTE file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/compute.htm (1 de 2) [09/11/2000 11:23:56]
  59. 59. FLOOR Valor entero superior al argumento resultado = FLOOR(campo ). TRUNC Parte entera del argumento resultado = TRUNC(campo1 ). FRAC Parte fraccionaria del argumento resultado = FRAC(campo1 ). Funciones slo para el tipo F: Operador Significado Ejemplo ACOS Arcocoseno resultado = ACOS(campo ). ASIN Arcoseno resultado = ASIN(campo ). ATAN Arcotangente resultado = ATAN(campo ). COS Coseno resultado = COS(campo ). SIN Seno resultado = SINcampo1 ). TAN Tangente resultado = TAN(campo1 ). COSH Coseno hiperblico resultado = COSHcampo1 ). SINH Seno hiperblico resultado = SINHcampo1 ). TANH Tangente hiperblico resultado = TANH(campo1 ). EXP Exponenciacin resultado = EXP(campo1 ). LOG Logaritmo natural (base e) resultado = LOG(campo1 ). LOG10 Logaritmo base 10 resultado = LOG10(campo1 ). SQRT Raz cuadrada 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 Significado Ejemplo STRLEN Determina la longitud hasta el ltimo carcter distinto del espacio en blanco. resultado = STRLEN(campo ). Vease tambin: ADD, SUBTRACT, MULTIPLY, DIVIDE. COMPUTE file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/compute.htm (2 de 2) [09/11/2000 11:23:56]
  60. 60. CONCATENATE Definicin Se utiliza para concatenar varios campos alfanumricos en uso solo. Sintaxis: CONCATENATE ... INTO [ SEPARATED BY ]. Esta sentencia concatena los campos campos ... en el campo . Los espacios en blanco se ignoran durante la operacin. Con la clusula SEPARATED BY se puede especificar un campo alfanumrico (el campo ) que ser utilizado como separador entre los campos ... . Si el resultado de la concatenacin entra en el campo , SY-SUBRC = 0, si por el contrario, es necesario el truncamiento, SY-SUBRC = 4. Ejemplo 1: DATA: ONE(10) VALUE 'Ivan', TWO(3) VALUE ' Rodrigo', THREE(10) VALUE ' Baos', NAME(20). CONCATENATE ONE TWO THREE INTO NAME. La variable NAME valdra: Ivan Rodrigo Baos Ejemplo 2: 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. CONCATENATE file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/concatenate.htm [09/11/2000 11:23:57]
  61. 61. CONDENSE Definicin Para borrar espacios en blanco superfluos en campos alfanumricos. Sintaxis: CONDENSE [ NO-GAPS ]. Borra cualquier secuencia de espacios en blanco, dejando slo uno que exista entre palabras existentes en . Los espacios en blanco por la izquierda tambin desaparecen. Con la clusula NO-GAPS todos los espacios en blanco desaparecen. Ejemplo 1: 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. CONDENSE file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/condense.htm [09/11/2000 11:23:57]
  62. 62. CONSTANTS Definicin Declaracin de constantes, es decir, variables o registros cuyos valores no pueden ser modificados durante la ejecucin del programa. Sintaxis: CONSTANTS [ () ] [ ] [ ]. , , y son las mismas opciones de la sentencia DATA. Debemos darnos cuenta de que en esta sentencia, la opcin es obligatoria. El valor inicial indicado con no puede ser cambiado durante la ejecucin del programa. CONSTANTS: BEGIN OF , .... END OF . La sintaxis de un registro de constantes es igual a la sintaxis de la sentencia DATA, con la diferencia de que la clusula VALUE es obligatoria. Ejemplo: CONSTANTS CHAR1 VALUE 'X'. CONSTANTS INT TYPE I VALUE 99. CONSTANTS: BEGIN OF CONST_REC, C(2) TYPE I VALUE 'XX', N(2) TYPE N VALUE '12', X TYPE X VALUE 'FF', I TYPE I VALUE 99, P TYPE P VALUE 99, F TYPE F VALUE '9.99E9', D TYPE D VALUE '19950101', T TYPE T VALUE '235959', END OF CONST_REC. CONSTANTS file:///C|/DOWNLOADS INTERNET/Ayuda ABAP 4/constants.htm [09/11/2000 11:23:58]
  63. 63. 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