Ale
Ale
Mustafa Kont <[email protected]>
bom extend JCI program kodu
Meltem Altin <[email protected]> 19 March 2015 at 11:55
To: "[email protected]" <[email protected]>
***********************************************************************
* Report: ZGTP2P_I_MATERIAL_IDOC_PLANTX
*
* Created: FEB 10, 2011
* Author: Selvaraj M
* Function: Material and BOM Idoc to MAPICS, Material and BOM
* Extension for Target Plant
* Conditions: ......
* Issue / ticket number: SAPP3869
*
* History of Change:
* Version Date Author Reason of Change
*
* V00001 dd.mm.yyyy Name Change
* V00002 07.09.2011 CSRITHB Map unit of measure as PCS if
* materials are generated from
* drawings.Incase of multiple
* drawings,replace '' with
* space in the alt mat no.
* JIRA 4454. TR YRDK970987
*
* V00003 29.09.2011 CMANISE Changed the logic for single
* DWG document scenario same as
* the multiple DWG documents
* scenario.
* JIRA 4600. TR YRDK971569
* V00004 08.12.2011 CSRITHB 1.Fix to correct the material no
* in the long text internal
* table passed on to material
* extension BAPI
* 2.To clear indicators like
* engineering,costing,sales etc..
* to enable BOM creation FM to
* default them based on BOM usage
* JIRA 4840.
* TRs YRDK973079,YRDK973085,
* YRDK973139,YRDK973245
**
* V5.0 Jun 26'12 SAPP5375 CBENJAA Fix BOM accuracy and account
* for document texts which are longer than 1000 chars in matinterface
* TR No.YRDK976115
**
* V00006 14.08.2013 CMANISE SAPP6202, DIR logic inclusion
* for BPSS project
***********************************************************************
REPORT zgtp2f_i_material_idoc_plantx MESSAGEID zup_01
NO STANDARD PAGE HEADING LINESIZE 1023.
TYPEPOOLS: slis.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 1/124
3/21/2015 Gmail bom extend JCI program kodu
*Types and Data declarations for BOM and MAT IDoc
DATA : gs_mastseg LIKE ze1mastm,
gs_stposeg LIKE ze1stpom,
gs_maraseg LIKE ze2maram,
gs_marcseg LIKE ze2marcm,
gs_maktseg LIKE ze2maktm,
gs_mtxlseg LIKE ze2mtxlm.
*Data declaration for BOM
TYPES: BEGIN OF ty_bom_final,
matnr TYPE maramatnr,
stlan TYPE maststlan,
zp2f_oldmat TYPE marczp2f_oldmat,
matnr1 TYPE objky,
END OF ty_bom_final.
TYPES: BEGIN OF ty_bom_final1,
sel TYPE c,
matnr TYPE mastmatnr,
werks TYPE mastwerks,
stlan TYPE maststlan,
plant TYPE marcwerks,
bomuse TYPE maststlan,
ecn TYPE stkoaennr,
END OF ty_bom_final1.
TYPES: BEGIN OF ty_bom_final2,
sel TYPE c,
matnr TYPE mastmatnr,
matnr_c TYPE mastmatnr,
werks TYPE mastwerks,
stlan TYPE maststlan,
plant TYPE marcwerks,
bomuse TYPE maststlan,
ecn TYPE stkoaennr,
END OF ty_bom_final2.
TYPES: BEGIN OF ty_bom_ext,
sel TYPE c,
matnr TYPE mastmatnr,
werks TYPE mastwerks,
stlan TYPE maststlan,
stlal TYPE maststlal,
plant TYPE marcwerks,
bomuse TYPE maststlan,
ecn TYPE stkoaennr,
END OF ty_bom_ext.
TYPES: BEGIN OF ty_bom_ext_final,
sel TYPE c,
matnr TYPE mastmatnr,
werks TYPE mastwerks,
stlan TYPE maststlan,
stlal TYPE maststlal,
plant TYPE marcwerks,
END OF ty_bom_ext_final.
TYPES: BEGIN OF ty_aeoi,
aennr TYPE aeoiaennr,
objkt TYPE maramatnr,
revlv TYPE aeoirevlv,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 2/124
3/21/2015 Gmail bom extend JCI program kodu
END OF ty_aeoi.
TYPES: BEGIN OF ty_aeoi_bom,
aennr TYPE aeoiaennr,
objkt TYPE aeoiobjkt,
stlnr TYPE maststlnr,
END OF ty_aeoi_bom.
*Types and Data declarations for Material
TYPES: BEGIN OF ty_marc,
matnr TYPE marcmatnr,
werks TYPE marcwerks,
beskz TYPE marcbeskz,
zptyp TYPE marczptyp,
ausme TYPE marcausme,
sobsl TYPE marcsobsl,
zp2f_oldmat TYPE marczp2f_oldmat,
END OF ty_marc.
TYPES: BEGIN OF ty_mara,
matnr TYPE objky,
mtart TYPE maramtart,
meins TYPE marameins,
brgew TYPE marabrgew,
gewei TYPE maragewei,
zzglat TYPE marazzglat,
datab TYPE maradatab,
kzumw TYPE marakzumw,
matnr1 TYPE cdobjectv,
ecm TYPE cuobn,
ecm1 TYPE aenraennr,
END OF ty_mara.
TYPES: BEGIN OF ty_drad_draw,
dokar TYPE dokar,
doknr TYPE doknr,
dokvr TYPE dokvr,
doktl TYPE doktl_d,
dokob TYPE dokob,
obzae TYPE obzae,
objky TYPE objky,
dokst TYPE dokst,
objnum TYPE objnum,
END OF ty_drad_draw.
TYPES: BEGIN OF ty_drad_draw_new,
dokar TYPE dokar,
doknr TYPE doknr,
dokvr TYPE dokvr,
doktl TYPE doktl_d,
dokob TYPE dokob,
obzae TYPE obzae,
objky TYPE objky,
dokst TYPE dokst,
aennr TYPE daenr,
objnum TYPE objnum,
END OF ty_drad_draw_new.
TYPES: BEGIN OF ty_makt,
matnr TYPE maktmatnr,
maktx TYPE maktmaktx,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 3/124
3/21/2015 Gmail bom extend JCI program kodu
spras TYPE maktspras,
END OF ty_makt.
TYPES: BEGIN OF ty_ausp,
objnum TYPE auspobjek,
klart TYPE auspklart,
atwrt TYPE auspatwrt,
END OF ty_ausp.
*Declaration part for messages
TYPES: BEGIN OF ty_messages,
sel,
icon TYPE icon_d,
docnum TYPE edidcdocnum,
matnr TYPE matnr,
zp2f_oldmat TYPE marczp2f_oldmat,
werks TYPE werks_d,
message(150) TYPE c,
END OF ty_messages.
*Internal table declaration for Extend in SAP Part
TYPES: BEGIN OF ty_target_plnt,
matnr TYPE marcmatnr,
werks TYPE marcwerks,
lgpro TYPE marclgpro,
END OF ty_target_plnt.
TYPES: BEGIN OF ty_mara_e,
matnr TYPE maramatnr,
mtart TYPE maramtart,
begru TYPE marabegru,
kzeff TYPE marakzeff,
kzkfg TYPE marakzkfg,
labor TYPE maralabor,
matkl TYPE maramatkl,
meins TYPE marameins,
mstae TYPE maramstae,
mstde TYPE maramstde,
satnr TYPE marasatnr,
END OF ty_mara_e.
TYPES: BEGIN OF ty_makt_e,
matnr TYPE maktmatnr,
maktx TYPE maktmaktx,
spras TYPE maktspras,
END OF ty_makt_e.
TYPES: BEGIN OF ty_mrp,
dispr TYPE mdipdispr,
dismm TYPE mdipdismm,
dispo TYPE mdipdispo,
fhori TYPE mdipfhori,
sbdkz TYPE mdipsbdkz,
disls TYPE mdipdisls,
webaz TYPE mdipwebaz,
ekgrp TYPE mdipekgrp,
fxhor TYPE mdipfxhor,
vrmod TYPE mdipvrmod,
vint1 TYPE mdipvint1,
vint2 TYPE mdipvint2,
strgr TYPE mdipstrgr,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 4/124
3/21/2015 Gmail bom extend JCI program kodu
lgpro TYPE mdiplgpro,
beskz TYPE mdipbeskz,
END OF ty_mrp.
TYPES: BEGIN OF ty_cdhdr,
objectid TYPE cdhdrobjectid,
changenr TYPE cdhdrchangenr,
planchngnr TYPE cdhdrplanchngnr,
END OF ty_cdhdr.
DATA: gt_cdhdr TYPE TABLE OF ty_cdhdr,
gs_cdhdr TYPE ty_cdhdr.
TYPES: BEGIN OF ty_aeoi_tmp,
aennr TYPE aenraennr,
aetyp TYPE aeoiaetyp,
objkt TYPE aeoiobjkt,
andat TYPE aeoiandat,
END OF ty_aeoi_tmp.
DATA: gt_aeoi_tmp TYPE TABLE OF ty_aeoi_tmp,
gs_aeoi_tmp TYPE ty_aeoi_tmp.
TYPES: BEGIN OF ty_matnr_tmp,
objkt TYPE aeoiobjkt,
END OF ty_matnr_tmp.
DATA: gt_matnr_tmp TYPE TABLE OF ty_matnr_tmp,
gs_matnr_tmp TYPE ty_matnr_tmp.
TYPES: BEGIN OF ty_inob,
cuobj TYPE objnum,
objek TYPE inobobjek,
END OF ty_inob.
DATA: gt_inob TYPE TABLE OF ty_inob,
gs_inob TYPE ty_inob.
TYPES: BEGIN OF ty_ecm_ausp,
objek TYPE auspobjek,
atinn TYPE auspatinn,
atwrt TYPE auspatwrt,
END OF ty_ecm_ausp.
DATA: gt_ecm_ausp TYPE TABLE OF ty_ecm_ausp,
gs_ecm_ausp LIKE LINE OF gt_ecm_ausp.
TYPES: BEGIN OF ty_aenr,
aennr TYPE aenraennr,
datuv TYPE aenrdatuv,
END OF ty_aenr.
DATA: gt_aenr TYPE TABLE OF ty_aenr,
gs_aenr TYPE ty_aenr.
TYPES: BEGIN OF ty_aenr_doc,
aennr TYPE aenraennr,
datuv TYPE aenrdatuv,
END OF ty_aenr_doc.
DATA: gt_aenr_doc TYPE TABLE OF ty_aenr_doc,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 5/124
3/21/2015 Gmail bom extend JCI program kodu
gs_aenr_doc TYPE ty_aenr_doc.
*** BEGIN OF INSERTION SAPP4600
DATA: gt_aenr_doc_tmp TYPE TABLE OF ty_aenr_doc,
gs_aenr_doc_tmp TYPE ty_aenr_doc.
*** END OF INSERTION SAPP4600
TYPES: BEGIN OF ty_legacy_mat,
matnr TYPE matnr,
werks TYPE werks_d,
zp2f_oldmat TYPE zbismt,
END OF ty_legacy_mat.
DATA: gt_legacy_mat TYPE STANDARD TABLE OF marc,
gs_legacy_mat TYPE marc.
TYPES: BEGIN OF ty_drat,
doknr TYPE doknr,
dktxt TYPE dktxt,
END OF ty_drat.
DATA: gt_drat TYPE TABLE OF ty_drat,
gs_drat TYPE ty_drat.
TYPES: BEGIN OF ty_sub_com,
objky TYPE objky,
END OF ty_sub_com.
DATA: gt_sub_com TYPE TABLE OF ty_sub_com,
gs_sub_com TYPE ty_sub_com.
TYPES: BEGIN OF ty_allmat,
matnr TYPE maramatnr,
l_matnr TYPE marczp2f_oldmat,
END OF ty_allmat.
DATA: gt_allmat TYPE TABLE OF ty_allmat,
gs_allmat TYPE ty_allmat.
DATA: gt_doc_part TYPE STANDARD TABLE OF zgtp2f_doc_revlv,
gs_doc_part LIKE LINE OF gt_doc_part.
*** BEGIN OF INSERTION SAPP4600
DATA: gt_aedt TYPE TABLE OF aedt.
*** BEGIN OF INSERTION SAPP4600
*Selection screen data types
DATA: s_mara TYPE mara,
s_mast TYPE mast,
s_aenr TYPE aenr.
*Internal table and work area declarations
DATA: gt_bom_final TYPE TABLE OF ty_bom_final,
gs_bom_final LIKE LINE OF gt_bom_final,
gt_bom_create TYPE TABLE OF ty_bom_final1,
gs_bom_create LIKE LINE OF gt_bom_create,
gt_bom_create_final TYPE TABLE OF ty_bom_final2,
gs_bom_create_final LIKE LINE OF gt_bom_create_final,
gt_bom_ext TYPE TABLE OF ty_bom_ext,
gs_bom_ext LIKE LINE OF gt_bom_ext,
gt_bom_ext_final TYPE TABLE OF ty_bom_ext_final,
gs_bom_ext_final LIKE LINE OF gt_bom_ext_final,
gt_stb TYPE TABLE OF stpox,
gs_stb LIKE LINE OF gt_stb,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 6/124
3/21/2015 Gmail bom extend JCI program kodu
gt_stb_mat TYPE TABLE OF stpox,
gs_stb_mat LIKE LINE OF gt_stb,
gt_aeoi TYPE TABLE OF ty_aeoi,
gs_aeoi LIKE LINE OF gt_aeoi,
gt_aeoi_bom TYPE TABLE OF ty_aeoi_bom,
gs_aeoi_bom LIKE LINE OF gt_aeoi_bom.
DATA: gt_marc TYPE TABLE OF ty_marc,
gs_marc LIKE LINE OF gt_marc,
gs_marc_tmp LIKE LINE OF gt_marc, "INS SAPP4600
gt_mara TYPE TABLE OF ty_mara,
gs_mara LIKE LINE OF gt_mara,
gt_makt TYPE TABLE OF ty_makt,
gs_makt LIKE LINE OF gt_makt,
gt_ausp TYPE TABLE OF ty_ausp,
gs_ausp LIKE LINE OF gt_ausp,
gt_ausp_dwg TYPE TABLE OF ty_ausp,
gs_ausp_dwg LIKE LINE OF gt_ausp_dwg,
gt_ausp_std TYPE TABLE OF ty_ausp,
gs_ausp_std LIKE LINE OF gt_ausp_std.
*For ALV GRID parameters Declaration
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat LIKE LINE OF gt_fieldcat,
gs_layout TYPE lvc_s_layo,
gs_layout1 TYPE slis_layout_alv,
gt_fieldcat1 TYPE slis_t_fieldcat_alv,
gs_fieldcat1 LIKE LINE OF gt_fieldcat1,
gt_fieldcat_bom TYPE slis_t_fieldcat_alv,
gs_fieldcat_bom LIKE LINE OF gt_fieldcat_bom,
gt_fieldcat_ext_bom TYPE slis_t_fieldcat_alv,
gs_fieldcat_ext_bom LIKE LINE OF gt_fieldcat_ext_bom .
DATA : gt_drad_draw TYPE TABLE OF ty_drad_draw,
gs_drad_draw TYPE ty_drad_draw.
DATA : gt_drad_draw_new TYPE TABLE OF ty_drad_draw_new,
gs_drad_draw_new TYPE ty_drad_draw_new.
DATA : gt_drad_draw_dwg TYPE TABLE OF ty_drad_draw_new,
gs_drad_draw_dwg TYPE ty_drad_draw_new.
DATA : gt_drad_draw_dwg1 TYPE TABLE OF ty_drad_draw_new,
gs_drad_draw_dwg1 TYPE ty_drad_draw_new.
DATA : gt_drad_draw_new1 TYPE TABLE OF ty_drad_draw_new,
gs_drad_draw_new1 TYPE ty_drad_draw_new.
DATA : gt_drad_draw_std TYPE TABLE OF ty_drad_draw_new,
gs_drad_draw_std TYPE ty_drad_draw_new.
DATA: gt_messages TYPE TABLE OF ty_messages,
gs_messages LIKE LINE OF gt_messages.
DATA: gt_map_plant TYPE TABLE OF zgtp2p_map_plant.
DATA: gt_tline TYPE TABLE OF tline,
gs_tline LIKE LINE OF gt_tline.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 7/124
3/21/2015 Gmail bom extend JCI program kodu
*IDoc data and control record structures
DATA : gt_edidd LIKE TABLE OF edidd,
gs_edidd LIKE LINE OF gt_edidd.
DATA : gt_edidc LIKE TABLE OF edidc,
gs1_edidc LIKE LINE OF gt_edidc.
DATA : gs_edidc LIKE edidc.
*Final internal table for ALV GRID
*CODE INSPECTOR Message:We should give OCCURS 0 for this internal table
*Because I'm generating fieldcatalog using FM, We need to give internal
*table name with headerline to this FM
DATA: BEGIN OF gt_alv_material OCCURS 0,
sel,
matnr LIKE marcmatnr,
mtart LIKE maramtart,
werks LIKE marcwerks,
zptyp LIKE marczptyp,
zp2f_oldmat LIKE marczp2f_oldmat,
plant LIKE mastwerks,
lgpro LIKE marclgpro,
sobsl LIKE marcsobsl,
vkorg LIKE mvkevkorg,
vtweg LIKE mvkevtweg,
bwkey LIKE mbewbwkey,
lgnum LIKE mlgnlgnum,
mat_r LIKE maramatnr,
begru LIKE marabegru,
kzkfg LIKE marakzkfg,
labor LIKE maralabor,
matkl LIKE maramatkl,
meins LIKE marameins,
maktx LIKE maktmaktx,
spras LIKE maktspras,
END OF gt_alv_material.
TYPES: BEGIN OF ty_download,
matnr LIKE marcmatnr,
mtart LIKE maramtart,
werks LIKE marcwerks,
zptyp LIKE marczptyp,
zp2f_oldmat LIKE marczp2f_oldmat,
plant LIKE mastwerks,
lgpro LIKE marclgpro,
vkorg LIKE mvkevkorg,
bwkey LIKE mbewbwkey,
lgnum LIKE mlgnlgnum,
mat_r LIKE maramatnr,
begru LIKE marabegru,
kzkfg LIKE marakzkfg,
labor LIKE maralabor,
matkl LIKE maramatkl,
meins LIKE marameins,
maktx LIKE maktmaktx,
spras LIKE maktspras,
old_mat_no LIKE bapi_maraold_mat_no,
pur_status LIKE bapi_marapur_status,
net_weight LIKE bapi_maranet_weight,
unit_of_wt LIKE bapi_maraunit_of_wt,
mrp_type LIKE bapi_marcmrp_type,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 8/124
3/21/2015 Gmail bom extend JCI program kodu
mrp_ctrler LIKE bapi_marcmrp_ctrler,
lotsizekey LIKE bapi_marclotsizekey,
round_val LIKE bapi_marcround_val,
proc_type LIKE bapi_marcproc_type,
spproctype LIKE bapi_marcspproctype,
iss_st_loc LIKE bapi_marciss_st_loc,
backflush LIKE bapi_marcbackflush,
determ_grp LIKE bapi_marcdeterm_grp,
period_ind LIKE bapi_marcperiod_ind,
availcheck LIKE bapi_marcavailcheck,
prodprof LIKE bapi_marcprodprof,
profit_ctr LIKE bapi_marcprofit_ctr,
val_class LIKE bapi_mbewval_class,
price_ctrl LIKE bapi_mbewprice_ctrl,
price_unit LIKE bapi_mbewprice_unit,
taxprice_1 LIKE bapi_mbewtaxprice_1,
taxprice_2 LIKE bapi_mbewtaxprice_2,
taxprice_3 LIKE bapi_mbewtaxprice_3,
commprice1 LIKE bapi_mbewcommprice1,
commprice2 LIKE bapi_mbewcommprice2,
commprice3 LIKE bapi_mbewcommprice3,
overhead_grp LIKE bapi_mbewoverhead_grp,
variance_key LIKE bapi_marcvariance_key,
lot_size LIKE bapi_marclot_size,
END OF ty_download.
DATA: gt_download TYPE TABLE OF ty_download,
gs_download TYPE ty_download.
TYPES: BEGIN OF ty_target_plant,
matnr TYPE marcmatnr,
werks TYPE marcwerks,
END OF ty_target_plant.
DATA: gt_target_plant TYPE TABLE OF ty_target_plant,
gs_target_plant TYPE ty_target_plant,
gt_target_mis TYPE TABLE OF ty_target_plant,
gs_target_mis TYPE ty_target_plant.
*CODE INSPECTOR Message:We should give OOCURS 0 for this internal table
*Because I'm generating fieldcatalog using FM, We need to give internal
*table name with headerline to this FM
DATA: BEGIN OF gt_bom_down OCCURS 0,
sel ,
matnr LIKE mastmatnr,
matnr_c LIKE maramatnr,
werks LIKE mastwerks,
stlan LIKE maststlan,
chg_no LIKE stko_api02chg_no,
valid_from LIKE stko_api02valid_from,
base_quan LIKE stko_api02base_quan,
bom_status LIKE stko_api02bom_status,
stufe LIKE stpoxstufe,
wegxx LIKE stpoxwegxx,
posnr LIKE stpoxposnr,
postp LIKE stpoxpostp,
idnrk LIKE stpoxidnrk,
potx1 LIKE stpoxpotx1,
menge LIKE stpoxmenge,
meins LIKE stpoxmeins,
sortf LIKE stpoxsortf,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 9/124
3/21/2015 Gmail bom extend JCI program kodu
rvrel LIKE stpoxrvrel,
END OF gt_bom_down.
TYPES: BEGIN OF ty_bom_down1,
matnr LIKE mastmatnr,
posnr LIKE stpoxposnr,
idnrk LIKE stpoxidnrk,
potx1 LIKE stpoxpotx1,
menge LIKE stpoxmenge,
rvrel LIKE stpoxrvrel,
sortf LIKE stpoxsortf,
END OF ty_bom_down1.
DATA: gt_bom_down1 TYPE TABLE OF ty_bom_down1,
gs_bom_down1 TYPE ty_bom_down1.
TYPES: BEGIN OF ty_mast,
matnr TYPE mastmatnr,
werks TYPE mastwerks,
stlan TYPE mastwerks,
stlal TYPE maststlal,
END OF ty_mast.
DATA: gt_mast TYPE TABLE OF ty_mast,
gs_mast TYPE ty_mast.
TYPES: BEGIN OF ty_bwkey,
werks TYPE t001wwerks,
bwkey TYPE t001wbwkey,
END OF ty_bwkey.
DATA: gt_bwkey TYPE TABLE OF ty_bwkey,
gs_bwkey TYPE ty_bwkey.
DATA: gt_mara_e TYPE TABLE OF ty_mara_e,
gs_mara_e LIKE LINE OF gt_mara_e.
DATA: gt_makt_e TYPE TABLE OF ty_makt_e,
gs_makt_e LIKE LINE OF gt_makt_e.
DATA: gt_marc_e TYPE TABLE OF marc,
gs_marc_e LIKE LINE OF gt_marc_e.
DATA: gt_target_plnt TYPE TABLE OF ty_target_plnt,
gs_target_plnt LIKE LINE OF gt_target_plnt.
DATA: gt_target_plnt_r TYPE TABLE OF ty_target_plnt,
gs_target_plnt_r LIKE LINE OF gt_target_plnt_r.
DATA: gs_alv_material LIKE LINE OF gt_alv_material.
DATA: gs_clientdata LIKE bapi_mara,
gs_clientdatax LIKE bapi_marax,
gs_plantdata LIKE bapi_marc,
gs_plantdatax LIKE bapi_marcx,
gs_forecastparameters LIKE bapi_mpop,
gs_forecastparametersx LIKE bapi_mpopx,
gs_storagelocationdata LIKE bapi_mard,
gs_storagelocationdatax LIKE bapi_mardx,
gs_valuationdata LIKE bapi_mbew,
gs_valuationdatax LIKE bapi_mbewx,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 10/124
3/21/2015 Gmail bom extend JCI program kodu
gs_salesdata LIKE bapi_mvke,
gs_salesdatax LIKE bapi_mvkex,
gs_warehousenumberdata LIKE bapi_mlgn,
gs_warehousenumberdatax LIKE bapi_mlgnx.
DATA: gt_prtdata TYPE TABLE OF bapi_mfhm,
gs_prtdata TYPE bapi_mfhm,
gt_prtdatax TYPE TABLE OF bapi_mfhmx,
gt_unitsofmeasure TYPE TABLE OF bapi_marm,
gs_unitsofmeasure TYPE bapi_marm,
gt_unitsofmeasurex TYPE TABLE OF bapi_marmx,
gt_intern TYPE TABLE OF bapi_mean,
gs_intern TYPE bapi_mean,
gt_materiallongtext TYPE TABLE OF bapi_mltx,
gs_materiallongtext TYPE bapi_mltx,
*** BEGIN OF INSERTION SAPP4840
gt_matlongtext TYPE TABLE OF bapi_mltx,
gs_matlongtext TYPE bapi_mltx,
*** END OF INSERTION SAPP4840
gt_taxclass TYPE TABLE OF bapi_mlan,
gs_taxclass TYPE bapi_mlan,
gs_clientdata1 LIKE bapi_mara_ga,
gs_plantdata1 LIKE bapi_marc_ga,
gs_forecastparameters1 LIKE bapi_mpop_ga,
gs_storagelocationdata1 LIKE bapi_mard_ga,
gs_valuationdata1 LIKE bapi_mbew_ga,
gs_salesdata1 LIKE bapi_mvke_ga.
RANGES: r_mat_ref FOR maramatnr.
DATA: gt_stpo TYPE TABLE OF stpo_api02,
gs_stpo TYPE stpo_api02,
gt_stko TYPE TABLE OF stko_api02,
gs_stko TYPE stko_api02,
gt_stpu TYPE TABLE OF stpu_api01,
gs_stpu TYPE stpu_api01.
DATA: gt_stpo1 TYPE TABLE OF stpo_api01,
gs_stpo1 TYPE stpo_api01,
gs_stko1 TYPE stko_api01,
gv_bom_no TYPE stko_api02bom_no.
*Variables declarations
DATA: gv_text TYPE theadtdname,
gv_long(5000) TYPE c,
gv_off_int(4) TYPE c,
gv_str_len(4) TYPE c,
gv_off_len(4) TYPE c,
gv_str_flag TYPE c,
gv_mess_type TYPE c,
gv_repid TYPE syrepid,
gv_down TYPE c,
gv_doc_part TYPE zgtp2f_doc_revlvdoktl,
gv_error TYPE c,
gv_werks TYPE marcwerks.
*Begin of insertion SAPP6202
DATA: gv_length TYPE i,
gv_type(5) TYPE c.
TYPES: BEGIN OF ty_mara_d,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 11/124
3/21/2015 Gmail bom extend JCI program kodu
matnr TYPE maramatnr,
labor TYPE maralabor,
END OF ty_mara_d.
TYPES: BEGIN OF ty_upload,
matnr TYPE maramatnr,
doktl TYPE drawdoktl,
dokvr TYPE drawdokvr,
revlv TYPE cc_revlv,
dktxt TYPE dratdktxt,
olddir TYPE char30,
link_n TYPE bapi_doc_compdocfile,
END OF ty_upload.
DATA: BEGIN OF gt_final OCCURS 0,
sel,
werks LIKE marcwerks,
matnr LIKE maramatnr,
dokar LIKE drawdokar,
aennr LIKE aenraennr,
doknr LIKE drawdoknr,
doktl LIKE drawdoktl,
dokvr LIKE drawdokvr,
revlv LIKE tcc09revlv,
olddir LIKE auspatwrt,
labor LIKE maralabor,
dokar_n LIKE drawdokar,
doktl_n LIKE drawdoktl,
dokvr_n LIKE drawdokvr,
olddir_n LIKE auspatwrt,
revlv_n LIKE tcc09revlv,
dktxt_n LIKE dratdktxt,
dappl LIKE drawdappl,
link_n LIKE bapi_doc_compdocfile,
sel1,
END OF gt_final.
DATA: BEGIN OF gt_final_output OCCURS 0,
matnr LIKE maramatnr,
dokar LIKE drawdokar,
doknr LIKE drawdoknr,
doktl LIKE drawdoktl,
dokvr LIKE drawdokvr,
aennr LIKE aenraennr,
msg LIKE bapiret2message,
END OF gt_final_output.
DATA: gt_mara_dir TYPE TABLE OF ty_mara_d,
gs_mara_dir TYPE ty_mara_d,
gt_data_dir TYPE TABLE OF alsmex_tabline,
gs_data_dir LIKE LINE OF gt_data_dir,
gv_colm TYPE i,
gt_upload_dir TYPE TABLE OF ty_upload,
gs_upload_dir TYPE ty_upload,
gt_doc_type TYPE TABLE OF zgtp2f_document_type,
gs_doc_type LIKE LINE OF gt_doc_type,
gt_doc TYPE TABLE OF zgtp2f_document_dur,
gs_doc LIKE LINE OF gt_doc,
gt_doc_final TYPE TABLE OF zgtp2f_document_dur,
gt_fieldcat_dir TYPE slis_t_fieldcat_alv,
gt_fieldcat_dir1 TYPE slis_t_fieldcat_alv,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 12/124
3/21/2015 Gmail bom extend JCI program kodu
gs_fieldcat_dir LIKE LINE OF gt_fieldcat_dir,
gs_layout_dir TYPE slis_layout_alv,
gv_select TYPE c,
gv_newsel TYPE c,
gt_revlv TYPE TABLE OF tcc09,
gs_revlv TYPE tcc09,
gv_labor TYPE maralabor.
*End of insertion SAPP6202
*Constants Declarations
CONSTANTS: gc_plant TYPE dfiesfieldname VALUE 'PLANT',
gc_prog TYPE syrepid VALUE
'ZGTP2P_I_MATERIAL_IDOC_PLANTX',
gc_dyn_fd TYPE help_infodynprofld VALUE 'P_PLANTM',
gc_mestyp1 LIKE edidcmestyp VALUE 'ZGEP2P_MATMAS',
gc_mestyp2 LIKE edidcmestyp VALUE 'ZGEP2F_BOMMAT',
gc_idoctp1 LIKE edidcidoctp VALUE 'ZGEP2P_MATMAS01',
gc_idoctp2 LIKE edidcidoctp VALUE 'ZGEP2F_BOMMAT01',
gc_x TYPE c VALUE 'X',
gc_mastseg TYPE ediddsegnam VALUE 'ZE1MASTM',
gc_stposeg TYPE ediddsegnam VALUE 'ZE1STPOM',
gc_maraseg TYPE ediddsegnam VALUE 'ZE2MARAM',
gc_marcseg TYPE ediddsegnam VALUE 'ZE2MARCM',
gc_maktseg TYPE ediddsegnam VALUE 'ZE2MAKTM',
gc_mtxlseg TYPE ediddsegnam VALUE 'ZE2MTXLM',
gc_icon(4) TYPE c VALUE 'ICON',
gc_mess(7) TYPE c VALUE 'MESSAGE',
gc_sel(3) TYPE c VALUE 'SEL',
gc_docnum(6) TYPE c VALUE 'DOCNUM',
gc_matnr(5) TYPE c VALUE 'MATNR',
gc_werks(5) TYPE c VALUE 'WERKS',
gc_m TYPE c VALUE 'M',
gc_b TYPE c VALUE 'B',
gc_e TYPE c VALUE 'E',
gc_s TYPE c VALUE 'S',
gc_500 TYPE i VALUE '500',
gc_admin(5) TYPE c VALUE 'ADMIN',
gc_stlan(7) TYPE c VALUE 'STLAN',
gc_stlal(7) TYPE c VALUE 'STLAL',
gc_ecm(3) TYPE c VALUE 'ECN',
gc_bomuse(7) TYPE c VALUE 'BOMUSE',
gc_mat_c(7) TYPE c VALUE 'MATNR_C',
gc_l_matnr(11) TYPE c VALUE 'ZP2F_OLDMAT'.
*Selection screenmain screen design
SELECTIONSCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text001.
SELECTIONSCREEN SKIP 1.
PARAMETERS: r_materl RADIOBUTTON GROUP g1 DEFAULT 'X' USERCOMMAND usr.
*Begin of insertion SAPP6202
SELECTIONSCREEN: BEGIN OF LINE.
PARAMETERS: r_plantx RADIOBUTTON GROUP g1.
SELECTIONSCREEN COMMENT 3(78) text157.
SELECTIONSCREEN: END OF LINE.
PARAMETERS: r_doc RADIOBUTTON GROUP g1.
*End of inclusion SAPP6202
SELECTIONSCREEN END OF BLOCK block1.
*Selection sub screen for Material IDoc
SELECTIONSCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text002.
SELECTIONSCREEN SKIP 1.
PARAMETERS: p_plantm TYPE char4 MODIF ID m1,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 13/124
3/21/2015 Gmail bom extend JCI program kodu
p_plants TYPE ty_marcwerks MODIF ID m1.
SELECTOPTIONS: s_matnr FOR s_maramatnr MODIF ID m1,
s_ecm FOR s_aenraennr MODIF ID m1,
s_bomuse FOR s_maststlan MODIF ID m1.
PARAMETERS: p_bom_a TYPE tc04capid MODIF ID m1 DEFAULT 'ZP05'.
SELECTIONSCREEN SKIP 2.
SELECTIONSCREEN COMMENT 1(50) text010 MODIF ID m1.
PARAMETERS: p_matid TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
USERCOMMAND flag.
SELECTIONSCREEN: BEGIN OF LINE.
SELECTIONSCREEN: POSITION 5.
PARAMETERS: p_mat_in TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
USERCOMMAND flag.
SELECTIONSCREEN: COMMENT 7(36) text130 MODIF ID m1.
SELECTIONSCREEN: END OF LINE.
PARAMETERS: p_bomid TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
USERCOMMAND flag,
p_sub TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
USERCOMMAND flag.
SELECTIONSCREEN SKIP 1.
SELECTIONSCREEN END OF BLOCK block2.
*Selection Screen for Extension in SAP
SELECTIONSCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE text003.
SELECTIONSCREEN SKIP 1.
PARAMETERS: p_plnt_e TYPE ty_marcwerks MODIF ID m2,
p_plnt_t TYPE ty_marcwerks MODIF ID m2.
SELECTOPTIONS: s_mats_e FOR s_maramatnr NO INTERVALS MODIF ID m2,
s_ecm_e FOR s_aenraennr NO INTERVALS MODIF ID m2,
s_bom_e FOR s_maststlan NO INTERVALS MODIF ID m2.
PARAMETERS: p_ecm_t TYPE aenraennr MODIF ID m2.
PARAMETERS: p_bom_t TYPE maststlan DEFAULT '2' MODIF ID m2.
PARAMETERS: p_bom_st TYPE stkostlst MODIF ID m2.
PARAMETERS: p_app_b TYPE tc04capid MODIF ID m2 DEFAULT 'ZP05'.
*** BEGIN OF INSERTION SAPP4600
PARAMETERS: p_alt_d TYPE rc29adatuv MODIF ID m2.
*** END OF INSERTION SAPP4600
SELECTIONSCREEN SKIP 2.
SELECTIONSCREEN COMMENT 1(50) text011 MODIF ID m2.
SELECTIONSCREEN: BEGIN OF LINE.
SELECTIONSCREEN: POSITION 1.
PARAMETERS: p_mat_e RADIOBUTTON GROUP g3 DEFAULT 'X'
MODIF ID m2
USERCOMMAND usr2.
SELECTIONSCREEN COMMENT 3(25) text013 MODIF ID m2.
SELECTIONSCREEN: POSITION 37.
PARAMETERS: p_bom_e RADIOBUTTON GROUP g3 MODIF ID m2.
SELECTIONSCREEN: COMMENT 39(30) text012 MODIF ID m2.
SELECTIONSCREEN: POSITION 71.
PARAMETERS: p_bom_p RADIOBUTTON GROUP g3 MODIF ID m2.
SELECTIONSCREEN: COMMENT 73(35) text136 MODIF ID m2.
SELECTIONSCREEN: END OF LINE.
SELECTIONSCREEN: BEGIN OF LINE.
SELECTIONSCREEN: POSITION 4.
PARAMETERS:p_pltyp TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m2.
SELECTIONSCREEN: COMMENT 6(30) text056 MODIF ID m2.
SELECTIONSCREEN: POSITION 40.
PARAMETERS:p_bom_s TYPE c RADIOBUTTON GROUP g2 MODIF ID m2.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 14/124
3/21/2015 Gmail bom extend JCI program kodu
SELECTIONSCREEN: COMMENT 42(30) text043 MODIF ID m2.
SELECTIONSCREEN: END OF LINE.
SELECTIONSCREEN: BEGIN OF LINE.
SELECTIONSCREEN: POSITION 4.
PARAMETERS:p_bom_in TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m2.
SELECTIONSCREEN: COMMENT 6(33) text129 MODIF ID m2.
SELECTIONSCREEN: POSITION 40.
PARAMETERS:p_bom_m TYPE c RADIOBUTTON GROUP g2 DEFAULT 'X' MODIF ID m2.
SELECTIONSCREEN: COMMENT 42(30) text044 MODIF ID m2.
*** BEGIN OF INSERTION SAPP4600
SELECTIONSCREEN: END OF LINE.
SELECTIONSCREEN: BEGIN OF LINE.
SELECTIONSCREEN: POSITION 40.
PARAMETERS:p_alt_c TYPE c AS CHECKBOX MODIF ID m2.
SELECTIONSCREEN: COMMENT 42(30) text139 MODIF ID m2.
*** END OF INSERTION SAPP4600
SELECTIONSCREEN: END OF LINE.
SELECTIONSCREEN END OF BLOCK block3.
SELECTIONSCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text014.
SELECTIONSCREEN SKIP 1.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text015 MODIF ID m5.
SELECTIONSCREEN: COMMENT 20(18) text046 MODIF ID m5,
COMMENT 42(8) text047 MODIF ID m5,
COMMENT 52(9) text048 MODIF ID m5,
COMMENT 62(4) text132 MODIF ID m5,
COMMENT 69(8) text049 MODIF ID m5,
COMMENT 79(12) text053 MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN SKIP 1.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text018 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_fin_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_fin_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_fin_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_fin_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_fin_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_fin_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text019 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_pur_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_pur_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_pur_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_pur_d TYPE mvkevtweg MODIF ID m5.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 15/124
3/21/2015 Gmail bom extend JCI program kodu
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_pur_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_pur_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text020 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_ref_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_ref_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_ref_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_ref_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_ref_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_ref_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text021 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_sub_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_sub_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_sub_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_sub_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_sub_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_sub_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text022 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_trd_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_trd_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_trd_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_trd_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_trd_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_trd_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text059 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 16/124
3/21/2015 Gmail bom extend JCI program kodu
PARAMETERS: p_ph_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_ph_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_ph_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_ph_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_ph_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_ph_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 1(18) text060 MODIF ID m5.
SELECTIONSCREEN POSITION 20.
PARAMETERS: p_def_m TYPE maramatnr MODIF ID m5.
SELECTIONSCREEN POSITION 43.
PARAMETERS: p_def_sl TYPE marclgpro MODIF ID m5.
SELECTIONSCREEN POSITION 53.
PARAMETERS: p_def_so TYPE mvkevkorg MODIF ID m5.
SELECTIONSCREEN POSITION 63.
PARAMETERS: p_def_d TYPE mvkevtweg MODIF ID m5.
SELECTIONSCREEN POSITION 70.
PARAMETERS: p_def_v TYPE mbewbwkey MODIF ID m5.
SELECTIONSCREEN POSITION 79.
PARAMETERS: p_def_w TYPE mlgnlgnum MODIF ID m5.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN END OF BLOCK block4.
SELECTIONSCREEN BEGIN OF BLOCK block5 WITH FRAME TITLE text057.
PARAMETERS: p_path TYPE rlgrapfilename MODIF ID m2.
SELECTIONSCREEN END OF BLOCK block5.
*Begin of insertion SAPP6202
SELECTIONSCREEN BEGIN OF BLOCK block6 WITH FRAME TITLE text141.
PARAMETERS: p_werks TYPE werks_d MODIF ID m6.
PARAMETERS: p_ecm TYPE aenraennr MODIF ID m6.
PARAMETERS: p_dokar TYPE drawdokar MODIF ID m6,
p_doktl TYPE drawdoktl MODIF ID m6,
p_labor TYPE maralabor MODIF ID m6,
p_dappl TYPE drawdappl MODIF ID m6 DEFAULT 'URL'.
SELECTOPTIONS: s_ecm_s FOR s_aenraennr NO INTERVALS MODIF ID m6.
SELECTIONSCREEN: SKIP 1.
SELECTOPTIONS: s_dirmat FOR s_maramatnr MODIF ID m6.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN POSITION 1.
SELECTIONSCREEN: COMMENT 20(4) text147 MODIF ID m6.
SELECTIONSCREEN END OF LINE.
PARAMETERS: p_file TYPE rlgrapfilename MODIF ID m6.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN: COMMENT 1(70) text148 MODIF ID m6.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN: COMMENT 1(78) text158 MODIF ID m6.
SELECTIONSCREEN END OF LINE.
SELECTIONSCREEN BEGIN OF LINE.
SELECTIONSCREEN: COMMENT 1(78) text159 MODIF ID m6.
SELECTIONSCREEN END OF LINE.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 17/124
3/21/2015 Gmail bom extend JCI program kodu
SELECTIONSCREEN END OF BLOCK block6.
*End of insertion SAPP6202
*Macro definition for building the Field catalog
DEFINE mcat.
clear gs_fieldcat.
gs_fieldcatfieldname = &1.
gs_fieldcatjust = 'C'.
gs_fieldcatseltext = &2.
gs_fieldcatcoltext = &3.
append gs_fieldcat to gt_fieldcat.
ENDOFDEFINITION.
DEFINE mcat1.
clear ls_int_head.
ls_int_headfield1 = &1.
append ls_int_head to lt_int_head.
ENDOFDEFINITION.
DEFINE mcat2.
clear gs_fieldcat_bom.
gs_fieldcat_bomfieldname = &1.
gs_fieldcat_bomjust = 'C'.
gs_fieldcat_bomseltext_l = &2.
append gs_fieldcat_bom to gt_fieldcat_bom.
ENDOFDEFINITION.
DEFINE mcat3.
clear gs_fieldcat_ext_bom.
gs_fieldcat_ext_bomfieldname = &1.
gs_fieldcat_ext_bomjust = 'C'.
gs_fieldcat_ext_bomseltext_l = &2.
append gs_fieldcat_ext_bom to gt_fieldcat_ext_bom.
ENDOFDEFINITION.
***********************************************************************
*Initialization
***********************************************************************
INITIALIZATION.
s_bomusesign = 'I'.
s_bomuseoption = 'EQ'.
s_bomuselow = '2'.
APPEND s_bomuse.
s_bom_esign = 'I'.
s_bom_eoption = 'EQ'.
s_bom_elow = '2'.
APPEND s_bom_e.
***********************************************************************
*To create dynamic selection screen
***********************************************************************
AT SELECTIONSCREEN OUTPUT.
IF p_mat_e EQ gc_x.
CLEAR: p_bom_e,p_bom_p.
ENDIF.
IF p_bom_e EQ gc_x.
CLEAR: p_mat_e,p_bom_p.
ENDIF.
IF p_bom_p EQ gc_x.
CLEAR: p_mat_e,p_bom_e.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 18/124
3/21/2015 Gmail bom extend JCI program kodu
LOOP AT SCREEN.
IF r_materl EQ gc_x.
IF screengroup1 EQ 'M1'.
screeninput = 1.
screeninvisible = 0.
ENDIF.
IF screengroup1 EQ 'M2'.
screeninput = 0.
screeninvisible = 1.
ENDIF.
IF screengroup1 EQ 'M5'.
screeninput = 0.
screeninvisible = 1.
ENDIF.
IF p_bomid IS INITIAL.
CLEAR : p_mat_in,p_sub.
IF screengroup1 EQ 'M1' AND
( screenname CP '*P_MAT_IN*' OR
screenname CP '*P_SUB*' OR
screenname EQ '%C130019_1000' OR
screenname CP '*P_BOM_A*' ).
screenactive = 0.
screeninvisible = 1.
ENDIF.
ENDIF.
IF p_matid IS NOT INITIAL AND
p_mat_in IS INITIAL AND
p_bomid IS INITIAL AND
p_sub IS INITIAL.
IF screengroup1 EQ 'M1' AND
screenname CP '*BOMUSE*'.
screenactive = 0.
screeninvisible = 1.
ENDIF.
ENDIF.
*Begin of insertion SAPP6202
IF screengroup1 EQ 'M6'.
screeninput = 0.
screeninvisible = 1.
ENDIF.
*End of insertion SAPP6202
ELSEIF r_plantx EQ gc_x.
IF screengroup1 EQ 'M1'.
screeninput = 0.
screeninvisible = 1.
ENDIF.
IF screengroup1 EQ 'M2'.
screeninput = 1.
screeninvisible = 0.
ENDIF.
IF p_bom_e IS NOT INITIAL.
IF screengroup1 EQ 'M5'.
screenactive = 0.
screeninvisible = 1.
ENDIF.
ELSEIF p_bom_p IS NOT INITIAL.
IF screengroup1 EQ 'M5'.
screenactive = 0.
screeninvisible = 1.
ENDIF.
IF screengroup1 EQ 'M2' AND
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 19/124
3/21/2015 Gmail bom extend JCI program kodu
( screenname CP '*P_BOM*T*' OR
screenname CP '*P_ECM*T*' OR
screenname CP '*P_APP*B*' OR
screenname CP '*P_PATH*' OR
screenname CP '*P_ALT_D*' ). "INS SAPP4600
screenactive = 0.
screeninvisible = 1.
ENDIF.
ELSE.
IF screengroup1 EQ 'M2' AND
( screenname CP '*P_BOM*T*' OR
screenname CP '*P_ALT_D*' ). "INS SAPP4600
screenactive = 0.
screeninvisible = 1.
ENDIF.
ENDIF.
*Begin of insertion SAPP6202
IF screengroup1 EQ 'M6'.
screenactive = 0.
screeninvisible = 1.
ENDIF.
ELSE.
IF screengroup1 EQ 'M1' OR screengroup1 EQ 'M2' OR
screengroup1 EQ 'M3' OR screengroup1 EQ 'M4' OR
screengroup1 EQ 'M5'.
screenactive = 0.
screeninvisible = 1.
ENDIF.
*End of insertion SAPP6202
ENDIF.
MODIFY SCREEN.
ENDLOOP.
**********************************************************************
*F4 help for user to select MAPICS plant
**********************************************************************
AT SELECTIONSCREEN ON VALUEREQUEST FOR p_plantm.
*Select the entries from zgtp2p_map_plant
REFRESH: gt_map_plant[].
SELECT * FROM zgtp2p_map_plant
INTO TABLE gt_map_plant.
*Call the F4 help FM
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = gc_plant
dynpprog = gc_prog
dynpnr = '100'
dynprofield = gc_dyn_fd
value_org = 'S'
TABLES
value_tab = gt_map_plant
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sysubrc <> 0.
MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 20/124
3/21/2015 Gmail bom extend JCI program kodu
AT SELECTIONSCREEN ON VALUEREQUEST FOR p_path.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = systcprog
dynpro_number = systdynnr
field_name = 'P_PATH'
IMPORTING
file_name = p_path.
*Begin of insertion SAPP6202
AT SELECTIONSCREEN ON VALUEREQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = systcprog
dynpro_number = systdynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
*End of insertion SAPP6202
********************************************************************
*Start of Selection
STARTOFSELECTION.
********************************************************************
*If interface option is selected then proceed with the IDoc
IF r_materl EQ gc_x.
*Plant Validations for SAP Plant and MAPICS Plant
IF p_plantm IS INITIAL.
MESSAGE text009 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_plants IS INITIAL.
MESSAGE text008 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
*Material and ECM validations
IF s_matnr IS INITIAL AND s_ecm IS INITIAL.
MESSAGE text004 TYPE gc_s DISPLAY LIKE gc_e .
EXIT.
ENDIF.
*User should select atleast one option
IF p_matid IS INITIAL AND p_bomid IS INITIAL AND p_sub IS INITIAL.
MESSAGE text007 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
*Error message for BOM usage
IF p_bomid IS NOT INITIAL OR p_sub IS NOT INITIAL.
IF s_bomuse IS INITIAL.
MESSAGE text038 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
*Error message for BOM application
IF p_bomid IS NOT INITIAL OR p_sub IS NOT INITIAL.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 21/124
3/21/2015 Gmail bom extend JCI program kodu
IF p_bom_a IS INITIAL.
MESSAGE text131 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
*Auth check for plant
IF p_matid EQ gc_x.
CLEAR: gv_werks.
SELECT SINGLE werks FROM t001w
INTO gv_werks
WHERE werks = p_plants.
IF sysubrc = 0.
AUTHORITYCHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD gv_werks.
IF sysubrc <> 0.
MESSAGE e021 WITH p_plants.
ENDIF.
ELSE.
MESSAGE e022 WITH p_plants.
ENDIF.
ENDIF.
IF p_sub EQ gc_x OR p_bomid EQ gc_x .
CLEAR: gv_werks.
SELECT SINGLE werks FROM t001w
INTO gv_werks
WHERE werks = p_plants.
IF sysubrc = 0.
AUTHORITYCHECK OBJECT 'C_STUE_WRK'
ID 'ACTVT' FIELD '03'
ID 'CSWRK' FIELD gv_werks.
IF sysubrc <> 0.
MESSAGE e021 WITH p_plants.
ENDIF.
ELSE.
MESSAGE e022 WITH p_plants.
ENDIF.
ENDIF.
*If Material interface IDoc is selected, then follow these steps
IF p_matid EQ gc_x.
REFRESH: gt_edidd[], gt_edidc[].
CLEAR: gs_edidc, gv_mess_type.
*Populate control record for Material
gv_mess_type = gc_m.
PERFORM generate_control_record.
PERFORM populate_data_record_mat.
ENDIF.
IF p_sub EQ gc_x OR p_bomid EQ gc_x .
REFRESH: gt_edidd[], gt_edidc[].
CLEAR: gs_edidc, gv_mess_type.
*Populate control record for BOM
gv_mess_type = gc_b.
PERFORM generate_control_record.
PERFORM populate_data_record_bom.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 22/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
*To display ALV GRID
IF gt_messages[] IS NOT INITIAL.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv.
ENDIF.
ENDIF.
IF r_plantx EQ gc_x.
REFRESH: gt_messages[].
*Plant Validations for SAP source and Target Plant
IF p_plnt_e IS INITIAL.
MESSAGE text023 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_plnt_t IS INITIAL.
MESSAGE text024 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
*Material validation
IF s_mats_e IS INITIAL AND s_ecm_e IS INITIAL.
MESSAGE text004 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_bom_e EQ gc_x OR
p_bom_p EQ gc_x.
IF s_bom_e IS INITIAL.
MESSAGE text042 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_ecm_t IS INITIAL.
MESSAGE text052 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
*** BEGIN OF INSERTION SAPP4600
IF p_bom_e EQ gc_x.
IF p_alt_c IS NOT INITIAL AND p_alt_d IS NOT INITIAL AND
p_ecm_t IS NOT INITIAL.
REFRESH: gt_aedt.
SELECT * FROM aedt
INTO TABLE gt_aedt
WHERE aennr = p_ecm_t
AND datuv = p_alt_d.
IF sysubrc NE 0.
MESSAGE text140 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
ENDIF.
*** END OF INSERTION SAPP4600
*Auth Object check for Plant
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 23/124
3/21/2015 Gmail bom extend JCI program kodu
IF p_mat_e EQ gc_x.
CLEAR: gv_werks.
SELECT SINGLE werks FROM t001w
INTO gv_werks
WHERE werks = p_plnt_t.
IF sysubrc = 0.
AUTHORITYCHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '01'
ID 'WERKS' FIELD gv_werks.
IF sysubrc <> 0.
AUTHORITYCHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '02'
ID 'WERKS' FIELD gv_werks.
IF sysubrc <> 0.
MESSAGE e021 WITH p_plnt_t.
ENDIF.
ENDIF.
ELSE.
MESSAGE e022 WITH p_plnt_t.
ENDIF.
ENDIF.
IF p_bom_e EQ gc_x OR
p_bom_p EQ gc_x.
CLEAR: gv_werks.
SELECT SINGLE werks FROM t001w
INTO gv_werks
WHERE werks = p_plnt_t.
IF sysubrc = 0.
AUTHORITYCHECK OBJECT 'C_STUE_WRK'
ID 'ACTVT' FIELD '01'
ID 'CSWRK' FIELD gv_werks.
IF sysubrc <> 0.
AUTHORITYCHECK OBJECT 'C_STUE_WRK'
ID 'ACTVT' FIELD '02'
ID 'CSWRK' FIELD gv_werks.
IF sysubrc <> 0.
MESSAGE e021 WITH p_plnt_t.
ENDIF.
ENDIF.
ELSE.
MESSAGE e022 WITH p_plnt_t.
ENDIF.
ENDIF.
*Logic to extend the material to a plant
IF p_mat_e EQ gc_x.
IF p_bom_in EQ gc_x.
IF s_bom_e IS INITIAL.
MESSAGE text042 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
IF p_bom_in EQ gc_x.
IF p_app_b IS INITIAL.
MESSAGE text131 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
PERFORM fetch_marc_data.
PERFORM populate_final_alv_table.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 24/124
3/21/2015 Gmail bom extend JCI program kodu
*logic to extend the BOM
IF p_bom_e EQ gc_x.
IF p_app_b IS INITIAL.
MESSAGE text131 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
PERFORM extend_bom_to_target_plant.
ENDIF.
*logic for plant assignment to BOM
IF p_bom_p EQ gc_x.
PERFORM assign_bom_to_target_plant.
ENDIF.
ENDIF.
*Begin of insertion SAPP6202
IF r_doc EQ gc_x.
IF p_werks IS INITIAL.
MESSAGE text142 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
CLEAR: gv_werks.
SELECT SINGLE werks FROM t001w
INTO gv_werks
WHERE werks = p_werks.
IF sysubrc = 0.
AUTHORITYCHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '01'
ID 'WERKS' FIELD gv_werks.
IF sysubrc <> 0.
AUTHORITYCHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '02'
ID 'WERKS' FIELD gv_werks.
IF sysubrc <> 0.
MESSAGE text143 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
ELSE.
MESSAGE s022 WITH p_werks DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_ecm IS INITIAL.
MESSAGE text145 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_dokar IS INITIAL.
MESSAGE text146 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_labor IS INITIAL.
MESSAGE text161 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ELSE.
CLEAR: gv_labor.
SELECT SINGLE labor
FROM t024l INTO gv_labor
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 25/124
3/21/2015 Gmail bom extend JCI program kodu
WHERE labor EQ p_labor.
IF sysubrc NE 0.
MESSAGE text162 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
IF s_dirmat IS INITIAL AND p_file IS INITIAL AND s_ecm_s IS INITIAL.
MESSAGE text144 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF s_dirmat IS NOT INITIAL AND p_file IS NOT INITIAL.
MESSAGE text144 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF p_file IS NOT INITIAL.
gv_length = STRLEN( p_file ).
gv_length = gv_length 4.
WRITE p_file+gv_length(4) TO gv_type.
TRANSLATE gv_type TO UPPER CASE.
IF gv_type NS 'XLS'.
MESSAGE text150 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDIF.
PERFORM f_data_retrieval.
ENDIF.
*End of insertion SAPP6202
*&*
*& Form GENERATE_CONTROL_RECORD
*&*
* text
**
* > p1 text
* < p2 text
**
FORM generate_control_record .
DATA lv_send TYPE c.
*Populate the control records
IF gv_mess_type EQ gc_m.
*Populate message type and IDoc type for Material Idoc
gs_edidcmestyp = gc_mestyp1. "Message type
gs_edidcidoctp = gc_idoctp1. "Basic IDOC type
* Check if an IDoc has to be created, read the distribution model
CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'
EXPORTING
message_type = gc_mestyp1
IMPORTING
idoc_must_be_sent = lv_send
EXCEPTIONS
own_system_not_defined = 1
OTHERS = 2.
IF sysubrc NE 0 OR lv_send IS INITIAL.
* no message flow maintained in the model, nothing to do
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 26/124
3/21/2015 Gmail bom extend JCI program kodu
EXIT.
ENDIF.
ELSEIF gv_mess_type EQ gc_b.
*Populate message type and Idoc type for BOM Idoc
gs_edidcmestyp = gc_mestyp2. "Message type
gs_edidcidoctp = gc_idoctp2. "Basic IDOC type
* Check if an IDoc has to be created, read the distribution model
CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'
EXPORTING
message_type = gc_mestyp2
IMPORTING
idoc_must_be_sent = lv_send
EXCEPTIONS
own_system_not_defined = 1
OTHERS = 2.
IF sysubrc NE 0 OR lv_send IS INITIAL.
* no message flow maintained in the model, nothing to do
EXIT.
ENDIF.
ENDIF.
ENDFORM. " GENERATE_CONTROL_RECORD
*&*
*& Form SEND_IDOC
*&*
* text
**
* > p1 text
* < p2 text
**
FORM send_idoc." USING p_matnr.
*To send Idoc
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = gs_edidc
* OBJ_TYPE = ''
* CHNUM = ''
TABLES
communication_idoc_control = gt_edidc
master_idoc_data = gt_edidd
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5.
IF sysubrc <> 0.
LOOP AT gt_allmat INTO gs_allmat.
CLEAR:gs_messages.
gs_messagesmatnr = gs_allmatmatnr.
gs_messageszp2f_oldmat = gs_allmatl_matnr.
gs_messagesicon = '@0A@'.
gs_messageswerks = p_plants.
IF gv_mess_type EQ gc_m.
gs_messagesmessage = text030.
ELSE.
gs_messagesmessage = text031.
ENDIF.
APPEND gs_messages TO gt_messages.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 27/124
3/21/2015 Gmail bom extend JCI program kodu
ENDLOOP.
REFRESH: gt_allmat.
ELSE.
COMMIT WORK AND WAIT.
CALL FUNCTION 'DEQUEUE_ALL'
EXPORTING
_synchron = 'E'.
*To the final output
CLEAR:gs_messages.
READ TABLE gt_edidc INTO gs1_edidc INDEX 1.
IF sysubrc EQ 0.
LOOP AT gt_allmat INTO gs_allmat.
gs_messageswerks = p_plants.
gs_messagesdocnum = gs1_edidcdocnum.
gs_messagesmatnr = gs_allmatmatnr.
gs_messageszp2f_oldmat = gs_allmatl_matnr.
IF gs1_edidcstatus EQ '02' OR gs1_edidcstatus EQ '04' OR
gs1_edidcstatus EQ '05' OR gs1_edidcstatus EQ '26' OR
gs1_edidcstatus EQ '29' OR gs1_edidcstatus EQ '31' OR
gs1_edidcstatus EQ '37' OR gs1_edidcstatus EQ '51' OR
gs1_edidcstatus EQ '56' OR gs1_edidcstatus EQ '60' OR
gs1_edidcstatus EQ '61' OR gs1_edidcstatus EQ '63' OR
gs1_edidcstatus EQ '65'.
gs_messagesicon = '@0A@'.
IF gv_mess_type EQ gc_m.
gs_messagesmessage = text034.
ELSE.
gs_messagesmessage = text035.
ENDIF.
ELSE.
gs_messagesicon = '@08@'.
IF gv_mess_type EQ gc_m.
gs_messagesmessage = text032.
ELSE.
gs_messagesmessage = text033.
ENDIF.
ENDIF.
APPEND gs_messages TO gt_messages.
ENDLOOP.
REFRESH: gt_allmat.
ENDIF.
ENDIF.
REFRESH: gt_edidc, gt_allmat..
ENDFORM. " SEND_IDOC
*&*
*& Form POPULATE_DATA_RECORD
*&*
* text
**
* > p1 text
* < p2 text
**
FORM populate_data_record_mat.
DATA: lv_mcount TYPE i,
lv_atnam TYPE zgtp2f_plantcharatnam,
lv_atinn TYPE auspatinn,
lv_objkt TYPE aeoiobjkt,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 28/124
3/21/2015 Gmail bom extend JCI program kodu
lv_aennr TYPE aenraennr,
lv_revlv TYPE aeoirevlv,
lv_atinn_old TYPE auspatinn,
lv_count_dwg TYPE i,
lv_dwg TYPE c,
lv_multi TYPE c,
lv_rest(9999) TYPE c, "INS SAPP5375
lv_strlen TYPE i. "INS SAPP5375
*** BEGIN OF INSERTION SAPP4600
DATA : lt_class TYPE STANDARD TABLE OF sclass,
lt_objectdata TYPE STANDARD TABLE OF clobjdat.
DATA : ls_objectdata TYPE clobjdat,
lv_objek TYPE auspobjek.
CONSTANTS : lc_ques TYPE c VALUE '?',
lc_class TYPE klahclass VALUE 'ECM_LEGACY_ECN',
lc_klart TYPE klahklart VALUE '025',
lc_obtab TYPE tclaobtab VALUE 'AENR'.
*** END OF INSERTION SAPP4600
REFRESH: gt_aeoi, gt_marc, gt_mara, gt_makt,
gt_drad_draw, gt_ausp, gt_cdhdr.
*Select data from AEOI table for the input ECM
IF s_ecm IS NOT INITIAL.
SELECT aennr
objkt
revlv
FROM aeoi INTO TABLE gt_aeoi
WHERE aetyp = '41'
AND aennr IN s_ecm.
IF gt_aeoi[] IS NOT INITIAL.
*To get the latest version
SORT gt_aeoi DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_aeoi
COMPARING aennr objkt.
ENDIF.
ENDIF.
*Select the required data from MARC, if material number and ecm number
*given
IF s_matnr IS NOT INITIAL.
*If you get data from AEOI, then fetch the data from MARC
IF gt_aeoi[] IS NOT INITIAL.
SELECT matnr
werks
beskz
zptyp
ausme
sobsl
zp2f_oldmat
FROM marc INTO TABLE gt_marc
FOR ALL ENTRIES IN gt_aeoi
WHERE matnr = gt_aeoiobjkt
AND werks = p_plants
AND matnr IN s_matnr.
ENDIF.
*If ecm number is initial then use only material number
IF s_ecm IS INITIAL.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 29/124
3/21/2015 Gmail bom extend JCI program kodu
SELECT matnr
werks
beskz
zptyp
ausme
sobsl
zp2f_oldmat
FROM marc INTO TABLE gt_marc
WHERE werks = p_plants
AND matnr IN s_matnr.
ENDIF.
ELSE.
*If material number is initial
IF gt_aeoi[] IS NOT INITIAL.
SELECT matnr
werks
beskz
zptyp
ausme
sobsl
zp2f_oldmat
FROM marc INTO TABLE gt_marc
FOR ALL ENTRIES IN gt_aeoi
WHERE matnr = gt_aeoiobjkt
AND werks = p_plants.
ENDIF.
ENDIF.
*Logic to check BOM compoents to include in the Material IDoc
IF p_sub EQ gc_x OR p_bomid EQ gc_x .
IF p_mat_in EQ gc_x.
REFRESH: gt_aeoi_bom.
*Get the BOM related objects from AEOI
IF s_ecm IS NOT INITIAL.
SELECT aennr
objkt
FROM aeoi
INTO CORRESPONDING FIELDS OF TABLE gt_aeoi_bom
WHERE aetyp = '02'
AND aennr IN s_ecm.
ENDIF.
*To remove M from the objkt key
LOOP AT gt_aeoi_bom INTO gs_aeoi_bom.
gs_aeoi_bomstlnr = gs_aeoi_bomobjkt+1(8).
MODIFY gt_aeoi_bom FROM gs_aeoi_bom.
ENDLOOP.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_bom_final.
IF gt_aeoi_bom[] IS NOT INITIAL.
SELECT a~matnr
a~stlan
b~zp2f_oldmat
a~matnr
INTO TABLE gt_bom_final
FROM mast AS a
INNER JOIN marc AS b
ON a~matnr = b~matnr AND
a~werks = b~werks
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 30/124
3/21/2015 Gmail bom extend JCI program kodu
FOR ALL ENTRIES IN gt_aeoi_bom
WHERE a~stlnr = gt_aeoi_bomstlnr
AND a~werks = p_plants
AND a~matnr IN s_matnr
AND a~stlan IN s_bomuse.
ELSEIF s_matnr IS NOT INITIAL.
SELECT a~matnr
a~stlan
b~zp2f_oldmat
a~matnr
INTO TABLE gt_bom_final
FROM mast AS a
INNER JOIN marc AS b
ON a~matnr = b~matnr AND
a~werks = b~werks
WHERE a~werks = p_plants
AND a~matnr IN s_matnr
AND a~stlan IN s_bomuse.
ENDIF.
IF gt_bom_final IS NOT INITIAL.
SORT gt_bom_final.
DELETE ADJACENT DUPLICATES FROM gt_bom_final
COMPARING ALL FIELDS.
ENDIF.
*Get multi level BOm components
IF p_sub EQ gc_x.
lv_multi = gc_x.
ELSE.
CLEAR: lv_multi.
ENDIF.
*To get BOM components in Multi levels
REFRESH: gt_stb_mat.
LOOP AT gt_bom_final INTO gs_bom_final.
REFRESH: gt_stb.
*Call FM to get multi level BOM explosion
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumgb = 'X'
capid = p_bom_a
datuv = sydatum
ehndl = '1'
mbwls = 'X'
mehrs = lv_multi
mmory = '1'
mtnrv = gs_bom_finalmatnr
werks = p_plants
vrsvo = 'X'
stlan = gs_bom_finalstlan
* IMPORTING
* topmat =
TABLES
stb = gt_stb
* matcat =
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 31/124
3/21/2015 Gmail bom extend JCI program kodu
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
APPEND LINES OF gt_stb TO gt_stb_mat.
ENDLOOP.
*Select data from MARC table for all the components
IF gt_stb_mat[] IS NOT INITIAL.
SORT gt_stb_mat BY idnrk.
DELETE ADJACENT DUPLICATES FROM gt_stb_mat
COMPARING idnrk.
SELECT matnr
werks
beskz
zptyp
ausme
sobsl
zp2f_oldmat
FROM marc APPENDING TABLE gt_marc
FOR ALL ENTRIES IN gt_stb_mat
WHERE matnr = gt_stb_matidnrk
AND werks = p_plants.
ENDIF.
ENDIF.
ENDIF.
IF gt_marc[] IS NOT INITIAL.
SORT gt_marc.
DELETE ADJACENT DUPLICATES FROM gt_marc
COMPARING ALL FIELDS.
*Get mara data for all entries in MARC
SELECT matnr
mtart
meins
brgew
gewei
zzglat
datab
kzumw
matnr
FROM mara INTO TABLE gt_mara
FOR ALL ENTRIES IN gt_marc
WHERE matnr = gt_marcmatnr.
IF gt_mara[] IS NOT INITIAL.
SORT gt_mara.
DELETE ADJACENT DUPLICATES FROM gt_mara
COMPARING ALL FIELDS.
*Fetching Latest ECM number for all Materials
CLEAR: lv_atnam.
SELECT SINGLE atnam
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 32/124
3/21/2015 Gmail bom extend JCI program kodu
FROM zgtp2f_plantchar
INTO lv_atnam
WHERE werks = p_plants.
REFRESH gt_matnr_tmp[].
CLEAR: gs_matnr_tmp,gs_mara.
LOOP AT gt_mara INTO gs_mara.
gs_matnr_tmpobjkt = gs_maramatnr1.
APPEND gs_matnr_tmp TO gt_matnr_tmp.
CLEAR: gs_matnr_tmp,gs_mara.
ENDLOOP.
REFRESH gt_aeoi_tmp[].
SELECT aennr
aetyp
objkt
andat
FROM aeoi INTO TABLE gt_aeoi_tmp
FOR ALL ENTRIES IN gt_matnr_tmp
WHERE aetyp EQ '41'
AND objkt EQ gt_matnr_tmpobjkt.
IF sysubrc EQ 0.
SORT gt_aeoi_tmp BY objkt aennr andat DESCENDING.
ENDIF.
IF s_ecm IS NOT INITIAL.
LOOP AT gt_mara INTO gs_mara.
READ TABLE gt_aeoi INTO gs_aeoi
WITH KEY objkt = gs_maramatnr.
IF sysubrc EQ 0.
gs_maraecm = gs_aeoiaennr.
gs_maraecm1 = gs_aeoiaennr.
ENDIF.
MODIFY gt_mara FROM gs_mara.
ENDLOOP.
ELSE.
CLEAR gs_mara.
LOOP AT gt_mara INTO gs_mara.
CLEAR gs_aeoi_tmp.
READ TABLE gt_aeoi_tmp INTO gs_aeoi_tmp
WITH KEY objkt = gs_maramatnr.
IF sysubrc EQ 0.
gs_maraecm = gs_aeoi_tmpaennr.
gs_maraecm1 = gs_aeoi_tmpaennr.
ENDIF.
MODIFY gt_mara FROM gs_mara.
CLEAR:gs_mara,gs_aeoi_tmp.
ENDLOOP.
ENDIF.
*Get the values from INOB table,
*For CODE INSPECTOR Message: we can't give cuobj in where condition
*because we are fetching cuobj as a result
SELECT cuobj
objek
FROM inob INTO TABLE gt_inob
FOR ALL ENTRIES IN gt_mara
WHERE klart = '025'
AND objek = gt_maraecm.
IF sysubrc EQ 0.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 33/124
3/21/2015 Gmail bom extend JCI program kodu
DELETE ADJACENT DUPLICATES FROM gt_inob
COMPARING ALL FIELDS.
ENDIF.
*Getting ECM characteristics
CLEAR lv_atinn.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = lv_atnam
IMPORTING
output = lv_atinn.
IF gt_inob[] IS NOT INITIAL.
REFRESH: gt_ecm_ausp.
SELECT objek
atinn
atwrt
FROM ausp INTO TABLE gt_ecm_ausp
FOR ALL ENTRIES IN gt_inob
WHERE objek = gt_inobcuobj
AND atinn = lv_atinn
AND klart = '025'.
ENDIF.
REFRESH: gt_aenr.
SELECT aennr
datuv
FROM aenr INTO TABLE gt_aenr
FOR ALL ENTRIES IN gt_mara
WHERE aennr = gt_maraecm1.
*Get MAKTX data for all entries in MARA
SELECT matnr
maktx
spras
FROM makt INTO TABLE gt_makt
FOR ALL ENTRIES IN gt_marc
WHERE matnr = gt_marcmatnr.
IF sysubrc EQ 0.
SORT gt_makt.
ENDIF.
*This logic is to populate Revision level
SELECT * FROM zgtp2f_doc_revlv
INTO TABLE gt_doc_part
WHERE werks = p_plants.
IF sysubrc EQ 0.
SORT gt_doc_part ASCENDING BY zprio.
READ TABLE gt_doc_part INTO gs_doc_part INDEX 1.
gv_doc_part = gs_doc_partdoktl.
ELSE.
gv_doc_part = 'GBL'.
ENDIF.
*Fetch ATWRT , Use DRAD, DRAW and AUSP tables
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 34/124
3/21/2015 Gmail bom extend JCI program kodu
a~obzae
a~objky
b~dokst INTO TABLE gt_drad_draw
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_mara
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_maramatnr
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'MRL' .
IF gt_drad_draw[] IS NOT INITIAL.
SORT gt_drad_draw DESCENDING BY objky dokvr doknr .
DELETE ADJACENT DUPLICATES FROM gt_drad_draw
COMPARING objky doknr.
*Populate OBJNUM field to get data from AUSP
LOOP AT gt_drad_draw INTO gs_drad_draw.
CONCATENATE gs_drad_drawdokar gs_drad_drawdoknr
gs_drad_drawdokvr gs_drad_drawdoktl
INTO gs_drad_drawobjnum.
CONDENSE gs_drad_drawobjnum NOGAPS.
MODIFY gt_drad_draw FROM gs_drad_draw.
ENDLOOP.
ENDIF.
REFRESH: gt_drad_draw_new.
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
a~obzae
a~objky
b~dokst
b~aennr INTO TABLE gt_drad_draw_new
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_mara
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_maramatnr
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'MRL' .
*Populate OBJNUM field to get data from AUSP
SORT gt_drad_draw_new DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_new
COMPARING objky doknr.
LOOP AT gt_drad_draw_new INTO gs_drad_draw_new.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 35/124
3/21/2015 Gmail bom extend JCI program kodu
CONCATENATE gs_drad_draw_newdokar gs_drad_draw_newdoknr
gs_drad_draw_newdoktl gs_drad_draw_newdokvr
INTO gs_drad_draw_newobjnum.
CONDENSE gs_drad_draw_newobjnum NOGAPS.
MODIFY gt_drad_draw_new FROM gs_drad_draw_new.
ENDLOOP.
*Populate ATWRT
CLEAR lv_atinn_old.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'OLDDIRNUMBER'
IMPORTING
output = lv_atinn_old.
REFRESH: gt_drad_draw_dwg.
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
a~obzae
a~objky
b~dokst
b~aennr INTO TABLE gt_drad_draw_dwg
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_mara
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_maramatnr
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'DWG' .
IF gt_drad_draw_dwg[] IS NOT INITIAL.
SORT gt_drad_draw_dwg DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_dwg
COMPARING objky doknr.
*Populate OBJNUM field to get data from AUSP
LOOP AT gt_drad_draw_dwg INTO gs_drad_draw_dwg.
CONCATENATE gs_drad_draw_dwgdokar gs_drad_draw_dwgdoknr
gs_drad_draw_dwgdokvr gs_drad_draw_dwgdoktl
INTO gs_drad_draw_dwgobjnum.
CONDENSE gs_drad_draw_dwgobjnum NOGAPS.
MODIFY gt_drad_draw_dwg FROM gs_drad_draw_dwg.
ENDLOOP.
SELECT objek
klart
atwrt
FROM ausp INTO TABLE gt_ausp_dwg
FOR ALL ENTRIES IN gt_drad_draw_dwg
WHERE objek = gt_drad_draw_dwgobjnum
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 36/124
3/21/2015 Gmail bom extend JCI program kodu
AND klart = '017'
AND atinn = lv_atinn_old.
SELECT doknr
dktxt
FROM drat INTO TABLE gt_drat
FOR ALL ENTRIES IN gt_drad_draw_dwg
WHERE dokar = gt_drad_draw_dwgdokar
AND doknr = gt_drad_draw_dwgdoknr
AND dokvr = gt_drad_draw_dwgdokvr
AND doktl = gt_drad_draw_dwgdoktl.
ENDIF.
*Populate ENGSTD
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
a~obzae
a~objky
b~dokst
b~aennr INTO TABLE gt_drad_draw_std
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_mara
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_maramatnr
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'STD' .
IF gt_drad_draw_std[] IS NOT INITIAL.
SORT gt_drad_draw_std DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_std
COMPARING objky doknr.
*Populate OBJNUM field to get data from AUSP
LOOP AT gt_drad_draw_std INTO gs_drad_draw_std.
CONCATENATE gs_drad_draw_stddokar gs_drad_draw_stddoknr
gs_drad_draw_stddokvr gs_drad_draw_stddoktl
INTO gs_drad_draw_stdobjnum.
CONDENSE gs_drad_draw_stdobjnum NOGAPS.
MODIFY gt_drad_draw_std FROM gs_drad_draw_std.
ENDLOOP.
SELECT objek
klart
atwrt
FROM ausp INTO TABLE gt_ausp_std
FOR ALL ENTRIES IN gt_drad_draw_std
WHERE objek = gt_drad_draw_stdobjnum
AND klart = '017'
AND atinn = lv_atinn_old.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 37/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
ENDIF.
ENDIF.
*Error message when no data found
IF gt_mara[] IS INITIAL.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmessage = text036.
APPEND gs_messages TO gt_messages.
ENDIF.
CLEAR: gs_mara, gs_ediddsegnum, lv_mcount.
LOOP AT gt_mara INTO gs_mara.
CLEAR: gs_maraseg, gs_marcseg, gs_maktseg.
gs_marasegmtart = gs_maramtart.
gs_marasegmeins = gs_marameins.
gs_marasegbrgew = gs_marabrgew.
gs_maraseggewei = gs_maragewei.
gs_marasegzzglat = gs_marazzglat.
gs_marasegkzumw = gs_marakzumw.
*Logic to populate ZLECN
READ TABLE gt_inob INTO gs_inob WITH KEY objek = gs_maraecm.
IF sysubrc EQ 0.
READ TABLE gt_ecm_ausp INTO gs_ecm_ausp WITH KEY objek =
gs_inobcuobj.
IF sysubrc EQ 0.
gs_marasegzlecn = gs_ecm_auspatwrt.
ENDIF.
ENDIF.
*Logic to populate DATUV
READ TABLE gt_aenr INTO gs_aenr WITH KEY aennr = gs_maraecm.
IF sysubrc EQ 0.
gs_marasegdatuv = gs_aenrdatuv.
ENDIF.
*Logic to populate Revision Level
REFRESH: gt_drad_draw_new1, gt_aenr_doc.
CLEAR: lv_aennr, lv_objkt, lv_revlv.
LOOP AT gt_drad_draw_new INTO gs_drad_draw_new
WHERE objky = gs_maramatnr.
APPEND gs_drad_draw_new TO gt_drad_draw_new1.
ENDLOOP.
IF gt_drad_draw_new1[] IS NOT INITIAL.
SELECT aennr
datuv
FROM aenr INTO TABLE gt_aenr_doc
FOR ALL ENTRIES IN gt_drad_draw_new1
WHERE aennr = gt_drad_draw_new1aennr.
ENDIF.
SORT gt_aenr_doc BY datuv DESCENDING.
CLEAR: gs_aenr_doc.
READ TABLE gt_aenr_doc INTO gs_aenr_doc INDEX 1.
lv_aennr = gs_aenr_docaennr.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 38/124
3/21/2015 Gmail bom extend JCI program kodu
READ TABLE gt_drad_draw_new INTO gs_drad_draw_new
WITH KEY objky = gs_maramatnr
aennr = lv_aennr.
IF sysubrc EQ 0.
lv_objkt = gs_drad_draw_newobjnum.
ENDIF.
*CODE INSPECTOR Message: We can't avoid this Select query, it should
*come inside the loop endloop only
SELECT SINGLE
revlv
FROM aeoi
INTO lv_revlv
WHERE aennr = lv_aennr
AND aetyp = '31'
AND objkt = lv_objkt.
*Populate MARC structure
READ TABLE gt_marc INTO gs_marc
WITH KEY matnr = gs_maramatnr.
IF sysubrc EQ 0.
gs_marcsegmwerks = p_plantm.
IF gs_marczp2f_oldmat IS NOT INITIAL .
gs_marcsegmatnr = gs_marczp2f_oldmat.
IF gs_marcsegmatnr+3(1) = ''.
gs_marcsegmatnr+3(1) = ' '.
ENDIF.
IF gs_marcsegmatnr+9(1) = ''.
gs_marcsegmatnr+9(1) = ' '.
ENDIF.
ELSE.
gs_marcsegmatnr = gs_maramatnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_marcsegmatnr
IMPORTING
output = gs_marcsegmatnr.
ENDIF.
gs_marcsegbeskz = gs_marcbeskz.
gs_marcsegzptyp = gs_marczptyp.
gs_marcsegsobsl = gs_marcsobsl.
gs_marcsegausme = gs_marcausme.
ENDIF.
gs_marcsegrevlv = lv_revlv.
*Populate MAKT structure
READ TABLE gt_makt INTO gs_makt
WITH KEY matnr = gs_maramatnr
spras = 'E'.
IF sysubrc EQ 0.
gs_maktsegmaktx = gs_maktmaktx.
ELSE.
READ TABLE gt_makt INTO gs_makt
WITH KEY matnr = gs_maramatnr.
IF sysubrc EQ 0.
gs_maktsegmaktx = gs_maktmaktx.
ENDIF.
ENDIF.
*To populate ENGSTD
READ TABLE gt_drad_draw_std INTO gs_drad_draw_std
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 39/124
3/21/2015 Gmail bom extend JCI program kodu
WITH KEY objky = gs_maramatnr.
IF sysubrc EQ 0.
READ TABLE gt_ausp_std INTO gs_ausp_std
WITH KEY objnum = gs_drad_draw_stdobjnum .
IF sysubrc EQ 0.
gs_marasegengstd = gs_ausp_stdatwrt.
ENDIF.
ENDIF.
*To populate ATWRT
REFRESH: gt_drad_draw_dwg1.
LOOP AT gt_drad_draw_dwg INTO gs_drad_draw_dwg
WHERE objky = gs_maramatnr.
APPEND gs_drad_draw_dwg TO gt_drad_draw_dwg1.
ENDLOOP.
SORT gt_drad_draw_dwg1 DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_dwg1
COMPARING objky doknr.
CLEAR lv_count_dwg. "INS SAPP4600
DESCRIBE TABLE gt_drad_draw_dwg1 LINES lv_count_dwg.
IF lv_count_dwg EQ 1.
*** BEGIN OF CHANGE SAPP4600
* CLEAR: lv_dwg.
CLEAR: gs_drad_draw_dwg1.
*** END OF CHANGE SAPP4600
READ TABLE gt_drad_draw_dwg1 INTO gs_drad_draw_dwg1 INDEX 1.
IF sysubrc EQ 0.
CLEAR gs_ausp_dwg. "INS SAPP4600
READ TABLE gt_ausp_dwg INTO gs_ausp_dwg
WITH KEY objnum = gs_drad_draw_dwg1objnum .
IF sysubrc EQ 0.
gs_marasegatwrt = gs_ausp_dwgatwrt.
IF gs_marasegatwrt+3(1) = ''.
gs_marasegatwrt+3(1) = ' '.
ENDIF.
IF gs_marasegatwrt+9(1) = ''.
gs_marasegatwrt+9(1) = ' '.
ENDIF.
CLEAR gs_ausp_dwg. "INS SAPP4600
ENDIF.
CLEAR gs_drad_draw_dwg1. "INS SAPP4600
ENDIF.
CLEAR lv_count_dwg. "INS SAPP4600
ELSEIF lv_count_dwg > 1.
*** BEGIN OF CHANGE SAPP4600
* lv_dwg = gc_x.
* CLEAR: gs_marasegatwrt.
CLEAR: gs_marasegatwrt,lv_count_dwg.
*** END OF CHANGE SAPP4600
ENDIF.
*** BEGIN OF INSERTION SAPP4600
IF gt_drad_draw_dwg1[] IS NOT INITIAL.
lv_dwg = gc_x.
ELSE.
CLEAR: lv_dwg, gs_marasegatwrt.
ENDIF.
*** END OF INSERTION SAPP4600
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 40/124
3/21/2015 Gmail bom extend JCI program kodu
gs_allmatmatnr = gs_maramatnr.
gs_allmatl_matnr = gs_marczp2f_oldmat.
APPEND gs_allmat TO gt_allmat.
*Append it to the IDoc structure
gs_ediddsegnam = gc_maraseg.
gs_ediddhlevel = '02'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_maraseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnam = gc_marcseg.
gs_ediddhlevel = '03'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_marcseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnam = gc_maktseg.
gs_ediddhlevel = '03'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_maktseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
*Populate MTXL structure
READ TABLE gt_drad_draw INTO gs_drad_draw
WITH KEY objky = gs_maramatnr.
IF sysubrc EQ 0.
CONCATENATE symandt gs_drad_drawobjnum
INTO gv_text.
CONDENSE gv_text NOGAPS.
*This logic is used to read the long text
REFRESH: gt_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = symandt
id = 'LTXT'
language = 'E'
name = gv_text
object = 'DRAT'
TABLES
lines = gt_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
CLEAR: gv_long.
LOOP AT gt_tline INTO gs_tline.
IF gv_long IS NOT INITIAL.
CONCATENATE gv_long gs_tlinetdline INTO gv_long
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 41/124
3/21/2015 Gmail bom extend JCI program kodu
SEPARATED BY '¶'.
ELSE.
gv_long = gs_tlinetdline.
ENDIF.
CONDENSE gv_long.
ENDLOOP.
*Logic to split the long text if more then 1000 char
gv_off_int = 0.
gv_off_len = 1000.
gv_str_len = STRLEN( gv_long ).
* Begin of insertion SAPP5375
IF gv_str_len > 1000.
lv_rest = gv_long.
lv_strlen = gv_str_len.
WHILE lv_strlen > 1000.
CALL FUNCTION 'TEXT_SPLIT'
EXPORTING
length = 1000
text = lv_rest
IMPORTING
line = gs_mtxlsegdktxt
rest = lv_rest.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
lv_strlen = STRLEN( lv_rest ).
ENDWHILE.
IF lv_rest IS NOT INITIAL.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_mtxlsegdktxt = lv_rest.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
ENDIF.
ELSEIF gv_long IS NOT INITIAL.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_mtxlsegdktxt = gv_long.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
ENDIF.
ENDIF.
gs_ediddsegnum = gs_ediddsegnum 1.
* End of insertion SAPP5375
* Begin of deletion SAPP5375
* IF gv_str_len < 1000.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 42/124
3/21/2015 Gmail bom extend JCI program kodu
* gv_off_len = gv_str_len.
* gv_str_flag = gc_x.
* ENDIF.
*
* DO.
* IF gv_off_int < gv_str_len.
* gs_mtxlsegdktxt = gv_long+gv_off_int(gv_off_len).
* ELSE.
* EXIT.
* ENDIF.
*
* gs_ediddsegnam = gc_mtxlseg.
* gs_ediddhlevel = '3'.
* gs_ediddsdata = gs_mtxlseg.
* APPEND gs_edidd TO gt_edidd.
* CLEAR: gs_mtxlseg.
*
* IF gv_str_flag EQ gc_x.
* EXIT.
* ELSE.
* gv_off_int = gv_off_int + gv_off_len.
* IF gv_off_int GE gv_str_len.
* EXIT.
* ENDIF.
* ENDIF.
* ENDDO.
*
* ENDIF.
*
* READ TABLE gt_edidd INTO gs_edidd WITH KEY segnam = gc_mtxlseg
* segnum = gs_ediddsegnum.
* IF sysubrc NE 0.
* CLEAR: gs_mtxlseg.
* gs_ediddsegnam = gc_mtxlseg.
* gs_ediddhlevel = '03'.
* gs_ediddsdata = gs_mtxlseg.
* APPEND gs_edidd TO gt_edidd.
* ENDIF.
* End of deletion SAPP5375
lv_mcount = lv_mcount + 1.
*** BEGIN OF INSERTION SAPP4600
*Fetch valid from date of ECM for DWG documents
REFRESH gt_aenr_doc_tmp[].
IF gt_drad_draw_dwg1[] IS NOT INITIAL.
SELECT aennr
datuv
FROM aenr INTO TABLE gt_aenr_doc_tmp
FOR ALL ENTRIES IN gt_drad_draw_dwg1
WHERE aennr = gt_drad_draw_dwg1aennr.
ENDIF.
*** END OF INSERTION SAPP4600
*This logic to populate the values if DWG documents Exist
IF lv_dwg EQ gc_x.
LOOP AT gt_drad_draw_dwg1 INTO gs_drad_draw_dwg1.
*To populate MATNR, Desc and Revision Level
CLEAR: gs_ausp_dwg, gs_marasegatwrt, gs_marcsegmatnr.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 43/124
3/21/2015 Gmail bom extend JCI program kodu
CLEAR gs_marasegmeins. "INS SAPP4454
*** BEGIN OF INSERTION SAPP4600
CLEAR: gs_marc_tmp,gs_marasegbrgew,gs_maraseggewei,
gs_marasegdatuv,gs_marasegzlecn,gs_marasegzzglat,
gs_marasegengstd,gs_marasegkzumw,gs_marcsegbeskz,
gs_marcsegzptyp,gs_marcsegsobsl,gs_marcsegausme.
*** END OF INSERTION SAPP4600
READ TABLE gt_ausp_dwg INTO gs_ausp_dwg
WITH KEY objnum = gs_drad_draw_dwg1objnum .
IF sysubrc EQ 0.
*** BEGIN OF INSERTION SAPP4600
*** If alternate material no and old dir no match,skip it
CLEAR gs_marc_tmp.
READ TABLE gt_marc INTO gs_marc_tmp
WITH KEY matnr = gs_drad_draw_dwg1objky.
IF sysubrc EQ 0.
IF NOT gs_marc_tmpzp2f_oldmat IS INITIAL AND
NOT gs_ausp_dwgatwrt IS INITIAL.
IF gs_marc_tmpzp2f_oldmat EQ gs_ausp_dwgatwrt.
CLEAR: gs_drad_draw_dwg1,gs_ausp_dwg,gs_marc_tmp.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
*** END OF INSERTION SAPP4600
gs_marcsegmatnr = gs_ausp_dwgatwrt.
gs_marasegatwrt = gs_ausp_dwgatwrt.
IF gs_marasegatwrt+3(1) = ''.
gs_marasegatwrt+3(1) = ' '.
ENDIF.
IF gs_marasegatwrt+9(1) = ''.
gs_marasegatwrt+9(1) = ' '.
ENDIF.
ENDIF.
READ TABLE gt_drat INTO gs_drat WITH KEY doknr =
gs_drad_draw_dwg1doknr.
IF sysubrc EQ 0.
gs_maktsegmaktx = gs_dratdktxt.
ELSE.
gs_maktsegmaktx = gs_ausp_dwgatwrt.
ENDIF.
*Logic to populate Revision Level
CLEAR: lv_objkt, lv_revlv.
CONCATENATE gs_drad_draw_dwg1dokar gs_drad_draw_dwg1doknr
gs_drad_draw_dwg1doktl gs_drad_draw_dwg1dokvr
INTO lv_objkt .
SELECT SINGLE
revlv
FROM aeoi
INTO lv_revlv
WHERE aennr = gs_drad_draw_dwg1aennr
AND aetyp = '31'
AND objkt = lv_objkt.
CLEAR: gs_marcsegrevlv.
gs_marcsegrevlv = lv_revlv.
*** BEGIN OF INSERTION SAPP4600
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 44/124
3/21/2015 Gmail bom extend JCI program kodu
CLEAR: gs_allmat.
READ TABLE gt_allmat INTO gs_allmat
WITH KEY matnr = gs_marcsegmatnr.
IF sysubrc EQ 0.
CONTINUE.
ELSE.
*** END OF INSERTION SAPP4600
CLEAR: gs_allmat.
gs_allmatmatnr = gs_marcsegmatnr.
APPEND gs_allmat TO gt_allmat.
ENDIF.
*** BEGIN OF CHANGE SAPP4454
* CLEAR: gs_marasegmeins.
IF gs_marcsegmatnr+3(1) = ''.
gs_marcsegmatnr+3(1) = ' '.
ENDIF.
IF gs_marcsegmatnr+9(1) = ''.
gs_marcsegmatnr+9(1) = ' '.
ENDIF.
gs_marasegmeins = 'PCS'.
*** END OF CHANGE SAPP4454
*** BEGIN OF INSERTION SAPP4600
*** Map Valid from Date and Legacy ECN fields from DWG DIR Change no
CLEAR gs_aenr_doc_tmp.
READ TABLE gt_aenr_doc_tmp INTO gs_aenr_doc_tmp
WITH KEY aennr = gs_drad_draw_dwg1aennr.
IF sysubrc EQ 0.
gs_marasegdatuv = gs_aenr_doc_tmpdatuv.
CLEAR gs_aenr_doc_tmp.
ENDIF.
REFRESH : lt_class[],lt_objectdata[].
CLEAR lv_objek.
IF NOT gs_drad_draw_dwg1aennr IS INITIAL.
lv_objek = gs_drad_draw_dwg1aennr.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
class = lc_class
* CLASSTEXT = 'X'
classtype = lc_klart
* CLINT = 0
* FEATURES = 'X'
* LANGUAGE = SYLANGU
object = lv_objek
objecttable = lc_obtab
* KEY_DATE = SYDATUM
* INITIAL_CHARACT = 'X'
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
* INHERITED_CHAR = ' '
* CHANGE_NUMBER = ' '
TABLES
t_class = lt_class
t_objectdata = lt_objectdata
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4
.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 45/124
3/21/2015 Gmail bom extend JCI program kodu
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ELSE.
CLEAR ls_objectdata.
READ TABLE lt_objectdata INTO ls_objectdata
WITH KEY atnam = lv_atnam.
IF NOT ls_objectdataausp1 IS INITIAL
AND NOT ls_objectdataausp1 EQ lc_ques.
gs_marasegzlecn = ls_objectdataausp1.
CLEAR ls_objectdata.
ENDIF.
ENDIF.
ENDIF.
gs_marasegbrgew = ' 0.000'.
*** END OF INSERTION SAPP4600
gs_ediddsegnam = gc_maraseg.
gs_ediddhlevel = '02'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_maraseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnam = gc_marcseg.
gs_ediddhlevel = '03'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_marcseg.
APPEND gs_edidd TO gt_edidd.
*** BEGIN OF INSERTION SAPP4600
***Precheck if DWG doc has long text,if so map second line as matdesc
CLEAR:gv_text. REFRESH: gt_tline.
CONCATENATE symandt gs_drad_draw_dwg1objnum
INTO gv_text.
CONDENSE gv_text NOGAPS.
*This logic is used to read the long text
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = symandt
id = 'LTXT'
language = 'E'
name = gv_text
object = 'DRAT'
TABLES
lines = gt_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ELSE.
CLEAR gs_tline.
READ TABLE gt_tline INTO gs_tline INDEX 2.
IF sysubrc EQ 0 AND
gs_tlinetdline IS NOT INITIAL.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 46/124
3/21/2015 Gmail bom extend JCI program kodu
gs_maktsegmaktx = gs_tlinetdline.
CLEAR gs_tline.
ENDIF.
ENDIF.
CLEAR gs_tline.
*** END OF INSERTION SAPP4600
gs_ediddsegnam = gc_maktseg.
gs_ediddhlevel = '03'.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsdata = gs_maktseg.
APPEND gs_edidd TO gt_edidd.
*BEGIN OF CHANGE SAPP4600
* CLEAR:gv_str_flag. REFRESH: gt_tline.
CLEAR:gv_str_flag,gv_text. REFRESH: gt_tline.
*END OF CHANGE SAPP4600
CONCATENATE symandt gs_drad_draw_dwg1objnum
INTO gv_text.
CONDENSE gv_text NOGAPS.
gs_ediddsegnum = gs_ediddsegnum + 1.
*This logic is used to read the long text
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = symandt
id = 'LTXT'
language = 'E'
name = gv_text
object = 'DRAT'
TABLES
lines = gt_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
CLEAR: gv_long.
LOOP AT gt_tline INTO gs_tline.
IF sytabix NE 1. "INS SAPP4600
IF gv_long IS NOT INITIAL.
CONCATENATE gv_long gs_tlinetdline INTO gv_long
SEPARATED BY '¶'.
ELSE.
gv_long = gs_tlinetdline.
ENDIF.
CONDENSE gv_long.
ENDIF. "INS SAPP4600
ENDLOOP.
*Logic to split the long text if more then 1000 char
gv_off_int = 0.
gv_off_len = 1000.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 47/124
3/21/2015 Gmail bom extend JCI program kodu
gv_str_len = STRLEN( gv_long ).
* Begin of insertion SAPP5375
IF gv_str_len > 1000.
lv_rest = gv_long.
lv_strlen = gv_str_len.
WHILE lv_strlen > 1000.
CALL FUNCTION 'TEXT_SPLIT'
EXPORTING
length = 1000
text = lv_rest
IMPORTING
line = gs_mtxlsegdktxt
rest = lv_rest.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
lv_strlen = STRLEN( lv_rest ).
ENDWHILE.
IF lv_rest IS NOT INITIAL.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_mtxlsegdktxt = lv_rest.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
ENDIF.
ELSEIF gv_long IS NOT INITIAL.
gs_ediddsegnam = gc_mtxlseg.
gs_ediddhlevel = '3'.
gs_mtxlsegdktxt = gv_long.
gs_ediddsdata = gs_mtxlseg.
APPEND gs_edidd TO gt_edidd.
gs_ediddsegnum = gs_ediddsegnum + 1.
CLEAR: gs_mtxlseg.
ENDIF.
gs_ediddsegnum = gs_ediddsegnum 1.
* End of insertion SAPP5375
* Begin of deletion SAPP5375
* IF gv_str_len < 1000.
* gv_off_len = gv_str_len.
* gv_str_flag = gc_x.
* ENDIF.
*
* DO.
* IF gv_off_int < gv_str_len.
* gs_mtxlsegdktxt = gv_long+gv_off_int(gv_off_len).
* ELSE.
* EXIT.
* ENDIF.
*
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 48/124
3/21/2015 Gmail bom extend JCI program kodu
* gs_ediddsegnam = gc_mtxlseg.
* gs_ediddhlevel = '3'.
* gs_ediddsdata = gs_mtxlseg.
* APPEND gs_edidd TO gt_edidd.
* CLEAR: gs_mtxlseg.
*
* IF gv_str_flag EQ gc_x.
* EXIT.
* ELSE.
* gv_off_int = gv_off_int + gv_off_len.
* IF gv_off_int GE gv_str_len.
* EXIT.
* ENDIF.
* ENDIF.
* ENDDO.
**
* READ TABLE gt_edidd INTO gs_edidd WITH KEY segnam = gc_mtxlseg
* segnum = gs_ediddsegnum.
* IF sysubrc NE 0.
* CLEAR: gs_mtxlseg.
* gs_ediddsegnam = gc_mtxlseg.
* gs_ediddhlevel = '03'.
* gs_ediddsdata = gs_mtxlseg.
* APPEND gs_edidd TO gt_edidd.
* ENDIF.
* End of deletion SAPP5375
lv_mcount = lv_mcount + 1.
IF lv_mcount = gc_500.
SORT gt_edidd BY segnum.
*Call the MASTER DISTRIBUTE IDOC FM and Create IDoc
PERFORM send_idoc.
CLEAR: gs_edidd, lv_mcount.
REFRESH: gt_edidd.
ENDIF.
ENDLOOP.
ENDIF.
AT LAST.
IF lv_mcount NE gc_500.
SORT gt_edidd BY segnum.
*Call the MASTER DISTRIBUTE IDOC FM and Create IDoc
PERFORM send_idoc.
CLEAR: gs_edidd, lv_mcount.
REFRESH: gt_edidd.
ENDIF.
ENDAT.
IF lv_mcount = gc_500.
SORT gt_edidd BY segnum.
*Call the MASTER DISTRIBUTE IDOC FM and Create IDoc
PERFORM send_idoc.
CLEAR: gs_edidd, lv_mcount.
REFRESH: gt_edidd.
ENDIF.
ENDLOOP.
ENDFORM. " POPULATE_DATA_RECORD
*&*
*& Form POPULATE_DATA_RECORD_BOMX
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 49/124
3/21/2015 Gmail bom extend JCI program kodu
*&*
* text
**
* > p1 text
* < p2 text
**
FORM populate_data_record_bom.
TYPES: BEGIN OF ty_legacy,
matnr TYPE marcmatnr,
werks TYPE marcwerks ,
zp2f_oldmat TYPE marczp2f_oldmat,
END OF ty_legacy.
DATA: lv_multi TYPE c,
lv_atinn_old TYPE auspatinn,
lv_count_dwg TYPE i.
DATA: lt_stb_temp LIKE gt_stb,
ls_stb_temp LIKE LINE OF lt_stb_temp.
DATA: lt_lega_mat TYPE TABLE OF ty_legacy,
ls_lega_mat LIKE LINE OF lt_lega_mat.
REFRESH: gt_aeoi_bom.
*Get the BOM related objects from AEOI
IF s_ecm IS NOT INITIAL.
SELECT aennr
objkt
FROM aeoi
INTO CORRESPONDING FIELDS OF TABLE gt_aeoi_bom
WHERE aetyp = '02'
AND aennr IN s_ecm.
ENDIF.
*To remove M from the objkt key
LOOP AT gt_aeoi_bom INTO gs_aeoi_bom.
gs_aeoi_bomstlnr = gs_aeoi_bomobjkt+1(8).
MODIFY gt_aeoi_bom FROM gs_aeoi_bom.
ENDLOOP.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_bom_final.
IF gt_aeoi_bom[] IS NOT INITIAL.
SELECT a~matnr
a~stlan
b~zp2f_oldmat
a~matnr
INTO TABLE gt_bom_final
FROM mast AS a
INNER JOIN marc AS b
ON a~matnr = b~matnr AND
a~werks = b~werks
FOR ALL ENTRIES IN gt_aeoi_bom
WHERE a~stlnr = gt_aeoi_bomstlnr
AND a~werks = p_plants
AND a~matnr IN s_matnr
AND a~stlan IN s_bomuse.
ELSEIF s_matnr IS NOT INITIAL.
SELECT a~matnr
a~stlan
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 50/124
3/21/2015 Gmail bom extend JCI program kodu
b~zp2f_oldmat
a~matnr
INTO TABLE gt_bom_final
FROM mast AS a
INNER JOIN marc AS b
ON a~matnr = b~matnr AND
a~werks = b~werks
WHERE a~werks = p_plants
AND a~matnr IN s_matnr
AND a~stlan IN s_bomuse.
ENDIF.
IF gt_bom_final IS NOT INITIAL.
SORT gt_bom_final.
DELETE ADJACENT DUPLICATES FROM gt_bom_final
COMPARING ALL FIELDS.
ELSE.
*Error message when no data found
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmessage = text037.
APPEND gs_messages TO gt_messages.
ENDIF.
*If sub assembly part needs to be included then
*Get multi level BOm components
IF p_sub EQ gc_x.
lv_multi = gc_x.
ELSE.
CLEAR: lv_multi.
ENDIF.
*Finding DWG document for the Material
REFRESH: gt_doc_part, gt_drad_draw_dwg.
SELECT * FROM zgtp2f_doc_revlv
INTO TABLE gt_doc_part
WHERE werks = p_plants.
IF sysubrc EQ 0.
CLEAR:gv_doc_part.
SORT gt_doc_part ASCENDING BY zprio.
READ TABLE gt_doc_part INTO gs_doc_part INDEX 1.
gv_doc_part = gs_doc_partdoktl.
ELSE.
gv_doc_part = 'GBL'.
ENDIF.
CLEAR lv_atinn_old.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'OLDDIRNUMBER'
IMPORTING
output = lv_atinn_old.
IF gt_bom_final[] IS NOT INITIAL.
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
a~obzae
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 51/124
3/21/2015 Gmail bom extend JCI program kodu
a~objky
b~dokst
b~aennr INTO TABLE gt_drad_draw_dwg
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_bom_final
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_bom_finalmatnr1
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'DWG' .
ENDIF.
IF gt_drad_draw_dwg[] IS NOT INITIAL.
*Populate OBJNUM field to get data from AUSP
SORT gt_drad_draw_dwg DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_dwg
COMPARING objky doknr.
LOOP AT gt_drad_draw_dwg INTO gs_drad_draw_dwg.
CONCATENATE gs_drad_draw_dwgdokar gs_drad_draw_dwgdoknr
gs_drad_draw_dwgdokvr gs_drad_draw_dwgdoktl
INTO gs_drad_draw_dwgobjnum.
CONDENSE gs_drad_draw_dwgobjnum NOGAPS.
MODIFY gt_drad_draw_dwg FROM gs_drad_draw_dwg.
ENDLOOP.
SELECT objek
klart
atwrt
FROM ausp INTO TABLE gt_ausp_dwg
FOR ALL ENTRIES IN gt_drad_draw_dwg
WHERE objek = gt_drad_draw_dwgobjnum
AND klart = '017'
AND atinn = lv_atinn_old.
ENDIF.
*To get BOM components in Multi levels
LOOP AT gt_bom_final INTO gs_bom_final.
REFRESH: gt_stb.
*Call FM to get multi level BOM explosion
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumgb = 'X'
capid = p_bom_a
datuv = sydatum
ehndl = '1'
mbwls = 'X'
mehrs = lv_multi
mmory = '1'
mtnrv = gs_bom_finalmatnr
werks = p_plants
vrsvo = 'X'
stlan = gs_bom_finalstlan
* IMPORTING
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 52/124
3/21/2015 Gmail bom extend JCI program kodu
* topmat =
TABLES
stb = gt_stb
* matcat =
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
*Read the IDNRK, POSNR and MENGE
lt_stb_temp[] = gt_stb[].
*Logic to fetch the legacy Material number
REFRESH: lt_lega_mat.
IF gt_stb[] IS NOT INITIAL.
SELECT matnr
werks
zp2f_oldmat
FROM marc INTO TABLE lt_lega_mat
FOR ALL ENTRIES IN gt_stb
WHERE matnr = gt_stbidnrk
AND werks = p_plants.
ENDIF.
IF lt_lega_mat[] IS NOT INITIAL.
SORT lt_lega_mat.
DELETE ADJACENT DUPLICATES FROM lt_lega_mat
COMPARING matnr werks.
ENDIF.
gs_ediddsegnum = 1.
gs_ediddhlevel = '02'.
IF gs_bom_finalzp2f_oldmat IS INITIAL.
gs_mastsegmatnr = gs_bom_finalmatnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_mastsegmatnr
IMPORTING
output = gs_mastsegmatnr.
ELSE.
gs_mastsegmatnr = gs_bom_finalzp2f_oldmat.
IF gs_mastsegmatnr+3(1) = ''.
gs_mastsegmatnr+3(1) = ' '.
ENDIF.
IF gs_mastsegmatnr+9(1) = ''.
gs_mastsegmatnr+9(1) = ' '.
ENDIF.
ENDIF.
gs_allmatmatnr = gs_bom_finalmatnr.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 53/124
3/21/2015 Gmail bom extend JCI program kodu
gs_allmatl_matnr = gs_bom_finalzp2f_oldmat.
APPEND gs_allmat TO gt_allmat.
gs_mastsegmwerks = p_plantm.
gs_ediddsegnam = gc_mastseg.
gs_ediddsdata = gs_mastseg.
APPEND gs_edidd TO gt_edidd.
CLEAR: gs_mastseg.
*Sort and delete the duplicates
* Begin of deletion SAPP5375
* SORT gt_stb BY idnrk stlnr stufe.
* DELETE ADJACENT DUPLICATES FROM gt_stb
* COMPARING idnrk stlnr.
* End of deletion SAPP5375
* Begin of insertion SAPP5375
*Sort and delete the duplicates
SORT gt_stb BY stlnr idnrk posnr.
DELETE ADJACENT DUPLICATES FROM gt_stb
COMPARING stlnr idnrk posnr.
* End of insertion SAPP5375
*Delete from temp table to populate sub assembly
DELETE lt_stb_temp WHERE xtlnr EQ space.
SORT lt_stb_temp BY idnrk.
DELETE ADJACENT DUPLICATES FROM lt_stb_temp
COMPARING idnrk.
LOOP AT gt_stb INTO gs_stb WHERE stufe = '1'.
*Populate the Item structure
READ TABLE lt_lega_mat INTO ls_lega_mat
WITH KEY matnr = gs_stbidnrk
werks = p_plants.
IF sysubrc EQ 0.
IF ls_lega_matzp2f_oldmat IS INITIAL.
gs_stposegidnrk = gs_stbidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stposegidnrk
IMPORTING
output = gs_stposegidnrk.
ELSE.
gs_stposegidnrk = ls_lega_matzp2f_oldmat.
IF gs_stposegidnrk+3(1) = ''.
gs_stposegidnrk+3(1) = ' '.
ENDIF.
IF gs_stposegidnrk+9(1) = ''.
gs_stposegidnrk+9(1) = ' '.
ENDIF.
ENDIF.
ELSE.
gs_stposegidnrk = gs_stbidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stposegidnrk
IMPORTING
output = gs_stposegidnrk.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 54/124
3/21/2015 Gmail bom extend JCI program kodu
gs_stposegposnr = gs_stbposnr.
gs_stposegmenge = gs_stbmenge.
*Append it to the IDoc structure
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
CLEAR: gs_stposeg.
ENDLOOP.
*Populating DWG Documents
REFRESH: gt_drad_draw_dwg1.
LOOP AT gt_drad_draw_dwg INTO gs_drad_draw_dwg
WHERE objky = gs_bom_finalmatnr.
APPEND gs_drad_draw_dwg TO gt_drad_draw_dwg1.
ENDLOOP.
SORT gt_drad_draw_dwg1 DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_dwg1
COMPARING objky doknr.
CLEAR: lv_count_dwg.
DESCRIBE TABLE gt_drad_draw_dwg1 LINES lv_count_dwg.
IF lv_count_dwg GT 0. "INS SAPP4600
gs_stposegposnr = 9000.
LOOP AT gt_drad_draw_dwg1 INTO gs_drad_draw_dwg1.
READ TABLE gt_ausp_dwg INTO gs_ausp_dwg
WITH KEY objnum = gs_drad_draw_dwg1objnum.
IF sysubrc EQ 0.
* gs_stposegmenge = '1'. " DEL SAPP4600
*** BEGIN OF INSERTION SAPP4600
gs_stposegmenge = '0'.
IF gs_bom_finalzp2f_oldmat EQ gs_ausp_dwgatwrt.
gs_ausp_dwgatwrt = '000 00000 000'.
ENDIF.
*** END OF INSERTION SAPP4600
gs_stposegidnrk = gs_ausp_dwgatwrt.
*Append it to the IDoc structure
*** BEGIN OF INS SAPP4454
IF gs_stposegidnrk+3(1) = ''.
gs_stposegidnrk+3(1) = ' '.
ENDIF.
IF gs_stposegidnrk+9(1) = ''.
gs_stposegidnrk+9(1) = ' '.
ENDIF.
*** END OF INS SAPP4454
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
gs_stposegposnr = gs_stposegposnr + 1.
ELSE.
*** BEGIN OF CHANGE SAPP4600
* gs_stposegmenge = '1'.
gs_stposegmenge = '0'.
*** END OF CHANGE SAPP4600
gs_stposegidnrk = space.
*Append it to the IDoc structure
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 55/124
3/21/2015 Gmail bom extend JCI program kodu
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
gs_stposegposnr = gs_stposegposnr + 1.
ENDIF.
ENDLOOP.
ENDIF.
*To populate IDoc with Sub components
REFRESH: gt_sub_com. CLEAR: gs_sub_com.
LOOP AT lt_stb_temp INTO ls_stb_temp.
gs_sub_comobjky = ls_stb_tempidnrk.
APPEND gs_sub_com TO gt_sub_com.
ENDLOOP.
IF gt_sub_com IS NOT INITIAL.
REFRESH: gt_drad_draw_new.
SELECT a~dokar
a~doknr
a~dokvr
a~doktl
a~dokob
a~obzae
a~objky
b~dokst
b~aennr INTO TABLE gt_drad_draw_new
FROM drad AS a INNER JOIN draw AS b
ON a~dokar = b~dokar AND
a~doknr = b~doknr AND
a~dokvr = b~dokvr AND
a~doktl = b~doktl
FOR ALL ENTRIES IN gt_sub_com
WHERE a~doktl = gv_doc_part
AND a~dokob = 'MARA'
AND a~objky = gt_sub_comobjky
AND a~delflag <> 'X'
AND b~dokst = 'RL'
AND a~dokar = 'DWG' .
ENDIF.
IF gt_drad_draw_new[] IS NOT INITIAL.
*Populate OBJNUM field to get data from AUSP
SORT gt_drad_draw_new DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_new
COMPARING objky doknr.
LOOP AT gt_drad_draw_new INTO gs_drad_draw_new.
CONCATENATE gs_drad_draw_newdokar gs_drad_draw_newdoknr
gs_drad_draw_newdokvr gs_drad_draw_newdoktl
INTO gs_drad_draw_newobjnum.
CONDENSE gs_drad_draw_newobjnum NOGAPS.
MODIFY gt_drad_draw_new FROM gs_drad_draw_new.
ENDLOOP.
REFRESH: gt_ausp_std.
SELECT objek
klart
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 56/124
3/21/2015 Gmail bom extend JCI program kodu
atwrt
FROM ausp INTO TABLE gt_ausp_std
FOR ALL ENTRIES IN gt_drad_draw_new
WHERE objek = gt_drad_draw_newobjnum
AND klart = '017'
AND atinn = lv_atinn_old.
ENDIF.
LOOP AT lt_stb_temp INTO ls_stb_temp.
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddhlevel = '02'.
*Logic to get the Legacy Material num
READ TABLE lt_lega_mat INTO ls_lega_mat
WITH KEY matnr = ls_stb_tempidnrk
werks = p_plants.
IF sysubrc EQ 0.
IF ls_lega_matzp2f_oldmat IS INITIAL.
gs_mastsegmatnr = ls_stb_tempidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_mastsegmatnr
IMPORTING
output = gs_mastsegmatnr.
ELSE.
gs_mastsegmatnr = ls_lega_matzp2f_oldmat.
IF gs_mastsegmatnr+3(1) = ''.
gs_mastsegmatnr+3(1) = ' '.
ENDIF.
IF gs_mastsegmatnr+9(1) = ''.
gs_mastsegmatnr+9(1) = ' '.
ENDIF.
ENDIF.
ELSE.
gs_mastsegmatnr = ls_stb_tempidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_mastsegmatnr
IMPORTING
output = gs_mastsegmatnr.
ENDIF.
gs_allmatmatnr = ls_stb_tempidnrk.
gs_allmatl_matnr = ls_lega_matzp2f_oldmat.
APPEND gs_allmat TO gt_allmat.
gs_mastsegmwerks = p_plantm.
gs_ediddsegnam = gc_mastseg.
gs_ediddsdata = gs_mastseg.
APPEND gs_edidd TO gt_edidd.
CLEAR: gs_mastseg.
*Populate the Item structure
LOOP AT gt_stb INTO gs_stb WHERE stlnr = ls_stb_tempxtlnr..
*Logic to get the Legacy Material num
READ TABLE lt_lega_mat INTO ls_lega_mat
WITH KEY matnr = gs_stbidnrk
werks = p_plants.
IF sysubrc EQ 0.
IF ls_lega_matzp2f_oldmat IS INITIAL.
gs_stposegidnrk = gs_stbidnrk.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 57/124
3/21/2015 Gmail bom extend JCI program kodu
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stposegidnrk
IMPORTING
output = gs_stposegidnrk.
ELSE.
gs_stposegidnrk = ls_lega_matzp2f_oldmat.
IF gs_stposegidnrk+3(1) = ''.
gs_stposegidnrk+3(1) = ' '.
ENDIF.
IF gs_stposegidnrk+9(1) = ''.
gs_stposegidnrk+9(1) = ' '.
ENDIF.
ENDIF.
ELSE.
gs_stposegidnrk = gs_stbidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stposegidnrk
IMPORTING
output = gs_stposegidnrk.
ENDIF.
gs_stposegposnr = gs_stbposnr.
gs_stposegmenge = gs_stbmenge.
*Append it to the IDoc structure
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
CLEAR: gs_stposeg.
ENDLOOP.
*To add DWG document
REFRESH: gt_drad_draw_new1.
LOOP AT gt_drad_draw_new INTO gs_drad_draw_new
WHERE objky = ls_stb_tempidnrk.
APPEND gs_drad_draw_new TO gt_drad_draw_new1.
ENDLOOP.
SORT gt_drad_draw_new1 DESCENDING BY objky dokvr doknr.
DELETE ADJACENT DUPLICATES FROM gt_drad_draw_new1
COMPARING objky doknr.
CLEAR: lv_count_dwg.
DESCRIBE TABLE gt_drad_draw_new1 LINES lv_count_dwg.
*** BEGIN OF CHANGE SAPP4600
* IF lv_count_dwg GT 1.
IF lv_count_dwg GT 0.
*** END OF CHANGE SAPP4600
gs_stposegposnr = 9000.
LOOP AT gt_drad_draw_new1 INTO gs_drad_draw_new1.
READ TABLE gt_ausp_std INTO gs_ausp_std
WITH KEY objnum = gs_drad_draw_new1objnum.
IF sysubrc EQ 0.
* gs_stposegmenge = '1'. "DEL SAPP4600
*** BEGIN OF INSERTION SAPP4600
READ TABLE lt_lega_mat INTO ls_lega_mat
WITH KEY matnr = gs_drad_draw_new1objky
werks = p_plants.
IF sysubrc EQ 0.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 58/124
3/21/2015 Gmail bom extend JCI program kodu
IF ls_lega_matzp2f_oldmat EQ gs_ausp_stdatwrt.
gs_ausp_stdatwrt = '000 00000 000'.
ENDIF.
ENDIF.
gs_stposegmenge = '0'.
CLEAR: ls_lega_mat.
*** END OF INSERTION SAPP4600
gs_stposegidnrk = gs_ausp_stdatwrt.
*Append it to the IDoc structure
*** BEGIN OF INS SAPP4454
IF gs_stposegidnrk+3(1) = ''.
gs_stposegidnrk+3(1) = ' '.
ENDIF.
IF gs_stposegidnrk+9(1) = ''.
gs_stposegidnrk+9(1) = ' '.
ENDIF.
*** END OF INS SAPP4454
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
gs_stposegposnr = gs_stposegposnr + 1.
ELSE.
*** BEGIN OF CHANGE SAPP4600
* gs_stposegmenge = '1'.
gs_stposegmenge = '0'.
*** END OF CHANGE SAPP4600
gs_stposegidnrk = space.
*Append it to the IDoc structure
gs_ediddsegnum = gs_ediddsegnum + 1.
gs_ediddsegnam = gc_stposeg.
gs_ediddsdata = gs_stposeg.
gs_ediddhlevel = '03'.
APPEND gs_edidd TO gt_edidd.
gs_stposegposnr = gs_stposegposnr + 1.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
SORT gt_edidd BY segnum.
*Create IDoc for each and every material
PERFORM send_idoc." USING gs_bom_finalmatnr.
*Refresh all the internal table data
REFRESH: gt_edidd, lt_stb_temp.
ENDLOOP.
ENDFORM. " POPULATE_DATA_RECORD_BOMX
*&*
*& Form BUILD_FIELDCATALOG
*&*
* Building the fieldcatalog for ALV GRID report
**
* > p1 text
* < p2 text
**
FORM build_fieldcatalog .
*Building the fieldcatalog using MACRO
REFRESH: gt_fieldcat.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 59/124
3/21/2015 Gmail bom extend JCI program kodu
mcat gc_icon text064 text064.
mcat gc_docnum text066 text066.
mcat gc_matnr text067 text067.
mcat gc_l_matnr text126 text126.
mcat gc_werks text068 text068.
mcat gc_mess text065 text065.
ENDFORM. " BUILD_FIELDCATALOG
*&*
*& Form BUILD_LAYOUT
*&*
* Building the layout design for ALV GRID output
**
* > p1 text
* < p2 text
**
FORM build_layout .
*To build the layout design
gs_layoutcwidth_opt = gc_x.
gs_layoutzebra = gc_x.
gs_layoutsel_mode = gc_x .
gs_layoutbox_fname = gc_sel.
ENDFORM. " BUILD_LAYOUT
*&*
*& Form DISPLAY_ALV
*&*
* PFSTATUS for ALV grid
**
* > p1 text
* < p2 text
**
FORM display_alv .
DATA: lv_title TYPE lvc_title.
*Calling FM to display ALV GRID
gv_repid = syrepid.
IF r_materl EQ gc_x.
lv_title = text061.
ELSE.
lv_title = text062.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gv_repid
i_grid_title = lv_title
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_messages[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
ENDFORM. " DISPLAY_ALV
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 60/124
3/21/2015 Gmail bom extend JCI program kodu
*&*
*& Form FETCH_MARC_DATA
*&*
* text
**
* > p1 text
* < p2 text
**
FORM fetch_marc_data .
REFRESH: gt_aeoi, gt_marc_e, gt_mara_e, gt_makt_e, r_mat_ref.
DATA: lv_multi.
*Fill the RANGES for matnr, lgort, vkorg and bwkey
IF p_fin_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_fin_m.
APPEND r_mat_ref.
ENDIF.
IF p_pur_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_pur_m.
APPEND r_mat_ref.
ENDIF.
IF p_ref_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_ref_m.
APPEND r_mat_ref.
ENDIF.
IF p_sub_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_sub_m.
APPEND r_mat_ref.
ENDIF.
IF p_ph_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_ph_m.
APPEND r_mat_ref.
ENDIF.
IF p_def_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_def_m.
APPEND r_mat_ref.
ENDIF.
IF p_trd_m IS NOT INITIAL.
CLEAR: r_mat_ref.
r_mat_refsign = 'I'.
r_mat_refoption = 'EQ'.
r_mat_reflow = p_trd_m.
APPEND r_mat_ref.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 61/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
*Select data from AEOI table for the input ECM
IF s_ecm_e IS NOT INITIAL.
SELECT aennr
objkt
revlv
FROM aeoi INTO TABLE gt_aeoi
WHERE aetyp = '41'
AND aennr IN s_ecm_e.
IF gt_aeoi[] IS NOT INITIAL.
*To get the latest version
SORT gt_aeoi DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_aeoi
COMPARING aennr objkt.
ENDIF.
ENDIF.
*Select the required data from MARC, if material number and ecm number
*given
IF s_mats_e IS NOT INITIAL.
*If you get data from AEOI, then fetch the data from MARC
IF gt_aeoi[] IS NOT INITIAL.
SELECT * FROM marc INTO TABLE gt_marc_e
FOR ALL ENTRIES IN gt_aeoi
WHERE matnr = gt_aeoiobjkt
AND werks = p_plnt_e
AND matnr IN s_mats_e.
ENDIF.
*If ecm number is initial then use only material number
IF s_ecm_e IS INITIAL.
SELECT * FROM marc INTO TABLE gt_marc_e
WHERE werks = p_plnt_e
AND matnr IN s_mats_e.
ENDIF.
ELSE.
*If material number is initial
IF gt_aeoi[] IS NOT INITIAL.
SELECT * FROM marc INTO TABLE gt_marc_e
FOR ALL ENTRIES IN gt_aeoi
WHERE matnr = gt_aeoiobjkt
AND werks = p_plnt_e.
ENDIF.
ENDIF.
*Logic to include BOM components details in Material extension
IF p_bom_in EQ gc_x.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_aeoi_bom.
*Get the BOM related objects from AEOI
IF s_ecm_e IS NOT INITIAL.
SELECT aennr
objkt
FROM aeoi
INTO CORRESPONDING FIELDS OF TABLE gt_aeoi_bom
WHERE aetyp = '02'
AND aennr IN s_ecm_e.
ENDIF.
*To remove M from the objkt key
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 62/124
3/21/2015 Gmail bom extend JCI program kodu
LOOP AT gt_aeoi_bom INTO gs_aeoi_bom.
gs_aeoi_bomstlnr = gs_aeoi_bomobjkt+1(8).
MODIFY gt_aeoi_bom FROM gs_aeoi_bom.
ENDLOOP.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_bom_create.
IF gt_aeoi_bom[] IS NOT INITIAL.
SELECT matnr
werks
stlan
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_create
FOR ALL ENTRIES IN gt_aeoi_bom
WHERE stlnr = gt_aeoi_bomstlnr
AND werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
ELSEIF s_mats_e IS NOT INITIAL.
SELECT matnr
werks
stlan
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_create
WHERE werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
ENDIF.
IF gt_bom_create IS NOT INITIAL.
SORT gt_bom_create.
DELETE ADJACENT DUPLICATES FROM gt_bom_create
COMPARING ALL FIELDS.
*Get multi level BOm components
lv_multi = gc_x.
LOOP AT gt_bom_create INTO gs_bom_create.
gs_bom_createplant = p_plnt_t.
IF p_bom_t IS NOT INITIAL.
gs_bom_createbomuse = p_bom_t.
ELSE.
gs_bom_createbomuse = gs_bom_createstlan.
ENDIF.
gs_bom_createecn = p_ecm_t.
MODIFY gt_bom_create FROM gs_bom_create.
ENDLOOP.
*To get BOM components in Multi levels
LOOP AT gt_bom_create INTO gs_bom_create.
REFRESH: gt_stb.
*Call FM to get multi level BOM explosion
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumgb = 'X'
capid = p_app_b
datuv = sydatum
ehndl = '1'
mbwls = 'X'
mehrs = lv_multi
mmory = '1'
mtnrv = gs_bom_creatematnr
werks = p_plnt_e
vrsvo = 'X'
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 63/124
3/21/2015 Gmail bom extend JCI program kodu
stlan = gs_bom_createstlan
TABLES
stb = gt_stb
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
APPEND LINES OF gt_stb TO gt_stb_mat.
ENDLOOP.
IF gt_stb_mat[] IS NOT INITIAL.
SELECT * FROM marc
APPENDING TABLE gt_marc_e
FOR ALL ENTRIES IN gt_stb_mat
WHERE matnr = gt_stb_matidnrk
AND werks = p_plnt_e..
ENDIF.
ENDIF.
ENDIF.
IF gt_marc_e[] IS NOT INITIAL.
SORT gt_marc_e.
DELETE ADJACENT DUPLICATES FROM gt_marc_e
COMPARING ALL FIELDS.
*Check the validation for Target Plant
REFRESH: gt_target_plnt, gt_target_plnt_r.
SELECT matnr
werks
lgpro
FROM marc INTO TABLE gt_target_plnt
FOR ALL ENTRIES IN gt_marc_e
WHERE matnr = gt_marc_ematnr
AND werks = p_plnt_t.
IF sysubrc EQ 0.
SORT gt_target_plnt.
ENDIF.
IF r_mat_ref IS NOT INITIAL.
SELECT matnr
werks
lgpro
FROM marc INTO TABLE gt_target_plnt_r
WHERE matnr IN r_mat_ref
AND werks = p_plnt_t.
IF sysubrc EQ 0.
SORT gt_target_plnt_r.
ENDIF.
ENDIF.
REFRESH: gt_mara_e, gt_makt_e.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 64/124
3/21/2015 Gmail bom extend JCI program kodu
*Fetching MARA data for selected Material and Plant
IF gt_marc_e[] IS NOT INITIAL.
SELECT matnr
mtart
begru
kzeff
kzkfg
labor
matkl
meins
mstae
mstde
satnr
FROM mara INTO TABLE gt_mara_e
FOR ALL ENTRIES IN gt_marc_e
WHERE matnr = gt_marc_ematnr.
IF sysubrc EQ 0.
SELECT matnr
maktx
spras
FROM makt INTO TABLE gt_makt_e
FOR ALL ENTRIES IN gt_mara_e
WHERE matnr = gt_mara_ematnr.
ENDIF.
ENDIF.
ELSE.
MESSAGE text051 TYPE gc_s DISPLAY LIKE gc_e.
ENDIF.
*To get Valuation Area
SELECT werks
bwkey
FROM t001w
INTO TABLE gt_bwkey
WHERE werks = p_plnt_e OR
werks = p_plnt_t.
ENDFORM. " FETCH_MARC_DATA
*&*
*& Form POPULATE_FINAL_ALV_TABLE
*&*
* text
**
* > p1 text
* < p2 text
**
FORM populate_final_alv_table .
*Logic to populate the final internal table
*If no entries found, then raise error message
IF gt_mara_e[] IS INITIAL.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messageswerks = p_plnt_t.
gs_messagesmessage = text039.
APPEND gs_messages TO gt_messages.
ENDIF.
LOOP AT gt_mara_e INTO gs_mara_e.
CLEAR: gs_alv_material.
MOVECORRESPONDING gs_mara_e TO gs_alv_material.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 65/124
3/21/2015 Gmail bom extend JCI program kodu
READ TABLE gt_marc_e INTO gs_marc_e
WITH KEY matnr = gs_mara_ematnr.
IF sysubrc EQ 0.
MOVECORRESPONDING gs_marc_e TO gs_alv_material.
CLEAR: gs_alv_materiallgpro.
ENDIF.
READ TABLE gt_makt_e INTO gs_makt_e
WITH KEY matnr = gs_mara_ematnr
spras = 'E'.
IF sysubrc EQ 0.
MOVECORRESPONDING gs_makt_e TO gs_alv_material.
ELSE.
READ TABLE gt_makt_e INTO gs_makt_e
WITH KEY matnr = gs_mara_ematnr.
IF sysubrc EQ 0.
MOVECORRESPONDING gs_makt_e TO gs_alv_material.
ENDIF.
ENDIF.
IF p_pltyp EQ gc_x.
IF gs_marc_ezptyp IS NOT INITIAL.
CASE gs_marc_ezptyp.
WHEN 'FIN'.
gs_alv_materiallgpro = p_fin_sl.
gs_alv_materialvkorg = p_fin_so.
gs_alv_materialvtweg = p_fin_d.
gs_alv_materialbwkey = p_fin_v.
gs_alv_materialmat_r = p_fin_m.
gs_alv_materiallgnum = p_fin_w.
WHEN 'PUR'.
gs_alv_materiallgpro = p_pur_sl.
gs_alv_materialvkorg = p_pur_so.
gs_alv_materialvtweg = p_pur_d.
gs_alv_materialbwkey = p_pur_v.
gs_alv_materialmat_r = p_pur_m.
gs_alv_materiallgnum = p_pur_w.
WHEN 'REF'.
gs_alv_materiallgpro = p_ref_sl.
gs_alv_materialvkorg = p_ref_so.
gs_alv_materialvtweg = p_ref_d.
gs_alv_materialbwkey = p_ref_v.
gs_alv_materialmat_r = p_ref_m.
gs_alv_materiallgnum = p_ref_w.
WHEN 'SUB'.
IF gs_alv_materialsobsl EQ '50'.
gs_alv_materiallgpro = p_ph_sl.
gs_alv_materialvkorg = p_ph_so.
gs_alv_materialvtweg = p_ph_d.
gs_alv_materialbwkey = p_ph_v.
gs_alv_materialmat_r = p_ph_m.
gs_alv_materiallgnum = p_ph_w.
ELSE.
gs_alv_materiallgpro = p_sub_sl.
gs_alv_materialvkorg = p_sub_so.
gs_alv_materialvtweg = p_sub_d.
gs_alv_materialbwkey = p_sub_v.
gs_alv_materialmat_r = p_sub_m.
gs_alv_materiallgnum = p_sub_w.
ENDIF.
WHEN 'TRA'.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 66/124
3/21/2015 Gmail bom extend JCI program kodu
gs_alv_materiallgpro = p_trd_sl.
gs_alv_materialvkorg = p_trd_so.
gs_alv_materialvtweg = p_trd_d.
gs_alv_materialbwkey = p_trd_v.
gs_alv_materialmat_r = p_trd_m.
gs_alv_materiallgnum = p_trd_w.
WHEN OTHERS.
ENDCASE.
ELSE.
gs_alv_materiallgpro = p_def_sl.
gs_alv_materialvkorg = p_def_so.
gs_alv_materialvtweg = p_def_d.
gs_alv_materialbwkey = p_def_v.
gs_alv_materialmat_r = p_def_m.
gs_alv_materiallgnum = p_def_w.
ENDIF.
ELSE.
gs_alv_materiallgpro = p_def_sl.
gs_alv_materialvkorg = p_def_so.
gs_alv_materialvtweg = p_def_d.
gs_alv_materialbwkey = p_def_v.
gs_alv_materialmat_r = p_def_m.
gs_alv_materiallgnum = p_def_w.
ENDIF.
IF gs_alv_materialmat_r IS INITIAL.
gs_alv_materiallgpro = p_def_sl.
gs_alv_materialvkorg = p_def_so.
gs_alv_materialvtweg = p_def_d.
gs_alv_materialbwkey = p_def_v.
gs_alv_materialmat_r = p_def_m.
gs_alv_materiallgnum = p_def_w.
ENDIF.
IF gs_alv_materialbwkey IS INITIAL.
READ TABLE gt_bwkey INTO gs_bwkey WITH KEY werks = p_plnt_t.
IF sysubrc EQ 0.
gs_alv_materialbwkey = gs_bwkeybwkey.
ENDIF.
ENDIF.
*To check whether this material exists in the target material
CLEAR: gs_alv_materialsel.
READ TABLE gt_target_plnt INTO gs_target_plnt
WITH KEY matnr = gs_mara_ematnr
werks = p_plnt_t.
IF sysubrc NE 0.
gs_alv_materialsel = gc_x.
ENDIF.
READ TABLE gt_target_plnt_r INTO gs_target_plnt_r
WITH KEY matnr = gs_alv_materialmat_r
werks = p_plnt_t.
IF sysubrc EQ 0.
IF gs_alv_materiallgpro IS INITIAL .
gs_alv_materiallgpro = gs_target_plntlgpro.
ENDIF.
ENDIF.
gs_alv_materialplant = p_plnt_t.
IF p_plnt_t EQ '1010'.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 67/124
3/21/2015 Gmail bom extend JCI program kodu
CLEAR: gs_alv_materialzptyp.
ENDIF.
APPEND gs_alv_material TO gt_alv_material.
CLEAR: gs_mara_e, gs_marc_e, gs_makt_e." gs_mrp, gs_forecast.
ENDLOOP.
*Display Final messages in ALV format for Users
IF gt_alv_material[] IS NOT INITIAL.
PERFORM build_layout1.
PERFORM build_catalog.
PERFORM display_final_alv.
ENDIF.
ENDFORM. " POPULATE_FINAL_ALV_TABLE
*&*
*& Form BUILD_CATALOG
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_catalog .
REFRESH: gt_fieldcat1.
gv_repid = syrepid.
*FM to create field catalog for final internal table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = gv_repid
i_internal_tabname = 'GT_ALV_MATERIAL'
i_inclname = gv_repid
i_bypassing_buffer = gc_x
CHANGING
ct_fieldcat = gt_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
*To modify the fieldcatalog according to the users
LOOP AT gt_fieldcat1 INTO gs_fieldcat1.
IF gs_fieldcat1fieldname = 'SEL'.
gs_fieldcat1seltext_m = text118.
gs_fieldcat1checkbox = gc_x.
gs_fieldcat1edit = gc_x.
ELSEIF gs_fieldcat1fieldname = 'ZPTYP'.
gs_fieldcat1seltext_s = text071.
gs_fieldcat1edit = gc_x.
ENDIF.
IF gs_fieldcat1fieldname = 'MAT_R'.
gs_fieldcat1seltext_m = text078.
gs_fieldcat1seltext_s = text078.
gs_fieldcat1reptext_ddic = text078.
gs_fieldcat1seltext_l = text078.
gs_fieldcat1edit = gc_x.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 68/124
3/21/2015 Gmail bom extend JCI program kodu
IF gs_fieldcat1fieldname = 'PLANT'.
gs_fieldcat1seltext_m = text073.
gs_fieldcat1seltext_s = text073.
gs_fieldcat1reptext_ddic = text073.
gs_fieldcat1seltext_l = text073.
ENDIF.
IF gs_fieldcat1fieldname = 'ZP2F_OLDMAT'.
gs_fieldcat1seltext_m = text072.
gs_fieldcat1seltext_s = text072.
gs_fieldcat1reptext_ddic = text072.
gs_fieldcat1seltext_l = text072.
gs_fieldcat1edit = gc_x.
ENDIF.
gs_fieldcat1just = 'C'.
MODIFY gt_fieldcat1 FROM gs_fieldcat1.
CLEAR: gs_fieldcat1.
ENDLOOP.
ENDFORM. " BUILD_CATALOG
*&*
*& Form BUILD_LAYOUT1
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_layout1 .
*To build the layout design
gs_layout1colwidth_optimize = gc_x.
gs_layout1zebra = gc_x.
ENDFORM. " BUILD_LAYOUT1
*&*
*& Form DISPLAY_FINAL_ALV
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_final_alv .
gv_repid = syrepid.
*FM to display ALV for Material Extn to Plant
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_grid_title = text069
is_layout = gs_layout1
it_fieldcat = gt_fieldcat1
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_alv_material
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 69/124
3/21/2015 Gmail bom extend JCI program kodu
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
ENDFORM. " DISPLAY_FINAL_ALV
*&*
*& Form user_command
*&*
* text
**
*User actions on ALV
FORM user_command USING r_ucomm TYPE syucomm
selfield TYPE slis_selfield.
CASE r_ucomm.
*If user tries to extend a material to another Plant
WHEN 'EASY'.
CLEAR: gv_down.
PERFORM plant_material_extn.
WHEN 'DWN' .
gv_down = gc_x.
PERFORM plant_material_extn.
WHEN 'SEL'.
PERFORM select_all_entries_mat_extn CHANGING gt_alv_material[].
WHEN 'DESEL'.
PERFORM deselect_all_entries_mat_extn CHANGING gt_alv_material[].
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
"user_command*
* FORM PFSTATUS *
**
*Form for settings the pf status to the alv
FORM pf_status USING rt_extab TYPE slis_t_extab.
*PF Status for ALV report
SET PFSTATUS 'STANDARD'.
ENDFORM. "pfstatus
*&*
*& Form PLANT_MATERIAL_EXTN
*&*
* text
**
* > p1 text
* < p2 text
**
FORM plant_material_extn .
*Extend plant for all selected Materials
DATA: lv_ref1 TYPE REF TO cl_gui_alv_grid.
DATA: ls_headdata LIKE bapimathead,
ls_return LIKE bapiret2,
lt_materialdescription TYPE TABLE OF bapi_makt,
ls_materialdescription TYPE bapi_makt.
DATA: lt_extn TYPE STANDARD TABLE OF bapiparex,
ls_extn TYPE bapiparex,
lt_extnx TYPE STANDARD TABLE OF bapiparexx,
ls_extnx TYPE bapiparexx,
lt_returnmessages TYPE TABLE OF bapi_matreturn2.
DATA: lt_alt_dates TYPE STANDARD TABLE OF aedt_api01,
lt_objmgrec TYPE STANDARD TABLE OF aeoi_api01,
ls_alt_dates TYPE aedt_api01,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 70/124
3/21/2015 Gmail bom extend JCI program kodu
ls_objmgrec TYPE aeoi_api01,
ls_change_header TYPE aenr_api01,
lt_effectivity TYPE TABLE OF aeef_api01,
ls_effectivity TYPE aeef_api01.
DATA: lv_msg TYPE msg,
lv_fname TYPE string.
TYPES: BEGIN OF ty_int_head,
field1(20) TYPE c, " Header Data
END OF ty_int_head.
DATA: lt_int_head TYPE TABLE OF ty_int_head,
ls_int_head TYPE ty_int_head.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_ref1.
*To get the ALV grid details
CALL METHOD lv_ref1>check_changed_data.
REFRESH: gt_download.
*Calling Plant extension Function call
LOOP AT gt_alv_material INTO gs_alv_material WHERE sel = gc_x.
CLEAR: ls_headdata, gs_clientdata, gs_salesdata, gs_plantdata,
gs_warehousenumberdata, gs_forecastparameters,
gs_valuationdata, gs_storagelocationdata, gs_clientdatax,
gs_plantdatax, gs_storagelocationdatax, gs_valuationdatax,
gs_warehousenumberdatax, gs_forecastparameters,
gs_salesdatax.
REFRESH: lt_materialdescription, lt_returnmessages, gt_intern,
gt_unitsofmeasure, gt_unitsofmeasurex, gt_taxclass,
gt_materiallongtext, gt_prtdata, gt_prtdatax, lt_extn,
lt_extnx.
*To check whether this material exists in the target material
READ TABLE gt_target_plnt INTO gs_target_plnt
WITH KEY matnr = gs_alv_materialmatnr
werks = p_plnt_t.
IF sysubrc EQ 0.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmatnr = gs_alv_materialmatnr.
gs_messageszp2f_oldmat = gs_alv_materialzp2f_oldmat.
gs_messageswerks = p_plnt_t.
gs_messagesmessage = text040.
APPEND gs_messages TO gt_messages.
CONTINUE.
ENDIF.
*To populate Header details
READ TABLE gt_marc_e INTO gs_marc_e
WITH KEY matnr = gs_alv_materialmatnr
werks = gs_alv_materialwerks.
*To get the Material and Plant related details
PERFORM get_material_all.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 71/124
3/21/2015 Gmail bom extend JCI program kodu
IF gv_error EQ gc_x.
CLEAR: gv_error.
CONTINUE.
ENDIF.
ls_headdatamaterial = gs_alv_materialmatnr.
ls_headdatamatl_type = gs_alv_materialmtart.
* ls_headdatabasic_view = c_x.
ls_headdatamrp_view = gc_x.
IF gs_forecastparameters IS NOT INITIAL.
ls_headdataforecast_view = gc_x.
ENDIF.
IF gs_valuationdata IS NOT INITIAL.
ls_headdataaccount_view = gc_x.
ls_headdatacost_view = gc_x.
ENDIF.
IF gs_salesdata IS NOT INITIAL.
ls_headdatasales_view = gc_x.
ENDIF.
ls_headdatapurchase_view = gc_x.
ls_headdataprt_view = gc_x.
IF gs_storagelocationdata IS NOT INITIAL.
ls_headdatastorage_view = gc_x.
ENDIF.
IF gs_warehousenumberdata IS NOT INITIAL.
ls_headdatawarehouse_view = gc_x.
ENDIF.
*Populate MARA details
gs_clientdatabase_uom = gs_alv_materialmeins.
gs_clientdataauthoritygroup = gs_alv_materialbegru.
gs_clientdatadsn_office = gs_alv_materiallabor.
*Populate Plant and MRP profile details from MARC and MDIP
gs_plantdataplant = p_plnt_t.
LOOP AT gt_prtdata INTO gs_prtdata .
IF gs_prtdataplant IS NOT INITIAL.
gs_prtdataplant = p_plnt_t.
MODIFY gt_prtdata FROM gs_prtdata.
ENDIF.
ENDLOOP.
IF gs_plantdataavailcheck IS INITIAL.
IF gs_marc_emtvfp IS INITIAL.
gs_plantdataavailcheck = 'KP'.
ELSE.
gs_plantdataavailcheck = gs_marc_emtvfp.
ENDIF.
ENDIF.
IF gs_plantdataprofit_ctr IS INITIAL.
IF gs_marc_eprctr IS INITIAL.
gs_plantdataprofit_ctr = gc_admin.
ELSE.
gs_plantdataprofit_ctr = gs_marc_eprctr.
ENDIF.
ENDIF.
IF gs_forecastparameters IS NOT INITIAL.
IF gs_forecastparametersfore_model IS INITIAL.
gs_forecastparametersfore_model = 'D'.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 72/124
3/21/2015 Gmail bom extend JCI program kodu
gs_forecastparametersplant = p_plnt_t.
ENDIF.
*To populate the Z fields of MARC
IF NOT gs_alv_materialzp2f_oldmat IS INITIAL
OR NOT gs_alv_materialzptyp IS INITIAL.
ls_extnstructure = 'BAPI_TE_MARC'.
ls_extnvaluepart1+0(4) = p_plnt_t.
ls_extnvaluepart1+4(18) = gs_alv_materialzp2f_oldmat.
ls_extnvaluepart1+22(4) = gs_alv_materialzptyp.
ls_extnvaluepart1+26(12) = p_ecm_t.
ls_extnxstructure = 'BAPI_TE_MARCX'.
ls_extnxvaluepart1+0(4) = p_plnt_t.
ls_extnxvaluepart1+21(1) = 'X'.
ls_extnxvaluepart1+25(1) = 'X'.
ls_extnxvaluepart1+26(1) = 'X'.
APPEND ls_extn TO lt_extn.
APPEND ls_extnx TO lt_extnx.
CLEAR : ls_extn,ls_extnx.
ENDIF.
*Populate MAKT details
ls_materialdescriptionlangu = gs_alv_materialspras.
ls_materialdescriptionmatl_desc = gs_alv_materialmaktx.
APPEND ls_materialdescription TO lt_materialdescription.
IF gs_storagelocationdata IS NOT INITIAL.
gs_storagelocationdataplant = p_plnt_t.
CLEAR: gs_storagelocationdatastge_loc.
IF gs_alv_materialzptyp IS NOT INITIAL.
CASE gs_alv_materialzptyp.
WHEN 'FIN'.
gs_storagelocationdatastge_loc = p_fin_sl.
WHEN 'SUB'.
IF gs_alv_materialsobsl = '50'.
gs_storagelocationdatastge_loc = p_ph_sl.
ELSE.
gs_storagelocationdatastge_loc = p_sub_sl.
ENDIF.
WHEN 'REF'.
gs_storagelocationdatastge_loc = p_ref_sl.
WHEN 'PUR'.
gs_storagelocationdatastge_loc = p_pur_sl.
WHEN 'TRA'.
gs_storagelocationdatastge_loc = p_trd_sl.
ENDCASE.
ELSE.
gs_storagelocationdatastge_loc = p_def_sl.
ENDIF.
IF gs_storagelocationdatastge_loc IS INITIAL.
READ TABLE gt_target_plnt_r INTO gs_target_plnt_r
WITH KEY matnr = gs_alv_materialmat_r
werks = p_plnt_t .
IF sysubrc EQ 0.
gs_storagelocationdatastge_loc = gs_target_plnt_rlgpro.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 73/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
IF gs_storagelocationdatastge_loc IS INITIAL AND
gs_marc_elgpro IS NOT INITIAL.
gs_storagelocationdatastge_loc = gs_marc_elgpro.
ELSEIF gs_storagelocationdatastge_loc IS INITIAL AND
gs_marc_elgpro IS INITIAL.
CLEAR: gs_storagelocationdataplant, gs_plantdataiss_st_loc.
ENDIF.
ELSE.
CLEAR: gs_plantdataiss_st_loc.
ENDIF.
IF gs_valuationdata IS NOT INITIAL.
IF gs_alv_materialzptyp IS NOT INITIAL.
CASE gs_alv_materialzptyp.
WHEN 'FIN'.
gs_valuationdataval_area = p_fin_v.
WHEN 'SUB'.
IF gs_alv_materialsobsl = '50'.
gs_valuationdataval_area = p_ph_v.
ELSE.
gs_valuationdataval_area = p_sub_v.
ENDIF.
WHEN 'REF'.
gs_valuationdataval_area = p_ref_v.
WHEN 'PUR'.
gs_valuationdataval_area = p_pur_v.
WHEN 'TRA'.
gs_valuationdataval_area = p_trd_v.
ENDCASE.
ELSE.
gs_valuationdataval_area = p_def_v.
ENDIF.
READ TABLE gt_bwkey INTO gs_bwkey WITH KEY werks = p_plnt_t.
IF sysubrc EQ 0.
gs_valuationdataval_area = gs_bwkeybwkey.
gs_alv_materialbwkey = gs_bwkeybwkey.
ENDIF.
ENDIF.
IF gv_down = gc_x.
mcat1 text067.
mcat1 text070.
mcat1 text068.
mcat1 text071.
mcat1 text072.
mcat1 text073.
mcat1 text074.
mcat1 text075.
mcat1 text076.
mcat1 text077.
mcat1 text078.
mcat1 text079.
mcat1 text080.
mcat1 text081.
mcat1 text082.
mcat1 text083.
mcat1 text084.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 74/124
3/21/2015 Gmail bom extend JCI program kodu
mcat1 text085.
mcat1 text086.
mcat1 text087.
mcat1 text088.
mcat1 text089.
mcat1 text090.
mcat1 text091.
mcat1 text092.
mcat1 text093.
mcat1 text094.
mcat1 text095.
mcat1 text096.
mcat1 text097.
mcat1 text098.
mcat1 text099.
mcat1 text100.
mcat1 text101.
mcat1 text102.
mcat1 text103.
mcat1 text104.
mcat1 text105.
mcat1 text106.
mcat1 text107.
mcat1 text108.
mcat1 text109.
mcat1 text110.
mcat1 text111.
mcat1 text112.
mcat1 text113.
mcat1 text114.
MOVECORRESPONDING gs_alv_material TO gs_download.
MOVECORRESPONDING gs_clientdata TO gs_download.
MOVECORRESPONDING gs_plantdata TO gs_download.
MOVECORRESPONDING gs_valuationdata TO gs_download.
APPEND gs_download TO gt_download.
ELSE.
*To mark the fields to be updated
PERFORM get_bapi_update_table USING gs_plantdata
CHANGING gs_plantdatax.
PERFORM get_bapi_update_table USING gs_forecastparameters
CHANGING gs_forecastparametersx.
PERFORM get_bapi_update_table USING gs_storagelocationdata
CHANGING gs_storagelocationdatax.
PERFORM get_bapi_update_table USING gs_warehousenumberdata
CHANGING gs_warehousenumberdatax.
PERFORM get_bapi_update_table USING gs_valuationdata
CHANGING gs_valuationdatax.
PERFORM get_bapi_update_table USING gs_salesdata
CHANGING gs_salesdatax.
*For Table parameters
PERFORM get_bapi_update_table1 USING gt_unitsofmeasure[]
CHANGING gt_unitsofmeasurex[].
PERFORM get_bapi_update_table1 USING gt_prtdata[]
CHANGING gt_prtdatax[].
*** BEGIN OF INSERTION SAPP4840
REFRESH gt_matlongtext[].
IF NOT gt_materiallongtext[] IS INITIAL.
CLEAR gs_materiallongtext.
LOOP AT gt_materiallongtext INTO gs_materiallongtext.
CLEAR gs_matlongtext.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 75/124
3/21/2015 Gmail bom extend JCI program kodu
MOVECORRESPONDING gs_materiallongtext TO gs_matlongtext.
CLEAR: gs_matlongtexttext_name,gs_materiallongtext.
gs_matlongtexttext_name = ls_headdatamaterial.
APPEND gs_matlongtext TO gt_matlongtext.
CLEAR gs_matlongtext.
ENDLOOP.
ENDIF.
*** END OF INSERTION SAPP4840
*Call BAPI_MATERIAL_SAVEDATA to extend the plant for the material
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_headdata
* clientdata = gs_clientdata
* clientdatax = gs_clientdatax
plantdata = gs_plantdata
plantdatax = gs_plantdatax
forecastparameters = gs_forecastparameters
forecastparametersx = gs_forecastparametersx
storagelocationdata = gs_storagelocationdata
storagelocationdatax = gs_storagelocationdatax
valuationdata = gs_valuationdata
valuationdatax = gs_valuationdatax
warehousenumberdata = gs_warehousenumberdata
warehousenumberdatax = gs_warehousenumberdatax
salesdata = gs_salesdata
salesdatax = gs_salesdatax
flag_online = ' '
flag_cad_call = ' '
no_dequeue = ' '
no_rollback_work = ' '
IMPORTING
return = ls_return
TABLES
* materialdescription = lt_materialdescription
returnmessages = lt_returnmessages
unitsofmeasure = gt_unitsofmeasure
unitsofmeasurex = gt_unitsofmeasurex
internationalartnos = gt_intern
*** BEGIN OF CHANGE SAPP4840
* materiallongtext = gt_materiallongtext
materiallongtext = gt_matlongtext
*** END OF CHANGE SAPP4840
taxclassifications = gt_taxclass
prtdata = gt_prtdata
prtdatax = gt_prtdatax
extensionin = lt_extn
extensioninx = lt_extnx.
IF ls_returntype NE gc_e.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
IF NOT p_ecm_t IS INITIAL.
ls_change_headerchange_no = p_ecm_t.
ls_alt_datesalt_date = sydatum.
ls_alt_datesvalid_from = sydatum.
APPEND ls_alt_dates TO lt_alt_dates.
CLEAR ls_alt_dates.
ls_objmgrecalt_date = sydatum.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 76/124
3/21/2015 Gmail bom extend JCI program kodu
ls_objmgrecchg_objtyp = '4'.
ls_objmgrecmaterial = ls_headdatamaterial.
ls_objmgrecplant = p_plnt_t.
APPEND ls_objmgrec TO lt_objmgrec.
CLEAR ls_objmgrec.
ls_effectivityvalid_from = sydatum.
ls_effectivityvalid_to = '99991212'.
APPEND ls_effectivity TO lt_effectivity.
CALL FUNCTION 'ZP2F_CCAP_ECN_MAINTAIN'
EXPORTING
action = '2'
change_header = ls_change_header
TABLES
alt_dates = lt_alt_dates
objmgrec = lt_objmgrec
effectivity = lt_effectivity.
IF symsgty EQ 'E'.
*Error message when no data found
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = systmsgid
no = systmsgno
v1 = systmsgv1
v2 = systmsgv2
IMPORTING
msg = lv_msg
EXCEPTIONS
OTHERS = 0.
ENDIF.
ENDIF.
ENDIF.
*To capture all messages
IF ls_return IS NOT INITIAL.
CLEAR: gs_messages.
IF ls_returntype = gc_e.
gs_messagesicon = '@0A@'.
ELSE.
gs_messagesicon = '@08@'.
ENDIF.
gs_messagesmatnr = gs_alv_materialmatnr.
gs_messageswerks = p_plnt_t.
gs_messageszp2f_oldmat = gs_alv_materialzp2f_oldmat.
gs_messagesmessage = ls_returnmessage.
APPEND gs_messages TO gt_messages.
ENDIF.
ENDIF.
ENDLOOP.
*Download into excel
IF gt_download IS NOT INITIAL AND gv_down EQ gc_x.
lv_fname = p_path.
IF lv_fname CS '.xls' OR lv_fname CO '.XLS'.
ELSE.
CONCATENATE lv_fname '.xls' INTO lv_fname.
CONDENSE lv_fname.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 77/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
IF p_path IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = lv_fname
filetype = 'DAT'
* APPEND = ' '
write_field_separator = 'X'
TABLES
data_tab = gt_download
fieldnames = lt_int_head.
ELSE.
CLEAR:gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmessage = text058.
APPEND gs_messages TO gt_messages.
ENDIF.
REFRESH: gt_download, lt_int_head.
ENDIF.
*To display all messages in ALV GRID
IF gt_messages[] IS NOT INITIAL.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv.
REFRESH: gt_messages.
ENDIF.
ENDFORM. " PLANT_MATERIAL_EXTN
*&*
*& Form GET_BAPI_UPDATE_TABLE
*&*
* text
**
* >P_CLIENTDATA text
* <P_CLIENTDATAX text
**
FORM get_bapi_update_table USING wa_str TYPE any
CHANGING wa_strx TYPE any.
DATA: lv_len TYPE i,
lv_sy_index TYPE i.
FIELDSYMBOLS: <lv_fldt> TYPE ANY,
<lv_fldtx> TYPE ANY,
<wa_str> TYPE ANY,
<wa_strx> TYPE ANY.
ASSIGN wa_str TO <wa_str>.
ASSIGN wa_strx TO <wa_strx>.
CLEAR lv_sy_index .
lv_sy_index = 1.
DO.
ASSIGN COMPONENT syindex OF STRUCTURE <wa_str> TO <lv_fldt>.
IF sysubrc NE 0.
EXIT.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 78/124
3/21/2015 Gmail bom extend JCI program kodu
lv_sy_index = syindex.
IF <lv_fldt> IS NOT INITIAL AND <lv_fldt> NE '0' .
ASSIGN COMPONENT lv_sy_index OF STRUCTURE <wa_strx> TO <lv_fldtx>.
DESCRIBE FIELD <lv_fldtx> LENGTH lv_len IN CHARACTER MODE.
IF lv_len = 1.
<lv_fldtx> = 'X'.
ELSE.
<lv_fldtx> = <lv_fldt>.
ENDIF.
ENDIF.
lv_sy_index = lv_sy_index + 1.
ENDDO.
ENDFORM. " GET_BAPI_UPDATE_TABLE
*&*
*& Form GET_BAPI_UPDATE_TABLE1
*&*
* text
**
* >l_itab text
* <l_itabx text
**
FORM get_bapi_update_table1 USING l_itab TYPE ANY TABLE
CHANGING l_itabx TYPE ANY TABLE.
DATA: lv_len TYPE i,
lv_sy_index TYPE i,
lv_line TYPE REF TO data.
FIELDSYMBOLS: <l_tab> TYPE ANY TABLE,
<l_tabx> TYPE ANY TABLE,
<l_fldt> TYPE ANY,
<l_fldtx> TYPE ANY,
<wa_str> TYPE ANY,
<wa_strx> TYPE ANY.
ASSIGN l_itab TO <l_tab>.
* Create dynamic work area and assign to table
CREATE DATA lv_line LIKE LINE OF <l_tab>.
ASSIGN lv_line>* TO <wa_str>.
ASSIGN l_itabx TO <l_tabx>.
* Create dynamic work area and assign to table
CREATE DATA lv_line LIKE LINE OF <l_tabx>.
ASSIGN lv_line>* TO <wa_strx>.
LOOP AT <l_tab> INTO <wa_str>.
CLEAR lv_sy_index .
lv_sy_index = 1.
DO.
ASSIGN COMPONENT syindex OF STRUCTURE <wa_str> TO <l_fldt>.
IF sysubrc NE 0.
EXIT.
ENDIF.
IF <l_fldt> IS NOT INITIAL AND <l_fldt> NE '0'.
ASSIGN COMPONENT lv_sy_index OF STRUCTURE <wa_strx> TO
<l_fldtx>.
DESCRIBE FIELD <l_fldtx> LENGTH lv_len IN CHARACTER MODE.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 79/124
3/21/2015 Gmail bom extend JCI program kodu
IF lv_len = 1.
<l_fldtx> = 'X'.
ELSE.
<l_fldtx> = <l_fldt>.
ENDIF.
ENDIF.
lv_sy_index = lv_sy_index + 1.
ENDDO.
INSERT <wa_strx> INTO TABLE <l_tabx>.
CLEAR <wa_strx>.
CLEAR <wa_str>.
ENDLOOP.
ENDFORM. " GET_BAPI_UPDATE_TABLE1
*&*
*& Form EXTEND_BOM_TO_TARGET_PLANT
*&*
* text
**
* > p1 text
* < p2 text
**
FORM extend_bom_to_target_plant .
DATA: lv_multi.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_aeoi_bom.
*Get the BOM related objects from AEOI
IF s_ecm_e IS NOT INITIAL.
SELECT aennr
objkt
FROM aeoi
INTO CORRESPONDING FIELDS OF TABLE gt_aeoi_bom
WHERE aetyp = '02'
AND aennr IN s_ecm_e.
ENDIF.
*To remove M from the objkt key
LOOP AT gt_aeoi_bom INTO gs_aeoi_bom.
gs_aeoi_bomstlnr = gs_aeoi_bomobjkt+1(8).
MODIFY gt_aeoi_bom FROM gs_aeoi_bom.
ENDLOOP.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_bom_create.
IF gt_aeoi_bom[] IS NOT INITIAL.
SELECT matnr
werks
stlan
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_create
FOR ALL ENTRIES IN gt_aeoi_bom
WHERE stlnr = gt_aeoi_bomstlnr
AND werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
ELSEIF s_mats_e IS NOT INITIAL.
SELECT matnr
werks
stlan
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_create
WHERE werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 80/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
IF gt_bom_create IS NOT INITIAL.
SORT gt_bom_create.
DELETE ADJACENT DUPLICATES FROM gt_bom_create
COMPARING ALL FIELDS.
*Get multi level BOm components
IF p_bom_m EQ gc_x.
lv_multi = gc_x.
ELSE.
CLEAR: lv_multi.
ENDIF.
LOOP AT gt_bom_create INTO gs_bom_create.
gs_bom_createplant = p_plnt_t.
IF p_bom_t IS NOT INITIAL.
gs_bom_createbomuse = p_bom_t.
ELSE.
gs_bom_createbomuse = gs_bom_createstlan.
ENDIF.
gs_bom_createecn = p_ecm_t.
MODIFY gt_bom_create FROM gs_bom_create.
ENDLOOP.
*To get BOM components in Multi levels
LOOP AT gt_bom_create INTO gs_bom_create.
REFRESH: gt_stb.
*Call FM to get multi level BOM explosion
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumgb = 'X'
capid = p_app_b
datuv = sydatum
ehndl = '1'
mbwls = 'X'
mehrs = lv_multi
mmory = '1'
mtnrv = gs_bom_creatematnr
werks = p_plnt_e
vrsvo = 'X'
stlan = gs_bom_createstlan
TABLES
stb = gt_stb
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
*Delete the components which don't have BOM
DELETE gt_stb WHERE xtlnr EQ space.
MOVECORRESPONDING gs_bom_create TO gs_bom_create_final.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 81/124
3/21/2015 Gmail bom extend JCI program kodu
gs_bom_create_finalmatnr_c = gs_bom_creatematnr.
APPEND gs_bom_create_final TO gt_bom_create_final .
CLEAR: gs_bom_create_final.
IF lv_multi EQ gc_x.
LOOP AT gt_stb INTO gs_stb.
MOVECORRESPONDING gs_bom_create TO gs_bom_create_final.
gs_bom_create_finalmatnr_c = gs_stbidnrk.
APPEND gs_bom_create_final TO gt_bom_create_final .
ENDLOOP.
ENDIF.
ENDLOOP.
SORT gt_bom_create_final.
DELETE ADJACENT DUPLICATES FROM gt_bom_create_final
COMPARING ALL FIELDS.
IF gt_bom_create_final[] IS NOT INITIAL.
*Logic to whether BOM is created already for this material and Plant
SELECT matnr
werks
stlan
stlal
FROM mast INTO TABLE gt_mast
FOR ALL ENTRIES IN gt_bom_create_final
WHERE matnr = gt_bom_create_finalmatnr_c
AND werks = gt_bom_create_finalplant
AND stlan = gt_bom_create_finalbomuse.
LOOP AT gt_bom_create_final INTO gs_bom_create_final.
READ TABLE gt_mast INTO gs_mast
WITH KEY matnr = gs_bom_create_finalmatnr_c
werks = gs_bom_create_finalplant
stlan = gs_bom_create_finalbomuse.
IF sysubrc NE 0.
gs_bom_create_finalsel = gc_x.
ENDIF.
MODIFY gt_bom_create_final FROM gs_bom_create_final.
ENDLOOP.
*ALV report to check the BOM details
PERFORM build_fieldcatalog_bom.
PERFORM build_layout1.
PERFORM display_alv_bom.
ELSE.
*Error message when no data found
MESSAGE text045 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ELSE.
*Error message when no data found
MESSAGE text045 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDFORM. " EXTEND_BOM_TO_TARGET_PLANT
*&*
*& Form GET_BOM_DETAILS
*&*
* text
**
* >P_GS_BOM_FINAL_MATNR text
* >P_P_PLNT_E text
* >P_GS_BOM_FINAL_STLAN text
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 82/124
3/21/2015 Gmail bom extend JCI program kodu
**
FORM get_bom_details USING p_gs_bom_final_matnr
p_p_plnt_e
p_gs_bom_final_stlan.
DATA: lt_data TYPE TABLE OF csdep_dat,
lt_desc TYPE TABLE OF csdep_desc.
REFRESH: gt_stpo, gt_stko, gt_stpu, lt_data, lt_desc.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = p_gs_bom_final_matnr
plant = p_p_plnt_e
bom_usage = p_gs_bom_final_stlan
TABLES
t_stpo = gt_stpo
t_stko = gt_stko
t_stpu = gt_stpu
t_dep_data = lt_data
t_dep_descr = lt_desc
EXCEPTIONS
error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = p_gs_bom_final_matnr
plant = p_p_plnt_e
bom_usage = p_gs_bom_final_stlan
alternative = '02'
TABLES
t_stpo = gt_stpo
t_stko = gt_stko
t_stpu = gt_stpu
t_dep_data = lt_data
t_dep_descr = lt_desc
EXCEPTIONS
error = 1
OTHERS = 2.
ENDIF.
IF gt_stpo[] IS NOT INITIAL.
LOOP AT gt_stpo INTO gs_stpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_stpocomponent
IMPORTING
output = gs_stpocomponent.
MODIFY gt_stpo FROM gs_stpo.
ENDLOOP.
REFRESH:gt_target_plant, gt_target_mis.
SELECT matnr
werks
FROM marc INTO TABLE gt_target_plant
FOR ALL ENTRIES IN gt_stpo
WHERE matnr = gt_stpocomponent
AND werks = p_plnt_t.
LOOP AT gt_stpo INTO gs_stpo.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 83/124
3/21/2015 Gmail bom extend JCI program kodu
READ TABLE gt_target_plant INTO gs_target_plant
WITH KEY matnr = gs_stpocomponent.
IF sysubrc NE 0.
gs_target_mismatnr = gs_stpocomponent.
APPEND gs_target_mis TO gt_target_mis.
ENDIF.
ENDLOOP.
LOOP AT gt_stpo INTO gs_stpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stpocomponent
IMPORTING
output = gs_stpocomponent.
MODIFY gt_stpo FROM gs_stpo.
ENDLOOP.
ENDIF.
ENDFORM. " GET_BOM_DETAILS
*&*
*& Form CREATE_BOM_TO_NEW_PLANT
*&*
* text
**
* >P_GS_BOM_FINAL_MATNR text
* >P_P_PLNT_E text
* >P_GS_BOM_FINAL_STLAN text
**
FORM create_bom_to_new_plant TABLES gt_legacy_mat STRUCTURE marc
USING p_gs_bom_final_matnr
p_p_plnt_t
p_gs_bom_final_stlan.
DATA: lv_from_date TYPE csap_mbomdatuv,
lv_msg TYPE msg,
lv_num TYPE i.
*Move all the data to required table
REFRESH: gt_stpo1. CLEAR: gs_stko1.
LOOP AT gt_stpo INTO gs_stpo.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
input = gs_stpovalid_from
IMPORTING
output = gs_stpovalid_from.
MOVECORRESPONDING gs_stpo TO gs_stpo1.
CLEAR: gs_stpo1item_guid, gs_stpo1itm_ident.
*** BEGIN OF INSERTION SAPP4840
*** Clear Indicators so that indicators will set by default
*** based on BOM usage during BOM Creation
CLEAR: gs_stpo1rel_cost,gs_stpo1rel_engin,gs_stpo1rel_pmaint,
gs_stpo1rel_prod,gs_stpo1rel_sales,gs_stpo1spare_part.
*** END OF INSERTION SAPP4840
APPEND gs_stpo1 TO gt_stpo1.
ENDLOOP.
LOOP AT gt_stko INTO gs_stko.
MOVECORRESPONDING gs_stko TO gs_stko1.
IF p_bom_st IS NOT INITIAL.
gs_stko1bom_status = p_bom_st.
ENDIF.
ENDLOOP.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 84/124
3/21/2015 Gmail bom extend JCI program kodu
lv_from_date = sydatum.
IF NOT lv_from_date IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
input = lv_from_date
IMPORTING
output = lv_from_date.
ENDIF.
IF p_bom_t IS NOT INITIAL.
CLEAR: p_gs_bom_final_stlan.
p_gs_bom_final_stlan = p_bom_t.
ENDIF.
*FM to create BOM for Target Plant
CALL FUNCTION 'CSAP_MAT_BOM_CREATE'
EXPORTING
material = p_gs_bom_final_matnr
plant = p_p_plnt_t
bom_usage = p_gs_bom_final_stlan
valid_from = lv_from_date
change_no = p_ecm_t
i_stko = gs_stko1
fl_commit_and_wait = 'X'
fl_default_values = 'X'
IMPORTING
bom_no = gv_bom_no
TABLES
t_stpo = gt_stpo1
t_stpu = gt_stpu
EXCEPTIONS
error = 1
OTHERS = 2.
IF sysubrc <> 0.
*Error message when no data found
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = systmsgid
no = systmsgno
v1 = systmsgv1
v2 = systmsgv2
IMPORTING
msg = lv_msg
EXCEPTIONS
OTHERS = 0.
IF systmsgty NE gc_e.
CLEAR: lv_msg.
ENDIF.
IF gt_target_mis[] IS NOT INITIAL.
CLEAR: lv_msg,lv_num.
DESCRIBE TABLE gt_target_mis LINES lv_num.
IF lv_num GT 1.
CONCATENATE text128 p_plnt_t INTO
lv_msg SEPARATED BY space.
ELSE.
READ TABLE gt_target_mis INTO gs_target_mis INDEX 1.
CONCATENATE gs_target_mismatnr text127 p_plnt_t INTO
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 85/124
3/21/2015 Gmail bom extend JCI program kodu
lv_msg SEPARATED BY space.
ENDIF.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmatnr = p_gs_bom_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_final_matnr.
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesmessage = lv_msg.
APPEND gs_messages TO gt_messages.
ELSE.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmatnr = p_gs_bom_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_final_matnr.
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesmessage = lv_msg.
APPEND gs_messages TO gt_messages.
ENDIF.
ELSE.
CLEAR: gs_messages.
gs_messagesicon = '@08@'.
gs_messagesmatnr = p_gs_bom_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_final_matnr.
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesdocnum = gv_bom_no.
gs_messagesmessage = text055.
APPEND gs_messages TO gt_messages.
ENDIF.
ENDFORM. " CREATE_BOM_TO_NEW_PLANT
*&*
*& Form GET_MATERIAL_ALL
*&*
* text
**
* > p1 text
* < p2 text
**
FORM get_material_all .
DATA: lt_unitof_m1 TYPE TABLE OF bapi_marm_ga ,
ls_unitof_m1 TYPE bapi_marm_ga,
lt_intern1 TYPE TABLE OF bapi_mean_ga,
ls_intern1 TYPE bapi_mean_ga,
lt_materiallongtext1 TYPE TABLE OF bapi_mltx_ga,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 86/124
3/21/2015 Gmail bom extend JCI program kodu
ls_materiallongtext1 TYPE bapi_mltx_ga,
lt_taxclass1 TYPE TABLE OF bapi_mlan_ga,
ls_taxclass1 TYPE bapi_mlan_ga,
ls_warehousenumberdata1 TYPE bapi_mlgn_ga.
DATA: ls_prtdata1 TYPE bapi_mfhm_ga,
lv_bwkey_t TYPE mbewbwkey.
CLEAR: gs_clientdata1, gs_plantdata1, gs_forecastparameters1,
gs_storagelocationdata1, gs_valuationdata1,gs_salesdata1,
ls_prtdata1, ls_warehousenumberdata1.
CLEAR: gs_clientdata, gs_plantdata, gs_forecastparameters,
gs_storagelocationdata, gs_valuationdata,gs_salesdata,
gt_prtdata.
REFRESH: lt_unitof_m1, lt_intern1,lt_materiallongtext1, lt_taxclass1,
gt_prtdata, gt_unitsofmeasure, gt_intern,
gt_materiallongtext, gt_taxclass.
CLEAR: gv_error.
SELECT SINGLE bwkey
FROM mbew INTO lv_bwkey_t
WHERE matnr = gs_alv_materialmat_r
AND bwkey = gs_alv_materialbwkey.
IF sysubrc NE 0.
CLEAR: gs_alv_materialbwkey.
ENDIF.
*Getting data for Target plant and ref Material
CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
EXPORTING
material = gs_alv_materialmat_r
val_area = gs_alv_materialbwkey
plant = p_plnt_t
stge_loc = gs_alv_materiallgpro
salesorg = gs_alv_materialvkorg
distr_chan = gs_alv_materialvtweg
whsenumber = gs_alv_materiallgnum
IMPORTING
clientdata = gs_clientdata1
plantdata = gs_plantdata1
forecastparameters = gs_forecastparameters1
storagelocationdata = gs_storagelocationdata1
valuationdata = gs_valuationdata1
warehousenumberdata = ls_warehousenumberdata1
salesdata = gs_salesdata1
prtdata = ls_prtdata1
TABLES
unitsofmeasure = lt_unitof_m1
internationalartnos = lt_intern1
materiallongtext = lt_materiallongtext1
taxclassifications = lt_taxclass1.
IF gs_clientdata1 IS NOT INITIAL
AND gs_plantdata1 IS NOT INITIAL.
*Getting data for Target plant and ref Material
CLEAR:gs_clientdata1.
CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
EXPORTING
material = gs_alv_materialmatnr
IMPORTING
clientdata = gs_clientdata1.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 87/124
3/21/2015 Gmail bom extend JCI program kodu
MOVECORRESPONDING:
gs_clientdata1 TO gs_clientdata,
gs_plantdata1 TO gs_plantdata,
gs_forecastparameters1 TO gs_forecastparameters,
gs_storagelocationdata1 TO gs_storagelocationdata,
gs_valuationdata1 TO gs_valuationdata,
gs_salesdata1 TO gs_salesdata,
ls_warehousenumberdata1 TO gs_warehousenumberdata.
MOVECORRESPONDING ls_prtdata1 TO gs_prtdata.
APPEND gs_prtdata TO gt_prtdata.
LOOP AT lt_unitof_m1 INTO ls_unitof_m1.
MOVECORRESPONDING ls_unitof_m1 TO gs_unitsofmeasure.
APPEND gs_unitsofmeasure TO gt_unitsofmeasure.
ENDLOOP.
LOOP AT lt_intern1 INTO ls_intern1.
MOVECORRESPONDING ls_intern1 TO gs_intern.
APPEND gs_intern TO gt_intern.
ENDLOOP.
LOOP AT lt_materiallongtext1 INTO ls_materiallongtext1.
MOVECORRESPONDING ls_materiallongtext1 TO gs_materiallongtext.
APPEND gs_materiallongtext TO gt_materiallongtext.
ENDLOOP.
LOOP AT lt_taxclass1 INTO ls_taxclass1.
MOVECORRESPONDING ls_taxclass1 TO gs_taxclass.
APPEND gs_taxclass TO gt_taxclass.
ENDLOOP.
ELSE.
*Getting data for source Plant and Source Material
READ TABLE gt_bwkey INTO gs_bwkey WITH KEY werks = p_plnt_e.
IF sysubrc EQ 0.
gs_alv_materialbwkey = gs_bwkeybwkey.
ENDIF.
READ TABLE gt_marc_e INTO gs_marc_e
WITH KEY matnr = gs_alv_materialmatnr.
IF sysubrc EQ 0.
gs_alv_materiallgpro = gs_marc_elgpro.
ENDIF.
SELECT SINGLE bwkey
FROM mbew INTO lv_bwkey_t
WHERE matnr = gs_alv_materialmatnr
AND bwkey = gs_alv_materialbwkey.
IF sysubrc NE 0.
CLEAR: gs_alv_materialbwkey.
ENDIF.
CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
EXPORTING
material = gs_alv_materialmatnr
val_area = gs_alv_materialbwkey
plant = p_plnt_e
stge_loc = gs_alv_materiallgpro
* salesorg = gs_alv_materialvkorg
* distr_chan = gs_alv_materialvtweg
* whsenumber = gs_alv_materiallgnum
IMPORTING
clientdata = gs_clientdata1
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 88/124
3/21/2015 Gmail bom extend JCI program kodu
plantdata = gs_plantdata1
forecastparameters = gs_forecastparameters1
storagelocationdata = gs_storagelocationdata1
valuationdata = gs_valuationdata1
warehousenumberdata = ls_warehousenumberdata1
salesdata = gs_salesdata1
prtdata = ls_prtdata1
TABLES
unitsofmeasure = lt_unitof_m1
internationalartnos = lt_intern1
materiallongtext = lt_materiallongtext1
taxclassifications = lt_taxclass1.
IF gs_clientdata1 IS NOT INITIAL AND
gs_plantdata1 IS NOT INITIAL.
MOVECORRESPONDING:
gs_clientdata1 TO gs_clientdata,
gs_plantdata1 TO gs_plantdata,
gs_forecastparameters1 TO gs_forecastparameters,
gs_storagelocationdata1 TO gs_storagelocationdata,
gs_valuationdata1 TO gs_valuationdata,
gs_salesdata1 TO gs_salesdata,
ls_warehousenumberdata1 TO gs_warehousenumberdata.
MOVECORRESPONDING ls_prtdata1 TO gs_prtdata.
APPEND gs_prtdata TO gt_prtdata.
LOOP AT lt_unitof_m1 INTO ls_unitof_m1.
MOVECORRESPONDING ls_unitof_m1 TO gs_unitsofmeasure.
APPEND gs_unitsofmeasure TO gt_unitsofmeasure.
ENDLOOP.
LOOP AT lt_intern1 INTO ls_intern1.
MOVECORRESPONDING ls_intern1 TO gs_intern.
APPEND gs_intern TO gt_intern.
ENDLOOP.
LOOP AT lt_materiallongtext1 INTO ls_materiallongtext1.
MOVECORRESPONDING ls_materiallongtext1 TO gs_materiallongtext.
APPEND gs_materiallongtext TO gt_materiallongtext.
ENDLOOP.
LOOP AT lt_taxclass1 INTO ls_taxclass1.
MOVECORRESPONDING ls_taxclass1 TO gs_taxclass.
APPEND gs_taxclass TO gt_taxclass.
ENDLOOP.
ELSE.
*Error message when no data found
CLEAR: gs_messages.
gv_error = gc_x.
gs_messagesicon = '@0A@'.
gs_messagesmessage = text050.
APPEND gs_messages TO gt_messages.
ENDIF.
ENDIF.
ENDFORM. " GET_MATERIAL_ALL
*&*
*& Form BUILD_FIELDCATALOG_BOM
*&*
* text
**
* > p1 text
* < p2 text
**
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 89/124
3/21/2015 Gmail bom extend JCI program kodu
FORM build_fieldcatalog_bom .
REFRESH: gt_fieldcat_bom.
gs_fieldcat_bomfieldname = gc_sel.
gs_fieldcat_bomcheckbox = gc_x.
gs_fieldcat_bomjust = 'C'.
gs_fieldcat_bomedit = gc_x.
gs_fieldcat_bomseltext_m = text118.
APPEND gs_fieldcat_bom TO gt_fieldcat_bom.
mcat2 gc_matnr text125.
mcat2 gc_mat_c text133.
mcat2 gc_werks text068.
mcat2 gc_stlan text115 .
mcat2 gc_plant text073.
mcat2 gc_bomuse text117.
mcat2 gc_ecm text116.
ENDFORM. " BUILD_FIELDCATALOG_BOM
*&*
*& Form DISPLAY_ALV_BOM
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_alv_bom .
gv_repid = syrepid.
*FM to display ALV for BOM Extn to Plant
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'PF_STATUS1'
i_callback_user_command = 'USER_COMMAND1'
i_grid_title = text063
is_layout = gs_layout1
it_fieldcat = gt_fieldcat_bom
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_bom_create_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_BOM
*&*
*& Form user_command
*&*
* text
**
*User actions on ALV
FORM user_command1 USING r_ucomm TYPE syucomm
selfield TYPE slis_selfield.
CASE r_ucomm.
*If user tries to extend a BOM to another Plant
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 90/124
3/21/2015 Gmail bom extend JCI program kodu
WHEN 'EASY'.
PERFORM bom_extn.
WHEN 'DWN' .
PERFORM bom_extn_down.
WHEN 'SEL'.
PERFORM select_all_entries CHANGING gt_bom_create_final[].
WHEN 'DESEL'.
PERFORM deselect_all_entries CHANGING gt_bom_create_final[].
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
"user_command*
* FORM PFSTATUS *
**
*Form for settings the pf status to the alv
FORM pf_status1 USING rt_extab TYPE slis_t_extab.
*PF Status for ALV report
SET PFSTATUS 'STANDARD'.
ENDFORM. "pfstatus
*&*
*& Form BOM_EXTN
*&*
* text
**
* > p1 text
* < p2 text
**
FORM bom_extn .
DATA: ref1 TYPE REF TO cl_gui_alv_grid.
*** BEGIN OF INSERTION SAPP4600
TYPES: BEGIN OF ty_usobj,
usobj TYPE aeoiusobj,
END OF ty_usobj.
DATA: lv_datuv TYPE aenrdatuv,
ls_datuv TYPE aenr,
ls_aeoi TYPE aeoi,
lt_usobj TYPE TABLE OF ty_usobj,
ls_usobj TYPE ty_usobj,
lt_aeoi TYPE TABLE OF aeoi,
ls_aedt LIKE LINE OF gt_aedt.
*** END OF INSERTION SAPP4600
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.
*To get the ALV grid details
CALL METHOD ref1>check_changed_data.
REFRESH gt_legacy_mat[].
IF NOT gt_bom_create_final[] IS INITIAL.
SELECT matnr werks zp2f_oldmat FROM marc
INTO CORRESPONDING FIELDS OF TABLE gt_legacy_mat
FOR ALL ENTRIES IN gt_bom_create_final
WHERE matnr EQ gt_bom_create_finalmatnr_c
AND werks EQ p_plnt_t.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 91/124
3/21/2015 Gmail bom extend JCI program kodu
*** BEGIN OF INSERTION SAPP4600
IF p_alt_d IS NOT INITIAL AND p_alt_c IS NOT INITIAL.
READ TABLE gt_bom_create_final
WITH KEY sel = gc_x TRANSPORTING NO FIELDS.
IF sysubrc EQ 0.
CLEAR: lv_datuv, ls_datuv.
SELECT SINGLE * FROM aenr
INTO ls_datuv
WHERE aennr = p_ecm_t.
IF sysubrc EQ 0.
lv_datuv = ls_datuvdatuv.
ls_datuvdatuv = p_alt_d.
MODIFY aenr FROM ls_datuv.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
*** END OF INSERTION SAPP4600
*To get BOM components in Multi levels
LOOP AT gt_bom_create_final INTO gs_bom_create_final
WHERE sel = gc_x.
*To get all the values in an internal table for Main Material
PERFORM get_bom_details USING gs_bom_create_finalmatnr_c
p_plnt_e
gs_bom_create_finalstlan.
PERFORM create_bom_to_new_plant TABLES gt_legacy_mat
USING gs_bom_create_finalmatnr_c
p_plnt_t
gs_bom_create_finalstlan.
ENDLOOP.
*** BEGIN OF INSERTION SAPP4600
READ TABLE gt_bom_create_final
WITH KEY sel = gc_x TRANSPORTING NO FIELDS.
IF sysubrc EQ 0.
WAIT UP TO 5 SECONDS.
IF p_alt_d IS NOT INITIAL AND p_alt_c IS NOT INITIAL.
CLEAR: ls_usobj. REFRESH: lt_usobj.
LOOP AT gt_bom_create_final INTO gs_bom_create_final
WHERE sel = gc_x.
CONCATENATE gs_bom_create_finalmatnr_c p_plnt_t
gs_bom_create_finalstlan INTO ls_usobjusobj.
APPEND ls_usobj TO lt_usobj.
ENDLOOP.
CLEAR: ls_aeoi. REFRESH: lt_aeoi.
IF lt_usobj[] IS NOT INITIAL.
SELECT * FROM aeoi
INTO TABLE lt_aeoi
FOR ALL ENTRIES IN lt_usobj
WHERE aennr = p_ecm_t
AND aetyp = '02'
AND usobj = lt_usobjusobj.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 92/124
3/21/2015 Gmail bom extend JCI program kodu
LOOP AT lt_aeoi INTO ls_aeoi.
READ TABLE gt_aedt INTO ls_aedt
WITH KEY aennr = p_ecm_t.
IF sysubrc EQ 0.
ls_aeoiaedtz = ls_aedtaedtz.
MODIFY lt_aeoi FROM ls_aeoi.
ENDIF.
ENDLOOP.
IF lt_aeoi[] IS NOT INITIAL.
MODIFY aeoi FROM TABLE lt_aeoi.
COMMIT WORK.
ENDIF.
IF ls_datuv IS NOT INITIAL.
ls_datuvdatuv = lv_datuv.
MODIFY aenr FROM ls_datuv.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
*** END OF INSERTION SAPP4600
*To display all messages in ALV GRID
IF gt_messages[] IS NOT INITIAL.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv.
REFRESH: gt_messages.
ENDIF.
ENDFORM. " BOM_EXTN
*&*
*& Form BOM_EXTN_DOWN
*&*
* text
**
* > p1 text
* < p2 text
**
FORM bom_extn_down .
DATA: lv_multi,
lv_xtlnr TYPE stpoxxtlnr.
DATA: lv_ref1 TYPE REF TO cl_gui_alv_grid.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_ref1.
*To get the ALV grid details
CALL METHOD lv_ref1>check_changed_data.
*Get multi level BOm components
IF p_bom_m EQ gc_x.
lv_multi = gc_x.
ELSE.
CLEAR: lv_multi.
ENDIF.
*To get BOM components in Multi levels
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 93/124
3/21/2015 Gmail bom extend JCI program kodu
REFRESH: gt_stb, gt_bom_down.
LOOP AT gt_bom_create_final INTO gs_bom_create_final
WHERE sel = gc_x.
*Call FM to get multi level BOM explosion
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
aumgb = 'X'
capid = p_app_b
datuv = sydatum
ehndl = '1'
mbwls = 'X'
mehrs = lv_multi
mmory = '1'
mtnrv = gs_bom_create_finalmatnr_c
werks = p_plnt_e
vrsvo = 'X'
stlan = gs_bom_create_finalstlan
TABLES
stb = gt_stb
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
*To get all the values in an internal table for Main Material
PERFORM get_bom_details USING gs_bom_create_finalmatnr_c
p_plnt_e
gs_bom_create_finalstlan.
LOOP AT gt_stko INTO gs_stko.
MOVECORRESPONDING gs_stko TO gt_bom_down.
ENDLOOP.
LOOP AT gt_stb INTO gs_stb.
MOVECORRESPONDING gs_stb TO gt_bom_down.
CLEAR:lv_xtlnr.
lv_xtlnr = gs_stbstlnr.
CLEAR: gs_stb.
READ TABLE gt_stb INTO gs_stb WITH KEY xtlnr = lv_xtlnr.
IF sysubrc EQ 0.
gt_bom_downmatnr_c = gs_stbidnrk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gt_bom_downmatnr_c
IMPORTING
output = gt_bom_downmatnr_c.
ELSE.
gt_bom_downmatnr_c = gs_bom_create_finalmatnr_c.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gt_bom_downmatnr_c
IMPORTING
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 94/124
3/21/2015 Gmail bom extend JCI program kodu
output = gt_bom_downmatnr_c.
ENDIF.
gt_bom_downmatnr = gs_bom_create_finalmatnr_c.
gt_bom_downwerks = p_plnt_t.
IF p_bom_t IS NOT INITIAL.
gt_bom_downstlan = p_bom_t.
ENDIF.
IF p_bom_st IS NOT INITIAL.
gt_bom_downbom_status = p_bom_st.
ENDIF.
gt_bom_downchg_no = p_ecm_t.
gt_bom_downsel = gc_x.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gt_bom_downidnrk
IMPORTING
output = gt_bom_downidnrk.
APPEND gt_bom_down.
ENDLOOP.
ENDLOOP.
SORT gt_bom_down ASCENDING BY matnr werks stlan stufe wegxx.
IF gt_bom_down[] IS NOT INITIAL.
PERFORM build_layout1.
PERFORM build_catalog_bom_down.
PERFORM display_bom_down.
ENDIF.
ENDFORM. " BOM_EXTN_DOWN
*&*
*& Form BUILD_CATALOG_BOM_DOWN
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_catalog_bom_down .
REFRESH: gt_fieldcat1.
gv_repid = syrepid.
*FM to create field catalog for final internal table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = gv_repid
i_internal_tabname = 'GT_BOM_DOWN'
i_inclname = gv_repid
i_bypassing_buffer = gc_x
CHANGING
ct_fieldcat = gt_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
LOOP AT gt_fieldcat1 INTO gs_fieldcat1.
IF gs_fieldcat1fieldname = 'MATNR'.
gs_fieldcat1seltext_m = text125.
gs_fieldcat1seltext_s = text125.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 95/124
3/21/2015 Gmail bom extend JCI program kodu
gs_fieldcat1reptext_ddic = text125.
gs_fieldcat1seltext_l = text125.
ENDIF.
IF gs_fieldcat1fieldname = 'SEL'.
gs_fieldcat1seltext_m = text118.
gs_fieldcat1checkbox = gc_x.
gs_fieldcat1edit = gc_x.
ENDIF.
IF gs_fieldcat1fieldname = 'MATNR_C'.
CLEAR :gs_fieldcat1seltext_m,
gs_fieldcat1seltext_s,
gs_fieldcat1reptext_ddic,
gs_fieldcat1ref_fieldname,
gs_fieldcat1ref_tabname.
gs_fieldcat1seltext_l = text134.
ENDIF.
IF gs_fieldcat1fieldname = 'IDNRK'.
CLEAR :gs_fieldcat1seltext_m,
gs_fieldcat1seltext_s,
gs_fieldcat1reptext_ddic,
gs_fieldcat1ref_fieldname,
gs_fieldcat1ref_tabname.
gs_fieldcat1seltext_l = text135.
ENDIF.
MODIFY gt_fieldcat1 FROM gs_fieldcat1.
ENDLOOP.
ENDFORM. " BUILD_CATALOG_BOM_DOWN
*&*
*& Form DISPLAY_BOM_DOWN
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_bom_down .
gv_repid = syrepid.
*FM to display ALV for Material Extn to Plant
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'PF_STATUS2'
i_callback_user_command = 'USER_COMMAND2'
i_grid_title = text063
is_layout = gs_layout1
it_fieldcat = gt_fieldcat1
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_bom_down
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
ENDFORM. " DISPLAY_BOM_DOWN
*&*
*& Form user_command
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 96/124
3/21/2015 Gmail bom extend JCI program kodu
*&*
* text
**
*User actions on ALV
FORM user_command2 USING r_ucomm TYPE syucomm
selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'DWN' .
PERFORM bom_download.
WHEN 'SEL'.
PERFORM select_all_entries_bom_dwn CHANGING gt_bom_down[].
WHEN 'DESEL'.
PERFORM deselect_all_entries_bom_dwn CHANGING gt_bom_down[].
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
"user_command*
* FORM PFSTATUS *
**
*Form for settings the pf status to the alv
FORM pf_status2 USING rt_extab TYPE slis_t_extab.
*PF Status for ALV report
SET PFSTATUS 'STANDARD1'.
ENDFORM. "pfstatus
*&
*&*
*& Form BOM_DOWNLOAD
*&*
* text
**
* > p1 text
* < p2 text
**
FORM bom_download .
DATA: lv_fname TYPE string.
TYPES : BEGIN OF ty_int_head,
field1(20) TYPE c, " Header Data
END OF ty_int_head.
DATA: lt_int_head TYPE TABLE OF ty_int_head,
ls_int_head TYPE ty_int_head.
DATA: lv_ref1 TYPE REF TO cl_gui_alv_grid.
*Download into excel
IF gt_bom_down IS NOT INITIAL.
lv_fname = p_path.
IF lv_fname CS '.xls' OR lv_fname CO '.XLS'.
ELSE.
CONCATENATE lv_fname '.xls' INTO lv_fname.
CONDENSE lv_fname.
ENDIF.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_ref1.
*To get the ALV grid details
CALL METHOD lv_ref1>check_changed_data.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 97/124
3/21/2015 Gmail bom extend JCI program kodu
IF p_path IS NOT INITIAL.
REFRESH: lt_int_head.
mcat1 text067.
mcat1 text119.
mcat1 text124.
mcat1 text122.
mcat1 text121.
mcat1 text120.
mcat1 text123.
REFRESH: gt_bom_down1.
LOOP AT gt_bom_down WHERE sel = gc_x.
MOVECORRESPONDING gt_bom_down TO gs_bom_down1.
APPEND gs_bom_down1 TO gt_bom_down1.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = lv_fname
filetype = 'DAT'
* APPEND = ' '
write_field_separator = 'X'
TABLES
data_tab = gt_bom_down1
fieldnames = lt_int_head.
ELSE.
CLEAR:gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmessage = text058.
APPEND gs_messages TO gt_messages.
ENDIF.
ENDIF.
*To display all messages in ALV GRID
IF gt_messages[] IS NOT INITIAL.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv.
REFRESH: gt_messages.
ENDIF.
ENDFORM. " BOM_DOWNLOAD
*&*
*& Form SELECT_ALL_ENTRIES
*&*
* text
**
* <P_GT_BOM_CREATE_FINAL[] text
*
FORM select_all_entries CHANGING p_gt_bom_create_final TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab TYPE ty_bom_final2.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 98/124
3/21/2015 Gmail bom extend JCI program kodu
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_bom_create_final INTO ls_outtab.
ls_outtabsel = 'X'.
MODIFY p_gt_bom_create_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES
*&*
*& Form DESELECT_ALL_ENTRIES
*&*
* text
**
* <P_GT_BOM_CREATE_FINAL[] text
**
FORM deselect_all_entries CHANGING p_gt_bom_create_final TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab TYPE ty_bom_final2.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_bom_create_final INTO ls_outtab.
ls_outtabsel = ' '.
MODIFY p_gt_bom_create_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " DESELECT_ALL_ENTRIES
*&*
*& Form SELECT_ALL_ENTRIES_MAT_EXTN
*&*
* text
**
* <P_GT_ALV_MATERIAL[] text
**
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 99/124
3/21/2015 Gmail bom extend JCI program kodu
FORM select_all_entries_mat_extn CHANGING p_gt_alv_material TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_alv_material.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_alv_material INTO ls_outtab.
ls_outtabsel = 'X'.
MODIFY p_gt_alv_material FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES_MAT_EXTN
*&*
*& Form DESELECT_ALL_ENTRIES_MAT_EXTN
*&*
* text
**
* <P_GT_ALV_MATERIAL[] text
**
FORM deselect_all_entries_mat_extn CHANGING p_gt_alv_material TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_alv_material.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_alv_material INTO ls_outtab.
ls_outtabsel = ' '.
MODIFY p_gt_alv_material FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 100/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
ENDFORM. " DESELECT_ALL_ENTRIES_MAT_EXTN
*&*
*& Form SELECT_ALL_ENTRIES_BOM_DWN
*&*
* text
**
* <P_GT_BOM_DOWN[] text
**
FORM select_all_entries_bom_dwn CHANGING p_gt_bom_down TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_bom_down.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_bom_down INTO ls_outtab.
ls_outtabsel = 'X'.
MODIFY p_gt_bom_down FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES_BOM_DWN
*&*
*& Form DESELECT_ALL_ENTRIES_BOM_DWN
*&*
* text
**
* <P_GT_BOM_DOWN[] text
**
FORM deselect_all_entries_bom_dwn CHANGING p_gt_bom_down TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_bom_down.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 101/124
3/21/2015 Gmail bom extend JCI program kodu
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_bom_down INTO ls_outtab.
ls_outtabsel = ' '.
MODIFY p_gt_bom_down FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " DESELECT_ALL_ENTRIES_BOM_DWN
*&*
*& Form ASSIGN_BOM_TO_TARGET_PLANT
*&*
* text
**
* > p1 text
* < p2 text
**
FORM assign_bom_to_target_plant .
*To get MATNR and STLAN details from MAST .
REFRESH: gt_aeoi_bom[].
*Get the BOM related objects from AEOI
IF s_ecm_e IS NOT INITIAL.
SELECT aennr
objkt
FROM aeoi
INTO CORRESPONDING FIELDS OF TABLE gt_aeoi_bom
WHERE aetyp = '02'
AND aennr IN s_ecm_e.
ENDIF.
*To remove M from the objkt key
CLEAR gs_aeoi_bom.
LOOP AT gt_aeoi_bom INTO gs_aeoi_bom.
gs_aeoi_bomstlnr = gs_aeoi_bomobjkt+1(8).
MODIFY gt_aeoi_bom FROM gs_aeoi_bom.
CLEAR gs_aeoi_bom.
ENDLOOP.
*To get MATNR and STLAN details from MAST .
REFRESH: gt_bom_ext[].
IF gt_aeoi_bom[] IS NOT INITIAL.
SELECT matnr
werks
stlan
stlal
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_ext
FOR ALL ENTRIES IN gt_aeoi_bom
WHERE stlnr = gt_aeoi_bomstlnr
AND werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
ELSEIF s_mats_e IS NOT INITIAL.
SELECT matnr
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 102/124
3/21/2015 Gmail bom extend JCI program kodu
werks
stlan
stlal
FROM mast INTO CORRESPONDING FIELDS OF TABLE gt_bom_ext
WHERE werks = p_plnt_e
AND matnr IN s_mats_e
AND stlan IN s_bom_e.
ENDIF.
IF gt_bom_ext IS NOT INITIAL.
SORT gt_bom_ext.
DELETE ADJACENT DUPLICATES FROM gt_bom_ext
COMPARING ALL FIELDS.
REFRESH gt_bom_ext_final[].
CLEAR: gs_bom_ext,gs_bom_ext_final.
LOOP AT gt_bom_ext INTO gs_bom_ext.
gs_bom_extplant = p_plnt_t.
MODIFY gt_bom_ext FROM gs_bom_ext.
MOVECORRESPONDING gs_bom_ext TO gs_bom_ext_final.
APPEND gs_bom_ext_final TO gt_bom_ext_final .
CLEAR: gs_bom_ext,gs_bom_ext_final.
ENDLOOP.
SORT gt_bom_ext_final.
DELETE ADJACENT DUPLICATES FROM gt_bom_ext_final
COMPARING ALL FIELDS.
REFRESH gt_mast[].
IF gt_bom_ext_final[] IS NOT INITIAL.
*Logic to whether BOM is assigned already for this material and Plant
SELECT matnr
werks
stlan
stlal
FROM mast INTO TABLE gt_mast
FOR ALL ENTRIES IN gt_bom_ext_final
WHERE matnr = gt_bom_ext_finalmatnr
AND werks = gt_bom_ext_finalplant
AND stlan = gt_bom_ext_finalstlan
AND stlal = gt_bom_ext_finalstlal.
CLEAR gs_bom_ext_final.
LOOP AT gt_bom_ext_final INTO gs_bom_ext_final.
CLEAR gs_mast.
READ TABLE gt_mast INTO gs_mast
WITH KEY matnr = gs_bom_ext_finalmatnr
werks = gs_bom_ext_finalplant
stlan = gs_bom_ext_finalstlan
stlal = gs_bom_ext_finalstlal.
IF sysubrc NE 0.
gs_bom_ext_finalsel = gc_x.
ENDIF.
MODIFY gt_bom_ext_final FROM gs_bom_ext_final.
CLEAR:gs_bom_ext_final,gs_mast.
ENDLOOP.
*ALV report to check the BOM details
PERFORM build_fieldcatalog_ext_bom.
PERFORM build_layout1.
PERFORM display_alv_ext_bom.
ELSE.
*Error message when no data found
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 103/124
3/21/2015 Gmail bom extend JCI program kodu
MESSAGE text045 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ELSE.
*Error message when no data found
MESSAGE text045 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDFORM. " ASSIGN_BOM_TO_TARGET_PLANT
*&*
*& Form BUILD_FIELDCATALOG_EXT_BOM
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_fieldcatalog_ext_bom .
REFRESH: gt_fieldcat_ext_bom.
gs_fieldcat_ext_bomfieldname = gc_sel.
gs_fieldcat_ext_bomcheckbox = gc_x.
gs_fieldcat_ext_bomjust = 'C'.
gs_fieldcat_ext_bomedit = gc_x.
gs_fieldcat_ext_bomseltext_m = text118.
APPEND gs_fieldcat_ext_bom TO gt_fieldcat_ext_bom.
mcat3 gc_matnr text067.
mcat3 gc_werks text068.
mcat3 gc_stlan text115.
mcat3 gc_stlal text137.
mcat3 gc_plant text073.
ENDFORM. " BUILD_FIELDCATALOG_EXT_BOM
*&*
*& Form DISPLAY_ALV_EXT_BOM
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_alv_ext_bom .
gv_repid = syrepid.
*FM to display ALV for BOM assignment to Plant
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'PF_STATUS3'
i_callback_user_command = 'USER_COMMAND3'
i_grid_title = text136
is_layout = gs_layout1
it_fieldcat = gt_fieldcat_ext_bom
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_bom_ext_final
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 104/124
3/21/2015 Gmail bom extend JCI program kodu
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_EXT_BOM
*&*
*& Form user_command
*&*
* text
**
*User actions on ALV
FORM user_command3 USING r_ucomm TYPE syucomm
selfield TYPE slis_selfield.
CASE r_ucomm.
*If user tries to assign a BOM to another Plant
WHEN 'EASY'.
PERFORM bom_assign_plnt.
WHEN 'SEL'.
PERFORM select_all_entries_bomext CHANGING gt_bom_ext_final[].
WHEN 'DESEL'.
PERFORM deselect_all_entries_bomext CHANGING gt_bom_ext_final[].
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
**
* FORM PFSTATUS *
**
*Form for settings the pf status to the alv
FORM pf_status3 USING rt_extab TYPE slis_t_extab.
*PF Status for ALV report
SET PFSTATUS 'STANDARD3'.
ENDFORM. "pfstatus
*&*
*& Form SELECT_ALL_ENTRIES_BOMEXT
*&*
* text
**
* <P_GT_BOM_EXT_FINAL[] text
**
FORM select_all_entries_bomext CHANGING p_gt_bom_ext_final TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab TYPE ty_bom_ext_final.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 105/124
3/21/2015 Gmail bom extend JCI program kodu
CLEAR ls_outtab.
LOOP AT p_gt_bom_ext_final INTO ls_outtab.
ls_outtabsel = 'X'.
MODIFY p_gt_bom_ext_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES_BOMEXT
*&*
*& Form DESELECT_ALL_ENTRIES_BOMEXT
*&*
* text
**
* <P_GT_BOM_EXT_FINAL[] text
**
FORM deselect_all_entries_bomext CHANGING p_gt_bom_ext_final TYPE
STANDARD TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab TYPE ty_bom_ext_final.
DATA: l_valid TYPE c.
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_bom_ext_final INTO ls_outtab.
ls_outtabsel = ' '.
MODIFY p_gt_bom_ext_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " DESELECT_ALL_ENTRIES_BOMEXT
*&*
*& Form BOM_ASSIGN_PLNT
*&*
* text
**
* > p1 text
* < p2 text
**
FORM bom_assign_plnt .
DATA: ref1 TYPE REF TO cl_gui_alv_grid.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 106/124
3/21/2015 Gmail bom extend JCI program kodu
*For capturing the selected data
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.
*To get the ALV grid details
CALL METHOD ref1>check_changed_data.
REFRESH gt_legacy_mat[].
IF NOT gt_bom_ext_final[] IS INITIAL.
SELECT matnr werks zp2f_oldmat FROM marc
INTO CORRESPONDING FIELDS OF TABLE gt_legacy_mat
FOR ALL ENTRIES IN gt_bom_ext_final
WHERE matnr EQ gt_bom_ext_finalmatnr
AND werks EQ p_plnt_t.
ENDIF.
CLEAR gs_bom_ext_final.
LOOP AT gt_bom_ext_final INTO gs_bom_ext_final WHERE sel = gc_x.
**To get all the values in an internal table for Main Material
PERFORM fetch_bom_details USING gs_bom_ext_finalmatnr
p_plnt_e
gs_bom_ext_finalstlan
gs_bom_ext_finalstlal.
PERFORM assign_bom_to_new_plant TABLES gt_legacy_mat
USING gs_bom_ext_finalmatnr
p_plnt_t
gs_bom_ext_finalstlan
gs_bom_ext_finalstlal.
CLEAR gs_bom_ext_final.
ENDLOOP.
*To display all messages in ALV GRID
IF gt_messages[] IS NOT INITIAL.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv.
REFRESH: gt_messages.
ENDIF.
ENDFORM. " BOM_ASSIGN_PLNT
*&*
*& Form ASSIGN_BOM_TO_NEW_PLANT
*&*
* text
**
* >P_GT_LEGACY_MAT text
* >P_GS_BOM_EXT_FINAL_MATNR text
* >P_P_PLNT_T text
* >P_GS_BOM_EXT_FINAL_STLAN text
* >P_GS_BOM_EXT_FINAL_STLAL text
**
FORM assign_bom_to_new_plant TABLES gt_legacy_mat STRUCTURE marc
USING p_gs_bom_ext_final_matnr
p_p_plnt_t
p_gs_bom_ext_final_stlan
p_gs_bom_ext_final_stlal.
DATA: lt_plant TYPE STANDARD TABLE OF plant_api,
ls_plant TYPE plant_api,
lv_msg TYPE msg,
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 107/124
3/21/2015 Gmail bom extend JCI program kodu
lv_num TYPE i,
lv_warning TYPE capiflagflwarning.
REFRESH lt_plant[].
CLEAR ls_plant.
ls_plantplant = p_p_plnt_t.
APPEND ls_plant TO lt_plant.
CLEAR: ls_plant,gv_bom_no.
CALL FUNCTION 'CSAP_MAT_BOM_ALLOC_CREATE'
EXPORTING
material = p_gs_bom_ext_final_matnr
plant = p_plnt_e
bom_usage = p_gs_bom_ext_final_stlan
alternative = p_gs_bom_ext_final_stlal
* FL_NO_CHANGE_DOC = ' '
fl_commit_and_wait = 'X'
IMPORTING
fl_warning = lv_warning
* bom_no = gv_bom_no
TABLES
t_plant = lt_plant
EXCEPTIONS
error = 1
OTHERS = 2
.
IF sysubrc <> 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = systmsgid
no = systmsgno
v1 = systmsgv1
v2 = systmsgv2
IMPORTING
msg = lv_msg
EXCEPTIONS
OTHERS = 0.
IF systmsgty NE gc_e.
CLEAR: lv_msg.
ENDIF.
IF gt_target_mis[] IS NOT INITIAL.
CLEAR: lv_msg,lv_num.
DESCRIBE TABLE gt_target_mis LINES lv_num.
IF lv_num GT 1.
CONCATENATE text128 p_plnt_t INTO
lv_msg SEPARATED BY space.
ELSE.
READ TABLE gt_target_mis INTO gs_target_mis INDEX 1.
CONCATENATE gs_target_mismatnr text127 p_plnt_t INTO
lv_msg SEPARATED BY space.
ENDIF.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmatnr = p_gs_bom_ext_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_ext_final_matnr.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 108/124
3/21/2015 Gmail bom extend JCI program kodu
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesmessage = lv_msg.
APPEND gs_messages TO gt_messages.
CLEAR gs_messages.
ELSE.
CLEAR: gs_messages.
gs_messagesicon = '@0A@'.
gs_messagesmatnr = p_gs_bom_ext_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_ext_final_matnr.
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesmessage = lv_msg.
APPEND gs_messages TO gt_messages.
CLEAR gs_messages.
ENDIF.
ELSE.
CLEAR: gs_messages.
gs_messagesicon = '@08@'.
gs_messagesmatnr = p_gs_bom_ext_final_matnr.
CLEAR gs_legacy_mat.
READ TABLE gt_legacy_mat INTO gs_legacy_mat
WITH KEY matnr = p_gs_bom_ext_final_matnr.
IF sysubrc EQ 0.
gs_messageszp2f_oldmat = gs_legacy_matzp2f_oldmat.
ENDIF.
gs_messageswerks = p_p_plnt_t.
gs_messagesmessage = text138.
APPEND gs_messages TO gt_messages.
CLEAR: gv_bom_no,gs_messages.
ENDIF.
ENDFORM. " ASSIGN_BOM_TO_NEW_PLANT
*&*
*& Form FETCH_BOM_DETAILS
*&*
* text
**
* >P_GS_BOM_EXT_FINAL_MATNR text
* >P_P_PLNT_E text
* >P_GS_BOM_EXT_FINAL_STLAN text
* >P_GS_BOM_EXT_FINAL_STLAL text
**
FORM fetch_bom_details USING p_gs_bom_ext_final_matnr
p_p_plnt_e
p_gs_bom_ext_final_stlan
p_gs_bom_ext_final_stlal.
DATA: lt_data TYPE TABLE OF csdep_dat,
lt_desc TYPE TABLE OF csdep_desc.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 109/124
3/21/2015 Gmail bom extend JCI program kodu
REFRESH:gt_stpo[],gt_stko[],gt_stpu[].
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = p_gs_bom_ext_final_matnr
plant = p_plnt_e
bom_usage = p_gs_bom_ext_final_stlan
alternative = p_gs_bom_ext_final_stlal
TABLES
t_stpo = gt_stpo
t_stko = gt_stko
t_stpu = gt_stpu
t_dep_data = lt_data
t_dep_descr = lt_desc
EXCEPTIONS
error = 1
OTHERS = 2.
IF gt_stpo[] IS NOT INITIAL.
CLEAR gs_stpo.
LOOP AT gt_stpo INTO gs_stpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_stpocomponent
IMPORTING
output = gs_stpocomponent.
MODIFY gt_stpo FROM gs_stpo.
CLEAR gs_stpo.
ENDLOOP.
REFRESH:gt_target_plant[], gt_target_mis[].
* Also pass Header Material into STPO for plant validation
gs_stpocomponent = p_gs_bom_ext_final_matnr.
APPEND gs_stpo TO gt_stpo.
CLEAR gs_stpo.
SELECT matnr
werks
FROM marc INTO TABLE gt_target_plant
FOR ALL ENTRIES IN gt_stpo
WHERE matnr = gt_stpocomponent
AND werks = p_plnt_t.
CLEAR gs_stpo.
LOOP AT gt_stpo INTO gs_stpo.
CLEAR gs_target_plant.
READ TABLE gt_target_plant INTO gs_target_plant
WITH KEY matnr = gs_stpocomponent.
IF sysubrc NE 0.
gs_target_mismatnr = gs_stpocomponent.
APPEND gs_target_mis TO gt_target_mis.
CLEAR: gs_target_mis,gs_stpo,gs_target_plant.
ENDIF.
ENDLOOP.
CLEAR gs_stpo.
LOOP AT gt_stpo INTO gs_stpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_stpocomponent
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 110/124
3/21/2015 Gmail bom extend JCI program kodu
IMPORTING
output = gs_stpocomponent.
MODIFY gt_stpo FROM gs_stpo.
CLEAR gs_stpo.
ENDLOOP.
ENDIF.
ENDFORM. " FETCH_BOM_DETAILS
*&*
*& Form F_DATA_RETRIEVAL
*&*
* text
**
* > p1 text
* < p2 text
**
FORM f_data_retrieval .
DATA: lv_flg TYPE c.
gv_colm = 7.
IF p_file IS NOT INITIAL.
REFRESH:gt_data_dir[].
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 1
i_end_col = gv_colm
i_end_row = 65000
TABLES
intern = gt_data_dir
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
LOOP AT gt_data_dir INTO gs_data_dir.
CASE gs_data_dircol.
WHEN '0001'.
MOVE gs_data_dirvalue TO gs_upload_dirmatnr.
PERFORM conv_matnr CHANGING gs_upload_dirmatnr.
WHEN '0002'.
MOVE gs_data_dirvalue TO gs_upload_dirdoktl.
WHEN '0003'.
MOVE gs_data_dirvalue TO gs_upload_dirdokvr.
WHEN '0004'.
MOVE gs_data_dirvalue TO gs_upload_dirrevlv.
WHEN '0005'.
MOVE gs_data_dirvalue TO gs_upload_dirdktxt.
WHEN '0006'.
MOVE gs_data_dirvalue TO gs_upload_dirolddir.
WHEN '0007'.
MOVE gs_data_dirvalue TO gs_upload_dirlink_n.
WHEN OTHERS.
ENDCASE.
AT END OF row.
APPEND gs_upload_dir TO gt_upload_dir.
CLEAR: gs_upload_dir.
ENDAT.
ENDLOOP.
ENDIF.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 111/124
3/21/2015 Gmail bom extend JCI program kodu
IF s_ecm_s IS NOT INITIAL.
REFRESH: gt_aeoi.
SELECT aennr
objkt
revlv
FROM aeoi INTO TABLE gt_aeoi
WHERE aetyp = '41'
AND aennr IN s_ecm_s.
IF gt_aeoi[] IS NOT INITIAL.
*To get the latest version
SORT gt_aeoi DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_aeoi
COMPARING aennr objkt.
ENDIF.
ENDIF.
IF s_dirmat IS NOT INITIAL.
REFRESH: gt_mara_dir.
SELECT matnr
labor
FROM mara INTO TABLE gt_mara_dir
WHERE matnr IN s_dirmat.
ELSEIF gt_upload_dir IS NOT INITIAL.
REFRESH: gt_mara_dir.
SELECT matnr
labor
FROM mara INTO TABLE gt_mara_dir
FOR ALL ENTRIES IN gt_upload_dir
WHERE matnr = gt_upload_dirmatnr.
ENDIF.
IF gt_aeoi IS NOT INITIAL.
SELECT matnr
labor
FROM mara APPENDING TABLE gt_mara_dir
FOR ALL ENTRIES IN gt_aeoi
WHERE matnr = gt_aeoiobjkt.
ENDIF.
REFRESH: gt_doc_type.
gs_doc_typesign = 'I'.
gs_doc_typeoption = 'EQ'.
gs_doc_typelow = p_dokar.
APPEND gs_doc_type TO gt_doc_type.
REFRESH: gt_revlv.
SELECT * FROM tcc09
INTO TABLE gt_revlv
WHERE aetyp = '31'.
REFRESH: gt_doc_final.
LOOP AT gt_mara_dir INTO gs_mara_dir.
REFRESH: gt_doc.
CALL FUNCTION 'ZP2F_GE_REVISION_LEVELS_DUR'
EXPORTING
plant = p_werks
material = gs_mara_dirmatnr
TABLES
document_type = gt_doc_type
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 112/124
3/21/2015 Gmail bom extend JCI program kodu
document_details = gt_doc
* EXCEPTIONS
* PLANT_NOT_FOUND_IN_CUST_TABLE = 1
* OTHERS = 2
.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
APPEND LINES OF gt_doc TO gt_doc_final.
ENDLOOP.
LOOP AT gt_mara_dir INTO gs_mara_dir.
gt_finalmatnr = gs_mara_dirmatnr.
gt_finalwerks = p_werks.
gt_finaldokar = p_dokar.
gt_finaldokar_n = p_dokar.
gt_finalaennr = p_ecm.
gt_finallabor = p_labor.
CLEAR: gs_upload_dir, lv_flg.
READ TABLE gt_upload_dir INTO gs_upload_dir
WITH KEY matnr = gs_mara_dirmatnr.
IF sysubrc EQ 0.
gt_finaldoktl_n = gs_upload_dirdoktl.
gt_finaldokvr_n = gs_upload_dirdokvr.
gt_finalrevlv_n = gs_upload_dirrevlv.
gt_finaldktxt_n = gs_upload_dirdktxt.
gt_finalolddir_n = gs_upload_dirolddir.
gt_finallink_n = gs_upload_dirlink_n.
ELSE.
lv_flg = gc_x.
ENDIF.
CLEAR: gs_doc.
READ TABLE gt_doc_final INTO gs_doc
WITH KEY matnr = gs_mara_dirmatnr.
IF sysubrc EQ 0.
gt_finaldoknr = gs_docdoknr.
gt_finaldoktl = gs_docdoktl.
gt_finaldokvr = gs_docdokvr.
gt_finalrevlv = gs_docrevlv.
gt_finalolddir = gs_docolddirnum.
IF lv_flg = gc_x.
gt_finaldoktl_n = p_doktl.
gt_finaldokvr_n = '00'.
gt_finalolddir_n = gs_docolddirnum.
gt_finalrevlv_n = ''.
IF gs_docdktxt IS NOT INITIAL.
gt_finaldktxt_n = gs_docdktxt.
ELSE.
gt_finaldktxt_n = 'Document Info Record'.
ENDIF.
IF gs_docdappl IS NOT INITIAL.
gt_finaldappl = gs_docdappl.
ELSE.
gt_finaldappl = p_dappl.
ENDIF.
gt_finallink_n = gs_docdocfile1.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 113/124
3/21/2015 Gmail bom extend JCI program kodu
IF gs_docdoktl IS NOT INITIAL AND gt_finaldoktl_n IS INITIAL.
gt_finaldoktl_n = gs_docdoktl.
ELSEIF gt_finaldoktl_n IS INITIAL.
gt_finaldoktl_n = '000'.
ENDIF.
IF gt_finaldoktl NE gt_finaldoktl_n.
gt_finaldokvr_n = '00'.
gt_finalrevlv_n = ''.
ENDIF.
ENDIF.
READ TABLE gt_revlv INTO gs_revlv
WITH KEY revlv = gs_docrevlv.
IF sysubrc EQ 0.
gs_revlvccsrf = gs_revlvccsrf + 1.
READ TABLE gt_revlv INTO gs_revlv
WITH KEY ccsrf = gs_revlvccsrf.
IF sysubrc EQ 0.
gt_finalrevlv_n = gs_revlvrevlv.
ENDIF.
ENDIF.
ELSE.
IF lv_flg EQ gc_x.
IF p_doktl IS NOT INITIAL.
gt_finaldoktl_n = p_doktl.
ELSE.
gt_finaldoktl_n = '000'.
ENDIF.
gt_finaldokvr_n = '00'.
gt_finalrevlv_n = ''.
gt_finaldktxt_n = 'Document Info Record'.
ENDIF.
IF gt_finaldappl IS INITIAL.
gt_finaldappl = p_dappl.
ENDIF.
gt_finalsel1 = gc_x.
ENDIF.
APPEND gt_final.
CLEAR: gt_final.
ENDLOOP.
IF gt_final[] IS NOT INITIAL.
PERFORM build_fieldcatalog_dir.
PERFORM build_layout_dir.
PERFORM display_alv_dir.
ELSE.
MESSAGE text160 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
ENDFORM. " F_DATA_RETRIEVAL
*&*
*& Form CONV_MATNR
*&*
* text
**
* >P_gs_upload_dir_MATNR text
* <P_gs_upload_dir_MATNR text
**
FORM conv_matnr CHANGING p_gs_upload_dir_matnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 114/124
3/21/2015 Gmail bom extend JCI program kodu
input = p_gs_upload_dir_matnr
IMPORTING
output = p_gs_upload_dir_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
ENDFORM. " CONV_MATNR
*&*
*& Form BUILD_FIELDCATALOG_DIR
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_fieldcatalog_dir .
DATA: lv_repid TYPE syrepid.
REFRESH: gt_fieldcat_dir.
lv_repid = syrepid.
*FM to create field catalog for final internal table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = lv_repid
i_internal_tabname = 'GT_FINAL'
i_inclname = lv_repid
i_bypassing_buffer = gc_x
CHANGING
ct_fieldcat = gt_fieldcat_dir
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
*To modify the fieldcatalog according to the users
LOOP AT gt_fieldcat_dir INTO gs_fieldcat_dir.
CLEAR: gs_fieldcat_dirseltext_s.
IF gs_fieldcat_dirfieldname = 'SEL'.
gs_fieldcat_dirseltext_m = text151.
gs_fieldcat_dircheckbox = gc_x.
gs_fieldcat_diredit = gc_x.
gs_fieldcat_diroutputlen = 5.
ELSEIF gs_fieldcat_dirfieldname = 'DOKTL_N'.
CONCATENATE 'New' gs_fieldcat_dirseltext_m
INTO gs_fieldcat_dirseltext_m SEPARATED BY space.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'DOKVR_N'.
CONCATENATE 'New' gs_fieldcat_dirseltext_m
INTO gs_fieldcat_dirseltext_m SEPARATED BY space.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'OLDDIR_N'.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 115/124
3/21/2015 Gmail bom extend JCI program kodu
gs_fieldcat_dirseltext_m = 'Old DIR Number'.
CONCATENATE 'New' gs_fieldcat_dirseltext_m
INTO gs_fieldcat_dirseltext_m SEPARATED BY space.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'REVLV_N'.
CONCATENATE 'New' gs_fieldcat_dirseltext_m
INTO gs_fieldcat_dirseltext_m SEPARATED BY space.
gs_fieldcat_diredit = gc_x.
gs_fieldcat_dirinput = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'OLDDIR'.
gs_fieldcat_dirseltext_m = 'Old DIR Number'.
gs_fieldcat_dirinput = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'DKTXT_N'.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'DOKAR_N'.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'LABOR'.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'DAPPL'.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'LINK_N'.
gs_fieldcat_diredit = gc_x.
ELSEIF gs_fieldcat_dirfieldname = 'SEL1'.
gs_fieldcat_dirseltext_m = text152.
gs_fieldcat_dircheckbox = gc_x.
gs_fieldcat_diredit = gc_x.
gs_fieldcat_diroutputlen = 5.
ENDIF.
gs_fieldcat_dirddictxt = 'M'.
MODIFY gt_fieldcat_dir FROM gs_fieldcat_dir.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG_DIR
*&*
*& Form BUILD_LAYOUT_DIR
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_layout_dir .
*To build the layout design
CLEAR: gs_layout_dir.
gs_layout_dirzebra = gc_x.
ENDFORM. " BUILD_LAYOUT_DIR
*&*
*& Form DISPLAY_ALV_DIR
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_alv_dir .
DATA: lv_repid TYPE syrepid.
lv_repid = syrepid.
gs_layout_dirinfo_fieldname = 'ROW'.
*FM to display ALV
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 116/124
3/21/2015 Gmail bom extend JCI program kodu
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
i_callback_pf_status_set = 'PF_STATUS_DIR'
i_callback_user_command = 'USER_COMMAND_DIR'
i_grid_title = text153
is_layout = gs_layout_dir
it_fieldcat = gt_fieldcat_dir
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
ENDFORM. " DISPLAY_ALV_DIR
*&*
*& Form user_command
*&*
* text
**
*User actions on ALV
FORM user_command_dir USING r_ucomm TYPE syucomm
selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'EASY'.
PERFORM upload_document.
WHEN 'SEL'.
gv_select = gc_x.
PERFORM select_all_entries_dir CHANGING gt_final[].
WHEN 'DESEL'.
CLEAR: gv_select.
PERFORM select_all_entries_dir CHANGING gt_final[].
WHEN 'NSEL'.
gv_newsel = gc_x.
PERFORM select_all_entries_dir_new CHANGING gt_final[].
WHEN 'NDSEL'.
CLEAR: gv_newsel.
PERFORM select_all_entries_dir_new CHANGING gt_final[].
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
*
* FORM PFSTATUS *
**
*Form for settings the pf status to the alv
FORM pf_status_dir USING rt_extab TYPE slis_t_extab.
SET PFSTATUS 'STANDARD_DIR'.
ENDFORM. "pf_status
*&*
*& Form SELECT_ALL_ENTRIES_DIR
*&*
* text
**
* <P_GT_OUTPUT[] text
**
FORM select_all_entries_dir CHANGING p_gt_final TYPE STANDARD TABLE.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 117/124
3/21/2015 Gmail bom extend JCI program kodu
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_final.
DATA: lv_valid TYPE c.
*For capturing the selected data
CLEAR: lv_valid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = lv_valid.
IF lv_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_final INTO ls_outtab.
IF gv_select EQ gc_x.
ls_outtabsel = 'X'.
ELSE.
ls_outtabsel = ' '.
ENDIF.
MODIFY p_gt_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES_DIR
*&*
*& Form SELECT_ALL_ENTRIES_DIR
*&*
* text
**
* <P_GT_OUTPUT[] text
**
FORM select_all_entries_dir_new CHANGING p_gt_final TYPE STANDARD
TABLE.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_final.
DATA: lv_valid TYPE c.
*For capturing the selected data
CLEAR: lv_valid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = lv_valid.
IF lv_valid EQ 'X'.
CLEAR ls_outtab.
LOOP AT p_gt_final INTO ls_outtab.
IF gv_newsel EQ gc_x.
ls_outtabsel1 = 'X'.
ELSE.
ls_outtabsel1 = ' '.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 118/124
3/21/2015 Gmail bom extend JCI program kodu
ENDIF.
MODIFY p_gt_final FROM ls_outtab.
CLEAR ls_outtab.
ENDLOOP.
CALL METHOD lv_grid>refresh_table_display.
ENDIF.
ENDFORM. " SELECT_ALL_ENTRIES_DIR
*&*
*& Form UPLOAD_DOCUMENT
*&*
* text
**
* > p1 text
* < p2 text
**
FORM upload_document .
DATA: ls_documentdata TYPE bapi_doc_draw2,
ls_documentdatax TYPE bapi_doc_drawx2,
lv_hostname TYPE bapi_doc_auxhostname,
lv_force_update TYPE bapi_doc_auxflag,
lt_documentdescriptions TYPE TABLE OF bapi_doc_drat,
ls_documentdescriptions LIKE LINE OF lt_documentdescriptions,
lt_characteristicvalues TYPE TABLE OF bapi_characteristic_values
,
ls_characteristicvalues LIKE LINE OF lt_characteristicvalues,
lt_classallocations TYPE TABLE OF bapi_class_allocation,
ls_classallocations LIKE LINE OF lt_classallocations,
lt_origional TYPE TABLE OF bapi_doc_files2,
ls_origional LIKE LINE OF lt_origional,
lt_objectlinks TYPE TABLE OF bapi_doc_drad,
ls_objectlinks LIKE LINE OF lt_objectlinks,
ls_bapi_msg LIKE bapiret2,
lv_flag TYPE c.
DATA: lv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_outtab LIKE LINE OF gt_final.
DATA: lv_valid TYPE c.
*For capturing the selected data
CLEAR: lv_valid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lv_grid.
CALL METHOD lv_grid>check_changed_data
IMPORTING
e_valid = lv_valid.
IF lv_valid EQ 'X'.
CLEAR: lv_flag.
REFRESH: gt_final_output.
LOOP AT gt_final WHERE sel = gc_x.
lv_flag = gc_x.
IF gt_finallabor IS NOT INITIAL.
ls_documentdatalaboratory = gt_finallabor.
ELSE.
READ TABLE gt_mara_dir INTO gs_mara_dir
WITH KEY matnr = gt_finalmatnr.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 119/124
3/21/2015 Gmail bom extend JCI program kodu
IF sysubrc EQ 0.
ls_documentdatalaboratory = gs_mara_dirlabor.
ENDIF.
ENDIF.
IF gt_finalsel EQ gc_x AND gt_finalsel1 NE gc_x.
ls_documentdatadocumenttype = gt_finaldokar.
ls_documentdatadocumentnumber = gt_finaldoknr.
ls_documentdatadocumentversion = gt_finaldokvr + '01'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_documentdatadocumentversion
IMPORTING
output = ls_documentdatadocumentversion.
ls_documentdatadocumentpart = gt_finaldoktl.
ls_documentdatarevlevel = gt_finalrevlv_n.
ls_documentdatausername = syuname.
lv_hostname = 'SAP'.
ls_documentdataecnumber = p_ecm.
ls_documentdatadescription = gt_finaldktxt_n.
ls_documentdatarefdocumentnumber = gt_finaldoknr.
ls_documentdatarefdocumentpart = gt_finaldoktl.
ls_documentdatarefdocumentversion = gt_finaldokvr.
ls_documentdataxrefdocumentnumber = gc_x.
ls_documentdataxrefdocumentpart = gc_x.
ls_documentdataxrefdocumentversion = gc_x.
ENDIF.
ls_documentdatadocfile1 = gt_finallink_n.
IF gt_finaldappl IS NOT INITIAL.
ls_documentdatawsapplication1 = gt_finaldappl.
ELSE.
ls_documentdatawsapplication1 = 'URL'.
ENDIF.
ls_documentdatasavedocfile1 = gt_finallink_n.
IF gt_finalsel1 EQ gc_x.
ls_documentdatadocumenttype = gt_finaldokar_n.
ls_documentdatadocumentversion = gt_finaldokvr_n.
ls_documentdatadocumentpart = gt_finaldoktl_n.
ls_documentdatausername = syuname.
lv_hostname = 'SAP'.
ls_documentdataecnumber = p_ecm.
ls_documentdatarevlevel = gt_finalrevlv_n.
ls_documentdatadescription = gt_finaldktxt_n.
ENDIF.
ls_documentdataxdocumenttype = gc_x.
ls_documentdataxdocumentnumber = gc_x.
ls_documentdataxdocumentpart = gc_x.
ls_documentdataxdocumentversion = gc_x.
ls_documentdataxdescription = gc_x.
ls_documentdataxecnumber = gc_x.
ls_documentdataxrevlevel = gc_x.
ls_documentdataxlaboratory = gc_x.
ls_documentdataxdocfile1 = gc_x.
ls_documentdataxwsapplication1 = gc_x.
ls_documentdataxsavedocfile1 = gc_x.
ls_documentdataxdatacarrier1 = gc_x.
ls_documentdataxsavedatacarrier1 = gc_x.
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 120/124
3/21/2015 Gmail bom extend JCI program kodu
CLEAR: ls_documentdescriptions, ls_objectlinks, ls_origional.
REFRESH: lt_documentdescriptions, lt_objectlinks, lt_origional.
ls_documentdescriptionslanguage = 'E'.
ls_documentdescriptionslanguage_iso = 'EN'.
ls_documentdescriptionsdescription = gt_finaldktxt_n.
APPEND ls_documentdescriptions TO lt_documentdescriptions.
ls_objectlinksobjecttype = 'MARA'.
ls_objectlinksobjectkey = gt_finalmatnr.
ls_objectlinksdocumentdirection = gc_x.
APPEND ls_objectlinks TO lt_objectlinks.
REFRESH: lt_classallocations, lt_characteristicvalues.
IF gt_finalolddir_n IS NOT INITIAL.
ls_characteristicvaluesclasstype = '017'.
ls_characteristicvaluesclassname = 'DIR_NUMBER_OLD'.
ls_characteristicvaluescharname = 'OLDDIRNUMBER'.
ls_characteristicvaluescharvalue = gt_finalolddir_n.
APPEND ls_characteristicvalues TO lt_characteristicvalues.
ls_classallocationsclasstype = '017'.
ls_classallocationsclassname = 'DIR_NUMBER_OLD'.
ls_classallocationsstandardclass = gc_x.
ls_classallocationsecnumber = p_ecm.
APPEND ls_classallocations TO lt_classallocations.
ENDIF.
IF gt_finallink_n IS NOT INITIAL.
ls_origionaldocumenttype = ls_documentdatadocumenttype.
ls_origionaldocumentnumber = ls_documentdatadocumentnumber.
ls_origionaldocumentpart = ls_documentdatadocumentpart.
ls_origionaldocumentversion = ls_documentdatadocumentversion.
ls_origionaloriginaltype = '1'.
ls_origionalapplication_id = 'DIR'.
IF gt_finaldappl IS NOT INITIAL.
ls_origionalwsapplication = gt_finaldappl.
ELSE.
ls_origionalwsapplication = 'URL'.
ENDIF.
ls_origionallanguage = 'E'.
ls_origionalcheckedin = gc_x.
ls_origionalactive_version = gc_x.
ls_origionaldocfile = gt_finallink_n.
ls_origionaldocpath = gt_finallink_n.
APPEND ls_origional TO lt_origional.
ENDIF.
CLEAR: gt_final_output.
CALL FUNCTION 'BAPI_DOCUMENT_LOAD'
EXPORTING
documentdata = ls_documentdata
documentdatax = ls_documentdatax
hostname = lv_hostname
force_update = lv_force_update
* CAD_MODE = ' '
IMPORTING
documenttype = gt_final_outputdokar
documentnumber = gt_final_outputdoknr
documentpart = gt_final_outputdoktl
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 121/124
3/21/2015 Gmail bom extend JCI program kodu
documentversion = gt_final_outputdokvr
return = ls_bapi_msg
TABLES
characteristicvalues = lt_characteristicvalues
classallocations = lt_classallocations
* documentdescriptions =
objectlinks = lt_objectlinks
documentfiles = lt_origional
* LONGTEXTS =
* COMPONENTS =
* STATUSLOG =
.
IF sysubrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
ENDIF.
gt_final_outputmsg = ls_bapi_msgmessage.
IF gt_final_outputdoknr IS NOT INITIAL AND gt_finalsel1 IS NOT
INITIAL.
gt_final_outputmsg = text155.
ELSEIF gt_final_outputdoknr IS NOT INITIAL .
gt_final_outputmsg = text156.
ENDIF.
gt_final_outputmatnr = gt_finalmatnr.
gt_final_outputaennr = p_ecm.
APPEND gt_final_output.
ENDLOOP.
ENDIF.
IF lv_flag IS INITIAL.
MESSAGE text154 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ENDIF.
IF gt_final_output IS NOT INITIAL.
PERFORM build_fieldcatalog_dir1.
PERFORM display_alv_dir1.
ENDIF.
ENDFORM. " UPLOAD_DOCUMENT
*&*
*& Form BUILD_FIELDCATALOG_DIR1
*&*
* text
**
* > p1 text
* < p2 text
**
FORM build_fieldcatalog_dir1 .
DATA: lv_repid TYPE syrepid.
REFRESH: gt_fieldcat_dir1.
lv_repid = syrepid.
*FM to create field catalog for final internal table
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = lv_repid
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 122/124
3/21/2015 Gmail bom extend JCI program kodu
i_internal_tabname = 'GT_FINAL_OUTPUT'
i_inclname = lv_repid
i_bypassing_buffer = gc_x
CHANGING
ct_fieldcat = gt_fieldcat_dir1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sysubrc <> 0.
* MESSAGE ID SYMSGID TYPE SYMSGTY NUMBER SYMSGNO
* WITH SYMSGV1 SYMSGV2 SYMSGV3 SYMSGV4.
ENDIF.
ENDFORM. " BUILD_FIELDCATALOG_DIR1
*&*
*& Form DISPLAY_ALV_DIR1
*&*
* text
**
* > p1 text
* < p2 text
**
FORM display_alv_dir1 .
DATA: lv_repid TYPE syrepid.
lv_repid = syrepid.
gs_layout_dirinfo_fieldname = 'ROW'.
*FM to display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
* i_callback_pf_status_set = 'PF_STATUS_DIR'
* i_callback_user_command = 'USER_COMMAND_DIR'
i_grid_title = text153
is_layout = gs_layout_dir
it_fieldcat = gt_fieldcat_dir1
i_default = 'X'
i_save = ' '
TABLES
t_outtab = gt_final_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sysubrc <> 0.
* MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
* WITH symsgv1 symsgv2 symsgv3 symsgv4.
ENDIF.
ENDFORM. " DISPLAY_ALV_DIR1
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 123/124
3/21/2015 Gmail bom extend JCI program kodu
Meltem ALTIN
Test Engineer
Manisa Plant / Turkey
Building Efficiency
Johnson Controls
Klima ve Sogutma, Servis San. ve Tic. A.S.
Muradiye Organize Sanayi Bölgesi
Dr. Orhan Aksoy Cd. No:14 PK:45140
Manisa / Turkey
Tel : +90 236 226 88 31
Fax : +90 236 214 06 80
Email : [email protected]
URL : http://www.johnsoncontrols.com
image001.png
9K View Download
https://mail.google.com/mail/u/0/?ui=2&ik=edd51d0144&view=lg&msg=14c3176a89fcfd04 124/124