MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 19/11/12, 02:50:17
Anthony Martinez Anthony Martinez is offline
Member
 
Fecha de Ingreso: nov 2012
Mensajes: 30
Post FUNCIONES como crear y llamarlas

Buenas noches a toda la comunidad recien estoy aprendiendo el lenguaje ABAP y en el ejercicio que desarrolle tengo unas llamadas de funciones y la respectiva creacion de cada funcion, lo que no comprendo es a que se debe o que estoy haciendo mal al llamar a una funcion de la sgte manera en esta linea: PERFORM FILL_RIGHT_CHARACTERS USING '*' CHANGING TEXTO2 porque al querer activar mi programita me sale error justo en esta linea en que llamo a esta funcion en cambio si esta linea la comento ya puedo activar mi programita, pero a que se debe el error ?? no comprendo, por favor desearia el apoyo de la comunidad del foro para despejarme esta duda y entender a que se debe el error y como seria la forma correcta de llamar a esta funcion?.
El codigo que desarrolle es el siguiente:


TYPES: X_LINES TYPE STRING.
DATA: T_TABLE TYPE STANDARD TABLE OF X_LINES.

FIELD-SYMBOLS: <FS_TABLE> LIKE LINE OF T_TABLE.

DATA: TEXTO2(30) TYPE C,
AUX_TEXT(30) TYPE C,
V_LEN TYPE I,
V_LONG TYPE I,
AUV TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK DEC_TO_BIN2 WITH FRAME.
PARAMETERS:
P_TEXTO(20) TYPE C.
SELECTION-SCREEN END OF BLOCK DEC_TO_BIN2.

START-OF-SELECTION.
PERFORM INICIALIZAR4.
* PERFORM FILL_RIGHT_CHARACTERS USING '*' CHANGING TEXTO2.
PERFORM IMPRIMIR3 USING TEXTO2.

PERFORM INICIALIZAR4.
PERFORM CAPITALIZE_LETTERS CHANGING TEXTO2.
PERFORM IMPRIMIR3 USING TEXTO2.

PERFORM INICIALIZAR4.
PERFORM SPLIT_LONG_TEXT TABLES T_TABLE USING TEXTO2.
PERFORM IMPRIMIR_TABLA TABLES T_TABLE.

PERFORM INICIALIZAR4.
PERFORM REVERSE_STRING USING TEXTO2.
PERFORM IMPRIMIR3 USING TEXTO2.


FORM INICIALIZAR4.
TEXTO2 = P_TEXTO.
SKIP 1.
ENDFORM.

FORM IMPRIMIR_TABLA TABLES T_TAB.
LOOP AT T_TAB
ASSIGNING <FS_TABLE>.
WRITE:/ <FS_TABLE>.
ENDLOOP.
ENDFORM.

FORM IMPRIMIR3 USING L_TEXTO.
WRITE:/ TEXTO2.
ENDFORM.

*LLENA UNA CADENA DE CARACTERES A LA DERECHA
FORM FILL_RIGTH_CHARACTERS USING L_CHAR CHANGING L_TEXTO.

V_LEN = STRLEN( L_TEXTO ).
DESCRIBE FIELD L_TEXTO LENGTH V_LONG IN CHARACTER MODE.
V_LEN = V_LONG - V_LEN.

DO V_LEN TIMES.
CONCATENATE L_TEXTO L_CHAR INTO L_TEXTO.
ENDDO.

ENDFORM.

*CAPITALIZA UN TEXTO DADO
FORM CAPITALIZE_LETTERS CHANGING L_TEXTO.
TRANSLATE L_TEXTO TO LOWER CASE.
SPLIT L_TEXTO AT SPACE INTO TABLE T_TABLE.
CLEAR L_TEXTO.

LOOP AT T_TABLE ASSIGNING <FS_TABLE>.
V_LONG = STRLEN( <FS_TABLE> ).
V_LONG = V_LONG - 1.
AUX_TEXT = <FS_TABLE>+0(1).
TRANSLATE AUX_TEXT TO UPPER CASE.
CONCATENATE AUX_TEXT <FS_TABLE>+1(V_LONG) INTO AUX_TEXT.
CONCATENATE L_TEXTO AUX_TEXT INTO L_TEXTO SEPARATED BY SPACE.
SHIFT L_TEXTO LEFT DELETING LEADING SPACE.
ENDLOOP.
ENDFORM.


FORM SPLIT_LONG_TEXT TABLES T_TAB USING L_TEXTO.

CALL FUNCTION 'RSDG_WORD_WRAP'
EXPORTING
TEXTLINE = L_TEXTO
DELIMITER = SPACE
TABLES
OUT_LINES = T_TAB
EXCEPTIONS
OUTPUTLEN_TOO_LARGE = 1
OTHERS = 2.

DESCRIBE TABLE T_TAB LINES V_LEN.
DELETE T_TAB INDEX V_LEN.
ENDFORM.

*INVIERTE UNA CADENA
FORM REVERSE_STRING CHANGING L_TEXTO.

CALL FUNCTION 'STRING_REVERSE'
EXPORTING
STRING = L_TEXTO
LANG = SY-LANGU
IMPORTING
RSTRING = L_TEXTO
EXCEPTIONS
TOO_SMALL = 1
OTHERS = 2.
ENDFORM.
Responder Con Cita
  #2  
Viejo 19/11/12, 07:50:18
jarabas jarabas is offline
Senior Member
 
Fecha de Ingreso: ene 2010
Mensajes: 109
más información

Hola.

por lo que veo en tú código tienes un error o en la llamada o en la subrutina en si.

invocas la subrutina de la siguiente manera:
PERFORM FILL_RIGHT_CHARACTERS USING '*' CHANGING TEXTO2

y la subrutina
FORM FILL_RIGTH_CHARACTERS USING L_CHAR CHANGING L_TEXTO.

el error que te da el sistema es que no está declarado el párrafo?

Un saludo.
Responder Con Cita
  #3  
Viejo 20/11/12, 00:01:11
Anthony Martinez Anthony Martinez is offline
Member
 
Fecha de Ingreso: nov 2012
Mensajes: 30
Smile FUNCIONES como crear y llamarlas

Hola JARABAS gracias por responder,pero no entiendo tu respuesta "el error que te da el sistema es que no está declarado el párrafo?" ,si te refieres al '*' es solo el valor asterisco que lo paso como parametro.
Responder Con Cita
  #4  
Viejo 20/11/12, 08:56:59
jarabas jarabas is offline
Senior Member
 
Fecha de Ingreso: ene 2010
Mensajes: 109
Hola.

Me refiero a que error de muestra el sistema cuando intentas activar el programa.

De todos modos te he puesto en negrita el posible error que ocasiona que no te active el programa.
la invocación al párrafo y el nombre del párrafo no son iguales.

Me refería a si el sistema te muestra este mensaje:
"The FORM "PARRAFO" does not exist."

Un saludo.
Responder Con Cita
  #5  
Viejo 20/11/12, 18:49:27
Anthony Martinez Anthony Martinez is offline
Member
 
Fecha de Ingreso: nov 2012
Mensajes: 30
Thumbs up Error Solucionado

Si jarabas tienes razon el parrafo que utilizo para invocar es distinto al nombre de la funcion en si, no observe bien la sintaxis del parrafo, gracias jarabas por tu observacion y darme la solucion.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 08:53:14.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web