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