Upload
francisco-marin-kuellmer
View
748
Download
25
Embed Size (px)
Citation preview
ABAP DEVELOPER TRAININGABAP DEVELOPER TRAINING
MayoMayo 20072007
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
Arquitectura SAP R/3Arquitectura SAP R/3
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
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
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
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
Transportes OrdenesTransportes Ordenes
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
Creación de la orden Transacción: SE09 ó SE10
Usuario titular de la orden
Crear orden
Transporte OrdenesTransporte Ordenes
Tipo de orden
Creación de la orden Transacción: SE09 ó SE10
Transporte OrdenesTransporte Ordenes
Texto descriptivo
Grabar orden
Creación de la orden Transacción: SE09 ó SE10
Transporte OrdenesTransporte Ordenes
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
Documentación de la orden
Grabar
Liberación de una orden Transacción: SE09 ó SE10
Transporte OrdenesTransporte Ordenes
Tarea ya liberada
Liberación de una orden Transacción: SE09 ó SE10
Transporte OrdenesTransporte Ordenes
Acceder a las colas de transporte de los
distintos ambientes
Transporte de una orden Transacción: STMS
Transporte OrdenesTransporte Ordenes
Ambiente de desarrollo
Ambiente de pruebaVisualizar
cola
Transporte de una orden Transacción: STMS
Transporte OrdenesTransporte Ordenes
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
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.
Transacciones Transacciones
� Excelente Tutorial y Ejemplos ABAP ABAPDOCUABAPDOCU
Transacciones
� Object Navigator SE80SE80
Transacciones
� Editor ABAP Tradicional SE38SE38
Transacciones
� Biblioteca de Funciones SE37SE37
Transacciones
� Screen Painter SE51SE51
Transacciones
� Menu Painter SE41SE41
Transacciones
� SapScript Form Painter (Formularios) SE71SE71
Transacciones
� Smart Forms (Formularios) SMARTFORMSSMARTFORMS
Transacciones
� Mantenimiento de Transacciones SE93SE93
Transacciones
� Transport Organizer SE09SE09
Transacciones
� Dictionary ABAP SE11SE11
Transacciones
� Browser de Datos SE16SE16
Transacciones
� BADI-Builder - Definiciones SE18SE18
Transacciones
� BADI-Builder - Implementaciones SE19SE19
Transacciones
� Package Builder SE21SE21
Transacciones
� Generador de Clases SE24SE24
Transacciones
� Actualizar elementos texto ABAP SE32SE32
Transacciones
� Explorador BAPI BAPIBAPI
Transacciones
� Business Object Builder SWO1SWO1
Transacciones
� Batch Inputs SM35SM35
Transacciones
SapSapen la Interneten la Internet
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
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
WorkbenchWorkbenchABAPABAP
WorkbenchWorkbenchABAPABAP
Screen Painter
Menú Painter
Abap Dictionary
Abap Editor
Function Builder
OBJECT NAVIGATOR
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
Reportes Reportes
Nombre del programa
Crear
Reportes Reportes -- EstructuraEstructuraTransacción: SE38
Creación de un Programa
Texto descriptivo
Grabar
Tipo de programa
Status
Aplicación
Reportes Reportes -- EstructuraEstructuraTransacción: SE38
Creación de un Programa
Clase de desarrollo para objetos
transportables
Objeto local (no transportable)
Reportes Reportes -- EstructuraEstructuraTransacción: SE38
Creación de un Programa
Editor de ABAP
Grabar
Reportes Reportes -- EstructuraEstructuraTransacción: SE38
Creación de un Programa
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
Reportes Reportes -- EstructuraEstructuraTransacción: SE38
Ejercicios
Ejercicio Funcional 01
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
INITIALIZATIONAT SELECTION-SCREENSTART-OF-SELECTIONEND-OF-SELECTION
Reportes Reportes -- EventosEventosTransacción: SE38
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
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
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
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
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
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
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
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
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
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
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
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
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
Tipos ABAP
Reportes Reportes –– Tipos datosTipos datosTransacción: SE38
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
DATA: SUM TYPE P, " Totals fieldCOUNTER TYPE P.
* New account* Initialize totals field
CLEAR SUM.
Comentarios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
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
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
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
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
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
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
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
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
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
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
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 02.
Ejercicio Funcional 03.
Ejercicio Funcional 04.
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
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
Reportes Reportes -- ParámetrosParámetrosTransacción: SE38
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
Parameters / Select-Options
PARAMETERS SELECT-OPTIONS
Reportes Reportes -- ParámetrosParámetrosTransacción: SE38
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
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.
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
Frame / Title
TITLESFRAMEPARAMETERS
Reportes Reportes -- ParámetrosParámetrosTransacción: SE38
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
Comment / Lines
LINES
COMMENT
Reportes Reportes -- ParámetrosParámetrosTransacción: SE38
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
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
Radiobutton / Checkbox
RADIOBUTTON
CHECKBOX
Reportes Reportes -- ParámetrosParámetrosTransacción: SE38
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
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
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
Sentencias de ControlSentencias de Control
IF ENDIFCASE ENDCASE
DO ENDDOWHILE ENDWHILE
CHECKEXIT
Case distinction
Loops
Other control statements
Sentencias de ControlSentencias de Control
Sentencias de Control
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
CASE <field>.
WHEN <value>.
WHEN <value2>.
WHEN <value3>.
WHEN OTHERS.
ENDCASE.
statements
statements
statements
statements
CASE
Sentencias de ControlSentencias de Control
DO <n> TIMES.
ENDDO.
loop index
statements
SY-INDEX
DO (ciclo)
Sentencias de ControlSentencias de Control
WHILE <logical expression>.
ENDWHILE.
WHILE COUNTER > 0....
SUBTRACT 1 FROM COUNTER.ENDWHILE.
statements
loop indexSY-INDEX
WHILE (ciclo)
Sentencias de ControlSentencias de Control
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
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
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.
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 05.
Ejercicio Funcional 06.
Ejercicio Funcional 07.
SelectSelect
REPORT RSAAA02B.TABLES: SBOOK.SELECT * FROM SBOOK
WHERE CARRID = 'LH '.
ENDSELECT.IF SY-SUBRC NE 0.
ENDIF.
statements
statements
SelectSelect
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
SelectSelect
Select …
Into …From …
Where …Group …
Order …
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 )
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>
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
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
SelectSelect
� Group by [tabla / alias ~] <campo 1> …[tabla / alias ~] <campo n>
� Having <condición>
SelectSelect
� Order by primary key
� Order by [tabla / alias ~] <campo 1> …[tabla / alias ~] <campo n>
Tablas InternasTablas Internas
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
� 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
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 08.
Ejercicio Funcional 09.
Ejercicio Funcional 10.
DiccionarioDiccionario
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
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
Transacción: SE11
Categoría por Tamaño
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
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
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
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
Nombre de la tabla
Crear
Transacción: SE11
Creación de una Tabla
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
Texto descriptivo
Permitir actualización
manual
Clase de entrega (tipo
de tabla)
Grabar
Transacción: SE11
Creación de una Tabla
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
Clase de desarrollo para objetos
transportables
Objeto local (no transportable)
Transacción: SE11
Creación de una Tabla
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
Clase de desarrollo temporal
Definición de campos
Transacción: SE11
Creación de una Tabla
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
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
Clase de datos
Tamaño
Grabar
Transacción: SE11
Creación de una Tabla
WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
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
Vistas
ABAP DictionaryABAP Dictionarytablestables
View View
DBDB
Transacción: SE11WorkbenchWorkbenchABAP ABAP –– DiccionarioDiccionario
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
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
�� 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.
�� TablasTablas
Recordemos que como cualquier objeto creado para el cliente se debe comenzar con “Z” o “Y”
�� 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
�� TablasTablas
�� TablasTablas
�� TablasTablas
�� TablasTablas
�� DiccionarioDiccionario
�� 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.
�� TablasTablas
Ahora debemos grabar
�� TablasTablas
�� TablasTablas
Ahora debemos grabar, verificar y activar nuestro í ndice
�� TablasTablas
Una vez que tenemos completamente definida nuestra tabla debemos presionar la tecla verificar y si no existe ningún problema pres ionaremos activar.
�� DominioDominio
�� DominioDominio
�� DominioDominio
�� 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
�� ElementoElemento de de DatosDatos
�� 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.
�� EstructurasEstructuras
Como ya se pudo observar, las estructuras son forma tos de registro y se crean de la siguiente forma:
�� EstructuraEstructura
Luego de haber definido la estructura se debe presi onar la tecla verificar y luego activar
�� VistasVistas
�� VistasVistas
�� VistasVistas
�� VistasVistas
�� VistasVistas
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.
� 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
� 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
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
� 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
� 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
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
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
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
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
Salida de DatosSalida de Datos
Salida de DatosSalida de Datos
� Consultas
� Select� Funciones
� Salidas por Pantalla
� Sentencias Básicas� ALV
� Creación de archivos
� Funciones Especiales
SalidasSalidas
ProcesoProceso
ConsultasConsultas
Salida de Datos Salida de Datos -- WriteWrite
� 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
Salida de Datos Salida de Datos -- ALVALV
� 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
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
Salida de Datos Salida de Datos –– ALV GridALV Grid
� 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
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 11.
Ejercicio Funcional 12.
Entrada de DatosEntrada de Datos
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..
SubRutinas y Programas Internos
� PERFORM se usa para llamar una subrutina
sintaxis
• PERFORM form. • PERFORM form(prog). • PERFORM form IN PROGRAM prog.
� 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
� 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
� 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
� 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
� Entrada� Archivo Plano� RFC
� Proceso� Almacenamiento
� Batch Input / CallTransaction
� Funciones� BAPI� Almacenamiento Directo
Almace-namientoAlmace-namiento
ProcesoProceso
EntradaEntrada
Entrada de DatosEntrada de Datos
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
� 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
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
-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
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
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
Generación de Juego de Datos
FuncionesBDC_OPEN_GROUPBDC_INSERTBDC_CLOSE_GROUP
Transacción: SM35
Entrada de Datos Entrada de Datos –– Batch InputBatch Input
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 13
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
FuncionesFunciones
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
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
Transacción: SE80
Creación de un Grupo de Funciones
FunctionFunctionBuilderBuilder
Nombre del grupo de funciones
Grabar
Transacción: SE80
Creación de un Grupo de Funciones
FunctionFunctionBuilderBuilder
Clase de desarrollo para objetos
transportables
Objeto local (no transportable)
Transacción: SE80
Creación de un Grupo de Funciones
FunctionFunctionBuilderBuilder
Nombre del grupo de funciones
Includesgenerados
automáticamente
Transacción: SE80
Creación de un Grupo de Funciones
FunctionFunctionBuilderBuilder
Nombre del módulo de funciones
Crear
Transacción: SE37
Creación de un Módulo de Funciones
FunctionFunctionBuilderBuilder
Nombre del grupo de funciones
Grabar
Transacción: SE37
Creación de un Módulo de Funciones
FunctionFunctionBuilderBuilder
Tipo de dato
Nombre del parámetro
Descripción
Transacción: SE37
Creación de un Módulo de Funciones - Import
FunctionFunctionBuilderBuilder
Creación de un Módulo de Funciones - Export
Tipo de dato
Nombre del parámetro
Descripción
Transacción: SE37FunctionFunctionBuilderBuilder
Código de respuesta Descripción
Creación de un Módulo de Funciones - Exceptions
Transacción: SE37FunctionFunctionBuilderBuilder
Creación de un Módulo de Funciones – Código Fuente
Transacción: SE37FunctionFunctionBuilderBuilder
Creación de un Módulo de Funciones – Atributos
Transacción: SE37FunctionFunctionBuilderBuilder
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
Ejercicios
Reportes Reportes -- SintaxisSintaxisTransacción: SE38
Ejercicio Funcional 14
BAPIBAPI
JerarquíaObjeto
Campos claves
Métodos
FunctionFunctionBuilderBuilder
Navegador
Transacción: BAPI
Tablas o parámetros obligatorios
Parámetros de salida
Parámetros de entrada
Nombre de función
FunctionFunctionBuilderBuilder
Navegador
Transacción: BAPI
KERNEL
Constraints
BusinessRules
INTEGRITY
INTERFACE
ACCESS
COM / DCOMRFC
JAVACORBA
Method(BAPI)
BAPIBAPI
Business Object Repository (BOR)
Objetos agrupados por jerarquía
BAPIBAPI
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
AmpliacionesAmpliaciones
AmpliacionesAmpliaciones
� Exits� User Exit� Field Exit� Screen Exit
� Business Add-Ins(BADIs)
ProcesoestándarProcesoestándar
ProcesoestándarProcesoestándar
ProcesoestándarProcesoestándar
Ampliación
� Exits� Menu Exits� Screen Exits� Function Module
Exits
� Business Add-Ins(BADIs)
ProcesoestándarProcesoestándar
ProcesoestándarProcesoestándar
ProcesoestándarProcesoestándar
Ampliación
AmpliacionesAmpliaciones
� 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
� 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
� 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
� 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
AmpliacionesAmpliaciones
ABAP ABAP PerformancePerformanceTuningTuning
� 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
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.
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.
ABAP Performance Tuning
� ABAP Performance Analysis
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.
ABAP Performance Tuning
� ABAP Performance Analysis� Listado del Trace y operaciones con la Base de Dato s (DB).
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.
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
ABAP Performance Tuning
� Database Performance Analysis ST04
ABAP Performance Tuning
� Database Performance Analysis ST04
ABAP Performance Tuning
� Caminos (Paths) de acceso convenientes e inadecuados
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.
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.
ABAP Performance Tuning
� Análisis de la Tabla con respecto a los Campos Indices DB05DB05
ABAP Performance Tuning
� Análisis de la Tabla con respecto a los Campos Indices DB05
ABAP Performance Tuning
� Accesos a Bases de Datos� Manejo de Joins
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.
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)
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’.
� 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’.
� 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
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’ ).
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 ‘%’.
� 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.
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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
� 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>]
� Tablas Internas. Tipos
ABAP Performance Tuning
� Tablas Internas. Operaciones con Indice
ABAP Performance Tuning
� Tablas Internas. Operaciones con Campos Claves
ABAP Performance Tuning
� 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.
� 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[].
� 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.
� 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.
� 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’
� 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.
� Trabajando con Tablas Internas. � Acciones de Lectura de registros según el tipo de
tabla.
ABAP Performance Tuning
� 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.
� 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.
� 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.
FormulariosFormularios
Programas para FormulariosProgramas para Formularios
� Consultas� Select� Funciones
� Formulario� SAPSCRIPTS� SMARTFORMS
� Módulos Auxiliares� Subrutinas� Estilos� Texto Estándar
ConsultasConsultas
FormularioFormulario
� Ejemplos� Facturas� Notas de Crédito� Notas de Débito� Recibos� Cheques� Contratos (HR)� Notas de Pedido
ConsultasConsultas
FormularioFormulario
Programas para FormulariosProgramas para Formularios
SAPScriptsSAPScripts
RutinasRutinas
FormularioFormulario
ConsultasConsultas EstilosEstilos
TextosEstándar
TextosEstándar
SmartFormsSmartForms
ConsultasConsultas
FormularioFormulario
RutinasRutinasEstilosEstilos
TextosEstándar
TextosEstándar
Formularios Formularios -- SAPScriptsSAPScripts
Formularios Formularios -- SAPScriptsSAPScripts
Formularios Formularios -- SmartformsSmartforms
Formularios Formularios -- SmartformsSmartforms
Ejercicios
Reportes Reportes -- SintaxisSintaxis
Ejercicio Funcional 15
Diálogo
ScreenScreenPainterPainterTransacción: SE51
Diálogo Interacción con el UsuarioDiálogo Interacción con el Usuario
DiálogoDiálogo
PantallaPantalla
PBOPBO
PAIPAI PBOPBO
FINFIN
� Interacción con el usuario
� Radio Frecuencia (RFID)
PantallasPantallas(Screens / (Screens / DynprosDynpros))
Componentes de la Pantalla
AtributosElementosCamposLógica de Flujo
MenuMenuPainterPainterTransacción: SE41
Nuevas Tendencias TecnológicasNuevas Tendencias Tecnológicas
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
� 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
Relación Modular de Tablas en SAPRelación Modular de Tablas en SAP
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.
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
Relación Tablas Relación Tablas MódulosMódulos
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)
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)
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
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
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.
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.
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
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.
Relación Tablas Módulos
FI-COSDMM
Módulo FI-CO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo FIMódulo FI --COCO
Módulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo SDMódulo SD
Módulo MM
Módulo MMMódulo MM
Módulo MMMódulo MM
Módulo MMMódulo MM
Módulo MMMódulo MM
Módulo MMMódulo MM
Módulo MMMódulo MM
Resumen de Tablas
Resumen de TablasResumen de Tablas
Resumen de TablasResumen de Tablas