Ejemplo s

download Ejemplo s

of 149

Transcript of Ejemplo s

Captulo Cinco PROGRAM ZPRUEBA. WRITE 'PROGRAMA ABAP/4'.

************************************************** *** PROGRAMA: MI PRIMER PROGRAMA. *** AUTOR ..: JOS LUIS HERREROS ************************************************** PROGRAM ZPRUEBA. "Nombre del programa. WRITE 'PROGRAMA ABAP/4'. "escribo un texto en pantalla.

REPORT ZPRUEBA. TABLES: BKPF. GET BKPF. WRITE BKPF-BLDAT. WRITE BKPF-BUDAT UNDER BKPF-BLDAT. REPORT ZPRUEBA.TABLES: BKPF. GET BKPF. WRITE BKPF-BLDAT. WRITE BKPF-BUDAT UNDER BKPF-BLDAT. WRITE 'UNO'. WRITE 'DOS'. WRITE 'TRES'. Podramos escribir: WRITE: 'UNO', 'DOS', 'TRES'. FINAL = INICIAL + 1. FINAL = INICIAL + 10. FINAL = INICIAL + 100. Podramos escribir: FINAL = INICIAL + : 1, 10, 100. GET BKPF. IF BKPF-BUDAT > '19980620'. MOVE BKPF-BUDAT TO HOY. ELSE. MOVE BKPF-BUDAT TO OTRO-DIA. ENDIF. Captulo Seis 'esto es un literal' 'a' 'Esto es un ''literal'' encerrado entre comillas simples'

123 -34 +3456789 '46754674567456745674567485467' '+0.58456' '-3.1456' '+12E+23' TABLES: KNA1, KNB1, BKPF, BSEG. DATA: DATA DATA DATA DATA DATA: DATA: NUMERO1(8) TYPE P, TEXTO1(25) TYPE C, FLAG1. NUMERO2(8) TYPE P. NUMERO3 LIKE NUMERO1. CODIGO LIKE SY-SUBRC. CLIENTE LIKE KNA1-KUNNR TEXTO2(25) TYPE C VALUE 'Texto inicial', FLAG2 VALUE IS INITIAL. NUMERO4(4) TYPE P DECIMALS 2 VALUE '234,34'.

DATA: BEGIN OF CLIENTE, NOMBRE(30) DIRECCION(30) CODIGO_POSTAL(5) END OF CLIENTE. TYPES: BEGIN OF LINEA,

TYPE C,

TYPE C, TYPE N,

COLUMNA1(3) TYPE C, COLUMNA2(4) TYPE N, COLUMNA3(6) TYPE P DECIMALS 2, END OF LINEA, TABLA TYPE LINEA OCCURS 10. DATA: TABLA1 TYPE TABLA, TABLA2 LIKE TABLA1 WITH HEADER LINE. TYPES: BEGIN OF LINEA,

DATA:

COLUMNA1(3) TYPE C, COLUMNA2(4) TYPE N, COLUMNA3(6) TYPE P DECIMALS 2, END OF LINEA, TABLA1 TYPE LINEA OCCURS 10, TABLA2 TYPE LINEA OCCURS 20 WITH HEADER LINE. BEGIN OF TABLA OCCURS COLUMNA1 TYPE COLUMNA2 TYPE COLUMNA3 TYPE END OF TABLA. 10, I, I, I,

DATA:

CONSTANTS: PI(3)

TYPE P DECIMALS 2 VALUE '3,14'.

CONSTATNS: BEGIN OF CONSTANTES, IVA1(2) TYPE N VALUE '7', IVA2(2) TYPE N VALUE '16', END OF CONSTANTES. PERFORM: ESCRIBIR1, ESCRIBIR1, ESCRIBIR2, ESCRIBIR2. FORM ESCRIBIR1. DATA NUMERO1(3) TYPE P. ADD 1 TO NUMERO1. WRITE NUMERO1. ENDFORM. FORM ESCRIBIR2. STATICS NUMERO2(3) TYPE P. ADD 1 TO NUMERO2. WRITE NUMERO2. ENDFORM. RANGES BELNR FOR BKPF-BELNR. MOVE: 'I' TO BELNR-SIGN, 'BT' TO BELNR-OPTION, '0000900000' TO BELNR-LOW, '0000999999' TO BELNR-HIGH. . . . SELECT * FROM BKPF. WHERE BELNR IN BELNR. . . . ENDSELECT PROGRAM ZPRUEBA. DATA: CAMPO TYPE F, LONGITUD TYPE I. DESCRIBE FIELD CAMPO LENGTH LONGITUD. PROGRAM ZPRUEBA. DATA: CAMPO(8) TYPE N, TIPO. DESCRIBE FIELD CAMPO TYPE TIPO. PROGRAM ZPRUEBA. DATA: FECHA TYPE D, LONG TYPE I. DESCRIBE FIELD FECHA OUTPUT-LENGTH LONG. PROGRAM ZPRUEBA. DATA: CAMPO TYPE P DECIMALS 2, DEC TYPE I. DESCRIBE FIELD CAMPO TYPE TIPO. report zPRUEBA. tables: tcurs. data: rutina_conversion(9) type c. describe field tcurs-gdatu edit mask rutina_conversion. write rutina_conversion.

TABLES: KNA1. FIELD-GROUPS: HEADER, DATOS. . . . INSERT KNA1-KUNNR INTO HEADER. INSERT KNA1-NAME1, KNA1-PSTLZ, KNA1-ORT01 INTO DATOS. FIELD-SYMBOLS TYPE D. CONTROL TABLA TYPE TABLEVIEW. . . . REFRESH CONTROL TABLA FROM SCREEN 1000. INFOTYPES 0001. TYPES TEXTO(30) TYPE C. TYPES: BEGIN OF NOMBRE, NOMBRE TYPE TEXTO, APELLIDO1 TYPE TEXTO, APELLIDO2 TYPE TEXTO, END OF NOMBRE. DATA: NOMBRE1 TYPE NOMBRE, NOMBRE2 TYPE NOMBRE. TYPES VECTOR TYPE I OCCURS 10. TYPES: BEGIN OF LINEA, COLUMNA1(3) COLUMNA2(4) COLUMNA3(6) END OF LINEA. TYPES: TABLA TYPE LINEA OCCURS

TYPE C, TYPE N, TYPE P DECIMALS 2, 10.

TYPES VECTOR TYPE I OCCURS 10. TYPES: BEGIN OF LINEA, COLUMNA1(3) TYPE C, COLUMNA2(4) TYPE N, COLUMNA3(6) TYPE P DECIMALS 2, END OF LINEA. TYPES: TABLA TYPE LINEA OCCURS 10. TYPES: BEGIN OF LINEA_COMPLEJA, TABLA1 TYPE VECTOR, TABLA2 TYPE TABLA, END OF TABLA_COMPLEJA. TYPES: TABLA_COMPLEJA TYPE LINEA_COMPLEJA OCCURS 10. TYPE-POOL TIPO. TYPES: BEGIN OF TIPO_DATOS, NOMBRE(25), APELLIDO1(25), APELLIDO2(25), END OF TIPO_DATOS.

TYPES TIPO_NIF(15) TYPE C. CONSTANTS TIPO_IVA TYPE N VALUE 16. PROGRAM ZPRUEBA. TYPE-POOLS TIPO. DATA: DATO1 TYPE TIPO_DATOS, DATO2 TYPE TIPO_NIF, DATO3 TYPE TIPO_IVA. PROGRAM ZPRUEBA. DATA: TEXTO1(14) TYPE C, TEXTO2 LIKE TEXTO1, NUMERO TYPE I. TEXTO1 NUMERO TEXTO2 WRITE: = 'El nmero'. = 100. = 'es un entero'. TEXTO1, NUMERO, TEXTO2.

PROGRAM ZPRUEBA. TYPES: TEXTO(10) TYPE C, EMPAQUETADO TYPE P DECIMALS 2. DATA: TEXTO TYPE TEXTO, NUMERO TYPE EMPAQUETADO. TEXTO = '4 / 3 ='. NUMERO = 4 / 3. WRITE: TEXTO, NUMERO. Captulo Siete DATA: BEGIN OF TABLA OCCURS 10, COLUMNA1 TYPE C, COLUMNA2 TYPE I, END OF TABLA.

APPEND INITIAL LINE TO TABLA. DO 3 TIMES. TABLA-COLUMNA1 = SY-INDEX. TABLA-COLUMNA2 = SY-INDEX ** 2. APPEND TABLA. ENDDO. DATA: BEGIN OF LINEA, COL1 TYPE I, COL2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 2. = = = = 45 56 67 34 TABLA-COL2 TABLA-COL2 TABLA-COL2 TABLA-COL2 = = = = 1. 2. 3. 4. APPEND APPEND APPEND APPEND TABLA1 TABLA1 TABLA2 TABLA2 SORTED SORTED SORTED SORTED BY BY BY BY COL1. COL1. COL1. COL1.

TABLA-COL1 TABLA-COL1 TABLA-COL1 TABLA-COL1 DATA:

BEGIN OF TABLA OCCURS 10,

COLUMNA1 TYPE C, COLUMNA2 TYPE I, END OF TABLA. DO 3 TIMES. TABLA-COLUMNA1 TABLA-COLUMNA2 COLLECT TABLA. TABLA-COLUMNA1 TABLA-COLUMNA2 COLLECT TABLA. ENDDO. DATA: = SY-INDEX. = SY-INDEX. = SY-INDEX. = SY-INDEX.

BEGIN OF TABLA OCCURS 10, COLUMNA1 TYPE C, COLUMNA2 TYPE I, END OF TABLA. INSERT TABLA INDEX 2. INSERT TABLA INDEX 2.

INSERT INITIAL LINE INTO TABLA INDEX 1. TABLA-COLUMNA1 = 'A'. TABLA-COLUMNA2 = 3. TABLA-COLUMNA1 = 'B'. TABLA-COLUMNA2 = 5. DATA: BEGIN OF LINEA, COLUMNA1 TYPE C, COLUMNA2 TYPE I, END OF LINEA, TABLA1 LIKE LINEA OCCURS 10, TABLA2 LIKE LINEA OCCURS 10. TABLA-COLUMNA2 = 1. TABLA-COLUMNA2 = 2. TABLA-COLUMNA2 = 3. TABLA-COLUMNA2 = 4. FROM 1 TO 1 TO TABLA2.

TABLA-COLUMNA1 = 'A'. TABLA-COLUMNA1 = 'B'. TABLA-COLUMNA1 = 'C'. TABLA-COLUMNA1 = 'D'. APPEND LINES OF TABLA1 DATA:

APPEND APPEND APPEND APPEND

TABLA1. TABLA1. TABLA2. TABLA2.

BEGIN OF LINEA, COLUMNA1 TYPE C, COLUMNA2 TYPE I, END OF LINEA, TABLA1 LIKE LINEA OCCURS 10, TABLA2 LIKE LINEA OCCURS 10. TABLA-COLUMNA2 = TABLA-COLUMNA2 = TABLA-COLUMNA2 = TABLA-COLUMNA2 = INTO TABLA2 INDEX 1. 2. 3. 4. 2. APPEND APPEND APPEND APPEND TABLA1. TABLA1. TABLA2. TABLA2.

TABLA-COLUMNA1 = 'A'. TABLA-COLUMNA1 = 'B'. TABLA-COLUMNA1 = 'C'. TABLA-COLUMNA1 = 'D'. INSERT LINES OF TABLA1

TYPES: BEGIN OF LINEA, COLUMNA1(3) TYPE C, COLUMNA2(4) TYPE N, COLUMNA3(6) TYPE P DECIMALS 2, END OF LINEA. DATA: TABLA1 TYPE LINEA OCCURS 10, TABLA2 TYPE LINEA OCCURS 20. . . .

MOVE TABLA1 TO TABLA2. MOVE TABLA2[] TO TABLA1. . . . TABLA2[] = TABLA1. TABLA1 = TABLA2. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA. TABLA LIKE LINEA OCCURS 10. DO 30 TIMES. LINEA-COLUMNA1 = SY-INDEX. LINEA-COLUMNA2 = SY-INDEX * SY-INDEX. APPEND LINEA TO TABLA. ENDDO. LOOP AT TABLA FROM 10 TO 25 WHERE COLUMNA2 > 400. WRITE: / SY-TABIX, LINEA-COLUMNA2. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA. TABLA LIKE LINEA OCCURS 10. DO 30 TIMES. LINEA-COLUMNA1 = SY-INDEX. LINEA-COLUMNA2 = SY-INDEX * SY-INDEX. APPEND LINEA TO TABLA. ENDDO. READ TABLE TABLA INDEX 7. WRITE: SY-SUBRC, SY-TABIX, TABLA-COLUMNA2. READ TABLE TABLA INDEX 31. WRITE: / SY-SUBRC. DATA: BEGIN OF LINEA, COL1 TYPE C, COL2 TYPE I, COL3 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. LINEA-COL1 = 'A'. DO 3 TIMES. LINEA-COL2 = SY-INDEX. LINEA-COL3 = SY-INDEX ** 2. APPEND LINEA TO TABLA. ENDDO. LINEA-COL1 = 'B'. DO 3 TIMES. LINEA-COL2 = 2 * SY-INDEX. LINEA-COL3 = (2 * SY-INDEX) ** 2. APPEND LINEA TO TABLA. ENDDO. LOOP AT TABLA INTO LINEA. AT FIRST.

WRITE / 'Proceso FIRST'. ULINE. ENDAT. AT NEW LINEA-COL1. WRITE / 'NEW', LINEA-COL1. ULINE. ENDAT. WRITE / LINEA-COL1, LINEA-COL2, LINEA-COL3. AT END OF LINEA-COL1. ULINE WRITE / 'END', LINEA-COL1. ENDAT. AT LAST. ULINE. WRITE / 'Proceso FIRST'. ENDAT. ENDLOOP. DATA: BEGIN OF LINEA, COL1 TYPE I, COL2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. DO 3 TIMES. LINEA-COL1 = SY-INDEX. LINEA-COL2 = SY-INDEX ** 2. APPEND LINEA TO TABLA. ENDDO. LOOP AT TABLA INTO LINEA. WRITE: / LINEA-COL1, LINEA-COL2. SUM. WRITE: / LINEA-COL1, LINEA-COL2. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA. TABLA LIKE LINEA OCCURS 10. DATA: LIN TYPE I, OCC TYPE I. DO 3 TIMES. LINEA-COLUMNA1 = SY-INDEX. LINEA-COLUMNA2 = SY-INDEX * * 2. APPEND LINEA TO TABLA. ENDDO. LINEA-COLUMNA1 = 10. LINEA-COLUMNA2 = 10 ** 2. MODIFY TABLA FROM LINEA INDEX 2. LOOP AT TABLA INTO LINEA. WRITE: / SY-TABIX, LINEA-COLUMNA1, LINEA-COLUMNA2. ENDLOOP. DATA LINEA(72) OCCURS 10 WITH HEADER LINE.

LINEA = 'Esta es la primera lnea'. LINEA = 'Esta es la segunda lnea'. LINEA = 'Esta es la tercera lnea'. WRITE 'primera' TO LINEA+11 INDEX 2. LOOP AT LINEA. WRITE / LINEA. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. DO 30 TIMES. LINEA-COLUMNA1 = SY-INDEX. ENDDO. LOOP AT TABLA INTO LINEA. IF LINEA-COLUMNA < 28. DELETE TABLA. ENDIF. ENDLOOP.

APPEND LINEA. APPEND LINEA. APPEND LINEA.

LINEA-COLUMNA2 = SY-INDEX ** 2. APPEND TABLA.

LOOP AT TABLA INTO LINEA. WRITE: / SY-TABIX, LINEA-COLUMNA1, LINEA-COLUMNA2. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. DO 5 TIMES. LINEA-COLUMNA1 = SY-INDEX. APPEND LINEA TO TABLA. ENDDO. DELETE TABLA INDEX: 2, 3, 4. WRITE: 'sy-subrc', SY-SUBRC. LOOP AT TABLA INTO LINEA. WRITE: / SY-TABIX, LINEA-COLUMNA1, LINEA-COLUMNA2. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. LINEA-COLUMNA1 = 1. LINEA-COLUMNA1 = 1. LINEA-COLUMNA2 = 'A' APPEND LINEA TO TABLA. LINEA-COLUMNA2 = 'A' APPEND LINEA TO TABLA. LINEA-COLUMNA2 = SY-INDEX ** 2.

LINEA-COLUMNA1 LINEA-COLUMNA1 LINEA-COLUMNA1 LINEA-COLUMNA1 LINEA-COLUMNA1

= = = = =

1. 2. 3. 4. 5.

LINEA-COLUMNA2 LINEA-COLUMNA2 LINEA-COLUMNA2 LINEA-COLUMNA2 LINEA-COLUMNA2

= = = = =

'B' 'B' 'B' 'B' 'A'

APPEND APPEND APPEND APPEND APPEND

LINEA LINEA LINEA LINEA LINEA

TO TO TO TO TO

TABLA. TABLA. TABLA. TABLA. TABLA.

DELETE ADJACENT DUPLICATES FROM TABLA COMPARING ALL FIELDS. DELETE ADJACENT DUPLICATES FROM TABLA COMPARING COLUMNA1. DELETE ADJACENT DUPLICATES FROM TABLA. LOOP AT TABLA INTO LINEA. WRITE: / LINEA-COLUMNA1, LINEA-COLUMNA2. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA, TABLA LIKE LINEA OCCURS 10. DO 40 TIMES. LINEA-COLUMNA1 = SY-INDEX. LINEA-COLUMNA2 = SY-INDEX ** 2. APPEND LINEA TO TABLA. ENDDO. DELETE TABLA FROM 3 TO 38 WHERE COLUMNA2 > 20. LOOP AT TABLA INTO LINEA. WRITE: / LINEA-COLUMNA1, LINEA-COLUMNA2. ENDLOOP. DATA: BEGIN OF TABLA OCCURS 10, PAIS(3) TYPE C, NOMBRE(10) TYPE C, EDAD TYPE I, PESO TYPE P DECIMALS 2, END OF TABLA. TABLA-PAIS = 'USA'. SO = 70. APPEND TABLA. TABLA-PAIS = 'ES '. SO = 74. APPEND TABLA. TABLA-PAIS = 'GB '. SO = 55. APPEND TABLA. TABLA-PAIS = 'MEX'. SO = 56. APPEND TABLA. TABLA-PAIS = 'ITL'. APPEND TABLA. TABLA-NOMBRE = 'Peter'. TABLA-NOMBRE = 'Jos'. TABLA-NOMBRE = 'Juan'. TABLA-NOMBRE = 'Mara'. TABLA-EDAD = 20.TABLA-PE TABLA-EDAD = 25.TABLA-PE TABLA-EDAD = 18.TABLA-PE TABLA-EDAD = 32.TABLA-PE

TABLA-NOMBRE = 'Giovanna'. TABLA-EDAD = 28.TABLA-PESO = 62.

SORT TABLA. LOOP AT TABLA. WRITE: / TABLA-PAIS, TABLA-NOMBRE, TABLA-EDAD, TABLA-PESO. ENDLOOP. SKIP. SORT TABLA DESCENDING BY EDAD. LOOP AT TABLA.

WRITE: / TABLA-PAIS, TABLA-NOMBRE, TABLA-EDAD, TABLA-PESO. ENDLOOP. DATA: BEGIN OF LINEA, COLUMNA1 TYPE I, COLUMNA2 TYPE I, END OF LINEA. TABLA LIKE LINEA OCCURS 10. DATA: LIN TYPE I, OCC TYPE I. DESCRIBE TABLE TABLA LINE LIN OCCURS OCC. WRITE : LIN, OCC. DO 30 TIMES. LINEA-COLUMNA1 = SY-INDEX. LINEA-COLUMNA2 = SY-INDEX * SY-INDEX. APPEND LINEA TO TABLA. ENDDO. DESCRIBE TABLE TABLA LINE LIN OCCURS OCC. WRITE : LIN, OCC. DATA: BEGIN OF LINEA, COL1 TYPE I, COL2 TYPE I, END OF LINEA, TABLA1 LIKE LINE OCCURS 10, TABLA2 LIKE LINE OCCURS 10. DO 3 LINES. LINEA-COL1 = SY-INDEX. LINEA-COL2 = SY-INDEX ** 2. APPEND LINEA TO TABLA1. ENDDO. MOVE TABLA1 TO TABLA2. LINEA-COL1 = 10. LINEA-COL2 = IF TABLA1 GT TABLA2. WRITE / 'La tabla TABLA1 es ENDIF. APPEND LINEA TO TABLA2. IF TABLA1 EQ TABLA2. WRITE / 'La tabla TABLA1 es ENDIF. LINEA-COL1 = 30. LINEA-COL2 = IF TABLA2 LE TABLA1. WRITE / 'La tabla TABLA2 es ENDIF. LINEA-COL1 = 50. LINEA-COL2 = IF TABLA1 NE TABLA2. WRITE / 'La tabla TABLA1 no ENDIF. IF TABLA1 LT TABLA2. WRITE / 'La tabla TABLA1 es ENDIF.

20. APPEND LINEA TO TABLA1. mayor que la tabla TABLA2'.

igual a la tabla TABLA2'. 80. APPEND LINEA TO TABLA1. menor que la tabla TABLA1'. 60. APPEND LINEA TO TABLA2. es igual a la tabla TABLA2'. menor que la tabla TABLA2'.

DATA: BEGIN OF TABLA OCCURS 10. CAMPO(3) TYPE C, END OF TABLA. TABLA-CAMPO = 'ABC'. APPEND TABLA.

TABLA-CAMPO = 'DEF'. APPEND TABLA. REFRESH TABLA. WRITE TABLA-CAMPO. LOOP AT TABLA. WRITE / TABLA-CAMPO. ENDLOOP. DATA: BEGIN OF TABLA OCCURS 10. CAMPO(3) TYPE C, END OF TABLA. TABLA-CAMPO = 'ABC'. APPEND TABLA. TABLA-CAMPO = 'DEF'. APPEND TABLA. CLEAR TABLA. WRITE TABLA-CAMPO. LOOP AT TABLA. WRITE / TABLA-CAMPO. ENDLOOP. DATA: BEGIN OF TABLA OCCURS 10. CAMPO(3) TYPE C, END OF TABLA. TABLA-CAMPO = 'ABC'. APPEND TABLA. TABLA-CAMPO = 'DEF'. APPEND TABLA. FREE TABLA. REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65. TABLES: KNA1, BSID. FIELD-GROUPS: HEADER, DATOS. INSERT KNA1-NAME1 INTO HEADER. INSERT KNA1-KUNNR BSID-DMBTR BSID-WAERS INTO DATOS. DATA: TOTAL1 LIKE BSID-DMBTR. START-OF-SELECTION. GET KNA1. GET BSID. IF BSID-SHKZG = 'H'. BSID-DMBTR = BSID-DMBTR * -1. ENDIF. EXTRACT DATOS. END-OF-SELECTION. SORT. LOOP. WRITE: /001 KNA1-NAME1, KNA1-KUNNR, 050 BSID-DMBTR CURRENCY BSID-WAERS. AT END OF KNA1-NAME1. TOTAL1 = SUM(BSID-DMBTR). WRITE: /001 'Suma Cliente' COLOR COL_TOTAL, KNA1-NAME1 COLOR COL_TOTAL, 050 TOTAL1 CURRENCY BSID-WAERS COLOR COL_TOTAL.

ENDAT. ENDLOOP. Captulo Ocho DATA: DATO(8) VALUE '16091995'. FIELD-SYMBOLS TYPE D. ASSIGN DAT TO . WRITE . DATA: DATO(8) VALUE '19980727'. FIELD-SYMBOLS TYPE D. ASSIGN DAT TO TYPE 'D'. WRITE . DATA: AREA-TRABAJO(100) VALUE '001LH 123419950627', BEGIN OF LINEA1, COL1(6), COL2(4), COL3(8), END OF LINEA1, BEGIN OF LINEA2, COL1 TYPE I VALUE 1, COL2 TYPE I VALUE 2, END OF LINEA2, LINEA3 LIKE LINEA2, TABLA LIKE LINEA2 OCCURS 10 WITH HEADER LINE. LINEA3-COL1 = 11. LINEA3-COL2 FIELD-SYMBOLS: STRUCTURE STRUCTURE STRUCTURE = 22. SBOOK DEFAULT AREA-TRABAJO, LINEA1 DEFAULT AREA-TRABAJO, TABLA DEFAULT LINEA3.

WRITE: / -MANDT, -CARRID, -CONNID, -FLDATE, / -COL1, -COL2, -COL3, / -COL1, -COL2. FIELD-SYMBOLS: , TYPE I. DATA: TEXT(20) TYPE C VALUE 'Hola, Cmo ests?', NUM TYPE I VALUE 5, BEGIN OF LINEA1, COL1 TYPE F VALUE '1.1e+10', COL2 TYPE I VALUE '1234', END OF LINEA1, LINEA2 LIKE LINEA1. ASSIGN TEXT TO . ASSIGN NUM TO . DESCRIBE FIELD LENGTH . WRITE: / , 'tiene la longitud', . ASSIGN LINEA1 TO . ASSIGN LINEA2-COL2 TO . MOVE TO LINEA2. ASSIGN 'LINEA2-COL2 =' TO . WRITE: / , .

FIELD-SYMBOLS: . DATA: BEGIN OF LINEA, CAMPO1(10) CAMPO2(10) END OF LINEA.

VALUE '0123456789', VALUE 'abcdefghij',

WRITE / LINEA-CAMPO1+5. ASSIGN LINEA-CAMPO1+5 TO . WRITE / . ASSIGN LINEA-CAMPO1+5(*) TO . WRITE / . PROGRAM Z0000001. TABLES KNA1. KNA1-NAME1 = 'El Corte Ingles'. PERFORM FORM1(Z0000002). . . . PROGRAM Z0000002. FORM FORM1. PERFORM FORM2(Z0000003). ENDFORM. . . . PROGRAM Z0000003. FORM FORM2. DATA CAMPO(20) VALUE 'KNA1-NAME1'. FIELD-SYMBOLS . ASSIGN (CAMPO) TO . IF SY-SUBRC EQ 0. WRITE / . ENDIF. ENDFORM. PROGRAM Z0000001. TABLES KNA1. DATA: CAMPO1(20) VALUE 'KNA1-NAME1', CAMPO2(20) VALUE 'NAME1'. FIELD-SYMBOLS . ASSIGN TABLE FIELD (CAMPO1) TO . WRITE: / 'SY-SUBRC:', SY-SUBRC. ASSIGN TABLE FIELD (CAMPO2) TO . WRITE: / 'SY-SUBRC:', SY-SUBRC. DATA: BEGIN OF S, A VALUE '1', B VALUE '2', C VALUE '3', D VALUE '4', E VALUE '5', F VALUE '6', G VALUE '7', H VALUE '8', END OF S. DATA OFF TYPE I. FIELD-SYMBOLS . ASSIGN S-A TO . DO 4 TIMES. OFF = SY-INDEX 1. ASSIGN +OFF(1) TO . WRITE . ENDDO.

DATA: BEGIN OF LINEA, COL1 TYPE I VALUE '11', COL2 TYPE I VALUE '22', COL3 TYPE I VALUE '33', END OF LINEA. COMP(5) VALUE 'COL3'. FIELD-SYMBOLS: , , . ASSIGN LINEA TO . ASSIGN COMP TO . DO 3 TIMES. ASSIGN COMPONENT SY-INDEX OF STRUCTURE TO . WRITE . ENDDO. ASSIGN COMPONENT OF STRUCTURE TO . WRITE / . DATA: TXT(8) VALUE '19950606', TIPO(1) VALUE 'X'. FIELD-SYMBOLS . ASSIGN TXT TO . WRITE / . ASSIGN TXT TO TYPE 'D'. WRITE / . ASSIGN TXT TO TYPE TIPO. WRITE / . DATA: CAMPO1 TYPE P DECIMALS 2 VALUE '400', CAMPO2 TYPE P DECIMALS 2, CAMPO3 TYPE P DECIMALS 2. FIELD-SYMBOLS: , . WRITE: ASSIGN WRITE: CAMPO2 WRITE: ASSIGN WRITE: CAMPO3 WRITE: = WRITE: WRITE: / 'CAMPO 1', CAMPO1. CAMPO1 TO DECIMALS 1. / '', . = . / 'CAMPO 2', CAMPO2. CAMPO2 TO DECIMALS 4. / '', . = + / 'CAMPO 3', CAMPO3. '1234.56789'. / '', . / 'CAMPO 2', CAMPO2.

PROGRAM Z0000001. DATA: BEGIN OF COMMON PART, TEXTO(5) VALUE 'Texto', END OF COMMON PART. PERFORM RUTINA(Z0000002). WRITE TEXTO. . . . PROGRAM Z0000002. DATA: BEGIN OF COMMON PART, TEXTO(5) VALUE 'Texto', END OF COMMON PART.

FORM RUTINA. FIELD-SYMBOLS . ASSIGN LOCAL COPY OF TEXTO TO . WRITE . = 'Otros'. WRITE . ASSIGN TEXTO TO . WRITE . = 'Unos'. ENDFORM. PROGRAM Z0000001. DATA: TEXTO1(10), TEXTO2(10), TEXTO3(5). FIELD-SYMBOLS: . DO 25 TIMES. ASSIGN TEXTO1+SY-INDEX(1) TO . ENDDO. Captulo Nueve REPORT ZPRUEBA. WRITE 'Sentencia 1'. FORM RUTINA. WRITE 'Sentencia 2'. ENDFORM. WRITE 'Sentencia 3'. PERFORM RUTINA. WRITE 'Sentencia 4'. REPORT ZPRUEBA. WRITE 'Sentencia 1'. FORM RUTINA. WRITE 'Sentencia 2'. ENDFORM. START-OF-SELECTION. WRITE 'Sentencia 3'. PERFORM RUTINA. WRITE 'Sentencia 4'. REPORT Z0000001. PARAMETERS PAR1(2) TYPE C. SELECT-OPTIONS SEL1 FOR BSEG-BELNR. INITIALIZATION. MOVE 'TD' TO PAR1. MOVE: 'I' 'BT' '90000000' TO SEL1-SIGN, TO SEL-OPTION, TO SEL1-LOW,

APPEND SEL1.

'90001000'

TO SEL1-HIGH.

REPORT Z0000001 MESSAGE-ID ZZ. PARAMETERS PAR1(2) TYPE C. AT SELECTION-SCREEN. IF PAR1 > 'DD'. MESSAGE E000 WITH 'Valor en el parmetro PAR1 no vlido.'. ENDIF. REPORT Z0000001 MESSAGE-ID ZZ. PARAMETERS PAR1(2) TYPE C. AT SELECTION-SCREEN ON PAR1. IF PAR1 > 'DD'. MESSAGE E000 WITH 'Valor en el parmetro PAR1 no vlido.'. ENDIF. REPORT Z0000001 MESSAGE-ID ZZ. TABLES T001 SELECT-OPTIONS BUKRS FOR T001-BUKRS. AT SELECTION-SCREEN ON END OF BUKRS. LOOP AT BUKRS. IF NOT BUKRS_HIGH ID INITIAL. IF BUKRS_LOW IS INITIAL. MESSAGE E000 WITH 'Lmite inferior obligatorio.'. ENDIF. ENDIF. ENDLOOP. REPORT Z0000001 MESSAGE-ID ZZ. PARAMETERS: B1 RADIOBUTTON RAD1 DEFAULT 'X', B2 RADIOBUTTON RAD1, B3 RADIOBUTTON RAD1. AT SELECTION-SCREEN ON RADIOBUTTON GROUP RAD1. IF B1 = 'X'. MESSAGE I000 WITH 'La seleccin no ha sido modificada.'. ENDIF. REPORT Z0000001 MESSAGE-ID ZZ. SELECTION-SCREEN BEGIN OF BLOCK B1. PARAMETERS: PAR1(2) TYPE C, PAR2(3) TYPE C, PAR3(6) TYPE N. SELECTION-SCREEN END OF BLOCK B1. AT SELECTION-SCREEN ON BLOCK B1. IF NOT PAR1 IS INITIAL AND PAR2 IS INITIAL. MESSAGE E000 WITH 'PAR2 es obligatorio si PAR1 tiene algn valor.'. ENDIF.

REPORT Z0000001 MESSAGE-ID ZZ. PARAMETERS PAR1(2) TYPE C. AT SELECTION-SCREEN OUTPUT. MOVE 'AA' TO PAR1. REPORT Z0000001 MESSAGE-ID ZZ. TABLES: T001, KNA1. START-OF-SELECTION. SELECT SINGLE * FROM T001 WHERE BUKRS = BUKRS. GET KNA1. . . . REPORT Z0000001 MESSAGE-ID ZZ. DATA: CONTADOR TYPE I. GET KNA1 FIELDS KUNNR. CLEAR CONTADOR. WRITE: / 01 KNA1-KUNNR. GET BKPF. ADD 1 TO CONTADOR. GAT KNA1 LATE. WRITE: 'Documentos en la base de datos:', CONTADOR. REPORT Z0000001 MESSAGE-ID ZZ. DATA: CONTADOR TYPE I. GET KNA1. ADD 1 TO CONTADOR. END-OF-SELECTION. WRITE: 'Nmero total de Clientes en la base de datos:', CONTADOR. REPORT Z0000001. TABLES: KNA1, BKPF, BSEG. START-OF-SELECTION. WRITE: 'Prueba de la sentencia STOP.'. GET KNA1. WRITE: / KNA1-KUNNR, NAME1. STOP. END-OF-SELECTION. WRITE: / 'Fin del programa.'. REPORT Z0000001. TABLES: KNA1, BKPF, BSEG. START-OF-SELECTION. WRITE: 'Prueba de la sentencia EXIT.'. GET KNA1. WRITE: / KNA1-KUNNR, NAME1. EXIT. END-OF-SELECTION. WRITE: / 'Fin del programa.'.

REPORT Z0000001. TABLES: KNA1. DATA FLAG. PARAMETERS: KUNNR LIKE KNA1-KUNNR. AT SELECTION-SCREEN. IF KUNNR IS INITIAL. FLAG = 'X'. EXIT. ENDIF. START-OF-SELECTION. IF NOT FLAG IS INITIAL. WRITE: 'No se ha seleccionado ningn Cliente.'. EXIT. ENDIF. GET KNA1. WRITE: / KNA1-KUNNR, NAME1. REPORT Z0000001. TABLES: KNA1, BKPF. SELECT-OPTIONS KUNNR FORM KNA1-KUNNR. GET KNA1. CHECK KUNNR. . . . GET BKPF. CHECK BKPF-BUDAT BETWEEN '19981001' AND '19981015'. . . . REPORT Z0000001. TABLES: KNA1, BKPF. GET KNA1. IF NOT KNA1-KUNNR BETWEEN '0001561001' AND '0001561100'. REJECT. ENDIF. WRITE: / KNA1-KUNNR, NAME1. GET BKPF. IF BKPF-BUDAT > '19980101'. REJECT KNA1. ENDIF. Captulo Diez DATA: F TYPE F VALUE '200.00', P TYPE P VALUE '210.00' DECIMALS 2, I TYPE I VALUE '50.00'. F P I F >= P < I LE F GT I => => => => TRUE FALSE TRUE TRUE

DATA: C1 TYPE C VALUE 'BD ',

C2 TYPE C VALUE 'ABCD ', C3 TYPE C VALUE 'ABCD'. C1 CO C2 C2 CO C3 C3 CO C1 DATA: C1 TYPE C VALUE '123', C2 TYPE C VALUE '1246', C3 TYPE C VALUE '12346'. C1 CN C2 C2 CN C3 C3 CN C1 DATA: C1 TYPE C VALUE 'A1B2', C2 TYPE C VALUE 'ABC', C3 TYPE C VALUE 'EFG1'. C1 CA C2 C2 CA C3 C3 CA C1 => TRUE SY-PDPOS = 0 => FALSE SY-FDPOS = 3 => TRUE SY-FDPOS = 3 => TRUE SY-PDPOS = 2 => FALSE SY-FDPOS = 5 => TRUE SY-FDPOS = 3 => TRUE SY-PDPOS = 3 => FALSE SY-FDPOS = 4 => FALSE SY-FDPOS = 0

DATA: C1 TYPE C VALUE 'AaBbCc', C2 TYPE C VALUE 'Abap', C3 TYPE C VALUE 'abecedario primario'. C1 NA C2 C2 NA C3 C3 NA C1 => TRUE SY-PDPOS = 2 => FALSE SY-FDPOS = 4 => TRUE SY-FDPOS = 2

DATA: C1 TYPE C VALUE 'Alicante', C2 TYPE C VALUE 'Ante ', C3 TYPE C VALUE 'Barca'. C1 CS C2 C2 CS C3 C3 CS C1 DATA: C1 TYPE C VALUE 'TDi', C2 TYPE C VALUE 'GTX', C3 TYPE C VALUE 'GT'. C1 NS C2 C2 NS C3 C3 NS C1 => TRUE SY-PDPOS = 3 => FALSE SY-FDPOS = 0 => TRUE SY-FDPOS = 2 => TRUE SY-PDPOS = 4 => FALSE SY-FDPOS = 5 => FALSE SY-FDPOS = 5

DATA: C1 TYPE C VALUE 'En un lugar de la Mancha'. C1 C1 C1 C1 C1 CP CP CP CP CP '*man' '+u+a' '#en' '#En' 'en' => TRUE SY-PDPOS = 18 => TRUE SY-FDPOS => FALSE SY-FDPOS => TRUE SY-FDPOS => TRUE SY-FDPOS = = = = 6 24 0 0

DATA: C1 TYPE C VALUE 'La expresin (2 + 5) * 3 = 21 es TRUE.'. C1 C1 C1 C1 C1 NP NP NP NP NP '#+' '#*' '#true' 'true' '##' => => => => => FALSE SY-PDPOS = 16 FALSE SY-FDPOS = 21 TRUE SY-FDPOS = 38 FALSE SY-FDPOS = 33 TRUE SY-FDPOS = 38

DATA: C TYPE C, X TYPE X. S C (representacin en bits) o '00000000' TRUE '01010101' FALSE '01101010' FALSE DATA: C TYPE C, X TYPE X. S C (representacin en bits) o '00000000' TRUE '01100100' TRUE '00000010' FALSE DATA: C TYPE C, X TYPE X. S C (representacin en bits) o '00000000' FALSE '01100101' TRUE '11111111' FALSE DATA: P1 TYPE P VALUE 5, P2 TYPE P VALUE 10, P3 TYPE P VALUE 20. Expresin P1 BETWEEN P2 AND P3 P2 BETWEEN P1 AND P3 FALSE TRUE Resultado Explicacin 5 NO est comprendido entre 10 y 20. 10 est comprendido entre 5 y 20. y X (representacin en bits) '00000010' '00010001' '11111111' Expresin C m X C m X C m X Resultad y X (representacin en bits) '00000000' '00010001' '11111111' Expresin C z X C z X C z X Resultad y X (representacin en bits) '00000000' '01000010' '11111111' Expresin C o X C o X C o X Resultad

DATA: C(5) TYPE C VALUE 'PEDRO', P(3) TYPE P. (suponiendo que los valores de C y P no cambian): Expresin C IS INITIAL (blancos). P IS INITIAL FALSE TRUE Resultado Explicacin C = PEDRO y no su valor inicial P = 0, su valor inicial.

DATA C(3) TYPE C. RANGE RANGO FOR C. (carga de valores en el rango RANGO) Expresin Explicacin C IN RANGO ser TRUE si el valor del campo C cumple l as condiciones del criterio de seleccin del rango RANGO. DATA C1(3) C2(3) P1(5) P2(5) TYPE TYPE TYPE TYPE C C P P VALUE VALUE VALUE VALUE 'ABC', 'CDE', '30', '40'. Resultado C1 < C2 es TRUE, P1 = P2 es FALSE, resul C1 LT C2 es TRUE, P1 LT P2 es TRUE, resultado: T C1 EQ C2 es FALSE, resultado: TRUE 'Texto nmero 1', 'Texto nmero 2', 'Texto nmero 3', '2'.

Expresin C1 < C2 OR P1 = P2 tado: TRUE C1 LT C2 AND P1 LT P2 RUE NOT C1 EQ C2 DATA C1(30) C2(30) C3(30) STRING TYPE TYPE TYPE TYPE C C C C VALUE VALUE VALUE VALUE

IF C1 CS STRING. WRITE 'Condicin 1 es TRUE'. ELSEIF C2 CS STRING. WRITE 'Condicin 2 es TRUE'. . . . ELSE. WRITE 'Condicin 3 es TRUE'. ENDIF. DATA C1(30) C2(30) C3(30) STRING TYPE TYPE TYPE TYPE C C C C VALUE VALUE VALUE VALUE 'A', 'B', 'C', 'Z'.

CASE STRING. WHEN C1 OR C2. WRITE: 'El valor del campo STRING es', C1, 'o', C2. WHEN C3.

WRITE: 'El valor del campo STRING es', C2. WHEN OTHERS. WRITE: 'El valor del campo STRING es desconocido'. ENDCASE. DO.

ENDDO.

WRITE SY-INDEX. IF SY-INDEX = 3. EXIT. ENDIF.

DO 2 TIMES. WRITE SY-INDEX. SKIP. DO 3 TIMES. WRITE SY-INDEX. ENDDO. SKIP. ENDDO. DATA: BEGIN OF TEXTO, UNO(5) VALUE 'Esto', DOS(5) VALUE 'es', TRES(5) VALUE 'una', CUATRO(5) VALUE 'frase'. DATA: PALABRA1(5), PALABRA2(5). DO 4 TIMES VARYING PALABRA1 FROM TEXTO-UNO NEXT TEXTO-DOS. WRITE PALABRA1. IF PALABRA1(2) = 'es' PALABRA1 = 'era'. ENDIF. ENDDO. SKIP. DO 2 TIMES VARYING PALABRA1 FROM TEXT0-UNO NEXT TEXTO-TRES VARYING PALABRA2 FROM TEXTO-DOS NEXT TEXTO-CUATRO. WRITE: PALABRA1, PALABRA2. ENDDO. REPORT Z0000001. DATA: BEGIN OF REGISTRO1, A(5) TYPE N VALUE '5', B(5) TYPE N VALUE '30', C(5) TYPE N VALUE '12', END OF REGISTRO1. DATA: BEGIN OF REGISTRO2, A(5) TYPE N VALUE '6', B(5) TYPE N VALUE '70', C(5) TYPE N VALUE '17', END OF REGISTRO2. DATA: A(5) TYPE N, B(5) TYPE N. DO 3 TIMES VARYING A FROM REGISTRO1-A NEXT REGISTRO1-B

A = A + B. WRITE / A. ENDDO. DATA: FACTORIAL(3) INDICE

VARYING B FROM REGISTRO2-A NEXT REGISTRO2-B.

TYPE P VALUE 1, TYPE I VALUE 5.

WHILE INDICE > 1. FACTORIAL = FACTORIAL * INDICE. INDICE = INDICE - 1. ENDWHILE. WRITE FACTORIAL. DO 4 TIMES. IF SY-INDEX = 2. CONTINUE. ENDIF. WRITE SY-INDEX. ENDDO. DO 4 TIMES. CHECK SY-INDEX > 2. WRITE SY-INDEX. ENDDO. DO 4 TIMES. IF SY-INDEX = 3. EXIT. ENDIF. ENDDO. Captulo Once DATA: T(10), NUMERO TYPE P DECIMALS 1, CONTADOR TYPE P DECIMALS 2.

T = 1111. MOVE '5,3' TO NUMERO. CONTADOR = NUMERO. DATA:

A1(8) VALUE 'ABCDEFGH', A2(8), O TYPE I VALUE 2, L TYPE I VALUE 4. MOVE A1 TO A2. WRITE MOVE A1+O(L) TO A2. WRITE MOVE A1 TO A2+O(L). WRITE CLEAR A2. MOVE A1 TO A2+O(L). WRITE MOVE A1+O(L) TO A2+O(L). WRITE DATA: C1(10) VALUE '1234567890', C2 LIKE C1.

A2. / A2. / A2. / A2. / A2.

MOVE C1 TO C2 PERCENTAGE 40. MOVE C1 TO C2 PERCENTAGE 30 RIGHT.

WRITE C2. WRITE / C2.

DATA: CAMPO1(5), CAMPO2(5), CAMPO3(5), CAMPO4(5) VALUE 'TEXTO'. CAMPO1 = CAMPO2 = CAMPO3 = CAMPO4. WRITE: CAMPO1, CAMPO2, CAMPO3, CAMPO4. DATA: CAMPO1(8) VALUE 'ABCDEFGH', CAMPO2(20) VALUE '12345678901234567890'. CAMPO2+6(5) = CAMPO1+3(5). WRITE CAMPO2. DATA: BEGIN OF DIRECCION, NOMBRE(20) APELLIDOS(20) CALLE(30) NUMERO(3) POBLACION(20) END OF DIRECCION. DATA: BEGIN OF NOMBRE, NOMBRE(20), APELLIDOS(20), END OF NOMBRE. MOVE-CORRESPONDING DIRECCION TO NOMBRE. WRITE: NOMBRE-NOMBRE, NOMBRE-APELLIDOS. DATA:

VALUE VALUE VALUE VALUE VALUE

'Jos Luis', 'Herreros Lucas', 'Azorn', '19', 'Madrid',

NUMERO1 TYPE F VALUE '4,3', TEXTO(10), NUMERO2 TYPE F, NUMERO3 TYPE P DECIMALS 1. WRITE NUMERO1. WRITE NUMERO1 TO TEXTO EXPONENT 2. WRITE / TEXTO. WRITE NUMERO1 TO NUMERO2. WRITE / NUMERO2. WRITE NUMERO1 TO NUMERO3. WRITE / NUMERO3. MOVE NUMERO1 TO NUMERO3. WRITE / NUMERO3. DATA: NOMBRE(10) VALUE 'FUENTE', FUENTE (10) VALUE 'Antonio', DESTINO(10). WRITE (NOMBRE) TO DESTINO. WRITE DESTINO. DATA: STRING(20), NUMERO(8) TYPE C VALUE '12345678', OFFSET TYPE I VALUE 8, LONGITUD TYPE I VALUE 12. WRITE NUMERO+(6) TO STRING+OFFSET(LONGITUD) LEFT-JUSTIFIED. WRITE / STRING. CLEAR STRING.

WRITE WRITE CLEAR WRITE WRITE CLEAR

NUMERO+(6) TO STRING+OFFSET(LONGITUD) CENTERED. / STRING. STRING. NUMERO+(6) TO STRING+OFFSET(LONGITUD) RIGHT-JUSTIFIED. / STRING. STRING.

REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65. DATA: CARACTER(4) TYPE C VALUE '0765', EMPAQUETADO(4) TYPE P. PACK CARACTER TO EMPAQUETADO. WRITE EMPAQUETADO. UNPACK EMPAQUETADO TO CARACTER. WRITE EMPAQUETADO. DATA: FECHA1 TYPE D VALUE '19980807', FECHA2 LIKE FECHA1, CAMPO(8). FECHA1. WRITE / CAMPO. DATE FECHA1 INTO INVERTED-DATE FECHA2. FECHA2. WRITE / CAMPO. INVERTED-DATE FECHA2 INTO DATE FECHA1. FECHA1. WRITE / CAMPO. BEGIN OF TABLA OCCURS 4, C1(6), C2(100) TYPE X, END OF TABLA. TEXT TABLA-C1 INTO SORTABLE CODE TABLA-C2. TEXT TABLA-C1 INTO SORTABLE CODE TABLA-C2. TEXT TABLA-C1 INTO SORTABLE CODE TABLA-C2. TEXT TABLA-C1 INTO SORTABLE CODE TABLA-C2.

CAMPO = CONVERT CAMPO = CONVERT CAMPO = DATA:

MOVE 'Miller' TO TABLA-C1. CONVERT APPEND TABLA. MOVE 'Moller' TO TABLA-C1. CONVERT APPEND TABLA. MOVE 'Muller' TO TABLA-C1. CONVERT APPEND TABLA. MOVE 'Mller' TO TABLA-C1. CONVERT APPEND TABLA. WRITE / 'Ordenado por C1:'. SORT TABLA BY C1. LOOP AT TABLA. WRITE TABLA-C1. ENDLOOP. WRITE / 'Ordenado por C2:'. SORT TABLA BY C2. LOOP AT TABLA. WRITE TABLA-C1. ENDLOOP. DATA:

NUMERO TYPE I VALUE '10', TEXTO(10) VALUE 'CUENTA'. WRITE: NUMERO, TEXTO. CLEAR NUMERO, TEXTO. WRITE: NUMERO, TEXTO.

REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65. TABLES: BSID. DATA BEGIN OF TABLA OCCURS 0. INCLUDE STRUCTURE BSID. DATA END OF TABLA. START-OF-SELECTION. GET BSID. MOVE-CORRESPONDING BSID TO TABLA. APPEND TABLA. END-OF-SELECTION. LOOP AT TABLA. . . . ENDLOOP. FREE TABLA. . . . REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65. PARAMETERS: LANGU LIKE SY-LANGU. START-OF-SELECTION. TRANSLATE LANGU TO UPPER CASE. SET LANGUAGE LANGU. REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65. TABLES: KNA1. DATA: DISTANCIA TYPE I. DESCRIBE DISTANCE BETWEEN KNA1-KUNNR AND KNA1-ERDAT INTO DISTANCIA. WRITE DISTANCIA. DATA: CONTADOR TYPE I. COMPUTE CONTADOR = CONTADOR + 1. CONTADOR = CONTADOR + 1. ADD 1 TO CONTADOR. DATA: P TYPE P DECIMALS 4, F1 TYPE F VALUE '+5,2', F2 TYPE F VALUE '+1,1'.

P = F1 / F2. WRITE P. P = F1 DIV F2. WRITE / P. P = F1 MOD F2. WRITE / P. DATA: N TYPE P DECIMALS 2, M TYPE P DECIMALS 2 VALUE '-5,55'.

N N N N N N

= = = = = =

ABS( M ). SIGN( M ). CEIL( M ). FLOOR( M ). TRUNC( M ). FRAC( M ). T1(10),

WRITE: WRITE: WRITE: WRITE: WRITE: WRITE:

'ABS: 'SIGN: 'CEIL: 'FLOOR: 'TRUNC: 'FRAC:

', ', ', ', ', ',

N. N. N. N. N. N.

DATA:

T2(10) VALUE '-100'.

T1 = ABS( T2 ). WRITE T1. DATA: RESULTADO TYPE F, pi(10) VALUE '3,141592654'.

RESULTADO = COS( PI ). WRITE RESULTADO. DATA: P TYPE P.

P = 1 / 3 * 3. WRITE P. DATA: FECHA TYPE D.

FECHA = SY-DATUM. FECHA+6(2) = '01'. FECHA = FECHA - 1. DATA: DIFERENCIA TYPE I, SEGUNDOS TYPE I, HORAS TYPE I, T1 TYPE T VALUE '200000', T2 TYPE T VALUE '020000'.

DIFERENCIA = T2 - T1. SEGUNDOS = DIFERENCIA MOD 86400. HORAS = SEGUNDOS / 3600. DATA: INT TYPE I, CAMPO1(20) VALUE '12345', CAMPO2(20), CAMPO3(20) VALUE ' 4

'.

INT = STRLEN( CAMPO1 ). WRITE INT. INT = STRLEN( CAMPO2 ). WRITE INT. INT = STRLEN( CAMPO3 ). WRITE INT. DATA: I1 TYPE I VALUE '5', I2 TYPE I VALUE '7'.

ADD I1 TO I2.

WRITE: I1, I2. DATA: BEGIN OF SERIE, N1 TYPE I VALUE 10, N2 TYPE I VALUE 20, N3 TYPE I VALUE 30, N4 TYPE I VALUE 40, N5 TYPE I VALUE 50, N6 TYPE I VALUE 60, END OF SERIE, SUMA TYPE I. ADD SERIE-N1 THEN SERIE-N2 UNTIL SERIE-N5 GIVING SUMA. WRITE SUMA. ADD SERIE-N2 THEN SERIE-N3 UNTIL SERIE-N6 TO SUMA. WRITE SUMA. DATA: BEGIN OF A, UNO TYPE I VALUE '5', DOS TYPE I VALUE '6'. END OF A, BEGIN OF B, DOS TYPE I VALUE '3', TRES TYPE I VALUE '9'. END OF B.

ADD-CORRESPONDING A TO B. WRITE: B-DOS, B-TRES. DATA: I1 TYPE I VALUE '3', I2 TYPE I VALUE '9'.

SUBTRACT I1 TO I2. WRITE: I1, I2. DATA: BEGIN OF A, UNO TYPE I VALUE '1', DOS TYPE I VALUE '2'. END OF A, BEGIN OF B, DOS TYPE I VALUE '6', TRES TYPE I VALUE '8'. END OF B.

SUBTRACT-CORRESPONDING A TO B. WRITE: B-DOS, B-TRES. DATA: I1 TYPE I VALUE '6', I2 TYPE I VALUE '4'.

MULTIPLY I1 BY I2. WRITE: I1, I2. DATA: BEGIN OF A, UNO TYPE I VALUE '5',

DOS TYPE I VALUE '4'. END OF A, BEGIN OF B, DOS TYPE I VALUE '3', TRES TYPE I VALUE '2'. END OF B. MULTIPLY-CORRESPONDING A TO B. WRITE: A-UNO, A-DOS. DATA: I1 TYPE I VALUE '10', I2 TYPE I VALUE '5'.

DIVIDE I1 BY I2. WRITE: I1, I2. DATA: BEGIN OF A, UNO TYPE I VALUE '2', DOS TYPE I VALUE '6'. END OF A, BEGIN OF B, DOS TYPE I VALUE '2', TRES TYPE I VALUE '5'. END OF B.

DIVIDE-CORRESPONDING A TO B. WRITE: A-UNO, A-DOS. DATA: C1(10) VALUE 'ejem', C2(10) VALUE C3(10) VALUE C4(10) VALUE c5(10) VALUE STRING(50).

'plo', 'de', 'concate', 'nacin',

CONCATENATE C1 C2 C3 C4 C5 INTO STRING. WRITE STRING. CONCATENATE C1 C2 C3 C4 C5 INTO STRING SEPARATED BY '-'. WRITE / STRING. DATA: P1(10) VALUE '++++++++++', P2(10) VALUE '++++++++++', P3(10) VALUE '++++++++++', P4(10) VALUE '++++++++++', STRING(50) VALUE 'parte 1 ** parte 2 ** parte 3 ** parte 4 ** parte 5', DEL(2) VALUE '**'.

SPLIT STRING AT DEL INTO P1 P2 P3 P4. WRITE: STRING, / P1, / P2, / P3, / P4. DATA: STRING(50) VALUE 'parte 1 ** parte 2 ** parte 3', DEL(2) VALUE '**', BEGIN OF TABLA OCCURS 10, LINEA(20), END OF TABLA.

SPLIT STRING AT DEL INTO TABLE TABLA.

CLEAR TABLA. LOOP AT TABLA. WRITE / TABLA-LINEA. ENDLOOP. DATA: T(10) VALUE 'abcdefghij', STRING LIKE T. WRITE STRING. WRITE / STRING. WRITE / STRING. WRITE / STRING. WRITE / STRING.

STRING = T. SHIFT STRING. STRING = T. SHIFT STRING BY 3 PLACES LEFT. STRING = T. SHIFT STRING BY 3 PLACES RIGHT. STRING = T. SHIFT STRING BY 3 PLACES CIRCULAR. DATA: T(10) VALUE 'abcdefghij', STRING LIKE T, STR(2) VALUE 'ef'. UP TO STR. UP TO STR LEFT. UP TO STR RIGHT. UP TO STR CIRCULAR.

STRING = T. SHIFT STRING STRING = T. SHIFT STRING STRING = T. SHIFT STRING STRING = T. SHIFT STRING DATA:

WRITE STRING. WRITE / STRING. WRITE / STRING. WRITE / STRING. WRITE / STRING.

T(14) VALUE ' abcdefghij', STRING LIKE T, STR(6) VALUE 'ghijkl'. WRITE STRING. WRITE / STRING. WRITE / STRING. tres cuatro '.

STRING = T. SHIFT STRING LEFT DELETING LEADING SPACE. STRING = T. SHIFT STRING RIGHT DELETING TRAILING STR. DATA: T(30) VALUE ' uno STRING LIKE T. T. T. T. T NO-GAPS. WRITE T. WRITE T. dos

STRING = CONDENSE STRING = CONDENSE DATA:

T(10) VALUE 'abcdefghij'.

WRITE T. TRANSLATE T TO UPPER CASE. WRITE / T. TRANSLATE T TO LOWER CASE. WRITE / T. DATA: T(10) VALUE 'AbCdEfGhIj',

STRING LIKE T, REGLA(10) VALUE 'AyBxCzDwEq'. STRING = T. TRANSLATE STRING USING REGLA. DATA: WRITE STRING.

T(10) VALUE 'A C E G I ', STRING LIKE T, O(10) VALUE '1234567890', S(2) VALUE 'AI'. WRITE STRING. WRITE STRING. WRITE STRING.

STRING = T. OVERLAY STRING WITH O. STRING = T. OVERLAY STRING WITH O ONLY S. DATA:

T(10) VALUE 'abcdefghij', STRING LIKE T, STR1(4) VALUE 'cdef', STR2(4) VALUE 'klmn', STR3(2) VALUE 'kl', STR4(6) VALUE 'klmnop', LEN TYPE I VALUE 2. STRING = T. REPLACE STR1 STRING = T. REPLACE STR1 STRING = T. REPLACE STR1 STRING = T. REPLACE STR1 DATA: WITH STR2 INTO STRING. WRITE STRING. WRITE / STRING.

WITH STR2 INTO STRING LENGTH LEN. WRITE / STRING. WITH STR3 INTO STRING. WITH STR4 INTO STRING. WRITE / STRING. WRITE / STRING.

STRING(30) VALUE 'Esta es una pequea frase.'.

WRITE: 'BUESQUEDA', 'SY-SUBRC', SY-FDPOS'. ULINE /1(26). SEARCH STRING FOR 'X'. WRITE / 'X', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. SEARCH STRING FOR 'peq'. WRITE / 'peq', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. SEARCH STRING FOR '.s .'. WRITE / '.s .', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. SEARCH STRING FOR '*a'. WRITE / '*a', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. SEARCH STRING FOR 'f*'. WRITE / 'f*', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. DATA: STRING(30) VALUE 'En un lugar de la Mancha'.

WRITE: 'BUESQUEDA', 'SY-SUBRC', SY-FDPOS'. ULINE /1(26). SEARCH STRING FOR 'lr' ABBREVIATED. WRITE / 'lr', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. SEARCH STRING FOR 'Me' ABBREVIATED. WRITE / 'Me', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS.

DATA:

STRING(30) VALUE 'Esta frase va a servir de ejemplo'.

WRITE: 'BUESQUEDA', 'SY-SUBRC', SY-FDPOS'. ULINE /1(26). SEARCH STRING FOR 'servir' STARTING AT 10 ENDING AT 30. WRITE / 'servir', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER SY-FDPOS. DATA: STRING(30) VALUE 'abcdefghijklmnopqrstuv'.

SEARCH STRING FOR 'k' AND MARK. WRITE STRING. Captulo Doce PROGRAM Z0000001. WRITE 'Hola'. PROGRAM Z0000001. DATA NUMERO TYPE P DECIMALS 2 VALUE '-1234567,89'. WRITE: 'El nmero', NUMERO, 'es empaquetado.'. PROGRAM Z0000001. WRITE 'Primera lnea'. WRITE 'Continuamos en la primera lnea'. WRITE / 'Segunda lnea'. WRITE /13 'Tercera lnea'. WRITE /5(8) 'Cuarta lnea'. PROGRAM Z0000001. DATA: LONG TYPE I VALUE 10, POS TYPE I VALUE 11, TEXTO(10) VALUE '1234567890'. WRITE 'El texto ------------ sobrescribe este texto'. WRITE AT POS(LONG) TEXTO. DATA: G(4) VALUE 'Hola', F(5) VALUE 'Adis'. WRITE: G, H. WRITE: /10 G, / F UNDER G. WRITE: / G NO-GAP, F. . . . DATA HORA TYPE T VALUE '154633'. WRITE: HORA, /(8) HORA USING EDIT MASK '__:__:__'. WRITE: '000123', / '000123' NO-ZERO. . . . DATA NUMERO TYPE F VALUE '123456789,0'. WRITE NUMERO EXPONENT 3. . . .

Hola Adis Hola Adis HolaAdis 154633

15:46:33 000123 123

123456.789E+03

DATA NUMERO TYPE P VALUE '123.456' DECIMALS 3. WRITE NUMERO DECIMALS 2. WRITE / NUMERO ROUND 2, / NUMERO ROUND 1, / NUMERO ROUND 1, / NUMERO ROUND 2. . . . WRITE: SY-DATUM DD/MM/YYYY, / SY-DATUM YYMMDD DATA: TEXTO(20) VALUE 'Texto en color'. WRITE TEXTO COLOR COL_HEADING. INCLUDE . INCLUDE . WRITE: / 'Smbolo del telfono:', SYM_PHONE AS SYMBOL. WRITE: / 'Icono de alarma:', ICON_ALARM AS ICON. DATA: TEXTO(20) VALUE 'Frase subrayada'. WRITE TEXTO. ULINE AT /(13). DATA: TEXTO(5) VALUE 'Texto'. WRITE TEXTO. SKIP 2. WRITE TEXTO. DATA: TEXTO(5) VALUE 'Texto'. WRITE: SY-LINNO, TEXTO. SKIP TO LINE 4. WRITE: SY-LINNO, TEXTO. REPORT Z0000001. WRITE 'Texto escrito en la primera lnea.'. NEW-LINE. WRITE 'Texto escrito en una nueva lnea.'.

123,46 12.345,600 1.234,560 12.346 1.235 09/08/1998 980809

REPORT Z0000001 LINE-SIZE 40 LINE-COUNT 6 NO STANDARD PAGE HEADING. START-OF-SELECTION. DO 3 TIMES. WRITE / SY-INDEX. ENDDO. NEW-PAGE. DO 3 TIMES. WRITE / SY-INDEX. ENDDO. NEW-PAGE. TOP-OF-PAGE.

WRITE 'Cabecera del informe'. ULINE. REPORT Z0000001 LINE-SIZE 80 LINE-COUNT 65 NO STANDARD PAGE HEADING. START-OF-SELECTION. SET BLANK LINES OFF. DO 5 TIMES. WRITE / ' '. ENDDO. SET BLANK LINES ON. DO 5 TIMES. WRITE / ' '. ENDDO. REPORT Z0000001 LINE-SIZE 40 LINE-COUNT 6(2) NO STANDARD PAGE HEADING. START-OF-SELECTION. DO 6 TIMES. WRITE / SY-INDEX. ENDDO. TOP-OF-PAGE. WRITE 'Cabecera del informe'. ULINE. END-OF-PAGE. ULINE. WRITE: /30 'Pgina:', SY-PAGNO. FORMAT INTENSIFIED ON. WRITE 'Texto'. FORMAT INTENSIFIED OFF. SUMMARY. WRITE 'TEXTO'. DETAIL. WRITE 'TEXTO'. WRITE 'TEXTO'. SUMMARY. WRITE 'TEXTO'. REPORT Z0000001 LINE-SIZE 40 LINE-COUNT 8(2) NO-STANDARD PAGE HEADING. START-OF-SELECTION. DO 6 TIMES. WRITE / SY-INDEX. ENDDO. RESERVE 3 LINES. DO 3 TIMES. WRITE / SY-INDEX. ENDDO.

TOP-OF-PAGE. WRITE 'Cabecera del informe'. ULINE. END-OF-PAGE. ULINE. WRITE: /30 'Pgina:', SY-PAGNO. REPORT Z0000001 LINE-SIZE 40 LINE-COUNT 6 NO-STANDARD PAGE HEADING. START-OF-SELECTION. DO 3 TIMES. WRITE / SY-LINNO. POSITION 10. WRITE SY-COLNO. POSITION 20. WRITE SY-COLNO. POSITION 30. WRITE SY-COLNO. ENDDO. REPORT Z0000001 LINE-SIZE 40 LINE-COUNT 65 NO-STANDARD PAGE HEADING. DATA: X(3), Y(3). START-OF-SELECTION. X = SY-COLNO. Y = SY-LINNO. SKIP TO LINE 5. POSITION 10. X = SY-COLNO. Y = SY-LINNO. WRITE: '*