inventory posting

*&———————————————————————*
*& Report  ZMMR505
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZMMR505.

TABLES: MARA,  ”General Material Data
T023T, ”Material Group Descriptions
MSEG,  ”Document Segment: Material
MBEW,  ”Material Valuation
skat,  ”G/L Account Master Record
T025T, ”Valuation Class Descriptions
T030.  ”Standard Accounts Table

TYPE-POOLS: slis.

selection-screen begin of block nanat with frame title text-003.
*parameters S_BUKRS TYPE MSEG-BUKRS OBLIGATORY. ” company
parameters S_LFGJA TYPE MBEW-LFGJA OBLIGATORY.  ” year
parameters S_LFMON TYPE MBEW-LFMON OBLIGATORY.  ” Period
selection-screen end of block nanat.
*&———————————————————————*
*& Scope of list
*&———————————————————————*

selection-screen begin of block ika_duha with frame title text-004.
PARAMETERS:  S_GLACC  AS CHECKBOX .              ” Per Account
selection-screen end of block ika_duha.

*&———————————————————————*
*& Per Material Group
*&———————————————————————*
“Primary Internal TABLE
TYPES: BEGIN OF tdata,
MATNR TYPE MBEW-MATNR,     ” MATRIAL id
LBKUM TYPE MSEG-LBKUM,     ” Quantity / Total Stock
VERPR TYPE MBEW-VERPR,     ” Moving Average Price/Periodic Unit Price
SALK3 TYPE MBEW-SALK3,     ” Total Value
LFGJA TYPE MBEW-LFGJA,     ” Year
LFMON TYPE MBEW-LFMON,     ” Period
END OF tdata.
“Secondary Internal Table
TYPES: BEGIN OF rdata,
MATNR TYPE MARA-MATNR,     ” MATRIAL id
MAKTX TYPE MAKT-MAKTX,     ” MATERIAL DESCRIPTION
MATKL TYPE MARA-MATKL,     ” MATERIAL GROUP OR CLASS
MEINS TYPE MARA-MEINS,     ” Units of Measurement of Various Types
WGBEZ TYPE T023T-WGBEZ,    ” Material Group Description
END OF rdata.

TYPES: BEGIN OF t_final,
MATKL TYPE MARA-MATKL,     ” MATERIAL GROUP OR CLASS ID
MATK1 TYPE MARA-MATKL,     ” ika-duha MATERIAL GROUP
WGBEZ TYPE T023T-WGBEZ,    ” Material Group Description
WGBE1 TYPE T023T-WGBEZ,    ” ika-duha Description
MATNR TYPE MBEW-MATNR,     ” MATERIAL id
MAKTX TYPE MAKT-MAKTX,     ” MATERIAL DESCRIPTION
MEINS TYPE MARA-MEINS,     ” Units of Measurement of Various Types
LFGJA TYPE MBEW-LFGJA,     ” Year
LFMON TYPE MBEW-LFMON,     ” Period
LBKUM TYPE MBEW-LBKUM,     ” Quantity
VERPR TYPE MBEW-VERPR,     ” Moving Average Price/Periodic Unit Price
SALK3 TYPE MBEW-SALK3,     ” Total Value
END OF t_final.

“get selection value
DATA: it_data  TYPE STANDARD TABLE OF tdata,
wa_data  TYPE tdata,
ir_data  TYPE STANDARD TABLE OF rdata,
wr_data  TYPE rdata,
it_final TYPE STANDARD TABLE OF t_final WITH HEADER LINE,
wa_final TYPE t_final.

“sorting og sum para bibo.
data: hs_sum TYPE HASHED TABLE OF t_final
WITH UNIQUE key MATNR MAKTX MATKL MATK1 WGBEZ WGBE1 MEINS LFGJA LFMON WITH HEADER LINE.

DATA : itab_sum TYPE STANDARD TABLE OF t_final WITH HEADER LINE .
*&———————————————————————*
*& Per material Group End
*&———————————————————————*

*&———————————————————————*
*& Per GL Account
*&———————————————————————*
TYPES: BEGIN OF GTAB,
BKLAS TYPE MBEW-BKLAS,    ” Valuation Class
MATNR TYPE MBEW-MATNR,    ” MATERIAL id
MAKTX TYPE MAKT-MAKTX,    ” MATERIAL DESCRIPTION
MEINS TYPE MARA-MEINS,    ” Units of Measurement of Various Types
LFGJA TYPE MBEW-LFGJA,    ” Year
LFMON TYPE MBEW-LFMON,    ” Period
LBKUM TYPE MBEW-LBKUM,    ” Quantity
VERPR TYPE MBEW-VERPR,    ” Moving Average Price/Periodic Unit Price
SALK3 TYPE MBEW-SALK3,    ” Total Value
END OF GTAB.

TYPES: BEGIN OF G_final,
SAKNR TYPE SKAT-SAKNR,    ” G/L Account
TXT20 TYPE SKAT-TXT20,    ” Short Text
MATNR TYPE MBEW-MATNR,    ” MATERIAL id
MAKTX TYPE MAKT-MAKTX,    ” Material Group Description
MEINS TYPE MARA-MEINS,    ” Units of Measurement of Various Types
LFGJA TYPE MBEW-LFGJA,    ” Year cur.period
LFMON TYPE MBEW-LFMON,    ” Current period (posting period)
LBKUM TYPE MBEW-LBKUM,    ” Total Stock
VERPR TYPE MBEW-VERPR,    ” Moving price
SALK3 TYPE MBEW-SALK3,    ” Total Value
END OF G_final.

DATA: it_gtab TYPE STANDARD TABLE OF GTAB,
wa_gtab TYPE GTAB,
ig_fina TYPE STANDARD TABLE OF G_final WITH HEADER LINE,
wa_ftab TYPE G_final.

DATA: Gs_sum TYPE HASHED TABLE OF G_final
WITH UNIQUE key SAKNR TXT20 MATNR MAKTX MEINS LFGJA LFMON WITH HEADER LINE.

DATA : G_sum TYPE STANDARD TABLE OF G_final WITH HEADER LINE.

*&———————————————————————*
*& Per GL Account end
*&———————————————————————*

DATA: i_events    TYPE slis_t_event,        ”Internal table for ALV Display events
totalIn     TYPE MBEW-VERPR.

DATA: sla         TYPE slis_layout_alv,
i_alv_top_of_page TYPE slis_t_listheader, ”Internal table for Top of Page info. in ALV Display
ivariant    LIKE disvariant,
i_repid     LIKE sy-repid,
i_excluding TYPE slis_t_extab.

DATA:  ls_fieldcat TYPE slis_fieldcat_alv,
gd_fieldcat TYPE slis_t_fieldcat_alv, ”Internal table for storing field catalog information
i_sort      TYPE slis_t_sortinfo_alv, ”Internal table for storing ALV sort information
wa_sort     TYPE slis_sortinfo_alv.
*&———————————————————————*
*& Constant declaration
*&———————————————————————*
CONSTANTS:
c_header   TYPE char1
VALUE ’H',                    ”Header in ALV
c_item     TYPE char1
VALUE ’S’.

************************************************************************
*Start-of-selection.

START-OF-SELECTION.

IF S_GLACC = ’X’.
PERFORM getPerGl.
ELSE.
PERFORM get_data.
ENDIF.

PERFORM fixData.
PERFORM build_header.

IF S_GLACC = ’X’.
PERFORM fieldcatikaduha.
ELSE.
PERFORM fieldcat_init.
ENDIF.

PERFORM sub_populate_layout.

END-OF-SELECTION.

*&———————————————————————*
*&      Form  get_data
*&———————————————————————*
* parameters S_LFGJA TYPE MBEW-LFGJA OBLIGATORY.  ” year
* parameters S_LFMON TYPE MBEW-LFMON OBLIGATORY.   ” Period      text
*———————————————————————-*
FORM get_data.

SELECT MATNR sum( LBKUM ) as LBKUM sum( VERPR ) as VERPR sum( SALK3 ) as SALK3 LFGJA LFMON
FROM MBEW
INTO TABLE it_data
WHERE  LBKUM <> 0 and salk3 <> 0
AND  LFGJA <= S_LFGJA
AND  LFMON <= S_LFMON

GROUP BY MATNR LFGJA LFMON.

IF it_data IS NOT INITIAL.

SORT it_data BY MATNR.

SELECT T1~MATNR T2~MAKTX T1~MATKL T1~MEINS T0~WGBEZ
FROM MARA AS T1
INNER JOIN T023T AS T0 ON T1~MATKL = T0~MATKL
INNER JOIN MAKT as t2 ON t2~MATNR = T1~MATNR
INTO TABLE ir_data FOR ALL ENTRIES IN it_data
WHERE T1~MATNR EQ it_data-MATNR.
ENDIF.

LOOP AT ir_data INTO wr_data.
READ TABLE it_data INTO wa_data with KEY MATNR = wr_data-MATNR BINARY SEARCH.

IF SY-SUBRC = 0.
SHIFT wa_data-MATNR LEFT DELETING LEADING ’0′. ”deleting 0 naa daghan
wa_final-MATKL = wr_data-MATKL.
wa_final-MATK1 = wr_data-MATKL.
wa_final-WGBEZ = wr_data-WGBEZ.
wa_final-WGBE1 = wr_data-WGBEZ.
wa_final-MATNR = wa_data-MATNR.
wa_final-MAKTX = wr_data-MAKTX.
wa_final-MEINS = wr_data-MEINS.
wa_final-LFGJA = wa_data-LFGJA.
wa_final-LFMON = wa_data-LFMON.
wa_final-LBKUM = wa_data-LBKUM.
wa_final-VERPR = wa_data-VERPR.
wa_final-SALK3 = wa_data-SALK3.

totalIn = wa_data-SALK3 / wa_data-LBKUM.

wa_final-VERPR = totalIn.

APPEND wa_final TO it_final.

CLEAR : wa_final.

ELSE.
MESSAGE ’Record not Found’ TYPE ’E’.

ENDIF.

CLEAR: wa_data, wr_data.

ENDLOOP.

ENDFORM.                    ”get_data

FORM getPerGl.

SELECT T0~BKLAS
T0~MATNR
T1~MAKTX
T2~MEINS
T0~LFGJA
T0~LFMON
sum( T0~LBKUM ) as LBKUM
sum( T0~VERPR ) as VERPR
sum( T0~SALK3 ) as SALK3
INTO CORRESPONDING FIELDS OF TABLE it_gtab
FROM MBEW AS T0
INNER JOIN MAKT AS T1 ON T0~MATNR = T1~MATNR
INNER JOIN MARA AS T2 ON T0~MATNR = T2~MATNR
WHERE  T0~LBKUM <> 0 and T0~salk3 <> 0
AND  T0~LFGJA <= S_LFGJA
AND  T0~LFMON <= S_LFMON
GROUP BY T0~BKLAS T0~MATNR T1~MAKTX T2~MEINS T0~LFGJA T0~LFMON.

IF it_gtab IS NOT INITIAL.
SORT it_gtab BY MATNR LFMON.
LOOP AT it_gtab INTO wa_GTAB.
CLEAR: T030, SKAT.
SELECT SINGLE * FROM T030 WHERE BKLAS = wa_GTAB-BKLAS.
SELECT SINGLE * FROM SKAT WHERE SAKNR = T030-KONTS AND SPRAS = ’EN’.

SHIFT wa_GTAB-MATNR LEFT DELETING LEADING ’0′. ”deleting 0 naa daghan
SHIFT SKAT-SAKNR LEFT DELETING LEADING ’0′. ”deleting 0 naa daghan
wa_ftab-SAKNR = SKAT-SAKNR.
wa_ftab-TXT20 = SKAT-TXT20.
wa_ftab-MATNR = wa_GTAB-MATNR.
wa_ftab-MAKTX = wa_GTAB-MAKTX.
wa_ftab-MEINS = wa_GTAB-MEINS.
wa_ftab-LFGJA = wa_GTAB-LFGJA.
wa_ftab-LFMON = wa_GTAB-LFMON.
wa_ftab-LBKUM = wa_GTAB-LBKUM.
wa_ftab-VERPR = wa_GTAB-VERPR.
wa_ftab-SALK3 = wa_GTAB-SALK3.

totalIn = wa_GTAB-SALK3 / wa_GTAB-LBKUM.

wa_ftab-VERPR = totalIn.

APPEND wa_ftab TO ig_fina.
ENDLOOP.
ENDIF.

ENDFORM.

“E han-ay ang data

*&———————————————————————*
*&      Form  build_header
*&———————————————————————*
*       text
*———————————————————————-*
FORM build_header.

*local data declaration
DATA: l_system     TYPE char10,           ”System id
l_line       TYPE slis_listheader,  ”Hold list Header
l_date       TYPE char10,           ”date
l_time       TYPE char10,           ”time
l_sus_re     TYPE i,
t_line       like l_line-info,
l_title(300) TYPE c,
ld_linesc(10) type c.

l_line-typ  = c_header.
CONCATENATE ’Inventory List Fy’ S_LFGJA ’-' S_LFMON INTO l_title SEPARATED BY space.
l_line-info = l_title.
APPEND l_line to i_alv_top_of_page.
CLEAR l_line.

l_line-typ = c_item.
WRITE: sy-datum  TO l_date MM/DD/YYYY.
l_line-key  = ’Todays Date :’(002).
l_line-info = l_date.
APPEND l_line TO i_alv_top_of_page.
CLEAR: l_line, l_date.

IF S_GLACC = ’X’.
describe table ig_fina lines l_sus_re.
ld_linesc = l_sus_re.
concatenate ’Total No. of Records Selected: ’ ld_linesc
into t_line separated by space.
l_line-typ  = ’A’.
l_line-info = t_line.
append l_line to i_alv_top_of_page.
clear: l_line, t_line.
else.

describe table it_final lines l_sus_re.
ld_linesc = l_sus_re.
concatenate ’Total No. of Records Selected: ’ ld_linesc
into t_line separated by space.
l_line-typ  = ’A’.
l_line-info = t_line.
append l_line to i_alv_top_of_page.
clear: l_line, t_line.

ENDIF.
ENDFORM.                    ”build_header

*&———————————————————————*
*&      Form  fixData
*&———————————————————————*
*       text
*———————————————————————-*
FORM fixData.
DATA: index LIKE sy-tabix.

IF S_GLACC = ’X’.
LOOP AT ig_fina.
Gs_sum = ig_fina.

COLLECT Gs_sum.

ENDLOOP.

SORT Gs_sum .

G_sum[] = Gs_sum[].

ELSE.

LOOP AT it_final.
hs_sum = it_final.

COLLECT hs_sum.

ENDLOOP.

SORT hs_sum.

itab_sum[] = hs_sum[].
ENDIF.

ENDFORM.

*&———————————————————————*
*&      Form  fieldcat_init
*&———————————————————————*
*       text
*———————————————————————-*

FORM fieldcat_init.

Define m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-row_pos      = ’1′.
ls_fieldcat-fieldname    = &1.
ls_fieldcat-tabname      = ’itab_sum’.
ls_fieldcat-seltext_l    = &2.
ls_fieldcat-key          = &3.
ls_fieldcat-do_sum       = &4.

APPEND ls_fieldcat TO gd_fieldcat.
END-OF-DEFINITION.

DEFINE m_sort.
add 1 TO wa_sort-spos.
wa_sort-fieldname = &1.
wa_sort-up        = ’X’.
wa_sort-subtot    = &2.
wa_sort-expa      = &3.
APPEND wa_sort TO i_sort.
END-OF-DEFINITION.

m_fieldcat ’MATKL’ ’Item Group ID’ ’X' ”.
m_fieldcat ’WGBEZ’ ’Item Group Description’ ’X' ”.
m_fieldcat ’MATNR’ ’MATERIAL#’ ’X' ”.
m_fieldcat ’MAKTX’ ’MAT Description’ ’X' ”.
m_fieldcat ’MEINS’ ’UOM’ ’X' ”.
m_fieldcat ’LFGJA’ ’Year’ ’X' ”.
m_fieldcat ’LFMON’ ’Period’ ’X' ”.
m_fieldcat ’LBKUM’ ’Quantity’ ” ’X’.
m_fieldcat ’VERPR’ ’Average Unit Code’ ” ’X’.
m_fieldcat ’SALK3′ ’Inventory Value’ ” ’X’.

m_sort ’WGBEZ’ ” ”.
m_sort ’MATKL’ ’X' ’X’.

sla-colwidth_optimize = ’X’.
sla-zebra             = ’X’.
i_repid = sy-repid.

CALL FUNCTION ’REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = i_repid
i_callback_top_of_page  = ’SUB_ALV_TOP_OF_PAGE’
it_fieldcat             = gd_fieldcat[]
it_sort                 = i_sort
it_events               = i_events
i_save                  = ’A’
i_default               = ’X’

is_variant              = ivariant
is_layout               = sla
it_excluding            = i_excluding
TABLES
t_outtab                = itab_sum
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.                    ”fieldcat_init

FORM fieldcatikaduha.

Define m_fieldcatika.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-row_pos      = ’1′.
ls_fieldcat-fieldname    = &1.
ls_fieldcat-tabname      = ’G_sum’.
ls_fieldcat-seltext_l    = &2.
ls_fieldcat-key          = &3.
ls_fieldcat-do_sum       = &4.

APPEND ls_fieldcat TO gd_fieldcat.
END-OF-DEFINITION.

DEFINE m_sortika.
add 1 TO wa_sort-spos.
wa_sort-fieldname = &1.
wa_sort-up        = ’X’.
wa_sort-subtot    = &2.
wa_sort-expa      = &3.
APPEND wa_sort TO i_sort.
END-OF-DEFINITION.

m_fieldcatika ’SAKNR’ ’G/L Account’ ’X' ”.
m_fieldcatika ’TXT20′ ’Short Text’ ’X' ”.
m_fieldcatika ’MATNR’ ’MATERIAL#’ ’X' ”.
m_fieldcatika ’MAKTX’ ’MAT Description’ ’X' ”.
m_fieldcatika ’MEINS’ ’UOM’ ’X' ”.
m_fieldcatika ’LFGJA’ ’Year’ ’X' ”.
m_fieldcatika ’LFMON’ ’Period’ ’X' ”.
m_fieldcatika ’LBKUM’ ’Quantity’ ” ’X’.
m_fieldcatika ’VERPR’ ’Average Unit Code’ ” ’X’.
m_fieldcatika ’SALK3′ ’Inventory Value’ ” ’X’.

m_sortika ’TXT20′ ” ”.
m_sortika ’SAKNR’ ’X' ’X’.

sla-colwidth_optimize = ’X’.
sla-zebra             = ’X’.
i_repid = sy-repid.

CALL FUNCTION ’REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = i_repid
i_callback_top_of_page  = ’SUB_ALV_TOP_OF_PAGE’
it_fieldcat             = gd_fieldcat[]
it_sort                 = i_sort
it_events               = i_events
i_save                  = ’A’
i_default               = ’X’

is_variant              = ivariant
is_layout               = sla

it_excluding            = i_excluding
TABLES
t_outtab                = G_sum
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.

*&———————————————————————*
*&      Form  sub_populate_layout
*&———————————————————————*
*       Populate ALV layout
*———————————————————————-*
*       No Parameter
*———————————————————————-*
FORM sub_populate_layout .

CLEAR sla.
sla-colwidth_optimize = ’X’.” Optimization of Col width

ENDFORM.

*&———————————————————————*
*&      Form  sub_alv_top_of_page
*&———————————————————————*
*       text
*———————————————————————-*
FORM sub_alv_top_of_page.                                   ”#EC CALLED

* To write header for the ALV
CALL FUNCTION ’REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary = i_alv_top_of_page.

ENDFORM.                    ”alv_top_of_page

Comment are closed.

INFORMATION