‎2006 Jul 20 1:15 PM
Hi experts,
Pls check the report, i am not getting the output. Some problem is there at the output internal table T_OUTPUT. Please have a look at it.
TABLES : MARA, MARC, MARD, MAKT.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : MAT_TYP FOR MARA-MTART, "material type
PLANT FOR MARD-WERKS. "plant
SELECTION-SCREEN : END OF BLOCK B1.
DATA : BEGIN OF T_MAKT OCCURS 0,
MATNR TYPE MATNR, "material number
MAKTX TYPE MAKTX, "material description
END OF T_MAKT.
DATA : BEGIN OF T_MARA_MARD OCCURS 0,
MATNR TYPE MATNR, "material number
MEINS TYPE MEINS, "unit of measure
LGORT TYPE LGORT_D, "storage location
END OF T_MARA_MARD.
DATA : BEGIN OF T_OUTPUT OCCURS 0,
MATNR TYPE MATNR,
MEINS TYPE MEINS,
LGORT TYPE LGORT_D,
MAKTX TYPE MAKTX,
END OF T_OUTPUT.
PERFORM GET_T_MARA_MARD.
*PERFORM DISP_T_MARA_MARD.
PERFORM GET_T_MAKT.
PERFORM DISP_T_MAKT.
*PERFORM GET_T_OUTPUT.
*PERFORM DISP_T_OUTPUT.
&----
*& Form GET_T_MARA_MARD
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_T_MARA_MARD .
SELECT MAMATNR MAMEINS MD~LGORT
INTO CORRESPONDING FIELDS OF TABLE T_MARA_MARD
FROM
MARA AS MA
INNER JOIN
MARD AS MD
ON MAMATNR = MDMATNR
WHERE
MTART IN MAT_TYP AND WERKS IN PLANT.
IF SY-SUBRC NE 0.
MESSAGE S000(ZBADRI_MSG).
ENDIF.
ENDFORM. " GET_T_MARA_MARD
&----
*& Form DISP_T_MARA_MARD
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISP_T_MARA_MARD .
LOOP AT T_MARA_MARD.
WRITE : /02 T_MARA_MARD-MATNR,
20 T_MARA_MARD-MEINS,
35 T_MARA_MARD-LGORT.
ENDLOOP.
ENDFORM. " DISP_T_MARA_MARD
&----
*& Form GET_T_MAKT
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_T_MAKT .
SELECT MATNR
MAKTX FROM MAKT
INTO TABLE T_MAKT
FOR ALL ENTRIES IN T_MARA_MARD
WHERE
MATNR = T_MARA_MARD-MATNR AND SPRAS = 'EN'.
ENDFORM. " GET_T_MAKT
&----
*& Form DISP_T_MAKT
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISP_T_MAKT .
LOOP AT T_MAKT.
WRITE : /70 T_MAKT-MAKTX.
ENDLOOP.
ENDFORM. " DISP_T_MAKT
&----
*& Form GET_T_OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_T_OUTPUT .
LOOP AT T_MARA_MARD.
T_OUTPUT-MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MEINS = T_MARA_MARD-MEINS.
T_OUTPUT-LGORT = T_MARA_MARD-LGORT.
READ TABLE T_MAKT WITH KEY MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MAKTX = T_MAKT-MAKTX.
ENDLOOP.
ENDFORM. " GET_T_OUTPUT
&----
*& Form DISP_T_OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISP_T_OUTPUT .
LOOP AT T_OUTPUT.
WRITE : /02 T_OUTPUT-MATNR,
20 T_OUTPUT-MEINS,
35 T_OUTPUT-LGORT,
70 T_OUTPUT-MAKTX.
ENDLOOP.
ENDFORM. " DISP_T_OUTPUT
Thanks in advance.
Points will be rewarded.
‎2006 Jul 20 1:24 PM
hi,
FORM GET_T_OUTPUT .
LOOP AT T_MARA_MARD.
T_OUTPUT-MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MEINS = T_MARA_MARD-MEINS.
T_OUTPUT-LGORT = T_MARA_MARD-LGORT.
READ TABLE T_MAKT WITH KEY MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MAKTX = T_MAKT-MAKTX.
***********************
Append t_output.
clear t_output.
*****************
ENDLOOP.
i think this is helpful to u.
Regards,
subha
‎2006 Jul 20 1:23 PM
Couple of highlights...
First you have the performs commented (I presume it is just a mistake)
Secondly,
FORM GET_T_OUTPUT .
LOOP AT T_MARA_MARD.
T_OUTPUT-MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MEINS = T_MARA_MARD-MEINS.
T_OUTPUT-LGORT = T_MARA_MARD-LGORT.
READ TABLE T_MAKT WITH KEY MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MAKTX = T_MAKT-MAKTX.
ENDLOOP.
In the above code you are missing the MODIFY or APPEND statement to T_OUTPUT. If you collect the information in T_OUTPUT only than you would be to print it.
Regards
Anurag
‎2006 Jul 20 1:24 PM
hi,
FORM GET_T_OUTPUT .
LOOP AT T_MARA_MARD.
T_OUTPUT-MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MEINS = T_MARA_MARD-MEINS.
T_OUTPUT-LGORT = T_MARA_MARD-LGORT.
READ TABLE T_MAKT WITH KEY MATNR = T_MARA_MARD-MATNR.
T_OUTPUT-MAKTX = T_MAKT-MAKTX.
***********************
Append t_output.
clear t_output.
*****************
ENDLOOP.
i think this is helpful to u.
Regards,
subha
‎2006 Jul 20 1:24 PM
Errors see
1) Change to
MESSAGE E000(ZBADRI_MSG).2) Give
If not T_MARA_MARD[] is initial.before SELECT... FROM MAKT
Cheers,
Thomas.
‎2006 Jul 20 1:25 PM
Change the code in the subroutine get_t_makt as below.
IF NOT t_mara_mard[] IS INITIAL.
SELECT matnr
maktx FROM makt
INTO TABLE t_makt
FOR ALL ENTRIES IN t_mara_mard
WHERE
matnr = t_mara_mard-matnr AND spras = sy-langu.
ENDIF.
I have made some changes to the code you had pasted. Try the code below.
TABLES : mara, marc, mard, makt.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : mat_typ FOR mara-mtart, "material type
plant FOR mard-werks. "plant
SELECTION-SCREEN : END OF BLOCK b1.
DATA : BEGIN OF t_makt OCCURS 0,
matnr TYPE matnr, "material number
maktx TYPE maktx, "material description
END OF t_makt.
DATA : BEGIN OF t_mara_mard OCCURS 0,
matnr TYPE matnr, "material number
meins TYPE meins, "unit of measure
lgort TYPE lgort_d, "storage location
END OF t_mara_mard.
DATA : BEGIN OF t_output OCCURS 0,
matnr TYPE matnr,
meins TYPE meins,
lgort TYPE lgort_d,
maktx TYPE maktx,
END OF t_output.
PERFORM get_t_mara_mard.
PERFORM get_t_makt.
PERFORM disp_t_makt.
PERFORM get_t_output.
PERFORM disp_t_output.
FORM get_t_mara_mard .
SELECT mamatnr mameins md~lgort
INTO CORRESPONDING FIELDS OF TABLE t_mara_mard
FROM
mara AS ma
INNER JOIN
mard AS md
ON mamatnr = mdmatnr
WHERE
mtart IN mat_typ AND werks IN plant.
IF sy-subrc NE 0.
MESSAGE s000(zbadri_msg).
ENDIF.
ENDFORM. " GET_T_MARA_MARD
FORM disp_t_mara_mard .
LOOP AT t_mara_mard.
WRITE : /02 t_mara_mard-matnr,
20 t_mara_mard-meins,
35 t_mara_mard-lgort.
ENDLOOP.
ENDFORM. " DISP_T_MARA_MARD
FORM get_t_makt .
IF NOT t_mara_mard[] IS INITIAL.
SELECT matnr
maktx FROM makt
INTO TABLE t_makt
FOR ALL ENTRIES IN t_mara_mard
WHERE
matnr = t_mara_mard-matnr AND spras = sy-langu.
ENDIF.
ENDFORM. " GET_T_MAKT
FORM disp_t_makt .
LOOP AT t_makt.
WRITE : /70 t_makt-maktx.
ENDLOOP.
ENDFORM. " DISP_T_MAKT
FORM get_t_output .
LOOP AT t_mara_mard.
t_output-matnr = t_mara_mard-matnr.
t_output-meins = t_mara_mard-meins.
t_output-lgort = t_mara_mard-lgort.
READ TABLE t_makt WITH KEY matnr = t_mara_mard-matnr.
IF sy-subrc EQ 0.
t_output-maktx = t_makt-maktx.
ENDIF.
APPEND t_output.
ENDLOOP.
ENDFORM. " GET_T_OUTPUT
FORM disp_t_output .
LOOP AT t_output.
WRITE : /02 t_output-matnr,
20 t_output-meins,
35 t_output-lgort,
70 t_output-maktx.
ENDLOOP.
ENDFORM. " DISP_T_OUTPUT
-Kiran
*Please mark useful answers
Message was edited by: Kiran Raorane