Anuncio

Colapsar
No hay anuncio todavía.

Trabajar con info. de un FRC y otra 2 tablas

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Trabajar con info. de un FRC y otra 2 tablas

    hola

    Estoy aprendiendo a programar en ABAP y ahora tengo una gran duda con un programa.
    Este se supone que debe de arrojar una serie de datos dd 3 tablas que aunque ya lo habia hecho todo en un select se requiere que se haga llamando a un RFC el cuan ya hice y que es de dos tabla MARD y MBEW pero este codigo me trae lo que tengo en MARD pero lo que tengo en MBEW me trae el mismo dato para todos los materiales y la tercera y cuarta tabla que es MARA y MAKT tambien solo me trae el mismo dato para todos los Materiales.

    En si no funciona

    aqui les pego el codigo

    *&---------------------------------------------------------------------*
    *& Report ZMM_PRACTICA_UNION_RFC_AOC *
    *& *
    *&---------------------------------------------------------------------*
    *& *
    *& *
    *&---------------------------------------------------------------------*

    REPORT ZMM_PRACTICA_UNION_RFC_AOC.

    *.......................DEFINICIÓN DE TABLAS...........................*

    TABLES: MARD, "Datos de almacén para el material
    MBEW, "Valoración de material
    MARA, "Datos generales material
    MAKT. "Textos breves de material


    *....................DEFINICIÓN DE TABLAS INTERNAS.....................*


    DATA: TA_MARD LIKE MARD OCCURS 0 WITH HEADER LINE.

    DATA: TA_MBEW LIKE MBEW OCCURS 0 WITH HEADER LINE.

    DATA: TA_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.

    DATA: TA_MAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.

    DATA: MEINS LIKE MARA-MEINS.
    DATA: MAKTX LIKE MAKT-MAKTX.

    DATA: BEGIN OF TA_UNI OCCURS 0,
    WERKS LIKE MARD-WERKS, "Centro
    LGORT LIKE MARD-LGORT, "Almacén
    * MEINS,
    * MAKTX,
    MEINS LIKE MARA-MEINS,
    MAKTX LIKE MAKT-MAKTX,
    MATNR LIKE MARD-MATNR, "Material
    LABST LIKE MARD-LABST, "Stock valorado de libre utilización
    VERPR LIKE MBEW-VERPR, "Precio medio variable
    VMSAL LIKE MBEW-VMSAL, "Valor de stock total en el periodo
    END OF TA_UNI.


    *.................SOLICITUD DE PARAMETROS DEL USUARIO..................*


    SELECTION-SCREEN BEGIN OF BLOCK PRM WITH FRAME TITLE PRM.

    *PARAMETERS: PA_MATNR LIKE MARA-MATNR.
    PARAMETERS: PA_WERKS LIKE MARD-WERKS.
    PARAMETERS: PA_LGORT LIKE MARD-LGORT.

    SELECTION-SCREEN END OF BLOCK PRM.

    *..............................INICIALIZACIÓN..... .....................*

    INITIALIZATION.

    MOVE TEXT-000 TO PRM.

    *...................PERFORM PARA ORDEN DE EJECUCIÓN....................*


    START-OF-SELECTION.

    PERFORM LLAMADO_RFC.
    PERFORM LLENADO_TA_UNI.
    * PERFORM LLENADO_DATO_MBEW.
    PERFORM BUSQUEDA.
    PERFORM IMPRESION_ENC.
    PERFORM IMPRESION_TABLA.

    END-OF-SELECTION.


    *.....................LLAMADA DEL RFC AL PROGRAMA......................*


    FORM LLAMADO_RFC.

    CALL FUNCTION 'ZMM_RFC_STOCK_AOC'
    EXPORTING
    P_WERKS = PA_WERKS
    P_LGORT = PA_LGORT
    * IMPORTING
    * CONTADOR1 =
    * CONTADOR2 =
    TABLES
    T_MARD = TA_MARD
    T_MBEW = TA_MBEW
    EXCEPTIONS
    WERKS_VACIO = 1
    WERKS_NO_EXISTE = 2
    LGORT_VACIO = 3
    LGORT_NO_EXISTE = 4
    NO_ENCONTRO_REGISTROS = 5
    OTHERS = 6
    .
    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.


    *.........LLAMADO DE DATOS DE LA TABLA TA_MARD A TA_UNI.............*

    FORM LLENADO_TA_UNI.

    LOOP AT TA_MARD.

    MOVE-CORRESPONDING TA_MARD TO TA_UNI.

    APPEND TA_UNI.

    ENDLOOP.

    ENDFORM.

    *...........LLAMADO DE DATOS DE LA TABLA TA_MBEW A TA_UNI.............*


    FORM LLENADO_DATO_MBEW.


    *READ TABLE TA_MBEW WITH KEY MATNR = TA_MBEW-MATNR.
    READ TABLE TA_MBEW WITH KEY VERPR = TA_MBEW-VERPR.
    READ TABLE TA_MBEW WITH KEY VMSAL = TA_MBEW-VMSAL.

    MOVE TA_MBEW-VERPR TO TA_UNI-VERPR.
    MOVE TA_MBEW-VMSAL TO TA_UNI-VMSAL.

    **MOVE-CORRESPONDING TA_MBEW TO TA_UNI.

    APPEND TA_UNI.

    ENDFORM.


    *............LLENADO DEL CAMPO MAINS Y MAKTX A LA TA_UNI..............*


    FORM BUSQUEDA.

    LOOP AT TA_MARD.

    SELECT SINGLE MARA~MEINS
    MAKT~MAKTX
    INTO (MARA-MEINS, MAKT-MAKTX)
    FROM MARA INNER JOIN MAKT
    ON MARA~MATNR EQ MAKT~MATNR
    INNER JOIN MARD
    ON MAKT~MATNR EQ MARD~MATNR
    WHERE MAKT~MATNR = MARA~MATNR.

    ENDLOOP.

    APPEND TA_UNI.

    ENDFORM.


    * ..............Para poner un texto enmarcado y con color..........*


    FORM IMPRESION_ENC.

    NEW-LINE NO-SCROLLING.
    ULINE AT 45(39).
    NEW-LINE NO-SCROLLING.
    WRITE AT 45 '|** ***RESULTADOS DE LA BUSQUEDA*** **|' COLOR
    COL_HEADING INTENSIFIED ON.
    NEW-LINE NO-SCROLLING.
    ULINE AT 45(39).


    WRITE: / .

    ENDFORM.


    *....................IMPRESIÓN ENCABEZADO DE LA TA_UNI.................*

    FORM IMPRESION_TABLA.

    ULINE /1(132).

    WRITE: / 'Centr Alm.UM Texto breve de material Material
    Stock Precio var. Valor stock total '
    COLOR COL_POSITIVE INTENSIFIED OFF.

    WRITE 5'|'.
    WRITE 10 '|'.
    WRITE 14 '|'.
    WRITE 54 '|'.
    WRITE 75 '|'.
    WRITE 92 '|'.
    WRITE 110 '|'.
    WRITE 132 '|'.

    ULINE /1(132).

    *......................IMPRESIÓN TABLA_UNI............................*

    LOOP AT TA_UNI.

    WRITE: / TA_UNI-WERKS COLOR COL_HEADING INTENSIFIED OFF,
    TA_UNI-LGORT COLOR COL_HEADING INTENSIFIED OFF,
    MARA-MEINS COLOR COL_HEADING INTENSIFIED OFF,
    MAKT-MAKTX COLOR COL_NORMAL INTENSIFIED OFF,
    TA_UNI-MATNR COLOR COL_NORMAL INTENSIFIED OFF,
    TA_UNI-LABST COLOR COL_NORMAL INTENSIFIED OFF,
    TA_UNI-VERPR COLOR COL_NORMAL INTENSIFIED OFF,
    TA_UNI-VMSAL COLOR COL_NORMAL INTENSIFIED OFF.

    WRITE 5'|'.

    WRITE 10 '|'.
    WRITE 14 '|'.
    WRITE 54 '|'.
    WRITE 75 '|'.
    WRITE 92 '|'.
    WRITE 110 '|'.
    WRITE 132 '|'.

    ENDLOOP.

    ENDFORM.


    Ayudaaaaaa x fa.

  • #2
    ¿La función te devuelve las tablas mard y mbew bien?

    Como no se ve el código no se lo que estará haciendo.

    Echando un vistaszo rápido este select está mal:
    Código:
    LOOP AT TA_MARD.
    
    SELECT SINGLE MARA~MEINS
    MAKT~MAKTX
    INTO (MARA-MEINS, MAKT-MAKTX)
    FROM MARA INNER JOIN MAKT
    ON MARA~MATNR EQ MAKT~MATNR
    INNER JOIN MARD
    ON MAKT~MATNR EQ MARD~MATNR
    WHERE MAKT~MATNR = MARA~MATNR.
    
    ENDLOOP.
    El where debería ser así:
    Código:
    WHERE mara~matnr = ta_mard-matnr
    Prueba eso y seguimos mirando.

    Saludos
    "Soy el señor Lobo, arreglo problemas"
    http://sapymas.blogspot.com/

    Comentario

    Trabajando...
    X