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

miércoles, 21 de agosto de 2013

JUSTIFICACIÓN DE CAMPO HACIA LA DERECHA:



Hace unos días una compañera de trabajo se encontró desarrollando un tema de FI de Embargos de SUNAT y se vio con un problemilla, 




había que subir un archivo de texto plano algunos datos un reporte con un determinado formato Según el banco BCP ya que ellos lo cargan a su transfer para que facilite la trasferencia de los cobros de sus proveedores a la SUNAT.


El formato era justificar hacia la derecha los datos subidos, por ejemplo: 


DATA: lv_valor(15) TYPE char.


      lv_valor = '803'.


 El valor debería estar justificado así: '            803', 

 con espacios en blanco.


Entones Se me ocurrió hacer un pequeño código para ello y a lo mejor lo necesiten para otras cosas.


Uso la función que te agrega los ceros a la izquierda según la cantidad de caracteres que se le haya asignado a la variable. aqui se los dejo:

  DATA: lv_val   TYPE char15,    "Variable contiene el valor
        lv_cont  TYPE i,         "Contador

             " datos de prueba para visualizar y comparar el resultado
        lv_val2  TYPE char15,
        lv_val3  TYPE char15.
       
" Asignamos un valores a la variable lv_var
        lv_val = '8004'. 
        lv_val2 = '8004'.
        lv_val3 = '8004'.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

       EXPORTING
       INPUT         = lv_val

       IMPORTING
       OUTPUT        = lv_val.

   " Función para valor de Prueba con ceros.

   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

       EXPORTING
       INPUT         = lv_val2

       IMPORTING
       OUTPUT        = lv_val2.


*   este código cabía los ceros de la izquierda 
*   en espacios vacíos
*   hasta que encuentre un número diferente y ahí para.
    WHILE lv_val+lv_cont(1) = 0. 

            lv_val+lv_cont(1) = ''.
        lv_cont = lv_cont + 
1. " sumando 1 al contador

 ENDWHILE.


"Muestra la variable justificada
 WRITE:/ 'Valor Justificado     ', lv_val. 
"Muestra la variable con ceros
 WRITE:/ 'Valor Con ceros      ', lv_val2. 

"Muestra la variable son justificar
 WRITE:/ 'Valor sin Justificar ', lv_val3.



RESULTADO:




Y PROBLEMA SOLUCIONADO...

__________________________________________________________________________________


CONVERSIÓN DE VARIABLE TIPO MONEDA  A CARACTER




Esta vez tenemos un problema al realizar un batch input.
El el recording tenemos un campo de moneda, y el batch no acepta asignaciones de tipo wrbtr por lo tanto una de las soluciones es pasar e valor a cadena, pero que pasa si solo asignamos el valor a la variable cadena, o sorpresa el valor no aparece ya que se a ido hacia la izquierda, entonces lo que tenemos que hacer es usar un WRITE para la conversión, aquí les dejo el código.

DATA:
      lv_wrbtr_char(13) TYPE c,     " variable caracter
      lv_wrbtr          TYPE wrbtr. " Variable con valor decimal

      

lv_wrbtr = '1239.34'.

" transfiere Valor a Variable tipo Caracter


WRITE lv_wrbtr TO lv_wrbtr_char CURRENCY 'PEN'.



y problema solucionado....


__________________________________________________________________________________

AGREGAR CAMPO A ESTRUCTURA STANDARD





















Luego, botón nuevo…

























Creas la estructura con los campos adicionales que quieras, ojo siempre comenzar dichos campos con ZZ…..lo que deseen.






















Y LISTO PROBLEMA SOLUCIONADO...


__________________________________________________________________________________


CREAR TYPES INCLUYENDO UNA ESTRUCTURA

TYPES:  BEGIN   OF  ty_est.
" en caso de quere adicionar un campo más se agrega TYPES: y adicionamos 
" los campo que querramos.
TYPES:  zers    TYPE i.                " incluso podemos adicionar un campo más

              INCLUDE STRUCTURE ZEHR_PA0185IMP. " La estructura

TYPES:  END     OF ty_est.


Y LISTO ESTRUCTURA CREADA...

__________________________________________________________________________________



DOBLE CLIC EN REGISTRO PARA EJECUTAR UNA TX




    Para Solucionar el inconveniente se realiza lo siguiente:
  Dentro de nuestro User_Command agregamos estas lineas de         código.
  
  Hay que tener en cuenta si los datos que vamos a pasar a la    transacción tiene ID, si es así no tendrán ningún problema.
   
  Nota: lo que esta de rojo es lo que cambia. Lo de verde va exactamente igual.






__________________________________________________________________________________

REGRESAR A LA PANTALLA DE SELECCIÓN O DYNPRO ANTERIOR


Saludos Amigos, casi siempre me encuentro con colegas que tienen problemas con regresar siempre a su pantalla de selección a la una dynpro anterior. 

aquí les dejo el código, pequeño, pero no me negarán que es de gran ayuda.


Opción 1 : SCREEN 0.

  LEAVE SCREEN.


Opción2 : LEAVE TO SCREEN 0


2 comentarios:

  1. DATA: lv_dato(14) TYPE C.

    lv_dato = 'OFV'.

    WRITE :/ LV_DATO.

    SHIFT lv_dato RIGHT DELETING TRAILING SPACE.

    WRITE :/ LV_DATO.

    ResponderEliminar
    Respuestas
    1. Muy buena, lo bueno es usar la lógica y tenemos la función para cualquier otro caso donde se necesite agregar ceros a la izquierda.

      Saludos.

      Eliminar

A call-to-action text Contact us