0% found this document useful (0 votes)
204 views124 pages

Ale

This document appears to be a report detailing the history of changes made to a program with the identifier "ZGTP2P_I_MATERIAL_IDOC_PLANTX". It includes information such as the date created, authors, purpose, and a detailed log of 6 versions with dates, authors, and reasons for changes made in each version. The report also includes type and data declarations for variables used in the program.

Uploaded by

Levent A. ÖZEL
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
204 views124 pages

Ale

This document appears to be a report detailing the history of changes made to a program with the identifier "ZGTP2P_I_MATERIAL_IDOC_PLANTX". It includes information such as the date created, authors, purpose, and a detailed log of 6 versions with dates, authors, and reasons for changes made in each version. The report also includes type and data declarations for variables used in the program.

Uploaded by

Levent A. ÖZEL
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 124

3/21/2015 Gmail ­ bom extend JCI program kodu

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: SAPP­3869
*   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
*   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  SAPP­5375 CBENJAA   Fix BOM accuracy and account
* for document texts which are longer than 1000 chars in mat­interface
* TR No.YRDK976115
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*   V00006  14.08.2013   CMANISE        SAPP­6202, DIR logic inclusion
*                                       for BPSS project
***********************************************************************

REPORT  zgtp2f_i_material_idoc_plantx MESSAGE­ID zup_01
NO STANDARD PAGE HEADING LINE­SIZE 1023.

TYPE­POOLS: 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 mara­matnr,
        stlan     TYPE mast­stlan,
        zp2f_oldmat TYPE marc­zp2f_oldmat,
        matnr1    TYPE objky,
      END OF ty_bom_final.

TYPES: BEGIN OF ty_bom_final1,
        sel       TYPE c,
        matnr     TYPE mast­matnr,
        werks     TYPE mast­werks,
        stlan     TYPE mast­stlan,
        plant     TYPE marc­werks,
        bomuse    TYPE mast­stlan,
        ecn       TYPE stko­aennr,
       END OF ty_bom_final1.

TYPES: BEGIN OF ty_bom_final2,
        sel       TYPE c,
        matnr     TYPE mast­matnr,
        matnr_c   TYPE mast­matnr,
        werks     TYPE mast­werks,
        stlan     TYPE mast­stlan,
        plant     TYPE marc­werks,
        bomuse    TYPE mast­stlan,
        ecn       TYPE stko­aennr,
       END OF ty_bom_final2.

TYPES: BEGIN OF ty_bom_ext,
        sel       TYPE c,
        matnr     TYPE mast­matnr,
        werks     TYPE mast­werks,
        stlan     TYPE mast­stlan,
        stlal     TYPE mast­stlal,
        plant     TYPE marc­werks,
        bomuse    TYPE mast­stlan,
        ecn       TYPE stko­aennr,
       END OF ty_bom_ext.

TYPES: BEGIN OF ty_bom_ext_final,
        sel       TYPE c,
        matnr     TYPE mast­matnr,
        werks     TYPE mast­werks,
        stlan     TYPE mast­stlan,
        stlal     TYPE mast­stlal,
        plant     TYPE marc­werks,
       END OF ty_bom_ext_final.

TYPES: BEGIN OF ty_aeoi,
         aennr    TYPE aeoi­aennr,
         objkt    TYPE mara­matnr,
         revlv    TYPE aeoi­revlv,
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 aeoi­aennr,
         objkt    TYPE aeoi­objkt,
         stlnr    TYPE mast­stlnr,
       END OF ty_aeoi_bom.

*Types and Data declarations for Material
TYPES: BEGIN OF ty_marc,
        matnr     TYPE marc­matnr,
        werks     TYPE marc­werks,
        beskz     TYPE marc­beskz,
        zptyp     TYPE marc­zptyp,
        ausme     TYPE marc­ausme,
        sobsl     TYPE marc­sobsl,
        zp2f_oldmat TYPE marc­zp2f_oldmat,
       END OF ty_marc.

TYPES: BEGIN OF ty_mara,
        matnr     TYPE objky,
        mtart     TYPE mara­mtart,
        meins     TYPE mara­meins,
        brgew     TYPE mara­brgew,
        gewei     TYPE mara­gewei,
        zzglat    TYPE mara­zzglat,
        datab     TYPE mara­datab,
        kzumw     TYPE mara­kzumw,
        matnr1    TYPE cdobjectv,
        ecm       TYPE cuobn,
        ecm1      TYPE aenr­aennr,
      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 makt­matnr,
        maktx     TYPE makt­maktx,
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 makt­spras,
       END OF ty_makt.

TYPES: BEGIN OF ty_ausp,
        objnum    TYPE ausp­objek,
        klart     TYPE ausp­klart,
        atwrt     TYPE ausp­atwrt,
       END OF ty_ausp.

*Declaration part for messages
TYPES: BEGIN OF ty_messages,
        sel,
        icon      TYPE icon_d,
        docnum    TYPE edidc­docnum,
        matnr     TYPE matnr,
        zp2f_oldmat TYPE marc­zp2f_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 marc­matnr,
         werks TYPE marc­werks,
         lgpro TYPE marc­lgpro,
       END OF ty_target_plnt.

TYPES: BEGIN OF ty_mara_e,
         matnr TYPE mara­matnr,
         mtart TYPE mara­mtart,
         begru TYPE mara­begru,
         kzeff TYPE mara­kzeff,
         kzkfg TYPE mara­kzkfg,
         labor TYPE mara­labor,
         matkl TYPE mara­matkl,
         meins TYPE mara­meins,
         mstae TYPE mara­mstae,
         mstde TYPE mara­mstde,
         satnr TYPE mara­satnr,
       END OF ty_mara_e.

TYPES: BEGIN OF ty_makt_e,
         matnr TYPE makt­matnr,
         maktx TYPE makt­maktx,
         spras TYPE makt­spras,
       END OF ty_makt_e.

TYPES: BEGIN OF ty_mrp,
         dispr TYPE mdip­dispr,
         dismm TYPE mdip­dismm,
         dispo TYPE mdip­dispo,
         fhori TYPE mdip­fhori,
         sbdkz TYPE mdip­sbdkz,
         disls TYPE mdip­disls,
         webaz TYPE mdip­webaz,
         ekgrp TYPE mdip­ekgrp,
         fxhor TYPE mdip­fxhor,
         vrmod TYPE mdip­vrmod,
         vint1 TYPE mdip­vint1,
         vint2 TYPE mdip­vint2,
         strgr TYPE mdip­strgr,
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 mdip­lgpro,
         beskz TYPE mdip­beskz,
       END OF ty_mrp.

TYPES: BEGIN OF ty_cdhdr,
        objectid   TYPE cdhdr­objectid,
        changenr   TYPE cdhdr­changenr,
        planchngnr TYPE cdhdr­planchngnr,
       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 aenr­aennr,
        aetyp TYPE aeoi­aetyp,
        objkt TYPE aeoi­objkt,
        andat TYPE aeoi­andat,
       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 aeoi­objkt,
       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 inob­objek,
      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 ausp­objek,
        atinn     TYPE ausp­atinn,
        atwrt     TYPE ausp­atwrt,
      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 aenr­aennr,
        datuv     TYPE aenr­datuv,
      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 aenr­aennr,
        datuv     TYPE aenr­datuv,
      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 SAPP­4600
DATA: gt_aenr_doc_tmp TYPE TABLE OF ty_aenr_doc,
      gs_aenr_doc_tmp TYPE ty_aenr_doc.
*** END OF INSERTION SAPP­4600
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 mara­matnr,
        l_matnr TYPE marc­zp2f_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 SAPP­4600
DATA: gt_aedt TYPE TABLE OF aedt.
*** BEGIN OF INSERTION SAPP­4600

*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 SAPP­4600
      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 marc­matnr,
         mtart LIKE mara­mtart,
         werks LIKE marc­werks,
         zptyp LIKE marc­zptyp,
         zp2f_oldmat LIKE marc­zp2f_oldmat,
         plant LIKE mast­werks,
         lgpro LIKE marc­lgpro,
         sobsl LIKE marc­sobsl,
         vkorg LIKE mvke­vkorg,
         vtweg LIKE mvke­vtweg,
         bwkey LIKE mbew­bwkey,
         lgnum LIKE mlgn­lgnum,
         mat_r LIKE mara­matnr,
         begru LIKE mara­begru,
         kzkfg LIKE mara­kzkfg,
         labor LIKE mara­labor,
         matkl LIKE mara­matkl,
         meins LIKE mara­meins,
         maktx LIKE makt­maktx,
         spras LIKE makt­spras,
      END OF gt_alv_material.

TYPES: BEGIN OF ty_download,
         matnr LIKE marc­matnr,
         mtart LIKE mara­mtart,
         werks LIKE marc­werks,
         zptyp LIKE marc­zptyp,
         zp2f_oldmat LIKE marc­zp2f_oldmat,
         plant LIKE mast­werks,
         lgpro LIKE marc­lgpro,
         vkorg LIKE mvke­vkorg,
         bwkey LIKE mbew­bwkey,
         lgnum LIKE mlgn­lgnum,
         mat_r LIKE mara­matnr,
         begru LIKE mara­begru,
         kzkfg LIKE mara­kzkfg,
         labor LIKE mara­labor,
         matkl LIKE mara­matkl,
         meins LIKE mara­meins,
         maktx LIKE makt­maktx,
         spras LIKE makt­spras,
         old_mat_no LIKE bapi_mara­old_mat_no,
         pur_status LIKE bapi_mara­pur_status,
         net_weight LIKE bapi_mara­net_weight,
         unit_of_wt LIKE bapi_mara­unit_of_wt,
         mrp_type   LIKE bapi_marc­mrp_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_marc­mrp_ctrler,
         lotsizekey LIKE bapi_marc­lotsizekey,
         round_val  LIKE bapi_marc­round_val,
         proc_type  LIKE bapi_marc­proc_type,
         spproctype LIKE bapi_marc­spproctype,
         iss_st_loc LIKE bapi_marc­iss_st_loc,
         backflush  LIKE bapi_marc­backflush,
         determ_grp LIKE bapi_marc­determ_grp,
         period_ind LIKE bapi_marc­period_ind,
         availcheck LIKE bapi_marc­availcheck,
         prodprof   LIKE bapi_marc­prodprof,
         profit_ctr LIKE bapi_marc­profit_ctr,
         val_class  LIKE bapi_mbew­val_class,
         price_ctrl LIKE bapi_mbew­price_ctrl,
         price_unit LIKE bapi_mbew­price_unit,
         taxprice_1 LIKE bapi_mbew­taxprice_1,
         taxprice_2 LIKE bapi_mbew­taxprice_2,
         taxprice_3 LIKE bapi_mbew­taxprice_3,
         commprice1 LIKE bapi_mbew­commprice1,
         commprice2 LIKE bapi_mbew­commprice2,
         commprice3 LIKE bapi_mbew­commprice3,
         overhead_grp LIKE bapi_mbew­overhead_grp,
         variance_key LIKE bapi_marc­variance_key,
         lot_size     LIKE bapi_marc­lot_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 marc­matnr,
         werks TYPE marc­werks,
       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 mast­matnr,
        matnr_c    LIKE mara­matnr,
        werks      LIKE mast­werks,
        stlan      LIKE mast­stlan,
        chg_no     LIKE stko_api02­chg_no,
        valid_from LIKE stko_api02­valid_from,
        base_quan  LIKE stko_api02­base_quan,
        bom_status LIKE stko_api02­bom_status,
        stufe      LIKE stpox­stufe,
        wegxx      LIKE stpox­wegxx,
        posnr      LIKE stpox­posnr,
        postp      LIKE stpox­postp,
        idnrk      LIKE stpox­idnrk,
        potx1      LIKE stpox­potx1,
        menge      LIKE stpox­menge,
        meins      LIKE stpox­meins,
        sortf      LIKE stpox­sortf,
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 stpox­rvrel,
      END OF gt_bom_down.

TYPES: BEGIN OF ty_bom_down1,
         matnr      LIKE mast­matnr,
         posnr      LIKE stpox­posnr,
         idnrk      LIKE stpox­idnrk,
         potx1      LIKE stpox­potx1,
         menge      LIKE stpox­menge,
         rvrel      LIKE stpox­rvrel,
         sortf      LIKE stpox­sortf,
       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 mast­matnr,
        werks TYPE mast­werks,
        stlan TYPE mast­werks,
        stlal TYPE mast­stlal,
      END OF ty_mast.

DATA: gt_mast TYPE TABLE OF ty_mast,
      gs_mast TYPE ty_mast.

TYPES: BEGIN OF ty_bwkey,
        werks TYPE t001w­werks,
        bwkey TYPE t001w­bwkey,
      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 SAPP­4840
        gt_matlongtext      TYPE TABLE OF bapi_mltx,
        gs_matlongtext      TYPE bapi_mltx,
*** END OF INSERTION SAPP­4840
        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 mara­matnr.

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_api02­bom_no.
*Variables declarations
DATA: gv_text TYPE thead­tdname,
      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 sy­repid,
      gv_down       TYPE c,
      gv_doc_part   TYPE zgtp2f_doc_revlv­doktl,
      gv_error      TYPE c,
      gv_werks      TYPE marc­werks.

*Begin of insertion SAPP­6202
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 mara­matnr,
           labor TYPE mara­labor,
         END OF ty_mara_d.

TYPES: BEGIN OF ty_upload,
         matnr TYPE mara­matnr,
         doktl TYPE draw­doktl,
         dokvr TYPE draw­dokvr,
         revlv TYPE cc_revlv,
         dktxt TYPE drat­dktxt,
         olddir TYPE char30,
         link_n TYPE bapi_doc_comp­docfile,
       END OF ty_upload.

DATA: BEGIN OF gt_final OCCURS 0,
        sel,
        werks   LIKE marc­werks,
        matnr   LIKE mara­matnr,
        dokar   LIKE draw­dokar,
        aennr   LIKE aenr­aennr,
        doknr   LIKE draw­doknr,
        doktl   LIKE draw­doktl,
        dokvr   LIKE draw­dokvr,
        revlv   LIKE tcc09­revlv,
        olddir  LIKE ausp­atwrt,
        labor   LIKE mara­labor,
        dokar_n LIKE draw­dokar,
        doktl_n LIKE draw­doktl,
        dokvr_n LIKE draw­dokvr,
        olddir_n LIKE ausp­atwrt,
        revlv_n LIKE tcc09­revlv,
        dktxt_n LIKE drat­dktxt,
        dappl   LIKE draw­dappl,
        link_n  LIKE bapi_doc_comp­docfile,
        sel1,
      END OF gt_final.

DATA: BEGIN OF gt_final_output OCCURS 0,
        matnr   LIKE mara­matnr,
        dokar   LIKE draw­dokar,
        doknr   LIKE draw­doknr,
        doktl   LIKE draw­doktl,
        dokvr   LIKE draw­dokvr,
        aennr   LIKE aenr­aennr,
        msg     LIKE bapiret2­message,
      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 mara­labor.
*End of insertion SAPP­6202
*Constants Declarations
CONSTANTS: gc_plant   TYPE dfies­fieldname     VALUE 'PLANT',
           gc_prog    TYPE sy­repid            VALUE
           'ZGTP2P_I_MATERIAL_IDOC_PLANTX',
           gc_dyn_fd  TYPE help_info­dynprofld VALUE 'P_PLANTM',
           gc_mestyp1 LIKE edidc­mestyp VALUE 'ZGEP2P_MATMAS',
           gc_mestyp2 LIKE edidc­mestyp VALUE 'ZGEP2F_BOMMAT',
           gc_idoctp1 LIKE edidc­idoctp VALUE 'ZGEP2P_MATMAS01',
           gc_idoctp2 LIKE edidc­idoctp VALUE 'ZGEP2F_BOMMAT01',
           gc_x       TYPE c            VALUE 'X',
           gc_mastseg TYPE edidd­segnam VALUE 'ZE1MASTM',
           gc_stposeg TYPE edidd­segnam VALUE 'ZE1STPOM',
           gc_maraseg TYPE edidd­segnam VALUE 'ZE2MARAM',
           gc_marcseg TYPE edidd­segnam VALUE 'ZE2MARCM',
           gc_maktseg TYPE edidd­segnam VALUE 'ZE2MAKTM',
           gc_mtxlseg TYPE edidd­segnam 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 screen­­main screen design
SELECTION­SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text­001.
SELECTION­SCREEN SKIP 1.
PARAMETERS: r_materl RADIOBUTTON GROUP g1 DEFAULT 'X' USER­COMMAND usr.
*Begin of insertion SAPP­6202
SELECTION­SCREEN: BEGIN OF LINE.
PARAMETERS: r_plantx RADIOBUTTON GROUP g1.
SELECTION­SCREEN COMMENT 3(78) text­157.
SELECTION­SCREEN: END OF LINE.
PARAMETERS: r_doc    RADIOBUTTON GROUP g1.
*End of inclusion SAPP­6202
SELECTION­SCREEN END OF BLOCK block1.

*Selection sub screen for Material IDoc
SELECTION­SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text­002.
SELECTION­SCREEN 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_marc­werks MODIF ID m1.
SELECT­OPTIONS: s_matnr  FOR  s_mara­matnr MODIF ID m1,
                s_ecm    FOR  s_aenr­aennr MODIF ID m1,
                s_bomuse FOR  s_mast­stlan MODIF ID m1.
PARAMETERS:     p_bom_a  TYPE tc04­capid MODIF ID m1 DEFAULT 'ZP05'.

SELECTION­SCREEN SKIP 2.
SELECTION­SCREEN COMMENT 1(50) text­010 MODIF ID m1.
PARAMETERS:     p_matid  TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
                                            USER­COMMAND flag.
SELECTION­SCREEN: BEGIN OF LINE.
SELECTION­SCREEN: POSITION 5.
PARAMETERS:     p_mat_in TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
                                            USER­COMMAND flag.
SELECTION­SCREEN: COMMENT 7(36) text­130 MODIF ID m1.
SELECTION­SCREEN: END OF LINE.
PARAMETERS:     p_bomid  TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
                                            USER­COMMAND flag,
                p_sub    TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m1
                                            USER­COMMAND flag.
SELECTION­SCREEN SKIP 1.
SELECTION­SCREEN END OF BLOCK block2.

*Selection Screen for Extension in SAP
SELECTION­SCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE text­003.
SELECTION­SCREEN SKIP 1.

PARAMETERS:     p_plnt_e TYPE ty_marc­werks MODIF ID m2,
                p_plnt_t TYPE ty_marc­werks MODIF ID m2.

SELECT­OPTIONS: s_mats_e FOR s_mara­matnr NO INTERVALS MODIF ID m2,
                s_ecm_e  FOR s_aenr­aennr NO INTERVALS MODIF ID m2,
                s_bom_e  FOR s_mast­stlan NO INTERVALS MODIF ID m2.
PARAMETERS:     p_ecm_t  TYPE aenr­aennr MODIF ID m2.
PARAMETERS:     p_bom_t  TYPE mast­stlan DEFAULT '2' MODIF ID m2.
PARAMETERS:     p_bom_st TYPE stko­stlst MODIF ID m2.
PARAMETERS:     p_app_b  TYPE tc04­capid MODIF ID m2 DEFAULT 'ZP05'.
*** BEGIN OF INSERTION SAPP­4600
PARAMETERS:     p_alt_d  TYPE rc29a­datuv MODIF ID m2.
*** END OF INSERTION SAPP­4600
SELECTION­SCREEN SKIP 2.
SELECTION­SCREEN COMMENT 1(50) text­011 MODIF ID m2.
SELECTION­SCREEN: BEGIN OF LINE.
SELECTION­SCREEN: POSITION 1.
PARAMETERS:     p_mat_e RADIOBUTTON GROUP g3 DEFAULT 'X'
                                          MODIF ID m2
                                          USER­COMMAND usr2.
SELECTION­SCREEN COMMENT 3(25) text­013 MODIF ID m2.
SELECTION­SCREEN: POSITION 37.
PARAMETERS:     p_bom_e RADIOBUTTON GROUP g3 MODIF ID m2.
SELECTION­SCREEN: COMMENT 39(30) text­012 MODIF ID m2.
SELECTION­SCREEN: POSITION 71.
PARAMETERS:     p_bom_p RADIOBUTTON GROUP g3 MODIF ID m2.
SELECTION­SCREEN: COMMENT 73(35) text­136 MODIF ID m2.
SELECTION­SCREEN: END OF LINE.
SELECTION­SCREEN: BEGIN OF LINE.
SELECTION­SCREEN: POSITION 4.
PARAMETERS:p_pltyp TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m2.
SELECTION­SCREEN: COMMENT 6(30) text­056 MODIF ID m2.
SELECTION­SCREEN: 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

SELECTION­SCREEN: COMMENT 42(30) text­043 MODIF ID m2.
SELECTION­SCREEN: END OF LINE.
SELECTION­SCREEN: BEGIN OF LINE.
SELECTION­SCREEN: POSITION 4.
PARAMETERS:p_bom_in TYPE c AS CHECKBOX DEFAULT 'X' MODIF ID m2.
SELECTION­SCREEN: COMMENT 6(33) text­129 MODIF ID m2.
SELECTION­SCREEN: POSITION 40.
PARAMETERS:p_bom_m TYPE c RADIOBUTTON GROUP g2 DEFAULT 'X' MODIF ID m2.
SELECTION­SCREEN: COMMENT 42(30) text­044 MODIF ID m2.
*** BEGIN OF INSERTION SAPP­4600
SELECTION­SCREEN: END OF LINE.
SELECTION­SCREEN: BEGIN OF LINE.
SELECTION­SCREEN: POSITION 40.
PARAMETERS:p_alt_c TYPE c AS CHECKBOX MODIF ID m2.
SELECTION­SCREEN: COMMENT 42(30) text­139 MODIF ID m2.
*** END OF INSERTION SAPP­4600
SELECTION­SCREEN: END OF LINE.
SELECTION­SCREEN END OF BLOCK block3.

SELECTION­SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text­014.
SELECTION­SCREEN SKIP 1.
SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­015 MODIF ID m5.
SELECTION­SCREEN: COMMENT 20(18)  text­046 MODIF ID m5,
                  COMMENT 42(8)   text­047 MODIF ID m5,
                  COMMENT 52(9)   text­048 MODIF ID m5,
                  COMMENT 62(4)   text­132 MODIF ID m5,
                  COMMENT 69(8)   text­049 MODIF ID m5,
                  COMMENT 79(12)  text­053 MODIF ID m5.
SELECTION­SCREEN END OF LINE.
SELECTION­SCREEN SKIP 1.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­018 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_fin_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_fin_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_fin_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_fin_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_fin_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_fin_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­019 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_pur_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_pur_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_pur_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_pur_d  TYPE mvke­vtweg 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

SELECTION­SCREEN POSITION 70.
PARAMETERS: p_pur_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_pur_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­020 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_ref_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_ref_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_ref_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_ref_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_ref_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_ref_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­021 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_sub_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_sub_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_sub_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_sub_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_sub_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_sub_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­022 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_trd_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_trd_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_trd_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_trd_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_trd_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_trd_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­059 MODIF ID m5.
SELECTION­SCREEN 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 mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_ph_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_ph_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_ph_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_ph_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_ph_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 1(18)   text­060 MODIF ID m5.
SELECTION­SCREEN POSITION 20.
PARAMETERS: p_def_m TYPE mara­matnr MODIF ID m5.
SELECTION­SCREEN POSITION 43.
PARAMETERS: p_def_sl TYPE marc­lgpro MODIF ID m5.
SELECTION­SCREEN POSITION 53.
PARAMETERS: p_def_so TYPE mvke­vkorg MODIF ID m5.
SELECTION­SCREEN POSITION 63.
PARAMETERS: p_def_d  TYPE mvke­vtweg MODIF ID m5.
SELECTION­SCREEN POSITION 70.
PARAMETERS: p_def_v  TYPE mbew­bwkey MODIF ID m5.
SELECTION­SCREEN POSITION 79.
PARAMETERS: p_def_w  TYPE mlgn­lgnum MODIF ID m5.
SELECTION­SCREEN END OF LINE.

SELECTION­SCREEN END OF BLOCK block4.

SELECTION­SCREEN BEGIN OF BLOCK block5 WITH FRAME TITLE text­057.
PARAMETERS: p_path TYPE rlgrap­filename MODIF ID m2.
SELECTION­SCREEN END OF BLOCK block5.

*Begin of insertion SAPP­6202
SELECTION­SCREEN BEGIN OF BLOCK block6 WITH FRAME TITLE text­141.
PARAMETERS: p_werks TYPE werks_d MODIF ID m6.
PARAMETERS: p_ecm        TYPE aenr­aennr MODIF ID m6.
PARAMETERS: p_dokar      TYPE draw­dokar MODIF ID m6,
            p_doktl      TYPE draw­doktl MODIF ID m6,
            p_labor      TYPE mara­labor MODIF ID m6,
            p_dappl      TYPE draw­dappl MODIF ID m6 DEFAULT 'URL'.
SELECT­OPTIONS: s_ecm_s  FOR s_aenr­aennr NO INTERVALS MODIF ID m6.
SELECTION­SCREEN: SKIP 1.
SELECT­OPTIONS: s_dirmat FOR s_mara­matnr MODIF ID m6.
SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN POSITION 1.
SELECTION­SCREEN: COMMENT 20(4)   text­147 MODIF ID m6.
SELECTION­SCREEN END OF LINE.
PARAMETERS: p_file TYPE rlgrap­filename MODIF ID m6.
SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN: COMMENT 1(70)   text­148 MODIF ID m6.
SELECTION­SCREEN END OF LINE.
SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN: COMMENT 1(78)   text­158 MODIF ID m6.
SELECTION­SCREEN END OF LINE.
SELECTION­SCREEN BEGIN OF LINE.
SELECTION­SCREEN: COMMENT 1(78)   text­159 MODIF ID m6.
SELECTION­SCREEN 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

SELECTION­SCREEN END OF BLOCK block6.
*End of insertion SAPP­6202
*Macro definition for building the Field catalog
DEFINE mcat.
  clear gs_fieldcat.
  gs_fieldcat­fieldname = &1.
  gs_fieldcat­just      = 'C'.
  gs_fieldcat­seltext   = &2.
  gs_fieldcat­coltext   = &3.
  append gs_fieldcat to gt_fieldcat.
END­OF­DEFINITION.

DEFINE mcat1.
  clear ls_int_head.
  ls_int_head­field1 = &1.
  append ls_int_head to lt_int_head.
END­OF­DEFINITION.

DEFINE mcat2.
  clear gs_fieldcat_bom.
  gs_fieldcat_bom­fieldname = &1.
  gs_fieldcat_bom­just      = 'C'.
  gs_fieldcat_bom­seltext_l   = &2.
  append gs_fieldcat_bom to gt_fieldcat_bom.
END­OF­DEFINITION.

DEFINE mcat3.
  clear gs_fieldcat_ext_bom.
  gs_fieldcat_ext_bom­fieldname = &1.
  gs_fieldcat_ext_bom­just      = 'C'.
  gs_fieldcat_ext_bom­seltext_l   = &2.
  append gs_fieldcat_ext_bom to gt_fieldcat_ext_bom.
END­OF­DEFINITION.

***********************************************************************
*Initialization
***********************************************************************
INITIALIZATION.
  s_bomuse­sign = 'I'.
  s_bomuse­option = 'EQ'.
  s_bomuse­low    = '2'.
  APPEND s_bomuse.

  s_bom_e­sign = 'I'.
  s_bom_e­option = 'EQ'.
  s_bom_e­low    = '2'.
  APPEND s_bom_e.
***********************************************************************
*To create dynamic selection screen
***********************************************************************
AT SELECTION­SCREEN 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 screen­group1 EQ 'M1'.
        screen­input = 1.
        screen­invisible = 0.
      ENDIF.
      IF screen­group1 EQ 'M2'.
        screen­input = 0.
        screen­invisible = 1.
      ENDIF.
      IF screen­group1 EQ 'M5'.
        screen­input = 0.
        screen­invisible = 1.
      ENDIF.
      IF p_bomid IS INITIAL.
        CLEAR : p_mat_in,p_sub.
        IF screen­group1 EQ 'M1' AND
          ( screen­name CP '*P_MAT_IN*' OR
            screen­name CP '*P_SUB*' OR
            screen­name EQ '%C130019_1000' OR
            screen­name CP '*P_BOM_A*' ).
          screen­active = 0.
          screen­invisible = 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 screen­group1 EQ 'M1' AND
           screen­name CP '*BOMUSE*'.
          screen­active = 0.
          screen­invisible = 1.
        ENDIF.
      ENDIF.
*Begin of insertion SAPP­6202
      IF screen­group1 EQ 'M6'.
        screen­input = 0.
        screen­invisible = 1.
      ENDIF.
*End of insertion SAPP­6202
    ELSEIF r_plantx EQ gc_x.
      IF screen­group1 EQ 'M1'.
        screen­input = 0.
        screen­invisible = 1.
      ENDIF.
      IF screen­group1 EQ 'M2'.
        screen­input = 1.
        screen­invisible = 0.
      ENDIF.
      IF p_bom_e IS NOT INITIAL.
        IF screen­group1 EQ 'M5'.
          screen­active = 0.
          screen­invisible = 1.
        ENDIF.
      ELSEIF p_bom_p IS NOT INITIAL.
        IF screen­group1 EQ 'M5'.
          screen­active = 0.
          screen­invisible = 1.
        ENDIF.
        IF screen­group1 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

          ( screen­name CP '*P_BOM*T*' OR
            screen­name CP '*P_ECM*T*' OR
            screen­name CP '*P_APP*B*' OR
            screen­name CP '*P_PATH*'  OR
            screen­name CP '*P_ALT_D*' ).                "INS SAPP­4600
          screen­active = 0.
          screen­invisible = 1.
        ENDIF.
      ELSE.
        IF screen­group1 EQ 'M2' AND
         ( screen­name CP '*P_BOM*T*' OR
           screen­name CP '*P_ALT_D*' ).                 "INS SAPP­4600
          screen­active = 0.
          screen­invisible = 1.
        ENDIF.
      ENDIF.
*Begin of insertion SAPP­6202
      IF screen­group1 EQ 'M6'.
        screen­active = 0.
        screen­invisible = 1.
      ENDIF.
    ELSE.
      IF screen­group1 EQ 'M1' OR screen­group1 EQ 'M2' OR
         screen­group1 EQ 'M3' OR screen­group1 EQ 'M4' OR
         screen­group1 EQ 'M5'.
        screen­active = 0.
        screen­invisible = 1.
      ENDIF.
*End of insertion SAPP­6202
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

**********************************************************************
*F4 help for user to select MAPICS plant
**********************************************************************
AT SELECTION­SCREEN ON VALUE­REQUEST 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 sy­subrc <> 0.
    MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
  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 SELECTION­SCREEN ON VALUE­REQUEST FOR p_path.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst­cprog
      dynpro_number = syst­dynnr
      field_name    = 'P_PATH'
    IMPORTING
      file_name     = p_path.
*Begin of insertion SAPP­6202
AT SELECTION­SCREEN ON VALUE­REQUEST FOR p_file.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst­cprog
      dynpro_number = syst­dynnr
      field_name    = 'P_FILE'
    IMPORTING
      file_name     = p_file.
*End of insertion SAPP­6202
********************************************************************
*Start of Selection
START­OF­SELECTION.
********************************************************************
*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 text­009 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.

    IF p_plants IS  INITIAL.
      MESSAGE text­008 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.

*Material and ECM validations
    IF s_matnr IS INITIAL AND s_ecm IS INITIAL.
      MESSAGE text­004 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 text­007 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 text­038 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 text­131 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 sy­subrc = 0.
        AUTHORITY­CHECK OBJECT 'M_MATE_WRK'
                 ID 'ACTVT' FIELD '03'
                 ID 'WERKS' FIELD gv_werks.
        IF sy­subrc <> 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 sy­subrc = 0.
        AUTHORITY­CHECK OBJECT 'C_STUE_WRK'
                 ID 'ACTVT' FIELD '03'
                 ID 'CSWRK' FIELD gv_werks.
        IF sy­subrc <> 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 text­023 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.

    IF p_plnt_t IS  INITIAL.
      MESSAGE text­024 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.

*Material validation
    IF s_mats_e IS INITIAL AND s_ecm_e IS INITIAL.
      MESSAGE text­004 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 text­042 TYPE gc_s DISPLAY LIKE gc_e.
        EXIT.
      ENDIF.
      IF p_ecm_t IS INITIAL.
        MESSAGE text­052 TYPE gc_s DISPLAY LIKE gc_e.
        EXIT.
      ENDIF.
    ENDIF.
*** BEGIN OF INSERTION SAPP­4600
    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 sy­subrc NE 0.
          MESSAGE text­140 TYPE gc_s DISPLAY LIKE gc_e.
          EXIT.
        ENDIF.
      ENDIF.
    ENDIF.
*** END OF INSERTION SAPP­4600

*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 sy­subrc = 0.
        AUTHORITY­CHECK OBJECT 'M_MATE_WRK'
                 ID 'ACTVT' FIELD '01'
                 ID 'WERKS' FIELD gv_werks.
        IF sy­subrc <> 0.
          AUTHORITY­CHECK OBJECT 'M_MATE_WRK'
                 ID 'ACTVT' FIELD '02'
                 ID 'WERKS' FIELD gv_werks.
          IF sy­subrc <> 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 sy­subrc = 0.
        AUTHORITY­CHECK OBJECT 'C_STUE_WRK'
                 ID 'ACTVT' FIELD '01'
                 ID 'CSWRK' FIELD gv_werks.
        IF sy­subrc <> 0.
          AUTHORITY­CHECK OBJECT 'C_STUE_WRK'
                 ID 'ACTVT' FIELD '02'
                 ID 'CSWRK' FIELD gv_werks.
          IF sy­subrc <> 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 text­042 TYPE gc_s DISPLAY LIKE gc_e.
          EXIT.
        ENDIF.
      ENDIF.
      IF p_bom_in EQ gc_x.
        IF p_app_b IS INITIAL.
          MESSAGE text­131 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 text­131 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 SAPP­6202
  IF r_doc EQ gc_x.
    IF p_werks IS INITIAL.
      MESSAGE text­142 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 sy­subrc = 0.
      AUTHORITY­CHECK OBJECT 'M_MATE_WRK'
               ID 'ACTVT' FIELD '01'
               ID 'WERKS' FIELD gv_werks.
      IF sy­subrc <> 0.
        AUTHORITY­CHECK OBJECT 'M_MATE_WRK'
               ID 'ACTVT' FIELD '02'
               ID 'WERKS' FIELD gv_werks.
        IF sy­subrc <> 0.
          MESSAGE text­143 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 text­145 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.
    IF p_dokar IS INITIAL.
      MESSAGE text­146 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.
    IF p_labor IS INITIAL.
      MESSAGE text­161 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 sy­subrc NE 0.
        MESSAGE text­162 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 text­144 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.

    IF s_dirmat IS NOT INITIAL AND p_file IS NOT INITIAL.
      MESSAGE text­144 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 text­150 TYPE gc_s DISPLAY LIKE gc_e.
        EXIT.
      ENDIF.
    ENDIF.

    PERFORM f_data_retrieval.
  ENDIF.
*End of insertion SAPP­6202
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      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_edidc­mestyp = gc_mestyp1. "Message type
    gs_edidc­idoctp = 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 sy­subrc 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_edidc­mestyp = gc_mestyp2. "Message type
    gs_edidc­idoctp = 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 sy­subrc 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 sy­subrc <> 0.
    LOOP AT gt_allmat INTO gs_allmat.
      CLEAR:gs_messages.
      gs_messages­matnr   = gs_allmat­matnr.
      gs_messages­zp2f_oldmat = gs_allmat­l_matnr.
      gs_messages­icon    = '@0A@'.
      gs_messages­werks   = p_plants.
      IF gv_mess_type EQ gc_m.
        gs_messages­message = text­030.
      ELSE.
        gs_messages­message = text­031.
      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 sy­subrc EQ 0.
      LOOP AT gt_allmat INTO gs_allmat.
        gs_messages­werks   = p_plants.
        gs_messages­docnum  = gs1_edidc­docnum.
        gs_messages­matnr   = gs_allmat­matnr.
        gs_messages­zp2f_oldmat = gs_allmat­l_matnr.

        IF gs1_edidc­status EQ '02' OR gs1_edidc­status EQ '04' OR
           gs1_edidc­status EQ '05' OR gs1_edidc­status EQ '26' OR
           gs1_edidc­status EQ '29' OR gs1_edidc­status EQ '31' OR
           gs1_edidc­status EQ '37' OR gs1_edidc­status EQ '51' OR
           gs1_edidc­status EQ '56' OR gs1_edidc­status EQ '60' OR
           gs1_edidc­status EQ '61' OR gs1_edidc­status EQ '63' OR
           gs1_edidc­status EQ '65'.
          gs_messages­icon    = '@0A@'.
          IF gv_mess_type EQ gc_m.
            gs_messages­message = text­034.
          ELSE.
            gs_messages­message = text­035.
          ENDIF.
        ELSE.
          gs_messages­icon    = '@08@'.
          IF gv_mess_type EQ gc_m.
            gs_messages­message = text­032.
          ELSE.
            gs_messages­message = text­033.
          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_plantchar­atnam,
        lv_atinn TYPE ausp­atinn,
        lv_objkt TYPE aeoi­objkt,
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 aenr­aennr,
        lv_revlv TYPE aeoi­revlv,
        lv_atinn_old TYPE ausp­atinn,
        lv_count_dwg TYPE i,
        lv_dwg   TYPE c,
        lv_multi TYPE c,
        lv_rest(9999) TYPE c,                     "INS SAPP­5375
        lv_strlen     TYPE i.                     "INS SAPP­5375

*** BEGIN OF INSERTION SAPP­4600
  DATA      : lt_class TYPE STANDARD TABLE OF sclass,
              lt_objectdata TYPE STANDARD TABLE OF clobjdat.

  DATA      : ls_objectdata TYPE clobjdat,
              lv_objek TYPE ausp­objek.
  CONSTANTS : lc_ques TYPE c VALUE '?',
              lc_class TYPE klah­class VALUE 'ECM_LEGACY_ECN',
              lc_klart TYPE klah­klart VALUE '025',
              lc_obtab TYPE tcla­obtab VALUE 'AENR'.
*** END OF INSERTION SAPP­4600

  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_aeoi­objkt
         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_aeoi­objkt
         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_bom­stlnr = gs_aeoi_bom­objkt+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_bom­stlnr
           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                 = sy­datum
            ehndl                 = '1'
            mbwls                 = 'X'
            mehrs                 = lv_multi
            mmory                 = '1'
            mtnrv                 = gs_bom_final­matnr
            werks                 = p_plants
            vrsvo                 = 'X'
            stlan                 = gs_bom_final­stlan
*      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 sy­subrc <> 0.
*      MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
        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_mat­idnrk
           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_marc­matnr.

    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_tmp­objkt = gs_mara­matnr1.
        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_tmp­objkt.

      IF sy­subrc 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_mara­matnr.
          IF sy­subrc EQ 0.
            gs_mara­ecm = gs_aeoi­aennr.
            gs_mara­ecm1 = gs_aeoi­aennr.
          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_mara­matnr.
          IF sy­subrc EQ 0.
            gs_mara­ecm = gs_aeoi_tmp­aennr.
            gs_mara­ecm1 = gs_aeoi_tmp­aennr.
          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_mara­ecm.
      IF sy­subrc 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_inob­cuobj
           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_mara­ecm1.

*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_marc­matnr.
      IF sy­subrc 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 sy­subrc 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_part­doktl.
      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_mara­matnr
          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_draw­dokar gs_drad_draw­doknr
                      gs_drad_draw­dokvr gs_drad_draw­doktl
          INTO gs_drad_draw­objnum.
          CONDENSE gs_drad_draw­objnum NO­GAPS.

          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_mara­matnr
          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_new­dokar gs_drad_draw_new­doknr
                    gs_drad_draw_new­doktl gs_drad_draw_new­dokvr
        INTO gs_drad_draw_new­objnum.
        CONDENSE gs_drad_draw_new­objnum NO­GAPS.

        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_mara­matnr
          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_dwg­dokar gs_drad_draw_dwg­doknr
                      gs_drad_draw_dwg­dokvr gs_drad_draw_dwg­doktl
          INTO gs_drad_draw_dwg­objnum.
          CONDENSE gs_drad_draw_dwg­objnum NO­GAPS.

          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_dwg­objnum
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_dwg­dokar
           AND doknr = gt_drad_draw_dwg­doknr
           AND dokvr = gt_drad_draw_dwg­dokvr
           AND doktl = gt_drad_draw_dwg­doktl.
      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_mara­matnr
          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_std­dokar gs_drad_draw_std­doknr
                      gs_drad_draw_std­dokvr gs_drad_draw_std­doktl
          INTO gs_drad_draw_std­objnum.
          CONDENSE gs_drad_draw_std­objnum NO­GAPS.

          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_std­objnum
           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_messages­icon    = '@0A@'.
    gs_messages­message = text­036.
    APPEND gs_messages TO gt_messages.
  ENDIF.

  CLEAR: gs_mara, gs_edidd­segnum, lv_mcount.
  LOOP AT gt_mara INTO gs_mara.
    CLEAR: gs_maraseg, gs_marcseg, gs_maktseg.
    gs_maraseg­mtart = gs_mara­mtart.
    gs_maraseg­meins = gs_mara­meins.
    gs_maraseg­brgew = gs_mara­brgew.
    gs_maraseg­gewei = gs_mara­gewei.
    gs_maraseg­zzglat = gs_mara­zzglat.
    gs_maraseg­kzumw = gs_mara­kzumw.

*Logic to populate ZLECN
    READ TABLE gt_inob INTO gs_inob WITH KEY objek = gs_mara­ecm.
    IF sy­subrc EQ 0.
      READ TABLE gt_ecm_ausp INTO gs_ecm_ausp WITH KEY objek =
      gs_inob­cuobj.
      IF sy­subrc EQ 0.
        gs_maraseg­zlecn = gs_ecm_ausp­atwrt.
      ENDIF.
    ENDIF.

*Logic to populate DATUV
    READ TABLE gt_aenr INTO gs_aenr WITH KEY aennr = gs_mara­ecm.
    IF sy­subrc EQ 0.
      gs_maraseg­datuv = gs_aenr­datuv.
    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_mara­matnr.
      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_new1­aennr.
    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_doc­aennr.

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_mara­matnr
                                  aennr = lv_aennr.
    IF sy­subrc EQ 0.
      lv_objkt = gs_drad_draw_new­objnum.
    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_mara­matnr.
    IF sy­subrc EQ 0.
      gs_marcseg­mwerks = p_plantm.
      IF gs_marc­zp2f_oldmat IS NOT INITIAL .
        gs_marcseg­matnr  = gs_marc­zp2f_oldmat.
        IF gs_marcseg­matnr+3(1) = '­'.
          gs_marcseg­matnr+3(1) = ' '.
        ENDIF.
        IF gs_marcseg­matnr+9(1) = '­'.
          gs_marcseg­matnr+9(1) = ' '.
        ENDIF.
      ELSE.
        gs_marcseg­matnr  = gs_mara­matnr.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gs_marcseg­matnr
          IMPORTING
            output = gs_marcseg­matnr.
      ENDIF.
      gs_marcseg­beskz  = gs_marc­beskz.
      gs_marcseg­zptyp  = gs_marc­zptyp.
      gs_marcseg­sobsl  = gs_marc­sobsl.
      gs_marcseg­ausme  = gs_marc­ausme.
    ENDIF.
    gs_marcseg­revlv  = lv_revlv.

*Populate MAKT structure
    READ TABLE gt_makt INTO gs_makt
                      WITH KEY matnr = gs_mara­matnr
                               spras = 'E'.
    IF sy­subrc EQ 0.
      gs_maktseg­maktx = gs_makt­maktx.
    ELSE.
      READ TABLE gt_makt INTO gs_makt
                      WITH KEY matnr = gs_mara­matnr.
      IF sy­subrc EQ 0.
        gs_maktseg­maktx = gs_makt­maktx.
      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_mara­matnr.
    IF sy­subrc EQ 0.
      READ TABLE gt_ausp_std INTO gs_ausp_std
        WITH KEY objnum = gs_drad_draw_std­objnum .
      IF sy­subrc EQ 0.
        gs_maraseg­engstd = gs_ausp_std­atwrt.
      ENDIF.
    ENDIF.

*To populate ATWRT
    REFRESH: gt_drad_draw_dwg1.
    LOOP AT gt_drad_draw_dwg INTO gs_drad_draw_dwg
      WHERE objky = gs_mara­matnr.
      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 SAPP­4600
    DESCRIBE TABLE gt_drad_draw_dwg1 LINES lv_count_dwg.
    IF lv_count_dwg EQ 1.
*** BEGIN OF CHANGE SAPP­4600
*     CLEAR: lv_dwg.
      CLEAR: gs_drad_draw_dwg1.
*** END OF CHANGE SAPP­4600
      READ TABLE gt_drad_draw_dwg1 INTO gs_drad_draw_dwg1 INDEX 1.
      IF sy­subrc EQ 0.
        CLEAR gs_ausp_dwg.                    "INS SAPP­4600
        READ TABLE gt_ausp_dwg INTO gs_ausp_dwg
             WITH KEY objnum = gs_drad_draw_dwg1­objnum .
        IF sy­subrc EQ 0.
          gs_maraseg­atwrt = gs_ausp_dwg­atwrt.
          IF gs_maraseg­atwrt+3(1) = '­'.
            gs_maraseg­atwrt+3(1) = ' '.
          ENDIF.
          IF gs_maraseg­atwrt+9(1) = '­'.
            gs_maraseg­atwrt+9(1) = ' '.
          ENDIF.
          CLEAR gs_ausp_dwg.                   "INS SAPP­4600
        ENDIF.
        CLEAR gs_drad_draw_dwg1.               "INS SAPP­4600
      ENDIF.
      CLEAR lv_count_dwg.                      "INS SAPP­4600
    ELSEIF lv_count_dwg > 1.
*** BEGIN OF CHANGE SAPP­4600
*     lv_dwg = gc_x.
*     CLEAR: gs_maraseg­atwrt.
      CLEAR: gs_maraseg­atwrt,lv_count_dwg.
*** END OF CHANGE SAPP­4600
    ENDIF.

*** BEGIN OF INSERTION SAPP­4600
    IF gt_drad_draw_dwg1[] IS NOT INITIAL.
      lv_dwg = gc_x.
    ELSE.
      CLEAR: lv_dwg, gs_maraseg­atwrt.
    ENDIF.
*** END OF INSERTION SAPP­4600

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_allmat­matnr = gs_mara­matnr.
    gs_allmat­l_matnr = gs_marc­zp2f_oldmat.
    APPEND gs_allmat TO gt_allmat.

*Append it to the IDoc structure
    gs_edidd­segnam = gc_maraseg.
    gs_edidd­hlevel = '02'.
    gs_edidd­segnum = gs_edidd­segnum + 1.
    gs_edidd­sdata  = gs_maraseg.
    APPEND gs_edidd TO gt_edidd.

    gs_edidd­segnam = gc_marcseg.
    gs_edidd­hlevel = '03'.
    gs_edidd­segnum = gs_edidd­segnum + 1.
    gs_edidd­sdata  = gs_marcseg.
    APPEND gs_edidd TO gt_edidd.

    gs_edidd­segnam = gc_maktseg.
    gs_edidd­hlevel = '03'.
    gs_edidd­segnum = gs_edidd­segnum + 1.
    gs_edidd­sdata  = gs_maktseg.
    APPEND gs_edidd TO gt_edidd.

    gs_edidd­segnum = gs_edidd­segnum + 1.
*Populate MTXL structure
    READ TABLE gt_drad_draw INTO gs_drad_draw
                           WITH KEY objky = gs_mara­matnr.
    IF sy­subrc EQ 0.
      CONCATENATE sy­mandt gs_drad_draw­objnum
      INTO gv_text.
      CONDENSE gv_text NO­GAPS.

*This logic is used to read the long text
      REFRESH: gt_tline.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy­mandt
          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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
      ENDIF.

      CLEAR: gv_long.
      LOOP AT gt_tline INTO gs_tline.
        IF gv_long IS NOT INITIAL.
          CONCATENATE gv_long gs_tline­tdline 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_tline­tdline.
        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 SAPP­5375
      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_mtxlseg­dktxt
              rest   = lv_rest.

          gs_edidd­segnam = gc_mtxlseg.
          gs_edidd­hlevel = '3'.
          gs_edidd­sdata  = gs_mtxlseg.
          APPEND gs_edidd TO gt_edidd.
          gs_edidd­segnum = gs_edidd­segnum + 1.
          CLEAR: gs_mtxlseg.
          lv_strlen = STRLEN( lv_rest ).
        ENDWHILE.

        IF lv_rest IS NOT INITIAL.
          gs_edidd­segnam = gc_mtxlseg.
          gs_edidd­hlevel = '3'.
          gs_mtxlseg­dktxt = lv_rest.
          gs_edidd­sdata  = gs_mtxlseg.
          APPEND gs_edidd TO gt_edidd.
          gs_edidd­segnum = gs_edidd­segnum + 1.
          CLEAR: gs_mtxlseg.
        ENDIF.

      ELSEIF gv_long IS NOT INITIAL.
        gs_edidd­segnam = gc_mtxlseg.
        gs_edidd­hlevel = '3'.
        gs_mtxlseg­dktxt = gv_long.
        gs_edidd­sdata  = gs_mtxlseg.
        APPEND gs_edidd TO gt_edidd.
        gs_edidd­segnum = gs_edidd­segnum + 1.
        CLEAR: gs_mtxlseg.
      ENDIF.
    ENDIF.

    gs_edidd­segnum = gs_edidd­segnum ­ 1.
*   End of insertion SAPP­5375

*  Begin of deletion SAPP­5375
*      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_mtxlseg­dktxt = gv_long+gv_off_int(gv_off_len).
*        ELSE.
*          EXIT.
*        ENDIF.
*
*        gs_edidd­segnam = gc_mtxlseg.
*        gs_edidd­hlevel = '3'.
*        gs_edidd­sdata  = 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_edidd­segnum.
*    IF sy­subrc NE 0.
*      CLEAR: gs_mtxlseg.
*      gs_edidd­segnam = gc_mtxlseg.
*      gs_edidd­hlevel = '03'.
*      gs_edidd­sdata  = gs_mtxlseg.
*      APPEND gs_edidd TO gt_edidd.
*    ENDIF.
*  End of deletion SAPP­5375

    lv_mcount = lv_mcount + 1.

*** BEGIN OF INSERTION SAPP­4600
*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_dwg1­aennr.
    ENDIF.
*** END OF INSERTION SAPP­4600

*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_maraseg­atwrt, gs_marcseg­matnr.
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_maraseg­meins.                    "INS SAPP­4454
*** BEGIN OF INSERTION SAPP­4600
        CLEAR: gs_marc_tmp,gs_maraseg­brgew,gs_maraseg­gewei,
               gs_maraseg­datuv,gs_maraseg­zlecn,gs_maraseg­zzglat,
               gs_maraseg­engstd,gs_maraseg­kzumw,gs_marcseg­beskz,
               gs_marcseg­zptyp,gs_marcseg­sobsl,gs_marcseg­ausme.
*** END OF INSERTION SAPP­4600
        READ TABLE gt_ausp_dwg INTO gs_ausp_dwg
          WITH KEY objnum = gs_drad_draw_dwg1­objnum .
        IF sy­subrc EQ 0.
*** BEGIN OF INSERTION SAPP­4600
*** 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_dwg1­objky.
          IF sy­subrc EQ 0.
            IF NOT gs_marc_tmp­zp2f_oldmat IS INITIAL AND
               NOT gs_ausp_dwg­atwrt IS INITIAL.
              IF gs_marc_tmp­zp2f_oldmat EQ gs_ausp_dwg­atwrt.
                CLEAR: gs_drad_draw_dwg1,gs_ausp_dwg,gs_marc_tmp.
                CONTINUE.
              ENDIF.
            ENDIF.
          ENDIF.
*** END OF INSERTION SAPP­4600
          gs_marcseg­matnr = gs_ausp_dwg­atwrt.
          gs_maraseg­atwrt = gs_ausp_dwg­atwrt.
          IF gs_maraseg­atwrt+3(1) = '­'.
            gs_maraseg­atwrt+3(1) = ' '.
          ENDIF.
          IF gs_maraseg­atwrt+9(1) = '­'.
            gs_maraseg­atwrt+9(1) = ' '.
          ENDIF.
        ENDIF.

        READ TABLE gt_drat INTO gs_drat WITH KEY doknr =
        gs_drad_draw_dwg1­doknr.
        IF sy­subrc EQ 0.
          gs_maktseg­maktx = gs_drat­dktxt.
        ELSE.
          gs_maktseg­maktx = gs_ausp_dwg­atwrt.
        ENDIF.

*Logic to populate Revision Level
        CLEAR: lv_objkt, lv_revlv.
        CONCATENATE gs_drad_draw_dwg1­dokar gs_drad_draw_dwg1­doknr
                    gs_drad_draw_dwg1­doktl gs_drad_draw_dwg1­dokvr
          INTO lv_objkt .

        SELECT SINGLE
               revlv
          FROM aeoi
          INTO lv_revlv
         WHERE aennr = gs_drad_draw_dwg1­aennr
          AND  aetyp = '31'
          AND  objkt = lv_objkt.

        CLEAR: gs_marcseg­revlv.
        gs_marcseg­revlv = lv_revlv.

*** BEGIN OF INSERTION SAPP­4600
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_marcseg­matnr.
        IF sy­subrc EQ 0.
          CONTINUE.
        ELSE.
*** END OF INSERTION SAPP­4600
          CLEAR: gs_allmat.
          gs_allmat­matnr = gs_marcseg­matnr.
          APPEND gs_allmat TO gt_allmat.
        ENDIF.
*** BEGIN OF CHANGE SAPP­4454
*       CLEAR: gs_maraseg­meins.
        IF gs_marcseg­matnr+3(1) = '­'.
          gs_marcseg­matnr+3(1) = ' '.
        ENDIF.
        IF gs_marcseg­matnr+9(1) = '­'.
          gs_marcseg­matnr+9(1) = ' '.
        ENDIF.
        gs_maraseg­meins = 'PCS'.
*** END OF CHANGE SAPP­4454
*** BEGIN OF INSERTION SAPP­4600
*** 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_dwg1­aennr.
        IF sy­subrc EQ 0.
          gs_maraseg­datuv = gs_aenr_doc_tmp­datuv.
          CLEAR gs_aenr_doc_tmp.
        ENDIF.
        REFRESH : lt_class[],lt_objectdata[].
        CLEAR lv_objek.
        IF NOT gs_drad_draw_dwg1­aennr IS INITIAL.
          lv_objek = gs_drad_draw_dwg1­aennr.
          CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
           EXPORTING
            class                      = lc_class
*       CLASSTEXT                  = 'X'
            classtype                  = lc_klart
*       CLINT                      = 0
*       FEATURES                   = 'X'
*       LANGUAGE                   = SY­LANGU
            object                     = lv_objek
            objecttable                = lc_obtab
*       KEY_DATE                   = SY­DATUM
*       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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
          ELSE.
            CLEAR ls_objectdata.
            READ TABLE lt_objectdata INTO ls_objectdata
               WITH KEY atnam = lv_atnam.
            IF  NOT ls_objectdata­ausp1 IS INITIAL
            AND NOT ls_objectdata­ausp1 EQ lc_ques.
              gs_maraseg­zlecn = ls_objectdata­ausp1.
              CLEAR ls_objectdata.
            ENDIF.
          ENDIF.
        ENDIF.
        gs_maraseg­brgew = '         0.000'.
*** END OF INSERTION SAPP­4600
        gs_edidd­segnam = gc_maraseg.
        gs_edidd­hlevel = '02'.
        gs_edidd­segnum = gs_edidd­segnum + 1.
        gs_edidd­sdata  = gs_maraseg.
        APPEND gs_edidd TO gt_edidd.

        gs_edidd­segnam = gc_marcseg.
        gs_edidd­hlevel = '03'.
        gs_edidd­segnum = gs_edidd­segnum + 1.
        gs_edidd­sdata  = gs_marcseg.
        APPEND gs_edidd TO gt_edidd.

*** BEGIN OF INSERTION SAPP­4600
***Pre­check if DWG doc has long text,if so map second line as matdesc
        CLEAR:gv_text. REFRESH: gt_tline.
        CONCATENATE sy­mandt gs_drad_draw_dwg1­objnum
        INTO gv_text.
        CONDENSE gv_text NO­GAPS.
*This logic is used to read the long text
        CALL FUNCTION 'READ_TEXT'
          EXPORTING
            client                  = sy­mandt
            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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
        ELSE.
          CLEAR gs_tline.
          READ TABLE gt_tline INTO gs_tline INDEX 2.
          IF sy­subrc EQ 0 AND
             gs_tline­tdline 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_maktseg­maktx = gs_tline­tdline.
            CLEAR gs_tline.
          ENDIF.
        ENDIF.
        CLEAR gs_tline.
*** END OF INSERTION SAPP­4600
        gs_edidd­segnam = gc_maktseg.
        gs_edidd­hlevel = '03'.
        gs_edidd­segnum = gs_edidd­segnum + 1.
        gs_edidd­sdata  = gs_maktseg.
        APPEND gs_edidd TO gt_edidd.

*BEGIN OF CHANGE SAPP­4600
*       CLEAR:gv_str_flag. REFRESH: gt_tline.
        CLEAR:gv_str_flag,gv_text. REFRESH: gt_tline.
*END OF CHANGE SAPP­4600
        CONCATENATE sy­mandt gs_drad_draw_dwg1­objnum
        INTO gv_text.
        CONDENSE gv_text NO­GAPS.

        gs_edidd­segnum = gs_edidd­segnum + 1.
*This logic is used to read the long text
        CALL FUNCTION 'READ_TEXT'
          EXPORTING
            client                  = sy­mandt
            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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
        ENDIF.

        CLEAR: gv_long.
        LOOP AT gt_tline INTO gs_tline.
          IF sy­tabix NE 1.                       "INS SAPP­4600
            IF gv_long IS NOT INITIAL.
              CONCATENATE gv_long gs_tline­tdline INTO gv_long
              SEPARATED BY '¶'.
            ELSE.
              gv_long = gs_tline­tdline.
            ENDIF.
            CONDENSE gv_long.
          ENDIF.                                  "INS SAPP­4600
        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 SAPP­5375
        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_mtxlseg­dktxt
                rest   = lv_rest.

            gs_edidd­segnam = gc_mtxlseg.
            gs_edidd­hlevel = '3'.
            gs_edidd­sdata  = gs_mtxlseg.
            APPEND gs_edidd TO gt_edidd.
            gs_edidd­segnum = gs_edidd­segnum + 1.
            CLEAR: gs_mtxlseg.
            lv_strlen = STRLEN( lv_rest ).
          ENDWHILE.

          IF lv_rest IS NOT INITIAL.
            gs_edidd­segnam = gc_mtxlseg.
            gs_edidd­hlevel = '3'.
            gs_mtxlseg­dktxt = lv_rest.
            gs_edidd­sdata  = gs_mtxlseg.
            APPEND gs_edidd TO gt_edidd.
            gs_edidd­segnum = gs_edidd­segnum + 1.
            CLEAR: gs_mtxlseg.
          ENDIF.
        ELSEIF gv_long IS NOT INITIAL.
          gs_edidd­segnam = gc_mtxlseg.
          gs_edidd­hlevel = '3'.
          gs_mtxlseg­dktxt = gv_long.
          gs_edidd­sdata  = gs_mtxlseg.
          APPEND gs_edidd TO gt_edidd.
          gs_edidd­segnum = gs_edidd­segnum + 1.
          CLEAR: gs_mtxlseg.
        ENDIF.

        gs_edidd­segnum = gs_edidd­segnum ­ 1.
*   End of insertion SAPP­5375

*  Begin of deletion SAPP­5375
*        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_mtxlseg­dktxt = 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_edidd­segnam = gc_mtxlseg.
*          gs_edidd­hlevel = '3'.
*          gs_edidd­sdata  = 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_edidd­segnum.
*        IF sy­subrc NE 0.
*          CLEAR: gs_mtxlseg.
*          gs_edidd­segnam = gc_mtxlseg.
*          gs_edidd­hlevel = '03'.
*          gs_edidd­sdata  = gs_mtxlseg.
*          APPEND gs_edidd TO gt_edidd.
*        ENDIF.
*  End of deletion SAPP­5375

        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 marc­matnr,
          werks TYPE marc­werks  ,
          zp2f_oldmat TYPE marc­zp2f_oldmat,
         END OF ty_legacy.

  DATA:  lv_multi TYPE c,
         lv_atinn_old TYPE ausp­atinn,
         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_bom­stlnr = gs_aeoi_bom­objkt+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_bom­stlnr
       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_messages­icon    = '@0A@'.
    gs_messages­message = text­037.
    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 sy­subrc 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_part­doktl.
  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_final­matnr1
        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_dwg­dokar gs_drad_draw_dwg­doknr
                  gs_drad_draw_dwg­dokvr gs_drad_draw_dwg­doktl
      INTO gs_drad_draw_dwg­objnum.
      CONDENSE gs_drad_draw_dwg­objnum NO­GAPS.

      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_dwg­objnum
       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                 = sy­datum
        ehndl                 = '1'
        mbwls                 = 'X'
        mehrs                 = lv_multi
        mmory                 = '1'
        mtnrv                 = gs_bom_final­matnr
        werks                 = p_plants
        vrsvo                 = 'X'
        stlan                 = gs_bom_final­stlan
*      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 sy­subrc <> 0.
*      MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
    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_stb­idnrk
         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_edidd­segnum = 1.
    gs_edidd­hlevel = '02'.
    IF gs_bom_final­zp2f_oldmat IS INITIAL.
      gs_mastseg­matnr  = gs_bom_final­matnr.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = gs_mastseg­matnr
        IMPORTING
          output = gs_mastseg­matnr.
    ELSE.
      gs_mastseg­matnr  = gs_bom_final­zp2f_oldmat.
      IF gs_mastseg­matnr+3(1) = '­'.
        gs_mastseg­matnr+3(1) = ' '.
      ENDIF.
      IF gs_mastseg­matnr+9(1) = '­'.
        gs_mastseg­matnr+9(1) = ' '.
      ENDIF.
    ENDIF.

    gs_allmat­matnr = gs_bom_final­matnr.
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_allmat­l_matnr = gs_bom_final­zp2f_oldmat.
    APPEND gs_allmat TO gt_allmat.

    gs_mastseg­mwerks = p_plantm.
    gs_edidd­segnam = gc_mastseg.
    gs_edidd­sdata  = gs_mastseg.
    APPEND gs_edidd TO gt_edidd.
    CLEAR: gs_mastseg.

*Sort and delete the duplicates

*  Begin of deletion SAPP­5375
*    SORT gt_stb BY idnrk stlnr stufe.
*    DELETE ADJACENT DUPLICATES FROM gt_stb
*    COMPARING idnrk stlnr.
*  End of deletion SAPP­5375

*  Begin of insertion SAPP­5375
*­­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 SAPP­5375

*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_stb­idnrk
                                      werks = p_plants.
      IF sy­subrc EQ 0.
        IF ls_lega_mat­zp2f_oldmat IS INITIAL.
          gs_stposeg­idnrk = gs_stb­idnrk.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              input  = gs_stposeg­idnrk
            IMPORTING
              output = gs_stposeg­idnrk.
        ELSE.
          gs_stposeg­idnrk = ls_lega_mat­zp2f_oldmat.
          IF gs_stposeg­idnrk+3(1) = '­'.
            gs_stposeg­idnrk+3(1) = ' '.
          ENDIF.
          IF gs_stposeg­idnrk+9(1) = '­'.
            gs_stposeg­idnrk+9(1) = ' '.
          ENDIF.
        ENDIF.
      ELSE.
        gs_stposeg­idnrk = gs_stb­idnrk.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gs_stposeg­idnrk
          IMPORTING
            output = gs_stposeg­idnrk.
      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_stposeg­posnr = gs_stb­posnr.
      gs_stposeg­menge = gs_stb­menge.
*Append it to the IDoc structure
      gs_edidd­segnum = gs_edidd­segnum + 1.
      gs_edidd­segnam = gc_stposeg.
      gs_edidd­sdata  = gs_stposeg.
      gs_edidd­hlevel = '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_final­matnr.
      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 SAPP­4600
      gs_stposeg­posnr = 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_dwg1­objnum.
        IF sy­subrc EQ 0.
*          gs_stposeg­menge = '1'. " DEL SAPP­4600
*** BEGIN OF INSERTION SAPP­4600
          gs_stposeg­menge = '0'.
          IF gs_bom_final­zp2f_oldmat EQ gs_ausp_dwg­atwrt.
            gs_ausp_dwg­atwrt = '000 00000 000'.
          ENDIF.
*** END OF INSERTION SAPP­4600
          gs_stposeg­idnrk = gs_ausp_dwg­atwrt.
*Append it to the IDoc structure
*** BEGIN OF INS SAPP­4454
          IF gs_stposeg­idnrk+3(1) = '­'.
            gs_stposeg­idnrk+3(1) = ' '.
          ENDIF.
          IF gs_stposeg­idnrk+9(1) = '­'.
            gs_stposeg­idnrk+9(1) = ' '.
          ENDIF.
*** END OF INS SAPP­4454
          gs_edidd­segnum = gs_edidd­segnum + 1.
          gs_edidd­segnam = gc_stposeg.
          gs_edidd­sdata  = gs_stposeg.
          gs_edidd­hlevel = '03'.
          APPEND gs_edidd TO gt_edidd.
          gs_stposeg­posnr = gs_stposeg­posnr + 1.
        ELSE.
*** BEGIN OF CHANGE SAPP­4600
*         gs_stposeg­menge = '1'.
          gs_stposeg­menge = '0'.
*** END OF CHANGE SAPP­4600
          gs_stposeg­idnrk = 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_edidd­segnum = gs_edidd­segnum + 1.
          gs_edidd­segnam = gc_stposeg.
          gs_edidd­sdata  = gs_stposeg.
          gs_edidd­hlevel = '03'.
          APPEND gs_edidd TO gt_edidd.
          gs_stposeg­posnr = gs_stposeg­posnr + 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_com­objky = ls_stb_temp­idnrk.
      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_com­objky
          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_new­dokar gs_drad_draw_new­doknr
                    gs_drad_draw_new­dokvr gs_drad_draw_new­doktl
        INTO gs_drad_draw_new­objnum.
        CONDENSE gs_drad_draw_new­objnum NO­GAPS.

        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_new­objnum
         AND klart  = '017'
         AND atinn = lv_atinn_old.
    ENDIF.

    LOOP AT lt_stb_temp INTO ls_stb_temp.

      gs_edidd­segnum = gs_edidd­segnum + 1.
      gs_edidd­hlevel = '02'.
*Logic to get the Legacy Material num
      READ TABLE lt_lega_mat INTO ls_lega_mat
                             WITH KEY matnr = ls_stb_temp­idnrk
                                      werks = p_plants.
      IF sy­subrc EQ 0.
        IF ls_lega_mat­zp2f_oldmat IS INITIAL.
          gs_mastseg­matnr  = ls_stb_temp­idnrk.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              input  = gs_mastseg­matnr
            IMPORTING
              output = gs_mastseg­matnr.
        ELSE.
          gs_mastseg­matnr  = ls_lega_mat­zp2f_oldmat.
          IF gs_mastseg­matnr+3(1) = '­'.
            gs_mastseg­matnr+3(1) = ' '.
          ENDIF.
          IF gs_mastseg­matnr+9(1) = '­'.
            gs_mastseg­matnr+9(1) = ' '.
          ENDIF.
        ENDIF.
      ELSE.
        gs_mastseg­matnr  = ls_stb_temp­idnrk.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gs_mastseg­matnr
          IMPORTING
            output = gs_mastseg­matnr.
      ENDIF.

      gs_allmat­matnr = ls_stb_temp­idnrk.
      gs_allmat­l_matnr = ls_lega_mat­zp2f_oldmat.
      APPEND gs_allmat TO gt_allmat.

      gs_mastseg­mwerks = p_plantm.
      gs_edidd­segnam = gc_mastseg.
      gs_edidd­sdata  = 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_temp­xtlnr..
*Logic to get the Legacy Material num
        READ TABLE lt_lega_mat INTO ls_lega_mat
                               WITH KEY matnr = gs_stb­idnrk
                                        werks = p_plants.
        IF sy­subrc EQ 0.
          IF ls_lega_mat­zp2f_oldmat IS INITIAL.
            gs_stposeg­idnrk = gs_stb­idnrk.
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_stposeg­idnrk
              IMPORTING
                output = gs_stposeg­idnrk.
          ELSE.
            gs_stposeg­idnrk = ls_lega_mat­zp2f_oldmat.
            IF gs_stposeg­idnrk+3(1) = '­'.
              gs_stposeg­idnrk+3(1) = ' '.
            ENDIF.
            IF gs_stposeg­idnrk+9(1) = '­'.
              gs_stposeg­idnrk+9(1) = ' '.
            ENDIF.
          ENDIF.
        ELSE.
          gs_stposeg­idnrk = gs_stb­idnrk.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              input  = gs_stposeg­idnrk
            IMPORTING
              output = gs_stposeg­idnrk.
        ENDIF.
        gs_stposeg­posnr = gs_stb­posnr.
        gs_stposeg­menge = gs_stb­menge.
*Append it to the IDoc structure
        gs_edidd­segnum = gs_edidd­segnum + 1.
        gs_edidd­segnam = gc_stposeg.
        gs_edidd­sdata  = gs_stposeg.
        gs_edidd­hlevel = '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_temp­idnrk.
        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 SAPP­4600
*     IF lv_count_dwg GT 1.
      IF lv_count_dwg GT 0.
*** END OF CHANGE SAPP­4600
        gs_stposeg­posnr = 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_new1­objnum.
          IF sy­subrc EQ 0.
*            gs_stposeg­menge = '1'. "DEL SAPP­4600
*** BEGIN OF INSERTION SAPP­4600
            READ TABLE lt_lega_mat INTO ls_lega_mat
                              WITH KEY matnr = gs_drad_draw_new1­objky
                                       werks = p_plants.
            IF sy­subrc 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_mat­zp2f_oldmat EQ gs_ausp_std­atwrt.
                gs_ausp_std­atwrt = '000 00000 000'.
              ENDIF.
            ENDIF.
            gs_stposeg­menge = '0'.
            CLEAR: ls_lega_mat.
*** END OF INSERTION SAPP­4600
            gs_stposeg­idnrk = gs_ausp_std­atwrt.
*Append it to the IDoc structure
*** BEGIN OF INS SAPP­4454
            IF gs_stposeg­idnrk+3(1) = '­'.
              gs_stposeg­idnrk+3(1) = ' '.
            ENDIF.
            IF gs_stposeg­idnrk+9(1) = '­'.
              gs_stposeg­idnrk+9(1) = ' '.
            ENDIF.
*** END OF INS SAPP­4454
            gs_edidd­segnum = gs_edidd­segnum + 1.
            gs_edidd­segnam = gc_stposeg.
            gs_edidd­sdata  = gs_stposeg.
            gs_edidd­hlevel = '03'.
            APPEND gs_edidd TO gt_edidd.
            gs_stposeg­posnr = gs_stposeg­posnr + 1.
          ELSE.
*** BEGIN OF CHANGE SAPP­4600
*           gs_stposeg­menge = '1'.
            gs_stposeg­menge = '0'.
*** END OF CHANGE SAPP­4600
            gs_stposeg­idnrk = space.
*Append it to the IDoc structure
            gs_edidd­segnum = gs_edidd­segnum + 1.
            gs_edidd­segnam = gc_stposeg.
            gs_edidd­sdata  = gs_stposeg.
            gs_edidd­hlevel = '03'.
            APPEND gs_edidd TO gt_edidd.
            gs_stposeg­posnr = gs_stposeg­posnr + 1.
          ENDIF.
        ENDLOOP.
      ENDIF.

    ENDLOOP.

    SORT gt_edidd BY segnum.
*Create IDoc for each and every material
    PERFORM send_idoc." USING gs_bom_final­matnr.
*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      text­064     text­064.
  mcat    gc_docnum    text­066     text­066.
  mcat    gc_matnr     text­067     text­067.
  mcat    gc_l_matnr   text­126     text­126.
  mcat    gc_werks     text­068     text­068.
  mcat    gc_mess      text­065     text­065.

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_layout­cwidth_opt = gc_x.
  gs_layout­zebra      = gc_x.
  gs_layout­sel_mode   = gc_x .
  gs_layout­box_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 = sy­repid.
  IF r_materl EQ gc_x.
    lv_title = text­061.
  ELSE.
    lv_title = text­062.
  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 sy­subrc <> 0.
*    MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*            WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV
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_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_fin_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_pur_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_pur_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_ref_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_ref_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_sub_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_sub_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_ph_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_ph_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_def_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = p_def_m.
    APPEND r_mat_ref.
  ENDIF.
  IF p_trd_m IS NOT INITIAL.
    CLEAR: r_mat_ref.
    r_mat_ref­sign = 'I'.
    r_mat_ref­option = 'EQ'.
    r_mat_ref­low = 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_aeoi­objkt
         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_aeoi­objkt
         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_bom­stlnr = gs_aeoi_bom­objkt+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_bom­stlnr
         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_create­plant = p_plnt_t.
        IF p_bom_t IS NOT INITIAL.
          gs_bom_create­bomuse = p_bom_t.
        ELSE.
          gs_bom_create­bomuse = gs_bom_create­stlan.
        ENDIF.
        gs_bom_create­ecn    = 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                 = sy­datum
            ehndl                 = '1'
            mbwls                 = 'X'
            mehrs                 = lv_multi
            mmory                 = '1'
            mtnrv                 = gs_bom_create­matnr
            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_create­stlan
          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 sy­subrc <> 0.
*      MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
        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_mat­idnrk
            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_e­matnr
       AND werks = p_plnt_t.
    IF sy­subrc 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 sy­subrc 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_e­matnr.

      IF sy­subrc EQ 0.
        SELECT matnr
               maktx
               spras
          FROM makt INTO TABLE gt_makt_e
          FOR ALL ENTRIES IN gt_mara_e
         WHERE matnr = gt_mara_e­matnr.
      ENDIF.
    ENDIF.
  ELSE.

    MESSAGE text­051 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_messages­icon    = '@0A@'.
    gs_messages­werks   = p_plnt_t.
    gs_messages­message = text­039.
    APPEND gs_messages TO gt_messages.
  ENDIF.

  LOOP AT gt_mara_e INTO gs_mara_e.
    CLEAR: gs_alv_material.
    MOVE­CORRESPONDING 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_e­matnr.
    IF sy­subrc EQ 0.
      MOVE­CORRESPONDING gs_marc_e TO gs_alv_material.
      CLEAR: gs_alv_material­lgpro.
    ENDIF.

    READ TABLE gt_makt_e INTO gs_makt_e
                         WITH KEY matnr = gs_mara_e­matnr
                                  spras = 'E'.
    IF sy­subrc EQ 0.
      MOVE­CORRESPONDING gs_makt_e TO gs_alv_material.
    ELSE.
      READ TABLE gt_makt_e INTO gs_makt_e
                           WITH KEY matnr = gs_mara_e­matnr.
      IF sy­subrc EQ 0.
        MOVE­CORRESPONDING gs_makt_e TO gs_alv_material.
      ENDIF.
    ENDIF.

    IF p_pltyp EQ gc_x.
      IF gs_marc_e­zptyp IS NOT INITIAL.
        CASE gs_marc_e­zptyp.
          WHEN 'FIN'.
            gs_alv_material­lgpro = p_fin_sl.
            gs_alv_material­vkorg = p_fin_so.
            gs_alv_material­vtweg = p_fin_d.
            gs_alv_material­bwkey = p_fin_v.
            gs_alv_material­mat_r = p_fin_m.
            gs_alv_material­lgnum = p_fin_w.
          WHEN 'PUR'.
            gs_alv_material­lgpro = p_pur_sl.
            gs_alv_material­vkorg = p_pur_so.
            gs_alv_material­vtweg = p_pur_d.
            gs_alv_material­bwkey = p_pur_v.
            gs_alv_material­mat_r = p_pur_m.
            gs_alv_material­lgnum = p_pur_w.
          WHEN 'REF'.
            gs_alv_material­lgpro = p_ref_sl.
            gs_alv_material­vkorg = p_ref_so.
            gs_alv_material­vtweg = p_ref_d.
            gs_alv_material­bwkey = p_ref_v.
            gs_alv_material­mat_r = p_ref_m.
            gs_alv_material­lgnum = p_ref_w.
          WHEN 'SUB'.
            IF gs_alv_material­sobsl EQ '50'.
              gs_alv_material­lgpro = p_ph_sl.
              gs_alv_material­vkorg = p_ph_so.
              gs_alv_material­vtweg = p_ph_d.
              gs_alv_material­bwkey = p_ph_v.
              gs_alv_material­mat_r = p_ph_m.
              gs_alv_material­lgnum = p_ph_w.
            ELSE.
              gs_alv_material­lgpro = p_sub_sl.
              gs_alv_material­vkorg = p_sub_so.
              gs_alv_material­vtweg = p_sub_d.
              gs_alv_material­bwkey = p_sub_v.
              gs_alv_material­mat_r = p_sub_m.
              gs_alv_material­lgnum = 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_material­lgpro = p_trd_sl.
            gs_alv_material­vkorg = p_trd_so.
            gs_alv_material­vtweg = p_trd_d.
            gs_alv_material­bwkey = p_trd_v.
            gs_alv_material­mat_r = p_trd_m.
            gs_alv_material­lgnum = p_trd_w.
          WHEN OTHERS.
        ENDCASE.
      ELSE.
        gs_alv_material­lgpro = p_def_sl.
        gs_alv_material­vkorg = p_def_so.
        gs_alv_material­vtweg = p_def_d.
        gs_alv_material­bwkey = p_def_v.
        gs_alv_material­mat_r = p_def_m.
        gs_alv_material­lgnum = p_def_w.
      ENDIF.
    ELSE.
      gs_alv_material­lgpro = p_def_sl.
      gs_alv_material­vkorg = p_def_so.
      gs_alv_material­vtweg = p_def_d.
      gs_alv_material­bwkey = p_def_v.
      gs_alv_material­mat_r = p_def_m.
      gs_alv_material­lgnum = p_def_w.
    ENDIF.

    IF gs_alv_material­mat_r IS INITIAL.
      gs_alv_material­lgpro = p_def_sl.
      gs_alv_material­vkorg = p_def_so.
      gs_alv_material­vtweg = p_def_d.
      gs_alv_material­bwkey = p_def_v.
      gs_alv_material­mat_r = p_def_m.
      gs_alv_material­lgnum = p_def_w.
    ENDIF.

    IF gs_alv_material­bwkey IS INITIAL.
      READ TABLE gt_bwkey INTO gs_bwkey WITH KEY werks = p_plnt_t.
      IF sy­subrc EQ 0.
        gs_alv_material­bwkey = gs_bwkey­bwkey.
      ENDIF.
    ENDIF.
*To check whether this material exists in the target material
    CLEAR: gs_alv_material­sel.
    READ TABLE gt_target_plnt INTO gs_target_plnt
                              WITH KEY matnr = gs_mara_e­matnr
                                       werks = p_plnt_t.
    IF sy­subrc NE 0.
      gs_alv_material­sel = gc_x.
    ENDIF.

    READ TABLE gt_target_plnt_r INTO gs_target_plnt_r
                                WITH KEY matnr = gs_alv_material­mat_r
                                         werks = p_plnt_t.
    IF sy­subrc EQ 0.
      IF gs_alv_material­lgpro IS INITIAL .
        gs_alv_material­lgpro = gs_target_plnt­lgpro.
      ENDIF.
    ENDIF.

    gs_alv_material­plant = 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_material­zptyp.
    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 = sy­repid.
*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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.

*To modify the fieldcatalog according to the users
  LOOP AT gt_fieldcat1 INTO gs_fieldcat1.
    IF gs_fieldcat1­fieldname = 'SEL'.
      gs_fieldcat1­seltext_m = text­118.
      gs_fieldcat1­checkbox = gc_x.
      gs_fieldcat1­edit     = gc_x.
    ELSEIF gs_fieldcat1­fieldname = 'ZPTYP'.
      gs_fieldcat1­seltext_s = text­071.
      gs_fieldcat1­edit      = gc_x.
    ENDIF.
    IF gs_fieldcat1­fieldname = 'MAT_R'.
      gs_fieldcat1­seltext_m = text­078.
      gs_fieldcat1­seltext_s = text­078.
      gs_fieldcat1­reptext_ddic = text­078.
      gs_fieldcat1­seltext_l = text­078.
      gs_fieldcat1­edit      = 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_fieldcat1­fieldname = 'PLANT'.
      gs_fieldcat1­seltext_m = text­073.
      gs_fieldcat1­seltext_s = text­073.
      gs_fieldcat1­reptext_ddic = text­073.
      gs_fieldcat1­seltext_l = text­073.
    ENDIF.
    IF gs_fieldcat1­fieldname = 'ZP2F_OLDMAT'.
      gs_fieldcat1­seltext_m = text­072.
      gs_fieldcat1­seltext_s = text­072.
      gs_fieldcat1­reptext_ddic = text­072.
      gs_fieldcat1­seltext_l = text­072.
      gs_fieldcat1­edit      = gc_x.
    ENDIF.
    gs_fieldcat1­just      = '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_layout1­colwidth_optimize = gc_x.
  gs_layout1­zebra      = gc_x.
ENDFORM.                    " BUILD_LAYOUT1
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  DISPLAY_FINAL_ALV
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM display_final_alv .
  gv_repid = sy­repid.
*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             = text­069
      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 sy­subrc <> 0.
*    MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
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 sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
  ENDIF.

ENDFORM.                    " DISPLAY_FINAL_ALV
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  user_command
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*User actions on ALV
FORM user_command USING r_ucomm TYPE sy­ucomm
                        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 PF­STATUS '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_material­matnr
                                       werks = p_plnt_t.
    IF sy­subrc EQ 0.
      CLEAR: gs_messages.
      gs_messages­icon    = '@0A@'.
      gs_messages­matnr   = gs_alv_material­matnr.
      gs_messages­zp2f_oldmat = gs_alv_material­zp2f_oldmat.
      gs_messages­werks   = p_plnt_t.
      gs_messages­message = text­040.
      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_material­matnr
                                  werks = gs_alv_material­werks.

*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_headdata­material      = gs_alv_material­matnr.
    ls_headdata­matl_type     = gs_alv_material­mtart.
*    ls_headdata­basic_view    = c_x.
    ls_headdata­mrp_view      = gc_x.
    IF gs_forecastparameters IS NOT INITIAL.
      ls_headdata­forecast_view = gc_x.
    ENDIF.
    IF gs_valuationdata IS NOT INITIAL.
      ls_headdata­account_view  = gc_x.
      ls_headdata­cost_view     = gc_x.
    ENDIF.
    IF gs_salesdata IS NOT INITIAL.
      ls_headdata­sales_view    = gc_x.
    ENDIF.
    ls_headdata­purchase_view = gc_x.
    ls_headdata­prt_view      = gc_x.
    IF gs_storagelocationdata IS NOT INITIAL.
      ls_headdata­storage_view  = gc_x.
    ENDIF.
    IF gs_warehousenumberdata IS NOT INITIAL.
      ls_headdata­warehouse_view  = gc_x.
    ENDIF.
*Populate MARA details
    gs_clientdata­base_uom    = gs_alv_material­meins.
    gs_clientdata­authoritygroup = gs_alv_material­begru.
    gs_clientdata­dsn_office  = gs_alv_material­labor.

*Populate Plant and MRP profile details from MARC and MDIP
    gs_plantdata­plant        = p_plnt_t.
    LOOP AT gt_prtdata INTO gs_prtdata .
      IF gs_prtdata­plant IS NOT INITIAL.
        gs_prtdata­plant = p_plnt_t.
        MODIFY gt_prtdata FROM gs_prtdata.
      ENDIF.
    ENDLOOP.

    IF gs_plantdata­availcheck IS INITIAL.
      IF gs_marc_e­mtvfp IS INITIAL.
        gs_plantdata­availcheck   = 'KP'.
      ELSE.
        gs_plantdata­availcheck   = gs_marc_e­mtvfp.
      ENDIF.
    ENDIF.

    IF gs_plantdata­profit_ctr IS INITIAL.
      IF gs_marc_e­prctr IS INITIAL.
        gs_plantdata­profit_ctr   = gc_admin.
      ELSE.
        gs_plantdata­profit_ctr   = gs_marc_e­prctr.
      ENDIF.
    ENDIF.

    IF gs_forecastparameters IS NOT INITIAL.
      IF gs_forecastparameters­fore_model  IS INITIAL.
        gs_forecastparameters­fore_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_forecastparameters­plant       = p_plnt_t.
    ENDIF.
*To populate the Z fields of MARC
    IF NOT gs_alv_material­zp2f_oldmat IS INITIAL
    OR NOT gs_alv_material­zptyp IS INITIAL.

      ls_extn­structure = 'BAPI_TE_MARC'.
      ls_extn­valuepart1+0(4) = p_plnt_t.
      ls_extn­valuepart1+4(18) = gs_alv_material­zp2f_oldmat.
      ls_extn­valuepart1+22(4) = gs_alv_material­zptyp.
      ls_extn­valuepart1+26(12) = p_ecm_t.

      ls_extnx­structure = 'BAPI_TE_MARCX'.
      ls_extnx­valuepart1+0(4) = p_plnt_t.
      ls_extnx­valuepart1+21(1) = 'X'.
      ls_extnx­valuepart1+25(1) = 'X'.
      ls_extnx­valuepart1+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_materialdescription­langu     = gs_alv_material­spras.
    ls_materialdescription­matl_desc = gs_alv_material­maktx.
    APPEND ls_materialdescription TO lt_materialdescription.

    IF gs_storagelocationdata IS NOT INITIAL.

      gs_storagelocationdata­plant      = p_plnt_t.
      CLEAR: gs_storagelocationdata­stge_loc.
      IF gs_alv_material­zptyp IS NOT INITIAL.
        CASE gs_alv_material­zptyp.
          WHEN 'FIN'.
            gs_storagelocationdata­stge_loc = p_fin_sl.
          WHEN 'SUB'.
            IF gs_alv_material­sobsl = '50'.
              gs_storagelocationdata­stge_loc = p_ph_sl.
            ELSE.
              gs_storagelocationdata­stge_loc = p_sub_sl.
            ENDIF.
          WHEN 'REF'.
            gs_storagelocationdata­stge_loc = p_ref_sl.
          WHEN 'PUR'.
            gs_storagelocationdata­stge_loc = p_pur_sl.
          WHEN 'TRA'.
            gs_storagelocationdata­stge_loc = p_trd_sl.
        ENDCASE.
      ELSE.
        gs_storagelocationdata­stge_loc = p_def_sl.
      ENDIF.

      IF gs_storagelocationdata­stge_loc IS INITIAL.
        READ TABLE gt_target_plnt_r INTO gs_target_plnt_r
                                 WITH KEY matnr = gs_alv_material­mat_r
                                            werks = p_plnt_t   .
        IF sy­subrc EQ 0.
          gs_storagelocationdata­stge_loc = gs_target_plnt_r­lgpro.
        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_storagelocationdata­stge_loc IS INITIAL AND
        gs_marc_e­lgpro IS NOT INITIAL.
        gs_storagelocationdata­stge_loc = gs_marc_e­lgpro.
      ELSEIF gs_storagelocationdata­stge_loc IS INITIAL AND
         gs_marc_e­lgpro IS INITIAL.
        CLEAR: gs_storagelocationdata­plant, gs_plantdata­iss_st_loc.
      ENDIF.
    ELSE.
      CLEAR: gs_plantdata­iss_st_loc.
    ENDIF.

    IF gs_valuationdata IS NOT INITIAL.
      IF gs_alv_material­zptyp IS NOT INITIAL.
        CASE gs_alv_material­zptyp.
          WHEN 'FIN'.
            gs_valuationdata­val_area = p_fin_v.
          WHEN 'SUB'.
            IF gs_alv_material­sobsl = '50'.
              gs_valuationdata­val_area = p_ph_v.
            ELSE.
              gs_valuationdata­val_area = p_sub_v.
            ENDIF.
          WHEN 'REF'.
            gs_valuationdata­val_area = p_ref_v.
          WHEN 'PUR'.
            gs_valuationdata­val_area = p_pur_v.
          WHEN 'TRA'.
            gs_valuationdata­val_area = p_trd_v.
        ENDCASE.
      ELSE.
        gs_valuationdata­val_area = p_def_v.
      ENDIF.

      READ TABLE gt_bwkey INTO gs_bwkey WITH KEY werks = p_plnt_t.
      IF sy­subrc EQ 0.
        gs_valuationdata­val_area = gs_bwkey­bwkey.
        gs_alv_material­bwkey = gs_bwkey­bwkey.
      ENDIF.

    ENDIF.

    IF gv_down = gc_x.
      mcat1 text­067.
      mcat1 text­070.
      mcat1 text­068.
      mcat1 text­071.
      mcat1 text­072.
      mcat1 text­073.
      mcat1 text­074.
      mcat1 text­075.
      mcat1 text­076.
      mcat1 text­077.
      mcat1 text­078.
      mcat1 text­079.
      mcat1 text­080.
      mcat1 text­081.
      mcat1 text­082.
      mcat1 text­083.
      mcat1 text­084.
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 text­085.
      mcat1 text­086.
      mcat1 text­087.
      mcat1 text­088.
      mcat1 text­089.
      mcat1 text­090.
      mcat1 text­091.
      mcat1 text­092.
      mcat1 text­093.
      mcat1 text­094.
      mcat1 text­095.
      mcat1 text­096.
      mcat1 text­097.
      mcat1 text­098.
      mcat1 text­099.
      mcat1 text­100.
      mcat1 text­101.
      mcat1 text­102.
      mcat1 text­103.
      mcat1 text­104.
      mcat1 text­105.
      mcat1 text­106.
      mcat1 text­107.
      mcat1 text­108.
      mcat1 text­109.
      mcat1 text­110.
      mcat1 text­111.
      mcat1 text­112.
      mcat1 text­113.
      mcat1 text­114.

      MOVE­CORRESPONDING gs_alv_material TO gs_download.
      MOVE­CORRESPONDING gs_clientdata TO gs_download.
      MOVE­CORRESPONDING gs_plantdata TO gs_download.
      MOVE­CORRESPONDING 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 SAPP­4840
      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

          MOVE­CORRESPONDING gs_materiallongtext TO gs_matlongtext.
          CLEAR: gs_matlongtext­text_name,gs_materiallongtext.
          gs_matlongtext­text_name = ls_headdata­material.
          APPEND gs_matlongtext TO gt_matlongtext.
          CLEAR gs_matlongtext.
        ENDLOOP.
      ENDIF.
*** END OF INSERTION SAPP­4840
*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 SAPP­4840
*         materiallongtext     = gt_materiallongtext
          materiallongtext     = gt_matlongtext
*** END OF CHANGE SAPP­4840
          taxclassifications   = gt_taxclass
          prtdata              = gt_prtdata
          prtdatax             = gt_prtdatax
          extensionin          = lt_extn
          extensioninx         = lt_extnx.

      IF ls_return­type NE gc_e.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .

        IF NOT p_ecm_t IS INITIAL.
          ls_change_header­change_no = p_ecm_t.

          ls_alt_dates­alt_date = sy­datum.
          ls_alt_dates­valid_from = sy­datum.
          APPEND ls_alt_dates TO lt_alt_dates.
          CLEAR ls_alt_dates.

          ls_objmgrec­alt_date = sy­datum.
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_objmgrec­chg_objtyp = '4'.
          ls_objmgrec­material = ls_headdata­material.
          ls_objmgrec­plant    = p_plnt_t.
          APPEND ls_objmgrec TO lt_objmgrec.
          CLEAR ls_objmgrec.

          ls_effectivity­valid_from = sy­datum.
          ls_effectivity­valid_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 sy­msgty EQ 'E'.
*Error message when no data found
            CALL FUNCTION 'FORMAT_MESSAGE'
              EXPORTING
                id     = syst­msgid
                no     = syst­msgno
                v1     = syst­msgv1
                v2     = syst­msgv2
              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_return­type = gc_e.
          gs_messages­icon    = '@0A@'.
        ELSE.
          gs_messages­icon    = '@08@'.
        ENDIF.
        gs_messages­matnr   = gs_alv_material­matnr.
        gs_messages­werks   = p_plnt_t.
        gs_messages­zp2f_oldmat = gs_alv_material­zp2f_oldmat.
        gs_messages­message = ls_return­message.
        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_messages­icon    = '@0A@'.
      gs_messages­message = text­058.
      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.

  FIELD­SYMBOLS: <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 sy­index OF STRUCTURE <wa_str> TO <lv_fldt>.
    IF sy­subrc 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 = sy­index.
    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.

  FIELD­SYMBOLS: <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 sy­index OF STRUCTURE <wa_str> TO <l_fldt>.
      IF sy­subrc 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_bom­stlnr = gs_aeoi_bom­objkt+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_bom­stlnr
       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_create­plant = p_plnt_t.
      IF p_bom_t IS NOT INITIAL.
        gs_bom_create­bomuse = p_bom_t.
      ELSE.
        gs_bom_create­bomuse = gs_bom_create­stlan.
      ENDIF.
      gs_bom_create­ecn    = 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                 = sy­datum
          ehndl                 = '1'
          mbwls                 = 'X'
          mehrs                 = lv_multi
          mmory                 = '1'
          mtnrv                 = gs_bom_create­matnr
          werks                 = p_plnt_e
          vrsvo                 = 'X'
          stlan                 = gs_bom_create­stlan
        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 sy­subrc <> 0.
*      MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
      ENDIF.
*Delete the components which don't have BOM
      DELETE gt_stb WHERE xtlnr EQ space.

      MOVE­CORRESPONDING  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_final­matnr_c = gs_bom_create­matnr.
      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.
          MOVE­CORRESPONDING  gs_bom_create TO gs_bom_create_final.
          gs_bom_create_final­matnr_c = gs_stb­idnrk.
          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_final­matnr_c
         AND werks = gt_bom_create_final­plant
         AND stlan = gt_bom_create_final­bomuse.

      LOOP AT gt_bom_create_final INTO gs_bom_create_final.
        READ TABLE gt_mast INTO gs_mast
                   WITH KEY matnr = gs_bom_create_final­matnr_c
                                    werks = gs_bom_create_final­plant
                                    stlan = gs_bom_create_final­bomuse.
        IF sy­subrc NE 0.
          gs_bom_create_final­sel = 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 text­045 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.
  ELSE.
*Error message when no data found
    MESSAGE text­045 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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
    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_stpo­component
        IMPORTING
          output = gs_stpo­component.
      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_stpo­component
       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_stpo­component.
      IF sy­subrc NE 0.
        gs_target_mis­matnr = gs_stpo­component.
        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_stpo­component
        IMPORTING
          output = gs_stpo­component.
      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_mbom­datuv,
        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_stpo­valid_from
      IMPORTING
        output = gs_stpo­valid_from.

    MOVE­CORRESPONDING gs_stpo TO gs_stpo1.
    CLEAR: gs_stpo1­item_guid, gs_stpo1­itm_ident.
*** BEGIN OF INSERTION SAPP­4840
*** Clear Indicators so that indicators will set by default
*** based on BOM usage during BOM Creation
    CLEAR: gs_stpo1­rel_cost,gs_stpo1­rel_engin,gs_stpo1­rel_pmaint,
           gs_stpo1­rel_prod,gs_stpo1­rel_sales,gs_stpo1­spare_part.
*** END OF INSERTION SAPP­4840
    APPEND gs_stpo1 TO gt_stpo1.
  ENDLOOP.

  LOOP AT gt_stko INTO gs_stko.
    MOVE­CORRESPONDING gs_stko TO gs_stko1.
    IF p_bom_st IS NOT INITIAL.
      gs_stko1­bom_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 = sy­datum.

  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 sy­subrc <> 0.
*Error message when no data found
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id     = syst­msgid
        no     = syst­msgno
        v1     = syst­msgv1
        v2     = syst­msgv2
      IMPORTING
        msg    = lv_msg
      EXCEPTIONS
        OTHERS = 0.

    IF syst­msgty 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 text­128 p_plnt_t INTO
        lv_msg SEPARATED BY space.
      ELSE.
        READ TABLE gt_target_mis INTO gs_target_mis INDEX 1.
        CONCATENATE gs_target_mis­matnr text­127 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_messages­icon    = '@0A@'.
      gs_messages­matnr   = 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 sy­subrc EQ 0.
        gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
      ENDIF.
      gs_messages­werks   = p_p_plnt_t.
      gs_messages­message = lv_msg.
      APPEND gs_messages TO gt_messages.
    ELSE.
      CLEAR: gs_messages.
      gs_messages­icon    = '@0A@'.
      gs_messages­matnr   = 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 sy­subrc EQ 0.
        gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
      ENDIF.
      gs_messages­werks   = p_p_plnt_t.
      gs_messages­message = lv_msg.
      APPEND gs_messages TO gt_messages.
    ENDIF.
  ELSE.
    CLEAR: gs_messages.
    gs_messages­icon    = '@08@'.
    gs_messages­matnr   = 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 sy­subrc EQ 0.
      gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
    ENDIF.
    gs_messages­werks   = p_p_plnt_t.
    gs_messages­docnum = gv_bom_no.
    gs_messages­message = text­055.
    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 mbew­bwkey.

  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_material­mat_r
     AND bwkey = gs_alv_material­bwkey.
  IF sy­subrc NE 0.
    CLEAR: gs_alv_material­bwkey.
  ENDIF.
*Getting data for Target plant and ref Material
  CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
    EXPORTING
      material            = gs_alv_material­mat_r
      val_area            = gs_alv_material­bwkey
      plant               = p_plnt_t
      stge_loc            = gs_alv_material­lgpro
      salesorg            = gs_alv_material­vkorg
      distr_chan          = gs_alv_material­vtweg
      whsenumber          = gs_alv_material­lgnum
    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_material­matnr
      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

    MOVE­CORRESPONDING:
                  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.

    MOVE­CORRESPONDING ls_prtdata1 TO gs_prtdata.
    APPEND gs_prtdata TO gt_prtdata.

    LOOP AT lt_unitof_m1 INTO ls_unitof_m1.
      MOVE­CORRESPONDING ls_unitof_m1 TO gs_unitsofmeasure.
      APPEND gs_unitsofmeasure TO gt_unitsofmeasure.
    ENDLOOP.
    LOOP AT lt_intern1 INTO ls_intern1.
      MOVE­CORRESPONDING ls_intern1 TO gs_intern.
      APPEND gs_intern TO gt_intern.
    ENDLOOP.
    LOOP AT lt_materiallongtext1 INTO ls_materiallongtext1.
      MOVE­CORRESPONDING ls_materiallongtext1 TO gs_materiallongtext.
      APPEND gs_materiallongtext TO gt_materiallongtext.
    ENDLOOP.
    LOOP AT lt_taxclass1 INTO ls_taxclass1.
      MOVE­CORRESPONDING 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 sy­subrc EQ 0.
      gs_alv_material­bwkey = gs_bwkey­bwkey.
    ENDIF.

    READ TABLE gt_marc_e INTO gs_marc_e
                         WITH KEY matnr = gs_alv_material­matnr.
    IF sy­subrc EQ 0.
      gs_alv_material­lgpro = gs_marc_e­lgpro.
    ENDIF.

    SELECT SINGLE bwkey
  FROM mbew INTO lv_bwkey_t
 WHERE matnr = gs_alv_material­matnr
   AND bwkey = gs_alv_material­bwkey.
    IF sy­subrc NE 0.
      CLEAR: gs_alv_material­bwkey.
    ENDIF.

    CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
      EXPORTING
        material            = gs_alv_material­matnr
        val_area            = gs_alv_material­bwkey
        plant               = p_plnt_e
        stge_loc            = gs_alv_material­lgpro
*        salesorg            = gs_alv_material­vkorg
*        distr_chan          = gs_alv_material­vtweg
*        whsenumber          = gs_alv_material­lgnum
      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.

      MOVE­CORRESPONDING:
                    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.

      MOVE­CORRESPONDING ls_prtdata1 TO gs_prtdata.
      APPEND gs_prtdata TO gt_prtdata.
      LOOP AT lt_unitof_m1 INTO ls_unitof_m1.
        MOVE­CORRESPONDING ls_unitof_m1 TO gs_unitsofmeasure.
        APPEND gs_unitsofmeasure TO gt_unitsofmeasure.
      ENDLOOP.
      LOOP AT lt_intern1 INTO ls_intern1.
        MOVE­CORRESPONDING ls_intern1 TO gs_intern.
        APPEND gs_intern TO gt_intern.
      ENDLOOP.
      LOOP AT lt_materiallongtext1 INTO ls_materiallongtext1.
        MOVE­CORRESPONDING ls_materiallongtext1 TO gs_materiallongtext.
        APPEND gs_materiallongtext TO gt_materiallongtext.
      ENDLOOP.
      LOOP AT lt_taxclass1 INTO ls_taxclass1.
        MOVE­CORRESPONDING 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_messages­icon    = '@0A@'.
      gs_messages­message = text­050.
      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_bom­fieldname = gc_sel.
  gs_fieldcat_bom­checkbox  = gc_x.
  gs_fieldcat_bom­just      = 'C'.
  gs_fieldcat_bom­edit      = gc_x.
  gs_fieldcat_bom­seltext_m = text­118.
  APPEND gs_fieldcat_bom TO gt_fieldcat_bom.

  mcat2    gc_matnr     text­125.
  mcat2    gc_mat_c     text­133.
  mcat2    gc_werks     text­068.
  mcat2    gc_stlan     text­115  .
  mcat2    gc_plant    text­073.
  mcat2    gc_bomuse    text­117.
  mcat2    gc_ecm       text­116.
ENDFORM.                    " BUILD_FIELDCATALOG_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  DISPLAY_ALV_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM display_alv_bom .
  gv_repid = sy­repid.
*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             = text­063
      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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  user_command
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*User actions on ALV
FORM user_command1 USING r_ucomm TYPE sy­ucomm
                         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 PF­STATUS '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 SAPP­4600
  TYPES: BEGIN OF ty_usobj,
           usobj TYPE aeoi­usobj,
         END OF ty_usobj.

  DATA: lv_datuv TYPE aenr­datuv,
        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 SAPP­4600

*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_final­matnr_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 SAPP­4600
  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 sy­subrc EQ 0.

      CLEAR: lv_datuv, ls_datuv.
      SELECT SINGLE * FROM aenr
        INTO ls_datuv
       WHERE aennr = p_ecm_t.
      IF sy­subrc EQ 0.
        lv_datuv = ls_datuv­datuv.

        ls_datuv­datuv = p_alt_d.
        MODIFY aenr FROM ls_datuv.
        COMMIT WORK.
      ENDIF.

    ENDIF.
  ENDIF.
*** END OF INSERTION SAPP­4600

*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_final­matnr_c
                                  p_plnt_e
                                  gs_bom_create_final­stlan.
    PERFORM create_bom_to_new_plant TABLES gt_legacy_mat
                            USING gs_bom_create_final­matnr_c
                                  p_plnt_t
                                  gs_bom_create_final­stlan.
  ENDLOOP.

*** BEGIN OF INSERTION SAPP­4600
  READ TABLE gt_bom_create_final
  WITH KEY sel = gc_x TRANSPORTING NO FIELDS.
  IF sy­subrc 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_final­matnr_c p_plnt_t
        gs_bom_create_final­stlan INTO ls_usobj­usobj.
        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_usobj­usobj.
      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 sy­subrc EQ 0.
          ls_aeoi­aedtz = ls_aedt­aedtz.
          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_datuv­datuv = lv_datuv.
        MODIFY aenr FROM ls_datuv.
        COMMIT WORK.
      ENDIF.

    ENDIF.
  ENDIF.
*** END OF INSERTION SAPP­4600

*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 stpox­xtlnr.
  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                 = sy­datum
        ehndl                 = '1'
        mbwls                 = 'X'
        mehrs                 = lv_multi
        mmory                 = '1'
        mtnrv                 = gs_bom_create_final­matnr_c
        werks                 = p_plnt_e
        vrsvo                 = 'X'
        stlan                 = gs_bom_create_final­stlan
      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 sy­subrc <> 0.
*      MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*         WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
    ENDIF.
*To get all the values in an internal table for Main Material
    PERFORM get_bom_details USING gs_bom_create_final­matnr_c
                                  p_plnt_e
                                  gs_bom_create_final­stlan.

    LOOP AT gt_stko INTO gs_stko.
      MOVE­CORRESPONDING gs_stko TO gt_bom_down.
    ENDLOOP.

    LOOP AT gt_stb INTO gs_stb.
      MOVE­CORRESPONDING gs_stb TO gt_bom_down.
      CLEAR:lv_xtlnr.
      lv_xtlnr = gs_stb­stlnr.
      CLEAR: gs_stb.
      READ TABLE gt_stb INTO gs_stb WITH KEY xtlnr = lv_xtlnr.
      IF sy­subrc EQ 0.
        gt_bom_down­matnr_c = gs_stb­idnrk.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gt_bom_down­matnr_c
          IMPORTING
            output = gt_bom_down­matnr_c.
      ELSE.
        gt_bom_down­matnr_c = gs_bom_create_final­matnr_c.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gt_bom_down­matnr_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_down­matnr_c.
      ENDIF.
      gt_bom_down­matnr = gs_bom_create_final­matnr_c.
      gt_bom_down­werks = p_plnt_t.
      IF p_bom_t IS NOT INITIAL.
        gt_bom_down­stlan = p_bom_t.
      ENDIF.
      IF p_bom_st IS NOT INITIAL.
        gt_bom_down­bom_status = p_bom_st.
      ENDIF.
      gt_bom_down­chg_no = p_ecm_t.
      gt_bom_down­sel = gc_x.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = gt_bom_down­idnrk
        IMPORTING
          output = gt_bom_down­idnrk.
      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 = sy­repid.
*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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.
  LOOP AT gt_fieldcat1 INTO gs_fieldcat1.
    IF gs_fieldcat1­fieldname = 'MATNR'.
      gs_fieldcat1­seltext_m = text­125.
      gs_fieldcat1­seltext_s = text­125.
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_fieldcat1­reptext_ddic = text­125.
      gs_fieldcat1­seltext_l = text­125.
    ENDIF.
    IF gs_fieldcat1­fieldname = 'SEL'.
      gs_fieldcat1­seltext_m = text­118.
      gs_fieldcat1­checkbox = gc_x.
      gs_fieldcat1­edit     = gc_x.
    ENDIF.
    IF gs_fieldcat1­fieldname = 'MATNR_C'.
      CLEAR :gs_fieldcat1­seltext_m,
             gs_fieldcat1­seltext_s,
             gs_fieldcat1­reptext_ddic,
             gs_fieldcat1­ref_fieldname,
             gs_fieldcat1­ref_tabname.
      gs_fieldcat1­seltext_l = text­134.
    ENDIF.
    IF gs_fieldcat1­fieldname = 'IDNRK'.
      CLEAR :gs_fieldcat1­seltext_m,
             gs_fieldcat1­seltext_s,
             gs_fieldcat1­reptext_ddic,
             gs_fieldcat1­ref_fieldname,
             gs_fieldcat1­ref_tabname.
      gs_fieldcat1­seltext_l = text­135.
    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 = sy­repid.
*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             = text­063
      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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_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 sy­ucomm
                         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 PF­STATUS '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 text­067.
      mcat1 text­119.
      mcat1 text­124.
      mcat1 text­122.
      mcat1 text­121.
      mcat1 text­120.
      mcat1 text­123.
      REFRESH: gt_bom_down1.
      LOOP AT gt_bom_down WHERE sel = gc_x.
        MOVE­CORRESPONDING 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_messages­icon    = '@0A@'.
      gs_messages­message = text­058.
      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_outtab­sel = '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_outtab­sel = ' '.
      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_outtab­sel = '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_outtab­sel = ' '.
      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_outtab­sel = '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_outtab­sel = ' '.
      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_bom­stlnr = gs_aeoi_bom­objkt+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_bom­stlnr
       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_ext­plant = p_plnt_t.
      MODIFY gt_bom_ext FROM gs_bom_ext.
      MOVE­CORRESPONDING 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_final­matnr
         AND werks = gt_bom_ext_final­plant
         AND stlan = gt_bom_ext_final­stlan
         AND stlal = gt_bom_ext_final­stlal.

      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_final­matnr
                                    werks = gs_bom_ext_final­plant
                                    stlan = gs_bom_ext_final­stlan
                                    stlal = gs_bom_ext_final­stlal.
        IF sy­subrc NE 0.
          gs_bom_ext_final­sel = 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 text­045 TYPE gc_s DISPLAY LIKE gc_e.
      EXIT.
    ENDIF.
  ELSE.
*Error message when no data found
    MESSAGE text­045 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_bom­fieldname = gc_sel.
  gs_fieldcat_ext_bom­checkbox  = gc_x.
  gs_fieldcat_ext_bom­just      = 'C'.
  gs_fieldcat_ext_bom­edit      = gc_x.
  gs_fieldcat_ext_bom­seltext_m = text­118.
  APPEND gs_fieldcat_ext_bom TO gt_fieldcat_ext_bom.

  mcat3    gc_matnr     text­067.
  mcat3    gc_werks     text­068.
  mcat3    gc_stlan     text­115.
  mcat3    gc_stlal     text­137.
  mcat3    gc_plant     text­073.

ENDFORM.                    " BUILD_FIELDCATALOG_EXT_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  DISPLAY_ALV_EXT_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM display_alv_ext_bom .

  gv_repid = sy­repid.
*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             = text­136
      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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV_EXT_BOM
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  user_command
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*User actions on ALV
FORM user_command3 USING r_ucomm TYPE sy­ucomm
                         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 PF­STATUS '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_outtab­sel = '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_outtab­sel = ' '.
      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_final­matnr
      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_final­matnr
                                    p_plnt_e
                                    gs_bom_ext_final­stlan
                                    gs_bom_ext_final­stlal.

    PERFORM assign_bom_to_new_plant TABLES gt_legacy_mat
                            USING gs_bom_ext_final­matnr
                                  p_plnt_t
                                  gs_bom_ext_final­stlan
                                  gs_bom_ext_final­stlal.
    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 capiflag­flwarning.

  REFRESH lt_plant[].
  CLEAR ls_plant.
  ls_plant­plant = 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 sy­subrc <> 0.
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id     = syst­msgid
        no     = syst­msgno
        v1     = syst­msgv1
        v2     = syst­msgv2
      IMPORTING
        msg    = lv_msg
      EXCEPTIONS
        OTHERS = 0.

    IF syst­msgty 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 text­128 p_plnt_t INTO
        lv_msg SEPARATED BY space.
      ELSE.
        READ TABLE gt_target_mis INTO gs_target_mis INDEX 1.
        CONCATENATE gs_target_mis­matnr text­127 p_plnt_t INTO
        lv_msg SEPARATED BY space.
      ENDIF.

      CLEAR: gs_messages.
      gs_messages­icon    = '@0A@'.
      gs_messages­matnr   = 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 sy­subrc EQ 0.
        gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
      ENDIF.

      gs_messages­werks   = p_p_plnt_t.
      gs_messages­message = lv_msg.
      APPEND gs_messages TO gt_messages.
      CLEAR gs_messages.

    ELSE.
      CLEAR: gs_messages.
      gs_messages­icon    = '@0A@'.
      gs_messages­matnr   = 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 sy­subrc EQ 0.
        gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
      ENDIF.

      gs_messages­werks   = p_p_plnt_t.
      gs_messages­message = lv_msg.
      APPEND gs_messages TO gt_messages.
      CLEAR gs_messages.
    ENDIF.
  ELSE.
    CLEAR: gs_messages.
    gs_messages­icon    = '@08@'.
    gs_messages­matnr   = 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 sy­subrc EQ 0.
      gs_messages­zp2f_oldmat = gs_legacy_mat­zp2f_oldmat.
    ENDIF.
    gs_messages­werks  = p_p_plnt_t.
    gs_messages­message = text­138.
    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_stpo­component
        IMPORTING
          output = gs_stpo­component.
      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_stpo­component = 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_stpo­component
       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_stpo­component.
      IF sy­subrc NE 0.
        gs_target_mis­matnr = gs_stpo­component.
        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_stpo­component
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_stpo­component.
      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_dir­col.
        WHEN '0001'.
          MOVE gs_data_dir­value TO gs_upload_dir­matnr.
          PERFORM conv_matnr CHANGING gs_upload_dir­matnr.
        WHEN '0002'.
          MOVE gs_data_dir­value TO gs_upload_dir­doktl.
        WHEN '0003'.
          MOVE gs_data_dir­value TO gs_upload_dir­dokvr.
        WHEN '0004'.
          MOVE gs_data_dir­value TO gs_upload_dir­revlv.
        WHEN '0005'.
          MOVE gs_data_dir­value TO gs_upload_dir­dktxt.
        WHEN '0006'.
          MOVE gs_data_dir­value TO gs_upload_dir­olddir.
        WHEN '0007'.
          MOVE gs_data_dir­value TO gs_upload_dir­link_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_dir­matnr.
  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_aeoi­objkt.
  ENDIF.

  REFRESH: gt_doc_type.
  gs_doc_type­sign = 'I'.
  gs_doc_type­option = 'EQ'.
  gs_doc_type­low = 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_dir­matnr
      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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
    ENDIF.

    APPEND LINES OF gt_doc TO gt_doc_final.
  ENDLOOP.

  LOOP AT gt_mara_dir INTO gs_mara_dir.
    gt_final­matnr    = gs_mara_dir­matnr.
    gt_final­werks    = p_werks.
    gt_final­dokar    = p_dokar.
    gt_final­dokar_n  = p_dokar.
    gt_final­aennr    = p_ecm.
    gt_final­labor    = p_labor.
    CLEAR: gs_upload_dir, lv_flg.
    READ TABLE gt_upload_dir INTO gs_upload_dir
      WITH KEY matnr = gs_mara_dir­matnr.
    IF sy­subrc EQ 0.
      gt_final­doktl_n  = gs_upload_dir­doktl.
      gt_final­dokvr_n  = gs_upload_dir­dokvr.
      gt_final­revlv_n  = gs_upload_dir­revlv.
      gt_final­dktxt_n  = gs_upload_dir­dktxt.
      gt_final­olddir_n = gs_upload_dir­olddir.
      gt_final­link_n   = gs_upload_dir­link_n.
    ELSE.
      lv_flg = gc_x.
    ENDIF.

    CLEAR: gs_doc.
    READ TABLE gt_doc_final INTO gs_doc
      WITH KEY matnr = gs_mara_dir­matnr.
    IF sy­subrc EQ 0.
      gt_final­doknr  = gs_doc­doknr.
      gt_final­doktl  = gs_doc­doktl.
      gt_final­dokvr  = gs_doc­dokvr.
      gt_final­revlv  = gs_doc­revlv.
      gt_final­olddir = gs_doc­olddirnum.

      IF lv_flg = gc_x.
        gt_final­doktl_n  = p_doktl.
        gt_final­dokvr_n  = '00'.
        gt_final­olddir_n = gs_doc­olddirnum.
        gt_final­revlv_n  = '­'.
        IF gs_doc­dktxt IS NOT INITIAL.
          gt_final­dktxt_n  = gs_doc­dktxt.
        ELSE.
          gt_final­dktxt_n  = 'Document Info Record'.
        ENDIF.
        IF gs_doc­dappl IS NOT INITIAL.
          gt_final­dappl  = gs_doc­dappl.
        ELSE.
          gt_final­dappl  = p_dappl.
        ENDIF.
        gt_final­link_n = gs_doc­docfile1.

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_doc­doktl IS NOT INITIAL AND gt_final­doktl_n IS INITIAL.
          gt_final­doktl_n = gs_doc­doktl.
        ELSEIF gt_final­doktl_n IS INITIAL.
          gt_final­doktl_n = '000'.
        ENDIF.
        IF gt_final­doktl NE gt_final­doktl_n.
          gt_final­dokvr_n = '00'.
          gt_final­revlv_n = '­'.
        ENDIF.
      ENDIF.
      READ TABLE gt_revlv INTO gs_revlv
        WITH KEY revlv = gs_doc­revlv.
      IF sy­subrc EQ 0.
        gs_revlv­ccsrf = gs_revlv­ccsrf + 1.
        READ TABLE gt_revlv INTO gs_revlv
          WITH KEY ccsrf = gs_revlv­ccsrf.
        IF sy­subrc EQ 0.
          gt_final­revlv_n =  gs_revlv­revlv.
        ENDIF.
      ENDIF.
    ELSE.
      IF lv_flg EQ gc_x.
        IF p_doktl IS NOT INITIAL.
          gt_final­doktl_n = p_doktl.
        ELSE.
          gt_final­doktl_n = '000'.
        ENDIF.
        gt_final­dokvr_n = '00'.
        gt_final­revlv_n = '­'.
        gt_final­dktxt_n  = 'Document Info Record'.
      ENDIF.
      IF gt_final­dappl IS INITIAL.
        gt_final­dappl  = p_dappl.
      ENDIF.
      gt_final­sel1 = 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 text­160 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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.

ENDFORM.                    " CONV_MATNR
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  BUILD_FIELDCATALOG_DIR
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM build_fieldcatalog_dir .

  DATA: lv_repid TYPE sy­repid.

  REFRESH: gt_fieldcat_dir.
  lv_repid = sy­repid.
*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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.

*To modify the fieldcatalog according to the users
  LOOP AT gt_fieldcat_dir INTO gs_fieldcat_dir.
    CLEAR: gs_fieldcat_dir­seltext_s.
    IF gs_fieldcat_dir­fieldname = 'SEL'.
      gs_fieldcat_dir­seltext_m = text­151.
      gs_fieldcat_dir­checkbox  = gc_x.
      gs_fieldcat_dir­edit      = gc_x.
      gs_fieldcat_dir­outputlen = 5.
    ELSEIF gs_fieldcat_dir­fieldname = 'DOKTL_N'.
      CONCATENATE 'New' gs_fieldcat_dir­seltext_m
      INTO gs_fieldcat_dir­seltext_m SEPARATED BY space.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'DOKVR_N'.
      CONCATENATE 'New' gs_fieldcat_dir­seltext_m
      INTO gs_fieldcat_dir­seltext_m SEPARATED BY space.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = '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_dir­seltext_m = 'Old DIR Number'.
      CONCATENATE 'New' gs_fieldcat_dir­seltext_m
      INTO gs_fieldcat_dir­seltext_m SEPARATED BY space.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'REVLV_N'.
      CONCATENATE 'New' gs_fieldcat_dir­seltext_m
      INTO gs_fieldcat_dir­seltext_m SEPARATED BY space.
      gs_fieldcat_dir­edit      = gc_x.
      gs_fieldcat_dir­input = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'OLDDIR'.
      gs_fieldcat_dir­seltext_m = 'Old DIR Number'.
      gs_fieldcat_dir­input = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'DKTXT_N'.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'DOKAR_N'.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'LABOR'.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'DAPPL'.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'LINK_N'.
      gs_fieldcat_dir­edit      = gc_x.
    ELSEIF gs_fieldcat_dir­fieldname = 'SEL1'.
      gs_fieldcat_dir­seltext_m = text­152.
      gs_fieldcat_dir­checkbox  = gc_x.
      gs_fieldcat_dir­edit      = gc_x.
      gs_fieldcat_dir­outputlen = 5.
    ENDIF.
    gs_fieldcat_dir­ddictxt = '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_dir­zebra      = gc_x.
ENDFORM.                    " BUILD_LAYOUT_DIR
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  DISPLAY_ALV_DIR
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM display_alv_dir .
  DATA: lv_repid TYPE sy­repid.

  lv_repid  = sy­repid.
  gs_layout_dir­info_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             = text­153
      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 sy­subrc <> 0.
*    MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*            WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_DIR
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  user_command
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*User actions on ALV
FORM user_command_dir USING r_ucomm TYPE sy­ucomm
                        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 PF­STATUS '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_outtab­sel = 'X'.
      ELSE.
        ls_outtab­sel = ' '.
      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_outtab­sel1 = 'X'.
      ELSE.
        ls_outtab­sel1 = ' '.
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_aux­hostname,
        lv_force_update   TYPE bapi_doc_aux­flag,
        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_final­labor IS NOT INITIAL.
        ls_documentdata­laboratory = gt_final­labor.
      ELSE.
        READ TABLE gt_mara_dir INTO gs_mara_dir
          WITH KEY matnr = gt_final­matnr.
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 sy­subrc EQ 0.
          ls_documentdata­laboratory = gs_mara_dir­labor.
        ENDIF.
      ENDIF.

      IF gt_final­sel EQ gc_x AND gt_final­sel1 NE gc_x.
        ls_documentdata­documenttype = gt_final­dokar.
        ls_documentdata­documentnumber = gt_final­doknr.
        ls_documentdata­documentversion = gt_final­dokvr + '01'.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = ls_documentdata­documentversion
          IMPORTING
            output = ls_documentdata­documentversion.

        ls_documentdata­documentpart  = gt_final­doktl.
        ls_documentdata­revlevel        = gt_final­revlv_n.
        ls_documentdata­username      = sy­uname.
        lv_hostname                   = 'SAP'.
        ls_documentdata­ecnumber      = p_ecm.
        ls_documentdata­description   = gt_final­dktxt_n.
        ls_documentdata­refdocumentnumber   = gt_final­doknr.
        ls_documentdata­refdocumentpart     = gt_final­doktl.
        ls_documentdata­refdocumentversion  = gt_final­dokvr.
        ls_documentdatax­refdocumentnumber  = gc_x.
        ls_documentdatax­refdocumentpart    = gc_x.
        ls_documentdatax­refdocumentversion = gc_x.
      ENDIF.

      ls_documentdata­docfile1      = gt_final­link_n.
      IF gt_final­dappl IS NOT INITIAL.
        ls_documentdata­wsapplication1 = gt_final­dappl.
      ELSE.
        ls_documentdata­wsapplication1 = 'URL'.
      ENDIF.
      ls_documentdata­savedocfile1   = gt_final­link_n.

      IF gt_final­sel1 EQ gc_x.
        ls_documentdata­documenttype    = gt_final­dokar_n.
        ls_documentdata­documentversion = gt_final­dokvr_n.
        ls_documentdata­documentpart    = gt_final­doktl_n.
        ls_documentdata­username        = sy­uname.
        lv_hostname                     = 'SAP'.
        ls_documentdata­ecnumber        = p_ecm.
        ls_documentdata­revlevel        = gt_final­revlv_n.
        ls_documentdata­description     = gt_final­dktxt_n.
      ENDIF.

      ls_documentdatax­documenttype     = gc_x.
      ls_documentdatax­documentnumber   = gc_x.
      ls_documentdatax­documentpart     = gc_x.
      ls_documentdatax­documentversion  = gc_x.
      ls_documentdatax­description      = gc_x.
      ls_documentdatax­ecnumber         = gc_x.
      ls_documentdatax­revlevel         = gc_x.
      ls_documentdatax­laboratory       = gc_x.
      ls_documentdatax­docfile1         = gc_x.
      ls_documentdatax­wsapplication1   = gc_x.
      ls_documentdatax­savedocfile1     = gc_x.
      ls_documentdatax­datacarrier1     = gc_x.
      ls_documentdatax­savedatacarrier1 = 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_documentdescriptions­language      = 'E'.
      ls_documentdescriptions­language_iso  = 'EN'.
      ls_documentdescriptions­description   = gt_final­dktxt_n.
      APPEND ls_documentdescriptions TO lt_documentdescriptions.

      ls_objectlinks­objecttype             = 'MARA'.
      ls_objectlinks­objectkey              = gt_final­matnr.
      ls_objectlinks­documentdirection      = gc_x.
      APPEND ls_objectlinks TO lt_objectlinks.

      REFRESH: lt_classallocations, lt_characteristicvalues.
      IF gt_final­olddir_n IS NOT INITIAL.
        ls_characteristicvalues­classtype = '017'.
        ls_characteristicvalues­classname = 'DIR_NUMBER_OLD'.
        ls_characteristicvalues­charname  = 'OLDDIRNUMBER'.
        ls_characteristicvalues­charvalue = gt_final­olddir_n.
        APPEND ls_characteristicvalues TO lt_characteristicvalues.

        ls_classallocations­classtype     = '017'.
        ls_classallocations­classname     = 'DIR_NUMBER_OLD'.
        ls_classallocations­standardclass = gc_x.
        ls_classallocations­ecnumber = p_ecm.
        APPEND ls_classallocations TO lt_classallocations.
      ENDIF.

      IF gt_final­link_n IS NOT INITIAL.
        ls_origional­documenttype     = ls_documentdata­documenttype.
        ls_origional­documentnumber   = ls_documentdata­documentnumber.
        ls_origional­documentpart     = ls_documentdata­documentpart.
        ls_origional­documentversion  = ls_documentdata­documentversion.
        ls_origional­originaltype     = '1'.
        ls_origional­application_id   = 'DIR'.
        IF gt_final­dappl IS NOT INITIAL.
          ls_origional­wsapplication    = gt_final­dappl.
        ELSE.
          ls_origional­wsapplication    = 'URL'.
        ENDIF.
        ls_origional­language         = 'E'.
        ls_origional­checkedin        = gc_x.
        ls_origional­active_version   = gc_x.
        ls_origional­docfile          = gt_final­link_n.
        ls_origional­docpath          = gt_final­link_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_output­dokar
          documentnumber             = gt_final_output­doknr
          documentpart               = gt_final_output­doktl
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_output­dokvr
          return                     = ls_bapi_msg
        TABLES
          characteristicvalues       = lt_characteristicvalues
          classallocations           = lt_classallocations
*   documentdescriptions       =
         objectlinks                = lt_objectlinks
         documentfiles              = lt_origional
*   LONGTEXTS                  =
*   COMPONENTS                 =
*   STATUSLOG                  =
                .

      IF sy­subrc EQ 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*         EXPORTING
*           WAIT          =
*         IMPORTING
*           RETURN        =
                  .
      ENDIF.
      gt_final_output­msg = ls_bapi_msg­message.
      IF gt_final_output­doknr IS NOT INITIAL AND gt_final­sel1 IS NOT
      INITIAL.
        gt_final_output­msg = text­155.
      ELSEIF gt_final_output­doknr IS NOT INITIAL .
        gt_final_output­msg = text­156.
      ENDIF.
      gt_final_output­matnr = gt_final­matnr.
      gt_final_output­aennr = p_ecm.
      APPEND gt_final_output.
    ENDLOOP.
  ENDIF.

  IF lv_flag IS INITIAL.
    MESSAGE text­154 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 sy­repid.

  REFRESH: gt_fieldcat_dir1.
  lv_repid = sy­repid.
*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 sy­subrc <> 0.
* MESSAGE ID SY­MSGID TYPE SY­MSGTY NUMBER SY­MSGNO
*         WITH SY­MSGV1 SY­MSGV2 SY­MSGV3 SY­MSGV4.
  ENDIF.
ENDFORM.                    " BUILD_FIELDCATALOG_DIR1
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*&      Form  DISPLAY_ALV_DIR1
*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*       text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
*  ­­>  p1        text
*  <­­  p2        text
*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*
FORM display_alv_dir1 .
  DATA: lv_repid TYPE sy­repid.

  lv_repid  = sy­repid.
  gs_layout_dir­info_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             = text­153
      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 sy­subrc <> 0.
*    MESSAGE ID sy­msgid TYPE sy­msgty NUMBER sy­msgno
*            WITH sy­msgv1 sy­msgv2 sy­msgv3 sy­msgv4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_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

You might also like