Está en la página 1de 37

ABAP / SAP – Tips & Tricks

Pasar SmartForm a PDF

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente


tengamos que hacer el backup a PDF.
Con las siguientes pocas líneas vamos a poder hacerlo.

*Declaraciones
DATA: w_ctrlop    TYPE ssfctrlop,
          w_compop TYPE ssfcompop,
          w_return    TYPE ssfcrescl,
          otfdata       LIKE itcoo OCCURS 0 WITH HEADER LINE,
          lc_name     TYPE rs38l_fnam,
          intab         TYPE  soli_tab,
          objbin       TYPE  solix_tab, 
          wa_intab   TYPE LINE OF soli_tab,
          wa_objbin TYPE LINE OF solix_tab,
          objpack    LIKE sopcklsti1 WITH HEADER LINE.

*Función que devuelve el modulo de función del SmartForm


CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
   EXPORTING
      formname           = ‘ZSMARTFORM’  “Nombre del formulario SmartForm
   IMPORTING
      fm_name            = lc_name
   EXCEPTIONS
      no_form                  = 1
      no_function_module = 2 
   OTHERS                     = 3.

*Llama al modulo de función del SF


    w_ctrlop-getotf          = ‘X’.
    w_ctrlop-no_dialog    = ‘X’.
    w_compop-tdnoprev  = ‘X’.

CALL FUNCTION lc_name


   EXPORTING
        output_options        = w_compop 
        control_parameters = w_ctrlop
   IMPORTING
        job_output_info       = w_return
   EXCEPTIONS
        formatting_error   = 1
        internal_error       = 2
        send_error           = 3
        user_canceled      = 4
   OTHERS                    = 5.
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ELSE.
      otfdata[] = w_return-otfdata[].
   ENDIF.

*En la tabla otfdata nos queda guardado el formulario en formtao OTF


*Ahora sólo resta convertir el OTF en PDF
LOOP AT otfdata.
    wa_intab = otfdata.
    APPEND wa_intab TO intab.
    CLEAR wa_intab.
ENDLOOP.

*Convertir el OTF en PDF


CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
    EXPORTING
      format_src           = ‘OTF’
      format_dst          = ‘PDF’
*     ADDR_TYPE        =
      devtype               = ‘LP01′
*     FUNCPARA          =
    CHANGING
      transfer_bin         = objpack-transf_bin
      content_txt          = intab
      content_bin         = objbin
      objhead              = intab
      len                     = objpack-doc_size
   EXCEPTIONS
      err_conv_failed   = 1 
   OTHERS                = 2.

*LISTO!!! En la tabla objbin nos queda guardado el PDF para salvarlo *en la PC con
la función ‘GUI_DOWNLOAD’ o bien enviarlo por mail con *la función
‘SO_NEW_DOCUMENT_ATT_SEND_API1’

Technorati tags: sdn blogger


Comentarios : Deja un Comentario »
Etiquetas: ABAP, bajar, códigos, download, form, formulario, pasar, PDF, SAP, SmartForms,
SSF_FUNCTION_MODULE_NAME, SX_OBJECT_CONVERT_OTF_PDF, tips, trick
Categorías : Smartforms

Pasar Sapscript a PDF


4 05 2011
 
2 Votes

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente


tengamos que hacer el backup a PDF.
Con las siguientes pocas líneas vamos a poder hacerlo.

*Declaraciones
TABLES: itcpo.

DATA: otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,


          intab         TYPE  soli_tab,
          objbin       TYPE  solix_tab, 
          wa_intab   TYPE LINE OF soli_tab,
          wa_objbin TYPE LINE OF solix_tab,
          objpack    LIKE sopcklsti1 WITH HEADER LINE.

*Antes de la llamada a la función ‘OPEN_FORM’


itcpo-tdgetotf = ‘X’.
itcpo-tddest   = ‘LP01′.

CALL FUNCTION ‘OPEN_FORM’


   EXPORTING
      form       = ‘ZSAPSCRIPT’  “Nombre del formulario Sapscript 
      language = ‘S’
      options   = itcpo
      device    = ‘PRINTER’
      dialog     = ‘ ‘              “Vacío para que no muestre el pop-up de impresión
   EXCEPTIONS
   OTHERS   = 1.

 
*En el ‘CLOSE_FORM’
CALL FUNCTION ‘CLOSE_FORM’
   TABLES
      otfdata = otfdata
   EXCEPTIONS
   OTHERS  = 1.

*En la tabla otfdata nos queda guardado el formulario en formtao OTF


*Ahora sólo resta convertir el OTF en PDF
LOOP AT otfdata.
    wa_intab = otfdata.
    APPEND wa_intab TO intab.
    CLEAR wa_intab.
ENDLOOP.

*Convertir el OTF en PDF


CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
    EXPORTING
      format_src           = ‘OTF’
      format_dst          = ‘PDF’
*     ADDR_TYPE        =
      devtype               = ‘LP01′
*     FUNCPARA          =
    CHANGING
      transfer_bin         = objpack-transf_bin
      content_txt          = intab
      content_bin         = objbin
      objhead              = intab
      len                     = objpack-doc_size
   EXCEPTIONS
      err_conv_failed   = 1 
   OTHERS                = 2.

*LISTO!!! En la tabla objbin nos queda guardado el PDF para salvarlo *en la PC con
la función ‘GUI_DOWNLOAD’ o bien enviarlo por mail con *la función
‘SO_NEW_DOCUMENT_ATT_SEND_API1’

Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas: ABAP, bajar, códigos, CLOSE_FORM, download, form, formulario, OPEN_FORM, pasar, PDF,
SAP, SapScripts, SX_OBJECT_CONVERT_OTF_PDF, tips, trick
Categorías : Códigos ABAP, SapScripts

Transacción NACU – Clases de Mensaje


7 05 2010
 
Rate This

La transacción NACU es de mucha utilidad para conocer la configuración de cualquier


clase de mensaje.

Al ingresar nos pedirá elegir el tipo de aplicación (facturación, ventas, expedición, etc.).
Tras ejecutar abre una nueva pantalla con todo el listado de Clases de Mensaje para el tipo
de aplicación elegida. Y a la izquierda podremos seleccionar para ver: títulos y textos,
rutinas de proceso y funciones de interlocutor.

Es ideal para cuando un programador quiera conocer el formulario de impresión.

PD: Los créditos son para mi amigo Claudio Suriano.

Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas: SAP; ABAP; transaction; transacción; NACU; clases; mensaje; formulario; sapscript; smartforms;
output; types
Categorías : Transacciones

C14Z_DYNP_READ_FIELD – Función para leer


campos de una DYNPRO
29 04 2010
 
1 Vote

La función C14Z_DYNP_READ_FIELD sirve para leer campos de una Dynpro o


Pantalla.
No necesariamente de la dynpro en que nos encontramos. Puede ser de una pantalla
anterior.

Esto nos puede ser muy útil, como fue en mi caso, para el desarrollo de Field Exits.

A continuación el código:

* A I_PROGRAM hay que pasarle el nombre del programa.


* A I_DYNPRO se le pasa el número de pantalla o dynpro.
* Y I_FIELDNAME el campo del cual queremos conocer su contenido.
* La función nos devuelve en la variable W_EVAL el valor encontrado.

DATA: W_EVAL LIKE DYNPREAD-FIELDVALUE.

CALL FUNCTION ‘C14Z_DYNP_READ_FIELD’                                    


EXPORTING                                                              
   I_PROGRAM       = ‘SAPF110O’                                         
   I_DYNPRO        = ’0102′                                             
   I_FIELDNAME     = ‘REGUH-LAUFD’                                      
   I_FLG_STEPLOOP  = ‘X’                                                
CHANGING                                                               
   E_VALUE         = W_EVAL.   

Technorati tags: sdn blogger

Comentarios : 3 Comentarios »
Etiquetas: C14Z_DYNP_READ_FIELD; función; function; read; leer; campos; fields; pantalla; screen;
dynpro; field; exit; SAP; ABAP
Categorías : Field Exit, Funciones

Guardar archivo en formato PDF


11 01 2010
 
Rate This

Con el siguiente código podremos generar archivos PDF.

Ya que con la función GUI_DOWNLOAD únicamente no se puede hacer. Previamente


hay que realizar una conversión para luego sí guardar el fichero .PDF.

*&—————————————————————–*
*& Report  Y_TEST
*&
*&—————————————————————–*
*&
*&
*&—————————————————————–*
REPORT y_test NO STANDARD PAGE HEADING.
**********************************************************************
*  Definición de variables                                                                   *
**********************************************************************
DATA: filesize  TYPE i, 
          header  LIKE thead,
          options  LIKE itcpo,
          result    LIKE itcpp, 
          otf        LIKE itcoo OCCURS 0 WITH HEADER LINE, 
          lines     LIKE tline OCCURS 0 WITH HEADER LINE,
          lv_file   TYPE string.

**********************************************************************
*  Definición de la pantalla de selección                                              *
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK blq1 WITH FRAME TITLE text-t01.
PARAMETERS:
  p_impre TYPE pri_params-pdest OBLIGATORY,
  p_file  TYPE rlgrap-filename OBLIGATORY DEFAULT ‘C:\PRUEBA.PDF’.
SELECTION-SCREEN END OF BLOCK blq1.

**********************************************************************
*  Proceso principal                                                                           *
**********************************************************************

*Se completa tabla lines con el contenido que queramos que tenga el archivo PDF
lines-tdline = ‘Este es el texto que aparecerá en el archivo PDF’.
lines-tdformat = ‘K’.
APPEND lines.

*Se obtienen y definen las opciones de formato del archivo


options-tddest = p_impre. "Nombre de impresora local
options-tdnewid = ‘X’.
options-tdgetotf = ‘X’.

CALL FUNCTION ‘PRINT_TEXT’


EXPORTING
    device           = ‘PRINTER’
    dialog           = ‘ ‘
    application    = ‘TX’
    header          = header
    options         = options
IMPORTING 
    result         = result 
TABLES 
    lines          = lines
    otfdata      = otf
EXCEPTIONS
    canceled     = 01
    device        = 02
    form          = 03 
    options      = 04
    unclosed    = 05
    unknown    = 06
    format       = 07
    textformat  = 08
    communication = 09.

* Se convierte a PDF
CALL FUNCTION ‘CONVERT_OTF’
EXPORTING
    format                = ‘PDF’
    max_linewidth     = 132
IMPORTING
    bin_filesize          = filesize
TABLES
    otf                    = otf
    lines                 = lines
EXCEPTIONS
    err_conv_not_possible = 1.

* Bajamos el archivo
lv_file = p_file.

CALL FUNCTION ‘GUI_DOWNLOAD’


EXPORTING
     bin_filesize = filesize
     filename = lv_file
     filetype = ‘BIN’
* APPEND = ‘ ‘
* CODEPAGE = ‘ ‘
* NO_BYTEORDER_MARK = ‘ ‘
* IMPORTING
* FILELENGTH = c
TABLES
     data_tab = lines
* FORMAT_TAB =
EXCEPTIONS 
     file_write_error = 1
     no_batch = 2
     gui_refuse_filetransfer = 3
     invalid_type = 4
     no_authority = 5
     unknown_error = 6.

Technorati tags: sdn blogger

Comentarios : 1 comentario
Etiquetas:
abap;sap;file;archivo;format;formato;extension;PDF;download;bajada;fichero;GUI_DOWNLOAD;PRINT_T
EXT;CONVERT_OTF
Categorías : ABAP, Códigos ABAP

Reducir el tamaño de los Transaction Logs


10 07 2009
 
Rate This

Cuando los transactions logs de la base de datos de SQL Server crecen demasiado
pueden generarnos errores en SAP y varios dolores de cabeza.

En esos casos la solución es truncar dichos archivos, reducir su tamaño. Nunca


eliminarlos!.

Atención:Lo que sigue es sólo para SQL Server, para otro tipo de base de datos, como ser
Oracle, los comandos cambian.

¿Cómo truncamos o reducimos los archivos?

Primero tenemos que saber los nombres de los transactions logs y su ubicación. Para eso
ingresamos en la transacción DB02.

Esta transacción tiene toda la información referida a la base de datos, y en el medio nos da
un detalle completo de todos los archivos y de los transactions logs. 

Una vez que sabemos los nombres de los transactions logs (extensión .LDF); bajamos SAP
y acto seguido ingresamos al servidor donde esta instalado SQL.

Ya estamos preparados para reducir los logs, pero antes se recomienda hacer un back up de
los archivos que vamos a truncar.

Abrimos el SQL Management Studio y nos conectamos a nuestra base de datos. A


continuación clickeamos en el botón “Nueva consulta” y escribimos el siguiente comando:
BACKUP LOG <sid> WITH NO_LOG

o <sid> = nombre de la base de datos.


Luego apretar el botón “Ejecutar”.

Cuando termina hacemos una nueva consulta pero con el comando:


DBCC SHRINKFILE (<name_logfile>, <size>)

o <name_logfile> = nombre del transaction log


o <size> = tamaño al que queremos truncar/reducir el archivo., Ej: 10 MB.

           Apretar el botón “Ejecutar”.


(Repetir este comando por cada transaction log).

Con esto ya tendremos reducidos nuestros archivos en cuestión. Espero que les sea útil.
Para más información pueden ver la nota de SAP nro 625546.

Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas:
archivos;DBCC;SHRINKFILE;SQL;abap;sap;DB02;transaction;logs;basis;reducir;reduce;truncate;truncar;tri
cks;SQL Managment Studio;LDF;files
Categorías : Basis

Transacción SGEN – Compilación de Programas


1 07 2009
 
Rate This
La transacción SGEN es una gran utilidad que nos permitirá compilar o recompilar todos
los programas.

Pueden generarse programas, grupos de funciones, clases y aplicaciones Business Server


Page (aplicaciones BSP).

Hay que tener en cuenta que la misma tarda bastante tiempo en ejecutarse.

Para saber con qué opción ejecutarla, acceder al botón “Info sobre el generador de carga
SAP”. La información es muy completa y detallada.

O bien ver la nota de sap nro  379918.

Technorati tags: sdn blogger

Comentarios : 2 Comentarios »
Etiquetas: abap;sap;SGEN;transaction;transacción;basis;regeneración;generación;compilar;programas;tricks
Categorías : ABAP, Basis, Transacciones

SELECT OPTIONS DINÁMICOS
19 04 2009
 
Rate This

Con el siguiente código podremos crear pantallas de entrada de datos dinámicas. Donde
según el radio button que se elija, aparecerán distintos filtros de selección.
 

TABLES: KNA1, MARA.

************************************************************************
*** SELECTION-SCREEN / PARAMETERS / SELECT-OPTIONS                   ***
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-A01.
PARAMETERS:
            R_CLIE  RADIOBUTTON GROUP GRUP USER-COMMAND R DEFAULT ‘X’,

            R_MATE  RADIOBUTTON GROUP GRUP.


SELECTION-SCREEN END OF BLOCK B1.

*Datos Clientes
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-B02.
SELECT-OPTIONS: SO_CLIE  FOR KNA1-KUNNR MODIF ID CLI,
                SO_NAME  FOR KNA1-NAME1 MODIF ID CLI,
                SO_LAND  FOR KNA1-LAND1 MODIF ID CLI.
SELECTION-SCREEN END OF BLOCK B2.

*Datos Materiales
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-B03.
SELECT-OPTIONS: SO_MATE FOR MARA-MATNR NO INTERVALS NO-
EXTENSION MODIF ID MAT.
SELECTION-SCREEN END OF BLOCK B3.

*———————————————————————–*
*AT SELECTION-SCREEN.
*———————————————————————–*
AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.

    IF SCREEN-GROUP1 = ‘MAT’.


      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 1.
        WHEN OTHERS.
          SCREEN-ACTIVE = 0.
      ENDCASE.
    ELSEIF SCREEN-GROUP1 = ‘CLI’.
      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 0.
        WHEN OTHERS.
          SCREEN-ACTIVE = 1.
      ENDCASE.
    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.

Technorati tags: sdn blogger

Comentarios : 3 Comentarios »
Etiquetas: abap;sap;select-options;parameter;dinamicos;dinamics;filtros;opciones;seleccion;tips;tricks
Categorías : Códigos ABAP, Trucos

Circuito de Reparaciones (Orden de Renovación)


25 12 2008
 
Rate This

Ingresamos a la transacción IW81. Todos los campos deben ser completados tal como se
indica en la figura:
Clase de orden: “PM04”
Prioridad: Muy elevado, Alto, Medio (utilizado normalmente) y Bajo.
Número material: Material a reparar.
Centro planificación: “1100” en este caso, Varía según la configuración de cada empresa. 

Luego presionamos ENTER o el botón Datos cab.

Pantalla inicial:
Completar en la parte superior de la pantalla el nombre o descripción del proceso (ejemplo :
Prueba repa motor).

Debemos completar los siguientes campos en la solapa “Datos cab.”:


Responsable:
Rs.pto.tr.: Colocar el responsable de la operación.

Renovación:
Debemos completar tanto el centro y almacén de ingreso y salida (DE…A).

Primera operación:
Operación: Texto libre referente a la operación a realizar.

Pto Trab/Ce: Colocar el responsable de la operación.

ClvCtrol: Completar con la clave de control.

Cl.activ: Se puede dejar vacío o completar con la clase de actividad.

Trabinvert, Cantidad, y Dur.oper: El tiempo a emplear en la operación.

 
Luego vamos a la solapa “Interloc.”:
Y colocamos el número de cliente y seleccionamos del matchcode el título AG
SOLICITANTE. Presionamos ENTER y se completan los datos.
Si necesitamos visualizar los datos del cliente ingresamos por la parte superior de la
pantalla al botón .

Antes de grabar debemos presionar el botón para liberar la orden y poder continuar
con el proceso.
Finalizar grabando la orden

!!!Con la transacción IW32 podemos visualizar esta orden una vez creada.

El siguiente paso es la entrada de la mercadería y se explica a continuación:


Ingresamos a la transacción IW8W:

Colocamos en el campo el número de orden generado previamente. Y presionamos


ENTER.

Completamos los campos de fecha, almacén y cantidad del material que recibimos para
reparar. Y finalizamos grabando el documento.

Notificación de OT:
Ingresamos a la transacción IW42

En la siguiente pantalla presionamos ENTER para visualizar los datos (horas de trabajo)
grabados en la orden (Notificación tiempo).
Y deberíamos incluir los materiales adicionales que se usarán en la reparación. Centro/
Almacén (Movimientos de mercancías).

 
Ahora debemos generar el remito o formulario que acompañará la operación:
Ingresamos a la transacción MB11.

Chequear que esté puesto el tilde en el campo “IMPR.”. Presionamos el botón Por
orden… . 

Completamos el campo de Orden. Presionamos el botón Tomar + Detalle.

Y se visualizarán los datos, si lo necesitamos… podemos agregar un texto en el campo del


mismo nombre.

Presionando ENTER, veremos el detalle del movimiento de salida que se está por realizar.

Finalmente si hacemos doble click sobre el número de material; se abrirá una nueva
pantalla donde podremos elegir las opciones de impresión con el botón “Mensajes“.

Volvemos entonces a la pantalla inicial donde ahora sí contabilizamos el documento


utilizando el botón de grabar. Emitiendo así el remito.

Technorati tags: sdn blogger

Comentarios : 2 Comentarios »
Etiquetas: ABAP, órdenes, ciruito, IW32, IW42, IW81, IW8W, módulo, MB11, module, orden, orders,
renovación, reparaciones, SAP, SM, tips, transacción, transaction, tricks
Categorías : Módulo SM

Circuito de subcontratación
17 10 2008
 
Rate This

Planteo del problema:


Nuestra empresa requiere poder enviar un material semielaborado o materia prima a un
proveedor. Para que luego el proveedor devuelva el material terminado con una factura por
el costo del servicio.

Solución mediante SAP:


En este ejemplo se utiliza el material 200011 que es una lista de material que tiene como
componente el material 100043.
Por lo tanto, para este ejemplo nuestra empresa entregará a un tercero las unidades
correspondientes de la materia prima (material 100043) para luego recibir el producto
terminado (material 200011).
1º PASO: Ingresar a la transacción ME21N y crear un pedido de tipo NB (estándar), en
este caso cree un el tipo ZSUB (Sol. Subcontratación) que es una copia del tipo NB. Y
elegir el proveedor que realizará el trabajo:

En la parte de las posiciones colocar el material terminado que se recibirá del proveedor.
Completar con los datos que se usan comúnmente (fecha de entrega, cantidad, precio, etc).
Y en la columna de tipo de posición colocar L (subcontratación).

Luego completar, como hacen comúnmente con cualquier pedido, los campos que
consideren necesarios de la parte de Cabecera.

En la parte de Detalles de la posición se podrán ver los componentes del material. En este
caso el material 100043.

Finalmente se debe grabar el pedido:

2º PASO: El segundo paso es hacer entrega del material al proveedor relacionado al pedido
que creamos en el paso anterior. En este ejemplo el material que se entregará es el 100043.
Para esto hay que ir a la transacción MB1B
Y completar con Clase de movimiento 541, centro y tildar la opción Impr para que se
imprima un remito.
Acto siguiente apretar el botón de Por pedido…

Nos aparecerá una ventana donde debemos completar con el número del pedido creado en
el primer paso. Y clickear en el botón Tomar + Detalle.

Por último apretar el botón de grabar para que se contabilice el traspaso y se imprima el
remito.

3º PASO: Finalmente, el tercer y último paso es, una vez que se recibe el material
terminado del proveedor. Hay que darlo de alta y dar de baja el material entregado.

Ir a la transacción MIGO
Eligiendo: Entrada de mercancía, pedido, número de pedido, y el movimiento 101.
Luego tildar la opción de Posición OK, completar la fecha de contabilidad y Nota de
entrega. Apretar el botón Verificar.
Si todo da bien, apretar en el botón guardar.

Con esto, el circuito de subcontratación queda terminado.

Technorati tags: sdn blogger

Comentarios : 11 Comentarios »
Etiquetas: circuito, material, módulo, MM, proceso, SAP, subcontratación, tips, tricks, Trucos
Categorías : Módulo MM

Completar variables con espacios a la izquierda


16 08 2008
 
Rate This

Es común que en nuestras tareas diarias nos pidan generar archivos con algún formato
en particular. Para luego ser levantado por un aplicativo fuera de SAP.

Y  es probable que nos pidan que ciertos campos los completemos con espacios en blanco
adelante (a la izquierda). Por lo tanto acá dejo una sentencia ABAP para completar con
espacios:
DATA: lv_dato(14) TYPE C.

lv_dato = ‘HOLA’.

*-> Con esta sentencia la variable lv_dato queda con 10 espacios en blanco y luego la
palabra HOLA
SHIFT lv_dato RIGHT DELETING TRAILING SPACE.

Para saber más sobre la sentencia SHIFT…

Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas: ABAP, completar, espacios, fill, izquierda, left, SAP, SHIFT, space, tips, tricks, variable
Categorías : Códigos ABAP

Función SAVE_TEXT – Crear y guardar Textos en SAP


15 08 2008
 
Rate This

Con la función SAVE_TEXT vamos a poder crear y completar campos de textos en


SAP. Podremos llenar, por ejemplo, textos de cabecera y posición en forma masiva.

Vamos a necesitar algo de información previa. Para eso hay que ir al lugar donde ponemos
el texto y clickeamos en el menú Pasar a —> Cabecera…

El código que tenemos que agregar es:


*Declaraciones para los textos.
DATA: it_header  TYPE thead,
           it_lines      TYPE TABLE OF tline.

         REFRESH it_lines.


         CLEAR it_header.

*—–>Texto para agregar       


        it_lines-tdline = ‘Este es un texto de cabecera’.
        APPEND wa_lines TO it_lines.

*—–>Completamos con los datos que obtuvimos arriba 


        it_header-tdobject = ‘VBBK’.  “VG_OBJ
        it_header-tdname = ’0000000057′.  “VG_NAME
        it_header-tdid   = ‘ZCER’.  “VG_ID
        it_header-tdspras = ‘E’.  “VG_LANG
        it_header-tdlinesize = ’072′.

*—->Llamamos a la función que nos completa el texto


        CALL FUNCTION ‘SAVE_TEXT’
          EXPORTING
            header          = it_header
            insert          = ‘X’
            savemode_direct = ‘X’
          TABLES
            lines           = it_lines
          EXCEPTIONS
            id              = 1
            language        = 2
            name            = 3
            object          = 4
            OTHERS          = 5.
        IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

Como resultado obtenemos:

Technorati tags: sdn blogger

Comentarios : 12 Comentarios »
Etiquetas: ABAP, cabecera, crear, función, FUNCTION, posición, position, SAP, SAVE_TEXT, texto, texts,
tips, tricks
Categorías : Códigos ABAP, Funciones

Función RZL_READ_DIR_LOCAL – Conocer


contenido de un directorio
14 08 2008
 
Rate This

Con la función RZL_READ_DIR_LOCAL podemos saber cuál es el contenido de un


directorio del servidor en SAP.

Este es el código:

*-Declaro un parameter en el cual se completa la ruta del servidor del que queremos
conocer su contenido
PARAMETERS:
            p_file TYPE rlgrap-filename OBLIGATORY DEFAULT ‘/data/’.

*-Variable para pasarle la ruta a la función


DATA: lv_name TYPE salfile-longname.

*->Levanto la lista de directorios


    lv_name = p_file.
    CALL FUNCTION ‘RZL_READ_DIR_LOCAL’
      EXPORTING
        name           = lv_name
      TABLES
        file_tbl       = it_filedir
      EXCEPTIONS
        argument_error = 1
        not_found      = 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.

*Como resultado en la tabla interna it_filedir obtenemos todo el contenido, *ya sean
subcarpetas o archivos, de la ruta del servidor que ingresamos *por parámetro.
Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas: ABAP, archivos, carpetas, contenido, directories, directorios, función, FUNCTION, local,
RZL_READ_DIR_LOCAL, SAP, servidor, tips, tricks
Categorías : Códigos ABAP, Funciones

Matchcode Browser Server (buscador de directorios


del servidor)
13 08 2008
 
Rate This

Con la siguiente función vamos a poder habilitar el matchcode para que abra un
browser file (explorador de directorios) del servidor. Esto nos va a servir para hacer
upload y download de archivos.

Acá el código que debemos ingresar en nuestros programas:

* Constantes locales
  CONSTANTS:lc_p TYPE c VALUE ‘P’,
                      lc_a TYPE dxfields-location VALUE ‘A’.

* Variables locales
  DATA: li_host TYPE STANDARD TABLE OF msxxlist,
             lw_host TYPE msxxlist,
             lv_path TYPE dxfields-longpath,
             lv_ubicacion(1) TYPE c,
             lv_abend  TYPE c.

*En P_FILE va a quedar guardada la ruta del archivo del servidor


PARAMETERS: P_FILE LIKE RLGRAP-FILENAME.

*- Machcode busqueda de archivo del servidor


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*-Nombre del servidor


  CALL FUNCTION ‘RFC_GET_LOCAL_SERVERS’
    TABLES
      hosts         = li_host
    EXCEPTIONS
      not_available = 1
      OTHERS        = 2.
  IF sy-subrc IS INITIAL.

*-Nombre del servidor a la estructura


    CLEAR lw_host.
    READ TABLE li_host
               INTO lw_host
               INDEX 1.

*-Obtengo el path
    CALL FUNCTION ‘F4_DXFILENAME_TOPRECURSION’
      EXPORTING
        i_location_flag = lc_a
        i_server        = lw_host-name
      IMPORTING
        o_location_flag = lv_ubicacion
        o_path          = lv_path
        abend_flag      = lv_abend
      EXCEPTIONS
        rfc_error       = 1
        error_with_gui  = 2
        OTHERS          = 3.

*-Si se obtiene un path


    IF sy-subrc    IS INITIAL AND
       NOT lv_path IS INITIAL AND
       lv_abend    IS INITIAL.

*-Devuelvo ruta al parametro de selección


      p_file = lv_path.

    ENDIF.

  ENDIF.

Technorati tags: sdn blogger

Comentarios : 3 Comentarios »
Etiquetas: ABAP, archivos, browser, buscador, código, directorios, explorador, F4,
F4_DXFILENAME_TOPRECURSION, file, Funciones, FUNCTION, matchcode,
RFC_GET_LOCAL_SERVERS, RLGRAP-FILENAME, ruta, SAP, server, servidor, tips, tricks
Categorías : Funciones, Matchcodes

Transacción CG3Y – Copiar archivo del servidor a


nuestra computadora
12 08 2008
 
Rate This

Con la transacción CG3Y vamos a poder copiar un archivo alojado en el servidor en


nuestra computadora.

Es muy sencillo, basta con pasar la ruta completa de origen y la de destino. Y elegir el
formato de transferencia que puede ser ASC o BIN

Technorati tags: sdn blogger

Comentarios : 12 Comentarios »
Etiquetas: ABAP, archivo, CG3Y, copiar, copy, file, local, PC, SAP, server, servidor, tips, transacción,
transaction, tricks
Categorías : Basis, Transacciones

Cómo obtener los Status de Sistema y Usuario


28 06 2008
 
Rate This

En todo tipo de órdenes… ya sean de fabricación, de trabajo, etc. Una de las cosas que
identifican en qué estado se encuentran las órdenes son los status de sistema y de usuario:

Para cuando tengan que programar reportes donde deben mostrar o saber los status de las
órdenes pueden utilizar las siguientes 2 funciones:

 Status de sistema: STATUS_TEXT_EDIT


 Status de usuario: ALM_ME_READ_USER_STATUS
Technorati tags: sdn blogger

Comentarios : 1 comentario
Etiquetas: ABAP, ALM_ME_READ_USER_STATUS, Funciones, functions, módulo, module, orders, SAP,
sistema, SM, status, STATUS_TEXT_EDIT, system, tips, tricks, user, usuario
Categorías : Funciones, Módulo SM

SM59 – Destinos RFC
12 06 2008
 
Rate This

Con la transacción SM59 podemos visualizar y actualizar destinos RFC. Se pueden


crear, borrar y modificar Conexiones R/3, Conexiones internas, Destinos lógicos,
Conexiones TCP/IP y conexiones con driver ABAP.

Pero una de las cosas que rescato como más interesante es que podemos loguearnos en
otro mandante. Esto pude sernos muy útil sobre todo cuando no tenemos creada la entrada
a dicho mandante en nuestro SAP Logon. Ya sea porque no conocemos el IP o el String.

Esto es sencillo, abrimos el árbol de Conexiones R/3 y hacemos doble click sobre el
mandante que queremos conectarnos.
Nos aparecerá una pantalla como la siguiente donde acto seguido clickeamos en el botón
Entrada al sistema remota

Luego sólo nos restará colocar nombre de usuario y password, y se abrirá otro modo con
la sesión del nuevo mandante. 

Technorati tags: sdn blogger

Comentarios : 4 Comentarios »
Etiquetas: ABAP, conexiones, connections, loguearse, logueo, mandante, otro, RFC, SAP, SM59, tips,
transacción, transaction, tricks
Categorías : Basis, Transacciones

Status de Sistema AJTM (Ajuste manual necesario)


24 05 2008
 
Rate This

Los otros días tuve que liberar un grafo operativo (un grafo operativo nace en forma
automática con la creación de la orden de venta, copiándose del grafo Standard). Lo cual
suele ser algo relativamente sencillo: Tratar –> Status –> Liberar.
Pero sorpresivamente me encontré con el mensaje de error:
“El status del sistema AjtM está activo: Para el objeto GRF 6000022 se activó el status de
sistema AjtM (Ajuste manual necesario). Este prohibe la ejecución de la operación
‘Liberar’.“

Esta era la primera vez que veía este status, ya que no es de los más comunes. Como ser
EDET, FENA, LIBP, NOTP, etc.

Era obvio que debía desactivar el status AjtM para poder liberar mi grafo. El problema era
qué significaba Ajuste manual necesario y dónde se activaba?.

Luego de investigar un buen rato, romperme un poco la cabeza y algunas pruebas, pude
encontrar la solución:
Hay que tratar el grafo operativo desde la transacción CN22. Ir al menú Detalles –>
Configuración –> Gestión modif.

Aquí podemos gestionar modificaciones en la configuración del grafo. Nos


encontraremos con una tabla con todas las comparaciones de modificación.
Para crear o cerrar una modificación lo hacemos desde menú “Tratar“.
Seleccionando una entrada y luego apretando el botón “Pasos de modificación“, veremos
en detalle todos los componentes y tendremos marcados aquellos para realizarles
modificaciones. Finalmente apretando F8 efectuaremos todos los pasos de modificación
disponibles.

Resumiendo entonces, tuve que cerrar todas las entradas de comparación de


modificaciones. Consiguiendo  desactivar el status AjtM y así lograr liberar el grafo.

Technorati tags: sdn blogger

Comentarios : Deja un Comentario »


Etiquetas: ABAP, adjustment, AjtM, ajuste, CN22, configuración, gestión, grafo, MADJ, manual,
modificaciones, necesario, necessary, operativo, SAP, sistema, status, tips, transacción, transaction, tricks
Categorías : Módulo PP/PS

Encabezado (Header) completo para reporte ALV


17 05 2008
 
Rate This

Voy a explicar los pasos a seguir para incorporar un encabezado/header en un reporte


ALV. Es decir, tener una imágen de fondo, un logo y texto.

Hay dos imágenes en mi ejemplo:


1_ logo (ENJOYSAP_LOGO)
2_ background (ALV_BACKGROUND)

Cada uno puede elegir las imágenes que quiera, pero siempre y cuando estén subidas en la
transacción OAER

* Variables y estructuras para ALV


TYPE-POOLS: SLIS.

DATA:
  LV_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,
  LV_REPID       TYPE SY-REPID,
  T_EVENTS      TYPE SLIS_T_EVENT,              ” Eventos.
  GT_HEADER    TYPE SLIS_T_LISTHEADER,    ” Tabla con el Título y el Logo
  WA_HEADER    TYPE SLIS_LISTHEADER.      ” Work Area con el Título

DATA: BEGIN OF IT_TABLE OCCURS 0,


        VALOR TYPE STRING,
      END OF IT_TABLE.

* Agregar el programa para el callback


  LV_REPID = SY-REPID.

 
*&———————————————————————*
*& Acá en el medio llenamos la tabla interna IT_TABLE
*& para mostrar en el AVL
*&———————————————————————*

*Llamo al ALV
PERFORM FILL_EVENT USING T_EVENTS.
PERFORM CARGAR_FIELDCAT TABLES LV_FIELDCAT.
PERFORM INIT_HEADER.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


  EXPORTING
    I_CALLBACK_PROGRAM          = LV_REPID
    I_CALLBACK_TOP_OF_PAGE   = ‘TOP_OF_PAGE’   ” llama al form
    I_BACKGROUND_ID                 = ‘ALV_BACKGROUND‘  ” imagen de fondo
    IT_FIELDCAT                          = LV_FIELDCAT   
    IT_EVENTS                             = T_EVENTS
  TABLES
    T_OUTTAB                             = IT_TABLE.

*&———————————————————————*
*&      Form  cargar_fieldcat
*&———————————————————————*
FORM CARGAR_FIELDCAT  TABLES   LV_FIELDCAT TYPE
SLIS_T_FIELDCAT_ALV.

  DATA: LV_POSICION TYPE I.


  CLEAR LV_FIELDCAT.

  REFRESH LV_FIELDCAT.

  ADD 1 TO LV_POSICION.
  LV_FIELDCAT-COL_POS   = LV_POSICION.
  LV_FIELDCAT-FIELDNAME = ‘VALOR’.
  LV_FIELDCAT-JUST = ‘C’.
  LV_FIELDCAT-DDICTXT = ‘L’.
  LV_FIELDCAT-TABNAME = ‘IT_TABLE’.
  LV_FIELDCAT-SELTEXT_M = ‘Valor’.
  LV_FIELDCAT-SELTEXT_L = ‘Valor’.

  APPEND LV_FIELDCAT.
  CLEAR  LV_FIELDCAT.
ENDFORM. “CATALOG

*&——————————————————————–*
*& Form fill_event
*&——————————————————————–*
FORM FILL_EVENT USING P_T_EVENTS TYPE SLIS_T_EVENT.

  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

* Toma los eventos


  CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
    EXPORTING
      I_LIST_TYPE = 0
    IMPORTING
      ET_EVENTS   = P_T_EVENTS.

* Selecciono el evento ‘TOP_OF_PAGE’ y le seteo el FORM a ejecutar


  CLEAR LS_EVENT.

  READ TABLE P_T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE


  INTO LS_EVENT.
  IF SY-SUBRC = 0.
    MOVE ‘TOP_OF_PAGE’ TO LS_EVENT-FORM.
    APPEND LS_EVENT TO P_T_EVENTS.
  ENDIF.

ENDFORM. ” FILL_EVENT

*———————————————————————-*
*      Carga el título y subtítulo del reporte
*———————————————————————-*
FORM INIT_HEADER.

  DATA: WA_HEADER TYPE SLIS_LISTHEADER.

* Cargo el Título
  WA_HEADER-TYP = ‘H’.
  WA_HEADER-INFO = ‘Título en Mayúsculas‘.
  APPEND  WA_HEADER TO GT_HEADER.

* Cargo el Subtítulo
  CLEAR WA_HEADER.
  WA_HEADER-TYP = ‘A’.
  WA_HEADER-INFO = ‘Texto para un subtítulo.‘.
  APPEND  WA_HEADER TO GT_HEADER.
ENDFORM.                    “init_header

*&——————————————————————–*
*&      Form  top_of_page
*&——————————————————————–*
FORM TOP_OF_PAGE .
* Pasa a la cabecera el logo
  CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
    EXPORTING
      I_LOGO             = ‘ENJOYSAP_LOGO‘  “Logo
      IT_LIST_COMMENTARY = GT_HEADER.
ENDFORM.                    ” TOP_OF_PAGE

Technorati tags: sdn blogger

Comentarios : 6 Comentarios »
Etiquetas: ABAP, ALV, background, encabezado, fondo, header, image, imagen, logo, OAER, SAP, tips,
transacción, transaction, tricks, Trucos
Categorías : ALV

Transacción OAER – Objetos de aplicación (imágenes)


10 05 2008
 
Rate This

Mediante la transacción OAER podemos administrar y tratar cualquier tipo de objeto


de aplicación.
Pero generalmente, al menos yo, la utilizamos para trabajar con imágenes. Ya que es
común utilizar logos o backgrounds en los encabezados (headers) de los reportes ALV.

La transacción es muy intuitiva de utilizarla, tiene varias opciones de selección. Pero


siempre debemos completar los campos obligatorios Nombre clase del objeto y Tipo clase
del objeto.

Voy a mostrar de ejemplo cómo ver y subir imágenes:


1º) En la primera pantalla completamos los campos obligatorios mencionados
anteriormente y ejecutamos.

2º) Veremos que arriba a la izquierda podemos navegar entre las distintas carpetas para
buscar imágenes.
Debajo hay varias solapas, entre otras Detail que nos va a mostrar los detalles de las
imágenes y Crear para subir archivos.
Y a la derecha podemos ver las imágenes e incluso guardarlas en nuestra computadora. O
bien transportarlas a otro mandante con una orden de transporte con el icono del camión.

3º) Para subir una imagen debemos volver a la pantalla inicial y completar el campo Clave
del objeto además de los campos obligatorios.

Luego nos posicionamos en la solapa Crear y hacemos doble click sobre la opción
Imagen.
Esto nos abre un browser para que podamos subir nuestra imagen. Para luego usarla por
ejemplo en un reporte ALV.

Technorati tags: sdn blogger

Comentarios : 3 Comentarios »
Etiquetas: ABAP, ALV, aplicación, background, business, document, documentos, image, imagen, logo,
navegador, navigator, negocio, OAER, objeto, SAP, tips, transacción, transaction, tricks, Trucos
Categorías : ALV, Transacciones

« Entradas anteriores

Buscar

MI PERFIL:
Enviarme un E-Mail.

Páginas:
 Bienvenidos…
 Sobre mi…

Categorías:
 ABAP (2)
 ALV (3)
 Bases de datos lógica – HR (1)
 Basis (10)
 Códigos ABAP (19)
o Reportes (5)

 Field Exit (2)


 Funciones (14)
 IDOCs (2)
 Matchcodes (4)
 Módulo MM (1)
 Módulo PP/PS (1)
 Módulo SM (3)
 SapScripts (4)
 Smartforms (1)
 Transacciones (13)
 Trucos (9)

SUSCRIBIRSE A ESTE BLOG:

 Suscribirse a este blog

Suscribirse a RSS

Add me to your del.icio.us

Estadísticas Del Blog:


 433,081 Visitas

VISITAS DE:
Mis Últimos Posts:
 Pasar SmartForm a PDF
 Pasar Sapscript a PDF
 Transacción NACU – Clases de Mensaje
 C14Z_DYNP_READ_FIELD – Función para leer campos de una DYNPRO
 Guardar archivo en formato PDF
 Reducir el tamaño de los Transaction Logs
 Transacción SGEN – Compilación de Programas
 SELECT OPTIONS DINÁMICOS
 Circuito de Reparaciones (Orden de Renovación)
 Circuito de subcontratación
 Completar variables con espacios a la izquierda
 Función SAVE_TEXT – Crear y guardar Textos en SAP
 Función RZL_READ_DIR_LOCAL – Conocer contenido de un directorio
 Matchcode Browser Server (buscador de directorios del servidor)
 Transacción CG3Y – Copiar archivo del servidor a nuestra computadora

Posts Más Vistos:


 Creación de IDOCs de Orden de Compra
 Completar o quitar ceros a la izquierda de una variable
 Enviar e-mails desde SAP
 Transporte de una orden de un ambiente a otro
 Crear Matchcodes (ayudas) con una tabla interna.
 Formas de recordar o relacionar los nombres de las tablas de SAP

Buscar Posts Por Mes:


 mayo 2011 (2)
 mayo 2010 (1)
 abril 2010 (1)
 enero 2010 (1)
 julio 2009 (2)
 abril 2009 (1)
 diciembre 2008 (1)
 octubre 2008 (1)
 agosto 2008 (5)
 junio 2008 (2)
 mayo 2008 (3)
 abril 2008 (7)
 enero 2008 (1)
 diciembre 2007 (5)
 noviembre 2007 (22)
 octubre 2007 (10)

Buscar Posts Por Fecha:

mayo 2011
L M X J V S D
« may    
  1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31  

Comentarios Recientes:
Daniel Panaro on Enviar e-mails desde SAP
Daniel Panaro on Enviar e-mails desde SAP
Agalam on Enviar e-mails desde SAP
Agalam on Enviar e-mails desde SAP
Daniel Panaro on Enviar e-mails desde SAP
Daniel Panaro on Enviar e-mails desde SAP

Blogroll
 BitacoraSapAbap
 El blog tecnológico de Blag.
 Martin Hagelstrom – Tecnologia & Negocios
 MUNDOSAP.COM
 Programación ABAP/4
 SAP & ABAP Stuff – Rodrigo Giner de Vega
 SAP COMMUNITY NETWORK
 SAP4 – SAP ABAP en castellano
 Weblogs sobre SAP

SAP News (Twitter):


Error: Twitter did not respond. Please wait a few minutes and refresh this page.

Etiquetas:

ABAP abapers ALV ambiente archivos bajar Basis browser completar crear código datos
directorios download file form formulario formularios Funciones función FUNCTION imagen
matchcode modificar module módulo orden pasar PDF programa SAP programm report reporte SapScripts

servidor tabla texto tips Transacciones transacción transaction tricks Trucos user

Blog de WordPress.com. Theme: Freshy by Jide.

También podría gustarte