:::: MENU ::::

este blog tiene como objetivo de compartir los conocimientos prácticos de cada lenguaje de programación más conocidos.

  • Lo mejor está por suceder

  • Easy to Customize

  • Customizable fonts.

jueves, 1 de septiembre de 2016




 SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-t80.

     PARAMETERS:
                    p_chkple  AS CHECKBOX USER-COMMAND act.

     SELECTION-SCREEN BEGIN OF LINE.
     SELECTION-SCREEN COMMENT 1(44) text-030.
     SELECTION-SCREEN POSITION 46.

     PARAMETERS:    p_eeff   TYPE n LENGTH 2  MODIF ID a.
     SELECTION-SCREEN END OF LINE.

     SELECTION-SCREEN: SKIP.

     SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t81.
         PARAMETERS   p_ruta TYPE localfile  MODIF ID b.
     SELECTION-SCREEN: END OF BLOCK b3.

  SELECTION-SCREEN: END OF BLOCK b2.
Muchas veces hemos tenido inconvenientes para agregar objetos a un SAPSCRIPT, en esta ocasión vamos a agregar un Logo para mostrarlo por SAPSCRIPT.


tamaño de imagen en sapscript:

BITMAP 'IMAGEN' OBJECT GRAPHICS ID BMAP TYPE BCOL DPI 600

SUBIR LOGO PARA SAPSCRIPT:

1. Ir a la SE38, introduzca el nombre del programa "RSTXLDMC" y ejecutarlo.
2. En la ejecución de este programa se muestra una nueva sesión en la que es necesario mencionar su nombre de Logo. 
   Para ello, introduzca su nombre en el selecto Logo opción "Param para el estándar de texto> Texto Nombre.". 
   El nombre dado aquí debe comenzar con 'Y' o 'Z' Ej:. YLOGO o ZLOGO.   
   En executin este le pedirá la ubicación en su logotipo es stored.The logotipo debe ser de tipo. Extensión TIFF.
   Una vez se especifica la ubicación del archivo TIFF. Se carga y se almacena como un elemento de texto en SO10 y
   una nueva sesión se muestra que diga si el logo se guarda o no con éxito. 
3. Para ver su logo ir a la tx SO10 mencionar el nombre del archivo, es decir, YLOGO o ZLOGO y haga clic en visualización
   de impresión y verá la imagen subida.
4. A continuación, introduzca la línea de comandos (/ :) en la "Columna Tag" y recorrer a través de el siguiente menú: 
   Insertar -> Texto -> Estándar. 
   Mencione el nombre del logotipo en nuestro caso es bien YLOGO o ZLOGO.On hacer esto, 
   el logo se insertará en los elementos de texto con el mensaje de la siguiente manera: 
   INCLUIR ZLOGO TEXTO OBJETO ID ST.  
En algún momento hemos necesitado agregar datos de cabecera a un reporte ALV, datos como la Fecha de ejecución, Sociedad, Periodos, Ejercicios, Almances, Centros, Ruc, etc, etc.

Para ello se debe agregar el siguiente  código:

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 .

* 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


Luego al llamar a la función ‘REUSE_ALV_GRID_DISPLAY hacemos lo siguiente:


PERFORM INIT_HEADER. " llamada al 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.



Para añadir un checkbox a un ALV, más parecido a un botón, debes seguir los siguientes pasos:

1) En nuestra estructura de tabla interna añadir un campo, por ejemplo de nombre CHECK, que nos informará si se ha seleccionado ese registro. Será de tipo C.

2) Crear una funcion para modificar el layout del ALV. En la variable layout-box_fieldname le informaremos cúal es el campo que hace de checkbox.

FORM alv_layout USING layout TYPE slis_layout_alv.
layout-box_fieldname = 'CHECK'.
ENDFORM.


3) En la llamada a la funcion REUSE_ALV_GRID_DISPLAY pasarla la variable
layout que hemos modificado con la anterior función.



CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
it_sort = it_sort
is_layout = is_layout
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = it_eban
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Estos botones normal mente se crear ya sea para ejecutar un proceso adicional o realizar la descargar de algún formato que se arme de la data del reporte generado. Para agregar el botón realizamos lo siguiente:

  METHOD handle_toolbar.

    DATA: e_toolbar  TYPE stb_button.

*  >>>> Agrega separador

   MOVE 3 TO e_toolbar-butn_type.
    APPEND e_toolbar TO e_object->mt_toolbar.

    CLEAR e_toolbar.

    MOVE: 'FC_FILE'           TO e_toolbar-function,
                     icon_activity      TO e_toolbar-icon,
                'Generar archivo'  TO e_toolbar-quickinfo,
                'Generar archivo'  TO e_toolbar-text.
              APPEND e_toolbar TO e_object->mt_toolbar.


  ENDMETHOD.  


Casi siempre se solicita que se agregue un botón para dar mantenimiento a las tablas Z que se crean y se usarán dentro del reporte que estemos desarrollando. Para ello se debe de agregar el siguiente código.

en el include TOP:

TABLES: SSCRFIELDS.
SELECTION-SCREEN: FUNCTION KEY 1."Este código se coloca por cada nuevo botón agregado


Estas líneas puedes agregarlas en el include TOP o si quieres ser más ordenado lo puedes agregar en el include donde creas tus parámetros de selección, osea en el include SEL.

INITIALIZATION.

MOVE 'Actualizar tabla Z_nombre de tu tabla' TO sscrfields-functxt_01. "Se colocan sus textos de los nuevos botones

AT SELECTION-SCREEN.
IF sy-ucomm = 'FC01'.   
   CALL SELECTION-SCREEN 1100.
ENDIF.


NOTA: En el caso de que quieras agregar otro boton solo tienes que seguir el correlativo de cada nombre y valor del boton:

Ejemplo: sscrfields-functxt_01, seguiría sscrfields-functxt_02. Y para el UCOMM sería : FC01 y seguiría el FC02 .....





Yo tengo este form que lo tengo definido en la funcion ALV, Luego en el commad que tengo definido pregunto por el ucomm 'FC01', si agregas mas botones vas sumando +1, con esto te evitas crear un status nuevo.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'

      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'

      .....



FORM PF_STATUS USING ce_func_exclude TYPE slis_t_extab.



  DATA fcode_attrib_tab LIKE smp_dyntxt OCCURS 4 WITH HEADER LINE.



  CLEAR: fcode_attrib_tab, fcode_attrib_tab[].

* function: participation-list

  fcode_attrib_tab-text      = text-001.

  fcode_attrib_tab-icon_id   = '@01@'.

  fcode_attrib_tab-icon_text = text-001.

  fcode_attrib_tab-quickinfo = space.

  fcode_attrib_tab-path      = space.

  APPEND fcode_attrib_tab.

*

  PERFORM dynamic_report_fcodes(rhteiln0) TABLES fcode_attrib_tab

                                       
USING  ce_func_exclude

                                               
' ' ' '.

  SET PF-STATUS 'ALVLIST' EXCLUDING ce_func_exclude

                OF PROGRAM 'RHTEILN0'.

ENDFORM.                            
" PF_STATUS



FORM USER_COMMAND  USING UCOMM LIKE SY-UCOMM

                       
RS_SELFIELD TYPE SLIS_SELFIELD.

  data : e_datos like ZES_LIBER_USUARIO.

  COMMIT WORK.

  CASE UCOMM.

    WHEN 'DISPLAY'.

              .............

    WHEN 'FC01'.

             .........



  ENDCASE.

  RS_SELFIELD-REFRESH = 'X'.

ENDFORM.                  
"USER_COMMAND
A call-to-action text Contact us