martes, 28 de abril de 2015

Descargar Código ABAP en PDF

Abrir en la transacción SE38 el programa deseado. Clic en botón Opciones en la esquina inferior derecha, en la siguiente imagen se puede ver claramente.


En la sección Keywords elegir lo siguiente (y hacer clic en Assign).


Ya solo tenemos que pulsar la combinación de teclas que hayamos elegido.

domingo, 30 de noviembre de 2014

Clase para pedir datos en Java

import java.io.IOException;


public class PedirDatos {
/* Funcion para leer caracteres*/
public static char leerCaracter(String frase){
char caracter;
caracter=leerCadena(frase).charAt(0);
return caracter;
}
  
/* Funcion para leer cadenas*/
public static String leerCadena(String frase){
String cadena="";
char caracter=(char)0;
int ascii = 0;
System.out.println(frase);
do{
cadena=cadena+caracter;
try {
ascii = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
caracter = (char) ascii;
}while(ascii!=13);
return cadena.trim();
}

/* Funcion para leer enteros*/
public static int leerEntero(String frase){
int entero=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
entero=Integer.parseInt(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un entero");
}
}while(!correcto);
return entero;

}

/* Funcion para leer decimales*/
public static double leerDecimal(String frase){
double decimal=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
decimal=Double.parseDouble(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un decimal");
}
}while(!correcto);
return decimal;

}

}

Número Vampiro en Java

public class Vampiro {

public static boolean verificaNum(int numero, int[] digitos) {
// verifica si esta en las posibles combinaciones
String numS = numero + "";
int ok = 0, numAc, len = numS.length();

for (int i = 0; i < len; i++) {
numAc = Integer.parseInt(numS.substring(i, i + 1));
for (int j = 0; j < digitos.length; j++) {
if (numAc == (digitos[j])) {
ok++;
break;
}
}
}
if (ok == len) {
return true;
}
return false;
}

public static boolean esVampiro(int n) {
String num = n + "";
int lon = num.length(), ini = 1;
int[] a = new int[lon]; // Array para los digitos

if (lon % 2 != 0) { // Si los digitos del numeros es impar no es vampiro
return false;
}

for (int i = 0; i < lon; i++) {
a[i] = Integer.parseInt(num.substring(i, i + 1));
}

for (int i = 1; i < lon / 2; i++) {
ini *= 10;
}

for (int i = ini; i < ini * 10; i++) {
for (int j = ini; j < ini * 10; j++) {
if (i * j == n && verificaNum(i, a) && verificaNum(j, a)) {
return true;
}
}
}
return false;
}

public static void main(String[] args) {
int nu;
nu = PedirDatos.leerEntero("Introduce un número de cuatro cifras: ");
System.out.print("El número "+nu);
if(esVampiro(nu)){
System.out.println(" es vampiro.");
return;
}
System.out.println(" no es vampiro.");

}
}

viernes, 11 de julio de 2014

Traducción al español de Interspire Email Marketer

Aquí os dejo una traducción realizada por mí para este software.

https://mega.co.nz/#!ocAlTTpR!yvZRuR9scBxI-YRIWJ6J-6tFoFKzoZbISkFpr1P3YLo

Piedra, Papel o Tijeras en JAVA

import java.util.Scanner;

public class ppt {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
String usu,cpu;
String[] opc={"piedra","papel","tijeras"};

        System.out.println("Elige:");
usu=teclado.next();
  int num = (int) Math.floor(Math.random()*(2-0+1)+0);  cpu = opc[num];
switch (usu) {
case "piedra":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. EMPATE");
break;
case "papel":
System.out.println("CPU elije PAPEL. Gana CPU");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. Ganas TU");
break;
}
       break;
   case "papel":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. Ganas TU");
break;
case "papel":
System.out.println("CPU elije PAPEL. EMPATE");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. Gana CPU");
break;
}
       break;
   case "tijeras":
switch (cpu){
case "piedra":
System.out.println("CPU elije PIEDRA. Gana CPU");
break;
case "papel":
System.out.println("CPU elije PAPEL. Ganas TU");
break;
case "tijeras":
System.out.println("CPU elije TIJERAS. EMPATE");
break;
}
       break;
   default:
       System.out.println("Incorrecto");
       break;
}
}
}

martes, 24 de junio de 2014

Script Perl Copias de Seguridad

#!/usr/bin/perl

# Ejecutar perl bk.pl ip_maquina cod_cliente cod_maquina tipo_copia [auto o manual] usuario_ftp pass_ftp

use DBI;
use Net::SFTP::Foreign;

#Datos de la conexión
$db="db_proyectint";
$host="datos.proyectint.org";
$port="3306";
$user="user_proyectint";
$pass="12Proyectint34*";
$connectionInfo="DBI:mysql:database=$db;$host:$port";

# Realizamos la conexión a la base de datos
$db = DBI->connect($connectionInfo,$user,$pass);

# Cogemos fecha desde MySQL
$qu_date="select sysdate()";
$sql_date = $db->prepare($qu_date);
$sql_date->execute();
$date = $sql_date->fetchrow_array();

# Inserto primeros datos de la copia
$query="insert into copias (cod_cliente,cod_maquina,fecha_ini,tipo_copia) values ('@ARGV[1]','@ARGV[2]','$date','@ARGV[3]')";
$sql = $db->prepare($query);
$sql->execute();

# Llamada al script bash SOLUCIONAR!!
`bash bk.sh @ARGV[0] @ARGV[2] @ARGV[1]`;
$n=0;
open (re,"/root/temp") or die "$!n";
while (<re>){
chomp;
@result[$n]=$_;
$n++;
}
close re;

# Actualizo datos de copia en BDD
if (@result[0] eq "OK"){
$up="update copias set fecha_fin = sysdate(), correcta= 'si', nombre_fichero = '@result[1]' where fecha_ini = '$date'";

# Subir a FTP el paquete
$sftp = Net::SFTP::Foreign->new("datos.proyectint.org",user => "@ARGV[4]", password => "@ARGV[5]") or die("No se pudo conectar al servidor: $!");
$sftp->put('/root/bk/'.@ARGV[1].'/'.@ARGV[2].'/'.@result[1]) or die "$!n";

# Elimino paquete
`rm /root/bk/@ARGV[1]/@ARGV[2]/@result[1]`;
print "Copia de seguridad realizada con exito\n";
}else{
$up="update copias set fecha_fin = sysdate(), correcta= 'no' where fecha_ini = '&date'";
print "Copia de seguridad no realizada\n";
}

$sql2 = $db->prepare($up);
$sql2->execute();
$sql_date->finish();

$sql2->finish();
$db->disconnect;

`rm /root/temp`;

Shell Script Copias de Seguridad

#! /bin/bash

# Ejecutar bash bk.sh ip_maquina cod_maquina cod_cliente

DATE=$(date "+%d%h%Y%H%M")
TO="/root/bk/$3/$2/rsync"
FROM="root@$1:/root/copias/$2/"

if test ! -d /root/bk/$3
then
mkdir /root/bk/$3
fi

if test ! -d /root/bk/$3/$2
then
mkdir /root/bk/$3/$2
fi

if test ! -d /root/bk/$3/$2/rsync
then
mkdir /root/bk/$3/$2/rsync
fi

if rsync --delete -avb $FROM $TO
then
cd /root/bk/$3/$2/rsync/
PAQ="BACKUP-$2-$DATE.tar"
tar cf ../$PAQ *
echo "OK" > /root/temp
echo $PAQ >> /root/temp
else
echo "no" > /root/temp
fi