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

REPORT

Former Member
0 Likes
523

Hi all,

I have written a report for MRP. My certainpart of code is not working. i have highlighted it in bold for your convenience. please correct my code if rquired.

REPORT zmrpreport.

TABLES : mdkp,

makt,

mkpf,

eban.

TYPE-POOLS : slis.

DATA: it_sort TYPE slis_t_sortinfo_alv,

it_fieldcat TYPE slis_t_fieldcat_alv,

it_commentary TYPE slis_t_listheader,

it_events TYPE slis_t_event,

it_events_f TYPE slis_t_event.

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,

gd_layout TYPE slis_layout_alv.

DATA: fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,

gd_layout1 TYPE slis_layout_alv.

*WORK AREA

DATA: wa_fieldcat LIKE LINE OF it_fieldcat,

wa_events LIKE LINE OF it_events,

wa_layout TYPE slis_layout_alv,

wa_print TYPE slis_print_alv,

wa_commentary TYPE slis_listheader.

DATA : it_mara TYPE TABLE OF mara WITH HEADER LINE.

DATA : it_j_2iregbal TYPE TABLE OF j_2iregbal.

DATA : it_zmatnumber TYPE TABLE OF zmatnumber WITH HEADER LINE.

DATA : it_mard TYPE TABLE OF mard WITH HEADER LINE.

DATA : it_mbew TYPE TABLE OF mbew WITH HEADER LINE.

DATA : it_mkpft TYPE TABLE OF mkpf WITH HEADER LINE.

DATA : it_msegt TYPE TABLE OF mseg WITH HEADER LINE.

DATA : wrk_receipts TYPE mseg-menge,

wrk_issues TYPE mseg-menge,

wrk_matnum TYPE mara-matnr,

wrk_ret TYPE mseg-menge.

DATA : wrk_index1 TYPE i.

DATA : wa_msegt LIKE LINE OF it_msegt.

DATA : BEGIN OF itab_output OCCURS 0,

matnr TYPE mara-matnr,

opstock LIKE mbew-lbkum,

clstock LIKE mbew-lbkum,

closestock LIKE mbew-lbkum,

issue LIKE mseg-menge,

rets LIKE mseg-menge,

rcpts LIKE mseg-menge,

END OF itab_output.

DATA : BEGIN OF ts_output OCCURS 0,

matnr TYPE mara-matnr,

maktx TYPE makt-maktx,

minbe TYPE mdkp-minbe,

bstfx TYPE mdkp-bstfx,

banfn TYPE eban-banfn,

menge TYPE eban-menge,

ekgrp TYPE eban-ekgrp,

opstock LIKE mbew-lbkum,

clstock LIKE mbew-lbkum,

issue LIKE mseg-menge,

rets LIKE mseg-menge,

rcpts LIKE mseg-menge,

END OF ts_output.

DATA : BEGIN OF it_output OCCURS 0,

matnr TYPE mara-matnr,

maktx TYPE makt-maktx,

minbe TYPE mdkp-minbe,

bstfx TYPE mdkp-bstfx,

banfn TYPE eban-banfn,

menge TYPE eban-menge,

ekgrp TYPE eban-ekgrp,

END OF it_output.

DATA : it_mdkp TYPE TABLE OF mdkp WITH HEADER LINE.

DATA : it_eban TYPE TABLE OF eban WITH HEADER LINE.

*DATA : it_output TYPE TABLE OF ts_output WITH HEADER LINE.

DATA : wa_output LIKE LINE OF it_output.

DATA : wa_output1 LIKE LINE OF itab_output.

DATA : wa_output2 LIKE LINE OF ts_output.

DATA : wa_mkpft LIKE LINE OF it_mkpft.

&----


*" Selection screen Definition

&----


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_date FOR mdkp-dsdat,

S_GROUP FOR MDKP-EKGRP,

s_plant FOR mdkp-plwrk NO-EXTENSION NO INTERVALS,

S_dat FOR mkpf-budat NO-EXTENSION NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b1.

*S_DATE = S_DATE+3(16).

IF SY-SUBRC = 0.

IF s_plant-LOW NE '' AND s_group NE '' AND s_date NE ''.

*SELECT **

FROM

mdkp

INTO CORRESPONDING FIELDS

OF TABLE it_mdkp

WHERE plwrk EQ s_plant-LOW

AND EKGRP IN S_GROUP

AND dsdat IN s_date.

    • AND minbe ne 0.*

ELSEIF

s_Plant-LOW NE ''

and s_group NE ''.

*SELECT **

FROM

mdkp

INTO CORRESPONDING FIELDS

OF TABLE it_mdkp

WHERE plwrk EQ s_plant-LOW

AND EKGRP IN S_GROUP.

ELSEIF

s_group NE ''

and s_date NE '' .

*SELECT **

FROM

mdkp

INTO CORRESPONDING FIELDS

OF TABLE it_mdkp

WHERE EKGRP IN S_GROUP

AND dsdat IN s_date.

endIF.

ENDIF.

IF IT_MDKP[] IS NOT INITIAL.

SELECT *

FROM

eban

INTO CORRESPONDING FIELDS

OF TABLE it_eban

FOR ALL ENTRIES IN it_mdkp

WHERE matnr EQ it_mdkp-matnr

AND erdat EQ it_mdkp-dsdat

AND estkz EQ 'B'

AND loekz NE 'X'

AND ebakz NE 'X'.

  • is there need of checking the qty as pr will be closed when entire qty is closed

  • will the same material get planned twice

ENDIF.

LOOP AT it_eban.

SELECT SINGLE * FROM makt WHERE matnr EQ it_eban-matnr.

IF sy-subrc EQ 0.

it_output-matnr = makt-matnr.

it_output-maktx = makt-maktx.

ENDIF.

READ TABLE it_mdkp WITH KEY matnr = it_eban-matnr.

IF sy-subrc EQ 0.

it_output-minbe = it_mdkp-minbe.

it_output-bstfx = it_mdkp-bstfx.

ENDIF.

it_output-banfn = it_eban-banfn.

it_output-menge = it_eban-menge.

it_output-ekgrp = it_eban-ekgrp.

APPEND it_output TO it_output.

ENDLOOP.

IF it_mdkp IS NOT INITIAL.

SELECT *

FROM

mbew

INTO TABLE

it_mbew

FOR ALL ENTRIES IN it_mdkp

WHERE matnr EQ it_mdkp-matnr.

ENDIF.

IF sy-subrc EQ 0.

LOOP AT it_mbew.

wa_output1-matnr = it_mbew-matnr.

wa_output1-clstock = it_mbew-lbkum .

wa_output1-opstock = it_mbew-lbkum .

wa_output1-closestock = it_mbew-lbkum .

APPEND wa_output1 TO itab_output .

CLEAR : it_mbew,

wa_output1.

ENDLOOP.

ENDIF.

S_dat = S_dat+3(8).

IF S_dat NE sy-datum.

SELECT *

FROM

mkpf

INTO TABLE it_mkpft

WHERE

budat LE sy-datum AND

budat GE S_dat.

IF sy-subrc EQ 0.

SELECT *

FROM

mseg

INTO TABLE it_msegt

FOR ALL ENTRIES IN it_mkpft

WHERE mblnr EQ it_mkpft-mblnr

AND bwart IN ('101','102','122','123','201','202').

IF sy-subrc EQ 0.

SORT it_msegt BY matnr.

LOOP AT it_msegt.

wrk_index1 = sy-tabix + 1.

READ TABLE it_msegt INTO wa_msegt INDEX wrk_index1.

IF it_msegt-matnr EQ wa_msegt-matnr.

*Adding up the Receipts and subtracting reversal of receipts

IF it_msegt-bwart EQ '101'.

wrk_receipts = wrk_receipts + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '102'.

wrk_receipts = wrk_receipts - it_msegt-menge.

ENDIF.

*Adding up the Issues and subtracting the reversals

IF it_msegt-bwart EQ '201'.

wrk_issues = wrk_issues + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '202'.

wrk_issues = wrk_issues - it_msegt-menge.

ENDIF.

*Adding up the Returns and subtracting the reversals

IF it_msegt-bwart EQ '122'.

wrk_ret = wrk_ret + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '123'.

wrk_ret = wrk_ret - it_msegt-menge.

ENDIF.

ELSE."when last record or no

*Adding up the Receipts and subtracting reversal of receipts

IF it_msegt-bwart EQ '101'.

wrk_receipts = wrk_receipts + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '102'.

wrk_receipts = wrk_receipts - it_msegt-menge.

ENDIF.

*Adding up the Issues and subtracting the reversals

IF it_msegt-bwart EQ '201'.

wrk_issues = wrk_issues + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '202'.

wrk_issues = wrk_issues - it_msegt-menge.

ENDIF.

*Adding up the Returns and subtracting the reversals

IF it_msegt-bwart EQ '122'.

wrk_ret = wrk_ret + it_msegt-menge.

ELSEIF it_msegt-bwart EQ '123'.

wrk_ret = wrk_ret - it_msegt-menge.

ENDIF.

READ TABLE itab_output INTO wa_output1 WITH KEY matnr = it_msegt-matnr. " changed mbewt instead of msegt

IF sy-subrc EQ 0.

wa_output1-rcpts = wrk_receipts.

wa_output1-issue = wrk_issues.

wa_output1-rets = wrk_ret.

wa_output1-opstock = wa_output1-clstock + wa_output1-issue + wa_output1-rets - wa_output1-rcpts.

MODIFY itab_output FROM wa_output1 INDEX sy-tabix TRANSPORTING opstock issue rets rcpts.

ENDIF.

CLEAR : wrk_receipts,

wrk_issues,

wrk_ret,

wrk_index1.

ENDIF.

CLEAR : wa_output1,

it_msegt,

wa_msegt.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

*IF sy-subrc EQ 0.

  • SELECT *

  • FROM

  • eban

  • INTO CORRESPONDING FIELDS

  • OF TABLE it_eban

  • FOR ALL ENTRIES IN it_mdkp

  • WHERE matnr EQ it_mdkp-matnr

  • AND erdat EQ it_mdkp-dsdat

  • AND estkz EQ 'B'

  • AND loekz NE 'X'

  • AND ebakz NE 'X'.

    • is there need of checking the qty as pr will be closed when entire qty is closed

    • will the same material get planned twice

*ENDIF.

*LOOP AT it_eban.

  • SELECT SINGLE * FROM makt WHERE matnr EQ it_eban-matnr.

  • IF sy-subrc EQ 0.

  • it_output-matnr = makt-matnr.

  • it_output-maktx = makt-maktx.

  • ENDIF.

  • READ TABLE it_mdkp WITH KEY matnr = it_eban-matnr.

  • IF sy-subrc EQ 0.

  • it_output-minbe = it_mdkp-minbe.

  • it_output-bstfx = it_mdkp-bstfx.

  • ENDIF.

  • it_output-banfn = it_eban-banfn.

  • it_output-menge = it_eban-menge.

  • it_output-ekgrp = it_eban-ekgrp.

  • APPEND it_output TO it_output.

*ENDLOOP.

LOOP AT it_output.

CLEAR ts_output.

wa_output2-matnr = it_output-matnr.

wa_output2-maktx = it_output-maktx.

wa_output2-minbe = it_output-minbe.

wa_output2-bstfx = it_output-bstfx.

wa_output2-banfn = it_output-banfn.

wa_output2-menge = it_output-menge.

wa_output2-ekgrp = it_output-ekgrp.

READ TABLE itab_output WITH KEY matnr = it_output-matnr.

IF sy-subrc = 0.

wa_output2-rcpts = itab_output-rcpts.

wa_output2-rets = itab_output-rets.

wa_output2-issue = itab_output-issue.

wa_output2-opstock = itab_output-opstock.

wa_output2-clstock = itab_output-clstock.

ENDIF.

APPEND wa_output2 TO ts_output.

ENDLOOP.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material No'.

fieldcatalog-col_pos = 1.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'Material Description'.

fieldcatalog-col_pos = 2.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MINBE'.

fieldcatalog-seltext_m = 'Reorder Point'.

fieldcatalog-col_pos = 3.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'BSTFX'.

fieldcatalog-seltext_m = 'Fixed Lot Size'.

fieldcatalog-col_pos = 4.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'BANFN'.

fieldcatalog-seltext_m = 'Purchase Requisition No'.

fieldcatalog-col_pos = 5.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'P.R.Qty'.

fieldcatalog-col_pos = 6.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'EKGRP'.

fieldcatalog-seltext_m = 'P GROUP'.

fieldcatalog-col_pos = 7.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'OPSTOCK'.

fieldcatalog-seltext_m = ' STOCK '.

fieldcatalog-col_pos = 8.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-zebra = 'X'.

IF ts_output[] IS NOT INITIAL.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-repid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • i_callback_user_command = 'USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

i_default = 'X'

i_save = 'A'

  • IS_VARIANT =

  • it_events = v_events

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = ts_output

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSE.

MESSAGE 'No Materials Planned' TYPE 'E'.

ENDIF.

please help in this regard.

useful suggestions will be rewarded.

with thanks,

karthi.

4 REPLIES 4
Read only

Former Member
0 Likes
481

what is this boss what do u want...???

Read only

0 Likes
481

i have 4 input for my report. in that if mrpdate, purchasing group and plant are given then i need to select values based on that or if only mrpdate and purchasing group are given then based on these two values i need to select values or if only purchasing group and plant are given then i need to select values based on that. but the highlighted select codings is not working for the first condition. so anyone could solve this please reply.

Read only

Former Member
0 Likes
481

Why do you test sy-subrc before performing the select?

Read only

Former Member
0 Likes
481

MYSELF HAVE SOLVED THIS ISSUE