Beruflich Dokumente
Kultur Dokumente
REPORT yrq_co_costcom_report.
TABLES: mast, bkpf, mkal, mbew.
*&---------------------------------------------------------------------*
*& Include FP_SPOOL_CONSTANTS
*&---------------------------------------------------------------------*
CONSTANTS:
c_ads_doctype_appl TYPE adsdoctype VALUE 'ADSA', "#EC * application
c_ads_doctype_spool TYPE adsdoctype VALUE 'ADSP', "#EC * spool
c_ads_doctype_mail TYPE adsdoctype VALUE 'ADSM', "#EC * mail
c_ads_doctype_fax TYPE adsdoctype VALUE 'ADSF', "#EC * fax
c_ads_doctype_init TYPE adsdoctype VALUE 'INIT', "#EC * dummy
START-OF-SELECTION.
* Set output parameters and open spool job.
gs_outputparams-nodialog = abap_true.
gs_outputparams-getpdf = 'M'.
gs_outputparams-connection = p_conn.
gs_outputparams-bumode = p_bum.
IF p_assemb = abap_true.
gs_outputparams-assemble = abap_true.
ENDIF.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = gs_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc IS NOT INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
mnth = wa_header-dater+4(2).
IF mnth <= 6.
year = wa_header-dater(4) - 1.
ELSE.
year = wa_header-dater(4).
ENDIF.
CONCATENATE 'As of ' ` ` wa_header-dater+6(2) '-' wa_header-dater+4(2) '-'
wa_header-dater(4) INTO dater.
*SELECT SINGLE PLNNR FROM MAPL into IT_GROUP-PLNNR WHERE matnr = WA_HEADER-MATNR
AND PLNTY = '2' AND LOEKZ NE 'X' AND ANDAT in I_BUDAT.
SELECT SINGLE plnnr stlal FROM mkal INTO (it_group-plnnr, lv_altbom) WHERE
matnr = wa_header-matnr AND verid EQ i_pver." AND ADATU in I_BUDAT. "Group &
Production Version
SELECT SINGLE stlnr andat FROM mast INTO (it_bom-bom, it_bom-date) WHERE matnr
= wa_header-matnr AND andat = wa_header-dater AND stlal EQ lv_altbom. "Bom Number
and Alternate Bom
SELECT SINGLE bmeng INTO finibatch FROM stko WHERE stlnr EQ it_bom-bom.
"------------Getting Recipe------------"
SELECT a~idnrk a~meins a~menge a~posnr b~bmein b~bmeng b~datuv b~valid_to FROM
stko AS b INNER JOIN stpo AS a ON ( b~stlnr = a~stlnr )
JOIN stas AS c ON ( a~stlnr = c~stlnr )
AND ( b~stlal = c~stlal ) AND ( b~stlnr = c~stlnr )
AND ( a~stlkn = c~stlkn ) INTO CORRESPONDING FIELDS OF TABLE it_itab WHERE
a~stlnr = it_bom-bom AND a~sanfe = 'X' AND b~stlty EQ 'M' AND a~stlty EQ 'M' AND
c~stlty EQ 'M' AND c~stlal EQ lv_altbom AND b~stlal EQ lv_altbom."AND A~ANDAT =
IT_BOM-DATE
"AND B~ANDAT = "IT_BOM-DATE.
SELECT vgw02 vgw04 pvzkn FROM plpo INTO CORRESPONDING FIELDS OF TABLE it_wctab
WHERE plnnr = it_group-plnnr AND plnty EQ '2' AND phflg EQ 'X' AND loekz NE 'X' AND
andat IN i_budat.
"Rizwan Qureshi - Clear ty_bomdetails for ranges issue
CLEAR ty_bomdetails.
LOOP AT it_itab INTO wa_itab.
SELECT SINGLE mtart FROM mara INTO mtart WHERE matnr = wa_itab-idnrk.
IF mtart = 'ZHLB'.
********************************************** BOM FOR THE SEMI FINISH MATERIAL
**********************************************
* SELECT SINGLE PLNNR FROM MAPL into IT_GROUP-PLNNRSEMI WHERE matnr = wa_itab-
IDNRK AND PLNTY = '2' AND LOEKZ NE 'X' AND ANDAT in I_BUDAT.
SELECT SINGLE plnnr stlal FROM mkal INTO (it_group-plnnrsemi,
lv_altbomsemi) WHERE matnr = wa_itab-idnrk AND verid EQ i_pver." AND ADATU in
I_BUDAT.
SELECT SINGLE stlnr andat FROM mast INTO (it_bom-semi, it_bom-semidate)
WHERE matnr = wa_itab-idnrk AND andat EQ wa_header-dater AND stlal EQ
lv_altbomsemi.
SELECT SINGLE bmeng INTO semibatch FROM stko WHERE stlnr EQ it_bom-semi.
SELECT a~idnrk a~meins a~menge a~posnr b~datuv b~valid_to b~bmein b~bmeng
FROM stko AS b INNER JOIN stpo AS a ON ( b~stlnr = a~stlnr )
JOIN stas AS c ON ( a~stlnr = c~stlnr )
AND ( b~stlal = c~stlal ) AND ( b~stlnr = c~stlnr )
AND ( a~stlkn = c~stlkn ) INTO CORRESPONDING FIELDS OF TABLE it_itabsemi
WHERE a~stlnr = it_bom-semi AND a~sanfe = 'X' AND b~stlty EQ 'M' AND a~stlty EQ 'M'
AND c~stlty EQ 'M' AND c~stlal EQ lv_altbomsemi AND b~stlal EQ lv_altbomsemi.
"AND A~ANDAT = IT_BOM-SemiDate AND B~ANDAT = IT_BOM-SemiDate.
SELECT vgw02 vgw04 pvzkn FROM plpo INTO CORRESPONDING FIELDS OF TABLE
it_wctabsemi WHERE plnnr = it_group-plnnrsemi AND plnty EQ '2' AND phflg EQ 'X'
AND loekz NE 'X' AND andat IN i_budat.
"Rizwan Qureshi - Clear table for ranges
CLEAR ty_bomsemi.
LOOP AT it_itabsemi INTO wa_itabsemi.
SELECT SINGLE mtart FROM mara INTO wa_itabsemi-type WHERE matnr =
wa_itabsemi-idnrk.
n1 = n1 + 1.
wa_bomsemi-posnr = n1.
wa_bomsemi-matnr = wa_header-matnr.
wa_bomsemi-matdes = wa_header-maktx.
wa_bomsemi-idnrk = wa_itabsemi-idnrk.
SELECT SINGLE maktx INTO wa_bomsemi-matkx FROM makt WHERE matnr =
wa_itabsemi-idnrk.
wa_bomsemi-meins = wa_itabsemi-meins.
wa_bomsemi-menge = wa_itabsemi-menge.
wa_bomsemi-bmeng = wa_itabsemi-bmeng.
wa_bomsemi-bmein = wa_itabsemi-bmein.
wa_bomsemi-datuv = wa_itabsemi-datuv.
wa_bomsemi-effdateto = wa_itabsemi-valid_to.
IF wa_itabsemi-valid_to IS INITIAL.
wa_bomsemi-effdateto = '99991231'.
ENDIF.
bmein = wa_itabsemi-bmein.
bmeng = wa_itabsemi-bmeng.
SELECT SINGLE stprs INTO wa_bomsemi-stprs FROM mbew WHERE matnr =
wa_itabsemi-idnrk.
wa_bomsemi-stvalue = wa_itabsemi-menge * wa_bomsemi-stprs.
SELECT SINGLE waers INTO wa_bomsemi-waers FROM mseg WHERE matnr =
wa_itabsemi-idnrk.
SHIFT wa_bomsemi-posnr LEFT DELETING LEADING '0'.
SHIFT wa_bomsemi-posnr RIGHT DELETING TRAILING '0'.
"---------------MM--------------"
SELECT SINGLE waers ucost exrate effdateto lc FROM zlandedcost INTO
(wa_bomsemi-waers, wa_bomsemi-cnfprice, wa_bomsemi-exrate, wa_bomsemi-effdateto,
wa_bomsemi-lc) WHERE matnr = wa_itabsemi-idnrk.
wa_bomsemi-cfrs = wa_bomsemi-cnfprice * wa_bomsemi-exrate.
IF wa_bomsemi-lc IS NOT INITIAL.
TRY .
wa_bomsemi-markup = ( ( wa_bomsemi-stprs - wa_bomsemi-cfrs ) /
wa_bomsemi-cfrs ) * 100.
CATCH cx_root.
wa_bomsemi-markup = 0.
ENDTRY.
ENDIF.
BREAK anas_abap.
*****==========================Checking for Material Type For
Packing/Raw===================*
IF wa_itabsemi-type = 'ZVRP' .
pm_bc = wa_bomsemi-stvalue + pm_bc.
"Packing Material Bulk Cost
IF semibatch IS NOT INITIAL.
pm_bp = pm_bc / finibatch. "Packing
Material Bulk PACK
ENDIF.
* BI_BC = BI_BC + WA_BOMSEMI-CFRS.
* IF SEMIBATCH is not INITIAL.
* BI_BP = BI_BC / FINIBATCH.
* ENDIF.
ELSEIF wa_itabsemi-type = 'ZROH'.
rm_bc = rm_bc + wa_bomsemi-stvalue.
"Raw Material Material Bulk Cost
IF semibatch IS NOT INITIAL.
rm_bp = rm_bc / finibatch.
ENDIF.
ELSEIF wa_itabsemi-type = 'ZHLB'.
bi_bc = bi_bc + wa_bomsemi-cfrs.
IF semibatch IS NOT INITIAL.
bi_bp = bi_bc / finibatch. "Raw
Material Material Bulk Pack
ENDIF.
ENDIF.
SELECT SINGLE labor INTO implcl FROM mara WHERE matnr = wa_bomsemi-matnr.
IF implcl NE 'RMI'.
lm_bc = lm_bc + wa_bomsemi-stvalue.
"Local Material Bulk Cost
IF semibatch IS NOT INITIAL.
lm_bp = lm_bc / finibatch.
"Local Material Bulk Pack
ENDIF.
ELSE.
im_bc = im_bc + wa_bomsemi-cfrs.
"Imported Material Bulk Cost
IF semibatch IS NOT INITIAL.
im_bp = im_bc / finibatch.
"Imported Material Bulk Pack
ENDIF.
ENDIF.
APPEND wa_bomsemi TO ty_bomsemi.
CLEAR wa_bomsemi.
ENDLOOP.
"Raw Material Bulk Pack
****************** &&&&&&&&&&&&&&&&&&&&&&& Work Center For Semi Finish Material
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ENDIF.
IF wa_itab-type = 'ZVRP' .
pm_bc = pm_bc + wa_bomdetails-stvalue.
"Packing Material Bulk Cost "Raw Material Material
Bulk Cost
ENDIF.
ENDLOOP.
"Direct Labor Bulk Cost
IF wa_ty_bomsemi-cfrs > 0.
wa_ty_bomsemi-markup = ( wa_ty_bomsemi-stprs - wa_ty_bomsemi-cfrs ) /
wa_ty_bomsemi-cfrs * 100.
ENDIF.
SELECT SINGLE mtart FROM mara INTO lv_mtart WHERE matnr = wa_ty_bomsemi-
idnrk.
IF lv_mtart = 'ZVRP' .
pm_pc = wa_ty_bomsemi-stvalue + pm_bc.
"Packing Material Bulk Cost
ELSEIF lv_mtart = 'ZROH'.
rm_bc = rm_bc + wa_ty_bomsemi-stvalue.
"Raw Material Material Bulk Cost
ENDIF.
"Total Cost
rm_tc = rm_bc + rm_pc.
bi_tc = bi_bc + bi_pc.
pm_tc = pm_bc + pm_pc.
dl_tc = dl_bc + dl_pc.
pc_tc = rm_tc + bi_tc + pm_tc + dl_tc.
oh_tc = oh_bc + oh_pc.
sc_tc = pc_tc + oh_tc.
ENDIF.
SELECT SINGLE stprs FROM mbew INTO bulkr WHERE matnr = wa_it_itab-idnrk.
ENDLOOP.
"Rizwan Qureshi - New Logic If ty_bomsemi is Initual - End
IF itab_header[] IS INITIAL.
MESSAGE 'Invalid Product Code' TYPE 'E'.
ENDIF.
*Rizwan Qureshi - for PDF Merge Work (Display the full list of PDF documents.)
PERFORM display_result_table USING gt_result.
*&---------------------------------------------------------------------*
*& Form retrieve_pdf_table
*&---------------------------------------------------------------------*
* Retrieve table with PDF documents from forms-processing
* run-time environment.
*----------------------------------------------------------------------*
* -->P_INDEX index from the loop over the customer table
* -->P_PAGES total page count of a bundle
* <--P_PDF_TAB table to which the PDF documents are appended
*----------------------------------------------------------------------*
FORM retrieve_pdf_table USING VALUE(p_index) TYPE syindex
VALUE(p_pages) TYPE fppagecount
CHANGING p_pdf_tab TYPE gty_result_tab.
DATA lt_pdf_table TYPE tfpcontent.
DATA ls_result TYPE gty_result.
*&---------------------------------------------------------------------*
*& Form display_result_table
*&---------------------------------------------------------------------*
FORM display_result_table USING p_pdf_tab TYPE gty_result_tab.
DATA ls_result TYPE gty_result.
DATA lv_file TYPE fpfile.
DATA lv_sep TYPE c.
DATA lt_data TYPE tsfixml.
DATA lv_rc TYPE sysubrc.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*