Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Copy Material Master Record -- All Answers will be rewarded

Former Member
0 Likes
3,577

Hello All,

I need to copy the set of materials from one plant to another plant.

Say I need to copy Materials from plant 1123 to 1128.

Say some 10000 materials approximately.

one way is to create using MM01 with the reference Material. However this is not possible as different material numbers can have different Views.

Is there a smart way to do this.

Please let me know Marting...I will Reward all Answers

Regards

Marting

4 REPLIES 4
Read only

Former Member
Read only

Former Member
0 Likes
1,522

try this sample program in which it will copy one material to another material it will work

REPORT ZM_MAT_EXT_TO_PLANT

NO STANDARD PAGE HEADING

LINE-SIZE 255

MESSAGE-ID ZI.

----


  • Program : ZM_MAT_EXT_TO_PLANT *

  • Author : warun kumar todimala P *

  • Type : Extend Material from one plant to another using BDC *

  • Description : The program will use BDC CALL TRANSACTION to extend *

  • material from one plant to another plant. If error *

  • occurs, an error session will be created with name *

  • given on selection screen. So that it can be manually *

  • processed using SM35 *

  • TCODE used : MM01 - Create Material *

  • SAP Request : D51K912730 *

  • Date : 13SEP2006 *

----


  • C H A N G E L O G *

----


  • Date | Req No | Initial | Description

----


  • 14SEP06 D51K912772 Plant validation from T001W *

  • Warehouse view validation *

  • 18SEP06 D51K912817 Change for xl file *

*----


  • Tables Declaration

*----


TABLES: MARA, "General Material Data

MARC, "Plant Data for Material

MVKE, "Sales Data for Material

MBEW, "Material Valuation

MARD, "Storage Location Data for Material

MAKT, "Material Descriptions

T100, "Messages

T130M, "Transaction control parameters: mat. master maintenance

MLGN. "Material Data for Each Warehouse Number

*----


  • Internal table declaration

*----


*--Internal table for Sales data for material

DATA: BEGIN OF INT_MVKE OCCURS 0,

MATNR LIKE MVKE-MATNR,

VKORG LIKE MVKE-VKORG,

VTWEG LIKE MVKE-VTWEG,

VMSTA LIKE MVKE-VMSTA,

VMSTD LIKE MVKE-VMSTD,

DWERK LIKE MVKE-DWERK,

KONDM LIKE MVKE-KONDM,

PRODH LIKE MVKE-PRODH,

MTPOS LIKE MVKE-MTPOS,

END OF INT_MVKE.

*--Internal table for material if input file is given

TYPES: BEGIN OF T_MAT,

MATNR LIKE MATERIALID-MATNR_EXT,

SLGORT LIKE MARD-LGORT,

TLGORT LIKE MARD-LGORT,

END OF T_MAT.

TYPES: BEGIN OF T_VALID_MAT,

MATNR LIKE MATERIALID-MATNR_EXT,

END OF T_VALID_MAT.

DATA: BEGIN OF IT_RMAT OCCURS 0,

MATNR LIKE MARA-MATNR,

TLGORT LIKE MARD-LGORT,

SLGORT LIKE MARD-LGORT,

END OF IT_RMAT.

*--Warehouse data

DATA: BEGIN OF INT_WAREH OCCURS 0,

MATNR LIKE MLGN-MATNR,

LGNUM LIKE MLGN-LGNUM,

LTKZA LIKE MLGN-LTKZA,

LTKZE LIKE MLGN-LTKZE,

LGBKZ LIKE MLGN-LGBKZ,

END OF INT_WAREH.

*--Marked for deletion

TYPES: BEGIN OF T_MAR_DEL,

MATNR LIKE MARA-MATNR,

LVORM LIKE MARA-LVORM,

END OF T_MAR_DEL.

*--Range for material FOR input file in

  • in internal format

RANGES: R_MATNR FOR MARA-MATNR.

*--Internal table for Material Valuation

DATA: BEGIN OF INT_MBEW OCCURS 0,

MATNR LIKE MBEW-MATNR,

VPRSV LIKE MBEW-VPRSV,

STPRS LIKE MBEW-STPRS,

BKLAS LIKE MBEW-BKLAS,

ZPLD1 LIKE MBEW-ZPLD1,

ZPLD2 LIKE MBEW-ZPLD2,

END OF INT_MBEW.

*--Types for inal internal table contains all the data used to extend

*--the material(s)

TYPES: BEGIN OF T_FINAL,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

VPSTA LIKE MARA-VPSTA,

MBRSH LIKE MARA-MBRSH,

MEINS LIKE MARA-MEINS,

MATKL LIKE MARA-MATKL,

GEWEI LIKE MARA-GEWEI,

RAUBE LIKE MARA-RAUBE,

SPART LIKE MARA-SPART,

PRDHA LIKE MARA-PRDHA,

MAGRV LIKE MARA-MAGRV,

WERKS LIKE MARC-WERKS,

PSTAT LIKE MARC-PSTAT,

PLIFZ LIKE MARC-PLIFZ,

SSQSS LIKE MARC-SSQSS,

LADGR LIKE MARC-LADGR,

SERNP LIKE MARC-SERNP,

PERIV LIKE MARC-PERIV,

STAWN LIKE MARC-STAWN,

HERKL LIKE MARC-HERKL,

EKGRP LIKE MARC-EKGRP,

DISMM LIKE MARC-DISMM,

DISPO LIKE MARC-DISPO,

DISLS LIKE MARC-DISLS,

LGPRO LIKE MARC-LGPRO,

FHORI LIKE MARC-FHORI,

DZEIT LIKE MARC-DZEIT,

BWSCL LIKE MARC-BWSCL,

AWSLS LIKE MARC-AWSLS,

LGFSB LIKE MARC-LGFSB,

MAKTX LIKE MAKT-MAKTX,

TLGORT LIKE MARD-LGORT,

SLGORT LIKE MARD-LGORT,

VKORG LIKE MVKE-VKORG,

VTWEG LIKE MVKE-VTWEG,

VMSTA LIKE MVKE-VMSTA,

VMSTD LIKE MVKE-VMSTD,

DWERK LIKE MVKE-DWERK,

KONDM LIKE MVKE-KONDM,

PRODH LIKE MVKE-PRODH,

MTPOS LIKE MVKE-MTPOS,

VPRSV LIKE MBEW-VPRSV,

STPRS LIKE MBEW-STPRS,

BKLAS LIKE MBEW-BKLAS,

ZPLD1 LIKE MBEW-ZPLD1,

ZPLD2 LIKE MBEW-ZPLD2,

LGNUM LIKE MLGN-LGNUM,

LTKZA LIKE MLGN-LTKZA,

LTKZE LIKE MLGN-LTKZE,

LGBKZ LIKE MLGN-LGBKZ,

END OF T_FINAL.

TYPES: BEGIN OF T_LOG,

MATNR LIKE MATERIALID-MATNR_EXT,

MTART LIKE MARA-MTART,

WERKS LIKE MARC-WERKS,

MSG(480),

MSGTYP TYPE C,

END OF T_LOG.

TYPES: BEGIN OF T_INVALID,

MATNR LIKE MATERIALID-MATNR_EXT,

WERKS LIKE MARC-WERKS,

MSG(100),

END OF T_INVALID.

*--Internal to for mateial descriptions

*DATA: BEGIN OF INT_MAT_DES OCCURS 0,

  • MATNR LIKE MAKT-MATNR,

  • MAKTX LIKE MAKT-MAKTX,

  • END OF INT_MAT_DES.

DATA: BEGIN OF IT_FINAL1 OCCURS 0,

MATNR LIKE MATERIALID-MATNR_EXT,

MTART LIKE MARA-MTART,

MBRSH LIKE MARA-MBRSH,

WERKS LIKE MARC-WERKS,

PSTAT LIKE MARC-PSTAT,

LGPRO LIKE MARC-LGPRO,

LGFSB LIKE MARC-LGFSB,

TLGORT LIKE MARD-LGORT,

SLGORT LIKE MARD-LGORT,

END OF IT_FINAL1.

*--Internal table for Storage Location Data

DATA : BEGIN OF INT_MARD OCCURS 0,

MATNR LIKE MARD-MATNR,

WERKS LIKE MARD-WERKS,

LGORT LIKE MARD-LGORT,

END OF INT_MARD.

*--For Views

TYPES: BEGIN OF T_XBILDTAB.

INCLUDE STRUCTURE MBILDTAB.

TYPES: END OF T_XBILDTAB.

*--Internal table for VIEWS

DATA: IT_XBILDTAB TYPE STANDARD TABLE OF T_XBILDTAB WITH HEADER LINE.

*--Final internal table contains all the data used to extend the

  • material(s)

DATA: IT_FINAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,

IT_TPLANT TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,

  • int_fplant TYPE STANDARD TABLE OF t_final WITH HEADER LINE,

IT_TOTAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,

WA_FINAL TYPE T_FINAL,

WA_TPLANT TYPE T_FINAL,

INT_TEST TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,

WA_T130M LIKE T130M,

*--table for bdcdata to store the bdc data

IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE,

*--table for messages come from the 'CALL TRANSACTION'

IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,

IT_SREP TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,

IT_EREP TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,

IT_AVL TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,

IT_ERR TYPE STANDARD TABLE OF T_LOG WITH HEADER LINE,

IT_DUPREC TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,

IT_MAT TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,

IT_MAT1 TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,

IT_DELREC TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,

IT_MAR_DEL TYPE STANDARD TABLE OF T_MAR_DEL WITH HEADER LINE,

IT_DELREC35 TYPE STANDARD TABLE OF T_MAT WITH HEADER LINE,

IT_VALID_REC TYPE STANDARD TABLE OF T_VALID_MAT WITH HEADER LINE,

IT_IN_VALID TYPE STANDARD TABLE OF T_VALID_MAT WITH HEADER LINE,

IT_INVALID TYPE STANDARD TABLE OF T_INVALID WITH HEADER LINE,

IT_INVALID1 TYPE STANDARD TABLE OF T_INVALID WITH HEADER LINE,

*--Standard views

IT_T133A TYPE STANDARD TABLE OF T133A WITH HEADER LINE,

IT_T134 TYPE STANDARD TABLE OF T_XBILDTAB WITH HEADER LINE.

*----


  • Global variables declaration

*----


DATA:

GV_TRANS_CODE TYPE SY-TCODE VALUE 'MM01',"Tcode

GV_MTART LIKE MARA-MTART, "Material type

GV_MATNR LIKE MATERIALID-MATNR_EXT, "40 char material

HOLDDATE LIKE SY-DATUM, "Holdate for session

GV_SES_OPEN, "Session open check

GV_LAST LIKE MBILDTAB-GUIFU, "View code

GV_VIEW_CODE LIKE MBILDTAB-GUIFU, "Function code

GV_PURCH_VIEW TYPE I, "Purch view

GV_FIRST_VIEW(2) TYPE N, "First view

GV_OKCODE TYPE SY-UCOMM, "Ok code

GV_MSG1(150), "Message

GV_CNTR TYPE I VALUE '1', "Counter

GV_VIEW_CNT LIKE SY-TABIX, "View count

GV_NXT_VIEW LIKE MBILDTAB-GUIFU, "Function code

GV_ERCNT TYPE I, "Error records count

GV_SCNT TYPE I, "Success records count

GV_VALIDREC TYPE I, "Valid record count

GV_DUPREC TYPE I, "Duplicate record count

GV_AVL TYPE I, "Available records count

GV_MSG(120), "Message

GV_INREC TYPE I, "Input records count

GV_MAR_DEL TYPE I, "Marked for deletion

GV_FILE_STR TYPE STRING, "Hold file name except 'txt'

GV_LAST_4_CHARS TYPE STRING, "To hold '.txt' from inpfile

GV_TCNT TYPE I, "Total record count

GV_INVALID_REC TYPE I, "Invalide record count

GV_FILE_CRT_Y_OR_NO TYPE C. "file created or not

----


  • CONSTANTS

----


CONSTANTS:

TCODE_MM01 LIKE TSTC-TCODE VALUE 'MM01',

C_UPDATE TYPE C VALUE 'A'.

----


  • S E L E C T - O P T I O N S

----


SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 1(25) TEXT-009.

SELECTION-SCREEN: POSITION 33.

PARAMETER P_WH AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN: END OF LINE.

SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.

PARAMETERS : P_FWERKS LIKE MARC-WERKS OBLIGATORY,

P_TWERKS LIKE MARC-WERKS OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK B1.

SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 1(25) TEXT-004.

SELECTION-SCREEN: POSITION 32.

*--Input file

PARAMETERS: P_IFILE LIKE RLGRAP-FILENAME. "input file

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 1(25) TEXT-005.

SELECTION-SCREEN: POSITION 32.

*--Unix output file

PARAMETERS: P_OFILE LIKE RLGRAP-FILENAME LOWER CASE DEFAULT

'./sap_out/matextplnt'. "Output file in UNIX

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 1(25) TEXT-012.

SELECTION-SCREEN: POSITION 32.

*--PC file ( used to create the files from internal tables)

PARAMETERS: P_PCFILE LIKE RLGRAP-FILENAME LOWER CASE OBLIGATORY

DEFAULT 'C:\'.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN : END OF BLOCK B2.

SELECTION-SCREEN : BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

*--Session Name

PARAMETERS : P_GROUP LIKE APQI-GROUPID DEFAULT 'MAT_Extension'.

*--Mode (like All Screen - A)

PARAMETERS P_MODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N'.

SELECTION-SCREEN: END OF BLOCK B3.

----


*- A T S E L E C T I O N S C R E E N

----


AT SELECTION-SCREEN.

IF ( P_IFILE = ' ' ) AND ( S_MATNR[] IS INITIAL ).

MESSAGE E000(ZI) WITH 'Please Enter the Material or Input file'.

ENDIF.

*--download the data from pc file

IF P_IFILE NE ' '.

PERFORM VALIDATE_IN_FILE.

PERFORM GET_DATA_FRM_FILE.

ENDIF.

  • Validate selection screen entries

PERFORM VALIDATE_SEL_SCREEN_ENTRIES.

----


*- A T S E L E C T I O N S C R E E N --- Value Request

----


*--F4 help for input flie

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IFILE.

PERFORM VALUE_REQUEST_FOR_PC_FILE USING P_IFILE.

*--F4 help for pc file

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.

  • PERFORM VALUE_REQUEST_FOR_PC_FILE USING P_PCFILE.

*--F4 help for Unix file

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_OFILE.

PERFORM VALUE_REQ_FOR_UNIX_FILE USING P_OFILE.

----


  • T O P O F P A G E

----


TOP-OF-PAGE.

PERFORM TOP_OF_PAGE.

----


  • S E L E C T - O P T I O N S

----


START-OF-SELECTION.

*--Fecth the data from the Data Base tables

PERFORM GET_DATA.

*--Process the above data to create the final internal table

PERFORM PROCESS_DATA.

*--Extend the data to plant

PERFORM EXTEND_DATA_2_PLANT.

----


  • end of selection

----


END-OF-SELECTION.

PERFORM MAT_CONV_FOR_ALL_INT_TABLES.

*--Success

DESCRIBE TABLE IT_SREP LINES GV_SCNT.

*--Error

DESCRIBE TABLE IT_EREP LINES GV_ERCNT.

*--Already existing

DESCRIBE TABLE IT_AVL LINES GV_AVL.

*--Input

DESCRIBE TABLE IT_MAT LINES GV_INREC.

*--Valid

DESCRIBE TABLE IT_FINAL1 LINES GV_VALIDREC.

*--Duplicate

DESCRIBE TABLE IT_DUPREC LINES GV_DUPREC.

*--Marked for deletion

DESCRIBE TABLE IT_DELREC LINES GV_MAR_DEL.

*--Invalid

DESCRIBE TABLE IT_INVALID LINES GV_INVALID_REC.

GV_TCNT =

GV_ERCNT + GV_SCNT + GV_AVL + GV_INVALID_REC + GV_DUPREC +

GV_MAR_DEL + GV_VALIDREC + GV_INREC.

IF GV_TCNT NE 0.

*--create output PC files for each internal table

PERFORM PC_FILES_CREATION.

*--Create Unix file all internal tables

PERFORM OUT_UNIX_FILE. "create unix file for output.

*--Create the report

PERFORM REPORT_DIS.

*--Clear the contents

CLEAR: IT_SREP,

IT_EREP,

IT_AVL,

IT_MAT,

IT_FINAL1,

IT_DUPREC,

IT_DELREC,

IT_INVALID.

REFRESH:

IT_SREP,

IT_EREP,

IT_AVL,

IT_MAT,

IT_FINAL1,

IT_DUPREC,

IT_DELREC,

IT_INVALID.

ELSE.

FORMAT COLOR 6 INTENSIFIED ON.

WRITE:/ 'No Data found for the Selection Criteria'(007).

FORMAT RESET.

ENDIF.

&----


*& Form get_data

&----


*--Fetch the data from required data base tables

----


FORM GET_DATA .

DATA: LV_TABIX LIKE SY-TABIX.

**--Material type is in BAPI structures filling.

IF P_IFILE NE ' '.

PERFORM CONVERT_MAT_FRM_FILE.

ENDIF.

*--Ranges for the plants

RANGES:R_WERKS FOR MARC-WERKS.

R_WERKS-SIGN = 'I'.

R_WERKS-OPTION = 'EQ'.

R_WERKS-LOW = P_FWERKS.

APPEND R_WERKS.

R_WERKS-SIGN = 'I'.

R_WERKS-OPTION = 'EQ'.

R_WERKS-LOW = P_TWERKS.

APPEND R_WERKS.

CLEAR R_WERKS.

*--Fetch the data for the given selection from the DB table MARA & MARC

  • (General Material Data)

IF P_IFILE NE ' '.

SELECT R~MATNR "R = MARA

R~VPSTA

R~MTART

R~MATKL

R~MBRSH

R~MEINS

R~GEWEI

R~RAUBE

R~SPART

R~PRDHA

R~MAGRV

C~MATNR "C = MARC

C~WERKS

C~PSTAT

C~PLIFZ

C~SSQSS

C~LADGR

C~SERNP

C~PERIV

C~STAWN

C~HERKL

C~EKGRP

C~DISMM

C~DISPO

C~DISLS

C~LGPRO

C~FHORI

C~DZEIT

C~BWSCL

C~AWSLS

C~LGFSB

INTO CORRESPONDING FIELDS OF TABLE IT_TOTAL

FROM ( MARA AS R

INNER JOIN MARC AS C ON CMATNR = RMATNR )

WHERE R~MATNR IN R_MATNR AND

  • R~MTART IN S_MTART AND

C~WERKS IN R_WERKS .

LOOP AT IT_TOTAL.

LV_TABIX = SY-TABIX.

READ TABLE IT_RMAT WITH KEY MATNR = IT_TOTAL-MATNR.

IF SY-SUBRC = 0.

IT_TOTAL-TLGORT = IT_RMAT-TLGORT.

IT_TOTAL-SLGORT = IT_RMAT-SLGORT.

MODIFY IT_TOTAL INDEX LV_TABIX.

ENDIF.

ENDLOOP.

ELSE.

SELECT R~MATNR "R = MARA

R~VPSTA

R~MTART

R~MATKL

R~MBRSH

R~MEINS

R~GEWEI

R~RAUBE

R~SPART

R~PRDHA

R~MAGRV

C~MATNR "C = MARC

C~WERKS

C~PSTAT

C~PLIFZ

C~SSQSS

C~LADGR

C~SERNP

C~PERIV

C~STAWN

C~HERKL

C~EKGRP

C~DISMM

C~DISPO

C~DISLS

C~LGPRO

C~FHORI

C~DZEIT

C~BWSCL

C~AWSLS

C~LGFSB

INTO CORRESPONDING FIELDS OF TABLE IT_TOTAL

FROM ( MARA AS R

INNER JOIN MARC AS C ON CMATNR = RMATNR )

WHERE R~MATNR IN S_MATNR AND

  • R~MTART IN S_MTART AND

C~WERKS IN R_WERKS .

ENDIF. " if P_IFILE ne ' '.

IF NOT IT_TOTAL[] IS INITIAL.

SORT IT_TOTAL BY WERKS.

IT_FINAL[] = IT_TOTAL[].

IT_TPLANT[] = IT_TOTAL[].

SORT IT_FINAL BY WERKS.

SORT IT_TPLANT BY WERKS.

*Logic 1

*--Delete all entries having the plant value equal to 'to plant' value

*--So, IT_FINAL have only from plant data. But in which some data

*--already in 'to plant'

DELETE IT_FINAL WHERE WERKS = P_TWERKS.

*Logic 2

*--Delete all entries having the plant value equal to 'from plant' value

DELETE IT_TPLANT WHERE WERKS = P_FWERKS.

  • IF NOT IT_FINAL[] IS INITIAL.

SORT IT_FINAL BY MATNR WERKS.

SORT IT_TPLANT BY MATNR WERKS.

*Logic 3

*--Delete all the material from the 'IT_FINAL', which is already

  • extended to 'to plnat'.

  • In Logic 1 and Logic 2, just deleted the materials having the plant

  • value equal same. Here 'IT_FINAL' contains materials of 'from plant'

  • only,because 'to plant' materials have been deleted in the 'Logic1'.

  • But it contains the materials already extended to 'to plant', So we

  • Need to delete those. And it is done in the below Logic. From now

  • 'IT_FINAL table contains materials that are to be extended.

  • (Already extended materials have been deleted)

LOOP AT IT_TPLANT.

READ TABLE IT_FINAL

WITH KEY MATNR = IT_TPLANT-MATNR

WERKS = P_FWERKS

BINARY SEARCH.

LV_TABIX = SY-TABIX.

IF SY-SUBRC EQ 0.

*--continue the process. This materil to be extend for other views

IF IT_FINAL-PSTAT = IT_TPLANT-PSTAT.

IT_AVL-MATNR = IT_TPLANT-MATNR.

IT_AVL-WERKS = P_TWERKS.

IT_AVL-MTART = IT_TPLANT-MTART.

IT_AVL-MSG = 'Material already in plant'.

IT_AVL-MSGTYP = 'E'.

APPEND IT_AVL.

CLEAR IT_AVL.

DELETE IT_FINAL INDEX LV_TABIX.

CLEAR IT_FINAL.

*--If the material already exist in the target plant, check for the

*--warehouse view. If only warehoues view does not exist and checked

  • warehouse not required, then consider that the record is exist

  • in target plant

ELSEIF IT_FINAL-PSTAT CA 'S' AND IT_TPLANT-PSTAT NA 'S'.

  • If warehouse view does not require, then no need to copy again

IF P_WH = 'X'.

IT_AVL-MATNR = IT_TPLANT-MATNR.

IT_AVL-WERKS = P_TWERKS.

IT_AVL-MTART = IT_TPLANT-MTART.

IT_AVL-MSG = 'Material already in plant'.

IT_AVL-MSGTYP = 'E'.

APPEND IT_AVL.

CLEAR IT_AVL.

DELETE IT_FINAL INDEX LV_TABIX.

CLEAR IT_FINAL.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

*--Logic 4 ( Get the data from MARD, MVKE, MBEW and MAKT)

IF NOT IT_FINAL[] IS INITIAL.

*--Get the data from DB tabel MVKE (Sales Data for Material)

  • for all the materials in 'IT_FINAL'.

SELECT

MATNR

VKORG

VTWEG

VMSTA

VMSTD

DWERK

KONDM

PRODH

MTPOS

FROM MVKE

INTO TABLE INT_MVKE

FOR ALL ENTRIES IN IT_FINAL

WHERE MATNR = IT_FINAL-MATNR.

*--Get the data from DB table MBEW (Material Valuation)

  • for all the materials in 'IT_FINAL'.

SELECT

MATNR

VPRSV

STPRS

BKLAS

ZPLD1

ZPLD2

FROM MBEW

INTO TABLE INT_MBEW

FOR ALL ENTRIES IN IT_FINAL

WHERE MATNR = IT_FINAL-MATNR AND

BWKEY = IT_FINAL-WERKS.

  • Start of change by Hema on 09/21/06

  • Since basic view is not required to copy, no need description also

*--Get the data from DB table MAKT (Material Descriptions)

  • for all the materials in 'IT_FINAL'.

  • SELECT MATNR

  • MAKTX

  • FROM MAKT

  • INTO CORRESPONDING FIELDS OF TABLE INT_MAT_DES

  • FOR ALL ENTRIES IN IT_FINAL

  • WHERE MATNR = IT_FINAL-MATNR AND

  • SPRAS = SY-LANGU.

  • End of change by Hema on 09/21/06

*--Get the warehouse data.

SELECT MATNR

LTKZA

LTKZE

LGBKZ

INTO CORRESPONDING FIELDS OF TABLE INT_WAREH

FROM MLGN

FOR ALL ENTRIES IN IT_FINAL

WHERE MATNR = IT_FINAL-MATNR.

*--

SELECT SINGLE * FROM T130M

INTO WA_T130M

WHERE TCODE = GV_TRANS_CODE.

*--Sort the internal table by material

SORT INT_MARD BY MATNR WERKS.

SORT INT_MVKE BY MATNR.

SORT INT_MBEW BY MATNR.

  • SORT INT_MAT_DES BY MATNR.

SORT INT_WAREH BY MATNR.

ENDIF.

ENDFORM. " get_data

&----


*& Form process_data

&----


*--Fill the final internal with data from all the internal tables

----


FORM PROCESS_DATA .

DATA: LV_LINES TYPE I.

*--Logic 5: Fill the 'IT_FINAL' table from the 'int_mard', 'int_mvke'

  • 'int_mat_des' and int_mbew' as follows.

LOOP AT IT_FINAL.

*--Copy Target storage locaction to Prod.Stor.Loc and stor.Loc.for EP

IT_FINAL-LGPRO = IT_FINAL-TLGORT.

IT_FINAL-LGFSB = IT_FINAL-TLGORT.

READ TABLE INT_MVKE WITH KEY MATNR = IT_FINAL-MATNR

BINARY SEARCH.

IF SY-SUBRC EQ 0.

IT_FINAL-VKORG = INT_MVKE-VKORG.

IT_FINAL-VTWEG = INT_MVKE-VTWEG.

IT_FINAL-VMSTA = INT_MVKE-VMSTA.

IT_FINAL-VMSTD = INT_MVKE-VMSTD.

IT_FINAL-DWERK = INT_MVKE-DWERK.

IT_FINAL-KONDM = INT_MVKE-KONDM.

IT_FINAL-PRODH = INT_MVKE-PRODH.

IT_FINAL-MTPOS = INT_MVKE-MTPOS.

ENDIF.

  • READ TABLE INT_MAT_DES WITH KEY MATNR = IT_FINAL-MATNR

  • BINARY SEARCH.

  • IF SY-SUBRC EQ 0.

  • IT_FINAL-MAKTX = INT_MAT_DES-MAKTX.

  • ENDIF.

READ TABLE INT_MBEW WITH KEY MATNR = IT_FINAL-MATNR

BINARY SEARCH.

IF SY-SUBRC EQ 0.

IT_FINAL-VPRSV = INT_MBEW-VPRSV.

IT_FINAL-STPRS = INT_MBEW-STPRS.

IT_FINAL-BKLAS = INT_MBEW-BKLAS.

IT_FINAL-ZPLD1 = INT_MBEW-ZPLD1.

IT_FINAL-ZPLD2 = INT_MBEW-ZPLD2.

ENDIF.

READ TABLE INT_WAREH WITH KEY MATNR = IT_FINAL-MATNR

BINARY SEARCH.

IF SY-SUBRC EQ 0.

IT_FINAL-LGNUM = INT_WAREH-LGNUM.

IT_FINAL-LTKZA = INT_WAREH-LTKZA.

IT_FINAL-LTKZE = INT_WAREH-LTKZE.

IT_FINAL-LGBKZ = INT_WAREH-LGBKZ.

ENDIF.

MODIFY IT_FINAL

TRANSPORTING

VKORG

VTWEG

VMSTA

VMSTD

LGPRO

LGFSB

DWERK

KONDM

PRODH

MTPOS

MAKTX

VPRSV

STPRS

BKLAS

ZPLD1

ZPLD2

LGNUM

LTKZA

LTKZE

LGBKZ.

ENDLOOP.

ENDFORM. " process_data

&----


*& Form value_request_for_pc_file

&----


*--F4 help for the file names.

FORM VALUE_REQUEST_FOR_PC_FILE USING P_FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SY-CPROG

DYNPRO_NUMBER = SY-DYNNR

FIELD_NAME = ' '

IMPORTING

FILE_NAME = P_FILE.

ENDFORM. " value_request_for_pc_file

&----


*& Form extend_data_2_plant

&----


*--Use the final internal table to extend the material from one plant 2

*--another using the following logic which involved in 'four performs'

----


FORM EXTEND_DATA_2_PLANT .

DATA: BEGIN OF INT_VIEWS OCCURS 0.

INCLUDE STRUCTURE MBILDTAB.

DATA END OF INT_VIEWS.

IF NOT IT_FINAL[] IS INITIAL.

LOOP AT IT_FINAL.

GV_MTART = IT_FINAL-MTART.

*--Get the 32 char Lenth Material number

  • PERFORM MATERIAL_CON USING IT_FINAL-MATNR.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

INPUT = IT_FINAL-MATNR

IMPORTING

OUTPUT = GV_MATNR.

*--Get the views for the current material

PERFORM GET_THE_VIEWS_4_MAT.

*--Fill bdctable for all view available in 'copy from material'

PERFORM CREATE_DATA_FOR_VIEWS.

*--Use the above structures and call the 'MM01' to extend the material

PERFORM EXTEND_MAT_2_PLANT.

CLEAR: GV_FIRST_VIEW, GV_NXT_VIEW, GV_MATNR.

ENDLOOP.

*--close the session if open

IF GV_SES_OPEN EQ 'X'.

PERFORM CLOSE_GRP.

SKIP 1.

WRITE:/5 'Session Created', 40 P_GROUP COLOR 4.

ENDIF.

ELSE.

SKIP 2.

WRITE:/5 TEXT-010 COLOR 4.

  • 'No Data exists for the given selection'.

ENDIF.

IF NOT IT_EREP[] IS INITIAL.

LOOP AT IT_EREP.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

INPUT = IT_EREP-MATNR

IMPORTING

OUTPUT = IT_EREP-MATNR.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

MODIFY IT_EREP.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " extend_data_2_plant

&----


*& Form get_the_views_4_mat

&----


*--Get the views for current material

----


FORM GET_THE_VIEWS_4_MAT .

DATA: LV_BILDSEQUENZ TYPE T133A-BILDS,

LV_PSTAT LIKE T134-PSTAT.

CLEAR: T130M,

LV_BILDSEQUENZ,

IT_XBILDTAB.

REFRESH IT_XBILDTAB.

*--Get the Build sequece for particular Material type

CALL FUNCTION 'BILDSEQUENZ_IDENTIFY'

EXPORTING

BRANCHE = IT_FINAL-MBRSH

MATERIALART = IT_FINAL-MTART

TCODE_REF = WA_T130M-TRREF

  • KZRFB = ' '

IMPORTING

BILDSEQUENZ = LV_BILDSEQUENZ

  • KZ_BILDS_CHANGED =

EXCEPTIONS

WRONG_CALL = 1

NOT_FOUND = 2

OTHERS = 3

.

*--Get the actual number views for the current material will stored

*--in the internal table 'IT_XBILDTAB'.

IF SY-SUBRC = 0.

CALL FUNCTION 'SELECTION_VIEWS_FIND'

EXPORTING

BILDSEQUENZ = LV_BILDSEQUENZ

  • PFLEGESTATUS = IT_FINAL-VPSTA

PFLEGESTATUS = IT_FINAL-PSTAT

TABLES

BILDTAB = IT_XBILDTAB

EXCEPTIONS

CALL_WRONG = 1

EMPTY_SELECTION = 2

OTHERS = 3.

ENDIF.

*--Build actual table for view sequence

SELECT SINGLE PSTAT FROM T134

INTO LV_PSTAT

WHERE MTART = GV_MTART.

CALL FUNCTION 'SELECTION_VIEWS_FIND'

EXPORTING

BILDSEQUENZ = '01'

PFLEGESTATUS = LV_PSTAT

TABLES

BILDTAB = IT_T134

EXCEPTIONS

CALL_WRONG = 1

EMPTY_SELECTION = 2

OTHERS = 3.

IF NOT IT_XBILDTAB[] IS INITIAL.

*--Delete the Basic(SP01),

*--Classification(SP02)

*--Sales: Sales Organization Data(SP03)

*--Sales: General/Plant Data(SP04)

*--Sales Text(SP05)

*--Production Resources and Tools(SP12) which are not required

LOOP AT IT_XBILDTAB.

CASE IT_XBILDTAB-GUIFU.

WHEN 'SP01'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP01'.

WHEN 'SP02'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP02'.

WHEN 'SP03'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP03'.

WHEN 'SP04'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP04'.

WHEN 'SP05'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP05'.

WHEN 'SP12'.

DELETE IT_XBILDTAB." WITH KEY GUIFU = 'SP12'.

WHEN 'SP14'.

*--If 'do not copy warehouse' is ticked, delete the view from table.

*--problem is, if that view is last view then Save problem will

*--come in the BDC.

IF P_WH EQ 'X'.

DELETE IT_XBILDTAB.

ENDIF.

ENDCASE.

ENDLOOP.

ENDIF.

*--Get the first view of the material to select that view from Views

*-- List of the MM01

LOOP AT IT_XBILDTAB.

READ TABLE IT_T134 WITH KEY GUIFU = IT_XBILDTAB-GUIFU.

IF SY-SUBRC EQ 0.

GV_FIRST_VIEW = SY-TABIX.

GV_NXT_VIEW = IT_XBILDTAB-GUIFU.

EXIT.

ENDIF.

ENDLOOP.

ENDFORM. " get_the_views_4_mat

&----


*& Form CREATE_DATA_FOR_VIEWS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CREATE_DATA_FOR_VIEWS .

DATA: LV_LAST_VIEW_NO TYPE I.

DESCRIBE TABLE IT_XBILDTAB LINES LV_LAST_VIEW_NO.

LOOP AT IT_XBILDTAB.

IF LV_LAST_VIEW_NO EQ SY-TABIX.

MOVE IT_XBILDTAB-GUIFU TO GV_LAST.

ENDIF.

ENDLOOP.

*--Hit the Basic view in the 'View selection Pop up', i.e very beginning

*--in Tcode: MM01. So that, only views which already in (Copy from)

*--Material can extend to the Target Plant. Int.,table IT_XBILDTAB

*--contains these views. Here flexibilty is that, not all views are

*--extended, whether the 'copy from material' contains or not.

*--i.e Dynamic selection of views.

*--So in order to ease the Dynamic selection (of views), first

*--Hit the Basic view in the 'View selection Pop up'.

PERFORM FILL_BASIC_VIEW.

PERFORM FILL_ORG_DATA USING GV_VIEW_CODE.

LOOP AT IT_XBILDTAB.

MOVE IT_XBILDTAB-GUIFU TO GV_VIEW_CODE.

CASE IT_XBILDTAB-GUIFU.

  • --Purchasing view

WHEN 'SP06'.

PERFORM FILL_PURCH_VIEW USING GV_VIEW_CODE.

  • --Purchase Order Text View

WHEN 'SP07'.

PERFORM FILL_PURCH_ORD_TEXT USING GV_VIEW_CODE.

  • --MRP1 View

WHEN 'SP08'.

PERFORM FILL_MRP1_VIEW USING GV_VIEW_CODE.

  • --MRP2 View

WHEN 'SP09'.

PERFORM FILL_MRP2_VIEW USING GV_VIEW_CODE.

  • --Forecast View

WHEN 'SP10'.

PERFORM FILL_FORECAST_VIEW USING GV_VIEW_CODE.

WHEN 'SP11'.

  • IF GV_FLG NE 'Y'.

PERFORM FILL_WORKSCHED_VIEW USING GV_VIEW_CODE.

  • ENDIF.

  • --General Plant Data / Storage View

WHEN 'SP13'.

PERFORM FILL_PLANT_STRGE_VIEW USING GV_VIEW_CODE.

  • --Warehouse Management View

WHEN 'SP14'.

IF P_WH <> 'X'.

  • -- If the 'do not warehouse' check box unchecked on sele screen

PERFORM FILL_WAREHOUSE_VIEW USING GV_VIEW_CODE.

ENDIF.

  • --Quality Management View

WHEN 'SP15'.

PERFORM FILL_QUALITY_VIEW USING GV_VIEW_CODE.

  • -- Accounting View

WHEN 'SP16'.

PERFORM FILL_ACCOUNTING_VIEW USING GV_VIEW_CODE.

  • --Costing View

WHEN 'SP17'.

PERFORM FILL_COSTING_VIEW USING GV_VIEW_CODE.

  • --Plant/Storage Location Stock View

WHEN 'SP18'.

PERFORM FILL_PLANT_ST_LOC_STK_VIEW USING GV_VIEW_CODE.

ENDCASE.

CLEAR GV_OKCODE.

ENDLOOP.

ENDFORM. " CREATE_DATA_FOR_VIEWS

&----


*& Form fill_basic_view

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_BASIC_VIEW .

DATA FIELD_STR(40).

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'RMMG1-MATNR'

GV_MATNR."nt_final-matnr.

PERFORM BDC_FIELD USING 'RMMG1_REF-MATNR'

GV_MATNR."IT_FINAL-matnr.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

CONCATENATE 'MSICHTAUSW-KZSEL(' GV_FIRST_VIEW ')' INTO FIELD_STR.

PERFORM BDC_FIELD USING FIELD_STR 'X'.

ENDFORM. " fill_basic_view

&----


*& Form fill_purch_view

&----


  • Purchasing view

----


FORM FILL_ORG_DATA USING GV_VIEW_CODE.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0080'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RMMG1_REF-WERKS'.

PERFORM BDC_FIELD USING 'RMMG1-WERKS'

P_TWERKS.

PERFORM BDC_FIELD USING 'RMMG1_REF-WERKS'

P_FWERKS.

IF GV_NXT_VIEW EQ 'SP08'.

PERFORM BDC_FIELD USING 'RMMG1-LGORT'

IT_FINAL-TLGORT.

PERFORM BDC_FIELD USING 'RMMG1_REF-LGORT'

IT_FINAL-SLGORT.

ENDIF.

ENDFORM. " fill_org_data

&----


*& Form fill_purch_ord_text

&----


  • Purchase order text

----


FORM FILL_PURCH_ORD_TEXT USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP07'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3050'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_purch_ord_text

&----


*& Form fill_MRP1_view

&----


  • MRP1

----


FORM FILL_MRP1_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP08'.

IF GV_NXT_VIEW EQ 'SP06'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.

PERFORM BDC_FIELD USING 'RMMG1-LGORT'

IT_FINAL-TLGORT.

PERFORM BDC_FIELD USING 'RMMG1_REF-LGORT'

IT_FINAL-SLGORT.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

CLEAR GV_NXT_VIEW.

ENDIF.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3006'.

PERFORM BDC_FIELD USING 'MARC-LGPRO'

IT_FINAL-LGPRO.

PERFORM BDC_FIELD USING 'MARC-LGFSB'

IT_FINAL-LGFSB.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_MRP1_view

&----


*& Form fill_MRP2_view

&----


  • Fill MRP2 View

----


FORM FILL_MRP2_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP09'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3006'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_MRP2_view

&----


*& Form fill_forecast_view

&----


  • Forecast view

----


FORM FILL_FORECAST_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP10'.

IF GV_NXT_VIEW EQ 'SP06'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.

PERFORM BDC_FIELD USING 'RMMG1-LGORT'

IT_FINAL-TLGORT.

PERFORM BDC_FIELD USING 'RMMG1_REF-LGORT'

IT_FINAL-SLGORT.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

CLEAR GV_NXT_VIEW.

ENDIF.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_forecast_view

&----


*& Form fill_plant_strge_view

&----


  • Plant Storage view

----


FORM FILL_PLANT_STRGE_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP13'.

IF GV_NXT_VIEW EQ 'SP06'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.

PERFORM BDC_FIELD USING 'RMMG1-LGORT'

IT_FINAL-TLGORT.

PERFORM BDC_FIELD USING 'RMMG1_REF1-LGORT'

IT_FINAL-SLGORT.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

CLEAR GV_NXT_VIEW.

ENDIF.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_plant_strge_view

&----


*& Form fill_warehouse_view

&----


  • Wareshoue view

----


FORM FILL_WAREHOUSE_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP14'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_warehouse_view

&----


*& Form fill_quality_view

&----


  • Quality View

----


FORM FILL_QUALITY_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP15'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

*--Hit the Inspection.Setup Screen

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PB01'.

*--Press continue on the Inspection.Setup Screen

PERFORM BDC_DYNPRO USING 'SAPLQPLS' '0100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=WEIT'.

*--Back to quality screen

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_quality_view

&----


*& Form fill_accounting_view

&----


  • Accouting view

----


FORM FILL_ACCOUNTING_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP16'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3002'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_accounting_view

&----


*& Form fill_costing_view

&----


  • Costing view

----


FORM FILL_COSTING_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP17'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_costing_view

&----


*& Form fill_plant_st_loc_stk_view

&----


  • Plant Storage location view

----


FORM FILL_PLANT_ST_LOC_STK_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_plant_st_loc_stk_view

&----


*& Form bdc_dynpro

&----


*--Populate the BDCDATA for the Screen

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROGRAM.

IT_BDCDATA-DYNPRO = DYNPRO.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM. "bdc_dynpro

&----


*& Form bdc_field

&----


*--Populate the BDCDATA for the field

----


FORM BDC_FIELD USING FNAM FVAL.

IF FVAL <> SPACE.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDIF.

ENDFORM. "bdc_field

&----


*& Form EXTEND_MAT_2_PLANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM EXTEND_MAT_2_PLANT .

DATA: LV_CHECK,

LV_MSG1(480),

LV_MSG2(120).

CALL TRANSACTION TCODE_MM01 USING IT_BDCDATA

MODE P_MODE

UPDATE C_UPDATE

MESSAGES INTO IT_MESSTAB.

IF SY-SUBRC <> 0.

IF GV_CNTR EQ 1.

PERFORM OPEN-SESSION.

GV_SES_OPEN = 'X'.

CLEAR GV_CNTR.

ENDIF.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TCODE_MM01

TABLES

DYNPROTAB = IT_BDCDATA.

PERFORM ERROR_MSG.

ELSE.

IT_SREP-MATNR = GV_MATNR.

IT_SREP-MTART = IT_FINAL-MTART.

IT_SREP-WERKS = P_TWERKS.

IT_SREP-MSG = 'Material Extended'.

IT_SREP-MSGTYP = 'S'.

APPEND IT_SREP.

ENDIF.

REFRESH: IT_BDCDATA, IT_MESSTAB.

CLEAR: IT_BDCDATA, IT_MESSTAB, GV_MATNR.

ENDFORM. " EXTEND_MAT_2_PLANT

&----


*& Form OUT_UNIX_FILE

&----


*--Based on the internal table data availability, that internal table

*--will passed to the Fun Mod 'GUI_DOWNLOAD' for creating the xl file

----


FORM OUT_UNIX_FILE.

DATA:LV_REC(8) TYPE C.

CONCATENATE P_OFILE SY-DATUM SY-UZEIT INTO P_OFILE.

CONDENSE P_OFILE NO-GAPS.

OPEN DATASET P_OFILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF SY-SUBRC EQ 0.

WRITE GV_INREC TO LV_REC.

CONCATENATE 'Total Input Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_DUPREC TO LV_REC.

CONCATENATE 'Total Duplicate Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_AVL TO LV_REC.

CONCATENATE 'Total Existing Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_MAR_DEL TO LV_REC.

CONCATENATE 'Records Marked for deletion:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_INVALID_REC TO LV_REC.

CONCATENATE 'Total Invalid Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_VALIDREC TO LV_REC.

CONCATENATE 'Total Valid Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_SCNT TO LV_REC.

CONCATENATE 'Total Success Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

WRITE GV_ERCNT TO LV_REC.

CONCATENATE 'Total Error Records:' LV_REC INTO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR: LV_REC, GV_MSG.

  • --Input Records

IF NOT IT_MAT[] IS INITIAL.

WRITE '******* Input Records *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_MAT.

TRANSFER IT_MAT TO P_OFILE.

ENDLOOP.

ENDIF.

  • --Aready available records

IF NOT IT_AVL[] IS INITIAL.

WRITE '******* Available Records *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_AVL.

TRANSFER IT_AVL TO P_OFILE.

ENDLOOP.

ENDIF.

*--Duplicate Records

IF NOT IT_DUPREC[] IS INITIAL.

WRITE '******* Duplicate Records *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_DUPREC.

TRANSFER IT_DUPREC TO P_OFILE.

ENDLOOP.

ENDIF.

*--Marterial Marked for deletion.

IF NOT IT_DELREC[] IS INITIAL.

WRITE '******* Material Marked for deletion *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_DELREC.

TRANSFER IT_DELREC TO P_OFILE.

ENDLOOP.

ENDIF.

*--Invalid Material

IF NOT IT_INVALID[] IS INITIAL.

WRITE '******* Invalid Materials *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_INVALID.

TRANSFER IT_INVALID TO P_OFILE.

ENDLOOP.

ENDIF.

  • -- Valid Records

IF NOT IT_FINAL1[] IS INITIAL.

WRITE '******* Valid Records *******:' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_FINAL1.

  • concatenate P_TWERKS IT_FINAL-matnr

  • IT_FINAL-tlgort into gv_msg.

TRANSFER GV_MSG TO P_OFILE.

ENDLOOP.

ENDIF.

  • --Success Records

IF NOT IT_SREP[] IS INITIAL.

WRITE '******* Successful Materials *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_SREP.

TRANSFER IT_SREP TO P_OFILE.

ENDLOOP.

ENDIF.

  • --Error Records

IF NOT IT_EREP[] IS INITIAL.

WRITE '******* Error Records List *******' TO GV_MSG.

TRANSFER GV_MSG TO P_OFILE.

CLEAR GV_MSG.

LOOP AT IT_EREP.

TRANSFER IT_EREP TO P_OFILE.

ENDLOOP.

ENDIF.

WRITE:/5 TEXT-010, 40 P_OFILE COLOR 4. "Output File Created i.e.

ELSE.

WRITE:/5 TEXT-011, 40 P_OFILE."Output File open problem i.e. p_fileo

STOP.

ENDIF.

ENDFORM. " OUT_UNIX_FILE

&----


*& Form report_dis

&----


*--write the report output on to the screen

----


FORM REPORT_DIS .

SKIP 1.

WRITE:/5 'Material extension FROM',

35 P_FWERKS,

41 'TO',

44 P_TWERKS.

SKIP 1.

WRITE:

/5 'Total Records :', GV_INREC,

/5 'Available Records :', GV_AVL,

/5 'Duplicate Records :', GV_DUPREC,

/5 'Invalide Records :', GV_INVALID_REC,

/5 'Marked for deletion :', GV_MAR_DEL,

/5 'Valid Records :', GV_VALIDREC,

/5 'Success Records :', GV_SCNT,

/5 'Errors Records :', GV_ERCNT.

*--Total input records

IF NOT IT_MAT[] IS INITIAL.

SKIP 1.

WRITE:/5 'Total Input Records:', GV_INREC COLOR 2.

WRITE:/5 'Material' COLOR 4.

LOOP AT IT_MAT.

WRITE:/5 IT_MAT-MATNR.

ENDLOOP.

ENDIF.

*--Already existing records

IF NOT IT_AVL[] IS INITIAL.

SKIP 1.

WRITE:/5 'Available Records :', GV_AVL COLOR 2.

WRITE:/5(35) 'Material' COLOR 5,

42(4) 'Type' COLOR 3,

48(5) 'Plant' COLOR 1,

55(255) 'Msg' COLOR 4.

LOOP AT IT_AVL.

WRITE:/5 IT_AVL-MATNR,

42 IT_AVL-MTART,

48 IT_AVL-WERKS,

55 IT_AVL-MSG. " COLOR 4.

ENDLOOP.

ENDIF.

*--Duplicate Records

IF NOT IT_DUPREC[] IS INITIAL.

SKIP 1.

WRITE:/5 'Duplicate Records:', GV_DUPREC COLOR 3.

WRITE:/5 'Material' COLOR 5.

LOOP AT IT_DUPREC.

WRITE:/5 IT_DUPREC-MATNR.

ENDLOOP.

ENDIF.

*--Invalid records

IF NOT IT_INVALID[] IS INITIAL.

SKIP 1.

WRITE:/5 'Invalid Records :', GV_INVALID_REC COLOR 2.

WRITE:/5(35) 'Material' COLOR 5,

42 'Plant' COLOR 3,

49 'Msg' COLOR 4.

LOOP AT IT_INVALID.

WRITE:/5 IT_INVALID-MATNR,

42 IT_INVALID-WERKS,

49 IT_INVALID-MSG.

ENDLOOP.

ENDIF.

*--Materials Marked for deletion

IF NOT IT_DELREC[] IS INITIAL.

SKIP 1.

WRITE:/5 'Material for deletion', GV_MAR_DEL COLOR 5.

WRITE:/5 'Material' COLOR 4.

LOOP AT IT_DELREC.

WRITE:/5 IT_DELREC-MATNR.

ENDLOOP.

ENDIF.

*--write the successfully extended records on to the screen

IF NOT IT_SREP[] IS INITIAL.

SKIP 1.

WRITE:/5 'Successful Materials :', GV_SCNT COLOR 3.

WRITE:/5(35) 'Material' COLOR 5,

42(4) 'Type' COLOR 3,

48(5) 'Plant' COLOR 1,

55(255) 'Message' COLOR 4.

LOOP AT IT_SREP.

WRITE:/5 IT_SREP-MATNR,

42 IT_SREP-MTART,

48 IT_SREP-WERKS,

55 IT_SREP-MSG.

ENDLOOP.

ENDIF.

*--write the error records on to the screen

IF NOT IT_EREP[] IS INITIAL.

SKIP 1.

WRITE:/5 'Errors :', GV_ERCNT COLOR 4.

WRITE:/5(35) 'Material' COLOR 5,

42(4) 'Type' COLOR 3,

48(5) 'Plant' COLOR 1,

55(7) 'Msg Type' COLOR 4,

64(120) 'Message' COLOR 4.

LOOP AT IT_EREP.

WRITE:/5(35) IT_EREP-MATNR,

42(4) IT_EREP-MTART,

48(5) IT_EREP-WERKS,

55(7) IT_EREP-MSGTYP,

64(120) IT_EREP-MSG. " COLOR 4.

ENDLOOP.

ENDIF.

**-- Valid Records

  • IF NOT IT_FINAL1[] IS INITIAL.

  • SKIP 1.

  • WRITE:/5 'Valid Records :', gv_validrec COLOR 2.

  • WRITE:/5(35) 'Material' COLOR 5,

  • 42(4) 'Type' COLOR 3,

  • 48(5) 'Plant' COLOR 1,

  • 55 'Src Stor loc' COLOR 3,

  • 69 'Tar stor loc' COLOR 5.

*

  • LOOP AT IT_FINAL1.

  • WRITE:/5 IT_FINAL1-MATNR,

  • 42 IT_FINAL1-MTART,

  • 48 IT_FINAL1-WERKS,

  • 59 IT_FINAL1-SLGORT,

  • 69 IT_FINAL1-TLGORT.

  • ENDLOOP.

  • ENDIF.

ENDFORM. " report_dis

&----


*& Form top_of_page

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM TOP_OF_PAGE .

CALL FUNCTION 'Z_REPORT_HEADER'

EXPORTING

TITLE = SY-TITLE

  • TITLE2 = ''

  • TITLE3 = ''

COLOR = 'X'

.

ENDFORM. " top_of_page

&----


*& Form open-session

&----


*--Creat a Session in 'SM35' for the name given in the selection screen

----


FORM OPEN-SESSION .

HOLDDATE = SY-DATUM - 1.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = P_GROUP

USER = SY-UNAME

KEEP = 'X'

HOLDDATE = HOLDDATE.

ENDFORM. " open-session

&----


*& Form close_grp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CLOSE_GRP .

CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDFORM. " close_grp

&----


*& Form GET_DATA_FRM_FILE

&----


  • text

----


FORM GET_DATA_FRM_FILE .

DATA: L_FILE TYPE STRING.

L_FILE = P_IFILE.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = L_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = IT_MAT1

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

MESSAGE E000(ZI) WITH 'Unable to Upload the input file'.

ENDIF.

IF IT_MAT1[] IS INITIAL.

MESSAGE E000(ZI) WITH 'Input file is empty'.

ENDIF.

ENDFORM. " GET_DATA_FRM_FILE

&----


*& Form convert_mat_frm_file

&----


  • text

----


FORM CONVERT_MAT_FRM_FILE .

DATA: LV_CNT TYPE I,

LV_MAT(35),

LV_TABIX TYPE SY-TABIX,

LV_MAT1 LIKE MARC-MATNR.

DATA: BEGIN OF IT_EXIN OCCURS 0,

MATNR_INT LIKE MATERIALID-MATNR_INT,

MATNR_EXT LIKE MATERIALID-MATNR_EXT,

END OF IT_EXIN.

REFRESH R_MATNR.

LOOP AT IT_MAT1.

TRANSLATE IT_MAT1-MATNR TO UPPER CASE.

TRANSLATE IT_MAT1-TLGORT TO UPPER CASE.

TRANSLATE IT_MAT1-SLGORT TO UPPER CASE.

MODIFY IT_MAT1.

ENDLOOP.

IF NOT IT_MAT1[] IS INITIAL.

*--Duplicate records

SORT IT_MAT BY MATNR.

LOOP AT IT_MAT1.

LV_TABIX = SY-TABIX.

AT NEW MATNR.

CLEAR LV_CNT.

ENDAT.

LV_CNT = LV_CNT + 1.

IF LV_CNT > 1.

IT_DUPREC = IT_MAT1.

APPEND IT_DUPREC.

IT_MAT = IT_MAT1.

APPEND IT_MAT.

DELETE IT_MAT1 INDEX LV_TABIX.

CLEAR: IT_DUPREC, LV_TABIX.

ELSE.

IT_MAT = IT_MAT1.

APPEND IT_MAT.

ENDIF.

ENDLOOP.

SELECT MATNR_INT

MATNR_EXT

INTO CORRESPONDING FIELDS OF TABLE IT_EXIN

FROM MATERIALID

FOR ALL ENTRIES IN IT_MAT1

WHERE MATNR_EXT = IT_MAT1-MATNR.

LOOP AT IT_MAT1.

LV_TABIX = SY-TABIX.

READ TABLE IT_EXIN WITH KEY MATNR_EXT = IT_MAT1-MATNR.

IF SY-SUBRC NE 0.

*--35 char material.

IT_INVALID-MATNR = IT_MAT1-MATNR.

IT_INVALID-MSG = 'Invalid Material'.

APPEND IT_INVALID.

DELETE IT_MAT1 INDEX LV_TABIX.

CLEAR LV_TABIX.

ENDIF.

ENDLOOP.

ENDIF.

IF NOT IT_EXIN[] IS INITIAL.

*--Get the valid records

SELECT MATNR

INTO CORRESPONDING FIELDS OF TABLE IT_VALID_REC

FROM MARC

FOR ALL ENTRIES IN IT_EXIN

WHERE MATNR = IT_EXIN-MATNR_INT

AND WERKS = P_FWERKS.

*--Find for invalid records

LOOP AT IT_EXIN.

LV_TABIX = SY-TABIX.

READ TABLE IT_VALID_REC WITH KEY MATNR = IT_EXIN-MATNR_INT."18chr

IF SY-SUBRC <> 0.

IT_INVALID-MATNR = IT_EXIN-MATNR_EXT. "18 CHAR

IT_INVALID-WERKS = P_FWERKS.

IT_INVALID-MSG = 'Material not in Source plant'.

APPEND IT_INVALID.

DELETE IT_RMAT INDEX LV_TABIX.

CLEAR: LV_TABIX, IT_INVALID.

ELSE.

*--18 Char

R_MATNR-LOW = IT_EXIN-MATNR_INT.

R_MATNR-SIGN = 'I'.

R_MATNR-OPTION = 'EQ'.

APPEND R_MATNR.

CLEAR R_MATNR.

READ TABLE IT_MAT WITH KEY MATNR = IT_EXIN-MATNR_EXT.

IF SY-SUBRC EQ 0.

IT_RMAT-MATNR = IT_EXIN-MATNR_INT.

IT_RMAT-TLGORT = IT_MAT-TLGORT.

IT_RMAT-SLGORT = IT_MAT-SLGORT.

APPEND IT_RMAT.

CLEAR IT_RMAT.

ENDIF.

ENDIF.

ENDLOOP.

*--Get the material marked for deletion

SELECT MATNR

LVORM

INTO CORRESPONDING FIELDS OF TABLE IT_MAR_DEL

FROM MARA

FOR ALL ENTRIES IN IT_EXIN

WHERE MATNR = IT_EXIN-MATNR_INT

AND LVORM <> ' '.

*--Marked for deletion.

LOOP AT IT_EXIN.

LV_TABIX = SY-TABIX.

READ TABLE IT_MAR_DEL WITH KEY MATNR = IT_EXIN-MATNR_INT.

IF SY-SUBRC EQ 0.

IT_DELREC-MATNR = IT_EXIN-MATNR_EXT.

APPEND IT_DELREC.

DELETE IT_EXIN INDEX LV_TABIX.

CLEAR: LV_TABIX, IT_DELREC.

ENDIF.

ENDLOOP.

ENDIF.

*--Total Records.

IF R_MATNR[] IS INITIAL.

WRITE:/5 'Input file is empty'.

STOP.

ENDIF.

ENDFORM. " convert_mat_frm_file

&----


*& Form ERROR_MSG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ERROR_MSG .

DATA: LV_MSG2(120).

DATA:LV_LINES LIKE SY-TABIX.

DESCRIBE TABLE IT_MESSTAB LINES LV_LINES.

READ TABLE IT_MESSTAB WITH KEY MSGTYP = 'E'.

IF SY-SUBRC <> 0.

READ TABLE IT_MESSTAB INDEX LV_LINES.

ENDIF.

  • LOOP AT IT_MESSTAB.

IF SY-SUBRC = 0.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = IT_MESSTAB-MSGID

LANG = 'E'

NO = IT_MESSTAB-MSGNR

V1 = IT_MESSTAB-MSGV1

V2 = IT_MESSTAB-MSGV2

V3 = IT_MESSTAB-MSGV3

V4 = IT_MESSTAB-MSGV4

IMPORTING

MSG = LV_MSG2

EXCEPTIONS

NOT_FOUND = 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.

CONCATENATE LV_MSG2 GV_MSG1 INTO GV_MSG1 SEPARATED BY SPACE.

CLEAR LV_MSG2.

  • ENDLOOP.

ENDIF.

IT_EREP-MATNR = GV_MATNR.

IT_EREP-MTART = IT_FINAL-MTART.

IT_EREP-WERKS = P_FWERKS.

IT_EREP-MSG = GV_MSG1.

IT_EREP-MSGTYP = IT_MESSTAB-MSGTYP.

APPEND IT_EREP.

CLEAR IT_EREP.

ENDFORM. " ERROR_MSG

&----


*& Form fill_purch_view

&----


  • text

----


  • -->P_GV_VIEW_CODE text

----


FORM FILL_PURCH_VIEW USING P_GV_VIEW_CODE.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP06'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3006'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_purch_view

&----


*& Form fill_WorkSched_view

&----


  • text

----


  • -->P_GV_VIEW_CODE text

----


FORM FILL_WORKSCHED_VIEW USING GV_VIEW_CODE.

CONCATENATE '=' GV_VIEW_CODE INTO GV_OKCODE.

  • perform bdc_field using 'BDC_OKCODE'

  • GV_OKCODE.

*GV_FLG = 'Y'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SP11'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3000'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'MAKT-MAKTX'.

  • perform bdc_field using 'MAKT-MAKTX'

  • '15-MB BOEING'.

  • perform bdc_field using 'MARC-PERKZ'

  • 'P'.

  • perform bdc_field using 'MARC-PERIV'

  • 'GF'.

  • perform bdc_field using 'MARC-MTVFP'

  • '02'.

  • perform bdc_field using 'MARC-WZEIT'

  • '90'.

IF GV_VIEW_CODE EQ GV_LAST.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

ENDIF.

ENDFORM. " fill_WorkSched_view

&----


*& Form VALUE_REQ_FOR_UNIX_FILE

&----


  • text

----


  • -->P_P_EFILE text

----


FORM VALUE_REQ_FOR_UNIX_FILE USING P_EFILE.

CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'

EXPORTING

DIRECTORY = ' '

FILEMASK = ' '

IMPORTING

SERVERFILE = P_EFILE

EXCEPTIONS

CANCELED_BY_USER = 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. " VALUE_REQ_FOR_UNIX_FILE

&----


*& Form VALIDATE_SEL_SCREEN_ENTRIES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_SEL_SCREEN_ENTRIES .

DATA: LV_TWERKS LIKE MARC-WERKS,

LV_FWERKS LIKE MARC-WERKS.

IF P_TWERKS <> ' '.

SELECT SINGLE WERKS INTO LV_TWERKS

FROM T001W

WHERE WERKS EQ P_TWERKS.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'Enter Valid Target Plant'.

ENDIF.

ENDIF.

IF P_FWERKS <> ' '.

SELECT SINGLE WERKS INTO LV_FWERKS

FROM T001W

WHERE WERKS EQ P_FWERKS.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'Enter Valid Source Plant'.

ENDIF.

ENDIF.

ENDFORM. " VALIDATE_SEL_SCREEN_ENTRIES

&----


*& Form PC_FILES_CREATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM PC_FILES_CREATION .

DATA L_FILE TYPE STRING.

*--Input file

IF NOT IT_MAT[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Input' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_MAT USING L_FILE.

IF GV_FILE_CRT_Y_OR_NO = 'X'.

SKIP 1.

WRITE:/5 'Input file creatd @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

ENDIF.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

*--Available records

IF NOT IT_AVL[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Available' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_AVL USING L_FILE.

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Available recs file created @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

*--Duplicate records

IF NOT IT_DUPREC[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Dup_rec' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_DUPREC USING L_FILE.

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Duplicate records file created @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

*--Invalid records

IF NOT IT_INVALID[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Invalid' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_INVALID USING L_FILE .

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Invalid records file created @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

*--Marked for deletion

IF NOT IT_DELREC[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Marc_for_del' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_DELREC USING L_FILE .

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Marc for deletion records file created @:', 40 L_FILE COLOR

4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

*--Success file

IF NOT IT_SREP[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Success' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_SREP USING L_FILE.

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Success file created @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

*--Error file

IF NOT IT_EREP[] IS INITIAL.

CONCATENATE GV_FILE_STR SY-DATUM SY-UZEIT '_' 'Error' '.'

GV_LAST_4_CHARS INTO L_FILE.

CONDENSE L_FILE NO-GAPS.

PERFORM PC_FILE TABLES IT_EREP USING L_FILE.

IF GV_FILE_CRT_Y_OR_NO = 'X'.

WRITE:/5 'Error file created @:', 40 L_FILE COLOR 4.

CLEAR L_FILE.

GV_FILE_CRT_Y_OR_NO = ' '.

ENDIF.

ENDIF.

  • IF NOT IT_FINAL1[] IS INITIAL.

  • CONCATENATE GV_FILE_STR '\' 'valid' '.' GV_LAST_4_CHARS INTO L_FILE

*.

  • PERFORM PC_FILE TABLES IT_FINAL1 USING L_FILE.

  • IF GV_FILE_CRT_Y_OR_NO = 'X'.

  • WRITE:/5 'Valid records file created @:', L_FILE COLOR 4.

  • CLEAR L_FILE.

  • ENDIF.

  • GV_FILE_CRT_Y_OR_NO = ' '.

  • ENDIF.

ENDFORM. " PC_FILES_CREATION

&----


*& Form PC_FILE

&----


  • text

----


  • -->P_IT_SREP text

  • -->P_L_FILE text

----


FORM PC_FILE TABLES P_INT_TAB USING P_L_FILE.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = P_L_FILE

FILETYPE = 'ASC'

WRITE_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = P_INT_TAB.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

WRITE:/5 'PC File creation Problem', P_L_FILE.

ELSE.

GV_FILE_CRT_Y_OR_NO = 'X'.

  • CLEAR: P_INT_TAB.

  • REFRESH: P_INT_TAB.

ENDIF.

ENDFORM. " PC_FILE

&----


*& Form VALIDATE_IN_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_IN_FILE .

DATA: L_POS TYPE I,

L_TXT(3) TYPE C.

SPLIT P_IFILE AT '.' INTO GV_FILE_STR GV_LAST_4_CHARS.

IF GV_LAST_4_CHARS NE 'txt'.

MESSAGE E000 WITH 'Please give .txt input file'.

CLEAR: GV_FILE_STR, GV_LAST_4_CHARS.

ENDIF.

SPLIT P_PCFILE AT '.' INTO GV_FILE_STR GV_LAST_4_CHARS.

IF GV_LAST_4_CHARS NE 'xls'.

MESSAGE E000 WITH 'Please give .xls input file'.

ENDIF.

ENDFORM. " VALIDATE_IN_FILE

&----


*& Form MAT_CONV_FOR_ALL_INT_TABLES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MAT_CONV_FOR_ALL_INT_TABLES .

DATA: LV_MAT LIKE MATERIALID-MATNR_EXT.

IF NOT IT_AVL[] IS INITIAL.

*--Convert available records into 35 chars.

LOOP AT IT_AVL.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

INPUT = IT_AVL-MATNR

IMPORTING

OUTPUT = IT_AVL-MATNR.

MODIFY IT_AVL TRANSPORTING MATNR.

ENDLOOP.

ENDIF.

IF NOT IT_DUPREC[] IS INITIAL.

*--Convert duplicate records into 35 chars.

LOOP AT IT_DUPREC.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

INPUT = IT_DUPREC-MATNR

IMPORTING

OUTPUT = IT_DUPREC-MATNR.

MODIFY IT_DUPREC TRANSPORTING MATNR.

ENDLOOP.

ENDIF.

IF NOT IT_FINAL[] IS INITIAL.

LOOP AT IT_FINAL.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

INPUT = IT_FINAL-MATNR

IMPORTING

OUTPUT = IT_FINAL1-MATNR.

IT_FINAL1-MTART = IT_FINAL-MTART.

IT_FINAL1-MBRSH = IT_FINAL-MBRSH.

IT_FINAL1-WERKS = IT_FINAL-WERKS.

IT_FINAL1-LGPRO = IT_FINAL-LGPRO.

IT_FINAL1-LGFSB = IT_FINAL-LGFSB.

IT_FINAL1-TLGORT = IT_FINAL-TLGORT.

IT_FINAL1-SLGORT = IT_FINAL-SLGORT.

APPEND IT_FINAL1.

ENDLOOP.

ENDIF.

ENDFORM. " MAT_CONV_FOR_ALL_INT_TABLES

regards

warun

Read only

Former Member
0 Likes
1,522

Hi Martin,

You can use BAPI <b>BAPI_MATERIAL_SAVEDATA</b> to extend material to another plant. For sample code, please check this link.

http://www.sap-img.com/abap/bapi-to-copy-materials-from-one-plant-to-another.htm

Also you can use FM <b>MATERIAL_MAINTAIN_DARK</b>. It has a good documentation. Please check this links for sample codes.

http://www.4ap.de/abap/material_maintain_dark.php

http://projectmanagement.ittoolbox.com/groups/technical-functional/SAP-R3-LOG-MM/262781#

Hope this will help.

Regards,

Ferry Lianto

Please reward points if helpful.

Read only

Former Member
0 Likes
1,522

Have a look at standard SAP program RV15CC03.

Rob