martes, 6 de marzo de 2012

CODIGOS DE COLORES, ICONOS Y SIMBOLOS

Hay unos programillas en el estándar que nos pueden servir de ayuda a la hora de buscar un código de color o un símbolo especial para un report. Aquí los tenéis:

  • SHOWCOLO: Muestra la lista de colores de ABAP.
  • SHOWICON: Muestra los iconos disponibles con varias opciones de visualización.
  • SHOWLINE: Muestra ejemplos de cómo dibujar líneas, incluyendo esquinas, intersecciones, etc.
  • SHOWLISY: Lista de campos del sistema para reports.
  • SHOWSYMB: Muestra los símbolos especiales que podemos utilizar en reports.

Y colorín colorado enta entrada se ha acabado.

jueves, 1 de diciembre de 2011

Ahora lo entiendo TODO!

Muchas veces me he preguntado como puede ser que tantas veces hacer lo más sencillo en SAP sea tan complicado, se tengan que seguir tantos pasos y muchas veces no sepas porqué las cosas se han de hacer con "logica inversa"...
Pues bien, hoy repasando un manual de OOP, he visto la luz:

"friendship is one-sided:
A class granting friendship is not automatically a friend of its friends. If a class
granting friendship wants to access the non-public components of a friend, this
friend must also explicitly grant friendship to it."

O sea, Yo, como programador de SAP, soy amigo de SAP, pero SAP, pasa de mi cara olimpicamente...

¿Alguien sabe donde està el pincho en la SPRO para que SAP sepa que soy su amigo?
Sniff...

martes, 26 de julio de 2011

Misterios de SAP

Hola de nuevo,
Hoy me he encontrado con una de esas chorradas que tiene SAP un misterio de SAP...
Creando una dynpro a uno de los campos de texto le he puesto el texto de salida: "Real", y al visualizar la dynpro, he visto que los otros campos salían con la fuente arial y este con la fuente courier...
Después de varias pruebas he acabado por probar de escribir "Real_" (osease, con un espacio detrás) y ya me salía bien...
Misterio misterioso!
Alguien sabe de más "palabras reservadas" como por ejemplo "Real" que sea mejor no usar en dynpros para evitarte quejas de los keyusers?

Saludos!

martes, 19 de julio de 2011

Saltarte la falta de permisos en SE16n

en la ultima versión de SAP, aunque tengas los permisos en tipo full como desarollador la SE16n
te la encuentras capada y no puedes meter la zarpa actualizar las tablas de ninguna manera.
La manera de saltarte conseguir estos permisos es la siguiente:
Vamos a la SE16n.
escogemos nuestra tabla y ponemos todos los parametros por los que queremos filtrar.
Le metemos el debuger /h.
Le metemos el &sap_edit.
F8
Se nos abre el debuger.
Vamos a ->Breakpoints -> Crear Breakpoint en -> sentencia.
Le ponemos un breakpoint en "EXIT". aceptamos y le damos al F8
nos saltará el breakpoint y veremos el debuger.
Unas líneas más arriba veremos una senténcia que pone:
if sy-subrc = 0 and not ld_pos is initial.
select single se16n_sap_edit from se16n_edit
into ld_sap_edit
where pos = ld_pos.
if sy-subrc = 0 and ld_sap_edit <> true.
en la primera linea de este código, le hemos de poner un breakpoint manual y darle a gravar.
le damos al f8 y salimos sin poder editar a la pantalla de SE16n.
volvemos a poner el /h y el &SAP_EDIT y volvemos a dar a f8.
cargamos las variables sy-subrc o ld_pos para modificarlas.
en ld_pos (por ejemplo) le ponemos: '0001'.
le damos a F5 dos veces y cuando el programa pasa por el
if sy-subrc = 0 and ld_sap_edit <> true.
cargamos la variable ld_sap_edit para modificar y le cargamos el valor 'X'.
le damos a F8 y voilà! ya tenemos permiso para trastear con los datos de nuestra tabla!

jueves, 30 de junio de 2011

DATOS PARA EJEMPLOS DE SAP

Seguramente todos conocereis algún ejemplo de código de SAP (ver transacción DWDM) que utiliza el conjunto de tablas de ejemplo de vuelos, reservas, compañías aéreas, etc. El problema es que a veces estas tablas no disponen de datos y es difícil probar qué hacen esos ejemplos. Esto tiene una solución muy fácil, con el report SAPBC_DATA_GENERATOR podemos generar un juego de datos automático para las tablas de ejemplo de SAP.

viernes, 18 de marzo de 2011

FUNCION PARA VER UNA FACTURA DE COMPRAS

A falta de BAPIs sencillas e intuitivas (a menos que alguien me diga lo contrario) la función más fácil para ver una factura de compras con la transacción MIRO mediante es la siguiente: MRM_POSITION_TREATM que cómo véis no es nada intuitiva. Lo mejor es copiar el siguiente código y nos quedamos tan anchos.

data: ls_rbkpv type mrm_rbkpv.

ls_rbkpv-belnr = xbelnr.
ls_rbkpv-gjahr = xgjahr.

call function 'MRM_POSITION_TREATM'
exporting
i_tcode = sy-tcode
i_fcode = 'ITEM'
i_akt_typ = 'A'
i_kzverd = '0'
i_aggr_list_version = ''
changing
x_rbkpv = ls_rbkpv
exceptions
rbdrseg_not_found = 1
invoice_locked = 2
others = 3.

if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.


Saludos!

lunes, 24 de enero de 2011

AVERIGUAR LA LETRA (MAYÚSCULA) SIGUIENTE

Saludos nobles saperos,
He estado batallando con el código ascii para conseguir pasar una letra a ascii y después averiguar la letra siguiente sumándole n al ascii y pasando el ascii a char... y caca de la vaca... Además, me he encontrado que si trabajas con la 4.6 hace una cosa y si trabajas en versiones siguientes de SAP, hace otra... Mal!
Al final, he descubierto un campo de sistema que casi que te consigue hacerlo sin programar... sy-abcde!
al final el código me ha quedado tal que así:

letra(1) TYPE c,
letra2(1) TYPE c,

DATA:
letra(1) TYPE c VALUE 'A', "la letra de entrada
letra2(1) TYPE c, "la letra de salida
cont1 TYPE i, "contador
cont2 TYPE i. "contador


cont1 = 0.
cont2 = 1.

DO.
IF sy-subrc NE 0.
EXIT.
ELSE.
IF sy-abcde+cont1(1) EQ letra.
letra2 = sy-abcde+cont2.
EXIT.
ELSE.
cont1 = cont1 + 1.
cont2 = cont2 + 1.
ENDIF.
ENDIF.
ENDDO.


así pues, si igualmente queremos averiguar lo mismo pero con minúsculas (o combinado), podemos crearnos una var que contenga por ejemplo (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)... o cualquier cadena de carácteres que nuestro bienamado consultor tenga a bien mandarnos averiguar...


Venga pues, saludos y tal!
P.D.: como siempre mis posts tipo chorrada, pero bueno, es lo que tiene ser un dumpero! ;)

martes, 18 de enero de 2011

martes, 21 de diciembre de 2010

MESSAGE "AVANZADO"

Todos conocemos la instrucción MESSAGE, si no la conoces deja este blog y cómprate algún libro del tipo ABAP for dummies... Bueno la cuestión es que hay un par de opciones en esta instrucción que no se utilizan mucho y no todo el mundo conoce.


Casi siempre se utiliza el MESSAGE usando mensajes de una clase de mensajes de la transacción SE91 sin embargo podemos mostrar un mensaje directamente usando el texto de esta forma:
MESSAGE texto TYPE mtype.
Siendo texto un texto de como máximo 300 caracteres y mtype el tipo de mensaje.

Podemos forzar que un mensaje de un tipo se muestre como si fuera de otro añadiendo la opción DISPLAY LIKE mtype, donde mtype es el tipo que debe mostrar. El mensaje se comportará como el tipo original pero mostrará el icono que le decimos en el DISPLAY LIKE. Esto es especialmente útil en mensajes del tipo I, de esos que muestran un popup, ya que sirve para cambiarle el icono por el que nosotros queramos para poder darle un mayor énfasis en el mensaje.

martes, 7 de diciembre de 2010

¿DONDE ESTA MI SAPLOGON.INI?

SAP guarda los datos de las conexiones con los diferentes servidores de SAP en un archivo llamado saplogon.ini, básicamente es lo que se ve cuando arrancas el SAPlogon. Si quieres saber donde se guarda para hacer una copia de seguridad o para llevártelo a otro PC ahora te explico como hacerlo. Piensa que dependiendo del sistema operativo y de la versión estará en un sitio u otro. Vamos al tema:

Ejecuta el SAPlogon, ve a Opciones en el menú, en la versión que tengo yo (720) hay que dale al botón de arriba a la izquierda. Aparece una estructura de árbol a la izquierda, desplegar "Opciones de SAPlogon" y darle a "Ficheros de configuración". Ahora verás que a la derecha aparecen varios datos, busca en la lista de "Ficheros locales cargados" uno que pone "Conexión", ese es. Seguramente en otras versiones el tema cambiará ligeramente, se trata de ir buscando en las opciones a ver donde se define el fichero este.