Ver Mensaje Individual
  #1  
Viejo 19/11/12, 01: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