Agregar íconos en pantalla de selección

21 06 2016

En nuestra pantalla de selección podemos agregar íconos al costado de cada parámetro:
Dibujo

 

Para esto simplemente hay que agregar una “combinación de caracteres” (código ID) al comienzo de los textos de selección:
Dibujo
Ruta: Goto –> Text Elements –> Selection texts

 

Cada ícono tiene su propia combinación de caracteres:
Dibujo

 

Y con este programa podemos conocer todos los íconos y su respectivo ID:
DATA :
gs_icon TYPE ICON,
gt_icon TYPE TABLE OF ICON.
SELECT * FROM icon INTO TABLE gt_icon.
LOOP AT gt_icon INTO gs_icon.
WRITE :/
gs_icon-name,
33 '@',
34 gs_icon-id+1(2),
36 '@',
40 gs_icon-id.
ENDLOOP.

 


Technorati tags:

Anuncios




Pasar Sapscript a PDF

4 05 2011

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:





Guardar archivo en formato PDF

11 01 2010

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:





SELECT OPTIONS DINÁMICOS

19 04 2009

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.

image 

image

 

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:





Completar variables con espacios a la izquierda

16 08 2008

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:





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:





Función RZL_READ_DIR_LOCAL – Conocer contenido de un directorio

14 08 2008

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: