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

optimize this code?

Former Member
0 Likes
597

DATA: v_title(245) TYPE c,

v_butxt(245) TYPE c,

v_tot_recs LIKE sy-tabix,

v_total_pages LIKE sy-tabix,

v_tot_qty LIKE mseg-menge.

TABLES: mara, makt, marc, mard, mkpf, mseg, t001, t001w,t001l.

TABLES: sscrfields.

*----


*TYPE_POOLS

*----


TYPE-POOLS: slis. "ALV Display

TYPES : BEGIN OF stype_mseg_lean,

mblnr LIKE mkpf-mblnr,

mjahr LIKE mkpf-mjahr,

budat LIKE mkpf-budat,

xblnr LIKE mkpf-xblnr,

bukrs LIKE t001-bukrs,

zeile LIKE mseg-zeile,

bwart LIKE mseg-bwart,

matnr LIKE mseg-matnr,

werks LIKE mseg-werks,

lgort LIKE mseg-lgort,

shkzg LIKE mseg-shkzg,

menge LIKE mseg-menge,

meins LIKE mseg-meins,

dmbtr LIKE mseg-dmbtr,

dmbum LIKE mseg-dmbum,

insmk LIKE mseg-insmk,

aufnr LIKE mseg-aufnr,

kostl LIKE mseg-kostl,

anln1 LIKE mseg-anln1,

kdauf LIKE mseg-kdauf.

TYPES : END OF stype_mseg_lean.

TYPES: stab_mseg_lean TYPE STANDARD TABLE OF stype_mseg_lean

WITH KEY mblnr mjahr.

TYPES: BEGIN OF stype_fields,

fieldname TYPE name_feld,

END OF stype_fields.

TYPES: stab_fields TYPE STANDARD TABLE OF stype_fields

WITH KEY fieldname.

DATA: g_t_mseg_fields TYPE stab_fields.

DATA: i_mseg_lean TYPE stype_mseg_lean OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF i_show OCCURS 0,

matnr LIKE mseg-matnr,

maktx(150) type c,

meins LIKE mseg-meins,

op_stock LIKE mseg-menge,

stock_in_a_prd LIKE mseg-menge,

stock_in_a_cstn LIKE mseg-menge,

stock_in_b_issue LIKE mseg-menge,

stock_in_b_trn LIKE mseg-menge,

stock_in_r LIKE mseg-menge,

stock_toprd LIKE mseg-menge,

stock_out_a LIKE mseg-menge,

stock_out_b_issue LIKE mseg-menge,

stock_out_b_trn LIKE mseg-menge,

stock_out_r LIKE mseg-menge,

cl_stock LIKE mseg-menge,

END OF i_show.

DATA : i_show_alv LIKE i_show OCCURS 0 WITH HEADER LINE.

types: BEGIN OF t_mseg_lean_new ,

matnr LIKE mseg-matnr, "Material Number

bwart LIKE mseg-bwart, "Movement Type (Inventory Management)

dmbtr LIKE mseg-dmbtr, "Amount in Local Currency

shkzg LIKE mseg-shkzg, "Debit/Credit Indicator

dmbum LIKE mseg-dmbum, "Revaluation amount on back

menge LIKE mseg-menge, "Quantity

meins LIKE mseg-meins, "Base Unit of Measure

insmk LIKE mseg-insmk, "Stock Type

aufnr LIKE mseg-aufnr, "Order Number

kostl LIKE mseg-kostl, "Cost Center

anln1 LIKE mseg-anln1, "Main Asset Number

lgort LIKE mseg-lgort, "Storage Location

kdauf LIKE mseg-kdauf, "Sales Order Number

budat LIKE mkpf-budat, "Posting Date in the Document

xblnr LIKE mkpf-xblnr, "Reference Document Number

END OF t_mseg_lean_new.

DATA: i_mseg_lean_new type t_mseg_lean_new OCCURS 0

WITH HEADER LINE.

DATA: i_mseg_lean_cl type t_mseg_lean_new OCCURS 0

WITH HEADER LINE.

DATA: i_mseg_lean_cl_final type sorted table of t_mseg_lean_new

with unique key matnr with header line.

DATA: wa_op_stock LIKE mseg-menge,

wa_stock_in_a LIKE mseg-menge,

wa_stock_in_b LIKE mseg-menge,

wa_stock_in_r LIKE mseg-menge,

wa_stock_out_a LIKE mseg-menge,

wa_stock_out_b LIKE mseg-menge,

wa_stock_out_r LIKE mseg-menge,

wa_cl_stock LIKE mseg-menge, "closing stock

wa_stock_321s LIKE mseg-menge, "Debit

wa_stock_321h LIKE mseg-menge. "Credit

DATA: wa_stock_in_a_prd LIKE mseg-menge,

wa_stock_in_a_cstn LIKE mseg-menge,

wa_stock_in_b_issue LIKE mseg-menge,

wa_stock_in_b_trn LIKE mseg-menge,

wa_stock_out_b_issue LIKE mseg-menge,

wa_stock_out_b_trn LIKE mseg-menge.

  • addition ends

types: BEGIN OF t_mard ,

matnr LIKE mard-matnr,

labst LIKE mard-labst, "UNRESTRICTED STOCK

insme LIKE mard-insme, "STOCK IN QUALITY INSP

cl_stock LIKE mseg-menge, "QTY

END OF t_mard.

data: i_mard type sorted table of t_mard with unique key matnr with

header line.

DATA: v_meins TYPE mseg-meins.

DATA: i_tabb LIKE bdcdata OCCURS 0 WITH HEADER LINE,

wa_options LIKE ctu_params.

DATA: v_objnm TYPE stxh-tdname,

v_object TYPE stxh-tdobject,

v_objid TYPE stxh-tdid.

DATA: n TYPE i.

DATA : v_long_text(22) TYPE c.

DATA : V_DESC(150) TYPE C.

DATA : i_tline LIKE tline OCCURS 0

WITH HEADER LINE.

DATA : BEGIN OF i_text_tab OCCURS 0,

out_lines(150),

END OF i_text_tab.

DATA : i_text_tab1 LIKE i_text_tab OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF i_tab_text OCCURS 0,

ltext(150),

END OF i_tab_text.

DATA : BEGIN OF i_tab_text1 OCCURS 0,

ltext1(100),

END OF i_tab_text1.

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

SELECT-OPTIONS: s_matnr FOR mara-matnr." OBLIGATORY.

PARAMETERS: "p_bukrs LIKE t001-bukrs OBLIGATORY,

p_werks LIKE t001w-werks OBLIGATORY.

SELECT-OPTIONS: s_lgort FOR t001l-lgort.

SELECT-OPTIONS: s_budat FOR mkpf-budat OBLIGATORY.

SELECTION-SCREEN END OF BLOCK one.

PARAMETERS p_alv AS CHECKBOX . "For ALV

  • If no date is given at all, the range is set to the maximum

  • extend (1.1.0000 - 31.12.9999).

  • If only s_budat-low is set, it is interpreted as the day for

  • which the analysis is wanted --> s_budat-high is filled up.

SELECTION-SCREEN FUNCTION KEY 1.

IF s_budat-low IS INITIAL.

s_budat-low = '00000101'.

IF s_budat-high IS INITIAL.

s_budat-high = '99991231'.

ENDIF.

ELSE.

IF s_budat-high IS INITIAL.

s_budat-high = s_budat-low.

ENDIF.

ENDIF.

RANGES s_werks FOR t001w-werks.

s_werks-sign = 'I'.

s_werks-option = 'EQ'.

s_werks-low = p_werks.

APPEND s_werks.

**********ALV Setting starts***************

*ALV Data Declaration.

DATA : i_events TYPE slis_t_event,

i_list_top_of_page TYPE slis_t_listheader,

g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

i_layout TYPE slis_layout_alv,

i_fieldcat TYPE slis_t_fieldcat_alv ,

gs_print TYPE slis_print_alv,

wa_fieldcat LIKE LINE OF i_fieldcat.

DATA: v_repid TYPE sy-repid.

DATA: gs_variant LIKE disvariant,

first(01) TYPE c,

g_save.

*Initialization for ALV.

INITIALIZATION.

v_repid = sy-repid.

  • i_layout-detail_popup = 'X'."PERFORM layout_init USING i_layout.

PERFORM layout_init USING i_layout.

PERFORM eventtab_build USING i_events[].

gs_variant-report = v_repid.

g_save = 'A'.

*TOP-OF-PAGE, END-OF-PAGE, END-OF-LIST are called

*dynamically due to PERFORM eventtab_build

**********ALV Setting Ends***************

**For Documentation

INITIALIZATION.

MOVE text-002 TO sscrfields-functxt_01.

AT SELECTION-SCREEN.

**For Documentation

IF sscrfields-ucomm = 'FC01'.

CALL FUNCTION 'RS_TOOL_ACCESS'

EXPORTING

operation = 'DOCS'

object_name = 'ZMMR0100'

object_type = 'PROG'

EXCEPTIONS

not_executed = 1

invalid_object_type = 2

OTHERS = 3.

ENDIF.

START-OF-SELECTION.

PERFORM mkpf_mseg.

PERFORM set_for_segregation.

PERFORM segregation.

PERFORM cl_stock.

PERFORM op_stock.

      • Added By Essam on 25.02.2008

PERFORM i_show_alv_populate.

      • Addition Ends

i_show[] = i_show_alv[].

END-OF-SELECTION.

**ADDED BY ESSAM FOR ALV ON 23-FEB-2008

  • PERFORM SHOW.

IF p_alv = 'X'.

PERFORM display_alv.

ELSE.

PERFORM display_list.

ENDIF.

**ADDITION ENDS FOR ALV

  • SET TITLEBAR 'ZT1' WITH s_budat-low s_budat-high.

  • PERFORM show.

  • SET PF-STATUS 'ZP1'.

TOP-OF-PAGE.

PERFORM top_page.

*AT LINE-SELECTION.

  • PERFORM next_screen.

&----


*& Form mkpf_mseg

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM mkpf_mseg.

  • SELECT * INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean

  • FROM mkpf AS mkpf JOIN mseg AS mseg

  • ON mkpfmandt = msegmandt AND

  • mkpfmblnr = msegmblnr AND

  • mkpfmjahr = msegmjahr

  • WHERE mseg~matnr IN s_matnr

  • AND mseg~werks IN s_werks

  • AND mseg~lgort IN s_lgort

    • AND mkpf~budat GE s_budat-low.

  • AND mkpf~budat IN s_budat.

*added by ish on 30.6.04

  • BELOW CODE CHANGED BY ESSAM ON 19-FEB-2008

SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart

msegdmbtr msegshkzg

msegdmbum msegmenge msegwerks mseglgort

msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr

mseg~zeile

mseg~kdauf

INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean

FROM mkpf AS mkpf JOIN mseg AS mseg

ON msegmandt = mkpfmandt AND

msegmblnr = mkpfmblnr AND

msegmjahr = mkpfmjahr

WHERE mseg~matnr IN s_matnr

AND mseg~werks IN s_werks

AND mseg~lgort IN s_lgort

AND mkpf~budat IN s_budat.

IF sy-subrc <> 0.

ENDIF.

****testing for optimization.

        • SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart

        • msegdmbtr msegshkzg

        • msegdmbum msegmenge msegwerks mseglgort

        • msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr

        • mseg~zeile

        • mseg~kdauf

        • INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean

        • FROM mkpf AS mkpf JOIN mseg AS mseg

        • ON msegmandt = mkpfmandt AND

        • msegmblnr = mkpfmblnr AND

        • msegmjahr = mkpfmjahr

        • WHERE mseg~matnr IN s_matnr

        • AND mseg~werks IN s_werks

        • AND mseg~lgort IN s_lgort

        • AND mkpf~budat IN s_budat.

****

        • IF sy-subrc <> 0.

        • ENDIF.

*adding other materials whose transaction is not made during the

*selected period

CLEAR: i_mseg_lean.

SELECT matnr werks lgort FROM mard INTO CORRESPONDING FIELDS OF

i_mseg_lean WHERE

matnr IN s_matnr AND

werks IN s_werks AND

lgort IN s_lgort .

APPEND i_mseg_lean.

ENDSELECT.

*addition ends

SORT i_mseg_lean BY matnr.

ENDFORM. " mkpf_mseg

&----


*& Form segregation

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM segregation.

CLEAR: wa_stock_in_a_prd,wa_stock_in_a_cstn, wa_stock_in_b_issue,

wa_stock_in_b_trn,wa_stock_out_a, wa_stock_out_b_issue,

wa_stock_out_b_trn,wa_stock_in_r, wa_stock_out_r.

LOOP AT i_mseg_lean_new WHERE matnr NE ''.

      • xx

**As per change log(6)

IF ( ( i_mseg_lean_new-bwart = '101' OR

i_mseg_lean_new-bwart = '102' ) AND i_mseg_lean_new-lgort = ''

AND i_mseg_lean_new-kdauf NE '' ).

    • do not take into consideration but display the op&cl stock

**ends

****STOCK IN_A

ELSEIF ( i_mseg_lean_new-shkzg = 'S' AND i_mseg_lean_new-aufnr CA '-'

AND i_mseg_lean_new-bwart NE '261' AND

i_mseg_lean_new-bwart NE '262' )

OR ( i_mseg_lean_new-bwart = '521' AND i_mseg_lean_new-shkzg = 'S' )

OR ( i_mseg_lean_new-bwart = '309' AND

i_mseg_lean_new-xblnr CA '-' AND

i_mseg_lean_new-shkzg = 'S' )

OR ( i_mseg_lean_new-bwart = '310' AND

i_mseg_lean_new-xblnr CA '-' AND

i_mseg_lean_new-shkzg = 'S' )

**adeed as per change log(5)

OR i_mseg_lean_new-bwart = '131' OR i_mseg_lean_new-bwart = '531'.

**ends

.

wa_stock_in_a_prd = wa_stock_in_a_prd + i_mseg_lean_new-menge.

      • XY

ELSEIF

( i_mseg_lean_new-shkzg = 'H' AND i_mseg_lean_new-aufnr CA '-'

AND i_mseg_lean_new-bwart NE '261' AND

i_mseg_lean_new-bwart NE '262' )

OR ( i_mseg_lean_new-bwart = '522' AND i_mseg_lean_new-shkzg = 'H' )

OR ( i_mseg_lean_new-bwart = '309' AND

i_mseg_lean_new-xblnr CA '-' AND

i_mseg_lean_new-shkzg = 'H' )

OR ( i_mseg_lean_new-bwart = '310' AND

i_mseg_lean_new-xblnr CA '-' AND

i_mseg_lean_new-shkzg = 'H' )

**adeed as per change log(5)

OR i_mseg_lean_new-bwart = '132' OR i_mseg_lean_new-bwart = '532'.

**ends

wa_stock_in_a_prd = wa_stock_in_a_prd - i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-aufnr CA '-' ).

wa_stock_in_a_cstn = wa_stock_in_a_cstn + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '262' AND i_mseg_lean_new-aufnr CA '-' ) .

wa_stock_in_a_cstn = wa_stock_in_a_cstn - i_mseg_lean_new-menge.

****STOCK IN_B

ELSEIF

i_mseg_lean_new-bwart = '101' OR

( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'S' ).

IF ( i_mseg_lean_new-bwart EQ '101' AND i_mseg_lean_new-shkzg = 'S' )

AND ( i_mseg_lean_new-kostl NE ' ' OR

i_mseg_lean_new-anln1 NE ' ' OR

( i_mseg_lean_new-aufnr NA '-' AND

i_mseg_lean_new-aufnr NE ' ' ) ).

wa_stock_out_b_issue = wa_stock_out_b_issue + i_mseg_lean_new-menge.

ENDIF.

wa_stock_in_b_issue = wa_stock_in_b_issue + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'H' ) OR

i_mseg_lean_new-bwart = '102' OR

i_mseg_lean_new-bwart = '122' OR

i_mseg_lean_new-bwart = '922'.

wa_stock_in_b_issue = wa_stock_in_b_issue - i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'S' ) OR

( i_mseg_lean_new-bwart = '311' AND i_mseg_lean_new-shkzg = 'S' ) OR

( i_mseg_lean_new-bwart = '301' AND i_mseg_lean_new-shkzg = 'S' ) OR

i_mseg_lean_new-bwart = '701'.

wa_stock_in_b_trn = wa_stock_in_b_trn + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'S' ) OR

( i_mseg_lean_new-bwart = '312' AND i_mseg_lean_new-shkzg = 'S' ) OR

( i_mseg_lean_new-bwart = '302' AND i_mseg_lean_new-shkzg = 'S' ) OR

i_mseg_lean_new-bwart = '702'.

wa_stock_in_b_trn = wa_stock_in_b_trn - i_mseg_lean_new-menge.

ELSEIF

****STOCK OUT_A

( i_mseg_lean_new-bwart = '601' AND i_mseg_lean_new-shkzg = 'H' )

OR ( i_mseg_lean_new-bwart = '654' AND i_mseg_lean_new-shkzg = 'H' )

*As per change log(7)

OR ( i_mseg_lean_new-bwart = '251' AND i_mseg_lean_new-shkzg = 'H' ).

*Ends

wa_stock_out_a = wa_stock_out_a + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '602' AND i_mseg_lean_new-shkzg = 'S' )

OR ( i_mseg_lean_new-bwart = '653' AND i_mseg_lean_new-shkzg = 'S' )

*As per change log(7)

OR ( i_mseg_lean_new-bwart = '252' AND i_mseg_lean_new-shkzg = 'S' ).

*Ends

wa_stock_out_a = wa_stock_out_a - i_mseg_lean_new-menge.

*****STOCK OUT_B

ELSEIF

( i_mseg_lean_new-bwart = '261' OR

i_mseg_lean_new-bwart = '241' OR

i_mseg_lean_new-bwart = '201' ).

wa_stock_out_b_issue = wa_stock_out_b_issue + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '202' OR

i_mseg_lean_new-bwart = '242' OR

i_mseg_lean_new-bwart = '262' ).

**The following line for subtraction was missed out in the

**original coding.

**Added on 16.10.2005 by Firoz.

wa_stock_out_b_issue = wa_stock_out_b_issue - i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'H' ) OR

( i_mseg_lean_new-bwart = '311' AND i_mseg_lean_new-shkzg = 'H' ) OR

( i_mseg_lean_new-bwart = '301' AND i_mseg_lean_new-shkzg = 'H' ).

wa_stock_out_b_trn = wa_stock_out_b_trn + i_mseg_lean_new-menge.

ELSEIF

( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'H' ) OR

( i_mseg_lean_new-bwart = '312' AND i_mseg_lean_new-shkzg = 'H' ) OR

( i_mseg_lean_new-bwart = '302' AND i_mseg_lean_new-shkzg = 'H' ).

wa_stock_out_b_trn = wa_stock_out_b_trn - i_mseg_lean_new-menge.

ENDIF.

*****addition Ends

v_meins = i_mseg_lean_new-meins.

AT END OF matnr.

  • if v_meins is initial.

SELECT SINGLE meins FROM mara INTO i_show-meins

WHERE matnr = i_mseg_lean_new-matnr.

  • endif.

i_show-matnr = i_mseg_lean_new-matnr.

****ADDED BY ESSAM ON 24-FEB-2008

v_long_text = i_show-matnr.

v_objnm = v_long_text.

v_object = 'MATERIAL'.

v_objid = 'GRUN'.

PERFORM read_text TABLES i_tline

USING v_objnm

v_objid

v_object.

CLEAR: v_long_text.

PERFORM split_texts TABLES i_tline i_text_tab1.

DATA : v_lines TYPE sy-tabix,

v_charno TYPE i.

DESCRIBE TABLE i_text_tab1 LINES v_lines.

IF v_lines NE 0.

DO v_lines TIMES.

READ TABLE i_text_tab1 INDEX sy-index.

IF sy-subrc = 0.

i_tab_text-ltext = i_text_tab1-out_lines.

v_desc = i_tab_text-ltext.

ENDIF.

ENDDO.

CLEAR:i_tab_text-ltext,i_tline[],v_charno,i_text_tab1[],v_lines.

ENDIF.

i_show-maktx = v_desc.

i_show-stock_in_a_prd = wa_stock_in_a_prd.

i_show-stock_in_a_cstn = wa_stock_in_a_cstn.

i_show-stock_in_b_issue = wa_stock_in_b_issue.

i_show-stock_in_b_trn = wa_stock_in_b_trn.

i_show-stock_in_r = wa_stock_in_r.

i_show-stock_toprd = wa_stock_321h - wa_stock_321s.

i_show-stock_out_a = wa_stock_out_a.

i_show-stock_out_b_issue = wa_stock_out_b_issue.

i_show-stock_out_b_trn = wa_stock_out_b_trn.

i_show-stock_out_r = wa_stock_out_r.

APPEND i_show.

CLEAR: wa_stock_in_a_prd,wa_stock_in_a_cstn,

wa_stock_in_b_issue,wa_stock_in_b_trn,

wa_stock_out_a,

wa_stock_out_b_issue, wa_stock_out_b_trn,

wa_stock_in_r, wa_stock_out_r,

wa_stock_321s, wa_stock_321h.

ENDAT.

ENDLOOP.

ENDFORM. " segregation

&----


*& Form set_for_segregation

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM set_for_segregation.

*i_mseg_lean_new[] = i_mseg_lean[] .

LOOP AT i_mseg_lean .

i_mseg_lean_new-matnr = i_mseg_lean-matnr.

i_mseg_lean_new-budat = i_mseg_lean-budat.

i_mseg_lean_new-bwart = i_mseg_lean-bwart.

i_mseg_lean_new-dmbtr = i_mseg_lean-dmbtr.

i_mseg_lean_new-shkzg = i_mseg_lean-shkzg.

i_mseg_lean_new-dmbum = i_mseg_lean-dmbum.

i_mseg_lean_new-menge = i_mseg_lean-menge.

i_mseg_lean_new-meins = i_mseg_lean-meins.

i_mseg_lean_new-insmk = i_mseg_lean-insmk.

i_mseg_lean_new-aufnr = i_mseg_lean-aufnr.

i_mseg_lean_new-xblnr = i_mseg_lean-xblnr.

i_mseg_lean_new-kostl = i_mseg_lean-kostl.

i_mseg_lean_new-anln1 = i_mseg_lean-anln1.

i_mseg_lean_new-kdauf = i_mseg_lean-kdauf.

i_mseg_lean_new-lgort = i_mseg_lean-lgort.

APPEND i_mseg_lean_new.

ENDLOOP.

ENDFORM. " set_for_segregation

&----


*& Form display_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_list.

DATA: v_count TYPE i,

v_div TYPE i,

v_op_stock TYPE mseg-menge,

v_in_a TYPE mseg-menge,

v_in_b TYPE mseg-menge,

v_in_r TYPE mseg-menge,

v_out_a TYPE mseg-menge,

v_out_b TYPE mseg-menge,

v_out_r TYPE mseg-menge,

v_cl_stock TYPE mseg-menge,

v_toprd TYPE mseg-menge.

DATA: v_in_a_prd TYPE mseg-menge,

v_in_a_cstn TYPE mseg-menge,

v_in_b_issue TYPE mseg-menge,

v_in_b_trn TYPE mseg-menge,

v_out_b_issue TYPE mseg-menge,

v_out_b_trn TYPE mseg-menge.

LOOP AT i_show.

IF NOT i_show-op_stock IS INITIAL OR

NOT i_show-cl_stock IS INITIAL OR

NOT i_show-stock_in_a_prd IS INITIAL OR

NOT i_show-stock_in_a_cstn IS INITIAL OR

NOT i_show-stock_in_b_issue IS INITIAL OR

NOT i_show-stock_in_b_trn IS INITIAL OR

NOT i_show-stock_out_a IS INITIAL OR

NOT i_show-stock_out_b_issue IS INITIAL OR

NOT i_show-stock_out_b_trn IS INITIAL.

v_tot_recs = v_tot_recs + 1.

ENDIF.

ENDLOOP.

IF s_lgort-low IS INITIAL AND s_lgort-high IS INITIAL.

v_tot_recs = v_tot_recs + 3.

v_tot_qty = v_tot_recs MOD 51.

IF v_tot_qty NE '0'.

CLEAR v_tot_qty.

v_tot_qty = v_tot_recs / 51.

v_total_pages = v_tot_qty.

IF v_total_pages GT v_tot_qty.

v_total_pages = v_total_pages - 1.

ENDIF.

v_total_pages = v_total_pages + 1.

ELSE.

CLEAR v_tot_qty.

v_total_pages = v_tot_recs / 51.

ENDIF.

ELSE.

v_tot_recs = v_tot_recs + 3.

v_tot_qty = v_tot_recs MOD 50.

IF v_tot_qty NE '0'.

CLEAR v_tot_qty.

v_tot_qty = v_tot_recs / 50.

v_total_pages = v_tot_qty.

IF v_total_pages GT v_tot_qty.

v_total_pages = v_total_pages - 1.

ENDIF.

v_total_pages = v_total_pages + 1.

ELSE.

CLEAR v_tot_qty.

v_total_pages = v_tot_recs / 50.

ENDIF.

ENDIF.

LOOP AT i_show.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WRITE:/ '|'.

pstl 15 i_show-matnr. HIDE i_show-matnr.

pstl 1 '|'. pstl 150 i_show-maktx.

pstl 1 '|'.pstl 5 i_show-meins.

pstl 1 '|'.pstr 16 i_show-op_stock.

pstl 1 '|'.pstr 16 i_show-stock_in_a_prd.

pstl 1 '|'.pstr 16 i_show-stock_in_a_cstn.

pstl 1 '|'.pstr 16 i_show-stock_in_b_issue.

pstl 1 '|'.pstr 16 i_show-stock_in_b_trn.

pstl 1 '|'.pstr 16 i_show-stock_out_a.

pstl 1 '|'.pstr 16 i_show-stock_out_b_issue.

pstl 1 '|'.pstr 16 i_show-stock_out_b_trn.

pstl 1 '|'.pstr 16 i_show-cl_stock.

pstl 1 '|'.

v_count = v_count + 1.

v_op_stock = v_op_stock + i_show-op_stock.

v_in_a_prd = v_in_a_prd + i_show-stock_in_a_prd.

v_in_a_cstn = v_in_a_cstn + i_show-stock_in_a_cstn.

v_in_b_issue = v_in_b_issue + i_show-stock_in_b_issue.

v_in_b_trn = v_in_b_trn + i_show-stock_in_b_trn.

v_in_r = v_in_r + i_show-stock_in_r.

v_toprd = v_toprd + i_show-stock_toprd.

v_out_a = v_out_a + i_show-stock_out_a.

v_out_b_issue = v_out_b_issue + i_show-stock_out_b_issue.

v_out_b_trn = v_out_b_trn + i_show-stock_out_b_trn.

v_out_r = v_out_r + i_show-stock_out_r.

v_cl_stock = v_cl_stock + i_show-cl_stock.

ENDLOOP.

ULINE AT (351).

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

WRITE:/ '|'.

pstl 15 'Totals:'. pstl 152 ''.

pstl 1 '|'.pstl 5 ''.

pstl 1 '|'.pstr 16 v_op_stock.

pstl 1 '|'.pstr 16 v_in_a_prd.

pstl 1 '|'.pstr 16 v_in_a_cstn.

pstl 1 '|'.pstr 16 v_in_b_issue.

pstl 1 '|'.pstr 16 v_in_b_trn.

pstl 1 '|'.pstr 16 v_out_a.

pstl 1 '|'.pstr 16 v_out_b_issue.

pstl 1 '|'.pstr 16 v_out_b_trn.

pstl 1 '|'.pstr 16 v_cl_stock.

pstl 1 '|'.

ULINE AT (351).

FORMAT COLOR OFF.

ENDFORM. " show

&----


*& Form cl_stock

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM cl_stock.

          • op (1 a add)

*selecting the current availabe stock in the system for requested

materials

SELECT matnr sum( labst ) sum( insme ) FROM mard INTO TABLE i_mard

WHERE matnr in s_matnr and

werks IN s_werks AND

lgort IN s_lgort group by matnr.

          • op (1 z add)

  • IF s_budat-high NE '99991231' AND s_budat-high NE s_budat-low.

*added on 25.01.2004

IF s_budat-high NE '99991231' AND s_budat-high NE sy-datum.

PERFORM mkpf_mseg_closing.

ELSE.

*added on 08.02.2004

LOOP AT i_show.

i_mseg_lean_cl_final-matnr = i_show-matnr.

APPEND i_mseg_lean_cl_final.

CLEAR i_mseg_lean_cl_final.

ENDLOOP.

*addition ends

ENDIF.

CLEAR: wa_cl_stock, v_meins.

IF NOT i_mseg_lean_cl[] IS INITIAL.

LOOP AT i_mseg_lean_cl.

  • addition

IF i_mseg_lean_cl-bwart EQ '101'

AND ( i_mseg_lean_cl-kostl NE ' '

OR i_mseg_lean_cl-anln1 NE ' ' OR ( i_mseg_lean_cl-aufnr NA '-'

AND i_mseg_lean_cl-aufnr NE ' ' ) ).

ELSEIF i_mseg_lean_cl-shkzg = 'S'.

wa_cl_stock = wa_cl_stock + i_mseg_lean_cl-menge.

ELSEIF i_mseg_lean_cl-shkzg = 'H'.

wa_cl_stock = wa_cl_stock - i_mseg_lean_cl-menge.

ENDIF.

v_meins = i_mseg_lean_cl-meins.

AT END OF matnr.

i_mseg_lean_cl_final-matnr = i_mseg_lean_cl-matnr.

i_mseg_lean_cl_final-menge = wa_cl_stock.

i_mseg_lean_cl_final-meins = v_meins.

APPEND i_mseg_lean_cl_final.

CLEAR: wa_cl_stock.

ENDAT.

ENDLOOP.

ENDIF.

PERFORM cl_stock_final.

ENDFORM. " cl_stock

&----


*& Form mkpf_mseg_closing

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM mkpf_mseg_closing.

  • selecting all transactions from max. date entered to the current

date.

    • SELECT * INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean_cl

    • FROM mkpf AS mkpf JOIN mseg AS mseg

    • ON mkpfmandt = msegmandt AND

    • mkpfmblnr = msegmblnr AND

    • mkpfmjahr = msegmjahr

    • WHERE mseg~matnr IN s_matnr

    • AND mseg~werks IN s_werks

    • AND mseg~lgort IN s_lgort

    • AND mkpf~budat GT s_budat-high.

    • SORT i_mseg_lean_cl BY matnr.

      • CHANGED BY ESSAM ON 19-FEB-2008

SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart

msegdmbtr msegshkzg

msegdmbum msegmenge msegwerks mseglgort

msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr

mseg~zeile

mseg~kdauf

INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean_CL

FROM mkpf AS mkpf JOIN mseg AS mseg

ON mkpfmandt = msegmandt AND

mkpfmblnr = msegmblnr AND

mkpfmjahr = msegmjahr

WHERE mseg~matnr IN s_matnr

AND mseg~werks IN s_werks

AND mseg~lgort IN s_lgort

AND mkpf~budat GT s_budat-high.

SORT i_mseg_lean_cl BY matnr.

****

ENDFORM. " mkpf_mseg_closing

&----


*& Form cl_stock_final

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM cl_stock_final.

DATA: v_index LIKE sy-tabix.

LOOP AT i_mard.

v_index = sy-tabix.

READ TABLE i_mseg_lean_cl_final with table key matnr = i_mard-matnr.

IF sy-subrc EQ 0.

i_mard-cl_stock = ( i_mard-labst + i_mard-insme ) -

i_mseg_lean_cl_final-menge.

ELSE.

i_mard-cl_stock = ( i_mard-labst + i_mard-insme ) .

ENDIF.

modify i_mard.

ENDLOOP.

ENDFORM. " cl_stock_final

&----


*& Form stock_transaction

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM stock_transaction.

ENDFORM. " stock_transaction

&----


*& Form op_stock

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM op_stock.

DATA: v_in_out TYPE mseg-menge.

LOOP AT i_show.

v_in_out =

( i_show-stock_in_a_prd +

i_show-stock_in_b_issue + i_show-stock_in_b_trn

) -

( i_show-stock_out_a + i_show-stock_out_b_issue +

i_show-stock_out_b_trn

+ i_show-stock_in_a_cstn ).

read table i_mard with table key matnr = i_show-matnr.

i_show-op_stock = i_mard-cl_stock - v_in_out.

i_show-cl_stock = i_mard-cl_stock.

modify i_show.

ENDLOOP.

ENDFORM. " op_stock

&----


*& Form top_page

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM top_page.

*format color col_group intensified off.

MOVE 'STOCK LEDGER REPORT' TO v_title.

CASE p_werks.

WHEN '2100'.

v_butxt = 'National Steel and Iron Company'.

WHEN '2200'.

v_butxt = 'Al-Ittefaq Steel Products Company'.

WHEN '2300'.

v_butxt = 'Faisal Steel Products Company'.

WHEN '1000'.

v_butxt = 'Al-Tuwairqi Trading and Contracting Establishment'.

WHEN '3200'.

v_butxt = 'The International Electrical Products Company'.

WHEN '2000'.

v_butxt = 'Direct Reduced Iron Company'.

WHEN '2210'.

v_butxt = 'Al-Ittefaq Steel Products Company, Makkah'.

ENDCASE.

WRITE:/ v_title CENTERED.

WRITE:/ v_butxt CENTERED.

IF s_lgort-low NE '' AND s_lgort-high NE '' AND

s_lgort-sign EQ 'I' AND s_lgort-option EQ 'BT'.

WRITE:/108 'Storage Location:',s_lgort-low,'To', s_lgort-high.

ELSEIF s_lgort-low NE '' AND s_lgort-high EQ ''

AND s_lgort-sign EQ 'I' AND

s_lgort-option EQ 'EQ'.

WRITE:/112 'Storage Location:',s_lgort-low.

ELSEIF s_lgort-low EQ '' AND s_lgort-high NE ''

AND s_lgort-sign EQ 'I' AND s_lgort-option EQ 'BT'.

WRITE:/110 'Storage Location:', 'Upto', s_lgort-high.

ENDIF.

WRITE:/102 'Selection Date :',s_budat-low,'-',s_budat-high.

WRITE: /216 'Page', 221 sy-pagno, 231 'of',235 v_total_pages.

ULINE AT (351).

FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.

WRITE:/ '|'.pstl 15 'MATERIAL NO.'.

pstl 1 '|'.pstl 150 'DESCRIPTION'.

pstl 1 '|'.pstl 5 'UNIT'.

pstl 1 '|'.pstl 16 'OPENING STOCK'.

pstl 1 '|'. pstl 16 'PRODUCTION'.

pstl 1 '|'.

pstl 16 'CONSUMPTION'.

pstl 1 '|'.pstl 16 'STOCK_IN'.

pstl 1 '|'.pstl 16 'TRANSFER_IN'.

pstl 1 '|'.

FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.

pstl 16 'DELIVERY'.

pstl 1 '|'.pstl 16 'ISSUE'.

pstl 1 '|'.pstl 16 'TRANSFER_OUT'.

pstl 1 '|'.

FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.

pstl 16 'CLOSING STOCK'.

pstl 1 '|'.

FORMAT COLOR OFF.

  • WRITE sy-uline(v_uline).

ULINE AT (351).

ENDFORM. " top_page

&----


*& Form next_screen

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM next_screen.

IF sy-lsind = 1.

*SET PARAMETER ID 'MAT' FIELD i_show-matnr.

*SET PARAMETER ID 'WRK' FIELD p_werks.

PERFORM fill_itabb USING i_show-matnr.

wa_options-racommit = ''.

CALL TRANSACTION 'MB51' USING i_tabb OPTIONS FROM wa_options.

CLEAR: i_tabb, i_tabb[].

ENDIF.

*call transaction 'MB51' and skip first screen.

ENDFORM. " next_screen

&----


*& Form fill_itabb

&----


  • text

----


  • -->P_I_SHOW_MATNR text

----


FORM fill_itabb USING p_matnr.

DATA: v_d1(10) TYPE c,

v_d2(10) TYPE c,

v_dt(2) TYPE c, v_mn(2) TYPE c, v_yr(4) TYPE c.

v_dt = s_budat-low+6(2).

v_mn = s_budat-low+4(2).

v_yr = s_budat-low(4).

CONCATENATE v_dt v_mn v_yr INTO v_d1.

CLEAR: v_dt, v_mn, v_yr.

v_dt = s_budat-high+6(2).

v_mn = s_budat-high+4(2).

v_yr = s_budat-high(4).

CONCATENATE v_dt v_mn v_yr INTO v_d2.

CLEAR i_tabb.

i_tabb-program = 'RM07DOCS'.

i_tabb-dynpro = '1000'.

i_tabb-dynbegin = 'X'.

APPEND i_tabb.

CLEAR i_tabb.

i_tabb-fnam = 'BDC_OKCODE'.

i_tabb-fval = '=ONLI'.

APPEND i_tabb.

CLEAR i_tabb.

i_tabb-fnam = 'MATNR-LOW'.

i_tabb-fval = p_matnr.

APPEND i_tabb.

CLEAR i_tabb.

i_tabb-fnam = 'WERKS-LOW'.

i_tabb-fval = p_werks.

APPEND i_tabb.

CLEAR i_tabb.

i_tabb-fnam = 'BUDAT-LOW'.

i_tabb-fval = v_d1.

APPEND i_tabb.

CLEAR i_tabb.

i_tabb-fnam = 'BUDAT-HIGH'.

i_tabb-fval = v_d2.

APPEND i_tabb.

*******

*CLEAR i_tabb.

  • i_tabb-fnam = 'BDC_OKCODE'.

  • i_tabb-fval = '=&F8'.

  • APPEND i_tabb.

CLEAR i_tabb.

i_tabb-program = 'SAPMSSY0'.

i_tabb-dynpro = '0120'.

i_tabb-dynbegin = 'X'.

APPEND i_tabb.

*

*CLEAR i_tabb.

  • i_tabb-fnam = 'BDC_OKCODE'.

  • i_tabb-fval = '=&F12'.

  • APPEND i_tabb.

*

  • CLEAR i_tabb.

  • i_tabb-program = 'RM07DOCS'.

  • i_tabb-dynpro = '1000'.

  • i_tabb-dynbegin = 'X'.

  • APPEND i_tabb.

*

  • CLEAR i_tabb.

  • i_tabb-fnam = 'BDC_OKCODE'.

  • i_tabb-fval = '/EE'.

  • APPEND i_tabb.

ENDFORM. " fill_itabb

*****ADDED BY ESSAM ON 19-FEB-2008

----


  • FORM read_text *

----


  • ........ *

----


  • --> I_TLINE *

  • --> V_TEXT_NAM *

  • --> V_TEXT_ID *

  • --> V_OBJECT *

----


FORM read_text TABLES i_tline

USING v_text_nam

v_text_id

v_object.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

id = v_text_id

language = 'E'

name = v_text_nam

object = v_object

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = i_tline

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

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

----


  • FORM split_texts *

----


  • ........ *

----


  • --> I_TLINE *

----


FORM split_texts TABLES i_tline STRUCTURE tline

i_text_tab1 STRUCTURE i_text_tab.

DATA: v_lines LIKE sy-tabix,

v_text(1500)." type string.

DESCRIBE TABLE i_tline LINES

v_lines.

IF v_lines NE 0.

DO v_lines TIMES.

READ TABLE i_tline INDEX

sy-index.

CONCATENATE v_text

i_tline-tdline INTO v_text separated by space.

ENDDO.

CALL FUNCTION 'RKD_WORD_WRAP'

EXPORTING

textline = v_text

delimiter = ' '

outputlen = 150

  • IMPORTING

  • OUT_LINE1 =

  • OUT_LINE2 =

  • OUT_LINE3 =

TABLES

out_lines = i_text_tab1

EXCEPTIONS

outputlen_too_large = 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.

CLEAR v_lines.

ENDIF.

ENDFORM. "split_texts

******ADDED BY ESSAM ON 23-FEB-2008

&----


*& Form eventtab_build

&----


  • text

----


  • -->P_I_EVENTS[] text

----


FORM eventtab_build USING i_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

ls_event-name = slis_ev_top_of_page.

ls_event-form = 'TOP_OF_PAGE'.

APPEND ls_event TO i_events.

CLEAR ls_event.

ls_event-name = slis_ev_end_of_page.

ls_event-form = 'END_OF_PAGE'.

APPEND ls_event TO i_events.

CLEAR ls_event.

ls_event-name = slis_ev_end_of_list.

ls_event-form = 'END_OF_LIST'.

APPEND ls_event TO i_events.

CLEAR ls_event.

ENDFORM. " eventtab_build

&----


*& Form display_alv

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_alv.

PERFORM build_catalog.

***Cause of Dump when we take the preview

    • i_layout-coltab_fieldname = 'COLOR'.

gs_print-reserve_lines = 2.

gs_print-no_print_listinfos = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

i_buffer_active = 'X'

i_callback_program = v_repid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_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 = i_layout

it_fieldcat = i_fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT = lt_sort

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

i_save = g_save

is_variant = gs_variant

it_events = i_events[]

  • IT_EVENT_EXIT =

is_print = gs_print

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IT_EXCEPT_QINFO =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = i_show_alv

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

*

ENDFORM. " display_alv

&----


*& Form build_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_catalog.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-seltext_l = 'MATERIAL NO'.

wa_fieldcat-col_pos = 1.

wa_fieldcat-outputlen = 15.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'MAKTX'.

wa_fieldcat-seltext_l = 'DESCRIPTION'.

wa_fieldcat-col_pos = 2.

wa_fieldcat-outputlen = 150.

wa_fieldcat-fix_column = 'X'.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'MEINS'.

wa_fieldcat-seltext_l = 'UNIT'.

wa_fieldcat-col_pos = 3.

wa_fieldcat-outputlen = 05.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'OP_STOCK'.

wa_fieldcat-seltext_l = 'OPENING STOCK'.

wa_fieldcat-col_pos = 4.

wa_fieldcat-outputlen = 10.

wa_fieldcat-fix_column = 'X'.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'STOCK_IN_A_PRD'.

wa_fieldcat-seltext_l = 'PRODUCTION'.

wa_fieldcat-col_pos = 5.

wa_fieldcat-outputlen = 16.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'STOCK_IN_CSTN'.

wa_fieldcat-seltext_l = 'CONSUMPTION'.

wa_fieldcat-col_pos = 6.

wa_fieldcat-outputlen = 16.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'STOCK_IN_B_ISSUE'.

wa_fieldcat-seltext_l = 'STOCK_IN'.

wa_fieldcat-col_pos = 7.

wa_fieldcat-outputlen = 16.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'STOCK_IN_B_TRN'.

wa_fieldcat-seltext_l = 'TRANSFER_IN'.

wa_fieldcat-col_pos = 8.

wa_fieldcat-outputlen = 16.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'STOCK_OUT_A'.

wa_fieldcat-seltext_l = 'DELIVERY'.

wa_fieldcat-col_pos = 9.

wa_fieldcat-outputlen = 16.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show' .

wa_fieldcat-fieldname = 'STOCK_OUT_B_ISSUE'.

wa_fieldcat-seltext_l = 'ISSUE'.

wa_fieldcat-col_pos = 10.

wa_fieldcat-outputlen = 16.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show' .

wa_fieldcat-fieldname = 'STOCK_OUT_B_TRN'.

wa_fieldcat-seltext_l = 'TRANSFER OUT'.

wa_fieldcat-col_pos = 11.

wa_fieldcat-outputlen = 16.

wa_fieldcat-fix_column = ''.

APPEND wa_fieldcat TO i_fieldcat.

wa_fieldcat-tabname = 'i_show'.

wa_fieldcat-fieldname = 'CL_STOCK'.

wa_fieldcat-seltext_l = 'CLOSING STOCK'.

wa_fieldcat-col_pos = 12.

wa_fieldcat-outputlen = 16.

APPEND wa_fieldcat TO i_fieldcat.

ENDFORM. " build_catalog

*************EVENTS FORM**********

FORM top_of_page.

DATA: ls_line TYPE slis_listheader.

IF first IS INITIAL.

CLEAR ls_line.

ls_line-typ = 'H'.

WRITE: p_werks TO ls_line-info .

IF ls_line-info = '1000'.

ls_line-info = 'AL-TUWAIRQI TRDADING & CONTRCTING CO.' .

ELSEIF ls_line-info = '2100'.

ls_line-info = 'NATIONAL STEEL & IRON FACTORY'.

ELSEIF ls_line-info = '2200'.

ls_line-info = 'AL-ITTEFAQ STEEL PRODUCTS FACTORY'.

ELSEIF ls_line-info = '2300'.

ls_line-info = 'AL-FAISAL STEEL PRODUCTS FACTORY'.

ELSEIF ls_line-info = '3200'.

ls_line-info = 'TIEPCO'.

ENDIF.

APPEND ls_line TO i_list_top_of_page.

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = 'Stock Ledger Report ' .

APPEND ls_line TO i_list_top_of_page.

CLEAR ls_line.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = i_list_top_of_page

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

first = 'N'.

ELSE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = i_list_top_of_page.

ENDIF.

ENDFORM. " top_of_page

----


  • FORM end_of_page *

----


  • ........ *

----


FORM end_of_page.

ULINE.

WRITE: AT 1(10) 'Page No:', sy-pagno,

AT 120 'Contd.....'.

ENDFORM. "end_of_page

----


  • FORM end_of_list *

----


  • ........ *

----


FORM end_of_list.

WRITE:/ 'Page:', sy-pagno.

ENDFORM. "end_of_list

&----


*& Form layout_init

&----


  • text

----


  • -->P_I_LAYOUT text

----


FORM layout_init USING p_i_layout.

i_layout-detail_popup = 'X'.

i_layout-totals_text = 'Total:'.

i_layout-zebra = 'X'.

i_layout-subtotals_text = 'Sub Total:'.

ENDFORM. " layout_init

&----


*& Form i_show_alv_populate

&----


  • text

----


  • ADDED BY ESSAM ON 25-FEB-2008

----


FORM i_show_alv_populate.

LOOP AT I_SHOW.

IF NOT i_show-op_stock IS INITIAL OR

NOT i_show-cl_stock IS INITIAL OR

NOT i_show-stock_in_a_prd IS INITIAL OR

NOT i_show-stock_in_a_cstn IS INITIAL OR

NOT i_show-stock_in_b_issue IS INITIAL OR

NOT i_show-stock_in_b_trn IS INITIAL OR

NOT i_show-stock_out_a IS INITIAL OR

NOT i_show-stock_out_b_issue IS INITIAL OR

NOT i_show-stock_out_b_trn IS INITIAL.

i_show_alv-matnr = i_show-matnr.

i_show_alv-maktx = i_show-maktx.

i_show_alv-meins = i_show-meins.

i_show_alv-op_stock = i_show-op_stock.

i_show_alv-stock_in_a_prd = i_show-stock_in_a_prd.

i_show_alv-stock_in_a_cstn = i_show-stock_in_a_cstn.

i_show_alv-stock_in_b_issue = i_show-stock_in_b_issue.

i_show_alv-stock_in_b_trn = i_show-stock_in_b_trn.

i_show_alv-stock_in_r = i_show-stock_in_r.

i_show_alv-stock_toprd = i_show-stock_toprd.

i_show_alv-stock_out_a = i_show-stock_out_a.

i_show_alv-stock_out_b_issue = i_show-stock_out_b_issue.

i_show_alv-stock_out_b_trn = i_show-stock_out_b_trn.

i_show_alv-stock_out_r = i_show-stock_out_r.

i_show_alv-cl_stock = i_show-cl_stock.

APPEND i_show_alv.

ENDIF.

ENDLOOP.

ENDFORM. " i_show_alv_populate

please can any1 optimize this his code.

thx

u can mail me at essamsaud@yahoo.co.in

3 REPLIES 3
Read only

Sandra_Rossi
Active Contributor
0 Likes
510

You want people to do your job, is that a joke? Please look for SE30 (transaction) in the forum, to see explanations process how to optimize

Read only

Former Member
0 Likes
510

You should use SE30 or ST05 to find the problem area before posting this.

Rob

Read only

Former Member
0 Likes
510

How much you pay me for this?