viernes, 26 de febrero de 2016

Agregar una imagen en un SapScript

Recientemente visité un cliente que tiene SAP hace bastante tiempo y estaba uno de esos usuarios con poder ABAPistico y me preguntaba como cambiar una imagen a un formulario que resultaba ser un SapScript.

Tuve que sacar del baúl de los recuerdos en mi cabeza para poder darle una breve orientación.

Si estas leyendo esta entrada y estas en la misma situación acá te dejo un breve instructivo:


1 ) Generar una imagen con extensión TIF o BMP.
2 ) Para agregar la imagen se debe ingresar a la transacción SE78 y hacer doble click en "BMAP imágenes gráfico en tramas". 

image
Vamos al menú Grafico –> Import 
image
Y a continuación ingresamos nuestra imagen:
image
Luego de agregarla aparece la siguiente pantalla: 
image

3 ) Sólo nos falta agregar nuestra imagen en el formularioPara eso entramos en la ventana donde queremos que aparezca y clickeamos en 'Incluir'-> Funcion Grafica 
image

Finalmente buscamos y seleccionamos la imagen que agregamos en el punto anterior
 image

Y luego chequeamos que tengamos agregada la siguiente línea de código en la ventana:
/: BITMAP Z_IMAGEN OBJECT GRAPHICS ID BMON LANGUAGE ES
Esta línea va a variar en el nombre de la imagen que hayamos ingresado (en este ejemplo Z_IMAGEN). Y según el formato de la imagenpuede decir en ID: blanco/negro o color.

jueves, 25 de febrero de 2016

Creación y Modificacion de Acreedores y Deudores

Para los que actualmente están realizando un programa de Creación y Modificación de los Datos Maestros de Deudores y Acreedores les dejo unas clases que les van a ayudar con este tema. Aunque es un poco más complicada de implementar les garantizo que es mas estable que un Batch Input o una Función.

Para la creación de Deudor:

cmd_ei_api=>maintain_bapi(
 exporting
*  iv_test_run              = 'X'
     iv_collect_messages      = 'X'
 is_master_data           = ls_masterdata
 importing
 es_master_data_correct   = ls_master_data_correct
 es_message_correct       = ls_message_correct
 es_master_data_defective = ls_master_data_defective
 es_message_defective     = ls_message_defective
 ).
* to start booking

 call function 'BAPI_TRANSACTION_COMMIT' .

Con esta estructura le dicen si es crear o modificar
ls_customers-header-object_task = 'U'. Para Update
ls_customers-header-object_task = 'I'. Para Crear

Para la creación de Acreedor:

    CALL METHOD vmd_ei_api=>maintain_bapi
      EXPORTING
        is_master_data                    = gs_vmds_extern
      IMPORTING
        es_master_data_correct     = gs_vmds_succ
        es_message_correct           = gs_succ_messages
        es_master_data_defective  = gs_vmds_error
        es_message_defective        = gs_err_messages.

Con esta estructura le indican al método si es para crear o modificar
 ls_purch_func-task = 'I'. Para Crear
 ls_purch_func-task = 'U'. Para Update.

Les dejo 2 links que los puede ayudar a implementarlos.

http://scn.sap.com/docs/DOC-42312
http://www.sapwiki.cl/wiki/index.php?title=SAP_BAPI_cmd_ei_api_maintain_bapi

Espero le sea de utilidad

Nueva Diagrama de la Plataforma SAP

Recientemente tuve la oportunidad de ir a un curso de C4Analytics y nos mostraban el nuevo diagrama de la arquitectura de SAP, es un cambio total del diagrama al que estamos acostumbrados aquellos que tenemos bastante tiempo en SAP que era el R3 con los modulos alrededor.

Acá se los dejo para que le den un vistazo.


viernes, 16 de mayo de 2014

Rutina para cambiar el Formato de Fecha

Usando la Sentencia Write
data: gd_date(10).
"field to store output date
* Converts date from 20020901 to 01.09.2002
write sy-datum to gd_date dd/mm/yyyy.
* Converts date from 20020901 to 2002/09/01
write sy-datum to gd_date yyyy/mm/dd.

* Converts date from 20020901 to 01.09.02
write sy-datum to gd_date dd/mm/yy.
 
Usando Técnicas de Manipulación de Datos
data: gd_date(8). "field to store output date
* Converts date from 20010901 to 01092001
gd_date(2) = sy-datum+6(2).
gd_date+2(2) = sy-datum+4(2).
gd_date+4(4) = sy-datum(4).

Usando Modulos de Funciones
data: gd_date(8). "field to store output date
* Converts date from 20010901 to 01SEP2001
gd_date = sy-datum.
CALL FUNCTION 'CONVERSION_EXIT_IDATE_OUTPUT'
EXPORTING
input = gd_date
IMPORTING
OUTPUT = gd_date.

jueves, 24 de febrero de 2011

Rutina que permite Imprimir una tabla Interna, cuando se ejecuta un programa

Lo que se muestra acá, también se usa poco, pero si alguna vez en lugar de generar un archivo TXT, este se quiere mandar directo a impresión acá te muestro una rutina sencilla para lograrlo.

Cuando ya tengas lista la Tabla Interna a Imprimir (en este ejemplo la tabla es TI_IMPR), se hace lo siguiente:

FORM enviar_spool.

DATA: w_flag TYPE i VALUE 0,
         w_view TYPE string.

PERFORM new-page USING 'LOG - IMPRESION'.

LOOP AT ti_impr.

***En este punto se empieza a imprimir la data como si se estuviera haciendo directamente en pantalla (modo report list).***
ENDLOOP.

NEW-PAGE PRINT OFF.

ENDFORM. "ENVIAR_SPOOL


FORM new-page USING w_titulo.

NEW-PAGE PRINT ON
LIST NAME w_titulo
DESTINATION 'LOCL'
COPIES '001'
COVER TEXT 'Titulo'
IMMEDIATELY ' '
KEEP IN SPOOL 'X'
NEW LIST IDENTIFICATION 'X'
LAYOUT 'X_90_120'
LINE-SIZE '120'
LINE-COUNT '90'
DATASET EXPIRATION '5'
NEW-SECTION
NO DIALOG.

ENDFORM. "NEW-PAGE

Aqui lo importante es la rutina FORM NEW-PAGE que es lo que hace que se la tabla se envíe directamente al SPOOL y claro hay que indicarle el nombre del la impresora, si queda en el SPOOL o no, el número de copias, Etc.

martes, 22 de febrero de 2011

Editar un campo en una tabla sin permisos.

A continuación se va a explicar como modifca cualquier registro de una tabla, mientras estos no sean campos claves y sin necesidad de tener permisos especiales. El usuario se hace responsable de lo que modifique en dicha tabla.
En la transacción SE16 , se ingresa a la tabla que se quiera y luego se busca el  el registro que se quiere modificar. Una vez que se visualice el registro, en el barra de comandos se coloca /h y da enter, luego se hace doble click sobre el registro.
 

Se avanza el  debugg hasta llegar al Form SET_STATUS_VAL. Allí se verá un IF para la variable CODE. Antes de entrar al ciclo IF, se debe modificar el valor a la variable CODE de SHOW a EDIT




Una vez hecho esto se termina el debugg se hacen los cambios en la pantalla que se muestra y luega se guardan los cambios pulsando el Botón destinado para esta función.

Crear Variante de Visualización en Reportes.

En el programa BALVSD01, conseguiras un ejemplo para colocar como parámetros de entrada en tu reporte una variante de visualización de un ALV.

Como Parámetro de Entrada debes declarar un parametro del tipo DISVARIANT-VARIANT.

En el AT SELECTION-SCREEN ON VALUE-REQUEST FOR.

La subrutina debe contener la función de matchcode que lee las variantes asociadas al ALV.

Una vez seleccionado la variante de visualización, se debe especificar la  al ALV cual es la variante a mostrar. Para ello en el AT SELECTION-SCREEN, se declara la siguiente función:

Y en el ALV, no te olvides pasarle como parametros de EXPORTING la variante seleccionada.



Estas cosas se hacen pocos, pero hay ciertos usuarios que lo solicitan al igual que ciertos funcionales, es bueno tenerlo a la manos para esos "De vez en cuando".