domingo, 25 de enero de 2015

Número primo ABAP

*&---------------------------------------------------------------------*
" Numero primo
*&---------------------------------------------------------------------*

REPORT  ZPROGR_02.

PARAMETERSN1 TYPE I.

DATAI1 TYPE VALUE 1,
      B TYPE I,
      A TYPE I.

WHILE I1 <= N1 ).
 B N1 MOD I1.
IF B  ).
A + 1.
ENDIF.
I1 I1 + 1.
ENDWHILE.

IF A <2.
WRITE 'SI ES PRIMO'.
ELSE.
WRITE 'NO ES PRIMO'.
ENDIF.

Factorial de un número ABAP


*&---------------------------------------------------------------------*
*& Report  ZPROGR_01
*&
*&---------------------------------------------------------------------*
*&
"Factorial de un numero
*&---------------------------------------------------------------------*

REPORT  ZPROGR_01.

DATAN1 TYPE I,
      N3 TYPE I.

DATAAUX TYPE I.

N1 1.

SELECTION-SCREENBEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.
  PARAMETERSN2 TYPE I.
SELECTION-SCREENEND OF BLOCK B01.

N3 N2.


WHILE N3 > 1.

    N1 N3 * N3 * N1.

    N3 N3 2.
ENDWHILE.


WRITE'El factorial de :  ' N2 .
WRITE:/ N1.

Convertir números a letras ABAP



REPORT  Z_NUM_LETRA.

DATA:  monto_en_letras TYPE spell,
       texto type string.

PARAMETERSmonto TYPE netwr.

 "Funcion ABAP para convertir numeros a letras:
 CALL FUNCTION 'SPELL_AMOUNT'
   EXPORTING
     amount   monto "Importe (valor) a convertir
     currency 'X'
     filler   ' '
     language sy-langu
   IMPORTING
     in_words monto_en_letras"Cantidad o importe en letras

 "Ejemplo de como leer el importe en letras
 concatenate monto_en_letras-word 'con'
             monto_en_letras-decimal(2)" 'decimales'
             into texto separated by space.

 WRITE texto.







¿Cómo se crea un programa en SAP?


Antes de empezar es importante saber que todos los programas a crear comienzan siempre con Y ó Z ya que con las demás letras son los programas estándar.

Se puede crear programas a través de 2 transacciones:

1 se38 -> Crear:


Escribimos un título cualquiera, tipo mayormente trabajo con programa ejecutable y grabar:


Nos preguntará en cuál paquete vamos a crear el programa, en este caso click en objeto local lo cual lo creará como un objeto interno del sistema:

Éste es el editor el cual comenzaremos a escribir nuestro programa:

2 De la misma manera en la transacción se80, podemos crear un programa directamente o hacerlo a través de nuestro paquete, en este caso crearé un paquete y el programa lo guardaré en el paquete creado:

En la lista desplegable escogemos paquete, escribimos el nombre del paquete y enter, nos pedirá crear el objeto:


Agregamos una descripción y crear:



Yo personalmente lo hago en la transacción se80..

FIN

Cambiar imagen logo SAP

Imagen incial:




Vamos a la transacción smw0  -> Búsqueda - > Ejecutar




Click en F5 (Crear), importar para seleccionar la ruta de la imagen y guardar:

Vamos a la transacción sm30, modificamos la tabla/vista SSM_CUST:




Modificamos el campo start_image por el objeto creado anteriormente y RESIZE_IMAGE en yes si queremos que la imagen se adapte a la pantalla y no para que sea en tamaño original:


Guardamos y entramos de vuelta:





lunes, 19 de enero de 2015

Agregar campos a la transacción ME21N ME22N ME23N





Sistemas - status y copiamos el nombre del programa:
T-se38 copiamos el nombre del programa, marcamos atributos y luego click en visulalizar:

T-smod para buscar el exit deseado, utilidades y buscar:



El exit  MM06E005 es el deseado:



T-cmod para crear un proyecto:



En asignación ampliación y colocar el nombre del exit seleccionado y enter.

Para usar campos adicionales necesitamos definir estos campos en las siguientes estructuras basado en el requerimiento:

CI_EKKODB -> Cabecera

CI_EKPODB -> Posición






El guardado de los campos en las estructuras se va a demorar un poco, ya que las tablas ekpo y ekko se están actualizando.

El siguiente paso es habilitar los screen dependiendo de los requerimientos:

SAPMM06E     0101 CUSTSCR1 SAPLXM06    0101 --> Cabecera


EKKO_CI-PROYECTO -> Nombre campo proyecto
EKKO_CI-PAGA -> Nombre campo paga

SAPMM06E       0111 CUSTSCR1 SAPLXM06        0111 --> Posición

EKPO_CI-CODIGO -> Nombre campo codigo
EKPO_CI-NOMBRE -> Nombre campo nombre
EKPO_CI-DNI -> Nombre campo DNI

Para pasar los datos datos tenemos que habiliar los function exit basados en el requerimiento:

 1 <b>EXIT_SAPMM06E_006</b> - Export Data to Customer Subscreen for Purchasing Document Header (PBO)

2<b>EXIT_SAPMM06E_008</b> - Import Data from Customer Subscreen for Header

<b>-> Item Screens :</b>

3<b>EXIT_SAPMM06E_016</b> - Export Data to Customer Subscreen for Item (PBO)

4<b>EXIT_SAPMM06E_018</b> - Import Data from Customer Subscreen for Item

Para guardar los datos en las tablas necesitamos habilitar EXIT_SAPMM06E_008 - "Import Data from Customer Subscreen for Purchasing Document Header" donde tu mueves los datos desde screenfileds a los campos de la estructura ( E_CI_EKKO) y EXIT_SAPMM06E_018 - "Import Data from Customer Subscreen for Purchasing Document Header" donde tu mueves lo datos desde screenfileds a los campos de la estructura ( E_CI_EKPO).

En EXIT_SAPMM06E_008 click en the include ZXM06U37 y poner el código :

E_CI_EKKO-PROYECTO = EKKO_CI-PROYECTO .
E_CI_EKKO-PAGA = EKKO_CI-PAGA .

En EXIT_SAPMM06E_018 click en the include ZXM06U40 y poner el código :

E_CI_EKPO-DNI = EKPO_CI-DNI .
E_CI_EKPO-CODIGO = EKPO_CI-CODIGO .
E_CI_EKPO-NOMBRE = EKPO_CI-NOMBRE .

Similarmente para leer los datos tenemos que habilitar EXIT_SAPMM06E_006 y EXIT_SAPMM06E_016.

En EXIT_SAPMM06E_016 click en the include ZXM06U36 y poner el código :

EKKO_CI-PROYECTO = I_CI_EKKO-PROYECTO .
EKKO_CI-PAGA = I_CI_EKKO-PAGA   .

En EXIT_SAPMM06E_006 click en the include ZXM06U41 y poner el código :

EKPO_CI-NOMBRE = I_CI_EKPO-NOMBRE.
EKPO_CI-DNI = I_CI_EKPO-DNI .
EKPO_CI-CODIGO = I_CI_EKPO-CODIGO .

Guardamos y activamos, nos debe quedar así:


Vamos a t-me22n, podemos que nos aparecen los campos que ingresamos en los screens:

Guardamos, para verificar que se guardaron los datos vamos a las tablas ekko y ekpo:


FIN..