SmartForm rs38l_fnam

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • fer_saikyo
    Junior Member
    • nov
    • 6

    #1

    SmartForm rs38l_fnam

    Hola! que significa ese tipo de dato y por cual lo puedo reemplazar? Mi SAP no lo tiene instalado y es la primera vez que lo voy a uilizar. Me podrian dar una mano, por favor? Gracias!!
  • emilio.acuna
    Junior Member
    • feb
    • 2

    #2
    nombre_modulo_funcion TYPE rs38l_fnam.

    Hola, ocurre isto conmigo también y no lo se que pasa

    Estoy haciendo un SmartForm copiado de uno estandard y mi codigo esta hecho asi:

    1) En en nodo interfase formulario y en la solapa Tablas hago la siguiente declaración:

    TAB1 LIKE TABLADIC1
    TAB2 LIKE TABLADIC2

    donde las tablas TABLADIC1 y TABLADIC2 son del diccionario SAP.

    2) En el nodo definiciones globales y en la solapa datos globales tengo:

    AUX_TAB1 LIKE TABLADIC1
    AUX_TAB2 LIKE TABLADIC2

    En la sopala Incialización tengo declarado:

    PERFORM FORM1.
    PERFORM FORM2.

    Hasta aqui no tengo errores.

    3) En la solapa Rutinas tengo lo siguiente error:

    Aleman: Zeile 0002 Sprachelement im Kontext nicht erlaubt
    Español: La partida 0002 en el contexto de la lengua no está permitida

    Codigo en esta solapa:

    DATA: BEGIN OFAUX_TAB1 OCCURS 0.
    INCLUDE STRUCTURE TABLADIC1.
    DATA: END OF AUX_TAB1.

    DATA: BEGIN OF AUX_TAB2 OCCURS 0.
    INCLUDE STRUCTURE TABLADIC2.
    DATA: END OF AUX_TAB2.

    DATA: nombre_modulo_funcion TYPE rs38l_fnam.

    FORM FORM1.
    CLEAR AUX_TAB1.
    REFRESH AUX_TAB1.

    CLEAR AUX_TAB2.
    REFRESH AUX_TAB2.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE AUX_TAB1
    FROM TABLADIC1.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE AUX_TAB2
    FROM TABLADIC1
    INNER JOIN AUX_TAB1 ON
    AUX_TAB1~CAMPO1 = AUX_TAB2~CAMPO1.

    ENDFORM.

    FORM FORM2.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
    formname = 'NOMBRESMARTFORM'
    IMPORTING
    fm_name = nombre_modulo_funcion
    EXCEPTIONS
    no_form = 1
    no_function_module = 2
    OTHERS = 3.

    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    CALL FUNCTION nombre_modulo_funcion
    TABLES
    TAB1 = AUX_TAB1
    EXCEPTIONS
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    OTHERS = 5.

    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    ENDFORM.


    Espero que alguien pueda ayudarme.

    Gracias por adelantado.

    Emilio Acuña.

    Comentario

    • cmejiab
      Junior Member
      • nov
      • 13

      #3
      El RS38L_FNAM

      Es un elemento de dato, q almacena el nombre de la funcion que genera el SmartForm (El SmartForm en el fondo crea una funcion).

      Comentario

      • Adriana Anestoso
        Junior Member
        • abr
        • 18

        #4
        Smartforms

        Originalmente publicado por emilio.acuna
        Hola, ocurre isto conmigo también y no lo se que pasa

        Estoy haciendo un SmartForm copiado de uno estandard y mi codigo esta hecho asi:

        1) En en nodo interfase formulario y en la solapa Tablas hago la siguiente declaración:

        TAB1 LIKE TABLADIC1
        TAB2 LIKE TABLADIC2

        donde las tablas TABLADIC1 y TABLADIC2 son del diccionario SAP.

        2) En el nodo definiciones globales y en la solapa datos globales tengo:

        AUX_TAB1 LIKE TABLADIC1
        AUX_TAB2 LIKE TABLADIC2

        En la sopala Incialización tengo declarado:

        PERFORM FORM1.
        PERFORM FORM2.

        Hasta aqui no tengo errores.

        3) En la solapa Rutinas tengo lo siguiente error:

        Aleman: Zeile 0002 Sprachelement im Kontext nicht erlaubt
        Español: La partida 0002 en el contexto de la lengua no está permitida

        Codigo en esta solapa:

        DATA: BEGIN OFAUX_TAB1 OCCURS 0.
        INCLUDE STRUCTURE TABLADIC1.
        DATA: END OF AUX_TAB1.

        DATA: BEGIN OF AUX_TAB2 OCCURS 0.
        INCLUDE STRUCTURE TABLADIC2.
        DATA: END OF AUX_TAB2.

        DATA: nombre_modulo_funcion TYPE rs38l_fnam.

        FORM FORM1.
        CLEAR AUX_TAB1.
        REFRESH AUX_TAB1.

        CLEAR AUX_TAB2.
        REFRESH AUX_TAB2.

        SELECT * INTO CORRESPONDING FIELDS OF TABLE AUX_TAB1
        FROM TABLADIC1.

        SELECT * INTO CORRESPONDING FIELDS OF TABLE AUX_TAB2
        FROM TABLADIC1
        INNER JOIN AUX_TAB1 ON
        AUX_TAB1~CAMPO1 = AUX_TAB2~CAMPO1.

        ENDFORM.

        FORM FORM2.
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
        formname = 'NOMBRESMARTFORM'
        IMPORTING
        fm_name = nombre_modulo_funcion
        EXCEPTIONS
        no_form = 1
        no_function_module = 2
        OTHERS = 3.

        IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

        CALL FUNCTION nombre_modulo_funcion
        TABLES
        TAB1 = AUX_TAB1
        EXCEPTIONS
        formatting_error = 1
        internal_error = 2
        send_error = 3
        user_canceled = 4
        OTHERS = 5.

        IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

        ENDFORM.


        Espero que alguien pueda ayudarme.

        Gracias por adelantado.

        Emilio Acuña.




        Hola!


        Veo que utilizas todo el codigo en el smartforms, y estas declarando dos veces las tablas, lo que puedes hacer esque tus tablas aux las declares type table of, lo que entiendo que quieres hacer en la sola de tablas de interface esque recibe esas tablas , entonces esas tablas las llenas desde un z, almenos asi yo lo ago y en el inicializacion de datos globales puedo hacer uso de ellas, pero antes pregunta si estan
        llenas.....,, espero averte ayudado

        aaaa!! y se las mandas con la funcion tipo rs38l_fnam osea:

        DATA: modulo_funcion TYPE rs38l_fnam.

        data t_likp type standard table of likp.


        ** lleno la tabla t_likp con un select o con lo que quieras

        CALL FUNCTION modulo_funcion
        TABLES
        Ta_LIKP = t_likp "Ta_likp es la tabla que declare en el interface del formulario en la solapa tables
        EXCEPTIONS
        formattting_error = 1
        internal_error = 2
        send_error = 3
        user_canceled = 4
        OTHERS = 5.
        *if sy-subrc <> 0.
        *endif.
        Editado por última vez por Adriana Anestoso; 08/11/2012, 15:14:21.

        Comentario

        • Anthony Martinez
          Member
          • nov
          • 30

          #5
          FORM 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?.
          Mi post lo crees en este link: http://www.mundosap.com/foro/showthr...993#post159993
          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.

          Comentario

          Trabajando...