Vous êtes sur la page 1sur 8

F -X C h a n ge F -X C h a n ge

PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
Laboral: . probar, detectar y reportar.
C

C
w

w
m

m
w w
w

w
o

o
.d o c .d o .c
c cku -tr a c u -tr a c k

1. ¿Cuántos tipos diferentes de tablas internas existen? 3


Standard - OK ¿que diferencia hay entre estas declaraciones:
DATA: tl_tabla TYPE STANDARD TABLE OF sflight.
y
DATA: tl_tabla TYPE TABLE OF sflight.
No hay ninguna diferencia, porque el tipo Standard es el tipo de tabla interna por default.

Sorted - OK ¿Cual es la sentencia para agregar datos a una tabla interna de este tipo? INSERT o APPEND
Hashed table - OK ¿Cual es la sentencia para agregar datos a una tabla interna de este tipo? INSERT

2. ¿Qué pasa si la tabla interna de referencia utilizada con la instrucción "FOR ALL ENTRIES IN" está vacía al realizar un
select?
Esto no se debe hacer, ya que el comando recuperaría todas las filas de la tabla especificada en el select, es como si
hiciéramos un select sin especificar ningún criterio de selección. - OK Por lo tanto antes hay que validar si la tabla trae al
menos un registro.

3. ¿Cuál es la característica de una BAPI?


Que se procesa en el trasfondo, es decir, no devuelve ventanas de diálogo al programa que la invoca. - OK Para evitar
confusiones sólo diremos que no contiene ventanas de dialogo. Y la principal característica es que tiene la misma
funcionalidad que la transacción correspondiente. Además de que es un modulo de funciones de tipo RFC.

4. ¿En qué casos se debe utilizar Batch Input y en qué casos debe utilizarse un call transaction?
El batch input se utiliza para carga masiva de datos, en cambio “call transaction” es especialmente usado para integración
entre sistemas SAP o entre diferentes módulos de un sistema SAP. - OK En el caso del "call transaction", una descripción
más simple es que se puede utilizar cuando se requieren procesar solo pocos registros. O, un ejemplo simple... se utiliza
cuando se requiere invocar una transacción inmediatamente después de que finalice la ejecución de la transacción que
contiene el "call transaction".

5. ¿Cuál es la diferencia entre una BADI y una BAPI?


BADI, es una ampliación, es decir, consiste en fragmentos de código propio que SAP permite meter dentro del código
estándar para realizar ciertas operaciones a la medida, en cambio, una BAPI es un módulo de funciones proporcionado
por SAP, comúnmente las BAPI’s son utilizadas para habilitar la comunicación entre SAP y otros sistemas mediante un
RFC. - OK

6. ¿Cuál es la diferencia entre un user-exit y un customer exit?


a) El user-exit es considerado una modificación al código, en cambio un customer-exit es una ampliación. - Ambos son un
tipo de ampliación (enhancement). *Preguntar a Pipe la respuesta correcta.
b) Con user-exit hay mayor riesgo de que se generen inconsistencias, porque se tiene acceso casi a todos los datos. Con
customer-exit el acceso a datos es más limitado. En ambos casos se pueden generar inconsistencias.
c) El user-exit se implementa como una subrutina, en cambio el customer exit puede ser un function exit, screen exit o
menú exit. - OK
d) El user-exit requiere Access-key, en cambio el customer-exit no la requiere. - OK Esta es la principal diferencia.

1
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
e).c En el caso de user-exit los cambios se pueden perder después de un Upgrade, en cambio con customer-exit no w existe. c
C

C
w

w
m

m
w
w

w
o

o
.d o .d o
c u -tr a c k c u -tr a c k

ese riesgo. -OK Aunque mejor voy a verificar esto, ya que no estoy muy seguro de que en el caso de los user-exit se
pierdan los cambios al realizar un upgrade.
f) El user-exit se activa automáticamente cada que el programa es activado, en cambio el customer-exit requiere la
creación y activación de un proyecto SMOD para ser activado. - OK
7. ¿Qué tipos de ampliaciones/enhancements conoces?
Enhancements points
BADIS
Customer Exit
OK Incluyendo los que mencionaste anteriormente. ¿A que se le llama enhancement implicito/explicito?
Implicito. Son puntos de ampliación incluidos de forma predeterminada en el código estándar de SAP, pero
normalmente está oculto, es necesario hacerlo visible para poder habilitarlo.
Explicito. Son opciones de inserción preparadas por SAP.
8. ¿Cuál es la diferencia/ventaja de utilizar field symbols o work areas?
El acceso a los datos es más rápido con field-symbols.
Con field-symbols estamos creando una referencia a la tabla interna, en cambio con una work-area lo que hacemos es
copiar el contenido de una línea de una tabla interna a otra área de almacenamiento temporal, con field-symbols nos
evitamos esa copia (la referencia es directa), por lo anterior, es posible modificar más fácilmente los datos de la tabla
interna (no es necesario utilizar la sentencia MODIFY). - OK

9. ¿Qué es un RFC?
Es el llamado a una función ubicada en un sistema externo, permite comunicar cualquier aplicación con los sistemas SAP
(existe una clase llamada SAPRFC que contiene todas las DLL’s necesarias). OK Es un tipo especial de Modulo de
Funciones. ¿En SAP existen RFC sincronos y asincronos? ¿Cuál es la ventaja de utilizar uno u otro? ¿O en qué casos
utilizarias uno u otro?
Sí, hay 3 tipos de llamadas de RFC: Síncronos, Asíncronos y Transaccionales.
Síncrono. La llamada del programa se detiene hasta que el modulo de función ha sido procesado en el sistema destino y
algún resultado ha sido devuelto al emisor, sólo así permite al programa emisor continuar ejecutándose.
Asíncrono. El programa emisor corre paralelo e independiente del procesamiento de la llamada en el sistema destino. Los
programadores son responsableS del manejo del resultado de la llamada. En este caso, el sistema destino debe de estar
disponible en el momento de la llamada RFC.
Yo utilizaría síncrono si estoy segura de que el sistema destino va a estar disponible siempre, de lo contrario, el proceso
se quedaría colgado, porque entiendo que siendo síncrono el sistema espera respuesta del destino y si no la hay se queda
esperándola.
Y utilizaría Asíncrono si supiera que es probable que el destino no esté disponible en algún momento, para lo cual validaría
el resultado de la llamada.

Una pregunta común para Jr, son ¿Para qué sirve la transacción...

SE38. Editor de código ABAP. OK

SE80. Explorador de objetos del repositorio. OK

SE37. Mantenimiento a Function-Module’s. OK

SM36/37. Mantenimiento de Jobs (creación) / Administración de jobs (detenerlos, verlos, reprocesarlos…) OK

SM35. Preparar juego de datos para Batch Input. OK


2
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
SM30.
. c Mantenimiento a vistas de tablas. OK
C

C
w

w
m

m
w w
w

w
o

o
.d o .d o .c
c u -tr a c k c u -tr a c k

SMARTFORMS. Creación de formularios que se imprimen de forma masiva. OK Lo de "en forma masiva" esta de sobra.

SE73. Definición de códigos de barras. OK Y de fuentes en general.

10. O la pregunta contraria... ¿en qué transacción visualizo las ordenes de transporte?
SE01 OK yTambien se utiliza la SE09, SE10. Y La STMS la utilizan por lo regular solo los Basis para la gestion de ordenes
de transporte de un ambiente a otro.

11. ¿En qué transacción se hacen las grabaciones (para utilizar con batch input o call transaction)?
SHDB OK

12. ¿Qué tipos de programas de dialogo conoces? 2 OK


Reports
Module pools

Algunos, llegan a preguntar sobre tablas...

13. ¿En qué tabla se almacenan los datos de cabecera de los pedidos de venta?
VBAK OK

14. ¿Qué datos se guardan en la tabla?


VBRK. Datos de cabecera de facturas. OK

MARA. Catalogo de materiales. OK

15. ¿Para qué sirve un objeto de autorización? ¿Desde qué transacción lo creas?
Los objetos de autorización permiten verificaciones complejas de una autorización para que el usuario realice cierta
acción, para crearlos se utiliza la transacción SU21. OK Por lo regular esta es tarea de un Basis

16. ¿Para qué sirve un objeto de bloqueo? ¿desde qué transacción lo creas?
Sirve para controlar la concurrencia de procesos sobre un mismo objeto, siempre están asociados a tablas de diccionario
de datos, es un semáforo sobre una tabla. Se crean en la SE11. OK

17. ¿Sabes el nombre de una BAPI para crear pedidos?


BAPI_SALESORDER_CREATEFROMDAT2 OK

18. ¿Sabes el nombre de una BAPI para crear facturas?


BAPI_BILLINGDOC_CREATEMULTIPLE OK

20. ¿En qué transacción puedes buscar/encontrar BAPIs?


BAPI OK

21. ¿A que se le llama independiente de mandante?


Que podemos acceder a él sin importar el mandante en el que nos hayamos logueado. OK

22. ¿Los SAPScripts son dependientes de mandante?


3
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
Sí,
. c porque están asociados a las impresoras, las cuales son dependientes de mandante. OK Aunque la explicaciónw .de la .c
C

C
w

w
m

m
w
w

w
o

o
.d o do
c u -tr a c k c u -tr a c k

impresora es un plus.

23. Menciona algunas recomendaciones para garantizar el performance de un programa.


a) Evitar SELECT *
(A menos que realmente necesitemos recuperar todos los campos). OK
b) Seleccionar un único registro (usar SELECT SINGLE, cuando sólo necesitemos recuperar un registro). OK
c) Evitar usar el ciclo SELECT … ENDSELECT OK Esto definitivamente esta obsoleto.
d) Procurar usar índices (siempre que sea posible, en la cláusula WHERE limitar por la PK) OK O verificar si existen indices
secundarios.
e) Evitar “INTO CORRESPONDING” OK
f) Evitar usar SELECT dentro de LOOP OK
No poner SELECT dentro de ciclos, utilizar en su lugar el comando FOR ALL ENTRIES (asegurarse previamente de que la tabla
interna no esté vacía y esté ordenada por el campo usado en el where). OK
g) Evitar usar SELECT anidados
En su lugar, usar diferentes tablas internas para guardar los valores y usar ciclos anidados para leer los datos necesarios. OK
Aunque lo de los ciclos anidados creo que se prestaría a confusiones.
h) Evitar SELECT DISTINCT OK
Cuando sea posible se debe evitar el uso de SELECT DISTINCT. En su lugar, seleccionar valores en una tabla interna, ordenarla y
usar DELETE ADJACENT DUPLICATES. OK Aunque esto no me lo sabia, lo verificare.
i) Evitar el uso de OR en las cláusulas WHERE OK
j) Order By
La cláusula ORDER BY no utiliza el buffer del servidor de aplicaciones SAP. Es mejor recuperarlos de la b.d. sin ordenar y
ordenarlos en una tabla interna. Solo se debe usar el ORDER BY si el orden coincide con el índice. OK Esto tampoco lo sabia.
k) Usando el comando READ
Cuando queremos leer un registro de la tabla interna, el READ TABLE WITH KEY no es una lectura directa. La tabla necesita ser
ordenada por campo clave y se usa el comando READ WITH KEY BINARY SEARCH; de otra manera la tabla es leída de arriba abajo
hasta que se encuentra el campo que coincide con el valor especificado. OK
l) APPEND LINES OF
Cuando sea posible, utilizar APPEND LINES OF para añadir líneas a una tabla interna, en vez de usar un ciclo con el comando
APPEND. OK
m) DELETE tabla_interna WHERE
Usar el comando DELETE tabla_interna WHERE… para borrar registros de una tabla interna, en vez de hacerlo en un ciclo. OK
n) Uso de la cláusula WHERE in bucles LOOP … ENDLOOP OK
n) Uso de métodos OK ¿De métodos? ¿Es decir, de POO? o te refieres a Subrutinas. No, me refiero a POO.
Para una buena modularización, la decisión de ejecutar o no un método, tiene que ser tomada antes de la llamada al método.
USAR:
IF condicion = valor
PERFORM metodo.
ENDIF
o) Procurar usar CASE en lugar de IF’s anidados OK
p) Tablas Hash
Si el número de entradas en una tabla interna es elevado, entonces se debe usar una tabla hash con campos clave para acceder a
la tabla interna. OK
q) Uso de WHILE
Usar el ciclo WHILE en vez del ciclo DO con el comando EXIT, ya que el bucle WHILE es más fácil de entender y más rápido en
ejecutarse. OK Aunque tengo mis dudas.
r) Estructuras idénticas

4
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
Siw . ddos objetos de datos son iguales en estructura usar MOVE x TO y antes que MOVE-CORRESPONDING x TO y. Es más eficiente.
C

C
w

w
m

m
w
w

w
o

o
.c .d o .c
oc ck
u -tr a c ck u -tr a
OK
s) Orden de condiciones
Asegurarse de que la primera condición en un IF sea la más frecuente que sea cierta. Para una condición lógica AND hay que poner
primero la condición que sea más frecuentemente falsa. En una condición con OR, poner como primera condición la que sea más
frecuente que sea cierta. Esto solo afectará al rendimiento si está dentro de un bucle que se repita muchas veces para que se note
la diferencia. OK
t) INNER JOINS vs FOR ALL ENTRIES-FAE
En muchos casos INNER JOIN es mejor de rendimiento que FOR ALL ENTRIES-FAE. OK Aunque algunos opinan lo
contrario.
FOR ALL ENTRIES-FAE tiene que evitarse en caso de tener un gran volumen de datos esperados. OK
u) Uso de cursores en vez de SELECT…INTO y SELECT…ENDSELECT
Para recorrer los datos seleccionados es más eficiente recibir todos los datos en una tabla interna con INTO TABLE y recorrerla con
un cursor que ir recibiendo registro a registro de la b.d ya que la información entre el servidor de aplicaciones y la b.d. viaja en
paquetes de 32K por defecto y hay que aprovechar al máximo cada paquete para que contenga la máxima cantidad de datos
usables. OK Select... Endselect definitivamente es obsoleto.
v) Diagnostico de rendimiento
Para ver problemas de rendimiento, se recomienda el uso de la transacción SE30 (ABAP Runtime Analysis). Esta transacción
permite el análisis estático de transacciones y programas.
Diagnostico de SQL. Se puede usar la transacción ST05 (SQL Trace) para ver que índices se están usando para acceder a la b.d.
Verificar que las condiciones de la cláusula WHERE son las correctas o incluso cambiarlas por otros campos clave para comprobar
la eficiencia. OK
w) Consideraciones generales
Evitar el código muerto. Que no llega nunca a ejecutarse.
Eliminar código innecesario o redundante.
Incluir documentación en el código. OK

x) Operaciones con funciones agregadas


Si queremos calcular el máximo, mínimo, promedio, … es mejor utilizar las funciones agregadas que nos proporciona el SELECT.
OK
y) Uso de buffers de tablas
Es bueno habilitar el uso de buffer de tablas que no cambian frecuentemente de valor para incrementar la eficiencia de las
consultas. OK
z) Manipulación de strings
Muchas de las instrucciones de manipulación de strings están obsoletas porque han salido nuevas versiones de las instrucciones.
Usar:
CONCATENATE, SPLIT, strlen(), WRITE…TO…CENTERED, WRITE…TO…RIGHT-JUSTIFIED
Eliminar espacios en un string: Usar SHIFT…LEFT DELETING LEADING… OK

24. Menciona algunas características o sentencias obsoletas y que ya no deben utilizarse más.
Funcionalidad SAPScript Aun se pueden seguir utilizando, pero si, son la tecnología anterior al smartform.
Cláusula INTO CORRESPONDING Por rendimiento no debería de utilizarse, pero aun es válido.
ALV por medio de funciones. Aun es válido seguir utilizandolos.
Field exit OK

25. ¿Son compatibles con el código actual?


Sí, pero no es recomendable utilizarlas. Excepto la sentencia LIKE y WITH HEADER LINE ya que no son compatibles con
POO

26. ¿Cuál es la transacción del code inspector?


SCI OK
5
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
27.. d o¿En qué transacción se crean los pedidos de venta/facturas?
C

C
w

w
m

m
w w
w

w
o

o
.c .d o .c
c ck
u -tr a c u -tr a c k

VA01. Crear sales orders OK


VF01. Crear Billing documents OK

28. ¿Conoces la transacción para crear un material?


MM01 OK

29. ¿Conoces la transacción para crear entregas de salida?


MB1A OK y VL01N ¿Cual es la diferencia entre una y otra?

30. ¿En qué transacción puedes ver los errores en tiempo de ejecución?
ST22 OK

31. Si por alguna falla de la red/computadora se interrumpió el acceso al sistema mientras estabas modificando un código y al
volver a loguearte te muestra un mensaje de error advirtiendo que el programa ya está siendo editado por tu usuario... ¿desde
qué transacción puedes suspender el bloqueo?
EWZ5 OK Pero esta es solo para desbloquear usuarios. La SM12 se utiliza para desbloquear un objeto que
aparentemete esta siendo aun editado por nuestro usuario o por algun otro usuario.

32. ¿Desde qué transacción puedes ver los usuarios actualmente logueados?
SM04 – Conectados con el mandante actual. OK
AL08 – Conectados en el sistema entero (útil cuando tenemos más de un servidor de aplicación). OK

33. ¿Qué quiere decir "ejecutar en background/proceso de fondo?


Significa que no habrá interacción con el proceso y que se ejecutará hasta que concluya, aún cuando hayamos cerrado
nuestra sesión se seguirá ejecutando. OK

34. ¿Cuántos tipos de módulos de funciones hay? 3


Ejecución normal. OK Normal
Auxiliar en remote function call OK RFC
De actualización asíncrona OK de Actualización (Asíncrono y Síncrono)

6
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
Notas independientes del cuestionario.
C

C
w

w
m

m
w w
w

w
o

o
.d o .c .d o .c
c u -tr a c k c u -tr a c k

SBWP –Crear mensajes de correo (Para esto debe configurarse previamente el SMTP)
SO_DOCUMENT_SEND_API1 Tal vez con esta función sería posible hacer el envío del mail.
---
SE14. Database utility
SE16. Data browser
--
Sapbc_data_generator –llenar las tablas de muestra de SAP.
Otras notas.
SOST. Para ver si generó algún objeto. Requerimiento de trasmisión. Cuando desarrollo una aplicación que envía mail.
So01. Bandeja de salida (correo usuario).
SE09. Gestión de transportes.
Al crear un objeto, nunca debo asignarle una orden de transporte que no sea mía, porque podría ejecutarse el
transporte cuando aún no tengo listo el código.
En el menú de utilidades hay forma de comparar dos versiones distintas (ya sea en el mismo ambiente o en
diferente ambiente -en este caso me preguntara el ID del sistema destino).

Nombre del paquete para mis objetos, por lo regular lo indica el líder técnico (si lo hay), la orden de transporte
también la tendría que indicar él. Debe existir un proyecto asociado en el que se gestiona todo eso.

Customizations. Las hace el funcional.


Workbench. Entorno de desarrollo que utiliza el consultor ABAP, pero es recomendable conocer la parte funcional,
porque si el funcional no tiene mucha experiencia, puede darse el caso de que pida algún cambio que se
puede hacer por customizations.

POO.
TYPE REF TO. Sentencia para declaración de objetos.

Transacciones que he utilizado en ABAP.


SE38. Reports / Module Pools.
Mientras estoy desarrollando, a los modules pools les debo asociar una transacción, en cambio en los
reports no es necesario asociarles una transacción. Ya en ambiente productivo, ambos deben tener
asociada su correspondiente transacción.
Los includes es el código que podré utilizar en cualquier parte del programa, se acostumbra la
nomenclatura _TOP, se acostumbre poner en el include todas las variables globales y uno o más
include _F0? para subrutinas.
Siempre que desarrolle un ALV ya debe de ser con POO. Es decir debo hacer uso de las clases que ya
existen para ese fin.

Existen dos tipos de programas de dialogo.


Report (Selection screen)
Module pools (Classical screens)

Cuando estoy editando un programa, puedo activar el Pretty printer, para que todas las palabras clave queden
en mayúsculas.
Control <> Comentar todo un bloque.

7
F -X C h a n ge F -X C h a n ge
PD PD

!
W

W
O

O
N

N
y

y
bu

bu
to

to
k

k
lic

lic
Control shift <>
C

C
w

w
m

m
w w
w

w
o

o
.d o .c .d o .c
c u -tr a c k c u -tr a c k

MVC.
Es un patrón de diseño. Modelo vista controlador. Revisar en qué consiste, pero basicamente
corresponde con la programación en 3 capas.
Capa persistencia. Tiene que ver con la base de datos.
----------------------------

Examen de abatwa.
A. Modulo en el que he trabajado. FI-CO
B. Principales tablas del módulo FI. BKPF (cabecero de documentos contables) y BSEG (segmento -detalle- de doctos
contables).
C. Qué procesos conozco del módulo de RH.
D. Para que sirven las transacciones. WE05 (Consulta de Idocs); BD87 (Reproceso de IDocs) y WE30 (desarrollo de
tipos de Idocs).
E. Resumen de mi experiencia en el modulo contable y de Cuentas por pagar.
F. Resumir en 1 min. la trayectoria laboral.
-----

Vous aimerez peut-être aussi