Curso ABAP

361
ABAP DEVELOPER TRAINING ABAP DEVELOPER TRAINING Mayo Mayo 2007 2007

Transcript of Curso ABAP

Page 1: Curso ABAP

ABAP DEVELOPER TRAININGABAP DEVELOPER TRAINING

MayoMayo 20072007

Page 2: Curso ABAP

Objetivos del CursoObjetivos del Curso

Al finalizar el curso el alumno será capaz de:

� Comprender la arquitectura del sistema R/3 de SAP

� Utilizar las herramientas para administrar los objetos de desarrollo en SAP

� Comprender las características del lenguaje ABAP

� Desarrollar programas y otros objetos

Page 3: Curso ABAP

Arquitectura SAP R/3Arquitectura SAP R/3

Page 4: Curso ABAP

SAP R/3SAP R/3

R/3 como sistema integrado de funcionalidad multimodularLa tecnología Abap es la base sobre la cual que soportan

todos los módulos del sistema

R/3R/3Cliente / Servidor

ABAPABAP

COCOControllingControlling

AMAMFixed AssetsFixed Assets

MgmtMgmt

PSPSProjectProjectSystemSystem

WFWFWorkflowWorkflow

ISISIndustryIndustrySolutionsSolutions

HRHRHumanHuman

ResourcesResources

SDSDSales & Sales &

DistributionDistribution

PPPPProductionProductionPlanningPlanning

QMQMQualityQualityMgmtMgmt

FIFIFinancialFinancial

AccountingAccounting

PMPMPlant Main-Plant Main-

tenancetenance

MMMMMaterialsMaterials

MgmtMgmt

Page 5: Curso ABAP

Configuración y desarrolloConfiguración y desarrollo

En Configuración y desarrollo los consultores funcionales realizan la parametrización del sistema, los consultores de desarrollo realizan toda la tarea de creación y modificación de objetos en el sistema (programas, tablas, funciones, etc.)En Test se realizan las pruebas de los objetos estándar o desarrollados

y las parametrizaciones del sistemaProducción es el sistema “real” utilizado por la compañía

TestTest

ProducciónProducción

Ambientes de trabajo en SAPAmbientes de trabajo en SAP

Page 6: Curso ABAP

Arquitectura del ServidorArquitectura del Servidor

En todos los casos del ejemplo se utiliza el mismo servidor para la capa de aplicación y la capa de base de datos, pero no siempre debe ser así

Mandante de desarrollo

Mandante de desarrollo

Servidor 1 Ambiente de desarrollo

Mandante de configuración

Mandante de configuración

Mandante de prueba

Mandante de prueba

Ambiente de prueba

Mandante productivoMandante productivo

Servidor 2 Ambiente productivo

Page 7: Curso ABAP

Arquitectura Arquitectura -- MandantesMandantes

El mandante es una instancia del ambiente del sistema, con datos y configuración propios pero con objetos compartidosNo siempre los mandantes se utilizan para los fines que fueron creados

pero respetar su esencia mantiene organizado el sistema

Configuración y desarrolloConfiguración y desarrollo

PruebaPrueba

ProductivoProductivo

100 110 120

200 210

300

DesarrolloParametrización

Datos Básicos

Pruebas 1 Pruebas 2

Productivo único

190

SandBox

Page 8: Curso ABAP

Transportes OrdenesTransportes Ordenes

Page 9: Curso ABAP

Todas las modificaciones al sistema se hacen a través de órdenes de transporteLas órdenes de transporte pasan de un ambiente a otro del sistema en

forma individual y totalToda orden creada en desarrollo pasa a productivo a través del

ambiente de prueba

Transporte

Transporte

Transporte OrdenesTransporte Ordenes

Configuración y desarrolloConfiguración y desarrollo

TestTest

ProducciónProducción

Page 10: Curso ABAP

Creación de la orden Transacción: SE09 ó SE10

Usuario titular de la orden

Crear orden

Transporte OrdenesTransporte Ordenes

Page 11: Curso ABAP

Tipo de orden

Creación de la orden Transacción: SE09 ó SE10

Transporte OrdenesTransporte Ordenes

Page 12: Curso ABAP

Texto descriptivo

Grabar orden

Creación de la orden Transacción: SE09 ó SE10

Transporte OrdenesTransporte Ordenes

Page 13: Curso ABAP

Identificador de la orden

Componentes de la orden

Liberar tarea

Liberación de una orden Transacción: SE09 ó SE10

Transporte OrdenesTransporte Ordenes

Identificador de la tarea

Page 14: Curso ABAP

Documentación de la orden

Grabar

Liberación de una orden Transacción: SE09 ó SE10

Transporte OrdenesTransporte Ordenes

Page 15: Curso ABAP

Tarea ya liberada

Liberación de una orden Transacción: SE09 ó SE10

Transporte OrdenesTransporte Ordenes

Page 16: Curso ABAP

Acceder a las colas de transporte de los

distintos ambientes

Transporte de una orden Transacción: STMS

Transporte OrdenesTransporte Ordenes

Page 17: Curso ABAP

Ambiente de desarrollo

Ambiente de pruebaVisualizar

cola

Transporte de una orden Transacción: STMS

Transporte OrdenesTransporte Ordenes

Page 18: Curso ABAP

Orden creada y liberada en desarrollo se encuentra en

cola de importación de ambiente de prueba

Transportar la orden del ambiente de

desarrollo al ambiente de prueba

Transporte de una orden Transacción: STMS

Transporte OrdenesTransporte Ordenes

Page 19: Curso ABAP

ABAP

� ABAP es un lenguaje estructurado de cuarta generación orientado a eventos, interpretado, multi idioma que incorpora su propio entorno de programación y cuya misión principal es la de que losclientes de SAP puedan extender las funcionalidades del estándar.

� Utilizado para el desarrollo de todas la aplicaciones estándar incluidas en R/3.

� Las iniciales corresponden a Advanced Business ApplicationProgramming Language (lenguaje de programación avanzado para aplicaciones de gestión).

� En ABAP se pueden desarrollar dos tipos de programas: los que se ejecutan en modo reporting como es un listado en pantalla y los que se ejecutan en modo diálogo como una transacción.

Page 20: Curso ABAP

Transacciones Transacciones

Page 21: Curso ABAP

� Excelente Tutorial y Ejemplos ABAP ABAPDOCUABAPDOCU

Transacciones

Page 22: Curso ABAP

� Object Navigator SE80SE80

Transacciones

Page 23: Curso ABAP

� Editor ABAP Tradicional SE38SE38

Transacciones

Page 24: Curso ABAP

� Biblioteca de Funciones SE37SE37

Transacciones

Page 25: Curso ABAP

� Screen Painter SE51SE51

Transacciones

Page 26: Curso ABAP

� Menu Painter SE41SE41

Transacciones

Page 27: Curso ABAP

� SapScript Form Painter (Formularios) SE71SE71

Transacciones

Page 28: Curso ABAP

� Smart Forms (Formularios) SMARTFORMSSMARTFORMS

Transacciones

Page 29: Curso ABAP

� Mantenimiento de Transacciones SE93SE93

Transacciones

Page 30: Curso ABAP

� Transport Organizer SE09SE09

Transacciones

Page 31: Curso ABAP

� Dictionary ABAP SE11SE11

Transacciones

Page 32: Curso ABAP

� Browser de Datos SE16SE16

Transacciones

Page 33: Curso ABAP

� BADI-Builder - Definiciones SE18SE18

Transacciones

Page 34: Curso ABAP

� BADI-Builder - Implementaciones SE19SE19

Transacciones

Page 35: Curso ABAP

� Package Builder SE21SE21

Transacciones

Page 36: Curso ABAP

� Generador de Clases SE24SE24

Transacciones

Page 37: Curso ABAP

� Actualizar elementos texto ABAP SE32SE32

Transacciones

Page 38: Curso ABAP

� Explorador BAPI BAPIBAPI

Transacciones

Page 39: Curso ABAP

� Business Object Builder SWO1SWO1

Transacciones

Page 40: Curso ABAP

� Batch Inputs SM35SM35

Transacciones

Page 41: Curso ABAP

SapSapen la Interneten la Internet

Page 42: Curso ABAP

SAP en la InternetSAP en la Internet

Pagina Oficial de SAPPagina Oficial de SAPhttp://www.sap.com

thethe SAP Developer SAP Developer NetworkNetwork (SDN)(SDN)https://www.sdn.sap.comSDN logon credentials are: User ID : p120302 Password :

K$Uk6_Rz

HelpHelp de SAPde SAPhttp://help.sap.com/

ABAP HELP ABAP HELP ofof SAPSAPhttp://help.sap.com/saphelp_webas630/helpdata/en/d3 /2e974d35c511d1829f0000e82

9fbfe/frameset.htm

Page 43: Curso ABAP

Algunos Foros de AyudaAlgunos Foros de Ayuda

http://www.sap4.com/

http://www.sapgenie.com/

http://foro.polo-sur.cl/

http://foro.sapabap.cc/

tgh://usuarios.lycos.es/abap4/

http://www.programacion.com/direcciones/abap4/

http://www.lawebdelprogramador.com/news/new.php?id= 82&texto=SAP

SAP en la InternetSAP en la Internet

Page 44: Curso ABAP

WorkbenchWorkbenchABAPABAP

Page 45: Curso ABAP

WorkbenchWorkbenchABAPABAP

Screen Painter

Menú Painter

Abap Dictionary

Abap Editor

Function Builder

OBJECT NAVIGATOR

Page 46: Curso ABAP

Global data

PBO modules

PAI modules

Subroutines

Screens

GUI status

Includes

Transactions

Development class

ProgramDev. class object types

Dictionary objects

Programs

Function groups

Includes

Transactions

Logical databases

Message classes

...

WorkbenchWorkbenchABAP ABAP –– Object NavigatorObject Navigator

Transacción: SE80

Page 47: Curso ABAP

Reportes Reportes

Page 48: Curso ABAP

Nombre del programa

Crear

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Creación de un Programa

Page 49: Curso ABAP

Texto descriptivo

Grabar

Tipo de programa

Status

Aplicación

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Creación de un Programa

Page 50: Curso ABAP

Clase de desarrollo para objetos

transportables

Objeto local (no transportable)

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Creación de un Programa

Page 51: Curso ABAP

Editor de ABAP

Grabar

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Creación de un Programa

Page 52: Curso ABAP

Visualizar / Modificar Alternar en tre los modos de visualización y modificación

Otro objeto Tratar otro objeto

Verificar Verificar consistencia

Activar Activar Programa

Referencia de utilización Listar los objetos que hacen referencia al programa

Breakpoints Agregar / eliminar breakpoints en el programa

Contenido Agregar código al programa según patrones

Pretty Printer Indentar el código del programa

Ejecutar Ejecutar el programa

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Creación de un Programa

Page 53: Curso ABAP

Reportes Reportes -- EstructuraEstructuraTransacción: SE38

Ejercicios

Ejercicio Funcional 01

Page 54: Curso ABAP

Proceso simple

* Proceso principalProceso previo a emisión de pantalla de selección

Proceso complejo

Proceso durante el uso de la pantalla de selección

Proceso de lectura de información

Proceso de elaboración de datos y emisión de reporte

Otros procesos...

Reportes Reportes -- EventosEventosTransacción: SE38

Page 55: Curso ABAP

INITIALIZATIONAT SELECTION-SCREENSTART-OF-SELECTIONEND-OF-SELECTION

Reportes Reportes -- EventosEventosTransacción: SE38

Page 56: Curso ABAP

INITIALIZACION

Es el primer evento en ejecutarse.Se ejecuta previo a la emisión de la pantalla de selección.Se utiliza para iniciar valores de variables, parámetros, etc...

* PARAMETROS

PARAMETERS:

P_FECHA LIKE SY-DATUM.

* EVENTO INITIALIZATION

INITIALIZATION.

P_FECHA = SY-DATUM - 1. "un día antes a la ejecución del programa

Reportes Reportes -- EventosEventosTransacción: SE38

Page 57: Curso ABAP

AT SELECTION-SCREEN

Se ejecuta luego de cualquier acción sobre la pantalla de selecciónSe utiliza para validar los datos de entrada y emitir mensajes por

pantalla.

* PARAMETROS

PARAMETERS:

P_FECHA LIKE SY-DATUM.

* EVENTO AT SELECTION-SCREEN.

AT SELECTION-SCREEN.

IF P_FECHA GT SY-DATUM. "si la fecha es mayor que l a del día

P_FECHA = SY-DATUM. "la setea a la del día

ENDIF.

Reportes Reportes -- EventosEventosTransacción: SE38

Page 58: Curso ABAP

AT SELECTION-SCREEN

Se ejecuta luego de cualquier acción sobre un parámetro de la pantalla de selecciónSe utiliza para validar los datos de entrada y emitir mensajes por

pantalla.

* PARAMETROS

PARAMETERS:

P_FECHA LIKE SY-DATUM.

* EVENTO AT SELECTION-SCREEN.

AT SELECTION-SCREEN ON P_FECHA.

IF P_FECHA GT SY-DATUM. "si la fecha es mayor que l a del día

P_FECHA = SY-DATUM. "la setea a la del día

ENDIF.

Reportes Reportes -- EventosEventosTransacción: SE38

Page 59: Curso ABAP

AT SELECTION-SCREEN (otras)AT SELECTION-SCREEN ON VALUE-REQUEST FOR <campo>.

Se ejecuta cuando se activa el matchcode de un parám etro

AT SELECTION-SCREEN ON HELP-REQUEST FOR <campo>.

Se ejecuta cuando se activa la ayuda de un parámetr o

AT SELECTION-SCREEN ON RADIOBUTTON GROUP <grupo>.

Se ejecuta cuando se realiza alguna acción sobre un grupo de radiobuttons

AT SELECTION-SCREEN ON BLOCK <bloque>

Se ejecuta cuando se realiza alguna acción sobre un bloque entero

AT SELECTION-SCREEN OUTPUT

Se ejecuta previo a la emisión de la pantalla de selección y ante cualquier acción sobre ella (como el INITIALIZATION pero en forma reiterada)

Reportes Reportes -- EventosEventosTransacción: SE38

Page 60: Curso ABAP

START-OF-SELECTION

Se ejecuta inmediatamente cuando finaliza la selección de parámetros en la pantalla de selecciónSe utiliza para los procesos de lectura de información

•* TIPOS•TYPES: BEGIN OF REG,• NRO TYPE N,• TEXTO(10) TYPE C,• END OF REG.••* TABLA INTERNA•DATA: TABLA TYPE REG OCCURS 0 WITH HEADER LINE.

•* CARGA DE DATOS EN LA TABLA INTERNA•START-OF-SELECTION.•TABLA-NRO = 1. TABLA-TEXTO = 'UNO'.•APPEND TABLA.•TABLA-NRO = 2. TABLA-TEXTO = 'DOS'.•APPEND TABLA.•TABLA-NRO = 3. TABLA-TEXTO = 'TRES'.•APPEND TABLA.

Reportes Reportes -- EventosEventosTransacción: SE38

Page 61: Curso ABAP

END-OF-SELECTION

Se ejecuta cuando finaliza el evento START-OF-SELECTIONSe utiliza en los procesos de emisión de información

•* TABLA INTERNA•DATA: T_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.

•* EVENTO DE SELECCION•START-OF-SELECTION.• SELECT * • FROM MARA• INTO TABLE T_MARA.••* EVENTO DE FIN DE SELECCION •END-OF-SELECTION.• LOOP AT T_MARA.• WRITE:/ T_MARA.• ENDLOOP.

Reportes Reportes -- EventosEventosTransacción: SE38

Page 62: Curso ABAP

ABAP/4 Program AttributesABAP/4 Program Attributes

Typ 1: ReportM: Module pool, dialog

programV: Update program

...

Status T: Test programP: Production programK: Customer programS: System program

F4 F4

Object BrowserObject Browser

Program objects

Attributes

ABAPABAP

Atributos I

Authorization group

Type................ 1 Reporting

Status............. T Test

Application..... S System

Authorization SAB1group..............

Development SAB1class...............

Reportes Reportes -- AtributosAtributosTransacción: SE38

Page 63: Curso ABAP

ABAP/4 Program AttributesABAP/4 Program Attributes

F4 F4

ApplicationClass Application Text

DEBI F CustomersKRED F VendorsSCHU S Training

Development class

G: General Ledger

F: Financial Accounting

Table TADIR

Atributos II

Type................ 1 Reporting

Status............. T Test

Application.... S System

Authorization SAB1 ABAP/4 training...group.............

Development SAB1class..............

Reportes Reportes -- AtributosAtributosTransacción: SE38

Page 64: Curso ABAP

Tipo deDato

Descripción Valor Inicial Longitud Longitudestándar permitida

packed number 0 8 1-16

integer 0 * -

floating point no. 0.000... * -

numeric text 00...0 1 1-max.

text blank 1 1-max.

date (YYYYMMDD) 00000000 8 8

time (HHMMSS) 000000 6 6

hexadecimal X'00' 1 1-max.

* machine-dependent max.: ca. 64 KB

P

I

F

N

C

D

T

X

Tipos de Datos y sus Atributos

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 65: Curso ABAP

P

I

F

N

C

D

T

X

right-justified

right-justified

right-justified

left-justified

left-justified

left-justified

left-justified

left-justified

lg = length of field (in bytes) (*) depends on largest number which can be displayed

Type Standard output length Output

2* Ig

( * )

22

Ig

Ig

8

6

2 *Ig

Salidas por Tipo

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 66: Curso ABAP

Tipo Constante

579, -713, '2.17'

917, -882

'25.873', '1.213E15', '17E-6', '0.556E7'

'778', '87931'

'AXZ', 'B123', 'AB"CD'

'19920221'

'105743'

'0FFF'

P

I

F

N

C

D

T

X

'ABC', ‘Este es un texto'La secuencia máxima permitida esde 255 caracteres

Texto literal

715, -431Secuencia de digitos, números Negativos con signo precedente

Número literal

Constantes

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 67: Curso ABAP

Reglas para la asignación de tipos de nombres

TYPES: MYTYPE TYPE I,NAME1(25),DATE1 LIKE SY-DATUM,SUM_FIELD TYPE P DECIMALS 2.

Un nombre no puede contener más de 30 caracteres(incl. letras, digitos y caracteres especiales)

Los siguientes caracteres no son permitidos( ) + . , : - < >

Un nombre no puede consistir solamente de n{umeros

Recomendación: Siempre use una letra como elprimer carácter y una palabras individuales alnombre con un underline.

Declaración de Tipos

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 68: Curso ABAP

DATA: COUNTER TYPE I ,NAME1(25) VALUE 'SAP',START_DATE TYPE D,FIRST_LINE TYPE I

VALUE 1,SUM1(5) TYPE P DECIMALS 2.

Reglas para la asignación de nombres

Un nombre no puede superar los 30 caracteres(incl. letras, digitos y caracteres especiales).

Los siguientes caracteres no pueden utilizarse:( ) + . , :

SPACE es un campo predefinido

En una instrucción ABAP/4, no es posible usarel mismo nombre para un parámetro y un campo

Declaración de Datos

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 69: Curso ABAP

Tipos ABAP

Reportes Reportes –– Tipos datosTipos datosTransacción: SE38

Page 70: Curso ABAP

ABAP program

statement

word 1 word 2 word 3

word 4 .

key word parameter, field, constant

DATA COUNTER TYPE I.DATA NAME(20).

MOVE 1 TO COUNTER.MOVE 'ABC' TO NAME.

.

.

.WRITE NAME.WRITE COUNTER.

Sintaxis ABAP

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 71: Curso ABAP

DATA: SUM TYPE P, " Totals fieldCOUNTER TYPE P.

* New account* Initialize totals field

CLEAR SUM.

Comentarios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 72: Curso ABAP

DATA: START TYPE D,SUM1 TYPE F,SUM2 TYPE P.

.

.

.IF START IS INITIAL ... .IF SUM1 GT SUM2 ... .IF SUM1 BETWEEN 0 AND 100 ... .

EQ =

NE < > > <

GT >

GE > = =>

LT <

LE < = = <

IS INITIAL

BETWEEN f1 and f2

EQual

Not Equal

Greater Than

Greater than or Equal

Less Than

Less than or Equal

Initial value

Range

OperatorOperator MeaningMeaning

Operadores Relacionales

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 73: Curso ABAP

TYPES: NAMETYPE1 LIKE SCUSTOM-NAME,NAMETYPE2(25).

DATA: NAME1 TYPE NAMETYPE1,NAME2 TYPE NAMETYPE2,NAME3 LIKE NAME1.

CLEAR <field>.

initializes a field withan appropriate valuefor the type.

Declarando Campos con Atributos similares

Reportes Reportes –– SintaxisSintaxisTransacción: SE38

Page 74: Curso ABAP

REPORT RSAAA02C.WRITE: '******************************'.

SKIP 2.

WRITE: 'Date', SY-DATUM.WRITE: 'Time', SY-UZEIT.SKIP 2.WRITE: '******************************'.

ABAP/4 Programm Attribute

WRITE: Introduction 1

**********************************************Date 01.01.1996 Time 14:46:10

**********************************************

WRITE

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 75: Curso ABAP

REPORT RSAAA02D.WRITE: 5'******************************'.SKIP.WRITE: 5 'Date', 20 SY-DATUM,

/5 'Time', 20 SY-UZEIT.ULINE /5(30).SKIP2.ULINE.

ABAP/4 Programm Attribute

WRITE: Format specifications

********************************************Date 01.01.1996 Time 16:18:38

-------------------------------------------------------------------------------------------------------------------------

column 20column 5

Especificación de Formatos

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 76: Curso ABAP

REPORT RSAAA04A.

DATA: NAME1(25),SORT_NAME(10), FIRST_LINE(4) TYPE N,NEXT_LINE TYPE I.

...MOVE 'SAP' TO NAME1.MOVE 5 TO FIRST_LINE.COMPUTE NEXT_LINE = FIRST_LINE + 1.SORT_NAME = NAME1.ADD 1 TO NEXT_LINE.

.

.

.

Asignación de Valores

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 77: Curso ABAP

WRITE 'XYZ'.WRITE NAME.WRITE COUNTER.

WRITE: 'XYZ', NAME,COUNTER.

ADD 1 TO COUNTER1.ADD 1 TO COUNTER2.ADD 1 TO COUNTER3.

ADD 1 TO: COUNTER1,COUNTER2,COUNTER3.

CHAIN

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 78: Curso ABAP

REPORT RSAAA04C.DATA: ACCOUNT(10) TYPE C,

START LIKE SY-DATUM.ACCOUNT = '1234567890'.START = '19950715'.WRITE: ACCOUNT+8(2), '**',

START(4).

*Beginning of monthSTART+6(2) = '01'.ACCOUNT+6 = '9999'.WRITE: / ACCOUNT, '****',

START.

90 ** 19951234569999 **** 01.07.1995

Sub-Campos

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 79: Curso ABAP

F1 F2 F3 G

REPORT RSAAA04I.DATA: ONE(1) VALUE 'I', TWO(4) VALUE 'LIKE',

THREE(6) VALUE 'ABAP/4', TARGET(20).

CONCATENATE ONE TWO THREE INTO TARGET SEPARATED BY SPACE.

WRITE: / TARGET...CLEAR: ONE, TWO, THREE..SPLIT TARGET AT SPACE INTO ONE TWO THREE.

WRITE: / ONE, TWO, THREE.

SPLIT G AT SPACE INTO F1 F2 F3.

CONCATENATE F1 F2 F3 INTO G.

Operaciones con String

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 80: Curso ABAP

REPORT RSAAA04D.DATA: DIFF TYPE P.

DATE_1 LIKE SY-DATUM,DATE_2 LIKE SY-DATUM.

DATE_1 = SY-DATUM.DATE_2 = SY-DATUM.

*Beginning of month

DATE_2+6(2) = '01'.

*Last day of previous month

DATE_2 = DATE_2 - 1.

*Difference in days

DIFF = DATE_1 - DATE_2.

Cálculo de Fechas

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 81: Curso ABAP

PROGRAM RSAAA04B.DATA: COUNTER TYPE I,

AMOUNT TYPE P VALUE 1000,SUM TYPE P,RESULT TYPE P,NUMBER(2) TYPE C VALUE '99',

ROOT TYPE F.COMPUTE: COUNTER = COUNTER + 2,

RESULT = AMOUNT * COUNTER.SUM = RESULT + NUMBER - COUNTER.RESULT = COUNTER * (AMOUNT + NUMBER).ROOT = SQRT(NUMBER + COUNTER).

+ - / *

DIV MOD

SQRT EXP LOGSIN COS STRLENTAN ...

operators functions

Expresiones Aritméticas

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 82: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 02.

Ejercicio Funcional 03.

Ejercicio Funcional 04.

Page 83: Curso ABAP

Creación de Mensajes

Para crear nuevos mensajes se utiliza la transacción SE91 o biense puede realizar desde el programa.Cada mensaje debe pertenecer a una clase de mensajes. Estas

clases son agrupamientos que facilitan el trabajo con los mensajes.

MESSAGE <tipo><999>(<clase>)

Utilización de Mensajes

<tipo> i = información, e = error, w = warning, a = cancel

<999> Número de mensaje a mostrar.

<clase> Clase a la que pertenece el mensaje.

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 84: Curso ABAP

Mensajes con campos variables

Para poder mostrar un mensaje con variables, estas se deben pasar por parámetro.La cantidad de valores no puede ser mayor que cuatro (4).

MESSAGE e001(ZM) WITH variable1 variable2.

001 ‘ La factura &1 no puede ser calculada con fecha &2’.

Donde se creará un mensaje con las siguientes características:

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Page 85: Curso ABAP

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 86: Curso ABAP

PARAMETERS <field>.

REPORT RSAAA04E.PARAMETERS:PAR1 TYPE P,

PAR2 DEFAULT 'X'....

MOVE PAR1 TO ... .

WRITE: PAR1, PAR2....

.

.

.PAR1 -PAR2 X

selectionscreen

Parameters

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 87: Curso ABAP

Parameters / Select-Options

PARAMETERS SELECT-OPTIONS

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 88: Curso ABAP

Sintaxis de Parámetros y Opciones de Selección

PARAMETERS: <par> like/type <campo>.

SELECTION-OPTIONS: <par> for <tabla-campo>.

Emite textos en la pantalla de selección

n<par>: Nombre que se otorga al parámetro. Por nomenclatura comienza con p_xxxxxxxx.n<campo>: Variable o literal para el texton<tabla-campo> Campo de la tabal a la que hace referencia

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 89: Curso ABAP

Reportes Reportes -- ParámetrosParámetrosPARAMETRES: <VAR> TYPE TIPO>

LIKE <TIPO>1. ... DEFAULT f 2. ... TYPE typ3. ... DECIMALS 4. ... LIKE g 5. ... MEMORY ID pid6. ... MATCHCODE OBJECT mobj7. ... MODIF ID key8. ... NO-DISPLAY 9. ... LOWER CASE 10. ... OBLIGATORY 11. ... AS CHECKBOX 12 ... RADIOBUTTON GROUP radi13. ... FOR TABLE dbtab14. ... AS MATCHCODE STRUCTURE 15. ... VALUE-REQUEST 16. ... HELP-REQUEST

EjemploPARAMETERS: NUMBER (4) TYPE P DECIMALS 2 DEFAULT '123.45'.PARAMETERS PROGRAM LIKE SY-REPID OBLIGATORY DEFAULT ‘MIPROGRAMA’.PARAMETERS: P_OPT1 RADIOBUTTON GROUP RADI,

P_OPT2 RADIOBUTTON GROUP RADI DEFAULT ‘X’,P_OPT3 RADIOBUTTON GROUP RADI.

PARAMETRES: P_NOMARC(40) TYPE LOWER CASE DEFAULT ‘c:\path\ARCHIVO.txt’.PARAMETERS: P_CHK1 AS CHECKBOX DEFAULT ‘X’,

P_CHK2 AS CHECKBOX.

Page 90: Curso ABAP

SELECT-OPTIONS Permite determinar un criterio de selección de los datos a utilizar

SELECT-OPTIONS <VAR> FOR <CAMPO_TABLA>1. ... DEFAULT g 2. ... DEFAULT g ... OPTION xx ... SIGN s 3. ... DEFAULT g TO h 4. ... DEFAULT g TO h ... OPTION xx ... SIGN s 5. ... MEMORY ID pid6. ... MATCHCODE OBJECT mobj7. ... MODIF ID key8. ... NO-DISPLAY 9. ... LOWER CASE 10. ... OBLIGATORY 11. ... NO-EXTENSION 12. ... NO INTERVALS 13. ... NO DATABASE SELECTION 14. ... VALUE-REQUEST 15. ... VALUE-REQUEST FOR LOW/HIGH 16. ... HELP-REQUEST 17. ... HELP-REQUEST FOR LOW/HIGH Ejemplo

SELECT-OPTIONS DATE FOR SY-DATUM DEFAULT SY-DATUM.SELECT-OPTIONS SOCIE FOR T001-BUKRS OBLIGATORY.SELECT-OPTIONS DOCUM FOR BKPF-BELNR NO-EXTENSION.

Reportes Reportes -- ParámetrosParámetros

Page 91: Curso ABAP

Frame / Title

TITLESFRAMEPARAMETERS

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 92: Curso ABAP

Sintaxis BloquesSELECTION-SCREEN BEGIN OF BLOCK <bloque> [ WITH FRA ME [ TITLE <título> ] ] [ NO INTERVALS ]

...

SELECTION-SCREEN END OF BLOCK <bloque>.

Define un bloque lógico en la pantalla de selección<bloque> : Nombre del bloque

WITH FRAME: emite un recuadro para el bloqueTITLE: Emite un título arriba a izquierda del bloque

<título> Variable o literal para el títuloNO INTERVALS: define globalmente que todos los SELECT-OPTIONS contenidos

en el bloque no tienen intervalosUn bloque puede contener a otroUn bloque puede contener cualquier otro elemento de una pantalla

de selección

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 93: Curso ABAP

Comment / Lines

LINES

COMMENT

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 94: Curso ABAP

Sintaxis Comentarios

SELECTION-SCREEN COMMENT [ / ] <posición> (<longitu d>) <campo1> [ FOR FIELD <campo2> ] [ MODIF ID <clave> ] .

Emite textos en la pantalla de selección

n / : Pasa a la línea siguienten<posición>: Posición en pantalla del comienzo del texton<longitud>: Longitud del texton<campo1> Variable o literal para el textonFOR FIELD: Determina que el texto es asignado a otro parámetro/criterio de selecciónn<campo2>: Parámetro o criterio de selecciónnMODIF ID: Determina que el texto es además un parámetron<clave>: Identificador del texto como parámetro

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 95: Curso ABAP

Sintaxis Líneas de parámetros

SELECTION-SCREEN BEGIN OF LINE.

....

SELECTION-SCREEN END OF LINE.

Define un línea de parámetros y textos (PARAMETERS yCOMMENTS).

Se utiliza para evitar siempre usar líneas separadasNo se pueden incluir SELECT-OPTIONS

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 96: Curso ABAP

Radiobutton / Checkbox

RADIOBUTTON

CHECKBOX

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 97: Curso ABAP

Sintaxis Checkbox

PARAMETER: <par> AS CHECKBOX.

Define un parámetro como checkbox. Es un parámetro especial que mediente la

accióndel usuario con el mouse puede marcar o

desmacar uncasillero.<par>: Nombre del parámetro

Su formato es de carácter de longitud 1.Sus valoresposibles son: ‘X’: si se encuentra

marcado y ‘ ‘ si no se encuentra marcado

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 98: Curso ABAP

Sintaxis Radiobutton

PARAMETER: <par> RADIOBUTTON GROUP <gr>.

Define un parámetro como Radiobutton.Es un parámetro especial que permite ser

marcadoo desmarcado, permitiendo sólo marcar uno por

grupode radiobuton.<par>: Nombre del parámetro<gr>: Grupo de radiobuttons al cual pertenece

Su formato es de carácter de longitud 1.Sus valoresposibles son: ‘X’: si se encuentra

marcado y ‘ ‘ si no se encuentra marcado

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 99: Curso ABAP

Sintaxis Pushbutton

SELECTION-SCREEN PUSHBUTTON <posición> (<longitud>) <nom> USER-COMMAND <ucomm>

Define un botón en la pantalla.<posición>: Posición en pantalla del

comienzo del botón<longitud>: Longitud del botón<nom>: variable o literal para texto del

botón<ucomm>: código de comando

identificadorSu formato es de carácter de longitud 1.Sus valores posibles son: ‘X’: si se encuentra

marcado y ‘ ‘ si no se encuentra marcado

Botón

Texto

Reportes Reportes -- ParámetrosParámetrosTransacción: SE38

Page 100: Curso ABAP

Sentencias de ControlSentencias de Control

Page 101: Curso ABAP

IF ENDIFCASE ENDCASE

DO ENDDOWHILE ENDWHILE

CHECKEXIT

Case distinction

Loops

Other control statements

Sentencias de ControlSentencias de Control

Sentencias de Control

Page 102: Curso ABAP

IF <logical expression>.

ENDIF.

IF <logical expression>.

ELSE.

ENDIF.

IF <logical expression>.

ELSEIF <logical expression>.

ELSEIF <logical expression>.

ELSE.

ENDIF

statements

statements

statements

statements

statements

statements

statements

IF

Sentencias de ControlSentencias de Control

Page 103: Curso ABAP

CASE <field>.

WHEN <value>.

WHEN <value2>.

WHEN <value3>.

WHEN OTHERS.

ENDCASE.

statements

statements

statements

statements

CASE

Sentencias de ControlSentencias de Control

Page 104: Curso ABAP

DO <n> TIMES.

ENDDO.

loop index

statements

SY-INDEX

DO (ciclo)

Sentencias de ControlSentencias de Control

Page 105: Curso ABAP

WHILE <logical expression>.

ENDWHILE.

WHILE COUNTER > 0....

SUBTRACT 1 FROM COUNTER.ENDWHILE.

statements

loop indexSY-INDEX

WHILE (ciclo)

Sentencias de ControlSentencias de Control

Page 106: Curso ABAP

DO

IF COUNTER GE 100.EXIT.

ENDIF.

ENDDO.

statements

statements

Sentencias de ControlSentencias de Control

EXIT

Dentro de un bucle saldrá del mismo y fuera del bucle saldrá del programa

Page 107: Curso ABAP

WHILE COUNTER GT 0

CHECK FLAG NE SPACE.

ENDWHILE.

statements

statements

CHECK

Sentencias de ControlSentencias de Control

Valida la expresión lógica dentro de un bucle y si es falso vuelve al comienzo del mismo

Page 108: Curso ABAP

CONTINUE

Sentencias de ControlSentencias de Control

DO

IF COUNTER GE 100.CONTINUE.

ENDIF.

ENDDO.

statements

statements

Finaliza el paso actual en un bucle y vuelve al principio del mismo.

Page 109: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 05.

Ejercicio Funcional 06.

Ejercicio Funcional 07.

Page 110: Curso ABAP

SelectSelect

Page 111: Curso ABAP

REPORT RSAAA02B.TABLES: SBOOK.SELECT * FROM SBOOK

WHERE CARRID = 'LH '.

ENDSELECT.IF SY-SUBRC NE 0.

ENDIF.

statements

statements

SelectSelect

Page 112: Curso ABAP

TableSBOOK

CARRID CONNID FLDATE BOOKID

REPORT RSAAA02A.TABLES SBOOK.SELECT * FROM SBOOK.

WRITE: / SBOOK-CARRID,SBOOK-CONNID,SBOOK-FLDATE, ... .

ENDSELECT.

Table work area SBOOK

Table description SBOOKSHOW SBOOK Dict.

SBOOK-CARRID CHAR C 3

SBOOK-CONNID NUMC N 4

SBOOK-FLDATE DATS D 8

SBOOK-BOOKID NUMC N 8

Name Type Length

SelectSelect

Page 113: Curso ABAP

SelectSelect

Select …

Into …From …

Where …Group …

Order …

Page 114: Curso ABAP

SelectSelect

� Select [single] *

� Select [single] <campo 1> … <campo n>� <campo i>

� Campo de la tabla� Tabla~Campo / Alias~Campo (Join)� Campo Calculado

� MAX( f )� MIN( f )� SUM( f )� COUNT( f )� AVG( f )

Page 115: Curso ABAP

SelectSelect

� Into <variable>� Into (<variable 1>, …, <variable n>)� Into <estructura>� Into corresponding fields of <estructura>� Into table <itab>� Into corresponding fields of table <itab>� Appending table <itab>� Appending corresponding fields of table

<itab>

Page 116: Curso ABAP

SelectSelect

� From <tabla>

� From <tabla 1> [as <alias 1>][inner] join / left [outer] join<tabla 2> [as <alias 2>]

� On <condición>� <condición>

� Tabla 1 / Alias 1 ~ campo <operador> Tabla 2 / Alias 2 ~ campo

Page 117: Curso ABAP

SelectSelect

� Where <condición>

� For all entries in <itab> where <condición>

� Up to <n> rows� Condición

� [tabla / alias ~] campo i <operador relacional> [tabla / alias ~] campo j<operador lógico>[tabla / alias ~] campo k <operador relacional> [tabla / alias ~] campo l

Page 118: Curso ABAP

SelectSelect

� Group by [tabla / alias ~] <campo 1> …[tabla / alias ~] <campo n>

� Having <condición>

Page 119: Curso ABAP

SelectSelect

� Order by primary key

� Order by [tabla / alias ~] <campo 1> …[tabla / alias ~] <campo n>

Page 120: Curso ABAP

Tablas InternasTablas Internas

Page 121: Curso ABAP

DATA: <itab> TYPE <type> OCCURS <n>.

REPORT RSAAA06O.TYPES: BEGIN OF FLIGHTINFO_TYPE,

CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO_TYPE.DATA: FLIGHT_LIST TYPE FLIGHTINFO_TYPE OCCURS 5,

LIST_WA TYPE FLIGHTINFO_TYPE....

CARRID CONNID FLDATE PRICE

without headerline !!!

Tablas InternasTablas Internas

Declarando tablas internas (without header line)

Page 122: Curso ABAP

READ TABLE <itab> INTO <wa> WITH KEY... .

CARRID CONNID PRICE

AA 0064

AA

DL

0064

1699

12300

66667

66667

LH 0400 100000

LH 0402 100000

UA 0007 100000

LH 0402 100000 work area

LOOP AT <itab> INTO <wa>.....ENDLOOP.

without headerline !!!

Leyendo tablas internas (without header line)

Tablas InternasTablas Internas

Page 123: Curso ABAP

APPEND <wa> TO <itab>.

CARRID CONNID PRICE

AA 0064

AA

DL

0064

1699

12300

66667

66667

LH 0400 100000

LH 0402 100000

UA 0007 100000

AA 0064 89000 work area

APPEND LIST_WA TO FLIGHT_LIST.

without headerline !!!

Insertando campos en tablas internas (without header line)

Tablas InternasTablas Internas

Page 124: Curso ABAP

FLIGHT DATA

Carrier Connection Date Price

Carrier Connection Date Price

FLIGHT DATA LIST

header line

Field stringField string

Internal tablesInternal tables

Fields Strings / Internal Tables (with header line)

Tablas InternasTablas Internas

Page 125: Curso ABAP

DATA: BEGIN OF <name>,END OF <name>.

REPORT RSAAA06A.

DATA: AMOUNT(5) TYPE P VALUE '563.12',BEGIN OF FLIGHTINFO,

FLAG TYPE C,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO....

MOVE 'X' TO FLIGHTINFO-FLAG.ADD AMOUNT TO FLIGHTINFO-PRICE.

.

.

.WRITE: / FLIGHTINFO-FLAG, FLIGHTINFO-CARRID,

FLIGHTINFO-CONNID,FLIGHTINFO-FLDATE.

Declaración de Field Strings

Tablas InternasTablas Internas

Page 126: Curso ABAP

MOVE-CORRESPONDING <f1> TO <f2>.

REPORT RSAAA06B.TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO,

FLAG TYPE C,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO.SELECT * FROM SFLIGHT WHERE...

MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO.ENDSELECT.

SFLIGHTCARRID CONNID FLDATE

LH 2407 19951029

CLEAR <f1>.CLEAR <f1>.

FLIGHTINFOMOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO.

FLAG CARRID CONNID FLDATE

LH 2407 19951029

Moviendo valores campo por campo

Tablas InternasTablas Internas

Page 127: Curso ABAP

DATA: BEGIN OF <tab> OCCURS <n>, ...,END OF <tab>.

REPORT RSAAA06C.TABLES: SFLIGHT.DATA: AMOUNT(5) TYPE P,

BEGIN OF FLIGHTINFO_LIST OCCURS 5,FLAG TYPE C,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO_LIST...

FLIGHTINFO_LISTFLAG CARRID CONNID FLDATE PRICE

header line

Declarando Tablas Internas (with header line)

Tablas InternasTablas Internas

Page 128: Curso ABAP

READ TABLE <itab> WITH KEY ...

REPORT RSAAA06L.TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST

OCCURS 10,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO_LIST,TAB_INDEX TYPE I.

SELECT * FROM...

MOVE-CORRESPONDING...APPEND...

ENDSELECT..

READ TABLE FLIGHTINFO_LISTWITH KEY 'LH 0400'.

IF SY-SUBRC NE 0.... ENDIF..TAB_INDEX = SY-TABIX + 1.

READ TABLE FLIGHTINFO_LISTINDEX TAB_INDEX.

IF SY-SUBRC NE 0.... ENDIF..

Leyendo entradas de tablas internas (with header line )

Tablas InternasTablas Internas

Page 129: Curso ABAP

APPEND<itab>. APPEND<itab> SORTED BY <field>.

CARRID CONNID PRICE

AA 0064

AA

DL

0064

1699

12300

66667

66667

LH 0400 100000

LH 0402 100000

UA 0007 100000

AA 0064 89000

CARRID CONNID PRICE

LH 0400

LH

UA

0402

0007

100000

AA 0017 66667

DL 1984 43200

UA 0007 23300

AA 0064headerline

81200

100000

100000

APPEND FLIGHTINFO_LIST. APPEND FLIGHTINFO_LIST SORTED BY PRICE.

Insertando campos en tablas internas (with header lin e)

Tablas InternasTablas Internas

Page 130: Curso ABAP

REPORT RSAAA06E.TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST

OCCURS 10,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,PRICE LIKE SFLIGHT-PRICE,END OF FLIGHTINFO_LIST.

SELECT * FROM SFLIGHT.MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.APPEND FLIGHTINFO_LIST.

ENDSELECT....

REPORT RSAAA06F...

SELECT * FROM SFLIGHT.MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.APPEND FLIGHTINFO_LIST SORTED BY PRICE.

ENDSELECT...

Insertando campos en tablas internas (with header lin e)

Tablas InternasTablas Internas

Page 131: Curso ABAP

CARRID PRICE (TYP P)

4

5

6

7

8

9

LH 100000 header line

AA 2090938 1

DL 933338 2

LH 1766669 3 1866669

COLLECT <itab>. REPORT RSAAA06G.

TABLES: SFLIGHT.

DATA: BEGIN OF FLIGHTINFO_LISTOCCURS 10,

CARRID LIKE SFLIGHT-CARRID,PRICE LIKE TSFLIGHT-PRICE,

END OF FLIGHTINFO_LIST.

SELECT * FROM SFLIGHT.MOVE-CORRESPONDING SFLIGHT TOFLIGHTINFO_LIST.COLLECT FLIGHTINFO_LIST.

ENDSELECT.

Sumando campos en tablas internas (with header line)

Tablas InternasTablas Internas

Page 132: Curso ABAP

REPORT RSAAA06M.TABLES:SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST OCCURS 5,

CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF TAB...

READ TABLE FLIGHTINFO_LIST WITHKEY 'LH 0400'.

MOVE '345.89' TO FLIGHTINFO_LIST-PRICE.MODIFY FLIGHTINFO_LIST INDEX SY-TABIX. IF SY-SUBRC NE 0. ...ENDIF.

. .INSERT FLIGHTINFO_LIST INDEX 1.

...DELETE FLIGHTINFO_LIST INDEX 1.IF SY-SUBRC NE 0. ...ENDIF.

..

INSERT <itab> INDEX <i>.MODIFY <itab> INDEX <i>.DELETE <itab> INDEX <i>.

Modificando tablas internas (with header line)

Tablas InternasTablas Internas

Page 133: Curso ABAP

REPORT RSAAA06N....

LOOP AT FLIGHTINFO_LIST. ...

INSERT FLIGHTINFO_LIST. ...

MODIFY FLIGHTINFO_LIST. ...

DELETE FLIGHTINFO_LIST. ...

ENDLOOP.

Modificando tablas internas (with header line)

Tablas InternasTablas Internas

Page 134: Curso ABAP

SORT <itab> BY <field1> <field2> . . . .

REPORT RSAAA06H.TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST OCCURS 10,

CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO_LIST.SELECT * FROM SFLIGHT.

MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.APPEND FLIGHTINFO_LIST.

ENDSELECT.

SORT FLIGHTINFO_LIST...SORT FLIGHTINFO_LIST BY PRICE FLDATE...SORT FLIGHTINFO_LIST BY PRICE ASCENDING

FLDATE DESCENDING.

Ordenando tablas internas (with header line)

Tablas InternasTablas Internas

Page 135: Curso ABAP

LOOP AT <i tab>. ...ENDLOOP.

REPORT RSAAA06I.

TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST OCCURS 10,

CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF TAB.SELECT * FROM SFLIGHT.

MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.APPEND FLIGHTINFO_LIST.

ENDSELECT.

LOOP AT FLIGHTINFO_LIST.WRITE: / FLIGHTINFO_LIST-CARRID, FLIGHTINFO_LIST-CO NNID...

ENDLOOP....

LOOP AT FLIGHTINFO_LIST WHERE CARRID = 'LH'.WRITE: / FLIGHTINFO_LIST-CARRID, FLIGHTINFO_LIST-CO NNID...

ENDLOOP.IF SY-SUBRC NE 0.

.

.ENDIF.

Procesando tablas internas (with header line)

Tablas InternasTablas Internas

Page 136: Curso ABAP

REFRESH <tab>.

CLEAR <tab>.

FREE <tab>.

Initialize header line

Delete all table entriesMemory space remains occupied

Delete all table entriesMemory space is released

Borrando tablas internas (with header line)

Tablas InternasTablas Internas

Page 137: Curso ABAP

REPORT RSAAA06P.TABLES: SFLIGHT.DATA: BEGIN OF FLIGHTINFO_LIST OCCURS 10,

CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,FLDATE LIKE SFLIGHT-FLDATE,PRICE LIKE SFLIGHT-PRICE,

END OF FLIGHTINFO_LIST,LINE_COUNT TYPE I,OCCURS_COUNT TYPE I.

SELECT *...MOVE-CORRESPONDING...APPEND...

ENDSELECT.DESCRIBE TABLE FLIGHTINFO_LIST

LINES LINE_COUNTOCCURS OCCURS_COUNT.

DESCRIBE TABLE < itab>... .

Información acerca de tablas internas

Tablas InternasTablas Internas

Page 138: Curso ABAP

INCLUDE STRUCTURE <tab>.

REPORT RSAAA06D....

DATA: BEGIN OF ITAB OCCURS 5.INCLUDE STRUCTURE SFLIGHT.

DATA: END OF ITAB,NAME2 LIKE SCUSTOM-NAME.

Table structure SFLIGHT

SFLIGHT-MANDT CLNT C 3

SFLIGHT-CARRID CHAR C 3

SFLIGHT-CONNID NUMC N 4

SFLIGHT-FLDATE DATS D 8

Utilizando Estructuras del Diccionario ABAP

Tablas InternasTablas Internas

Page 139: Curso ABAP

� READ TABLE� APPEND� COLLECT� INSERT� DELETE� MODIFY� CLEAR, REFRESH, FREE� DESCRIBE TABLE� SORT� MOVE-CORRESPONDING� LOOP AT� AT FIRST, AT LAST, AT NEW, AT END OF

Tablas InternasTablas Internas

Page 140: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 08.

Ejercicio Funcional 09.

Ejercicio Funcional 10.

Page 141: Curso ABAP

DiccionarioDiccionario

Page 142: Curso ABAP

Tablas TransparentesTablas Transparentes

Base de Datos Físicafield 1 field 2 field 3 field 4

ABAP Dictionarylogical table definition

field 1 field 2 field 3 field 4

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionarioTransacción: SE11

Front End

Aplicaciones

BD SAP

BD Física

Page 143: Curso ABAP

n APPL0 – (Master Data): Cuando los datos son raramente actualizados

n APPL1 – (Transaction Data): Cuando los datos son frecuentementeactualizados.

n APPL2 – (Organizational Data): Cuando los datos son definidos por customizing y son raramente actualizados.

n USR1 e USR2 – (User Developments): Cuando los datos son para tests de desarrollo.

Transacción: SE11

Clases de TablasClases de Tablas

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 144: Curso ABAP

Transacción: SE11

Categoría por Tamaño

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 145: Curso ABAP

Vista: Visión lógica de una o más tablas. No almacena datos físicamente sino toma los datos de las tablasTabla: Estructura de datos que consta de campos o columnas en su

definición horizontal y registros o filas en su definición verticalElemento de datos: Describen los atributos de los tipos de datosDominio: Describe los atributos técnicos de un campo

MATNR

MATNR

Vista TablaDominio

Elemento de datos

Transacción: SE11WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 146: Curso ABAP

Tabla-Campo

BKPF-BELNR

BSAD-BELNR

BSEG-BELNR

BSAD-AUGBL

BSEG-AUGBL

Nº de un documentocontable

BELNR

Dominio

Nº de documentode compensación

AUGBL

Elemento de Datos

BELNR_D

Nº de un documentocontable

Transacción: SE11

Dominio / Elementos de Datos

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 147: Curso ABAP

Transacción: SE11

MANDANTE

T000 (tabla de Mandantes)Tabla de Valoración

MandanteDescripción

3Longitud

CLNT (alfanumérico)Tipo

MANDTDominio

MANDTElemento de Datos

MANDTCampo

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 148: Curso ABAP

Nombre de la tabla

Crear

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 149: Curso ABAP

Texto descriptivo

Permitir actualización

manual

Clase de entrega (tipo

de tabla)

Grabar

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 150: Curso ABAP

Clase de desarrollo para objetos

transportables

Objeto local (no transportable)

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 151: Curso ABAP

Clase de desarrollo temporal

Definición de campos

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 152: Curso ABAP

Tipo de campo (elemento de datos)

Nombres de los campos Texto

descriptivoTipo de

dato

Opciones técnicas

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 153: Curso ABAP

Clase de datos

Tamaño

Grabar

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 154: Curso ABAP

Visualizar / Modificar Alternar entre los modos de visualización y modificación

Otro objeto Tratar otro objeto

Verificar Verificar consistencia

Activar Activar tabla

Referencia de utilización Listar los objetos que hacen referencia a la tabla

Contenido Visualizar y modificar el contenido de la tabla

Indices Visualizar, crear y modificar los índices de la tabla

Transacción: SE11

Creación de una Tabla

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 155: Curso ABAP

Vistas

ABAP DictionaryABAP Dictionarytablestables

View View

DBDB

Transacción: SE11WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 156: Curso ABAP

Matchcodes

Facul.Nr Name...4711 Mathematics...

TestFacul.Nr CourNr ProfNr Course Descrip....4711 444 4709 Analysis I...

Test...Analysis II Mathematics 4711...

Tables

Matchcode

F4F4F4

ONLINEHelp

Transacción: SE11

Facul.Nr 4711Facul.Nr

WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 157: Curso ABAP

22Function modules

ENQUEUE-EMMATAE

DEQUEUE-EMMATAE

Function modules

Objetos de Bloqueo

Before exitingthe transaction

33

Table(s)

Lock arguments

Lock mode

Lock fields

Lock objects: EMMATAE

ABAP DICTIONARY ABAP

Application program

...CALL FUNCTION

'ENQUEUE-EMMATAE'...

...CALL FUNCTION

'DEQUEUE-EMMATAE'...

Begintransaction

Definition in ABAP Dictionary Call up in program

11

Transacción: SE11WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario

Page 158: Curso ABAP

�� DiccionarioDiccionario

Verificar Activar Borrar Copiar

Nombre de Tabla

Primero debemos ejecutar la transacción SE11, una v ez que estemos ahí ingresamos el nombre de la tabla y luego presionamo s la opción crear.

Page 159: Curso ABAP

�� TablasTablas

Recordemos que como cualquier objeto creado para el cliente se debe comenzar con “Z” o “Y”

Page 160: Curso ABAP

�� TablasTablas

Luego seleccionaremos la clase de entrega, normalme nte es la opción “A”

Además debemos macar la opción “Permitir actualizac ión tab” esto se refiere a si se puede o no actualizar los datos de la tabla mediant e la transacción SE16

Page 161: Curso ABAP

�� TablasTablas

Page 162: Curso ABAP

�� TablasTablas

Page 163: Curso ABAP

�� TablasTablas

Page 164: Curso ABAP

�� TablasTablas

Page 165: Curso ABAP

�� DiccionarioDiccionario

Page 166: Curso ABAP

�� TablasTablas

Una vez que hemos definido los campos y sus atribut os debemos definir las características técnicas de nuestra tabla, vale decir, categoría y tamaño.

Page 167: Curso ABAP

�� TablasTablas

Ahora debemos grabar

Page 168: Curso ABAP

�� TablasTablas

Page 169: Curso ABAP

�� TablasTablas

Ahora debemos grabar, verificar y activar nuestro í ndice

Page 170: Curso ABAP

�� TablasTablas

Una vez que tenemos completamente definida nuestra tabla debemos presionar la tecla verificar y si no existe ningún problema pres ionaremos activar.

Page 171: Curso ABAP

�� DominioDominio

Page 172: Curso ABAP

�� DominioDominio

Page 173: Curso ABAP

�� DominioDominio

Page 174: Curso ABAP

�� ElementoElemento de de DatosDatos

Ingresamos nombre del elemento de datos y luego pre sionamos crear, luego aparece una pantalla que nos pregunta el tipo de datos, ahí seleccionaremos Elemento de datos

Page 175: Curso ABAP

�� ElementoElemento de de DatosDatos

Page 176: Curso ABAP

�� ElementoElemento de de DatosDatos

En este punto se deben ingresar los títulos de nues tro elemento de datos, luego se debe presionar verificar y activar.

Page 177: Curso ABAP

�� EstructurasEstructuras

Como ya se pudo observar, las estructuras son forma tos de registro y se crean de la siguiente forma:

Page 178: Curso ABAP

�� EstructuraEstructura

Luego de haber definido la estructura se debe presi onar la tecla verificar y luego activar

Page 179: Curso ABAP

�� VistasVistas

Page 180: Curso ABAP

�� VistasVistas

Page 181: Curso ABAP

�� VistasVistas

Page 182: Curso ABAP

�� VistasVistas

Page 183: Curso ABAP

�� VistasVistas

Page 184: Curso ABAP

Acciones sobre la Base de Datos

La sentencia INSERT permite introducir registros sencillos o el contenido de una tabla interna en una base de datos SAP.

SintaxisINSERT INTO dbtab [CLIENT SPECIFIED] VALUES wa. INSERT INTO (dbtabname) [CLIENT SPECIFIED] VALUES w a. INSERT dbtab [CLIENT SPECIFIED]. INSERT dbtab [CLIENT SPECIFIED] FROM TABLE itab.

Page 185: Curso ABAP

� INSERT INTO dbtab [CLIENT SPECIFIED] VALUES wa.data: wa type lfa1.wa-LIFNR = '12400177'. wa-NAME1 = ‘MAURICIO REYES’wa-ORT01 = ‘Yo Vivo en mi casa’

INSERT INTO LFA1 VALUES wa.

� INSERT INTO (dbtabname) [CLIENT SPECIFIED] VALUES w a.data: wa type lfa1.data: n_tabla type c value 'lfa1'.

wa-lifnr = '12345'.wa-name1 = 'Mauricio Reyes'.wa-ort01 = 'Yo vivo aqui'.

insert into ( n-tabla ) values wa.

Acciones sobre la Base de Datos

Page 186: Curso ABAP

� INSERT dbtab [CLIENT SPECIFIED].LFA1-LIFNR = '12400177'. LFA1-NAME1 = ‘MAURICIO REYES’LFA1-ORT01 = ‘Yo Vivo en mi casa’INSERT INTO LFA1.

� INSERT dbtab [CLIENT SPECIFIED] FROM TABLE itab.data: begin Of Itab occurs 10.

include structure lfa1.data: end of Itab.itab-lifnr = '12345'.itab-name1 = 'MAURICIO REYES'.append ITAB.itab-lifnr = '99999'.itab-name1 = 'JUAN JOSE ROJAS'.append ITAB.

INSERT LFA1 FROM ITAB.

Acciones sobre la Base de Datos

Page 187: Curso ABAP

La sentencia UPDATE permite modificar el contenido de uno o varios registros de una tabla de la base de datos.

Sintaxis

� UPDATE dbtab SET s1 ... sn.

� UPDATE dbtab

� UPDATE dbtab FROM TABLE itab.

Acciones sobre la Base de Datos

Page 188: Curso ABAP

� UPDATE dbtab SET s1 ... sn.Update LFA1 SET NAME1 = ‘ESTE ES EL NOMBRE NUEVO’,

ORT01 = ‘ESTA ES LA NUEVA DIRECCION’

WHERE LIFNR EQ ‘12345’

� UPDATE dbtab.

LFA1-LIFNR = '12400177'.

LFA1-NAME1 = ‘MAURICIO REYES’

LFA1-ORT01 = ‘Yo Vivo en mi casa’UPDATE LFA1.

Acciones sobre la Base de Datos

Page 189: Curso ABAP

� UPDATE dbtab FROM TABLE itab.

data: begin Of Itab occurs 10.include structure lfa1.

data: end of Itab.itab-lifnr = '12345'.itab-name1 = 'MAURICIO REYES'.append ITAB.itab-lifnr = '99999'.itab-name1 = 'JUAN JOSE ROJAS'.append ITAB.

UPDATE LFA1 FROM ITAB.

Acciones sobre la Base de Datos

Page 190: Curso ABAP

La sentencia MODIFY permite modificar el contenido de uno o varios registros de una tabla de la base de datos o insert ar los mismos si no existen.

Sintaxis

� MODIFY dbtab.

� MODIFY dbtab FROM TABLE itab.

Acciones sobre la Base de Datos

Page 191: Curso ABAP

La sentencia DELETE permite eliminar registros de la base de datos

Sintaxis

� DELETE FROM dbtab WHERE condicion

� DELETE FROM dbtab

� DELETE dbtab FROM TABLE itab.

Acciones sobre la Base de Datos

Page 192: Curso ABAP

La sentencia COMMIT WORK refleja los cambios en la base de datos

Sintaxis

� COMMIT WORK

MOVE ‘123’ TO ZLFA1-LIFNR.

MOVE ‘MAURICIO’ TO ZLFA1-NAME1.

MODIFY ZLFA1.

COMMIT WORK

Acciones sobre la Base de Datos

Page 193: Curso ABAP

La sentencia ROLLBACK WORK deshace todos los cambios hechos hasta el último commit work

Sintaxis

� ROLLBACK WORK

DELETE FROM ZLFA1 WHERE LIFNR EQ ‘12345’.

ROLLBACK WORK

Acciones sobre la Base de Datos

Page 194: Curso ABAP

Salida de DatosSalida de Datos

Page 195: Curso ABAP

Salida de DatosSalida de Datos

� Consultas

� Select� Funciones

� Salidas por Pantalla

� Sentencias Básicas� ALV

� Creación de archivos

� Funciones Especiales

SalidasSalidas

ProcesoProceso

ConsultasConsultas

Page 196: Curso ABAP

Salida de Datos Salida de Datos -- WriteWrite

Page 197: Curso ABAP

� WRITE: ‘Texto a mostrar’, <campo tabla>� WRITE AT /COL(LEN) <campo tabla>.

� / : nueva línea� COL : numero de columna (posición)� LEN : largo de la salida

� SY-ULINE : dibuja líneas horizontales “-”

� ULINE AT 3(10) equivale a WRITE AT 3(10) SY-ULINE .

� SY-VLINE : dibuja líneas verticales “|” � SKIP [n] : n líneas en blanco� SKIP TO LINE línea : salta hasta la línea <línea>

Salida de Datos Salida de Datos -- WriteWrite

Page 198: Curso ABAP

Salida de Datos Salida de Datos -- ALVALV

Page 199: Curso ABAP

� Estructuras y campos principales� gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE

� gs_layout TYPE slis_layout_alv

� g_user_command TYPE slis_formname VALUE 'USER_COMMAND'� g_repid LIKE sy-repid

� Función: REUSE_ALV_LIST_DISPLAY

EXPORTINGi_callback_program = g_repid

i_callback_user_command = g_user_command

is_layout = gs_layoutit_fieldcat = gt_fieldcat[]

TABLES

t_outtab = <t_datos_a_mostrar>

Salida de Datos Salida de Datos -- ALVALV

Page 200: Curso ABAP

USER-COMMAND: uso de F2 o doble click

� Estructuras y campos� gs_layout-f2code = ‘ACCION A EJECUTAR‘

� rs_selfield TYPE slis_selfield “detecta línea seleccionada

� r_ucomm LIKE sy-ucomm “acción hecha por el usuario� FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

� CASE r_ucommWhen ‘ACCION A EJECUTAR‘

READ TABLE <t_datos_a_mostrar> INDEX rs_selfield-tabindex.<Programar acción requerida>

…….

Salida de Datos Salida de Datos -- ALVALV

Page 201: Curso ABAP

Salida de Datos Salida de Datos –– ALV GridALV Grid

Page 202: Curso ABAP

� Estructuras y campos principales

� gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE� gs_layout TYPE slis_layout_alv

� g_user_command TYPE slis_formname VALUE 'USER_COMMAND'

� g_repid LIKE sy-repid� Función: REUSE_ALV_GRID_DISPLAY

EXPORTING

i_callback_program = g_repidi_callback_user_command = g_user_command

is_layout = gs_layout

it_fieldcat = gt_fieldcat[]TABLES

t_outtab = t_datos_import

Salida de Datos Salida de Datos –– ALV GridALV Grid

Page 203: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 11.

Ejercicio Funcional 12.

Page 204: Curso ABAP

Entrada de DatosEntrada de Datos

Page 205: Curso ABAP

LLAMADAS A PROGRAMAS Y SUBRUTINAS

Se puede llamar a programas externos, internos y fu nciones. Los internos son más conocidos como subrutinas. Las funciones son pr ogramas que el SAP tiene para ayudar al programador en tareas diversas. Los parámetros se pueden pasar de un programa a otro de la siguiente forma:

� Por Valor Los parámetros formales son copia de los actuales� Por valor y resultado Al abandonar el subprograma , los parámetros formales se

traspasan al actual.� Por referencia Las variaciones en el parámetro formal tienen efecto inmediato

en el actual.Las tablas internas siempre se pasan por referencia , ya que se definen como globales..

Page 206: Curso ABAP

SubRutinas y Programas Internos

� PERFORM se usa para llamar una subrutina

sintaxis

• PERFORM form. • PERFORM form(prog). • PERFORM form IN PROGRAM prog.

Page 207: Curso ABAP

� PERFORM form .DATA: num1 TYPE i,

num2 TYPE i,sum TYPE i.

num1 = 2. num2 = 4.PERFORM addit.num1 = 7. num2 = 11.PERFORM addit.FORM addit.

sum = num1 + num2.PERFORM out.

ENDFORM.FORM out.

WRITE: / 'Sum of', num1, 'and', num2, 'is', sum.ENDFORM.

SubRutinas y Programas Internos

Page 208: Curso ABAP

� PERFORM form (prog)

PERFORM calculo (calculo_venta) IF FOUND.IF FOUND Llama a la rutina solo si existe en el programa externo

� PERFORM form IN PROGRAM progDATA: progname(24) TYPE c VALUE 'DEMO_MOD_TECH_FORM POOL_1',

subrname(8) TYPE c.

subrname = 'SUB1'.PERFORM (subrname ) IN PROGRAM (progname ) IF FOUND.

subrname = 'SUB2'.PERFORM (subrname ) IN PROGRAM (progname ) IF FOUND.

IF FOUND Llama a la rutina solo si existe en el programa externo

SubRutinas y Programas Internos

Page 209: Curso ABAP

� PERFORM form usingPERFORM CALCULO USING VALOR

.....

FORM CALCULO USING WSVALOR.WRITE:/ WSVALOR.

ENDFORM

� PERFORM form using par1 changing valor2CLEAR VALOR.LOOP 20 TIMES.

PERFORM SUMA USING 200 CHANGING VALOR.ENDLOOP.WRITE:/ ‘TotaL’, VALOR.

FORM SUMA USING NETO CHANGING VALOR.ADD NETO TO VALOR.

ENDFORM.

SubRutinas y Programas Internos

Page 210: Curso ABAP

� PERFORM form tables itab.� DATA: BEGIN OF line,

col1 TYPE i,col2 TYPE i,

END OF line.DATA itab LIKE STANDARD TABLE OF line.PERFORM fill CHANGING itab.PERFORM out USING itab.

FORM fill CHANGING f_itab LIKE itab .DATA f_line LIKE LINE OF f_itab.DO 3 TIMES.

f_line-col1 = sy-index.f_line-col2 = sy-index ** 2.APPEND f_line TO f_itab.

ENDDO.ENDFORM.FORM out USING value(f_itab) LIKE itab.

DATA f_line LIKE LINE OF f_itab.LOOP AT f_itab INTO O f_line.

WRITE: / f_line-col1, f_line-col2.ENDLOOP.

ENDFORM.

SubRutinas y Programas Internos

Page 211: Curso ABAP

� Entrada� Archivo Plano� RFC

� Proceso� Almacenamiento

� Batch Input / CallTransaction

� Funciones� BAPI� Almacenamiento Directo

Almace-namientoAlmace-namiento

ProcesoProceso

EntradaEntrada

Entrada de DatosEntrada de Datos

Page 212: Curso ABAP

Entrada de Datos Entrada de Datos –– Archivo PlanoArchivo Plano

� Parámetro� pc_file LIKE rlgrap-filename (rlgrap es una campo de programa/dynpro)

� Función: WS_FILENAME_GETEXPORTING

DEF_PATH = ‘<Unidad:\ruta>‘ “Ruta de búsqueda del archivo

MASK = '*.*,*.*.‘ “Extensión de los archivos a utilizar

MODE = 'O‘ / ‘S’ “O = Open, S = Save

TITLE = 'Archivo a cargar‘ “Título de la ventanaIMPORTING

FILENAME = pc_file “Variable que almacena el nombre del

archivo

Page 213: Curso ABAP

� Variable

�ls_file TYPE string. “Variable que contiene el nombre del archivo

� Mover variables

�Move pc_file to ls_file.

� Función: GUI_UPLOAD

EXPORTING

filename = ls_file “Nombre del archivoFILETYPE = 'ASC‘ “Tipo de archivo

HAS_FIELD_SEPARATOR = 'X‘ “Uso de separador (tab por defecto)

tables

data_tab = <t_carga_datos> “tabla que almacena los datosdel archivo leído

EXCEPTIONS

…..

Entrada de Datos Entrada de Datos –– Archivo PlanoArchivo Plano

Page 214: Curso ABAP

Ejecuta las transacciones de la misma manera que lo hace el usuarioCarga los datos pantalla por pantalla y realiza el desplazamiento entre pantallas mediante el “BDC_OKCODE”Utiliza una tabla interna especial para almacenar toda la información de pantallas, campos, BDC_OKCODES, y datos

Características

Entrada de Datos Entrada de Datos –– Call TransactionCall Transaction

Page 215: Curso ABAP

-Formato de la tabla:

Campo PROGRAM DYNPRO DINBEGIN FNAM FVALDescripción Nombre del programa Nro. De pantalla Comienzo de pantalla? Nombe de campo en pantalla ValorFormato CHAR NUMC CHAR CHAR CHARLongitud 8 4 2 35 80

-Ejemplo de tabla BDC:PROGRAM DYNPRO DINBEGIN FNAM FVALSAPLMGMM 0060 X

BDC_CURSOR RMMG1-MATNRRMMG1-MATNR 1002BDC_OKCODE /00

SAPLMGMM 0070 X BDC_CURSOR MSICHTAUSW-DYTXT(01)MSICHTAUSW-KZSEL(01) XBDC_OKCODE =ENTR

SAPLMGMM 4004 X BDC_OKCODE =BABA

Armado de la tabla BDCDATA

Entrada de Datos Entrada de Datos –– Call TransactionCall Transaction

Page 216: Curso ABAP

En ella se simula la carga manual de datosSe obtienen todos los nombres de programas, pantallas, campos y BDC_OKCODES necesarios para el call transactionGenera una tabla BDC con el proceso realizadoPermite hacer pruebas individuales de la tabla BDC generada

Grabaciones de TransaccionesTransacción: SHDB

Entrada de Datos Entrada de Datos –– Call TransactionCall Transaction

Page 217: Curso ABAP

CALL TRANSACTION <transacción>USING <tabla BDC> “Estructura BDCDATA[ MODE <modo> ] “(A, N, E)[ UPDATE <actualización> ] “(A, S)[ MESSAGES INTO <tabla> ]. “Estructura BDCMSGCOLL

Llamada a una Transacción

Utilización

En cargas inicialesEn programas dialogo desarrolladosCada vez menos en programas estandarPara procesos que se ejecutan una única vez

Entrada de Datos Entrada de Datos –– Call TransactionCall Transaction

Page 218: Curso ABAP

Generación de Juego de Datos

FuncionesBDC_OPEN_GROUPBDC_INSERTBDC_CLOSE_GROUP

Transacción: SM35

Entrada de Datos Entrada de Datos –– Batch InputBatch Input

Page 219: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 13

Page 220: Curso ABAP

Field-Symbols. Field-Symbols: Son nombres simbólicos para otros campos.Ellos físicamente no reservan el espacio par a un campo, pero indican su contenido.SintaxisFIELD-SYMBOLS <fs>. DATA: BEGIN OF line,

col1(1) TYPE c,col2(1) TYPE c VALUE 'X',

END OF line.FIELD-SYMBOLS <fs> LIKE line.ASSIGN line TO <fs>.MOVE <fs>-col2 TO <fs>-col1.WRITE: <fs>-col1, <fs>-col2.

Ver ejemplo demo_field_symbols_type

demo_field_symbols_structure

demo_field_symbols_stat_assign

demo_field_symbols_dynami_as_3

demo_field_symbols_assign_type

Page 221: Curso ABAP

FuncionesFunciones

Page 222: Curso ABAP

CódigoFuenteCódigoFuente Excep.Excep.

Parám.Salida

(Export)

Parám.Salida

(Export)

Modif.Modif.

Parám.Entrada(Import)

Parám.Entrada(Import)

TablasTablas

FunctionFunctionBuilderBuilder

Funciones

Page 223: Curso ABAP

Progr.ControlFción 1

Progr.ControlFción 1

TOPTOP

SubrutinasSubrutinas

PantallasPantallas

Progr.ControlFción 2

Progr.ControlFción 2

Progr.ControlFción n

Progr.ControlFción n

Progr.ControlGrupo

Progr.ControlGrupo

Grupo de Funciones

FunctionFunctionBuilderBuilder

Page 224: Curso ABAP

Transacción: SE80

Creación de un Grupo de Funciones

FunctionFunctionBuilderBuilder

Page 225: Curso ABAP

Nombre del grupo de funciones

Grabar

Transacción: SE80

Creación de un Grupo de Funciones

FunctionFunctionBuilderBuilder

Page 226: Curso ABAP

Clase de desarrollo para objetos

transportables

Objeto local (no transportable)

Transacción: SE80

Creación de un Grupo de Funciones

FunctionFunctionBuilderBuilder

Page 227: Curso ABAP

Nombre del grupo de funciones

Includesgenerados

automáticamente

Transacción: SE80

Creación de un Grupo de Funciones

FunctionFunctionBuilderBuilder

Page 228: Curso ABAP

Nombre del módulo de funciones

Crear

Transacción: SE37

Creación de un Módulo de Funciones

FunctionFunctionBuilderBuilder

Page 229: Curso ABAP

Nombre del grupo de funciones

Grabar

Transacción: SE37

Creación de un Módulo de Funciones

FunctionFunctionBuilderBuilder

Page 230: Curso ABAP

Tipo de dato

Nombre del parámetro

Descripción

Transacción: SE37

Creación de un Módulo de Funciones - Import

FunctionFunctionBuilderBuilder

Page 231: Curso ABAP

Creación de un Módulo de Funciones - Export

Tipo de dato

Nombre del parámetro

Descripción

Transacción: SE37FunctionFunctionBuilderBuilder

Page 232: Curso ABAP

Código de respuesta Descripción

Creación de un Módulo de Funciones - Exceptions

Transacción: SE37FunctionFunctionBuilderBuilder

Page 233: Curso ABAP

Creación de un Módulo de Funciones – Código Fuente

Transacción: SE37FunctionFunctionBuilderBuilder

Page 234: Curso ABAP

Creación de un Módulo de Funciones – Atributos

Transacción: SE37FunctionFunctionBuilderBuilder

Page 235: Curso ABAP

Visualizar / Modificar Alternar entre los modos de visualización y modificación

Otro objeto Tratar otro objeto

Verificar Verificar consistencia

Activar Activar Programa

Referencia de utilización Listar los objetos que hacen referencia al programa

Visualizar lista de obj. Accede al navegador de objetos

Ventana de naveg. Visualizar en la parte inferior de la pantalla la ventana de navegación

Breakpoints Agregar / eliminar breakpoints en el programa

Contenido Agregar código al programa según patrones

Indices Indentar el código del programa

Ejecutar Ejecutar el programa

Creación de un Módulo de Funciones

Transacción: SE37FunctionFunctionBuilderBuilder

Page 236: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxisTransacción: SE38

Ejercicio Funcional 14

Page 237: Curso ABAP

BAPIBAPI

Page 238: Curso ABAP

JerarquíaObjeto

Campos claves

Métodos

FunctionFunctionBuilderBuilder

Navegador

Transacción: BAPI

Page 239: Curso ABAP

Tablas o parámetros obligatorios

Parámetros de salida

Parámetros de entrada

Nombre de función

FunctionFunctionBuilderBuilder

Navegador

Transacción: BAPI

Page 240: Curso ABAP

KERNEL

Constraints

BusinessRules

INTEGRITY

INTERFACE

ACCESS

COM / DCOMRFC

JAVACORBA

Method(BAPI)

BAPIBAPI

Page 241: Curso ABAP

Business Object Repository (BOR)

Objetos agrupados por jerarquía

BAPIBAPI

Page 242: Curso ABAP

Entorno SAP semi-orientado a objetosIndependencia de programa y tablasFunciones para manipulación de datosFunciones agrupadas por objetosDesde SAP utilizando ABAP se pueden utilizar las funciones asociadas con los métodosDesde otros lenguajes, mediante una correcta comunicación, puede utilizarse la programación orientada a objetos

Conceptos

BAPIBAPI

Page 243: Curso ABAP

AmpliacionesAmpliaciones

Page 244: Curso ABAP

AmpliacionesAmpliaciones

� Exits� User Exit� Field Exit� Screen Exit

� Business Add-Ins(BADIs)

ProcesoestándarProcesoestándar

ProcesoestándarProcesoestándar

ProcesoestándarProcesoestándar

Ampliación

Page 245: Curso ABAP

� Exits� Menu Exits� Screen Exits� Function Module

Exits

� Business Add-Ins(BADIs)

ProcesoestándarProcesoestándar

ProcesoestándarProcesoestándar

ProcesoestándarProcesoestándar

Ampliación

AmpliacionesAmpliaciones

Page 246: Curso ABAP

� Tipos de Exits� Menu Exits: Agregan ítems a los menús.

Se pueden usar para llamar pantallas o add-on del usuario.

� Screen Exits: Agregan campos a las pantallas de R/3.

� Function Module Exits: Agregan funciones al R/3. Juegan rol importante en el Menu y Screen Exits (definen acción luego de evento).

AmpliacionesAmpliaciones

Page 247: Curso ABAP

� Localizar Exits� SAP organiza exits en paquetes de

Ampliación.� Una opción es usar Transacción CMOD� Otra opción es la transacción SE81 donde

se usa sistema de información (menú contextual sobre rama) para hacer búsqueda.

AmpliacionesAmpliaciones

Page 248: Curso ABAP

� Proyecto Add-On� Para usar exits disponibles de debe crear un

proyecto (Transacción CMOD)� El proyecto organiza paquetes de ampliaciones

y exits usados.� Se requiere saber aplicación, componente, o

transacción a la que se agrega funcionalidad.� Se incluyen los paquetes y exits al proyecto.� Se activa el proyecto (Transacción CMOD)� Advertencia: Componentes deben ser

compatibles para activación simultánea.� La activación se debe hacer para usar Add-On y

luego de su transporte.

AmpliacionesAmpliaciones

Page 249: Curso ABAP

� Proyecto Add-On� Para hacer cambios en Add-On del

proyecto, éste se debe desactivar primeramente.

� Cuando se crea el proyecto, se asigna a una tarea así como sus componentes.

� Para transportar, se liberan tareas de los componentes y del proyecto.

AmpliacionesAmpliaciones

Page 250: Curso ABAP

AmpliacionesAmpliaciones

Page 251: Curso ABAP

ABAP ABAP PerformancePerformanceTuningTuning

Page 252: Curso ABAP

� Características y Fundamentos

� Mejorar el desarrollo de programas y/o reportes con lecturas a BD de manera optima.

� Adentrar al Desarrollador un poco al mundo de Administración Basis, conocer parte del comportamiento con el cual el Servidor de Aplicaciones realiza las extracciones de Información al momento de ser solicitadas por el Servidor de Aplicaciones.

� Disminuir la necesidad de Re-ingenieria de Programas, si se contemplan desde un inicio los detalles que son necesarios conocer para lograr implementar programas óptimos y de calidad.

ABAP Performance Tuning

Page 253: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� ST03N Carga de Trabajo del Sistema, transacción que permite observar

el tiempo de respuesta cuando el servidor de aplicaciones ejecuta las tareas.

Page 254: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� SE30 Runtime Analysis, permite evaluar el Tiempo de respuesta de un

Programa o Reporte en Tiempo de Ejecución.

Page 255: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis

Page 256: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� ST05 SQL-Trace Permite Observar el comportamiento y el tiempo de ejecución de

los accesos a Base de datos de un Programa o Reporte determinado.

Page 257: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� Listado del Trace y operaciones con la Base de Dato s (DB).

Page 258: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� Listado del Trace y operaciones con la Base de Dato s

(DB).� HH:MM:SS:MS: Tiempo estampado indicando el inicio d el envio de la

solicitud a la Base de datos� Duration: corresponde a la Duración de la operación con la Base de Datos

en Microsegundos.� Progr: Nombre del programa que llama la Sentencia S QL.� Objeto: Nombre de la Tabla o Vista, como es tomada desde la Sentencia

SQL.� Oper: Operación a ser ejecutada en la Base de Datos .� Curs: Nombre del Cursor de la Base de datos.� Array: es el Tamaño del Paquete que contiene los re gistros enviados

desde el Servidor de Base de Datos al Servidor de A plicaciones.� Rec: Numero de Registros enviados por la operación de la Base de Datos.� RC: Codigo de Retorno del Sistema de base de Datos.� Statement: El texto de la Sentencia SQL ejecutada.

Page 259: Curso ABAP

ABAP Performance Tuning

� ABAP Performance Analysis� Durante el procesamiento de una sentencia SQL se

ejecuta una lectura de acceso en la cual ocurren la s siguientes operaciones:

� PREPARE: Esta operación analiza la sentencia SQL y convierte esta en una sentencia que puede ser procesada por la Base de Datos (DB). Los Contenedores o PlaceHolders son usados por las variables en la Sentencia SQL.

� OPEN / REOPEN: Esta operación remplaza los PlaceHolders in la sentencia SQL con valores concretos y abre un Cursor de la Base de Datos.

� FETCH: Esta operación transfiere los registros desde el Servidor de Base de datos al Servidor de Aplicaciones. El Número de registros por cada FETCH es proporcionado por la división de la longitud del registro a ser leido en bytes

Page 260: Curso ABAP

ABAP Performance Tuning

� Database Performance Analysis ST04

Page 261: Curso ABAP

ABAP Performance Tuning

� Database Performance Analysis ST04

Page 262: Curso ABAP

ABAP Performance Tuning

� Caminos (Paths) de acceso convenientes e inadecuados

Page 263: Curso ABAP

ABAP Performance Tuning

� Caminos (Paths) de acceso convenientes e inadecuados� Con un camino de acceso apropiado:

� La Sentencia SQL lee muchos bloques de la Base de datos. La senetnecia es costosa porque transfiere muchos registros de datos desde la base de Datos al Servidor de Aplicaciones. El Performance de la Base de Datos es Satisfactorio.

� El Costo de las sentencias SQL con una ruta de acceso adecuada son listados en el Tope o cabecera del cache SQL de la Base de Datos di don ejecutados frecuentemente.

Page 264: Curso ABAP

ABAP Performance Tuning

� Caminos (Paths) de acceso convenientes e inadecuados� Con un camino de acceso inadecuado:

� La Sentencia SQL lee muchos bloques de la Base de datos pero este no transfiere muchos registros de datos desde la Base de Datos(DB) al servidor de Aplicaciones. El Performance de la base de datos no es optimo..

� El Costo de las sentencias SQL con una ruta de acceso inadecuada puede se optimizado con la creación o al mejorar el diseño de un Indice, o modificando el Código ABAP mejorando el diseño de la Cláusula Where.

Page 265: Curso ABAP

ABAP Performance Tuning

� Análisis de la Tabla con respecto a los Campos Indices DB05DB05

Page 266: Curso ABAP

ABAP Performance Tuning

� Análisis de la Tabla con respecto a los Campos Indices DB05

Page 267: Curso ABAP

ABAP Performance Tuning

� Accesos a Bases de Datos� Manejo de Joins

Page 268: Curso ABAP

ABAP Performance Tuning

� Accesos a Bases de Datos

� Manejo de Joins: cuando un join es procesado usando la estrategia de acceso sort merge join, los siguientes pasos son ejecutados:

� Los registros de la tabla que corresponden a la Cláusula Whereson seleccionados.

� Las tablas que conforman el JOIN son ordenadas de acuerdo a la Condición que genera el Join.

� Los Registros de las Tablas son combinados.� Si la condición WHERE existe para las tablas importantes, un sort

merge join es muy efectivo. Si las condiciones del Join no son selectivas para alguna de kas Tablas importantes que lo conforman, la estrategia de acceso sort merge join es más efectiva que la ejecución de Loop’s anidados. Si existen mas de 2 tablas en el JOIN, se pueden combinar estrategias de Loop’s anidados y accesos sort merge join.

Page 269: Curso ABAP

ABAP Performance Tuning

� Accesos a Bases de Datos

� Manejo de Joins: � Si el Join esta diagramado de la siguiente forma:

Select + Join + Endselect genera Costosos tiempos de Performance.

� Si el Join esta diagramado de la siguiente forma: Select + Join + Into Table…, Genera costos de tiempos bastantes reducidos y

mejora el Performance.

� Problemas Técnicos:� El Sistema BASIS SAP y el sistema de bases de Datos no esta

correctamente configurados:� Se recomienda ver los reportes GoingLive o EarlyWatch.� Problemas de Comunicaciones.� Factor rsdb/max_blocking_factor.

� Indice de Base de Datos Fragmentado� Bloques llenados por el Indice < 50%

(ST03 , ST04 y DB02)

Page 270: Curso ABAP

ABAP Performance Tuning

� Cambios en el Código Abap� Perdidas de Condiciones en la Cláusula

Where:

� Uso Inefectivo de los Indices:Select bukrs belnr gjahrfrom bkpfinto table g_itab_bkpfwhere belnr = ‘0000000100’.

� Uso Efectivo de los Indices:Select bukrs belnr gjahrfrom bkpfinto table g_itab_bkpfwhere bukrs = ‘0001’ and

belnr = ‘0000000100’.

Page 271: Curso ABAP

� Cambios en el Código Abap� Perdidas de Condiciones en la Cláusula

Where:

� Uso Inefectivo de los Indices:Select vbeln erdatFrom vbakCLIENT SPECIFIEDinto table g_itab_VBAKwhere vbeln = ‘0000000100’.

� Uso Efectivo de los Indices:

ABAP Performance Tuning

Select vbeln erdatFrom vbakCLIENT SPECIFIEDinto table g_itab_VBAKwhere mandt = sy-mandt andvbeln = ‘0000000100’.

Select vbeln erdatFrom vbakinto table g_itab_VBAKwhere vbeln = ‘0000000100’.

Page 272: Curso ABAP

� Cambios en el Código Abap� Operadores Críticos en la Cláusula Where:

� Formulación Negativa:Select vbeln erdat kunnrFrom vbakinto table g_itab_VBAKwhere kunnr in g_kunnr andNOT auart IN ( ‘TA’, ‘KL’, ‘SO’, ‘Z’, ‘ZBV’, ‘PS1’, ‘ZS01’).

� Formulación PositivaSelect vbeln erdat kunnrFrom vbakinto table g_itab_VBAKwhere kunnr in g_kunnr andauart IN ( ‘BV’, ‘WV’, ‘ZWK1’, ‘WK1’, ‘LV’, space).

ABAP Performance Tuning

Page 273: Curso ABAP

ABAP Performance Tuning

� Cambios en el Código Abap� Operadores Críticos en la Cláusula Where:

� Operador BETWEEN:Select *From vbapinto table g_itab_VBAPwhere vbeln BETWEEN ‘0000005001’ AND ‘0000005005’.

� Operador INSelect *From vbapinto table g_itab_VBAPwhere vbeln IN ( ‘0000005001’, ‘0000005002’,

‘0000005003’ , ‘0000005004’, ‘0000005005’ ).

Page 274: Curso ABAP

ABAP Performance Tuning

� Cambios en el Código Abap� Operadores Críticos en la Cláusula Where:

� Operador LIKE :Select *From vbapinto table g_itab_VBAPwhere vbeln LIKE ‘0000005001’.

� Operador = :Select *From vbapinto table g_itab_VBAPwhere vbeln = ‘0000005001’.

Omitir el uso del Like ‘%’.

Page 275: Curso ABAP

� Cambios en el Código Abap� Ordenar registros a nivel de la Base de datos o en

ABAP:

� A nivel de la Base de Datos :

� Operador = :Select vbeln erdat kunnrFrom vbakinto table g_itab_VBAKwhere vbeln in g_vbeln.SORT g_itab_VBAK By erdat Descending.

ABAP Performance Tuning

Select vbeln erdat kunnrFrom vbakinto table g_itab_VBAKwhere vbeln in g_vbelnOrder By erdat Descending.

Select vbeln erdat kunnrFrom vbakinto table g_itab_VBAKwhere vbeln in g_vbelnOrder By Primary Key.

Page 276: Curso ABAP

� Cambios en el Código Abap� Reducción de Registros a ser Transferidos:

� Sin Clausula WHERE:Select … From resb into table g_itab_resb.

� Clausula Where Inestable:Select … From resb into table g_itab_resbwhere matnr IN g_matnr.

� Clausula WHERE Estable:Select … From resb into table g_itab_resbwhere matnr IN g_matnr and

kzear is Initial.

ABAP Performance Tuning

Page 277: Curso ABAP

� Cambios en el Código Abap� Reducción de Registros a ser Transferidos:

� Condición CHECK :Select vbeln erdat kunnrFrom vbakinto g_wa_vbak.

CHECK g_wa_vbak-vbeln GE g_low andg_wa_vbak-vbeln LE g_high.

APPEND g_wa_vbak to g_itab_vbak.Endselect.

� Condición WHERE:Select vbeln erdat kunnrFrom vbakinto table g_itab_vbakwhere vbeln BETWEEN g_low and g_high.

ABAP Performance Tuning

Page 278: Curso ABAP

� Cambios en el Código Abap� Reducción de Columnas a ser Transferidas:

� Select * Into Table :Select * from Vbakinto table g_itab_vbakwhere vbeln in G_vbeln.

� Select Field list INTO …Select vbeln erdat kunnr from VbakInto corresponding fields of tableG_itab_vbakWhere vbeln in g_vbeln.

� Select Field list INTO Table :Select vbeln erdat kunnr from VbakInto table G_itab_vbakWhere vbeln in g_vbeln .

ABAP Performance Tuning

Page 279: Curso ABAP

� Cambios en el Código Abap� Select dentro de Loop :

Loop at g_itab_vbak into g_wa_vbak.Select kunnr adrnr from kna1appending table g_itab_kna1where kunnr = g_wa_vbak-kunnr.

Endloop.

� Select For all entries …Describe Table g_itab_vbak Lines lin.IF lin = 0.

Message I051(zbc490).Exit.

Endif.Sort g_itab_vbak by kunnr.Delete adjacent duplicates from g_itab_vbak.Select kunnr adrnr from kna1 Into table g_itab_kna1For all entries in g_itab_vbak

Where kunnr = g_itab_vbak-kunnr.

ABAP Performance Tuning

Page 280: Curso ABAP

� Cambios en el Código Abap� Agregar Funciones en ABAP :

Select vbeln zmeng matnrFrom vbapInto table g_itab_vbapWhere vbeln in g_vbeln.Loop at g_itab_vbap into g_wa_vbap.* Compute maximum of zmeng and minimun of matnr.Endloop.

� Agregar Funciones a nivel de la Base de Datos

Select vbeln max ( zmeng ) min ( matnr )From vbapInto table g_itab_vbapWhere vbeln in g_vbelnGroup By vbeln.

ABAP Performance Tuning

Page 281: Curso ABAP

� Cambios en el Código Abap� Select con Check :

Select MAX (matnr ) vbeln AVG( zmeng )From vbap into g_wa_vbapWhere vbeln in g_vbelnGroup by matnr.

Check ( g_wa_vbap-zmeng >= g_min andg_wa_vbap-zmeng <= g_max ) .

Append g_wa_vbap To g_itab_vbap.Endselect.

� Select con Having:

Select MAX (matnr ) vbeln AVG( zmeng )From vbap into g_wa_vbapWhere vbeln in g_vbelnGroup by matnrHaving ( AVG( zmeng ) >= g_min and

AVG( zmeng ) <= g_max ).

ABAP Performance Tuning

Page 282: Curso ABAP

� Cambios en el Código Abap� Select …. ENDSELECT :

Select vbeln erdat kunnrFrom vbak into g_wa_vbakWhere vbeln in g_vbeln.

if sy-dbcnt GT g_limit.Exit.

Endif.Append g_wa_vbak TO g_itab_vbak.

Endselect.

� Select … Up to n Rows:

Select vbeln erdat kunnrFrom vbakinto table g_itab_vbakUp To g_limit RowsWhere vbeln in g_vbeln.

ABAP Performance Tuning

Page 283: Curso ABAP

� Cambios en el Código Abap� Update Registro por Registro :

Select * From vbap into g_wa_vbapWhere vbeln in g_vbeln. g_wa_vbap-zmeng = g_wa_vbap-zmeng + 5.

UPDATE vbap From g_wa_vbap.Endselect.

� UPdate… set <field> = value:UPDATE vbap SET zmeng = zmeng + 5Where vbeln In g_vbeln.

ABAP Performance Tuning

Page 284: Curso ABAP

� Cambios en el Código Abap� Single Record Accesses :

Do g_count TIMES.g_wa_vbak-mandt = sy-mandt.…Insert into vbak values g_wa_vbak.

Enddo.

� Accesos a Datos en Masa:Do g_count TIMES.

g_wa_vbak-mandt = sy-mandt.…append g_wa_vbak TO g_itab_vbak.

Enddo.Insert vbak from table g_it_vbak.

ABAP Performance Tuning

Page 285: Curso ABAP

� Cambios en el Código Abap

� Correcto Uso del JOIN:Select t1~vbeln t2~kunnr t2~adrnrInto Table g_itab_vbak_kna1From vbak AS t1 INNER JOIN kna1 AS t2On t1~kunnr = t2~kunnrWhere t1~vbeln in g_vbeln.

� Correcto Uso del OUTER JOIN:Select t1~vbeln t2~kunnr t2~adrnrInto Table g_itab_vbak_kna1From vbak AS t1 LEFT OUTER JOIN kna1 AS t2On t1~kunnr = t2~kunnrWhere t1~vbeln in g_vbeln.

ABAP Performance Tuning

Page 286: Curso ABAP

� Cambios en el Código Abap� Tablas Cluster

� Acceso no SelectivoSelect bukrs belnr…Fron Bseg

Into table g_itab_bsid

Where kunnr = ‘0000000100’.

� Acceso Selectivo:Select bukrs belnr…

Fron BsidInto table g_itab_bsid

Where kunnr = ‘0000000100’.

ABAP Performance Tuning

Page 287: Curso ABAP

� Cambios en el Código Abap� Tablas Buffer

� Buffering GenericoSelect * from TcurrCLIENT SPECIFIED

Into table g_itab_tcurr

Where kurst = ‘EURO’.

Select * from Tcurr

Into table g_itab_tcurrWhere kurst = ‘EURO’.

ABAP Performance Tuning

Page 288: Curso ABAP

� Cambios en el Código Abap� Tablas Buffer

� Buffering SencilloSelect * from T100Into table g_itab_t100

Where sprsl = sy-langu and

arbgb = ‘BC490’ andmsgnr = ‘050’.

Select Single from T100Into g_wa_t100

Where sprsl = sy-langu and

arbgb = ‘BC490’ andmsgnr = ‘050’.

ABAP Performance Tuning

Page 289: Curso ABAP

� Tablas InternasUna tabla interna esta totalmente especificada con la siguiente

información:� Tipo de Línea. Puede ser de cualquier tipo de Dato en ABAP.

� Clave de Secuencia: Los campos claves y su secuencia determina el criterio por el cual el sistema identifica las líneas de la tabla.

� Atributos Unívocos: Se puede definir la clave de una tabla interna como UNIQUE o NON-UNIQUE. Si la clave es UNIQUE, no pueden existir entradas duplicadas en la tabla interna.

� Tipo de Tabla: El tipo de tabla define como ABAP acceda de manera individual las líneas de la tabla. Esto puede ser a través del Indice de la tabla (se acceda por el Row ID) o por la clave (se acceda por los Campos Claves ).

ABAP Performance Tuning

La siguiente sentencia crea una tabla interna con el tipo <tabkind> y el tipo de linea<linetype>:

DATA <itab> TYPE <tabkind> OF <linetype>[ WITH [UNIQUE | NON-UNIQUE ] <keydef> ] [Initial Size <n>]

Page 290: Curso ABAP

� Tablas Internas. Tipos

ABAP Performance Tuning

Page 291: Curso ABAP

� Tablas Internas. Operaciones con Indice

ABAP Performance Tuning

Page 292: Curso ABAP

� Tablas Internas. Operaciones con Campos Claves

ABAP Performance Tuning

Page 293: Curso ABAP

� Tablas Internas. Inserción y llenado. SELECT vbeln … From vbap INTO wa.APPEND wa TO stan_tab.

ENDSELECT.

LOOP AT stan_tab INTO wa.…

ENDLOOP.

ABAP Performance Tuning

SELECT vbeln … From vbap

INTO TABLE stan_tab.LOOP AT stan_tab INTO wa.

ENDLOOP.

Page 294: Curso ABAP

� Tablas Internas. Inserción y llenado entre tablas. LOOP AT stan_vbsk2 INTO wa_vbak.

APPEND wa_vbak TO stan_vbakENDLOOP.

ABAP Performance Tuning

APPEND LINES OF stan_vbak2TO stan_vbak.

ó

Stan_vbak[] = stan_vbak2[].

Page 295: Curso ABAP

� Tablas Internas. Llenado con Valores Acumulativos. SELECT … FROM vbak INTO wa …

READ TABLE hash_tab from wa

ASSIGNING <fs>.

IF sy-subrc <> 0.INSERT wa INTO TABLE hash_tab.

ELSE.

<fs>-netwr = <fs>-netwr + wa-netwr.

ENDIF.

ENDSELECT.

ABAP Performance Tuning

SELECT ernam netwr waerk FROM vbak INTO wa …COLLECT wa INTO Hash_tab.

ENDSELECT.

Page 296: Curso ABAP

� Trabajando con Tablas Internas. Acceso. SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

LOOP AT stan_vbap INTO wa.

IF wa-vbeln IN s_vbeln.

ENDIF.ENDLOOP.

ABAP Performance Tuning

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

LOOP AT stan_vbap INTO wa

WHERE mandt = sy-mandt AND

vbeln IN s_vbeln.ENDLOOP.

Page 297: Curso ABAP

� Trabajando con Tablas Internas. Lectura y Transporte de Campos Selectivamente.

READ TABLE stan_vbap INTO wa_vbap

WITH KEY mandt = 400

vbeln = ‘0000000900’

ABAP Performance Tuning

READ TABLE stan_vbap INTO wa_vbap

TRANSPORTING posnr matnr

WITH KEY mandt = 400vbeln = ‘0000000900’

Page 298: Curso ABAP

� Trabajando con Tablas Internas. Acceso a Tablas sin campos de transferencia.

ABAP Performance Tuning

DATA: i_vbak TYPE TABLE of vbak.

FIELD-SYMBOLS: <fs> type vbak.

LOOP AT i_vbak ASSIGNING <fs>WHERE lifsk = ’01’.

<fs>-lifsk = SPACE.

ENDLOOP.

Page 299: Curso ABAP

� Trabajando con Tablas Internas. � Acciones de Lectura de registros según el tipo de

tabla.

ABAP Performance Tuning

Page 300: Curso ABAP

� Trabajando con Tablas Internas. Composición Unica.

ABAP Performance Tuning

SELECT * FROM vbap`INTO TABLE sort_vbap…

DELETE ADJACENT DUPLICATES FROM sort_vbap.

SELECT * FROM vbap INTO wa_vbap

…READ table sort_vbap INTO …

With KEY vbeln … BINARY SEARCH.

IF SY-subrc <> 0.INSERT wa_vbap INTO TABLE sort_vbap.

ENDIF.

ENDSELECT.

Page 301: Curso ABAP

� Trabajando con Tablas Internas. Tablas Jerarquizadas.

ABAP Performance Tuning

LOOP AT itab_1 ASSIGNING <fs_1>.

LOOP AT wa_1-itab_2 ASSIGNING <fs_2>.

<fs_2>-f1 = <v1>.ENDLOOP.

ENDLOOP.

LOOP AT itab_1 INTO wa_1.

LOOP AT wa_1-itab2 INTO wa_2.

MODIFY …

ENDLOOP.

ENDLOOP.

Page 302: Curso ABAP

� Trabajando con Tablas Internas. Procesando grandes cantidades de datos usando un Intervalo de Indices.

ABAP Performance Tuning

Index = 1.

LOOP AT sort_vbak ASSIGNING <fs_vbak>.LOOP AT sort_vbap ASSIGNING <fs_vbap> FROM index.

IF <fs_vbap>-vbeln <> <fs_vbak>-vbeln.index = sy-tabix.

EXIT.ENDIF.

ENDLOOP.ENDLOOP.

LOOP AT sort_vbak ASSIGNING <fs_vbak>.

LOOP AT sort_vbap …WHERE vbeln = <fs_vbak>-vbeln.

ENDLOOP.ENDLOOP.

Page 303: Curso ABAP

FormulariosFormularios

Page 304: Curso ABAP

Programas para FormulariosProgramas para Formularios

� Consultas� Select� Funciones

� Formulario� SAPSCRIPTS� SMARTFORMS

� Módulos Auxiliares� Subrutinas� Estilos� Texto Estándar

ConsultasConsultas

FormularioFormulario

Page 305: Curso ABAP

� Ejemplos� Facturas� Notas de Crédito� Notas de Débito� Recibos� Cheques� Contratos (HR)� Notas de Pedido

ConsultasConsultas

FormularioFormulario

Programas para FormulariosProgramas para Formularios

Page 306: Curso ABAP

SAPScriptsSAPScripts

RutinasRutinas

FormularioFormulario

ConsultasConsultas EstilosEstilos

TextosEstándar

TextosEstándar

Page 307: Curso ABAP

SmartFormsSmartForms

ConsultasConsultas

FormularioFormulario

RutinasRutinasEstilosEstilos

TextosEstándar

TextosEstándar

Page 308: Curso ABAP

Formularios Formularios -- SAPScriptsSAPScripts

Page 309: Curso ABAP

Formularios Formularios -- SAPScriptsSAPScripts

Page 310: Curso ABAP

Formularios Formularios -- SmartformsSmartforms

Page 311: Curso ABAP

Formularios Formularios -- SmartformsSmartforms

Page 312: Curso ABAP

Ejercicios

Reportes Reportes -- SintaxisSintaxis

Ejercicio Funcional 15

Page 313: Curso ABAP

Diálogo

Page 314: Curso ABAP

ScreenScreenPainterPainterTransacción: SE51

Page 315: Curso ABAP

Diálogo Interacción con el UsuarioDiálogo Interacción con el Usuario

Page 316: Curso ABAP

DiálogoDiálogo

PantallaPantalla

PBOPBO

PAIPAI PBOPBO

FINFIN

� Interacción con el usuario

� Radio Frecuencia (RFID)

Page 317: Curso ABAP

PantallasPantallas(Screens / (Screens / DynprosDynpros))

Componentes de la Pantalla

AtributosElementosCamposLógica de Flujo

Page 318: Curso ABAP

MenuMenuPainterPainterTransacción: SE41

Page 319: Curso ABAP

Nuevas Tendencias TecnológicasNuevas Tendencias Tecnológicas

Page 320: Curso ABAP

Nuevas Tendencias Tecnologicas

� ABAP Object: es la nueva tendencia de la programación en ABAP orientado a Objetos. Existe sobre este tema la siguiente información proporcionada por SAP:http://help.sap.com/saphelp_erp2004/helpdata/en/c3/225b5654f411d194a60000e8353423/frameset.htm

� XML: Nueva tendencia que en conjuncio con XI (Exchange Infrastructure ), se usa actualmente para manejo y mejoras en el diseño e implementación de interfaces e intercambio de información entre sistemas SAP y/o No SAP.http://help.sap.com/saphelp_erp2004/helpdata/en/47/b5413acdb62f70e10000000a114084/frameset.htm

Page 321: Curso ABAP

� SAP NetWeaver Developer Studio: Nuevo Ambiente de desarrollo orientado a Integrar las funcionalidades ABAP con l a Robustes de JAVA y la agradable visualización del Diseño en la WEB (HT ML, DHTML y XML).

SAP Web Dynpro: Ambiente de desarrollo Incorporado a NetWeaverorientado al diseño e implementaciòn de aplicaciones para portal.

https://www.sdn.sap.com/sdn/developerareas/webdynpro.sdn?page=webas_tutorials.htm

Nuevas Tendencias Tecnológicas

Aplicaciones BSP: Ambiente de desarrollo orientado al diseño e implementación de WebSites sobre el núcleo de R/3 y Web ApplicationServer (WAS) http://help.sap.com/saphelp_nw04/helpdata/en/e9/bb1 53aab4a0c0ee10000000a114084/frameset.htmhttp://help.sap.com/search/highlightContent.jsp

Page 322: Curso ABAP

Relación Modular de Tablas en SAPRelación Modular de Tablas en SAP

Page 323: Curso ABAP

Relación Modular de Tablas en Relación Modular de Tablas en SAPSAPVer en el Documento algunas relaciones entre las Tablas que conforman los Módulos de SAP R/3 mas importantes.

Page 324: Curso ABAP

SAP R/3SAP R/3

R/3 como sistema integrado de funcionalidad multimodular

R/3R/3Cliente / Servidor

ABAPABAP

COCOControllingControlling

AMAMFixed AssetsFixed Assets

MgmtMgmt

PSPSProjectProjectSystemSystem

WFWFWorkflowWorkflow

ISISIndustryIndustrySolutionsSolutions

HRHRHumanHuman

ResourcesResources

SDSDSales & Sales &

DistributionDistribution

PPPPProductionProductionPlanningPlanning

QMQMQualityQualityMgmtMgmt

FIFIFinancialFinancial

AccountingAccounting

PMPMPlant Main-Plant Main-

tenancetenance

MMMMMaterialsMaterials

MgmtMgmt

Page 325: Curso ABAP

Relación Tablas Relación Tablas MódulosMódulos

Page 326: Curso ABAP

Descripción de MódulosDescripción de Módulos

SAP consta de un conjunto de módulos totalmente integrados que cubren una amplia variedad de funciones de negocio entre las que se incluyen:

� Gestión Económico Financiera � Contabilidad General (FI)� Contabilidad Analítica (CO)� Activos Fijos (AA)� Tesoreria (TR)

� Logística� Comercial y Distribución (SD)� Manejo de Materiales (MM)

� Producción � Planificación y Control (PP)� Control de Calida (QM)� Mantenimiento (PM)� Gestión integrada de Proyectos (PS)

� Recursos Humanos (HR)� Soluciones Industriales (IS)

Page 327: Curso ABAP

Descripción de MódulosDescripción de MódulosFI – FINANZAS (Gestión Financiera)

� FI-AA (Asset Accounting). � FI-AP (Accounts Payable) � FI-AR (Accounts Receivable)� FI-GL (General Ledger).� FI-LC (Legal Consolidation)� FI-SL (Special Ledger)

CO – CONTROLLING� CO-ABC (Activity Based Costing). � CO-OM (Overhead Cost Control). � CO-PA (Profitability Analisis) � CO-PC (Product Costing)

Page 328: Curso ABAP

Descripción de MódulosDescripción de Módulos

SD - SALES AND DISTRIBUTION (Comercial)

� SD-BF. Funciones básicas� SD-BIL . Facturación� SD-CAS. Soporte a ventas. � SD-EDI. Intercambio electrónico de datos. � SD-FTT. Comercio exterior� SD-IS. Sistema de información� SD-MD. Datos maestros� SD-SHP. Envíos� SD-SLS. Ventas� SD-TRA. Transporte

Page 329: Curso ABAP

Descripción de MódulosDescripción de Módulos

MM - MATERIALS MANAGEMENT (Materiales)

� MM-EDI. Intercambio electrónico de datos� MM-IM. Gestión de inventario� MM-IV. Verificación de facturas� MM-PUR. Compras� MM-WM. Gestión de almacenes

Page 330: Curso ABAP

Descripción de MódulosDescripción de Módulos

PP - PRODUCTION PLANNING (Producción)� PP-ATO. Órdenes de ensamblaje.� PP-BD. Datos básicos de producción.� PP-CRP. Planificación de capacidad.� PP-KAB . Kanban / Just-inTime.� PP-MP. Planificación maestra.� PP-MRP. Planificación de necesidades de material.� PP-PDC. Recolección de datos de planta.� PP-PI. Planificación de la producción para industrias por

proceso.� PP-REM. Fabricación repetitiva.� PP-SFC. Órdenes de producción.� PP-SOP. Planificación de operaciones y ventas.� PP-IS. Sistema de información de producción.

Page 331: Curso ABAP

Descripción de MódulosDescripción de Módulos

QM - QUALITY MANAGEMENT (Calidad)

� QM-CA. Certificados de calidad.� QM-IM. Inspecciones.� QM-PT. Herramientas de planificación.� QM-QC. Control de calidad.� QM-QN. Notificaciones.

Page 332: Curso ABAP

Descripción de MódulosDescripción de Módulos

PM - PREVENTIVE MAINTENANCE (Mantenimiento)

� PM-EQM Equipos y objetos técnicos.� PM-PRM. Mantenimiento preventivo.� PM-PRO. Proyectos de mantenimiento.� PM-IS. Sistema de información de PM.� SM. Gestión de Servicios

Page 333: Curso ABAP

Descripción de MódulosDescripción de Módulos

HR – HUMAN RESOURCES (RECURSOS HUMANOS)� Módulo PA. Administración de personal.

� PA-APP. Reclutamiento o gestión de candidatos. � PA-BEN. Beneficios. � PA-INW. Incentivos. � PA-PAD. Administración de personal. � PA-PAY. Contabilidad de salarios o nómina. � PA-SAD. Administración de compensaciones. � PA-TIM. Gestión de tiempos. � PA-TRV. Gestión y gastos de viajes

� Módulo PD. Desarrollo y planificación personal.� PD-OM. Gestión de la organización. � PD-PD. Desarrollo de personal. � PD-RPL. Planificación y reservas de salas. � PD-SCM. Formación y gestión de eventos. � PD-WFP. Planificación del trabajo.

Page 334: Curso ABAP

Relación Tablas Módulos

FI-COSDMM

Page 335: Curso ABAP

Módulo FI-CO

Page 336: Curso ABAP

Módulo FIMódulo FI --COCO

Page 337: Curso ABAP

Módulo FIMódulo FI --COCO

Page 338: Curso ABAP

Módulo FIMódulo FI --COCO

Page 339: Curso ABAP

Módulo FIMódulo FI --COCO

Page 340: Curso ABAP

Módulo FIMódulo FI --COCO

Page 341: Curso ABAP

Módulo FIMódulo FI --COCO

Page 342: Curso ABAP

Módulo FIMódulo FI --COCO

Page 343: Curso ABAP

Módulo SD

Page 344: Curso ABAP

Módulo SDMódulo SD

Page 345: Curso ABAP

Módulo SDMódulo SD

Page 346: Curso ABAP

Módulo SDMódulo SD

Page 347: Curso ABAP

Módulo SDMódulo SD

Page 348: Curso ABAP

Módulo SDMódulo SD

Page 349: Curso ABAP

Módulo SDMódulo SD

Page 350: Curso ABAP

Módulo SDMódulo SD

Page 351: Curso ABAP

Módulo MM

Page 352: Curso ABAP

Módulo MMMódulo MM

Page 353: Curso ABAP

Módulo MMMódulo MM

Page 354: Curso ABAP

Módulo MMMódulo MM

Page 355: Curso ABAP

Módulo MMMódulo MM

Page 356: Curso ABAP

Módulo MMMódulo MM

Page 357: Curso ABAP

Módulo MMMódulo MM

Page 358: Curso ABAP

Resumen de Tablas

Page 359: Curso ABAP

Resumen de TablasResumen de Tablas

Page 360: Curso ABAP

Resumen de TablasResumen de Tablas

Page 361: Curso ABAP

Curso Programación ABAP

� Realizado por Wilmer Figueroa.

� Email Contacto: [email protected]