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

need help with loop

Former Member
0 Likes
2,252

hallow

i need help with loop that i do for numbers of month between dates i give eg.

if i have to dates like l_datefrom 012007

and l_dateto like 032008

i wont to do this loop 14 times (the number of month between this 2 dates)

*---this i wont to run in the loop

012007 "l_datefrom

022007 "l_dateto

022007 "l_datefrom

032007 "l_dateto

032007 "l_datefrom

042007 "l_dateto

how i increase all times the month by one in the loop

and after 12 month also increase year?

best regards

i reward

do no_month times."14

loop at itab

CALL FUNCTION 'Z_GET_PRO

EXPORTING

project = gt_prps-psphi

date_from = l_datefrom

date_to = l_dateto.

append....

endloop.

enddo.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,753

lv_month = <diff in months>

data :

count type i,

month(2) type n.

year(4) type n.

Loop at Itab.

month = l_datefrom+0(2).

month = month + count.

move month to l_datefrom+0(2).

if month > 12.

month = month - 12.

year = l_datefrom+2(4) + 1.

concatenate month year into l_datefrom.

endif.

if count > lv_month.

exit.

endif.

month = month + 1.

move month to l_dateto+0(2).

CALL FUNCTION 'Z_GET_PRO

EXPORTING

project = gt_prps-psphi

date_from = l_datefrom

date_to = l_dateto.

count = count + 1.

append....

Endloop.

Cheers!!

Lokesh

Edited by: Lokesh Aggarwal on Jan 3, 2008 4:06 PM

Edited by: Lokesh Aggarwal on Jan 3, 2008 4:09 PM

11 REPLIES 11
Read only

Former Member
0 Likes
1,753

Code a Logic like below.

Months_between = ( DATETO2(4) - DATEFROM2(4) ) * 12 + ( DATETO(2) - DATEFROM(2) ).

Now Next step would be

DO Months_between Times

loop at itab

CALL FUNCTION 'Z_GET_PRO

EXPORTING

project = gt_prps-psphi

date_from = l_datefrom

date_to = l_dateto.

append....

endloop.

ENDDO

Hope this helps.

Trt and let me know.

Read only

0 Likes
1,753

hi Vinodh

i now the number of month between i have fm that calculate that what i wont is all time to increase the period for loop in 1

l_datefrom and l_dateto and if nom of month > 12

increase the year to .

Best Regards

Read only

former_member673464
Active Contributor
0 Likes
1,753

hi ,

try this..

parameters:

p_from(6) type n,

p_to(6) type n.

data:

v_from(4) type n,

v_to(4) type n,

v_years(4) type n,

v_months type n,

v_loop(4) type n.

v_from = p_from+2(4) .

v_to = p_to+2(4).

v_years = v_from - v_to.

v_from = p_from+0(2) .

v_to = p_to+0(2).

v_months = v_from - v_to.

v_loop = v_years * 12 + v_months.

do v_loop times.

write:/ sy-index.

enddo.

write:/ v_loop.

regards,

Veeresh

Read only

Former Member
0 Likes
1,754

lv_month = <diff in months>

data :

count type i,

month(2) type n.

year(4) type n.

Loop at Itab.

month = l_datefrom+0(2).

month = month + count.

move month to l_datefrom+0(2).

if month > 12.

month = month - 12.

year = l_datefrom+2(4) + 1.

concatenate month year into l_datefrom.

endif.

if count > lv_month.

exit.

endif.

month = month + 1.

move month to l_dateto+0(2).

CALL FUNCTION 'Z_GET_PRO

EXPORTING

project = gt_prps-psphi

date_from = l_datefrom

date_to = l_dateto.

count = count + 1.

append....

Endloop.

Cheers!!

Lokesh

Edited by: Lokesh Aggarwal on Jan 3, 2008 4:06 PM

Edited by: Lokesh Aggarwal on Jan 3, 2008 4:09 PM

Read only

0 Likes
1,753

hi Lokesh

thankes

how to declare field month and field years

and what i do in year 2010 and so on..?

Regards

Read only

0 Likes
1,753

Hi Ricardo,

I had already updated my previous post with type declarations... please check the same..

Data:

month(2) type n,

year(4) type n.

and I dont think there will be an issue for year 2010 and so on...

Lokesh

Read only

0 Likes
1,753

Yes but I do not want all those field s I need to create a new report where I shold be having only those 15-16 n fileds and with inclusion of serial number and customer description.

and showing the output the same way as MB51 does

Read only

0 Likes
1,753

hi Lokesh

thanks!

what about l_dateto i need that if for eg. i start from l_datefrom = 012007 so l_dateto = 022007 and if l_datefrom 022007 _dateto = 032007

Regards

Read only

0 Likes
1,753

Hi Ricardo,

That logic also I had updated in the post...

Put this code just before the FM call.

month = month + 1.

move month to l_dateto+0(2).

Lokesh

Read only

Former Member
0 Likes
1,753

Hi Gurus!

I have been asked to create a report which shall track the Lugger Bins.The report shows the movemnet list diplay through MB51 transaction .Now they want me to create a new report by either making a copy of MB51 transaction or a new report which will have only the below mentyioned fields in it .This new report has two extra fields which is not present in mb51 transaction.

Plant

storage location

movemnet type

material documnet number

material

material description

serial number(new)

quantity

unit of entry

posting date

user

customer

customer description(new)

documnet date

header text

entered on

entered at

name1

Can anyone help me out with this report , as I cheched mb51 program and its really difficult to copy it and use it for this program as lots of changes will be required.

Thanks

Read only

0 Likes
1,753

hi I had a similar req.. .check the below code

************************************************************************

  • REPORT RM07MLBS (Transaction MB52)

*

  • History:

  • July 2006 MS "n960980

  • changed output of first line in print modus. If you enter "n960980

  • user commands after function print, you get the list in "n960980

  • print modus view. "n960980

*

  • Jan. 2006 MS "n912093

  • added fields GLGMG,WGLGM,UMLMC,WUMLC,TRAME,WTRAM "n912093

  • into output list with parameter "c-no-out" "n912093

  • corrected documentation for field "Stock in transfer" "n912093

  • down with release 6.0 "n912093

  • added dynamic break-points from cp-group MMIM_REP_MB52 "n912093

  • März 2005 TW "n829722

  • authorization check should be always processed "n829722

*

  • Nov. 2004 MM : "AC0K020254

  • origin acceptance : process valuated block GR "AC0K020254

  • stock MARC-BWESB as hidden field "AC0K020254

  • July 2004 MM "n759412

  • Avoid shortdump DBIF_RSQL_INVALID_RSQL

*

  • Improvements : Nov 2003 TW "n667256

  • - enable Webreporting "n667256

  • - print the page numbers "n667256

  • - use function module for database commit for the update "n667256

  • of the parameters in table ESDUS. This allows to record "n667256

  • this transaction for a batch input session using "n667256

  • transaction SHDB "n667256

  • Feb. 2003 MM "n577268

  • ignore stocks or special stocks from plant level when "n577268

  • user selects via storage location "n577268

  • Jan. 2003 MM "n591618

  • report displayed stocks for plant although the user has "n591618

  • not the required authorization for that plant "n591618

  • Dec. 2002 MM "n579976

  • M7 393 when user deletes the initial display variant "n579976

*----

-


"n546707

  • note 546707 August 19th, 2002 MM "n546707

  • wrong parameters for AUTHORITY-CHECK 'F_BKPF_BUK' fixed "n546707

*----

-


"n531604

  • performance improved 4.6 and higher July 2002 MM "n531604

  • - consider settings from view V_MMIM_REP_PRINT "n531604

  • - choose flat or hierarchic list "n531604

  • - show the individual line of special stocks E and Q "n531604

  • - authority-check for values per company code "n531604

  • - work with a lean table ORGAN "n531604

  • - new function processing special stocks "n531604

  • - new function of parameter XLVORM "n531604

  • - evaluate and show the flag for deletion "n531604

  • - contents of parameters : "n531604

  • - in dialog mode : preset parameters from last run "n531604

  • - save the parameters during each run "n531604

*----

-


"n531604

*

  • note 494306 FI help dokumentation for parameters improved

  • Feb. 11th 2002 XJD

*

  • Note 155853: First version

  • Note 161442: Display variante possible again

  • Note 177898: MSKA/MSPR with duplicate entires, SELECT error

  • Note 182322: Error during authorization check for plant

  • Note 307852: Jump back to initial screen for empty selection

  • Note 311770: Batch selection

  • Note 353428: Value even for valuation area with 0 stock

  • Note 304353: New selection fields into the standard.

  • Note 388735: Abort COLLECT_OVERFLOW_TYPE_P due to note 353428

  • Note 407810: Typo-error causes unprecise values (follow up

  • of note 388735).

*

************************************************************************

  • List of stock quantities and values

************************************************************************

REPORT zrm07mlbs MESSAGE-ID m7 NO STANDARD PAGE HEADING LINE-SIZE 170.

*ENHANCEMENT-POINT RM07MLBS_G4 SPOTS ES_RM07MLBS STATIC.

*ENHANCEMENT-POINT RM07MLBS_G5 SPOTS ES_RM07MLBS.

*ENHANCEMENT-POINT RM07MLBS_G6 SPOTS ES_RM07MLBS STATIC.

*ENHANCEMENT-POINT RM07MLBS_G7 SPOTS ES_RM07MLBS.

*Enhancement : 11/13/07

*Custom program for Curbell to display the base unit of

*measure from Sq. Inch to Each. Added a perform to make the

*convertion.

************************************************************************

  • Data declarations

************************************************************************

  • Type pools

TYPE-POOLS: slis, imrep.

  • Database tables

TABLES: mara, makt, mard, mchb, mkol, mslb, mska, msku, mssa, mspr,

mssq, mbew, ebew, qbew, t134m, t001w, t001l, marc, t001, t001k,

t023, t024.

TABLES : sscrfields. "for the user-commands

  • working table for the entries of all stock tables

DATA: BEGIN OF collector OCCURS 0,

matnr LIKE mara-matnr,

werks LIKE t001w-werks,

lgort LIKE mard-lgort,

sobkz LIKE mkol-sobkz,

pspnr LIKE mspr-pspnr,

vbeln LIKE mska-vbeln,

posnr LIKE mska-posnr,

lifnr LIKE mslb-lifnr,

kunnr LIKE msku-kunnr,

lvorm LIKE mard-lvorm,

kzbws LIKE mssa-kzbws,

charg LIKE mchb-charg,

labst LIKE mard-labst,

insme LIKE mard-insme,

speme LIKE mard-speme,

einme LIKE mard-einme,

retme LIKE mard-retme,

umlme LIKE mard-umlme,

bwesb LIKE marc-bwesb, "AC0K020254

glgmg LIKE marc-glgmg, "n912093

trame LIKE marc-trame, "n912093

umlmc LIKE marc-umlmc, "n912093

END OF collector.

  • Internal tables

DATA: BEGIN OF header OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

werks LIKE t001w-werks,

name1 LIKE t001w-name1,

mtart LIKE mara-mtart,

matkl LIKE mara-matkl,

END OF header.

DATA: BEGIN OF bestand OCCURS 0,

  • Key fields

matnr LIKE mara-matnr,

werks LIKE t001w-werks,

lgort LIKE mard-lgort,

sobkz LIKE mkol-sobkz,

ssnum LIKE bickey-ssnum, "n531604

pspnr LIKE mspr-pspnr, "n531604

vbeln LIKE mska-vbeln, "n531604

posnr LIKE mska-posnr, "n531604

lifnr LIKE mkol-lifnr,

kunnr LIKE msku-kunnr,

kzbws LIKE mssa-kzbws,

charg LIKE mchb-charg,

  • Additional data (texts, unit, ...)

maktx LIKE marav-maktx,

bwkey LIKE mbew-bwkey,

mtart LIKE marav-mtart,

matkl LIKE marav-matkl,

meins LIKE marav-meins,

bwtty LIKE marc-bwtty,

xchar LIKE marc-xchar,

lgobe LIKE t001l-lgobe,

bwtar LIKE mcha-bwtar,

waers LIKE t001-waers,

name1 LIKE t001w-name1,

  • Quantities and currencies

labst LIKE mard-labst,

wlabs LIKE mbew-salk3,

insme LIKE mard-insme,

winsm LIKE mbew-salk3,

speme LIKE mard-speme,

wspem LIKE mbew-salk3,

einme LIKE mard-einme,

weinm LIKE mbew-salk3,

retme LIKE mard-retme,

wretm LIKE mbew-salk3,

umlme LIKE mard-umlme,

wumlm LIKE mbew-salk3,

glgmg LIKE marc-glgmg, "n912093

wglgm LIKE mbew-salk3, "n912093

trame LIKE marc-trame, "n912093

wtram LIKE mbew-salk3, "n912093

umlmc LIKE marc-umlmc, "n912093

wumlc LIKE mbew-salk3, "n912093

  • Dummy field

dummy TYPE alv_dummy,

  • Colour

farbe TYPE slis_t_specialcol_alv,

lvorm LIKE mard-lvorm,

  • valuated blocked GR stock "AC0K020254

bwesb LIKE marc-bwesb, "AC0K020254

wbwesb LIKE mbew-salk3, "AC0K020254

END OF bestand.

DATA: lt_bestand TYPE bestand,

wa_bestand TYPE bestand.

  • define a lean table organ

TYPES : BEGIN OF stype_organ,

werks LIKE t001w-werks,

bwkey LIKE t001w-bwkey,

name1 LIKE t001w-name1,

bukrs LIKE t001-bukrs,

waers LIKE t001-waers,

END OF stype_organ,

stab_organ TYPE STANDARD TABLE OF

stype_organ

WITH DEFAULT KEY.

DATA: g_t_organ TYPE stab_organ,

g_s_organ TYPE stype_organ.

  • define a buffer table for the MARD entries with flag

  • for deletion

TYPES : BEGIN OF stype_mard_lv,

matnr LIKE mard-matnr,

werks LIKE mard-werks,

lgort LIKE mard-lgort,

lvorm LIKE mard-lvorm,

END OF stype_mard_lv,

htab_mard_lv TYPE HASHED TABLE OF

stype_mard_lv

WITH UNIQUE KEY matnr werks lgort.

DATA : g_s_mard_lv TYPE stype_mard_lv,

g_t_mard_lv TYPE htab_mard_lv.

  • define a buffer table for the storage bins

TYPES : BEGIN OF stype_t001l,

werks LIKE t001l-werks,

lgort LIKE t001l-lgort,

lgobe LIKE t001l-lgobe,

END OF stype_t001l,

htab_t001l TYPE HASHED TABLE OF

stype_t001l

WITH UNIQUE KEY werks lgort.

DATA : g_s_t001l TYPE stype_t001l,

g_t_t001l TYPE htab_t001l.

  • define working areas for access table organ "n531604

TYPES : BEGIN OF stype_buffer, "n531604

werks LIKE t001w-werks,

bukrs LIKE t001-bukrs,

subrc LIKE syst-subrc,

END OF stype_buffer,

stab_buffer TYPE STANDARD TABLE OF

stype_buffer

WITH DEFAULT KEY.

DATA : g_s_buffer TYPE stype_buffer,

g_t_buffer TYPE stab_buffer.

  • Data for listviewer

DATA: repid LIKE sy-repid.

DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATA: keyinfo TYPE slis_keyinfo_alv.

DATA: color TYPE slis_t_specialcol_alv WITH HEADER LINE.

DATA: layout TYPE slis_layout_alv.

DATA: sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.

DATA: excluding TYPE slis_t_extab WITH HEADER LINE.

  • internal working table for events / for the headlines "n667256

DATA: gs_events TYPE slis_alv_event. "n667256

DATA: gt_events TYPE slis_t_event. "n667256

"n667256

  • for the header of the list, when alv grid is in use "n667256

DATA : gt_ueb TYPE slis_t_listheader, "n667256

gs_ueb TYPE slis_listheader. "n667256

  • Variants

DATA: variante LIKE disvariant,

variante_flat LIKE disvariant,

def_variante LIKE disvariant,

def_variante_f4 LIKE disvariant,

variant_exit(1) TYPE c.

*ENHANCEMENT-POINT RM07MLBS_01 SPOTS ES_RM07MLBS STATIC.

DATA : g_f_vari_hsq LIKE disvariant-variant,

g_f_vari_flt LIKE disvariant-variant.

  • working fields to save the initial display variants "n579976

DATA : g_f_vari_hsq_initial LIKE disvariant-variant, "n579976

g_f_vari_flt_initial LIKE disvariant-variant. "n579976

  • Global variables for handling ALV functionality

TABLES: mmim_rep_print.

DATA: alv_keyinfo TYPE slis_keyinfo_alv.

DATA: alv_variant LIKE disvariant.

DATA: alv_layout TYPE slis_layout_alv.

DATA: alv_repid LIKE sy-repid.

DATA: alv_print TYPE slis_print_alv.

DATA: alv_detail_func(30) TYPE c,

alv_color LIKE mmim_rep_print-color.

  • User settings for the checkboxes

DATA: oref_settings TYPE REF TO cl_mmim_userdefaults.

  • define working fields

DATA : g_cnt_col_pos TYPE i,

g_cnt_spos TYPE i.

DATA : g_flag_ok(01) TYPE c,

g_flag_mess_333(01) TYPE c,

g_flag_t001l(01) TYPE c.

DATA : g_cnt_variant_error TYPE i. "n667256

  • does the user want to suppress objects from plant level ? "n577268

DATA : g_flag_suppress_init_lgort(01) TYPE c. "n577268

DATA : BEGIN OF g_flag_sobkz,

vbeln(01) TYPE c,

pspnr(01) TYPE c,

lifnr(01) TYPE c,

kunnr(01) TYPE c,

END OF g_flag_sobkz.

CONSTANTS : c_no_out(01) TYPE c VALUE 'X',

c_out(01) TYPE c VALUE space.

  • flag to be set when INITIALIZATION was processed "n667256

DATA g_flag_initialization(01) TYPE c. "n667256

  • authorization check should be always processed "n829722

DATA t_flag_launched(01) TYPE c. "n829722

************************************************************************

  • Selection screen

************************************************************************

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

SELECT-OPTIONS:

matnr FOR mara-matnr MEMORY ID mat MATCHCODE OBJECT mat1,

werks FOR t001l-werks MEMORY ID wrk, "718285

lgort FOR t001l-lgort MEMORY ID lag,

charg FOR mchb-charg MEMORY ID cha MATCHCODE OBJECT mch1.

SELECTION-SCREEN END OF BLOCK abgrenzung.

*----


*

SELECTION-SCREEN BEGIN OF BLOCK lbs WITH FRAME TITLE text-070.

SELECT-OPTIONS:

matart FOR mara-mtart,

matkla FOR mara-matkl,

ekgrup FOR marc-ekgrp.

SELECTION-SCREEN END OF BLOCK lbs.

*----


*

  • for the selection os special stocks

SELECTION-SCREEN BEGIN OF BLOCK lb2 WITH FRAME TITLE text-071.

  • for the selection os special stocks

PARAMETERS : pa_sond LIKE rmmmb-kzlso

DEFAULT 'X'.

SELECT-OPTIONS:

so_sobkz FOR mkol-sobkz.

SELECTION-SCREEN END OF BLOCK lb2.

*----


*

SELECTION-SCREEN BEGIN OF BLOCK lb1 WITH FRAME TITLE text-080.

  • select only lines who contain at least one negative stock

PARAMETERS: negativ LIKE am07m-seneg.

  • Documentation for parameter XMCHB improved "n494306

PARAMETERS: xmchb LIKE am07m-mb52_xmchb "n494306

DEFAULT 'X'.

  • Checkbox to eliminate lines with zero stocks

PARAMETERS: nozero LIKE rmmmb-kznul.

  • Checkbox to disable value processing.

  • Documentation for parameter NOVALUES improved "n494306

PARAMETERS: novalues LIKE am07m-mb52_noval. "n494306

SELECTION-SCREEN END OF BLOCK lb1.

*----


*

SELECTION-SCREEN BEGIN OF BLOCK liste WITH FRAME TITLE text-005.

  • choose flat or hierarchic list "n531604

SELECTION-SCREEN BEGIN OF LINE. "n531604

SELECTION-SCREEN POSITION 1. "n531604

PARAMETERS : pa_hsq LIKE am07m-mb52_alv_hsq "n531604

DEFAULT 'X' "n531604

RADIOBUTTON GROUP alvv "n531604

USER-COMMAND alvv. "n531604

SELECTION-SCREEN COMMENT 3(40) text-006 "n531604

FOR FIELD pa_hsq. "n531604

SELECTION-SCREEN END OF LINE. "n531604

"n531604

SELECTION-SCREEN BEGIN OF LINE. "n531604

SELECTION-SCREEN POSITION 1. "n531604

PARAMETERS : pa_flt LIKE am07m-mb52_alv_flt "n531604

RADIOBUTTON GROUP alvv. "n531604

SELECTION-SCREEN COMMENT 3(40) text-007 "n531604

FOR FIELD pa_flt. "n531604

SELECTION-SCREEN END OF LINE. "n531604

  • parameters :

  • pa_grid type MB_XFELD

  • default 'X'

  • radiobutton group alv1,

  • pa_class type MB_XFELD

  • radiobutton group alv1.

PARAMETERS: p_vari LIKE disvariant-variant.

SELECTION-SCREEN END OF BLOCK liste.

*----


*

  • F4-Help for variant

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

************************************************************************

  • Main program

************************************************************************

AT SELECTION-SCREEN.

  • check radiobuttons "n667256

IF pa_hsq IS INITIAL. "n667256

IF pa_flt IS INITIAL. "n667256

  • not allowed "n667256

MOVE 'X' TO pa_hsq. "n667256

ADD 1 TO g_cnt_variant_error. "n667256

ENDIF. "n667256

ELSE. "n667256

IF pa_flt IS INITIAL. "n667256

ELSE. "n667256

  • not allowed "n667256

CLEAR pa_flt. "n667256

ADD 1 TO g_cnt_variant_error. "n667256

ENDIF. "n667256

ENDIF. "n667256

"n667256

  • the user will get the info about the old variant only once "n667256

IF g_cnt_variant_error = 1. "n667256

IF NOT sy-slset IS INITIAL. "n667256

MESSAGE i634(db) WITH sy-slset sy-repid. "n667256

ENDIF. "n667256

ENDIF. "n667256

  • has the user changed the radiobuttons for the mode of the "n531604

  • SAP-LIST-VIEWER ? "n531604

IF sscrfields-ucomm = 'ALVV'.

  • yes, restore the old entry if extists "n531604

IF NOT pa_hsq IS INITIAL.

MOVE g_f_vari_hsq TO p_vari.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

MOVE g_f_vari_flt TO p_vari.

ENDIF.

ELSE.

  • save the display variant depending on the selected mode "n531604

  • of the SAP-LIST-VIEWER

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

MOVE p_vari TO g_f_vari_hsq.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

MOVE p_vari TO g_f_vari_flt.

ENDIF.

ENDIF.

  • it is necessary to set flag xmchb if batch has been entered because

  • otherwise MCHB will not be read and non suitable items can't be

  • be removed later on in form data_selection

IF NOT charg[] IS INITIAL. xmchb = 'X'. ENDIF. "note 311770

  • send a warning if the user starts this report without any "n531604

  • restrictions for the database selection "n531604

  • only when this report is started "n531604

IF matnr IS INITIAL AND "n531604

werks IS INITIAL AND "n531604

lgort IS INITIAL AND "n531604

charg IS INITIAL. "n531604

IF sy-ucomm = 'ONLI' OR "n531604

sy-ucomm = 'PRIN'. "n531604

MESSAGE w689. "The selection was not restricted "n531604

ENDIF. "n531604

ENDIF. "n531604

  • go on only if the user wants to launch this report "n667256

  • the authorization check should be always processed "n829722

IF sy-ucomm = 'ONLI' OR "n829722

sy-ucomm = 'PRIN' OR "n829722

sy-ucomm = 'SJOB' OR "n829722

sy-ucomm = space. "n829722

MOVE 'X' TO t_flag_launched. "n829722

ELSE. "n829722

IF sy-ucomm <> space. "n829722

CLEAR t_flag_launched. "n829722

ENDIF. "n829722

ENDIF. "n829722

CHECK t_flag_launched = 'X'. "n829722

PERFORM check_entry.

PERFORM organisation.

PERFORM check_authorization.

  • save the parameters of this run in database table ESDUS "n531604

PERFORM f0200_settings_save. "n531604

*----


Initialisierung -


*

INITIALIZATION.

*ENHANCEMENT-POINT RM07MLBS_05 SPOTS ES_RM07MLBS.

PERFORM f0000_get_print_settings. "n531604

  • look for the setting of the parameters from the last run "n531604

PERFORM f0100_settings_init. "n531604

PERFORM initialisierung.

  • set flag when INITILIZATION is processed "n667256

MOVE 'X' TO g_flag_initialization. "n667256

"n667256

*----

-


"n667256

"n667256

START-OF-SELECTION.

  • it makes no sence to carry out this report "n667256

IF g_cnt_variant_error > 0. "n667256

IF NOT sy-slset IS INITIAL. "n667256

MESSAGE e634(db) WITH sy-slset sy-repid. "n667256

ENDIF. "n667256

ENDIF. "n667256

  • does the user restrict the storage locations and want to "n577268

  • suppress stock objects from plant level ? "n577268

CLEAR collector-lgort. "n577268

"n577268

IF collector-lgort IN lgort. "n577268

CLEAR g_flag_suppress_init_lgort. "n577268

ELSE. "n577268

MOVE 'X' TO g_flag_suppress_init_lgort."n577268

ENDIF. "n577268

PERFORM data_selection.

*----


Datenausgabe----


*

END-OF-SELECTION.

READ TABLE bestand INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

  • the fieldcatalog depends on the type of list "n531604

IF NOT pa_hsq IS INITIAL. "n531604

  • create hierarchic list "n531604

PERFORM fieldcatalog. "n531604

ELSEIF NOT pa_flt IS INITIAL. "n531604

PERFORM f0300_fieldcat_flat. "n531604

ENDIF. "n531604

IF g_flag_mess_333 = 'X'.

  • "The list is incomplete due to lacking authorization

MESSAGE s333.

ENDIF.

PERFORM list_output.

ELSE.

MESSAGE s843.

  • Zu den vorgegebenen Daten ist kein Bestand vorhanden

IF NOT sy-calld IS INITIAL. "307852

LEAVE. "307852

ELSE. "307852

LEAVE TO TRANSACTION sy-tcode. "307852

ENDIF. "307852

ENDIF.

************************************************************************

  • Read organisation

************************************************************************

FORM organisation.

  • get all existing storage bins of the required plants

REFRESH : g_t_t001l, g_t_organ.

CLEAR : g_s_t001l, g_s_organ, g_flag_t001l.

SELECT werks lgort lgobe FROM t001l

INTO CORRESPONDING FIELDS OF TABLE g_t_t001l

WHERE werks IN werks

AND lgort IN lgort

AND lgobe NE space.

IF sy-subrc IS INITIAL.

MOVE 'X' TO g_flag_t001l.

ENDIF.

SELECT DISTINCT werks name1 bwkey

INTO CORRESPONDING FIELDS OF TABLE g_t_organ

FROM t001w

WHERE werks IN werks.

SORT g_t_organ BY bwkey.

LOOP AT g_t_organ INTO g_s_organ.

ON CHANGE OF g_s_organ-bwkey.

CLEAR g_flag_ok.

SELECT SINGLE * FROM t001k

WHERE bwkey EQ g_s_organ-bwkey.

IF sy-subrc IS INITIAL.

SELECT SINGLE * FROM t001

WHERE bukrs EQ t001k-bukrs.

IF sy-subrc IS INITIAL.

MOVE 'X' TO g_flag_ok.

ENDIF.

ENDIF.

ENDON.

IF g_flag_ok = 'X'.

MOVE-CORRESPONDING t001 TO g_s_organ.

MODIFY g_t_organ FROM g_s_organ.

ENDIF.

ENDLOOP.

ENDFORM. " ORGANISATION

************************************************************************

  • Check authorization on plant level for all selected plants

************************************************************************

FORM check_authorization.

  • define local working areas

DATA : l_s_bukrs TYPE stype_buffer,

l_t_bukrs TYPE stab_buffer.

SORT g_t_organ BY werks.

  • report displayed stocks for plant although the user has "n591618

  • not the required authorization for that plant "n591618

CLEAR g_s_buffer. "n591618

LOOP AT g_t_organ INTO g_s_organ.

  • check the authority only after the plant has changed "n531604

IF g_s_organ-werks NE g_s_buffer-werks.

MOVE g_s_organ-werks TO g_s_buffer-werks.

AUTHORITY-CHECK OBJECT 'M_MATE_WRK'

ID 'ACTVT' FIELD '03'

ID 'WERKS' FIELD g_s_organ-werks.

IF NOT sy-subrc IS INITIAL.

SET CURSOR FIELD 'WERKS-LOW'.

MESSAGE e120 WITH g_s_organ-werks.

ENDIF.

ENDIF.

IF novalues IS INITIAL. "n531604

  • the user wants to see the values

IF g_s_organ-bukrs NE g_s_buffer-bukrs.

  • check the authority after the company code changed

AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

  • parameters for AUTHORITY-CHECK command fixed "n546707

ID 'BUKRS' FIELD g_s_organ-bukrs "n546707

ID 'ACTVT' FIELD '03'. "n546707

MOVE : g_s_organ-bukrs TO g_s_buffer-bukrs, "n667256

sy-subrc TO g_s_buffer-subrc. "n667256

IF sy-subrc <> 0.

  • no authorization -> save the company code

MOVE : 'X' TO g_flag_mess_333,

g_s_organ-bukrs TO l_s_bukrs-bukrs.

COLLECT l_s_bukrs INTO l_t_bukrs.

ENDIF.

ENDIF.

  • use the result from the buffer

IF g_s_buffer-subrc <> 0.

CLEAR g_s_organ-waers.

MODIFY g_t_organ FROM g_s_organ

TRANSPORTING waers.

ENDIF.

ENDIF.

ENDLOOP.

  • send the info for each missing autority

IF g_flag_mess_333 = 'X'.

SORT l_t_bukrs.

SET CURSOR FIELD 'WERKS-LOW'.

LOOP AT l_t_bukrs INTO l_s_bukrs.

  • No authorization to display data for company code &

MESSAGE i862(m3) WITH l_s_bukrs-bukrs.

ENDLOOP.

ENDIF.

ENDFORM. "check_authorization

************************************************************************

  • Check data on selection screen

************************************************************************

FORM check_entry.

  • Check some entered data for consistency

CALL FUNCTION 'MMIM_ENTRYCHECK_MAIN'

TABLES

it_matnr = matnr

it_werks = werks

it_lgort = lgort

it_ekgrp = ekgrup

it_sobkz = so_sobkz.

  • Material type

IF NOT matart-low IS INITIAL OR NOT matart-high IS INITIAL.

SELECT SINGLE * FROM t134m WHERE mtart IN matart.

IF NOT sy-subrc IS INITIAL.

MESSAGE e104(m3) WITH matart-low.

ENDIF.

ENDIF.

  • Material class

IF NOT matkla-low IS INITIAL OR NOT matart-high IS INITIAL.

SELECT SINGLE * FROM t023 WHERE matkl IN matkla.

IF NOT sy-subrc IS INITIAL.

MESSAGE e883 WITH matkla-low.

ENDIF.

ENDIF.

  • Display variant

IF NOT p_vari IS INITIAL.

SET CURSOR FIELD 'P_VARI'.

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

MOVE : p_vari TO variante-variant,

variante TO def_variante.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

MOVE : p_vari TO variante_flat-variant,

variante_flat TO def_variante.

ENDIF.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = def_variante.

ELSE. "n579976

  • the user wants no initial display variant "n579976

"n579976

IF NOT pa_hsq IS INITIAL. "n579976

  • for hierarchic seq. list "n579976

IF NOT g_f_vari_hsq_initial IS INITIAL. "n579976

  • but the SAP-LIST-VIEWER will apply the existing "n579976

  • initial display variant for hierarchic lists "n579976

PERFORM f3000_send_warning_m7_393 "n579976

USING g_f_vari_hsq_initial. "n579976

ENDIF. "n579976

"n579976

ELSEIF NOT pa_flt IS INITIAL. "n579976

  • for flat ( simple ) list "n579976

IF NOT g_f_vari_flt_initial IS INITIAL. "n579976

  • but the SAP-LIST-VIEWER will apply the existing "n579976

  • initial display variant for flat lists "n579976

PERFORM f3000_send_warning_m7_393 "n579976

USING g_f_vari_flt_initial. "n579976

ENDIF. "n579976

ENDIF. "n579976

ENDIF.

ENDFORM. "check_entry

************************************************************************

  • Initialization: Read default variant

************************************************************************

FORM initialisierung.

  • prepare the areas for the different display variants

repid = sy-repid.

CLEAR : variante, variante_flat.

MOVE : repid TO variante-report,

repid TO variante_flat-report,

'FLAT' TO variante_flat-handle.

  • the display variant is depending on the seleted mode of "n531604

  • the SAP-LIST-VIEWER : look for both variants "n531604

  • a) Get default variant for the hierarchic list

def_variante = variante.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = def_variante

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

MOVE def_variante-variant TO g_f_vari_hsq.

  • save the initial display variant for the hierseq. list "n579976

MOVE def_variante-variant TO g_f_vari_hsq_initial. "n579976

ENDIF.

  • b) Get default variant for the non-hierarchic list

def_variante = variante_flat.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = def_variante

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

MOVE def_variante-variant TO g_f_vari_flt.

  • save the initial display variant for the flat list "n579976

MOVE def_variante-variant TO g_f_vari_flt_initial. "n579976

ENDIF.

  • take the required variant

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

p_vari = g_f_vari_hsq.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

p_vari = g_f_vari_flt.

ENDIF.

ENDFORM. " INITIALISIERUNG

************************************************************************

  • Main data selection routine

************************************************************************

FORM data_selection.

  • Materials to be processed

TYPES: BEGIN OF ty_mat,

matnr LIKE mara-matnr,

werks LIKE marc-werks,

xchar LIKE marc-xchar,

mtart LIKE mara-mtart,

matkl LIKE mara-matkl,

meins LIKE mara-meins,

trame LIKE marc-trame,

umlmc LIKE marc-umlmc,

glgmg LIKE marc-glgmg, "n912093

bwesb LIKE marc-bwesb, "AC0K020254

lvorm_mara LIKE mara-lvorm,

lvorm_marc LIKE marc-lvorm,

END OF ty_mat.

DATA: t_mat TYPE ty_mat OCCURS 0 WITH HEADER LINE,

t_batch TYPE ty_mat OCCURS 0 WITH HEADER LINE,

t_nobatch TYPE ty_mat OCCURS 0 WITH HEADER LINE.

  • buffer for reading working tables

DATA : l_s_mat TYPE ty_mat,

l_f_matnr LIKE makt-matnr.

RANGES: r_sobkz FOR mkol-sobkz.

DATA: l_cnt_matnr_i_eq TYPE i. "n759412

DATA: l_cnt_matnr_total TYPE i. "n759412

************************************************************************

  • Read material master data (MARA and MARC)

************************************************************************

REFRESH collector.

  • take all matching entries, do not consider the deletion

  • indicator

      • BEGIN INSERT n_759412

  • analyse the select-option table for material

  • numbers

CLEAR : l_cnt_matnr_total, l_cnt_matnr_i_eq.

LOOP AT matnr.

ADD 1 TO l_cnt_matnr_total.

IF NOT matnr-low IS INITIAL AND

matnr-sign = 'I' AND

matnr-option = 'EQ' AND

matnr-high IS INITIAL.

  • the table contains single a material number

ADD 1 TO l_cnt_matnr_i_eq.

ELSE.

EXIT.

ENDIF.

ENDLOOP.

  • added dynamic break-point ID MMIM_REP_MB52 "n912093

BREAK-POINT ID mmim_rep_mb52. "n912093

  • process SELECT command depending on the

  • required material selection

IF l_cnt_matnr_total > 0 AND

l_cnt_matnr_total = l_cnt_matnr_i_eq.

SELECT mara~matnr werks xchar mtart matkl meins trame umlmc

bwesb glgmg "AC0K020254 "n912093

mara~lvorm AS lvorm_mara

marc~lvorm AS lvorm_marc

INTO CORRESPONDING FIELDS OF TABLE t_mat

FROM mara INNER JOIN marc

ON maramatnr = marcmatnr

FOR ALL entries IN matnr

WHERE mara~matnr = matnr-low

AND werks IN werks

AND mtart IN matart

AND matkl IN matkla

AND ekgrp IN ekgrup.

ELSE.

  • END INSERT n_759412

SELECT mara~matnr werks xchar mtart matkl meins trame umlmc

bwesb glgmg "AC0K020254 "912093

mara~lvorm AS lvorm_mara

marc~lvorm AS lvorm_marc

INTO CORRESPONDING FIELDS OF TABLE t_mat

FROM mara INNER JOIN marc

ON maramatnr = marcmatnr

WHERE mara~matnr IN matnr

AND werks IN werks

AND mtart IN matart

AND matkl IN matkla

AND ekgrp IN ekgrup.

ENDIF. "n759412

************************************************************************

  • Get "normal" stocks.

  • If no detailed batch display is required,

  • all data come from MARD. Otherwise, materials with batch

  • management are extracted from MCHB, the rest from MARD.

  • Dum-dibe-dum-dibe-dum. Dum.

************************************************************************

REFRESH: t_batch, t_nobatch.

  • Split the worklist into the parts for each table...

IF xmchb IS INITIAL.

t_nobatch[] = t_mat[].

ELSE.

LOOP AT t_mat.

IF t_mat-xchar IS INITIAL.

APPEND t_mat TO t_nobatch.

ELSE.

APPEND t_mat TO t_batch.

ENDIF.

ENDLOOP.

ENDIF.

  • Access MARD

  • I you think that instead of SELECT-APPEND we could have used

  • an array fetch, please wait for the table names to become different

  • from the internal fields. B.T.W.: The DB-interface also buffers.

CLEAR collector.

READ TABLE t_nobatch INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

SELECT matnr werks lgort

labst umlme insme einme speme retme lvorm

INTO (collector-matnr, collector-werks, collector-lgort,

collector-labst, collector-umlme, collector-insme,

collector-einme, collector-speme, collector-retme,

collector-lvorm)

FROM mard

FOR ALL ENTRIES IN t_nobatch

WHERE matnr = t_nobatch-matnr

AND werks = t_nobatch-werks

AND lgort IN lgort.

  • save the MARD Key and deletion indicator for later

  • in table G_T_MARD_LV for use with special stocks

IF NOT pa_sond IS INITIAL AND

NOT collector-lvorm IS INITIAL.

MOVE-CORRESPONDING collector

TO g_s_mard_lv.

INSERT g_s_mard_lv INTO TABLE g_t_mard_lv.

ENDIF.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

  • Access MCHB

CLEAR collector.

READ TABLE t_batch INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

SELECT matnr werks lgort charg

clabs cumlm cinsm ceinm cspem cretm lvorm

INTO (collector-matnr, collector-werks, collector-lgort,

collector-charg,

collector-labst, collector-umlme, collector-insme,

collector-einme, collector-speme, collector-retme,

collector-lvorm)

FROM mchb

FOR ALL ENTRIES IN t_batch

WHERE matnr = t_batch-matnr

AND werks = t_batch-werks

AND lgort IN lgort

AND charg IN charg.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

************************************************************************

  • Transfer stocks from MARC (TRAME and UMLMC)

************************************************************************

CLEAR collector.

LOOP AT t_mat WHERE umlmc <> 0 OR trame <> 0 OR "AC0K020254

bwesb <> 0 OR "AC0K020254

glgmg <> 0. "n912093

  • there are no lines with stock = zero

  • take the stocks from plant level only when the user "n577268

  • does not restrict the storage location; "n577268

CHECK : g_flag_suppress_init_lgort IS INITIAL. "n577268

IF negativ = 'X'.

  • ignore entry if all stocks are zero or greater

IF t_mat-trame >= 0 AND

t_mat-umlmc >= 0 AND

t_mat-glgmg >= 0. "n912093

CONTINUE. "take the next entry

ENDIF.

ENDIF.

collector-matnr = t_mat-matnr.

collector-werks = t_mat-werks.

collector-umlme = t_mat-trame + t_mat-umlmc.

collector-lvorm = t_mat-lvorm_marc.

collector-bwesb = t_mat-bwesb. "AC0K020254

collector-glgmg = t_mat-glgmg. "n912093

collector-trame = t_mat-trame. "n912093

collector-umlmc = t_mat-umlmc. "n912093

APPEND collector.

ENDLOOP.

************************************************************************

  • Consignment from vendor (MKOL)

  • Read only if requested by one of the

  • flags on the selection screen. Absolutely inconsistent, but

  • due to compatibility...

  • MKOL has a flag for deletion

************************************************************************

IF NOT pa_sond IS INITIAL AND

NOT t_mat[] IS INITIAL.

IF 'K' IN so_sobkz OR

'M' IN so_sobkz.

CLEAR collector.

SELECT matnr werks lgort charg sobkz lifnr

slabs sinsm seinm sspem lvorm

INTO (collector-matnr, collector-werks, collector-lgort,

collector-charg, collector-sobkz, collector-lifnr,

collector-labst, collector-insme, collector-einme,

collector-speme, collector-lvorm)

FROM mkol

FOR ALL ENTRIES IN t_mat

WHERE matnr = t_mat-matnr

AND werks = t_mat-werks

AND lgort IN lgort

AND charg IN charg

AND sobkz IN so_sobkz.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

ENDIF.

************************************************************************

  • Special stocks at customer side (MSKU)

  • MSKU has no flag for deletion

************************************************************************

IF NOT pa_sond IS INITIAL AND

NOT t_mat[] IS INITIAL.

IF 'V' IN so_sobkz OR

'W' IN so_sobkz.

CLEAR collector.

SELECT matnr werks charg sobkz kunnr

kulab kuins kuein

INTO (collector-matnr, collector-werks, collector-charg,

collector-sobkz, collector-kunnr,

collector-labst, collector-insme, collector-einme)

FROM msku

FOR ALL ENTRIES IN t_mat

WHERE matnr = t_mat-matnr

AND werks = t_mat-werks

AND charg IN charg

AND sobkz IN so_sobkz.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

ENDIF.

************************************************************************

  • Special stocks at vendor provision (MSLB)

  • MSLB has no flag for deletion

************************************************************************

IF NOT pa_sond IS INITIAL AND

NOT t_mat[] IS INITIAL AND

'O' IN so_sobkz.

CLEAR collector.

SELECT matnr werks charg sobkz lifnr

lblab lbins lbein

INTO (collector-matnr, collector-werks, collector-charg,

collector-sobkz, collector-lifnr,

collector-labst, collector-insme,

collector-einme)

FROM mslb

FOR ALL ENTRIES IN t_mat

WHERE matnr = t_mat-matnr

AND werks = t_mat-werks

AND charg IN charg

AND sobkz IN so_sobkz.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

************************************************************************

  • Customer order stock (MSKA) and sum segment (MSSA) for valuation.

  • Sum on the database and FOR ALL ENTRIES is not allowed from

  • release 4.5 onwards, so the summation has to be done

  • on the application server (here!).

  • MSKA has no flag for deletion

************************************************************************

IF NOT pa_sond IS INITIAL AND

NOT t_mat[] IS INITIAL AND

'E' IN so_sobkz.

CLEAR collector.

SELECT mskamatnr mskawerks lgort charg mska~sobkz

mskavbeln mskaposnr

kalab kains kaspe kaein kzbws

INTO (collector-matnr, collector-werks, collector-lgort,

collector-charg, collector-sobkz,

collector-vbeln, collector-posnr,

collector-labst, collector-insme, collector-speme,

collector-einme, collector-kzbws)

FROM mska INNER JOIN mssa

ON mskamatnr = mssamatnr

AND mskawerks = mssawerks

AND mskasobkz = mssasobkz

AND mskavbeln = mssavbeln

AND mskaposnr = mssaposnr

FOR ALL entries IN t_mat

WHERE mska~matnr = t_mat-matnr

AND mska~werks = t_mat-werks

AND mska~lgort IN lgort

AND mska~charg IN charg.

PERFORM f2000_collect_collector.

ENDSELECT.

  • Transfer stocks for customer order (SATRA in MSSA)

CLEAR collector.

SELECT matnr werks sobkz vbeln posnr kzbws satra

INTO (collector-matnr, collector-werks, collector-sobkz,

collector-vbeln, collector-posnr,

collector-kzbws, collector-umlme)

FROM mssa

FOR ALL ENTRIES IN t_mat

WHERE matnr = t_mat-matnr

AND werks = t_mat-werks

AND sobkz IN so_sobkz

AND satra <> 0.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

************************************************************************

  • The same game for project stocks (MSPR/MSSQ).

  • MSPR has no flag for deletion

************************************************************************

IF NOT pa_sond IS INITIAL AND

NOT t_mat[] IS INITIAL AND

'Q' IN so_sobkz.

CLEAR collector.

SELECT msprmatnr msprwerks lgort charg msprsobkz msprpspnr

prlab prins prspe prein kzbws

INTO (collector-matnr, collector-werks, collector-lgort,

collector-charg, collector-sobkz,

collector-pspnr,

collector-labst, collector-insme, collector-speme,

collector-einme, collector-kzbws)

FROM mspr INNER JOIN mssq

ON msprmatnr = mssqmatnr

AND msprwerks = mssqwerks

AND msprsobkz = mssqsobkz

AND msprpspnr = mssqpspnr

FOR ALL entries IN t_mat

WHERE mspr~matnr = t_mat-matnr

AND mspr~werks = t_mat-werks

AND mspr~lgort IN lgort

AND mspr~charg IN charg.

PERFORM f2000_collect_collector.

ENDSELECT.

  • Transfer stocks for projects (SQTRA in MSSQ)

CLEAR collector.

SELECT matnr werks sobkz pspnr kzbws sqtra

INTO (collector-matnr, collector-werks, collector-sobkz,

collector-pspnr,

collector-kzbws, collector-umlme)

FROM mssq

FOR ALL ENTRIES IN t_mat

WHERE matnr = t_mat-matnr

AND werks = t_mat-werks

AND sobkz IN so_sobkz

AND sqtra <> 0.

PERFORM f2000_collect_collector.

ENDSELECT.

ENDIF.

*ENHANCEMENT-POINT RM07MLBS_02 SPOTS ES_RM07MLBS.

************************************************************************

  • Extract key-data for other tables.

************************************************************************

DATA: BEGIN OF t_maktkey OCCURS 0,

matnr LIKE makt-matnr,

END OF t_maktkey,

  • working area for the material description

BEGIN OF l_s_makt,

matnr LIKE makt-matnr,

maktx LIKE makt-maktx,

END OF l_s_makt,

BEGIN OF t_makt OCCURS 0,

matnr LIKE makt-matnr,

maktx LIKE makt-maktx,

END OF t_makt,

BEGIN OF t_mchakey OCCURS 0,

matnr LIKE mcha-matnr,

werks LIKE mcha-werks,

charg LIKE mcha-charg,

END OF t_mchakey,

BEGIN OF t_mcha OCCURS 0,

matnr LIKE mcha-matnr,

werks LIKE mcha-werks,

charg LIKE mcha-charg,

bwtar LIKE mcha-bwtar,

END OF t_mcha.

REFRESH: t_maktkey, t_mchakey, bestand.

  • remove all items in bestand with wrong batch number. If we would

  • not remove this, report will e.g. show materials which has

  • only MARD entries, too.

LOOP AT collector WHERE charg IN charg. "note 311770

MOVE-CORRESPONDING collector TO bestand.

  • fill the key of the special stocks into the field

  • assigment

*ENHANCEMENT-SECTION RM07MLBS_03 SPOTS ES_RM07MLBS.

CASE collector-sobkz.

WHEN 'E'.

MOVE : 'X' TO g_flag_sobkz-vbeln.

WRITE : collector-vbeln TO bestand-ssnum.

MOVE : '/' TO bestand-ssnum+10(01).

WRITE : collector-posnr TO bestand-ssnum+12(08)

NO-ZERO.

CONDENSE bestand-ssnum.

WHEN 'K'.

MOVE : 'X' TO g_flag_sobkz-lifnr.

WRITE : collector-lifnr TO bestand-ssnum.

WHEN 'M'.

MOVE : 'X' TO g_flag_sobkz-lifnr.

WRITE : collector-lifnr TO bestand-ssnum.

WHEN 'O'.

MOVE : 'X' TO g_flag_sobkz-lifnr.

WRITE : collector-lifnr TO bestand-ssnum.

WHEN 'Q'.

MOVE : 'X' TO g_flag_sobkz-pspnr.

WRITE : collector-pspnr TO bestand-ssnum.

WHEN 'V'.

MOVE : 'X' TO g_flag_sobkz-kunnr.

WRITE : collector-kunnr TO bestand-ssnum.

WHEN 'W'.

MOVE : 'X' TO g_flag_sobkz-kunnr.

WRITE : collector-kunnr TO bestand-ssnum.

WHEN OTHERS.

CLEAR bestand-ssnum.

ENDCASE.

*END-ENHANCEMENT-SECTION.

APPEND bestand.

t_maktkey-matnr = bestand-matnr.

COLLECT t_maktkey.

IF bestand-charg <> space.

t_mchakey-matnr = bestand-matnr.

t_mchakey-werks = bestand-werks.

t_mchakey-charg = bestand-charg.

COLLECT t_mchakey.

ENDIF.

ENDLOOP.

FREE collector.

************************************************************************

  • Read additional tables

************************************************************************

READ TABLE t_maktkey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE t_makt

FROM makt

FOR ALL ENTRIES IN t_maktkey

WHERE matnr = t_maktkey-matnr

AND spras = sy-langu.

SORT t_makt BY matnr.

ENDIF.

  • Read batch data only if values are requested

READ TABLE t_mchakey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0 AND novalues IS INITIAL.

SELECT matnr werks charg bwtar

INTO CORRESPONDING FIELDS OF TABLE t_mcha

FROM mcha

FOR ALL ENTRIES IN t_mchakey

WHERE matnr = t_mchakey-matnr

AND werks = t_mchakey-werks

AND charg = t_mchakey-charg.

SORT t_mcha BY matnr werks charg.

ENDIF.

************************************************************************

  • Data definitions for the valuation extraction

************************************************************************

DATA: BEGIN OF t_mbewkey OCCURS 0,

matnr LIKE mbew-matnr,

bwkey LIKE mbew-bwkey,

bwtar LIKE mbew-bwtar,

END OF t_mbewkey,

  • workin table for the material stock valuation

BEGIN OF t_mbew OCCURS 0,

matnr LIKE mbew-matnr,

bwkey LIKE mbew-bwkey,

bwtar LIKE mbew-bwtar,

  • consider the valuation of the special stocks E, Q "n531604

sobkz LIKE ebew-sobkz, "n531604

vbeln LIKE ebew-vbeln, "n531604

posnr LIKE ebew-posnr, "n531604

pspnr LIKE qbew-pspnr, "n531604

lbkum(12) TYPE p DECIMALS 3, "407810

salk3(12) TYPE p DECIMALS 2, "388735

vprsv LIKE mbew-vprsv, "353428

verpr LIKE mbew-verpr, "353428

stprs LIKE mbew-stprs, "353428

peinh LIKE mbew-peinh, "353428

END OF t_mbew.

DATA: t_ebewkey LIKE t_mbewkey OCCURS 0 WITH HEADER LINE.

DATA: t_qbewkey LIKE t_mbewkey OCCURS 0 WITH HEADER LINE.

DATA: t_ebew LIKE t_mbew OCCURS 0 WITH HEADER LINE.

DATA: t_qbew LIKE t_mbew OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF t_t134mkey OCCURS 0,

bwkey LIKE t134m-bwkey,

mtart LIKE t134m-mtart,

END OF t_t134mkey,

BEGIN OF t_t134m OCCURS 0,

bwkey LIKE t134m-bwkey,

mtart LIKE t134m-mtart,

wertu LIKE t134m-wertu,

END OF t_t134m.

************************************************************************

  • Fill in additional data (first round) and extract the data

  • for the access to the valuation tables.

************************************************************************

SORT t_mat BY matnr werks.

SORT g_t_organ BY werks.

CLEAR : g_s_t001l, g_s_organ.

LOOP AT bestand.

  • get the information per plant and storage location

  • with buffer

IF g_flag_t001l = 'X'.

IF bestand-werks = g_s_t001l-werks AND

bestand-lgort = g_s_t001l-lgort.

ELSE.

  • read with plant and storage location

READ TABLE g_t_t001l INTO g_s_t001l

WITH TABLE KEY werks = bestand-werks

lgort = bestand-lgort.

MOVE : bestand-werks TO g_s_t001l-werks,

bestand-lgort TO g_s_t001l-lgort.

IF sy-subrc <> 0.

CLEAR g_s_t001l-lgobe.

ENDIF.

ENDIF.

ENDIF.

  • take the storage bin from the buffer

MOVE : g_s_t001l-lgobe TO bestand-lgobe.

  • get the information per plant with buffer

IF bestand-werks NE g_s_organ-werks.

READ TABLE g_t_organ INTO g_s_organ

WITH KEY werks = bestand-werks

BINARY SEARCH.

IF sy-subrc <> 0.

  • sorry nothing found

CLEAR g_s_organ.

MOVE : bestand-werks TO g_s_organ-werks.

ENDIF.

ENDIF.

  • take the following fields from the buffer

MOVE : g_s_organ-name1 TO bestand-name1,

g_s_organ-waers TO bestand-waers,

g_s_organ-bwkey TO bestand-bwkey.

  • get the information from the material master MARC

  • with buffer

IF bestand-matnr = l_s_mat-matnr AND

bestand-werks = l_s_mat-werks.

  • results are in the buffer

ELSE.

CLEAR l_s_mat.

MOVE : bestand-matnr TO l_s_mat-matnr,

bestand-werks TO l_s_mat-werks.

READ TABLE t_mat INTO l_s_mat

WITH KEY matnr = bestand-matnr

werks = bestand-werks

BINARY SEARCH.

IF sy-subrc <> 0.

  • sorry nothing found

CLEAR l_s_mat.

MOVE : bestand-matnr TO l_s_mat-matnr,

bestand-werks TO l_s_mat-werks.

ENDIF.

ENDIF.

  • take the results the buffer

MOVE : l_s_mat-mtart TO bestand-mtart,

l_s_mat-matkl TO bestand-matkl,

l_s_mat-meins TO bestand-meins.

  • if this entry has no deletion flag, take the

  • deletion flag from a higher level like MARA, MARC,

  • or MARDA

IF bestand-lvorm IS INITIAL.

IF NOT l_s_mat-lvorm_marc IS INITIAL.

MOVE l_s_mat-lvorm_marc

TO bestand-lvorm.

ELSEIF NOT l_s_mat-lvorm_mara IS INITIAL.

MOVE l_s_mat-lvorm_mara

TO bestand-lvorm.

ELSEIF NOT g_t_mard_lv[] IS INITIAL AND

NOT bestand-lgort IS INITIAL AND

NOT bestand-sobkz IS INITIAL.

  • look for deletion flag in working table

  • g_t_mard_lv for a line with special stock

IF bestand-matnr = g_s_mard_lv-matnr AND

bestand-werks = g_s_mard_lv-werks AND

bestand-lgort = g_s_mard_lv-lgort.

ELSE.

  • read table only after the key has changed

READ TABLE g_t_mard_lv INTO g_s_mard_lv

WITH TABLE KEY matnr = bestand-matnr

werks = bestand-werks

lgort = bestand-lgort.

IF sy-subrc <> 0.

  • fill the buffer in case the entry does not exist

MOVE : bestand-matnr TO g_s_mard_lv-matnr,

bestand-werks TO g_s_mard_lv-werks,

bestand-lgort TO g_s_mard_lv-lgort.

CLEAR g_s_mard_lv-lvorm.

ENDIF.

  • take the result from the buffer

MOVE g_s_mard_lv-lvorm TO bestand-lvorm.

ENDIF.

ENDIF.

ENDIF.

  • read the material short description after the material

  • number has changed

IF bestand-matnr NE l_s_makt-matnr.

READ TABLE t_makt INTO l_s_makt

WITH KEY matnr = bestand-matnr

BINARY SEARCH.

IF sy-subrc <> 0.

  • sorry nothing found

CLEAR l_s_makt-maktx.

MOVE bestand-matnr TO l_s_makt-matnr.

ENDIF.

ENDIF.

  • take the results the buffer

MOVE : l_s_makt-maktx TO bestand-maktx.

  • added dynamic break-point ID MMIM_REP_MB52 "n912093

BREAK-POINT ID mmim_rep_mb52. "n912093

IF bestand-charg <> space AND novalues IS INITIAL.

READ TABLE t_mcha WITH KEY matnr = bestand-matnr

werks = bestand-werks

charg = bestand-charg

BINARY SEARCH.

IF sy-subrc = 0.

bestand-bwtar = t_mcha-bwtar.

ENDIF.

ENDIF.

MODIFY bestand.

  • Valuation keys

IF novalues IS INITIAL.

IF bestand-sobkz = ' ' OR bestand-sobkz = 'O' OR

bestand-sobkz = 'W' OR bestand-sobkz = 'V' OR

bestand-kzbws = 'A'.

t_mbewkey-matnr = bestand-matnr.

t_mbewkey-bwkey = bestand-bwkey.

t_mbewkey-bwtar = bestand-bwtar.

COLLECT t_mbewkey.

ELSEIF bestand-sobkz = 'E' AND bestand-kzbws = 'M'.

t_ebewkey-matnr = bestand-matnr.

t_ebewkey-bwkey = bestand-bwkey.

t_ebewkey-bwtar = bestand-bwtar.

COLLECT t_ebewkey.

ELSEIF bestand-sobkz = 'Q' AND bestand-kzbws = 'M'.

t_qbewkey-matnr = bestand-matnr.

t_qbewkey-bwkey = bestand-bwkey.

t_qbewkey-bwtar = bestand-bwtar.

COLLECT t_qbewkey.

ENDIF.

t_t134mkey-bwkey = bestand-bwkey.

t_t134mkey-mtart = bestand-mtart.

COLLECT t_t134mkey.

ENDIF. " novalues is initial

ENDLOOP.

  • release the space of global working tables after use

FREE : g_t_mard_lv, g_t_t001l, g_t_organ.

************************************************************************

  • Read the valuation tables

************************************************************************

IF novalues IS INITIAL.

READ TABLE t_mbewkey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

SELECT matnr bwkey bwtar lbkum salk3

vprsv verpr stprs peinh "353428

INTO CORRESPONDING FIELDS OF TABLE t_mbew

FROM mbew

FOR ALL ENTRIES IN t_mbewkey

WHERE matnr = t_mbewkey-matnr

AND bwkey = t_mbewkey-bwkey

AND bwtar = t_mbewkey-bwtar.

SORT t_mbew BY matnr bwkey bwtar.

ENDIF.

READ TABLE t_ebewkey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

  • "Unfortunately", EBEW and QBEW do not have sum segments over

  • the valuation types. Therefore, without batch data, another

  • SELECT-statement is needed.

IF xmchb = 'X'.

SELECT matnr bwkey bwtar sobkz vbeln posnr lbkum salk3

vprsv verpr stprs peinh

INTO (t_ebew-matnr, t_ebew-bwkey, t_ebew-bwtar,

t_ebew-sobkz, t_ebew-vbeln, t_ebew-posnr,

t_ebew-lbkum, t_ebew-salk3,

t_ebew-vprsv, t_ebew-verpr,

t_ebew-stprs, t_ebew-peinh)

FROM ebew

FOR ALL ENTRIES IN t_ebewkey

WHERE matnr = t_ebewkey-matnr

AND bwkey = t_ebewkey-bwkey

AND bwtar = t_ebewkey-bwtar.

COLLECT t_ebew.

ENDSELECT.

ELSE.

SELECT matnr bwkey bwtar sobkz vbeln posnr lbkum salk3

vprsv verpr stprs peinh

INTO (t_ebew-matnr, t_ebew-bwkey, t_ebew-bwtar,

t_ebew-sobkz, t_ebew-vbeln, t_ebew-posnr,

t_ebew-lbkum, t_ebew-salk3,

t_ebew-vprsv, t_ebew-verpr,

t_ebew-stprs, t_ebew-peinh)

FROM ebew

FOR ALL ENTRIES IN t_ebewkey

WHERE matnr = t_ebewkey-matnr

AND bwkey = t_ebewkey-bwkey.

COLLECT t_ebew.

ENDSELECT.

ENDIF.

SORT t_ebew BY matnr bwkey bwtar sobkz vbeln posnr.

ENDIF.

READ TABLE t_qbewkey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

IF xmchb = 'X'.

SELECT matnr bwkey bwtar sobkz pspnr lbkum salk3

vprsv verpr stprs peinh

INTO (t_qbew-matnr, t_qbew-bwkey, t_qbew-bwtar,

t_qbew-sobkz, t_qbew-pspnr,

t_qbew-lbkum, t_qbew-salk3,

t_qbew-vprsv, t_qbew-verpr,

t_qbew-stprs, t_qbew-peinh)

FROM qbew

FOR ALL ENTRIES IN t_qbewkey

WHERE matnr = t_qbewkey-matnr

AND bwkey = t_qbewkey-bwkey

AND bwtar = t_qbewkey-bwtar.

COLLECT t_qbew.

ENDSELECT.

ELSE.

SELECT matnr bwkey bwtar sobkz pspnr lbkum salk3

vprsv verpr stprs peinh

INTO (t_qbew-matnr, t_qbew-bwkey, t_qbew-bwtar,

t_qbew-sobkz, t_qbew-pspnr,

t_qbew-lbkum, t_qbew-salk3,

t_qbew-vprsv, t_qbew-verpr,

t_qbew-stprs, t_qbew-peinh)

FROM qbew

FOR ALL ENTRIES IN t_qbewkey

WHERE matnr = t_qbewkey-matnr

AND bwkey = t_qbewkey-bwkey.

COLLECT t_qbew.

ENDSELECT.

ENDIF.

SORT t_qbew BY matnr bwkey bwtar sobkz pspnr.

ENDIF.

READ TABLE t_t134mkey INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

SELECT bwkey mtart wertu

INTO CORRESPONDING FIELDS OF TABLE t_t134m

FROM t134m

FOR ALL ENTRIES IN t_t134mkey

WHERE bwkey = t_t134mkey-bwkey

AND mtart = t_t134mkey-mtart.

SORT t_t134m BY bwkey mtart.

ENDIF.

************************************************************************

  • Fill the valuation data

************************************************************************

DATA: factor TYPE f.

LOOP AT bestand.

CHECK bestand-waers <> space. "Do nothing for failed Auth-Checks

READ TABLE t_t134m WITH KEY bwkey = bestand-bwkey

mtart = bestand-mtart

BINARY SEARCH.

CHECK sy-subrc = 0 AND t_t134m-wertu = 'X'.

  • Set SY-SUBRC = 4. A successful table read resets it an starts

  • the value filling.

sy-subrc = 4.

IF bestand-sobkz = ' ' OR bestand-sobkz = 'O' OR

bestand-sobkz = 'W' OR bestand-sobkz = 'V' OR

bestand-kzbws = 'A'.

READ TABLE t_mbew WITH KEY matnr = bestand-matnr

bwkey = bestand-bwkey

bwtar = bestand-bwtar

BINARY SEARCH.

ELSEIF bestand-sobkz = 'E' AND bestand-kzbws = 'M'.

READ TABLE t_ebew WITH KEY matnr = bestand-matnr

bwkey = bestand-bwkey

bwtar = bestand-bwtar

sobkz = bestand-sobkz

vbeln = bestand-vbeln "n531604

posnr = bestand-posnr "n531604

BINARY SEARCH.

MOVE-CORRESPONDING t_ebew TO t_mbew.

ELSEIF bestand-sobkz = 'Q' AND bestand-kzbws = 'M'.

READ TABLE t_qbew WITH KEY matnr = bestand-matnr

bwkey = bestand-bwkey

bwtar = bestand-bwtar

sobkz = bestand-sobkz

pspnr = bestand-pspnr

BINARY SEARCH.

MOVE-CORRESPONDING t_qbew TO t_mbew.

ENDIF.

IF sy-subrc = 0.

IF t_mbew-lbkum = 0.

  • Cannot happen, but in R/3 this does not hold in all cases...

IF t_mbew-peinh = 0. "353428

t_mbew-peinh = 1. "353428

ENDIF. "353428

  • Calculation of value in case of LBKUM = 0 only possible

  • for MBEW. EBEW and QBEW are collected over all subitems

  • (VBELN...), so the data are not available.

IF bestand-sobkz = 'E' OR bestand-sobkz = 'Q'. "388735

factor = 0. "388735

CLEAR bestand-waers. "388735

ELSE. "388735

CASE t_mbew-vprsv.

WHEN 'V'. factor = t_mbew-verpr / t_mbew-peinh.

WHEN 'S'. factor = t_mbew-stprs / t_mbew-peinh.

ENDCASE.

ENDIF. "388735

ELSE.

factor = t_mbew-salk3 / t_mbew-lbkum.

ENDIF.

bestand-wlabs = bestand-labst * factor.

bestand-winsm = bestand-insme * factor.

bestand-wspem = bestand-speme * factor.

bestand-weinm = bestand-einme * factor.

bestand-wumlm = bestand-umlme * factor.

bestand-wbwesb = bestand-bwesb * factor. "AC0K020254

bestand-wglgm = bestand-glgmg * factor. "n912093

bestand-wtram = bestand-trame * factor. "n912093

bestand-wumlc = bestand-umlmc * factor. "n912093

MODIFY bestand.

ENDIF.

ENDLOOP.

ENDIF. "novalues is initial

ENDFORM. "data_selection

************************************************************************

  • Build fieldcatalog for list viewer

************************************************************************

FORM fieldcatalog.

  • Header fields

CLEAR fieldcat.

fieldcat-fieldname = 'MATNR'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'MARA'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MAKTX'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'MAKT'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WERKS'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'T001W'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'NAME1'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'T001W'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MTART'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'MARA'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MATKL'.

fieldcat-tabname = 'HEADER'.

fieldcat-ref_tabname = 'MARA'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

  • List body

CLEAR fieldcat.

fieldcat-fieldname = 'LGORT'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-outputlen = 5.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'LGOBE'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'T001L'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

IF NOT pa_sond IS INITIAL.

CLEAR fieldcat.

fieldcat-fieldname = 'SOBKZ'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MKOL'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZBWS'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MSSA'.

fieldcat-outputlen = 1.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SSNUM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'BICKEY'.

APPEND fieldcat.

ENDIF.

IF xmchb = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'CHARG'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MCHB'.

APPEND fieldcat.

ENDIF.

CLEAR fieldcat.

fieldcat-fieldname = 'LVORM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-outputlen = 3.

APPEND fieldcat.

  • Quantities

CLEAR fieldcat.

fieldcat-fieldname = 'LABST'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-qfieldname = 'MEINS'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MEINS'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARA'.

fieldcat-outputlen = '5'.

APPEND fieldcat.

CLEAR fieldcat. "n912093

fieldcat-fieldname = 'UMLME'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_tabname = 'AM07M'. "n912093

fieldcat-ref_fieldname = 'MB52_TRAUML'. "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

APPEND fieldcat. "n912093

CLEAR fieldcat.

fieldcat-fieldname = 'INSME'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-qfieldname = 'MEINS'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'EINME'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-qfieldname = 'MEINS'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SPEME'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-qfieldname = 'MEINS'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'RETME'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MARD'.

fieldcat-qfieldname = 'MEINS'.

APPEND fieldcat.

  • process MARC-BWESB as hidden field "AC0K020254

CLEAR fieldcat. "AC0K020254

fieldcat-fieldname = 'BWESB'. "AC0K020254

fieldcat-tabname = 'BESTAND'. "AC0K020254

fieldcat-ref_tabname = 'MARC'. "AC0K020254

fieldcat-qfieldname = 'MEINS'. "AC0K020254

fieldcat-no_out = 'X'. "AC0K020254

APPEND fieldcat. "AC0K020254

  • tied empties stock "n912093

fieldcat-fieldname = 'GLGMG'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_tabname = 'MARC'. "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

fieldcat-no_out = 'X'. "n912093

APPEND fieldcat. "n912093

CLEAR fieldcat. "n912093

  • stock in transit "n912093

fieldcat-fieldname = 'TRAME'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_tabname = 'MARC'. "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

fieldcat-no_out = 'X'. "n912093

APPEND fieldcat. "n912093

CLEAR fieldcat. "n912093

  • stock in uml "n912093

fieldcat-fieldname = 'UMLMC'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_tabname = 'MARC'. "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

fieldcat-no_out = 'X'. "n912093

APPEND fieldcat. "n912093

CLEAR fieldcat. "n912093

  • set the key fields of the special stock as hidden fields

IF g_flag_sobkz-lifnr = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'LIFNR'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MKOL'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

ENDIF.

IF g_flag_sobkz-kunnr = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'KUNNR'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MSKU'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

ENDIF.

IF g_flag_sobkz-vbeln = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'VBELN'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MSKA'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'POSNR'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MSKA'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

ENDIF.

IF g_flag_sobkz-pspnr = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'PSPNR'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_tabname = 'MSPR'.

fieldcat-no_out = 'X'.

APPEND fieldcat.

ENDIF.

  • here starts the second row

  • Values

IF novalues IS INITIAL.

CLEAR fieldcat.

fieldcat-fieldname = 'DUMMY'.

fieldcat-tabname = 'BESTAND'.

fieldcat-row_pos = '2'.

fieldcat-outputlen = 9.

  • calculate the length of the dummy field

IF xmchb = 'X'.

ADD 11 TO fieldcat-outputlen.

ENDIF.

IF NOT pa_sond IS INITIAL.

ADD 29 TO fieldcat-outputlen.

ENDIF.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WLABS'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WAERS'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'WAERS'.

fieldcat-ref_tabname = 'T001'.

fieldcat-row_pos = '2'.

fieldcat-outputlen = 5.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WUMLM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-outputlen = '18'.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WINSM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-outputlen = '18'.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WEINM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-outputlen = '18'.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WSPEM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-outputlen = '18'.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WRETM'.

fieldcat-tabname = 'BESTAND'.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-ref_tabname = 'MBEW'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-row_pos = '2'.

fieldcat-seltext_s = text-020.

fieldcat-seltext_m = text-020.

fieldcat-seltext_m = text-020.

fieldcat-outputlen = '18'.

fieldcat-do_sum = 'X'.

APPEND fieldcat.

  • process estimated value MARC-BWESB as hidden field "AC0K020254

CLEAR fieldcat. "AC0K020254

fieldcat-fieldname = 'WBWESB'. "AC0K020254

fieldcat-tabname = 'BESTAND'. "AC0K020254

fieldcat-ref_tabname = 'MBEW'. "AC0K020254

fieldcat-ref_fieldname = 'SALK3'. "AC0K020254

fieldcat-cfieldname = 'WAERS'. "AC0K020254

fieldcat-row_pos = '2'. "AC0K020254

fieldcat-seltext_s = text-020. "AC0K020254

fieldcat-seltext_m = text-020. "AC0K020254

fieldcat-seltext_m = text-020. "AC0K020254

fieldcat-outputlen = '18'. "AC0K020254

fieldcat-do_sum = 'X'. "AC0K020254

fieldcat-no_out = 'X'. "AC0K020254

APPEND fieldcat. "AC0K020254

  • value for tied empties "n912093

fieldcat-no_out = 'X'. "n912093

fieldcat-fieldname = 'WGLGM'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-ref_tabname = 'MBEW'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

fieldcat-row_pos = '2'. "n912093

fieldcat-seltext_s = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-outputlen = '18'. "n912093

fieldcat-do_sum = 'X'. "n912093

APPEND fieldcat. "n912093

  • value for transit "n912093

fieldcat-no_out = 'X'. "n912093

fieldcat-fieldname = 'WTRAM'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-ref_tabname = 'MBEW'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

fieldcat-row_pos = '2'. "n912093

fieldcat-seltext_s = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-outputlen = '18'. "n912093

fieldcat-do_sum = 'X'. "n912093

APPEND fieldcat.

  • value for uml at plant "n912093

fieldcat-no_out = 'X'. "n912093

fieldcat-fieldname = 'WUMLC'. "n912093

fieldcat-tabname = 'BESTAND'. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-ref_tabname = 'MBEW'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

fieldcat-row_pos = '2'. "n912093

fieldcat-seltext_s = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-seltext_m = text-020. "n912093

fieldcat-outputlen = '18'. "n912093

fieldcat-do_sum = 'X'. "n912093

APPEND fieldcat.

ENDIF. "novalues is initial

ENDFORM. " FELDKATALOG_AUFBAUEN

************************************************************************

  • Show the result list

************************************************************************

FORM list_output.

  • set pf-status 'STANDARD'.

keyinfo-header01 = 'MATNR'.

keyinfo-header02 = 'WERKS'.

keyinfo-item01 = 'MATNR'.

keyinfo-item02 = 'WERKS'.

keyinfo-item03 = 'LGORT'.

  • new sort order

SORT bestand BY matnr werks lgort

sobkz kzbws

lifnr kunnr vbeln posnr pspnr charg.

REFRESH : sort.

CLEAR : sort, g_cnt_spos.

  • create the sort table for the ALV depending on the

  • list type

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

PERFORM f0400_create_sort USING 'MATNR'.

PERFORM f0400_create_sort USING 'WERKS'.

ENDIF.

PERFORM f0400_create_sort USING 'LGORT'.

PERFORM f0400_create_sort USING 'SOBKZ'.

PERFORM f0400_create_sort USING 'KZBWS'.

PERFORM f0400_create_sort USING 'LIFNR'.

PERFORM f0400_create_sort USING 'KUNNR'.

PERFORM f0400_create_sort USING 'VBELN'.

PERFORM f0400_create_sort USING 'POSNR'.

PERFORM f0400_create_sort USING 'PSPNR'.

DEFINE colourize.

clear color.

color-fieldname = &1.

color-color-int = '0'.

if &2 > 0.

color-color-col = '5'.

elseif &2 < 0.

color-color-col = '6'.

endif.

append color.

case &1.

when 'LABST'.

color-fieldname = 'MEINS'.

append color.

when 'WLABS'.

color-fieldname = 'WAERS'.

append color.

endcase.

END-OF-DEFINITION.

  • skip this loop when the user wants a flat list without

  • colors

IF NOT pa_hsq IS INITIAL OR

NOT alv_color = 'X'.

LOOP AT bestand.

IF NOT pa_hsq IS INITIAL. "n531604

  • create working table header only if a hierarchic "n531604

  • list is required "n531604

ON CHANGE OF bestand-matnr OR bestand-werks.

MOVE-CORRESPONDING bestand TO header.

APPEND header.

ENDON.

ENDIF. "n531604

  • create the table with the colour information "n531604

  • depending on the customizing settings in table "n531604

  • V_MMIM_REP_PRINT 'X' = no colors "n531604

IF alv_color NE 'X'. "n531604

REFRESH color.

colourize 'LABST' bestand-labst.

colourize 'UMLME' bestand-umlme.

colourize 'EINME' bestand-einme.

colourize 'SPEME' bestand-speme.

colourize 'RETME' bestand-retme.

colourize 'INSME' bestand-insme.

colourize 'WLABS' bestand-wlabs.

colourize 'WUMLM' bestand-wumlm.

colourize 'WEINM' bestand-weinm.

colourize 'WSPEM' bestand-wspem.

colourize 'WRETM' bestand-wretm.

colourize 'WINSM' bestand-winsm.

colourize 'BWESB' bestand-bwesb. "AC0K020254

colourize 'WBWESB' bestand-wbwesb. "AC0K020254

colourize 'GLGMG' bestand-glgmg. "n912093

colourize 'WGLGM' bestand-wglgm. "n912093

colourize 'TRAME' bestand-trame. "n912093

colourize 'WTRAM' bestand-wtram. "n912093

colourize 'UMLMC' bestand-umlmc. "n912093

colourize 'WUMLC' bestand-wumlc. "n912093

bestand-farbe = color[].

MODIFY bestand.

ENDIF. "n531604

ENDLOOP.

ENDIF. "n531604

  • set the name for color table when required "n531604

IF alv_color = 'X'. "n531604

CLEAR layout-coltab_fieldname. "n531604

ELSE. "n531604

MOVE 'FARBE' TO layout-coltab_fieldname. "n531604

ENDIF. "n531604

layout-group_change_edit = 'X'.

DATA : l_f_check(01) TYPE c.

  • added dynamic break-point ID MMIM_REP_MB52 "n912093

BREAK-POINT ID mmim_rep_mb52. "n912093

  • process the list according the parameters "n531604

IF NOT pa_hsq IS INITIAL. "n531604

  • create a hierarchic list "n531604

  • assign form routine for page numbering "n667256

gs_events-name = 'TOP_OF_PAGE'. "n667256

gs_events-form = 'F4000_TOP_OF_PAGE'. "n667256

APPEND gs_events TO gt_events. "n667256

************************************************************************

*Temp table to hold data of Bestand

DATA: BEGIN OF lt_buff OCCURS 0.

INCLUDE STRUCTURE bestand.

DATA: END OF lt_buff.

DATA: lt_temp TYPE bestand.

DATA: wa_buff TYPE bestand.

  • FIELD-SYMBOLS <fs_buff>.

lt_buff[] = bestand[].

CLEAR bestand[].

LOOP AT lt_buff.

PERFORM convert_to_ea CHANGING lt_buff.

APPEND lt_buff TO bestand.

CLEAR lt_buff.

ENDLOOP.

************************************************************************

*Customization of curbell to view the Unit of measure in Each when ever in Sq.inches.

  • PERFORM field_converstion TABLES bestand.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_interface_check = l_f_check

i_callback_program = repid

is_layout = layout

it_fieldcat = fieldcat[]

i_default = 'X'

i_save = 'A'

is_variant = variante

it_events = gt_events[] "n667256

i_tabname_header = 'HEADER'

i_tabname_item = 'BESTAND'

is_keyinfo = keyinfo

is_print = alv_print

it_sort = sort[]

it_excluding = excluding[]

TABLES

t_outtab_header = header

t_outtab_item = bestand

EXCEPTIONS

OTHERS = 2.

ELSEIF NOT pa_flt IS INITIAL. "n531604

  • create a flat non-hierarchic list "n531604

  • assign form routine for page numbering only for "n667256

  • classic ALV "n667256

IF alv_detail_func = 'REUSE_ALV_LIST_DISPLAY'. "n667256

gs_events-name = 'TOP_OF_PAGE'. "n667256

gs_events-form = 'F4000_TOP_OF_PAGE'. "n667256

APPEND gs_events TO gt_events. "n667256

ENDIF.

CALL FUNCTION alv_detail_func

EXPORTING

i_interface_check = l_f_check

i_callback_program = repid

is_layout = layout

it_fieldcat = fieldcat[]

it_sort = sort[]

i_default = 'X'

i_save = 'A'

is_variant = variante_flat

it_events = gt_events[] "n667256

is_print = alv_print

TABLES

t_outtab = bestand

EXCEPTIONS

OTHERS = 2.

ENDIF. "n531604

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. " LISTAUSGABE

*&----


*

*& Form F4_FOR_VARIANT

*&----


*

  • F4-Hilfe für Reportvariante *

*----


*

FORM f4_for_variant.

  • look for the available display variant depending on the "n531604

  • selected mode of the SAP-LIST-VIEWER

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

MOVE variante TO def_variante_f4.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

MOVE variante_flat TO def_variante_f4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = def_variante_f4

i_save = 'A'

  • it_default_fieldcat =

IMPORTING

e_exit = variant_exit

es_variant = def_variante

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF variant_exit = space.

  • save the selected display variant

p_vari = def_variante-variant.

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

MOVE p_vari TO g_f_vari_hsq.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

MOVE p_vari TO g_f_vari_flt.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " F4_FOR_VARIANT

*----

-


"n531604

  • f0000_get_print_settings

*----

-


"n531604

FORM f0000_get_print_settings.

  • get the settings for the SAP-LIST-VIEWER

SELECT SINGLE * FROM mmim_rep_print

WHERE report = sy-repid.

IF sy-subrc <> 0.

  • if this entry is missing, set default values and insert

  • a new entry into database tabel MMIM_REP_PRINT

CLEAR mmim_rep_print.

MOVE : sy-repid TO mmim_rep_print-report,

'X' TO mmim_rep_print-selinfo.

INSERT mmim_rep_print.

IF sy-subrc IS INITIAL.

COMMIT WORK.

ELSE.

  • error during insert into table MMIN_RE_PRINT

MESSAGE s895 WITH text-895.

ENDIF.

ENDIF.

  • set the parameter for this run

IF mmim_rep_print-selinfo = 'X'.

alv_print-no_print_selinfos = ' '.

ELSE.

alv_print-no_print_selinfos = 'X'.

ENDIF.

IF mmim_rep_print-coverpage = 'X'.

alv_print-no_coverpage = ' '.

ELSE.

alv_print-no_coverpage = 'X'.

ENDIF.

IF mmim_rep_print-listinfo = 'X'.

alv_print-no_print_listinfos = ' '.

ELSE.

alv_print-no_print_listinfos = 'X'.

ENDIF.

IF mmim_rep_print-gridcontrol = 'X'.

alv_detail_func = 'REUSE_ALV_GRID_DISPLAY'.

ELSE.

alv_detail_func = 'REUSE_ALV_LIST_DISPLAY'.

ENDIF.

IF mmim_rep_print-color = 'X'.

alv_color = 'X'.

ELSE.

alv_color = space.

ENDIF.

ENDFORM. "f0000_get_print_settings

*----

-


"n531604

  • Initialization of the user defaults for the checkboxes

  • f0100_settings_init. "n531604

*----

-


"n531604

FORM f0100_settings_init. "n531604

  • only in dialog mode

CHECK : sy-batch IS INITIAL.

IF oref_settings IS INITIAL.

CREATE OBJECT oref_settings

EXPORTING

i_action = 'RM07MLBS'.

ENDIF.

  • get the parameters from the last run

pa_sond = oref_settings->get( 'PA_SOND' ).

pa_hsq = oref_settings->get( 'PA_HSQ' ).

pa_flt = oref_settings->get( 'PA_FLT' ).

negativ = oref_settings->get( 'NEGATIV' ).

xmchb = oref_settings->get( 'XMCHB' ).

nozero = oref_settings->get( 'NOZERO' ).

novalues = oref_settings->get( 'NOVALUES' ).

  • check radiobuttons

IF pa_hsq IS INITIAL.

IF pa_flt IS INITIAL.

  • not allowed

MOVE 'X' TO pa_hsq.

ENDIF.

ELSE.

IF pa_flt IS INITIAL.

ELSE.

  • not allowed

CLEAR pa_flt.

ENDIF.

ENDIF.

ENDFORM. "f0100_settings_init "n531604

************************************************************************

  • Save the user settings

************************************************************************

FORM f0200_settings_save. "n531604

  • only in dialog mode

CHECK : sy-batch IS INITIAL.

  • go on when the FORM routines of INITILIZATION "n667256

  • were processed "n667256

CHECK : g_flag_initialization = 'X'. "n667256

  • Save the settings

CALL METHOD oref_settings->set( i_element = 'PA_SOND'

i_active = pa_sond ).

CALL METHOD oref_settings->set( i_element = 'PA_HSQ'

i_active = pa_hsq ).

CALL METHOD oref_settings->set( i_element = 'PA_FLT'

i_active = pa_flt ).

CALL METHOD oref_settings->set( i_element = 'NEGATIV'

i_active = negativ ).

CALL METHOD oref_settings->set( i_element = 'XMCHB'

i_active = xmchb ).

CALL METHOD oref_settings->set( i_element = 'NOZERO'

i_active = nozero ).

CALL METHOD oref_settings->set( i_element = 'NOVALUES'

i_active = novalues ).

CALL METHOD oref_settings->flush.

  • carry out the database updates only; the normal commit "n667256

  • command does not allow to record this transaction for "n667256

  • a batch input session using transaction SHDB "n667256

CALL FUNCTION 'DB_COMMIT'. "n667256

ENDFORM. "f0200_settings_save "n531604

*----


*

  • f0300_fieldcat_flat

*----


*

FORM f0300_fieldcat_flat.

  • define macro

DEFINE macro_fill_fieldcat.

add : 1 to g_cnt_col_pos.

move : g_cnt_col_pos to fieldcat-col_pos,

&1 to fieldcat-fieldname,

'BESTAND' to fieldcat-tabname,

&2 to fieldcat-ref_tabname,

&3 to fieldcat-no_out.

if not fieldcat-seltext_l is initial.

move : fieldcat-seltext_l to fieldcat-seltext_m,

fieldcat-seltext_l to fieldcat-seltext_s.

endif.

append fieldcat.

clear fieldcat.

END-OF-DEFINITION.

macro_fill_fieldcat 'MATNR' 'MARA' c_out.

macro_fill_fieldcat 'MAKTX' 'MAKT' c_no_out.

macro_fill_fieldcat 'WERKS' 'T001W' c_out.

macro_fill_fieldcat 'NAME1' 'T001W' c_no_out.

macro_fill_fieldcat 'MTART' 'MARA' c_no_out.

macro_fill_fieldcat 'MATKL' 'MARA' c_no_out.

macro_fill_fieldcat 'LGORT' 'MARD' c_out.

IF NOT pa_sond IS INITIAL.

macro_fill_fieldcat 'SOBKZ' 'MKOL' c_out.

IF novalues IS INITIAL.

macro_fill_fieldcat 'KZBWS' 'MSSA' c_out.

ENDIF.

MOVE : 'SSNUM' TO fieldcat-ref_fieldname.

macro_fill_fieldcat 'SSNUM' 'BICKEY' c_out.

ENDIF.

macro_fill_fieldcat 'LVORM' 'MARD' c_out.

IF xmchb = 'X'.

macro_fill_fieldcat 'CHARG' 'MCHB' c_out.

ENDIF.

macro_fill_fieldcat 'MEINS' 'MARA' c_out.

  • Stock and value for stock unrestrestricted use

fieldcat-qfieldname = 'MEINS'.

macro_fill_fieldcat 'LABST' 'MARD' c_out.

IF novalues IS INITIAL.

fieldcat-outputlen = 5.

macro_fill_fieldcat 'WAERS' 'T001' c_out.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • 'Wert frei verwend.'.

fieldcat-seltext_l = text-021.

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WLABS' 'MBEW' c_out.

ENDIF.

  • stock and value for stock in transfer

fieldcat-qfieldname = 'MEINS'.

fieldcat-ref_fieldname = 'MB52_TRAUML'. "n912093

macro_fill_fieldcat 'UMLME' 'AM07M' c_out. "n912093

IF novalues IS INITIAL.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • 'Wert in Umlagerung'. // Wert Umlag u. Transit "n912093

  • 'Wert Umlag.Bestand'. // n912093 "n912093

fieldcat-seltext_l = text-030. "n912093

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WUMLM' 'MBEW' c_out.

ENDIF.

  • stock and value for stock in quality inspection

fieldcat-qfieldname = 'MEINS'.

macro_fill_fieldcat 'INSME' 'MARD' c_out.

IF novalues IS INITIAL.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • "Wert in QualPrüfng'

fieldcat-seltext_l = text-023.

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WINSM' 'MBEW' c_out.

ENDIF.

  • stock and value for restricted stock

fieldcat-qfieldname = 'MEINS'.

macro_fill_fieldcat 'EINME' 'MARD' c_out.

IF novalues IS INITIAL.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • "Wert nicht frei'

fieldcat-seltext_l = text-024.

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WEINM' 'MBEW' c_out.

ENDIF.

  • stock and value for blocked stock

fieldcat-qfieldname = 'MEINS'.

macro_fill_fieldcat 'SPEME' 'MARD' c_out.

IF novalues IS INITIAL.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • 'Wert Sperrbestand'

fieldcat-seltext_l = text-025.

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WSPEM' 'MBEW' c_out.

ENDIF.

  • stock and value for blocked returns

fieldcat-qfieldname = 'MEINS'.

macro_fill_fieldcat 'RETME' 'MARD' c_out.

  • Values

IF novalues IS INITIAL.

fieldcat-ref_fieldname = 'SALK3'.

fieldcat-cfieldname = 'WAERS'.

  • "Wert RetourenSperr'.

fieldcat-seltext_l = text-026.

fieldcat-do_sum = 'X'.

fieldcat-outputlen = '18'.

macro_fill_fieldcat 'WRETM' 'MBEW' c_out.

ENDIF. "novalues is initial

  • process valuated block GR stock as hidden field "AC0K020254

fieldcat-qfieldname = 'MEINS'. "AC0K020254

macro_fill_fieldcat 'BWESB' 'MARC' c_no_out. "AC0K020254

"AC0K020254

  • the estimated value for the valuated block GR stock "AC0K020254

  • as hidden field, too "AC0K020254

IF novalues IS INITIAL. "AC0K020254

fieldcat-ref_fieldname = 'SALK3'. "AC0K020254

fieldcat-cfieldname = 'WAERS'. "AC0K020254

  • value blocked GR stock "AC0K020254

fieldcat-seltext_l = text-027. "AC0K020254

fieldcat-do_sum = 'X'. "AC0K020254

fieldcat-outputlen = '18'. "AC0K020254

macro_fill_fieldcat 'WBWESB' 'MBEW' c_no_out. "AC0K020254

ENDIF.

  • stock and value for tied empties "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

macro_fill_fieldcat 'GLGMG' 'MARC' c_no_out. "n912093

"n912093

  • Values "n912093

IF novalues IS INITIAL. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

  • 'Wert gebundenes Leergut' "n912093

fieldcat-seltext_l = text-028. "n912093

fieldcat-do_sum = 'X'. "n912093

fieldcat-outputlen = '18'. "n912093

macro_fill_fieldcat 'WGLGM' 'MBEW' c_no_out. "n912093

ENDIF. "n912093

  • stock and value for stock in transit "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

macro_fill_fieldcat 'TRAME' 'MARC' c_no_out. "n912093

"n912093

  • Values "n912093

IF novalues IS INITIAL. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

  • 'Wert Transitbestand' "n912093

fieldcat-seltext_l = text-029. "n912093

fieldcat-do_sum = 'X'. "n912093

fieldcat-outputlen = '18'. "n912093

macro_fill_fieldcat 'WTRAM' 'MBEW' c_no_out. "n912093

ENDIF. "n912093

  • stock and value for stock in transit "n912093

fieldcat-qfieldname = 'MEINS'. "n912093

macro_fill_fieldcat 'UMLMC' 'MARC' c_no_out. "n912093

"n912093

  • Values "n912093

IF novalues IS INITIAL. "n912093

fieldcat-ref_fieldname = 'SALK3'. "n912093

fieldcat-cfieldname = 'WAERS'. "n912093

  • 'Wert Umlagerung an Werk' "n912093

fieldcat-seltext_l = text-022. "n912093

fieldcat-do_sum = 'X'. "n912093

fieldcat-outputlen = '18'. "n912093

macro_fill_fieldcat 'WUMLC' 'MBEW' c_no_out. "n912093

ENDIF. "n912093

  • set the key fields of the special stock as hidden fields

IF g_flag_sobkz-lifnr = 'X'.

macro_fill_fieldcat 'LIFNR' 'MKOL' c_no_out.

ENDIF.

IF g_flag_sobkz-kunnr = 'X'.

macro_fill_fieldcat 'KUNNR' 'MSKU' c_no_out.

ENDIF.

IF g_flag_sobkz-vbeln = 'X'.

macro_fill_fieldcat 'VBELN' 'MSKA' c_no_out.

macro_fill_fieldcat 'POSNR' 'MSKA' c_no_out.

ENDIF.

IF g_flag_sobkz-pspnr = 'X'.

macro_fill_fieldcat 'PSPNR' 'MSPR' c_no_out.

ENDIF.

ENDFORM. "f0300_fieldcat_flat

*----


*

  • f0400_create_sort

*----


*

FORM f0400_create_sort

USING l_f_fieldname LIKE sort-fieldname.

  • create the table with the alv sort information

IF NOT pa_hsq IS INITIAL.

  • for hierarchic seq. list

  • check whether this is an active field is in the

  • fieldcat

READ TABLE fieldcat WITH KEY

fieldname = l_f_fieldname

no_out = space.

ELSEIF NOT pa_flt IS INITIAL.

  • for flat ( simple ) list

  • check whether this field is in the fieldcat

READ TABLE fieldcat WITH KEY

fieldname = l_f_fieldname.

ENDIF.

IF sy-subrc IS INITIAL.

ADD 1 TO g_cnt_spos.

MOVE : g_cnt_spos TO sort-spos,

l_f_fieldname TO sort-fieldname,

'X' TO sort-up,

'BESTAND' TO sort-tabname.

APPEND sort.

CLEAR sort.

ENDIF.

ENDFORM. "f0400_create_sort

*----


*

  • f2000_COLLECT_collector.

*----


*

FORM f2000_collect_collector.

  • does the user want to suppress stock objects from plant "n577268

  • level ? "n577268

IF g_flag_suppress_init_lgort = 'X'. "n577268

IF collector-lgort IS INITIAL. "n577268

  • ignore stock objects without storage location "n577268

EXIT. "--> go to exit "n577268

ENDIF. "n577268

ENDIF. "n577268

************************************************************************

  • process the functions "No zero stocks",

  • "Negative stocks only", "Without batches" here

************************************************************************

IF negativ = 'X'.

  • ignore entry if all stocks are zero or greater

IF collector-labst >= 0 AND collector-einme >= 0 AND

collector-insme >= 0 AND collector-retme >= 0 AND

collector-speme >= 0 AND collector-umlme >= 0.

EXIT. "--> go to exit

ENDIF.

ENDIF.

IF nozero = 'X'.

  • ignore all entries without stock

IF collector-labst = 0 AND collector-einme = 0 AND

collector-insme = 0 AND collector-retme = 0 AND

collector-speme = 0 AND collector-umlme = 0.

EXIT. "--> go to exit

ENDIF.

ENDIF.

IF xmchb IS INITIAL.

CLEAR collector-charg.

ENDIF.

COLLECT collector.

ENDFORM. "f2000_COLLECT_collector.

*----

-


"n579976

  • F3000_SEND_WARNING_M7_393 "n579976

*----

-


"n579976

"n579976

*&----


*

*& Form F3000_SEND_WARNING_M7_393

*&----


*

  • text

*----


*

  • -->L_VARIANT text

*----


*

FORM f3000_send_warning_m7_393 "n579976

USING l_variant LIKE disvariant-variant. "n579976

"n579976

  • check the customising settings : emerge warning 393 ? "n579976

CALL FUNCTION 'ME_CHECK_T160M' "n579976

EXPORTING "n579976

i_arbgb = 'M7' "n579976

i_msgnr = '393' "n579976

EXCEPTIONS "n579976

nothing = 0 "n579976

OTHERS = 1. "n579976

"n579976

IF sy-subrc <> 0. "n579976

  • list will be created using the initial layout & "n579976

MESSAGE i393 WITH l_variant. "n667256

ENDIF. "n579976

"n579976

ENDFORM. "F3000_SEND_WARNING_M7_393 "n579976

"n579976

*----

-


"n579976

*----

-


"n667256

  • F4000_TOP_OF_PAGE. "n667256

*----

-


"n667256

"n667256

AT SELECTION-SCREEN OUTPUT. "n667256

"n667256

*ENHANCEMENT-POINT RM07MLBS_04 SPOTS ES_RM07MLBS.

IF g_flag_initialization IS INITIAL. "n667256

  • the process time INITIALIZATION was not done, so "n667256

  • carry out the functions here "n667256

MOVE 'X' TO g_flag_initialization. "n667256

"n667256

PERFORM f0000_get_print_settings. "n667256

"n667256

  • look for the setting of the parameters from the "n667256

  • last run "n667256

PERFORM f0100_settings_init. "n667256

"n667256

PERFORM initialisierung. "n667256

ENDIF. "n667256

"n667256

*----

-


"n667256

*----


Datenselektion -


*

FORM f4000_top_of_page. "n667256

"n667256

  • go on if there is a print destination set "n667256

CHECK NOT sy-prdsn IS INITIAL. "n667256

  • go on if it is in print modus, only "n960980

CHECK sy-ucomm = '&RNT' OR sy-ucomm IS INITIAL. "n960980

"n667256

  • classic ALV : use the simple write command "n667256

WRITE : sy-datlo DD/MM/YYYY, sy-title, sy-pagno. "n667256

"n667256

"n667256

ENDFORM. "F4000_TOP_OF_PAGE. "n667256

"n667256

*----

-


"n667256

*&----


*

*& Form field_converstion

*&----


*

  • text

*----


*

  • -->P_COLLECTOR_LABST text

  • -->P_BESTAND_MEINS text

*----


*

*FORM field_converstion TABLES p_bestand.

*

  • CONSTANTS : c_in2(3) VALUE 'IN2'.

  • DATA: lv_ea TYPE meins VALUE 'EA',

  • lv_temp TYPE meins,

  • lv_output TYPE labst.

*

  • DATA: BEGIN OF lt_mlgn OCCURS 0.

  • INCLUDE STRUCTURE mlgn.

  • DATA: END OF lt_mlgn.

*

*ENDFORM. " field_converstion

*&----


*

*& Form convert_to_ea

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM convert_to_ea CHANGING lt_buff STRUCTURE bestand.

DATA: l_lvsme TYPE lvs_lvsme,

l_lgnum TYPE lgnum.

l_lgnum = lt_buff-werks+1.

SELECT SINGLE lvsme

INTO l_lvsme

FROM mlgn

WHERE matnr = lt_buff-matnr

AND lgnum = l_lgnum.

IF NOT l_lvsme IS INITIAL.

*For Unrestricted materials

CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'

EXPORTING

input = lt_buff-labst

matnr = lt_buff-matnr

meinh = l_lvsme

meins = lt_buff-meins

charge = lt_buff-charg

werks = lt_buff-werks

IMPORTING

output = lt_buff-labst

EXCEPTIONS

conversion_not_found = 1

input_invalid = 2

material_not_found = 3

meinh_not_found = 4

meins_missing = 5

no_meinh = 6

output_invalid = 7

overflow = 8

OTHERS = 9.

*For materials in Quality inspection

IF NOT lt_buff-insme IS INITIAL.

CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'

EXPORTING

input = lt_buff-insme

matnr = lt_buff-matnr

meinh = l_lvsme

meins = lt_buff-meins

charge = lt_buff-charg

werks = lt_buff-werks

IMPORTING

output = lt_buff-insme

EXCEPTIONS

conversion_not_found = 1

input_invalid = 2

material_not_found = 3

meinh_not_found = 4

meins_missing = 5

no_meinh = 6

output_invalid = 7

overflow = 8

OTHERS = 9.

ENDIF.

*For restricted use materials

IF NOT lt_buff-EINME IS INITIAL.

CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'

EXPORTING

input = lt_buff-EINME

matnr = lt_buff-matnr

meinh = l_lvsme

meins = lt_buff-meins

charge = lt_buff-charg

werks = lt_buff-werks

IMPORTING

output = lt_buff-EINME

EXCEPTIONS

conversion_not_found = 1

input_invalid = 2

material_not_found = 3

meinh_not_found = 4

meins_missing = 5

no_meinh = 6

output_invalid = 7

overflow = 8

OTHERS = 9.

ENDIF.

*For return items

IF NOT lt_buff-retme IS INITIAL.

CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'

EXPORTING

input = lt_buff-retme

matnr = lt_buff-matnr

meinh = l_lvsme

meins = lt_buff-meins

charge = lt_buff-charg

werks = lt_buff-werks

IMPORTING

output = lt_buff-retme

EXCEPTIONS

conversion_not_found = 1

input_invalid = 2

material_not_found = 3

meinh_not_found = 4

meins_missing = 5

no_meinh = 6

output_invalid = 7

overflow = 8

OTHERS = 9.

ENDIF.

lt_buff-meins = l_lvsme.

ENDIF.

ENDFORM. " convert_to_ea