REPORT ztestbom.
*----------------------------------------------------------------------------*
* Tables Declare
*----------------------------------------------------------------------------*
TABLES:
mast,
stko,
stpo,
makt,
mara,
ekko,
mbew,
ekpo,
eine,
eina,
marc.
*----------------------------------------------------------------------------*
* Import Package
*----------------------------------------------------------------------------*
TYPE-POOLS: slis.
*----------------------------------------------------------------------------*
* Table defination
*----------------------------------------------------------------------------*
DATA: BEGIN OF i_tab OCCURS 0,
matnr LIKE mast-matnr, "Material Number
stlnr LIKE mast-stlnr, "Bill of material
werks LIKE mast-werks, "Plant
ekorg LIKE ekko-ekorg, "Purchasing Organization
meins LIKE mara-meins, "Base Unit of Measure
netpr LIKE eine-netpr, "Net Price
waers LIKE eine-waers, "Currency
maktx LIKE makt-maktx, "Material Description
ispackage(3) TYPE c, "Is Package
END OF i_tab.
DATA: i_tab1 LIKE TABLE OF i_tab WITH HEADER LINE.
DATA: i_tab2 LIKE TABLE OF i_tab WITH HEADER LINE.
DATA: netpr_hkd LIKE eine-netpr.
DATA: netpr_sum LIKE eine-netpr.
REFRESH: i_tab.
"Get <Bill of Material> with <Material Nember>
SELECT mast~matnr mast~stlnr marc~werks makt~maktx mara~meins
INTO CORRESPONDING FIELDS OF TABLE i_tab FROM mast
INNER JOIN marc ON mast~matnr = marc~matnr
INNER JOIN makt ON mast~matnr = makt~matnr
INNER JOIN mara ON mast~matnr = mara~matnr
WHERE mast~matnr BETWEEN '000000000000330100' AND '000000000000330166'.
i_tab-ispackage = 'Yes'.
MODIFY i_tab TRANSPORTING ispackage WHERE ispackage IS INITIAL.
i_tab-waers = 'HKD'.
MODIFY i_tab TRANSPORTING waers WHERE waers IS INITIAL.
LOOP AT i_tab.
netpr_sum = 0.
"Get All BOM Material item with <Bill of Material> in table <stpo>.
SELECT mara~matnr stpo~stlnr marc~werks makt~maktx mara~meins
INTO CORRESPONDING FIELDS OF TABLE i_tab1 FROM stpo
INNER JOIN marc ON stpo~idnrk = marc~matnr
INNER JOIN makt ON stpo~idnrk = makt~matnr
INNER JOIN mara ON stpo~idnrk = mara~matnr
WHERE stpo~stlnr = i_tab-stlnr.
i_tab1-ispackage = 'No'.
MODIFY i_tab1 TRANSPORTING ispackage WHERE ispackage IS INITIAL.
LOOP AT i_tab1.
"Get <Purchasing Organization> with <Material Nember>
SELECT SINGLE * FROM ekpo WHERE matnr = i_tab1-matnr.
IF sy-subrc = 0.
SELECT SINGLE * FROM ekko WHERE ebeln = ekpo-ebeln.
IF sy-subrc = 0.
i_tab1-ekorg = ekko-ekorg.
ENDIF.
ENDIF.
"Get <Net Price>,<Currency> with <Material Nember>
SELECT SINGLE * FROM eina WHERE matnr = i_tab1-matnr.
IF sy-subrc = 0.
SELECT SINGLE * FROM eine WHERE infnr = eina-infnr.
IF sy-subrc = 0.
IF eine-waers <> 'HKD'.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datum
foreign_amount = eine-netpr
foreign_currency = eine-waers
local_currency = 'HKD'
type_of_rate = 'M'
IMPORTING
local_amount = netpr_hkd
EXCEPTIONS
no_rate_found = 1
OTHERS = 2.
IF eine-waers = 'JPY'.
netpr_hkd = netpr_hkd / 100.
ENDIF.
i_tab1-netpr = netpr_hkd.
ELSE.
i_tab1-netpr = eine-netpr.
ENDIF.
i_tab1-waers = 'HKD'.
ENDIF.
ENDIF.
netpr_sum = netpr_sum + i_tab1-netpr.
ENDLOOP.
i_tab-netpr = netpr_sum.
APPEND i_tab TO i_tab2.
APPEND LINES OF i_tab1 TO i_tab2.
LOOP AT i_tab2.
WRITE /: ''.
WRITE :'Material Number:', i_tab2-matnr.
WRITE :'Bill of material:', i_tab2-stlnr.
WRITE :'Purchasing Organization:', i_tab2-ekorg.
WRITE :'Net Price:', i_tab2-netpr, i_tab2-waers.
WRITE :'Ispackage:', i_tab2-ispackage.
"WRITE /: '-------------'.
ENDLOOP.
ENDLOOP.