Professional Documents
Culture Documents
PW : cursoits
//metcharren
//mi PW
/ose38
//crea otro modo ya con la transaccion especificada
/nse11
//en la misma ventana abre otra transaccion ( equivalente a volver al menu principal e
ingresar a la transaccion se11)
sm35 = Batch Input.
al11 = muestra los directorios propios de SAP.
TRANSACCIONES
se38 = transaccion para crear/modificar/etc un programa.
se37 = buscar y ejecutar funciones ( standar y Z ).
se11 = transaccion para ver las tablas de base de datos.
se16 = ver los datos de las tablas.
se93 = transaccion que crea o modifica transacciones.
se71 = la vamos a odiar (sirve para hacer formularios).
se24 = ver clases de objetos.
se39 = se pueden abrir 2 programas al mismo tiempo para compararlos.
ACCESOS DIRECTOS POR TECLADO
F8 = ejecutar
F7 = ver
F12 = volver
ABAP
C caracteres.
N caracteres que se pueden operar.
String
I int
D fecha
Instrucciones:
-Como declarar datos:
DATA: <variable> TYPE <tipo>,
<variable> LIKE <referencia>
-Crear tipos propios de datos:
TYPE: <tipo> TYPE <tipo>
TYPE: begin of ty_reg,
Sentencia SELECT
*Select single (devuelve 1 solo registro)
*Select
*Select
=
select+loop
endselect
=
-Como llenar una tabla en ABAP
Select A
B
from
into table
where
C
tabla1
t_tabla
A = 'pepe'.
Select A
B
from
into table
where
C
tabla1
t_tabla
A like 'p%'.
B
C
tabla1
w_reg
A = 'pepe'.
select A
B
C
from tabla1
where A = 'pepe'.
------------- sentencias
------endselect.
Select
SQL
Definicion: Conjunto de sentencias standar para interactuar con una BD.
Base de Datos:
-Datos organizados en tablas.
-Los datos dentro de las tablas se diferencian por campos claves que NO se pueden repetir.
-Concepto Clave Primaria y Clave Primaria Compuesta.
-Recordar ejemplo tablas alumnos.
Comandos de SQL:
-INSERT
-UPDATE (no se pueden moficiar campos claves, en todo caso borrar el registro y volver a
crearlo).
-DELETE (sirve para borrar registros enteros, no campos).
-SELECT (trae datos de la tabla).
Sentencias SQL:
Lo que esta entre corchetes es OPCIONAL
nombre_tabla = MARA
-INSERT INTO <MARA> VALUES
ESTRUCTURA DE UN PROGRAMA
DATOS
(DATA/TYPE/CONSTANTS)
----------SELECTION SCREEN. ( diseo de la pantalla del programa)
----------EVENTOS (codigos que se ejecutan si pasa algo en la pantalla)
START-OF-SELECTION
-----(todo codigo que traiga informacion desde la BD)
-----END-OF-SELECTION
-----(toda informacion que no necesite datos de la BD)
-----FORMS
-----(serian las subrutinas del C++)
------SELECTION SCREEN:
Parameters (variables que se utilizan en la pantalla inicial)
PARAMETER p_param1(nombre variable) LIKE MARA-MATNR(MATNR =
campo de una tabla)
PARAMETERS: p_param1 TYPE I,
p_param2 TYPE C.
-SELECT OPCION:
SELECT-OPTIONS s_sel1 FOR MARA-MATNR
s_sel1
SIGN
OPTION
LOW
HIGH
I (include)
BW (betwen)
OOOO1
OOO20
E (exclude)
BW (betwen)
OOO17
OOO19
I (include)
EQ (equal)
OOO10
E (exclude)
EQ (equal)
OOO15
2- Objetivo:
INTO w_nombre
WHERE KUNNR = p_num.
END-OF-SELECTION.
uline.
WRITE:/ text-002, w_nombre.
uline.
WRITE:/ text-001 ,p_num.
Uline.
3- Objetivo:
*END DATA
*SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK blocke.
SELECT-OPTIONS s_kunnr FOR KNA1-KUNNR.
SELECTION-SCREEN end of block blocke.
*END SELECTION SCREEN
IF NOT s_kunnr[] IS INITIAL.
ENDIF.
LOOP AT t_nombres.
WRITE:/ t_nombres-nombre, t_nombres-numero.
Total = total + 1.
ENDLOOP.
WRITE:/'|', text-001,'|', total,'|'.
4- Objetivo:
CODIGO FUENTE 4
REPORT zetcharren02.
TABLES: kna1.
DATA: BEGIN OF t_nombres OCCURS 0,
nombre LIKE kna1-name1,
numero LIKE kna1-kunnr,
END OF t_nombres,
total TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK blocke.
PARAMETERS: p_rad1 RADIOBUTTON GROUP g_1,
p_rad2 RADIOBUTTON GROUP g_1.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN END OF BLOCK blocke.
START-OF-SELECTION.
IF NOT s_kunnr[] IS INITIAL.
SELECT name1 kunnr
FROM kna1
INTO TABLE t_nombres
WHERE kunnr IN s_kunnr.
ENDIF.
END-OF-SELECTION.
IF p_rad1 = 'X'.
LOOP AT t_nombres.
WRITE:/ t_nombres-nombre, t_nombres-numero.
ENDLOOP.
ELSE.
LOOP AT t_nombres.
total = total + 1.
ENDLOOP.
WRITE:/'|', text-001,'|', total,'|'.
ENDIF.
5- Objetivo:
6- Objetivo:
total TYPE i,
BEGIN OF t_direcciones OCCURS 0,
calle LIKE adrc-addrnumber,
nombrecalle LIKE adrc-street,
numcalle LIKE adrc-house_num1,
END OF t_direcciones.
***************************************
SELECTION-SCREEN BEGIN OF BLOCK blocke.
PARAMETERS: p_rad1 RADIOBUTTON GROUP g_1,
p_rad2 RADIOBUTTON GROUP g_1,
p_check AS CHECKBOX.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
SELECT-OPTIONS s_calle FOR adrc-street.
SELECTION-SCREEN END OF BLOCK blocke.
***************************************
START-OF-SELECTION.
IF NOT s_kunnr[] IS INITIAL.
SELECT name1 kunnr adrnr
FROM kna1
INTO TABLE t_nombres
WHERE kunnr IN s_kunnr.
ENDIF.
IF NOT t_nombres[] IS INITIAL AND NOT s_calle[] IS INITIAL.
SELECT addrnumber street house_num1
FROM adrc
INTO TABLE t_direcciones
FOR ALL ENTRIES IN t_nombres
WHERE addrnumber = t_nombres-calle AND street IN s_calle.
ENDIF.
END-OF-SELECTION.
***************************************
IF p_rad1 = 'X'.
LOOP AT t_nombres.
READ TABLE t_direcciones WITH KEY calle = t_nombres-calle.
IF sy-subrc = 0.
IF p_check = 'X' AND NOT t_direcciones-nombrecalle = ''.
WRITE:/ t_nombres-nombre, t_nombres-numero, t_direcciones-nombrecalle,'N', t_direcciones-numcalle.
ELSE.
IF NOT p_check = 'X'.
WRITE:/ t_nombres-nombre, t_nombres-numero, t_direcciones-nombrecalle,'N', t_direcciones-numcalle.
ENDIF.
ENDIF.
ELSE.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT t_nombres.
total = total + 1.
ENDLOOP.
WRITE:/'|', text-001,'|', total,'|'.
ENDIF.
"f_seleccionar
*&--------------------------------------------------------------------*
*&
Form f_mostrar
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM f_mostrar.
LOOP AT t_nombres.
READ TABLE t_direcciones WITH KEY calle = t_nombres-calle.
IF sy-subrc = 0.
IF p_check = 'X' AND NOT t_direcciones-nombrecalle = ''.
WRITE:/ t_nombres-nombre, t_nombres-numero, t_direcciones-nombrecalle,'N', t_direcciones-numcalle.
ELSE.
IF NOT p_check = 'X'.
WRITE:/ t_nombres-nombre, t_nombres-numero, t_direcciones-nombrecalle,'N', t_direcciones-numcalle.
ENDIF.
ENDIF.
ELSE.
ENDIF.
ENDLOOP.
ENDFORM.
"f_mostrar
*&--------------------------------------------------------------------*
*&
Form f_mostrar_cantidad_clientes
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->TOTAL
text
*---------------------------------------------------------------------*
FORM f_mostrar_cantidad_clientes CHANGING total TYPE i.
LOOP AT t_nombres.
total = total + 1.
ENDLOOP.
ENDFORM.
"f_mostrar_cantidad_clientes
DEBUGGER
F5 = Ejecutar instruccion por instruccion.
F6 = Ejecutar 1 blocke.
F7 = Sale de la Subrutina.
F8 = Ejecutar normal o hasta el siguiente Break Point.
"f_traer_fecha
*&--------------------------------------------------------------------*
*&
Form f_llenar_t_cantidades
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM f_llenar_t_cantidades.
*LLENO TABLA DE CANTIDADES
SELECT zmeng
FROM vbap
INTO TABLE t_cantidad
WHERE vbeln = doc.
*FIN LLENO TABLA DE CANTIDADES
ENDFORM.
"f_llenar_t_cantidades
*&--------------------------------------------------------------------*
*&
Form f_sumar_total
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->TOTAL
text
*---------------------------------------------------------------------*
FORM f_sumar_total CHANGING total TYPE i.
*SUMO TOTAL
LOOP AT t_cantidad.
total = total + t_cantidad-cantidad.
ENDLOOP.
*FIN SUMO TOTAL
ENDFORM.
"f_sumar_total
*&--------------------------------------------------------------------*
*&
Form f_mostrar
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM f_mostrar.
WRITE:/ 'N Pedido: ', doc.
WRITE:/ 'Fecha: ', fecha.
WRITE:/ 'Total Unidades: ', total.
ENDFORM.
"f_mostrar
"f_traer_fecha
*&--------------------------------------------------------------------*
*&
Form f_llenar_t_cantidades
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM f_llenar_t_cantidad.
*LLENO TABLA DE CANTIDADES
SELECT vbeln zmeng
FROM vbap
INTO TABLE t_cantidad
WHERE vbeln IN doc.
*FIN LLENO TABLA DE CANTIDADES
ENDFORM.
"f_llenar_t_cantidades
*&--------------------------------------------------------------------*
*&
Form f_sumar_total
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->TOTAL
text
*---------------------------------------------------------------------*
FORM f_sumar_total CHANGING total TYPE i.
*SUMO TOTAL
LOOP AT t_cantidad WHERE documento = t_fechas-documento.
total = total + t_cantidad-cantidad.
ENDLOOP.
*FIN SUMO TOTAL
ENDFORM.
"f_sumar_total
*&--------------------------------------------------------------------*
*&
Form f_mostrar
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM f_mostrar.
LOOP AT t_final.
CONCATENATE t_final-fecha+6(2) t_final-fecha+4(2) t_final-fecha(4)
INTO fecha
SEPARATED BY '/'.
WRITE:/ 'N Pedido: ', t_final-documento.
WRITE:/ 'Fecha: ', fecha.
WRITE:/ 'Total Unidades: ', t_final-total.
ULINE.
ENDLOOP.
ENDFORM.
"f_mostrar
011;PEPE;30111111
012;HECTOR;222222
SPLIT cadena AT ';'
INTO var1
var2
var3.