:::: 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

Muchas veces en FI, se desear realizar la sustitución del valor de un determinado campo, pero resulta que al querer realizar la sustitución (tx obbh) no encontramos el campo que queremos sustituir y esto normalmente se debe a que el campo está marcado (excluido )para no ser sustituido, para solucionar es inconveniente se debe desactivar un flag (check) para que este campo sea sustituible.



Para ello se realizan los siguiente simples pasos.

1.-  Revisar si el campo se encuentra como campo sustituible o si tiene permisos de ser sustituible (flag no marcado quiere decir que si esta listo para ser sustituido)

ir a la TABLA ==> GB01


en la imagen vemos que el campo HKONT (cuenta contable)  si es sustituible

2.-  en caso de que se encuentre pero que no tenga marcado el flag de sustituible nos vamos a la vista y marcamos el flag.

VISTA DE ACT. ==> V_GB01C


vemos en la siguiente imagen que sólo se listan los campos sustituibles, para poder sustituir un campo se debe ir a la tabla GB01 y quitar la X del registro q queremos sustituir.

3.- para que los cambios se vean reflejados tenemos que ingresas al siguiente programa y ejecutarlo, esto regenerará nuevamente los campos que estén listos para ser sustituidos y agregará nuestro campo.

Programa de Regeneración ==> RGUGBR00

al ejecutar solo se debe marcar el flag de sustitución.




el siguiente código nos ayudará a seleccionar una ruta de la PC para descargar un archivo generado desde el programa que estemos desarrollando. Esto normalmente se utiliza para descargar los formatos de PLE o algún archivo de txt que se vaya a cargar en otro lado.

El código es el siguiente:

parametro:
=========

    parameters: pFolder like rlgrap-filename memory id MFOLDER.


Código:
=======
at selection-screen on value-request for pFolder.

data: objFile type ref to cl_gui_frontend_services.
data: pickedFolder type string.
data: initialFolder type string.

  if sy-batch is initial.
    create object objFile.

    if not pFolder is initial.
      initialFolder = pFolder.
    else.
      objFile->get_temp_directory( changing temp_dir = initialFolder
                                   exceptions cntl_error = 1
                                             error_no_gui = 2
                                             not_supported_by_gui = 3 ).
    endif.

    objFile->directory_browse( exporting initial_folder = initialFolder
                               changing selected_folder = pickedFolder
                               exceptions cntl_error = 1
                                          error_no_gui = 2
                                          not_supported_by_gui = 3 ).

    if sy-subrc = 0.
      pFolder = pickedFolder.
    else.
      write: / 'An error has occured picking a folder'.
    endif.
  endif.



 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.  


A call-to-action text Contact us