Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in Report....

Former Member
0 Likes
542

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
515

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

4 REPLIES 4
Read only

Former Member
0 Likes
515

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

Read only

Former Member
0 Likes
516

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

Read only

Former Member
0 Likes
515

Errors see

1) Change to

MESSAGE E000(ZBADRI_MSG).

2) Give

If not T_MARA_MARD[] is initial.

before SELECT... FROM MAKT

Cheers,

Thomas.

Read only

Former Member
0 Likes
515

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