Función SAVE_TEXT – Crear y guardar Textos en SAP

15 08 2008

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:





Leer campos de texto en SAP

24 11 2007

Para poder leer los campos de texto se usa la función read_text_inline. Esto generalmente lo usamos en formularios para mostrar textos de cabecera o de posición por ejemplo.


Para saber como llenar los campos, vamos al lugar donde cargamos el texto:
image

Una vez ahí clickeamos en el menú Pasar a —> Cabecera…
image

VG_INLINE  suele tener el valor 1 (VG_INLINE = ‘1’.)

 

El código que tenemos que agregar es:

TYPES: it_lin LIKE tline .

DATA:   VG_INLINE TYPE CHAR1,
             VG_NAME LIKE THEAD-TDNAME,
             IT_LINES TYPE TABLE OF IT_LIN,
             IT_INLINE TYPE TABLE OF IT_LIN,
             VG_ID LIKE THEAD-TDID,
             VG_LANG LIKE THEAD-TDSPRAS,
             VG_OBJ LIKE THEAD-TDOBJECT,

CALL FUNCTION ‘READ_TEXT_INLINE’
  EXPORTING
    ID                        = VG_ID
    INLINE_COUNT    = VG_INLINE
    LANGUAGE          = VG_LANG
    NAME                  =  VG_NAME
    OBJECT               = VG_OBJ
  TABLES
    INLINES               = IT_INLINE
    LINES                  = IT_LINES
EXCEPTIONS
   ID                              = 1
   LANGUAGE                = 2
   NAME                        = 3
   NOT_FOUND              = 4
   OBJECT                     = 5
   REFERENCE_CHECK   = 6
   OTHERS                     = 7.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* En la tabla IT_LINES nos queda el texto guardado


Technorati tags:





Mostrar importe en letras

20 11 2007

A la siguiente función vamos a poder pasarle en una variable un monto (importe) y la misma nos devolverá en una estructura el importe escrito en letras (el monto en texto).

Esto suele ser muy útil sobre todo en formularios donde debemos dejar explícitos los precios en letras


DATA: IMPORTE_LETRAS TYPE SPELL.

CALL FUNCTION ‘SPELL_AMOUNT’
     EXPORTING
        AMOUNT = VG_MONTO    «importe
        CURRENCY = ‘USD’           «moneda
        LANGUAGE = SY-LANGU   «idioma en que devuelve el texto
     IMPORTING
        IN_WORDS = IMPORTE_LETRAS
     EXCEPTIONS
        NOT_FOUND = 1
        TOO_LARGE = 2
        OTHERS = 3.

* IMPORTE_LETRAS-WORD = tendrá el texto de la parte entera
* IMPORTE_LETRAS-IN_WORDS = tendrá el texto de la parte decimal.


Technorati tags:





Convertir Sapscript en archivo de texto

25 10 2007

Hace un tiempo en el trabajo me pidieron que a un formulario sapscript lo pase a texto y que le de formato para luego bajarlo en un archivo. Acá dejo los pasos necesarios para hacerlo.


Primero vamos a tener que hacer una copia del programa impresor del sapscript en cuestión.
Una vez hecho, hay que agregar en la parte de las declaraciones la tabla interna donde van a quedar guardadas las lineas del formulario:
     DATA: BEGIN OF INT_TLINE1 OCCURS 100.
       INCLUDE STRUCTURE TLINE.
     DATA: END OF INT_TLINE1.

El siguiente paso es encontrar en el impresor la llamada a la función ‘OPEN_FORM’ y modificarle el campo DEVICE y ponerle ‘OTF_MEM’:
     CALL FUNCTION ‘OPEN_FORM’
      DEVICE = ‘OTF_MEM’

Por último luego de la llamada CALL FUNCTION ‘CLOSE_FORM’. tenemos que insertar la función ‘CONVERT_OTF_MEMORY’ de la siguiente manera:
     CALL FUNCTION ‘CONVERT_OTF_MEMORY’
      EXPORTING
       FORMAT = ‘ASCII’
       MAX_LINEWIDTH = 132
      *IMPORTING
       *BIN_FILESIZE =
      TABLES
       LINES = INT_TLINE1
      EXCEPTIONS
       MEMORY_EMPTY = 1
       ERR_MAX_LINEWIDTH = 2
       ERR_FORMAT = 3
       ERR_CONV_NOT_POSSIBLE = 4.

Con esto ya tenemos nuestro formulario sapscript cargado en nuestra tabla interna INT_TLINE1. Ahora a esta tabla le podemos modificar, agregar o quitar lineas a nuestro gusto; y de ser necesario podemos bajarla a un archivo.


Technorati tags: