Como realizar un Select con SUM en ABAP,Cómo

Anuncio
Como realizar un Select con SUM en
ABAP
En este post nos vamos a centrar en como realizar desde código ABAP un select
a una tabla de SAP usando SUM, este post está contenido en nuestro curso
programador – analista ABAP IV para SAP, el cual puedes consultar pinchando
aqui.
Algunas veces debemos hacer consultas a tablas para obtener la suma de campos
númericos, en especifico los referidos a campos monetarios y cantidades, pero
¿cómo realizamos dicha consulta? pues para explicarlo aplicaremos un ejemplo:
Al igual que con los comandos de SQL, vamos a realizar un SELECT con el
empleo del comando SUM, el cual permite sumar todos los valores del campo
indicado, siguiendo las condiciones puestas y guardándolo en una variable.
Como ejemplo tenemos lo siguiente:
SELECT SUM( hwbas ), SUM( hwste )
INTO (lv_hwbas, lv_hwste)
FROM BSET
WHERE bukrs = p_bukrs AND
gjahr = p_gjahr.
Podemos apreciar que en el ejemplo vamos a sumar 2 campos de la tabla BSET,
para lo cual se han colocado como filtros la sociedad y el año,
automáticamente el programa sumará los datos que cumplan con la consulta y
devolverá dichos valores en las 2 variables que se encuentran dentro de los
paréntesis (lv_hwbas, lv_hwste).
Si te ha gustado este articulo recuerda compartirlo para que llegue al mayor
número de interesados!!
Cómo utilizar Excel VBA para imprimir
Millones de propietarios de pequeñas empresas y emprendedores de todo el
mundo utilizan Microsoft Excel para ayudar con las tareas comunes de
contabilidad, previsión e inventario. Con las herramientas integradas de
Excel, es relativamente simple enviar una hoja de cálculo o un cuadernillo de
trabajo a alguien en un correo electrónico como archivo adjunto. Sin embargo,
hay muchas veces que nada supera una copia con la información. Por supuesto,
puedes usar la opción del menú “Archivo | Imprimir” en la barra de cinta para
crear versiones impresas de la hoja de cálculo. Sin embargo, mediante el uso
de Visual Basic para Aplicaciones o VBA, también puedes crear macros o
botones de comando para realizar diversas tareas de impresión en Excel mucho
más rápido y más eficientemente.
Activa la pestaña Programador
1. Inicia Microsoft Excel y abre el libro o plantilla en la que deseas
programar funciones de impresión con VBA. Haz clic en “Archivo” en la cinta
de Excel y luego en “Opciones”.
2. Localiza y haz clic en el encabezamiento “Personalizar cinta de opciones”
en el panel izquierdo de la ventana “Opciones de Excel”. Haz clic en la
casilla de verificación junto a “Programador” en la sección de Pestañas
principales bajo la etiqueta “Personalizar la cinta de opciones”.
3. Haz clic en el botón “Aceptar” para activar la pestaña “Programador” de la
cinta y cerrar la ventana “Opciones de Excel”. Después de hacerlo Excel
mostrará la pestaña “Programador” en la cinta de forma automática.
Crea un botón de impresión con VBA
1. Haz clic en la pestaña “Programador” de la cinta. Haz clic en el icono
“Insertar” de la flecha hacia abajo en la sección de “Controles” de la
pestaña “Programador”. Oprime el icono “Botón de control” bajo “Controles de
formulario”.
2. Haz clic en la celda de la hoja de cálculo en la que deseas colocar un
botón de impresión. Después de hacer clic selecciona una celda, la ventana
“Asignar macro” aparecerá automáticamente.
3. Ingresa “PrintCurrentSheet” o algo similar en el campo “Nombre de macro”.
No uses espacios en el nombre. Haz clic en botón “Nuevo”. La ventana del
editor de Visual Basic para Aplicaciones aparecerá y mostrará una nueva
ventana de código.
4. Coloca el cursor del ratón en la línea de espacio entre los valores
“PrintCurrentSheet Sub ()” y “End Sub”. Escribe el siguiente comando:
ActiveSheet.PrintOut
5. Haz clic en el icono de disquete en la barra de herramientas del editor de
VBA para guardar el código. Cierra la ventana del editor de VBA.
6. Haz clic con el botón derecho sobre el nuevo botón de comando y resalta el
valor de texto predeterminado “Botón 1”. Cambia el texto de la etiqueta del
botón a “Impresión rápida” u otro nombre descriptivo.
7. Haz clic en el botón nuevo de comando. Excel imprime la hoja de cálculo
activa en la impresora predeterminada de Windows sin mostrar el cuadro de
diálogo “Imprimir” normal.
Cómo depurar código Python con
PyScripter
En este post vamos a daros las claves para aprovechar el uso de PyScripter
como editor de código de Python para ArcGIS, tanto para escribir código como
para la detección y corrección de errores de programación.
Ventajas de usar PyScripter
Utiliza diferentes colores, indenta y comenta el código de modo
rápido, subraya una palabra determinada, busca y reemplaza, etc.
Es personalizable: colores, plantillas, fragmentos completos de
código, etc.
Tiene predicción de código fuente, que agiliza nuestro trabajo y evita
que cometamos errores de escritura.
Las ventanas del IDE y de depuración, entre las que destacamos la
ventana de Variables y la ventana Intérprete ayudan durante la
ejecución del script al seguimiento del código.
La utilización de un IDE como PyScripter facilita el trabajo y reduce la
posibilidad de introducir errores en nuestros programas. Aún así cometeremos
fallos, sobre todo al principio, que es cuando precisamente más nos van a
entorpecer.
¿Cómo reparar nuestros errores?
Un 50% del error se soluciona cuando descubrimos DONDE ESTÁ EL ERROR.
El otro 50% se soluciona cuando descubrimos POR QUÉ SE HA PRODUCIDO EL ERROR.
Respecto al primer punto, para localizar el error debemos aprender a DEPURAR
EL CÓDIGO. PyScripter cuenta con una barra de herramientas de depuración:
Depurar código: Opción 1 –> ejecutando línea por línea: usaremos esta opción
cuando creamos saber dónde está el error, para parar en ese punto y examinar
el comportamiento del programa, los valores que adoptan las variables, etc.
1.1
Situando el cursor en la línea del script en la que queremos
interrumpir la ejecución automática y pulsando la flecha azul “Ejecutar hasta
el cursor” o F4. A partir del punto de interrupción cada línea de código se
ejecutará cuando el usuario pulse el icono “Avanzar hasta la siguiente línea”
o F8, de este modo localizamos la sentencia que falla y los valores que el
programa está interpretando.
1.2
Fijando nuestros puntos de interruptor con el círculo rojo “Conmutar
punto de parada” o F5 sobre cada línea en la que queramos conmutar parada y
pulsando la flechita verde con bicho“Depurar” o F9.
Depurar código: Opción 2 –> ejecutando fragmentos de código: utilizaremos
esta opción cuando sabemos que el programa funciona antes de haber incluido
nuevas sentencias, y queremos comprobar el funcionamiento de las mismas sin
tener que ejecutar para ello el script completo.
Resaltando
las líneas que nos interesan y pulsando Ctl+F7, o con botón
derecho Source Code/Ejecutar Selección.
¿Cómo capturar los errores?
En cuanto a la segunda cuestión: porqué ha fallado nuestro programa, podemos
“capturar el error” y mostrarlo en la ventana Intérprete de PyScripter. Para
ello tendremos que utilizar la estructura try & except . Con esta estructura
el programa intenta (try) ejecutar todo el código que se encuentre indentado
dentro del bloque try:. Si se produce un fallo, el código se dirige al bloque
except: en el que se mostrará el mensaje de error generado.
¿Cuales son los errores más típicos y cómo se interpretan?
El siguiente listado muestra los errores más típicos y el mensaje de error
que muestra la ventana intérprete:
1.- Case Sensitive: Python diferencia las mayúsculas y minúsculas. Ojo con
darle un nombre a una variable y pretender usarla llamándola de otro modo.
El mensaje de error que se genera depende del la palabra en la que se
encuentre la confusión: si se trata del nombre de una capa o de una ruta, el
mensaje mostrado nos dirá que no existe dicha capa o que no se localiza:
“Input Features:
xxx.shp does not exist or is not supported”. Puede incluso
no generarse ningún error, pero no darnos la respuesta que queremos.
2.- Indentación: en
Python
cada bloque de código debe ir sangrado para que
el intérprete lo identifique y diferencie.
Los fallos de indentación detectados quedan marcados en rojo, además si
intentamos ejecutar el script se mostrará el mensaje “IndentationError:
expected an indented block”.
Ojo, puede que el código funcione, pero una frase mal indentada puede cambiar
el curso del programa y su resultado.
3.- Importación de módulos. Antes de trabajar con alguna herramienta de una
librería específica debemos importar esta librería. En nuestro caso, si
queremos trabajar con la ArcPy para ArcGIS debemos incluir al principio del
programa un “import ArcPy”
El mensaje de error que nos da en caso de no haber importado la Arcpy es
“name ‘arcpy’ is not defined”
4.-Símbolo de igualdad y símbolo de asignación de valor. Cuando Python quiere
darle un valor a una variable lo hace a través del símbolo “=”. Cuando
queremos comprobar si un valor es igual a otro utilizaremos el símbolo “==”.
El mensaje de error en una sentencia como “if coordX = 3500:” será
“SyntaxError:
invalid syntax”.
5.- Condiciones y bucles mal construidos. Además de la indentación del
código, estas construcciones requieren que la primera frase finalice con el
símbolo “:”.
El mensaje de error en una sentencia como “if coordX = =3500” será
igualmente “SyntaxError:
invalid syntax”.
La sentencia correcta es:
if coordX = =3500:
coordY = 47000
6.- Incorrecta definición de una ruta. En Python la contrabarra “\” forma
parte de sentencias clave como “\n” (nueva línea) o “\t” (tabulador). Una
ruta debe precederse de la letra “r” o sustituir el símbolo “\” por “\\” o
por “/”.
Ojo además con los acentos, los espacios en blanco y las mayúsculas
y minúsculas.
El mensaje de error puede ser si se trata de la ubicación de una capa
Features:
“Input
xxx.shp does not exist or is not supported”, o si se trata de la
identificación de un espacio de trabajo, en cuyo caso, puede tomar un valor
como nulo y por tanto no localizar los datos de ese workspace.
7.- Parámetros mal introducidos: en número o en orden. Centrándonos en el uso
de herramientas de ArcGIS, aunque también es un error típico de otro tipo de
funciones, debemos saber qué argumentos requiere cada herramienta, de qué
tipo son y en qué orden deben introducirse.
El mensaje de error que se genera en este caso es “Failed to execute.
Parameters are not valid.”
Si te ha gustado
nuestro post de hoy compártelo y ayúdanos a seguir, muchas gracias!!
Mini tutorial sobre SOAP. Simple
Object Access Protocol
En nuestro artículo de hoy desde AEPI (Asociacion Española de Programadores
Informáticos) os presentamos un pequeño tutorial sobre SOAP, este artículo
forma parte de nuestro curso de PHP avanzado y MYSQL
Es un protocolo que permite la comunicación entre aplicaciones a través de
mensajes por medio de Internet. Es independiente de la plataforma, y del
lenguaje. Esta basado en XML y es la base principal de los Web Services. Los
mensajes SOAP son documento XML propiamente dicho, pero esto lo veremos más
adelante cuando veamos un ejemplo de un mensaje SOAP.
Veamos como es la estructura básica del protocolo y la correspondiente
explicación:
<?xml version=”1.0″?>
<soap:Envelope xmlns:soap=”http://www.w3.org/2001/12/soap-envelope”
Soap:encodingStyle=”http://www.w3.org/2001/12/soap-encoding”>
<soap:Header>
…
</soap:Header>
<soap:Body>
…
<soap:Fault>
…
</soap:Fault>
</soap:Body>
</soap:Envelope>
Explicación del código anterior:
<?xml version=”1.0″?>
Como podemos ver en esta linea SOAP es un documento XML, y como tal, debe
comenzar con el tag <?xml….?> y la versión correspondiente.
<soap:Envelope
Aquí se indica que comienza el envelope (sobre) del mensaje
xmlns:soap = “http://www.w3.org/2001/12/soap-envelope”
Un mensaje SOAP debe contener siempre un elemento envelope asociado con el
namespace (espacio de
nombres)http://www.w3.org/2001/12/soap-envelope Soap:encodingStyle=”http://ww
w.w3.org/2001/12/soap-encoding”>
En esta línea lo que se hace es indicar donde se encuentran definidos los
tipos de datos utilizados en el documento.
<soap:Header>
Esta línea indica el comienzo del Header (encabezado). En esta sección se
incluye información específica del mensaje, como puede ser la autenticación.
</soap:Header>
Como todo documento XML los tags que son abiertos deben ser cerrados, esta
línea indica la finalización del Header(encabezado).
<soap:Body>
Aquí comienza el cuerpo del mensaje, en esta sección se incorpora toda la
información necesaria para el nodo final.
Por ejemplo, los parámetros para la ejecución, o la respuesta a una petición.
<soap:Fault>
Cualquier tipo de fallo que se produzca será notificado en esta sección. La
cual esta contenida dentro del cuerpo del mensaje.
</soap:Fault>
Cierre de la sección Fault.
</soap:Body>
Indica el final del cuerpo del mensaje.
</soap:Envelope>
Fin del mensaje SOAP.
Como diría aquel eso es todo amigos, si te ha gustado este artículo
compártelo por favor y recuerda seguir leyéndonos!!
Como usar una base de datos MySQL
desde Android
Si por alguna razón necesitamos conectarnos a un servidor MySQL desde
nuestra aplicación Android, lo más aconsejable y seguro es utilizar un
archivo PHP alojado en el servidor en cuestión que acceda a la base de datos
y devuelva la información a la aplicación, por ejemplo en JSON u otro formato
similar.
Si no podemos hacer esto, tenemos la opción de utilizar un driver JDBC, como
hariamos en una aplicación java. Para ello seguiremos los siguientes pasos:
Descargamos el driver desde
aquí: http://dev.mysql.com/downloads/connector/j/3.0.html
Creamos en nuestro proyecto una carpeta llamada “libs”.
Descomprimimos el archivo indicado y lo copiamos en la carpeta libs.
Añadimos el jar al build Path, para ello:
Clic derecho en el proyecto >
Build Path >Configure Build
Path
Pestaña Libraries >
Add JAR
Busca la carpeta libs y selecciona el archivo Jar.
Una vez está el driver listo, pasamos a la parte de programación. Como
sabemos, Android obliga a hacer las operaciones de acceso a red en un hilo
independiente, por tanto debemos elegir una de las formas habituales de crear
un nuevo hilo. Por ejemplo, con un AsynkTask. En ese caso añadiríamos este
código al método doInBackground.
private static final String url = “jdbc:mysql://{URL_SERVER}/{BASE_DATOS}”;
private static final String user = “usuario”;
private static final String password = “contraseña”;
int count = 0;
try {
//con esto nos aseguramos de que se crean los recursos estaticos necesarios
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
Connection con = DriverManager.getConnection(url, user, password);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(“QUERY A EJECUTAR”);
while (rs.next()) {
publishProgress(++count);
// Terminar lo antes posible si se ha llamadao al cancel() del asynctask
if (isCancelled()) {
break;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
Espero que os sea de utilidad este post, si es así compartid por favor y nos
vemos en el próximo.
Descargar