REPORT ZMMMDE001 NO STANDARD PAGE HEADING LINE-SIZE 170 MESSAGE-ID MG.
*----------------------------------------------------------------------*
* Program : ZMMMDE001 *
* Author : Patrick,Song *
* Date : Sep 10, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* include program & subrouting *
*----------------------------------------------------------------------*
INCLUDE : ZBCDWI000 .
TYPE-POOLS: KCDE.
TYPE-POOLS: SLIS.
*----------------------------------------------------------------------*
* tables declaration *
*----------------------------------------------------------------------*
TABLES: AUSP, " Characteristic Values
MARC, " Plant Data for Material
MARA, " General Material Data
MVKE, " Sales Data for Material
T001L, " Storage Locations
T006A, " Assign Internal to Language-Dependent Unit
T134. " Material Types
*----------------------------------------------------------------------*
* selection screen definition *
*----------------------------------------------------------------------*
* Input file information block B1
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-SC1 .
PARAMETER: P_BASIC LIKE RLGRAP-FILENAME OBLIGATORY .
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .
SELECTION-SCREEN END OF BLOCK A1.
PARAMETERS: P_MMAM AS CHECKBOX DEFAULT SPACE .
PARAMETERS: P_MARC AS CHECKBOX DEFAULT SPACE .
PARAMETERS: P_QMDATA AS CHECKBOX DEFAULT SPACE .
*PARAMETERS: P_CLASS AS CHECKBOX .
PARAMETERS: P_BKJOB AS CHECKBOX DEFAULT SPACE .
*----------------------------------------------------------------------*
* Internal tables and field strings *
*----------------------------------------------------------------------*
*-* to store uploaded data
* define table to store tempoary data => Material Views Selection
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------*
* Global program variables *
*----------------------------------------------------------------------*
* TO STORE MATERIAL MASTER DATA WHICH NEED TO BE UPLOADED
*** Generated data section with specific formatting - DO NOT CHANGE ***
DATA: BEGIN OF ITAB OCCURS 0.
DATA: MATNR(018). "物料号 ****
DATA: BISMT(018). "旧物料号****
DATA: MAKTX(040). "物料描述****
DATA: MBRSH(001). "行业领域****
DATA: MTART(004). "物料类型****
DATA: WERKS(004). "工厂 ****
DATA: LGORT(004). "库存地点****
DATA: VKORG(004). "销售组织****
DATA: VTWEG(002). "分销渠道****
DATA: MEINS(003). "基本计量单位****
DATA: SPART(002). "产品组****
DATA: MSTAE(002). "跨工厂物料状态
DATA: MATKL(009). "物料组****
DATA: GEWEI(003). "重量单位****
DATA: BRGEW(017). "毛重***
DATA: NTGEW(017). "净重***
DATA: ZEINR(022). "产品图号***
DATA: KLART(003). "类别种类****
DATA: CLASS_01(018). "类别****
DATA: MWERT_SCR(030). "安规标准****
DATA: MWERT_SER(030). "产品系列号****
DATA: MWERT_DESC1(090). "物料描述1****
DATA: MWERT_DESC11(030). "物料描述1****
DATA: MWERT_DESC12(030). "物料描述1****
DATA: MWERT_DESC2(090). "物料描述2****
DATA: MWERT_DESC21(030). "物料描述2****
DATA: MWERT_DESC22(030). "物料描述2****
DATA: EKGRP(003). "采购组 ****
DATA: BSTME(003). "订单单位 ****
DATA: UMREN(006). "转换比例中订单单位数量
DATA: WEBAZ(003). "收货处理时间 ****
DATA: KORDB(001). "货源清单 ****
DATA: USEQU(001). "配额安排 ****
DATA: KZKRI(001). "是否合同管控*****
DATA: DWERK(004). "交货工厂*****
DATA: SPART_GRP(002). "产品组*****
DATA: TAXKM(001). "税*****
DATA: VERSG(001). "物料统计组*****
DATA: KONDM(002). "物料定价组*****
DATA: KTGRM(002). "科目设置组*****
DATA: MTPOS(004). "项目类别组*****
DATA: BOX01(006). "每箱对应的产品数量*****
DATA: BOX02(006). "每栈板对应的产品数量*****
DATA: TRAGR(004). "运输组 *****
DATA: LADGR(004). "装载组 *****
DATA: MTVFP(002). "可用性检查 *****
DATA: DISMM(002). "MRP 类型 ****
DATA: DISGR(004). "MRP组 ****
DATA: DISPO(003). "MRP 控制者 ******
DATA: DISLS(002). "批量大小 ****
DATA: BSTRF(017). "舍入值 ****
DATA: BESKZ(001). "采购类型 * ****
DATA: SOBSL(002). "特殊采购类 ****
DATA: RGEKZ(001). "反冲 ****
DATA: LGPRO(004). "生产仓储地点 *****
DATA: LGFSB(004). "外部采购仓储地点*
DATA: DZEIT(003). "自制生产时间 ****
DATA: WEBAZ_GR(003). "收货处理时间 ****
DATA: PLIFZ(003). "计划交货时间 ****
DATA: FHORI(003). "计划边际码 ****
DATA: EISBE(017). "安全库存 ****
DATA: PERKZ(001). "期间标识 ****
DATA: KAUSF(006). "部件废品(%) ****
DATA: MTVFP1(002). "可用性检查 ****
DATA: SBDKZ(001). "独立/集中 ****
DATA: XCHPF(001). "批次管理 ****
DATA: LGPBE(010). "库存仓位 ****
DATA: INSMK(001). "过帐到检验库存***
DATA: PRFRQ(006). "检查间隔天数 ****
DATA: QMPUR(001). "QM采购激活 ****
DATA: SSQSS(008). "QM 控制码 ****
DATA: AKTIV_01(001). "激活检验类型01***
DATA: AKTIV_03(001). "激活检验类型03***
DATA: AKTIV_04(001). "激活检验类型04***
DATA: AKTIV_05(001). "激活检验类型05***
DATA: AKTIV_09(001). "激活检验类型09***
DATA: BKLAS(004). "评估类 ****
DATA: VPRSV(001). "价格控制 ****
DATA: PEINH(006). "价格单位 ****
DATA: VERPR(015). "移动平均价 ****
DATA: STPRS(015). "标准价格 ****
DATA: EKALR(001). "物料根据数量结构进行成本核算*****
DATA: HKMAT(001). "物料来源 ****
DATA: HRKFT(004). "原始组 ****
DATA: KOSGR(010). "间接费分组 ****
DATA: AWSLS(006). "差异码 ****
DATA: ZPLP1(014). "未来计划价格1****
DATA: ZPLD1(010). "未来计划价格1日期*****
DATA: ZPLP2(014). "未来计划价格2****
DATA: ZPLD2(010). "未来计划价格2日期*****
DATA: UMREZ(006). "转换比例fm
DATA: END OF ITAB.
* define internal table to store views selection for material type & plant
DATA: BEGIN OF VWS_ITAB OCCURS 0 .
DATA: MTART(004) TYPE C. " Material Type
DATA: BASIC_VIEWS(001) TYPE C. " Flag for Basic View
DATA: CLASS_VIEWS(001) TYPE C. " Flag for Classification
DATA: WERKS(004) TYPE C. " Plant Data
DATA: PROCUREMENT(001) TYPE C. " Flag for procurement Type
DATA: SALES_VIEWS(001) TYPE C. " Flag for Sales Views
DATA: PURCH_VIEWS(001) TYPE C. " Flag for Purchasing Views
DATA: MRP_VIEWS(001) TYPE C. " Flag for MRP Views
DATA: WKSCH_VIEWS(001) TYPE C. " Flag for Work Schedule
DATA: FOREC_VIEWS(001) TYPE C. " Flag for Forecasting
DATA: PRT_VIEWS(001) TYPE C. " Flag for PRT Tools
DATA: STORAGE_VIEW(001) TYPE C. " Flag for storage views
DATA: WH_VIEWS(001) TYPE C. " Flag for Warehouse Management
DATA: QA_VIEWS(001) TYPE C. " Flag for Quality Management
DATA: ACCTS_VIEWS(001) TYPE C. " Flag for Accountings
DATA: COSTS_VIEWS(001) TYPE C. " Flag for Costings
DATA: BATCH_MANAGE(001) TYPE C. " Flag for Batch Management
DATA: REMARKS(020) TYPE C. " Remarks
DATA: END OF VWS_ITAB.
CONSTANTS: XFLAG(001) TYPE C VALUE 'X'.
DATA : L_CLASS(001) TYPE C .
DATA: LINE_CNT TYPE I .
**-* *-* *-* define internal table for BAPI function call *-* *-* *-* *-* *-*
*-* Material Descriptions
DATA: MATERIALDESCRIPTION LIKE BAPI_MAKT OCCURS 0 WITH HEADER LINE .
*-* Units of Measure
DATA: UNITSOFMEASURE LIKE BAPI_MARM OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for BAPI_MARM
DATA: UNITSOFMEASUREX LIKE BAPI_MARMX OCCURS 0 WITH HEADER LINE .
*-* International Article Numbers (EANs)
DATA: INTERNATIONALARTNOS LIKE BAPI_MEAN OCCURS 0 WITH HEADER LINE .
*-* Long Texts
DATA: MATERIALLONGTEXT LIKE BAPI_MLTX OCCURS 0 WITH HEADER LINE .
*-* Tax Data
DATA: TAXCLASSIFICATIONS LIKE BAPI_MLAN OCCURS 0 WITH HEADER LINE .
*-* Substitute Structure for Return Parameter BAPIRET2
DATA: RETURNMESSAGES LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE .
*-* Production Resource Tool (PRT) Fields in the Material Master
DATA: PRTDATA LIKE BAPI_MFHM OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for BAPI_MFHM
DATA: PRTDATAX LIKE BAPI_MFHMX OCCURS 0 WITH HEADER LINE .
*-* Ref. structure for BAPI parameter ExtensionIn/ExtensionOut
DATA: EXTENSIONIN LIKE BAPIPAREX OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for Extension In/Extension Out
DATA: EXTENSIONINX LIKE BAPIPAREXX OCCURS 0 WITH HEADER LINE .
*-* /NFM/: NF Charge Weights for Materials on Org. Level
DATA: NFMCHARGEWEIGHTS LIKE /NFM/BAPITVGW OCCURS 0 WITH HEADER LINE .
*-* /NFM/: Update Information for /NFM/BAP
DATA: NFMCHARGEWEIGHTSX LIKE /NFM/BAPITVGWX OCCURS 0 WITH HEADER LINE .
*-* /NFM/: NF Structural Weights
DATA: NFMSTRUCTURALWEIGHTS LIKE /NFM/BAPITKGW OCCURS 0 WITH HEADER LINE .
*-* /NFM/: Update Information for /NFM/BAPITKGW
DATA: NFMSTRUCTURALWEIGHTSX LIKE /NFM/BAPITKGWX OCCURS 0 WITH HEADER LINE .
*-* Returned Parameters
DATA: RETURN LIKE BAPIRET2." OCCURS 0 WITH HEADER LINE .
*
DATA: INSPECTIONCTRL LIKE BAPI1001004_QMAT OCCURS 0 WITH HEADER LINE .
*
DATA: QM_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
* define structure data for BAPIs function of material master creation
DATA: HEADDATA LIKE BAPIMATHEAD. "Header Segment with Control Information
DATA: CLIENTDATA LIKE BAPI_MARA. "Material Data at Client Level
DATA: CLIENTDATAX LIKE BAPI_MARAX. "Checkbox Structure for BAPI_MARA
DATA: PLANTDATA LIKE BAPI_MARC. "Material Data at Plant Level
DATA: PLANTDATAX LIKE BAPI_MARCX. "Checkbox Structure for BAPI_MARC
DATA: FORECASTPARAMETERS LIKE BAPI_MPOP. "Forecast Parameters
DATA: FORECASTPARAMETERSX LIKE BAPI_MPOPX. "Checkbox Structure for BAPI_MPOP
DATA: PLANNINGDATA LIKE BAPI_MPGD. "Change Document Structure for Material Master/Product Group
DATA: PLANNINGDATAX LIKE BAPI_MPGDX. "Checkbox Structure for BAPI_MPGD
DATA: STORAGELOCATIONDATA LIKE BAPI_MARD. "Material Data at Storage Location Level
DATA: STORAGELOCATIONDATAX LIKE BAPI_MARDX. "Checkbox Structure for BAPI_MARD
DATA: VALUATIONDATA LIKE BAPI_MBEW. "Valuation Data
DATA: VALUATIONDATAX LIKE BAPI_MBEWX. "Checkbox Structure for BAPI_MBEW
DATA: WAREHOUSENUMBERDATA LIKE BAPI_MLGN. "Warehouse Number Data
DATA: WAREHOUSENUMBERDATAX LIKE BAPI_MLGNX. "Checkbox Structure for BAPI_MLGN
DATA: SALESDATA LIKE BAPI_MVKE. "Sales Data
DATA: SALESDATAX LIKE BAPI_MVKEX. "Checkbox Structure for BAPI_MVKE
DATA: STORAGETYPEDATA LIKE BAPI_MLGT. "Storage Type Data
DATA: STORAGETYPEDATAX LIKE BAPI_MLGTX. "Checkbox Structure for BAPI_MLGT
*Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
*Messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* define internal table to store uploading result ...
DATA: BEGIN OF I_RESULT OCCURS 0.
DATA: MATNR LIKE ITAB-MATNR.
DATA: WERKS LIKE ITAB-WERKS.
DATA: MTART LIKE ITAB-MTART.
DATA: MAKTX LIKE ITAB-MAKTX.
DATA: MEINS LIKE ITAB-MEINS.
INCLUDE STRUCTURE RETURNMESSAGES.
DATA: QMVIEWS(001).
DATA: MESSAGE01 LIKE RETURNMESSAGES-MESSAGE.
DATA: MESSAGE02 LIKE RETURNMESSAGES-MESSAGE.
DATA: SELK(001) TYPE C .
DATA: END OF I_RESULT.
DATA: BEGIN OF I_ERROR OCCURS 0.
DATA: MATNR LIKE ITAB-MATNR.
DATA: WERKS LIKE ITAB-WERKS.
DATA: MTART LIKE ITAB-MTART.
DATA: MEINS LIKE ITAB-MEINS.
DATA: END OF I_ERROR.
*-* define parameter to store line count
DATA: LINE TYPE I.
DATA: L_CNT TYPE I.
DATA: INT_CNT TYPE I .
DATA: GIT_BAPI1003 LIKE BAPI1003_ALLOC_VALUES_NUM OCCURS 0 WITH HEADER LINE,
GIT_VALUES_CHAR LIKE BAPI1003_ALLOC_VALUES_CHAR OCCURS 0 WITH HEADER LINE,
GIT_VALUES_CURR LIKE BAPI1003_ALLOC_VALUES_CURR OCCURS 0 WITH HEADER LINE,
GIT_VALUES_LIST LIKE BAPI1003_ALLOC_LIST OCCURS 0 WITH HEADER LINE,
GIT_BAPIRET2 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
LS_BAPIRET2 TYPE BAPIRET2.
DATA: GS_BAPI1003 TYPE BAPI1003_ALLOC_VALUES_NUM,
GS_VALUES_CHAR TYPE BAPI1003_ALLOC_VALUES_CHAR,
GS_VALUES_CURR TYPE BAPI1003_ALLOC_VALUES_CURR,
GC_FLAG_X(1) TYPE C VALUE 'X'.
DATA: G_MATNR_CHK LIKE ITAB-MATNR .
DATA: M_MATNR_CHK LIKE ITAB-MATNR .
DATA: S_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
*----------------------------------------------------------------------*
* TOP-OF-PAGE.
*----------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM COLUMN_HEADER.
*----------------------------------------------------------------------*
* initialization. *
*----------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB, VWS_ITAB, BDCDATA, MESSTAB, I_RESULT, I_ERROR.
CLEAR : ITAB, VWS_ITAB, BDCDATA, MESSTAB, I_RESULT, I_ERROR.
IF SY-UNAME CA 'USER'.
* set default value for data migration => Background Job
P_BKJOB = 'X'.
ENDIF .
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BASIC.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_BASIC
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
*--------------------------------------------------------------------*
* at selection-screen output
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON P_MMAM .
IF NOT P_MMAM IS INITIAL .
MOVE XFLAG TO P_MARC.
MOVE XFLAG TO P_QMDATA.
ENDIF.
*--------------------------------------------------------------------*
* at selection-screen output
*--------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT .
* PERFORM MODIFY_SCREEN .
*----------------------------------------------------------------------*
* Start-of-selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM DETERMINE_MATERIAL_VIEWS .
PERFORM UPLOAD_DATA.
SORT ITAB BY MATNR WERKS DESCENDING.
CLEAR: LINE_CNT .
DESCRIBE TABLE ITAB LINES LINE_CNT .
LOOP AT ITAB .
TRANSLATE ITAB-MATNR TO UPPER CASE .
TRANSLATE ITAB-GEWEI TO UPPER CASE .
ITAB-MWERT_DESC11 = ITAB-MWERT_DESC1+30(30).
ITAB-MWERT_DESC12 = ITAB-MWERT_DESC1+60(30).
ITAB-MWERT_DESC1 = ITAB-MWERT_DESC1+0(30).
ITAB-MWERT_DESC21 = ITAB-MWERT_DESC2+30(30).
ITAB-MWERT_DESC22 = ITAB-MWERT_DESC2+60(30).
ITAB-MWERT_DESC2 = ITAB-MWERT_DESC2+0(30).
IF NOT ITAB-MATNR IS INITIAL .
PERFORM FORMAT_ALPHA_OUTPUT CHANGING ITAB-MATNR .
WRITE:/ ITAB-MATNR UNDER TEXT-C01,
ITAB-MAKTX UNDER TEXT-C06,
ITAB-NTGEW UNDER TEXT-C08,
ITAB-MTART UNDER TEXT-C03,
ITAB-WERKS UNDER TEXT-C02,
ITAB-VKORG UNDER TEXT-C09,
ITAB-LGPRO UNDER TEXT-C10,
ITAB-LGFSB UNDER TEXT-C11,
ITAB-LGORT UNDER TEXT-C04,
ITAB-BESKZ UNDER TEXT-C05,
ITAB-SOBSL UNDER TEXT-C07.
IF ITAB-WERKS = '1005' OR ITAB-WERKS = '1006'.
MOVE 'F' TO ITAB-BESKZ.
ENDIF .
IF ITAB-BESKZ IS INITIAL AND ( ITAB-MTART EQ 'ROH' OR
ITAB-MTART EQ 'ROH1' OR
ITAB-MTART EQ 'ROH2' OR
ITAB-MTART EQ 'ROH3' OR
ITAB-MTART EQ 'UNBW' OR
ITAB-MTART EQ 'LEIH' ).
MOVE 'F' TO ITAB-BESKZ.
ENDIF .
* Check if MRP Controller is fit for Plant and Material Type or not
IF ITAB-WERKS = '2001' OR ITAB-WERKS = '2003' OR ITAB-WERKS = '2004'.
IF ITAB-MTART EQ 'ROH'.
IF ITAB-DISPO+0(1) NE 'M'.
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF.
ENDIF.
ENDIF .
IF ITAB-WERKS = '2001' OR ITAB-WERKS = '2003' OR ITAB-WERKS = '2004'.
IF ITAB-MTART EQ 'HALB'.
IF ITAB-DISPO+0(1) EQ 'M'.
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF.
ENDIF.
ENDIF .
IF ITAB-BRGEW = 'G' OR ITAB-BRGEW = 'g' .
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF .
MODIFY ITAB .
ELSE.
DELETE ITAB .
ENDIF .
ENDLOOP .
*----------------------------------------------------------------------*
* End-of-selection *
*----------------------------------------------------------------------*
END-OF-SELECTION.
IF I_ERROR[] IS INITIAL.
SET PF-STATUS 'P1100'.
ELSE.
WRITE:/ '请检查以下物料各个字段值:'.
ULINE .
LOOP AT I_ERROR .
WRITE: / I_ERROR-MATNR COLOR COL_NEGATIVE,
I_ERROR-WERKS COLOR COL_NEGATIVE.
ENDLOOP .
ENDIF .
WRITE:/ TEXT-T00, LINE_CNT COLOR COL_KEY.
*----------------------------------------------------------------------*
* at user-command *
*----------------------------------------------------------------------*
AT USER-COMMAND .
CASE SY-UCOMM .
WHEN 'MDRCRT' .
REFRESH: I_RESULT .
CLEAR : I_RESULT .
PERFORM MATERIAL_MAINTAIN .
PERFORM PREPARE_ALV_FIELDS.
PERFORM DISPLAY_ALV_RESULT.
ENDCASE .
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPLOAD_DATA .
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = P_FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF ITAB[] IS INITIAL.
MESSAGE '导入数据为空,请确认后重新导入! ' TYPE 'I'.
EXIT.
ENDIF.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form MATERIAL_MAINTAIN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MATERIAL_MAINTAIN .
DATA: L_MARA TYPE I .
DATA: L_QMATV LIKE MARC-QMATV .
DATA: L_MARC(001).
DATA: N_MATNR_CHK LIKE ITAB-MATNR .
DATA: O_MATNR_CHK LIKE ITAB-MATNR .
CLEAR: N_MATNR_CHK, O_MATNR_CHK.
SORT VWS_ITAB BY MTART.
IF NOT P_BKJOB IS INITIAL .
PERFORM OPEN_GROUP .
ENDIF .
LOOP AT ITAB .
CLEAR: L_CLASS, L_QMATV, L_MARC, L_MARA.
* move-corresponding data to header data => HEADDATA
CLEAR: HEADDATA,
CLIENTDATA, CLIENTDATA,
PLANTDATA, PLANTDATAX,
FORECASTPARAMETERS, FORECASTPARAMETERSX,
PLANNINGDATA, PLANNINGDATAX,
STORAGELOCATIONDATA, STORAGELOCATIONDATAX,
VALUATIONDATA, VALUATIONDATAX,
WAREHOUSENUMBERDATA, WAREHOUSENUMBERDATAX,
SALESDATA, SALESDATAX,
STORAGETYPEDATA, STORAGETYPEDATAX.
* get customizing views which need to be selected
CLEAR: VWS_ITAB .
READ TABLE VWS_ITAB WITH KEY MTART = ITAB-MTART
WERKS = ITAB-WERKS
PROCUREMENT = ITAB-BESKZ .
***** Check Material Plant Data Maintain Or Not
CLEAR: MARC .
SELECT SINGLE * FROM MARC CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR
AND WERKS EQ ITAB-WERKS .
IF SY-SUBRC EQ 0 .
IF ITAB-WERKS EQ '2001' OR
ITAB-WERKS EQ '2003' OR
ITAB-WERKS EQ '2004' .
MOVE MARC-QMATV TO L_QMATV .
ELSE .
MOVE XFLAG TO L_QMATV.
* CLEAR: L_QMATV.
ENDIF .
MOVE XFLAG TO L_MARC .
ELSE.
IF ITAB-WERKS EQ '1005' OR ITAB-WERKS EQ '1006'.
MOVE XFLAG TO L_QMATV.
ELSE.
CLEAR: L_QMATV.
ENDIF.
CLEAR: L_MARC .
ENDIF .
*** Update QM Data or not
IF NOT P_QMDATA IS INITIAL .
IF ITAB-WERKS EQ '1005' OR ITAB-WERKS EQ '1006'.
MOVE XFLAG TO L_QMATV.
ELSE.
CLEAR: L_QMATV.
ENDIF.
ENDIF .
*** Update Plant Data or not
IF NOT P_MARC IS INITIAL .
CLEAR: L_MARC .
ENDIF .
IF L_MARC IS INITIAL.
IF NOT P_MMAM IS INITIAL .
CLEAR: MARA .
SELECT SINGLE * FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR .
IF SY-SUBRC = 0.
IF ITAB-MTART <> MARA-MTART .
PERFORM MATERIAL_TYPE_CHANGE .
ENDIF .
ENDIF .
ENDIF .
* Conver value to uper case
TRANSLATE ITAB-MEINS TO UPPER CASE.
IF ITAB-MEINS EQ 'G' OR ITAB-MEINS EQ 'g'.
ITAB-MEINS = 'g'.
ELSE.
TRANSLATE ITAB-MEINS TO UPPER CASE.
ENDIF .
TRANSLATE ITAB-GEWEI TO UPPER CASE.
PERFORM MAP_MATERIAL_DESCRIPTION .
PERFORM MAP_MATERIAL_MASTER_DATA .
* determine & select views for material maintain
CASE VWS_ITAB-BASIC_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-BASIC_VIEW. "Basic Views
ENDCASE.
CASE VWS_ITAB-SALES_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'. " If phantom item, not required for Accts & Costs % QA Views
** assign plant data & ** assign update information
IF NOT ITAB-VKORG IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-SALES_VIEW. "Sales Views
PERFORM MAP_SALES_DATA .
ENDIF .
ENDIF.
ENDCASE .
CASE VWS_ITAB-PURCH_VIEWS.
WHEN 'X'.
** assign plant data & ** assign update information
IF ITAB-SOBSL NE '50'.
IF NOT ITAB-EKGRP IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-PURCHASE_VIEW."Purchasing View
PERFORM MAP_PURCHASING_DATA .
ENDIF .
ENDIF .
ENDCASE .
************ MRP VIEWS ****************
CASE VWS_ITAB-MRP_VIEWS.
WHEN 'X'.
** assign plant data & ** assign update information
IF NOT ITAB-DISMM IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-MRP_VIEW. "MRP Views
PERFORM MAP_MRP_DATA .
ENDIF .
ENDCASE .
************ FORECASTING VIEWS ****************
CASE VWS_ITAB-FOREC_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-FORECAST_VIEW."Forecasting View
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDCASE .
************ WORK SCHEDULING VIEWS ****************
CASE VWS_ITAB-WKSCH_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'.
MOVE XFLAG TO HEADDATA-WORK_SCHED_VIEW."Work Scheduling
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDIF .
ENDCASE .
************ PRT VIEWS ****************
CASE VWS_ITAB-PRT_VIEWS.
WHEN 'X'. MOVE XFLAG TO HEADDATA-PRT_VIEW. "PRT Views
ENDCASE .
************ STORAGE VIEWS ****************
CASE VWS_ITAB-STORAGE_VIEW.
WHEN 'X'.
** assign plant data & ** assign update information
IF ITAB-SOBSL NE '50'.
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_STORAGE_DATA .
ENDIF .
WHEN SPACE.
IF ITAB-MTART = 'ABF'.
IF NOT ITAB-LGORT IS INITIAL OR
NOT ITAB-LGPRO IS INITIAL OR
NOT ITAB-LGFSB IS INITIAL.
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_STORAGE_DATA .
ENDIF .
ENDIF .
ENDCASE .
************ WAREHOUSE MANAGEMENT VIEWS ****************
CASE VWS_ITAB-WH_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-WAREHOUSE_VIEW. "
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDCASE .
************ QA VIEWS ****************
CASE VWS_ITAB-QA_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'.
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_QA_DATA.
ENDIF.
ENDCASE .
************ ACCOUNTING & COSTINGS VIEWS ****************
CASE VWS_ITAB-ACCTS_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50' AND ITAB-MTART NE 'ABF'.
IF NOT ITAB-BKLAS IS INITIAL .
MOVE XFLAG TO HEADDATA-ACCOUNT_VIEW. "Accounting Data
MOVE XFLAG TO HEADDATA-COST_VIEW. "Costing Data
PERFORM MAP_FICO_DATA .
ENDIF .
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDIF .
ENDCASE .
************ BATCH MANAGEMENT ****************
CASE VWS_ITAB-BATCH_MANAGE.
WHEN 'X'.
MOVE ITAB-XCHPF TO CLIENTDATA-BATCH_MGMT . "Batch management requirement indicator
MOVE XFLAG TO CLIENTDATAX-BATCH_MGMT . "Batch management requirement indicator
ENDCASE.
CLEAR : RETURN.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = HEADDATA
CLIENTDATA = CLIENTDATA
CLIENTDATAX = CLIENTDATAX
PLANTDATA = PLANTDATA
PLANTDATAX = PLANTDATAX
FORECASTPARAMETERS = FORECASTPARAMETERS
FORECASTPARAMETERSX = FORECASTPARAMETERSX
PLANNINGDATA = PLANNINGDATA
PLANNINGDATAX = PLANNINGDATAX
STORAGELOCATIONDATA = STORAGELOCATIONDATA
STORAGELOCATIONDATAX = STORAGELOCATIONDATAX
VALUATIONDATA = VALUATIONDATA
VALUATIONDATAX = VALUATIONDATAX
WAREHOUSENUMBERDATA = WAREHOUSENUMBERDATA
WAREHOUSENUMBERDATAX = WAREHOUSENUMBERDATAX
SALESDATA = SALESDATA
SALESDATAX = SALESDATAX
STORAGETYPEDATA = STORAGETYPEDATA
STORAGETYPEDATAX = STORAGETYPEDATAX
FLAG_ONLINE = SPACE
FLAG_CAD_CALL = SPACE
NO_DEQUEUE = SPACE
NO_ROLLBACK_WORK = SPACE
IMPORTING
RETURN = RETURN
TABLES
MATERIALDESCRIPTION = MATERIALDESCRIPTION
UNITSOFMEASURE = UNITSOFMEASURE
UNITSOFMEASUREX = UNITSOFMEASUREX
INTERNATIONALARTNOS = INTERNATIONALARTNOS
MATERIALLONGTEXT = MATERIALLONGTEXT
TAXCLASSIFICATIONS = TAXCLASSIFICATIONS
RETURNMESSAGES = RETURNMESSAGES
PRTDATA = PRTDATA
PRTDATAX = PRTDATAX
EXTENSIONIN = EXTENSIONIN
EXTENSIONINX = EXTENSIONINX.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
COMMIT WORK.
CALL FUNCTION 'BUFFER_REFRESH_ALL'.
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE-CORRESPONDING RETURN TO I_RESULT .
ENDIF .
CASE VWS_ITAB-QA_VIEWS.
WHEN 'X'.
IF L_QMATV IS INITIAL AND ITAB-SOBSL NE '50' AND ITAB-MTART NE 'ABF'.
REFRESH: INSPECTIONCTRL, QM_RETURN.
CLEAR : INSPECTIONCTRL, QM_RETURN.
IF NOT ITAB-AKTIV_01 IS INITIAL.
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '01' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST. "
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN."
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC."
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE."
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_03 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '03' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_04 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '04' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN."
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC."
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE."
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_05 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '05' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_09 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '09' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF ITAB-AKTIV_01 IS INITIAL AND ITAB-AKTIV_03 IS INITIAL
AND ITAB-AKTIV_04 IS INITIAL AND ITAB-AKTIV_05 IS INITIAL
AND ITAB-AKTIV_09 IS INITIAL.
MOVE XFLAG TO L_QMATV .
ELSE.
REFRESH: QM_RETURN.
CLEAR : QM_RETURN.
CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA'
TABLES
RETURN = QM_RETURN
INSPECTIONCTRL = INSPECTIONCTRL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
COMMIT WORK.
CALL FUNCTION 'BUFFER_REFRESH_ALL'.
MOVE XFLAG TO I_RESULT-QMVIEWS.
IF QM_RETURN[] IS INITIAL .
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE TEXT-S08 TO I_RESULT-MESSAGE01 .
ELSE .
LOOP AT QM_RETURN .
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE QM_RETURN-MESSAGE TO I_RESULT-MESSAGE01 .
ENDLOOP .
ENDIF .
ENDIF .
ENDIF .
ENDCASE .
IF L_MARC IS INITIAL .
CLEAR: I_RESULT-MESSAGE02 .
IF NOT I_RESULT-MATNR IS INITIAL.
CLEAR: N_MATNR_CHK .
MOVE ITAB-MATNR TO N_MATNR_CHK .
IF N_MATNR_CHK NE O_MATNR_CHK .
PERFORM MAINTAIN_CLASSIFICATION .
* PERFORM MAINTAIN_CLASSIFICATION_BAPI .
MOVE N_MATNR_CHK TO O_MATNR_CHK .
ELSE.
IF P_BKJOB IS INITIAL .
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
APPEND I_RESULT .
CLEAR I_RESULT .
ENDIF .
ELSE.
CLEAR: I_RESULT-MESSAGE02 .
IF L_QMATV IS INITIAL .
IF NOT I_RESULT-MATNR IS INITIAL.
CLEAR: N_MATNR_CHK .
MOVE ITAB-MATNR TO N_MATNR_CHK .
IF N_MATNR_CHK NE O_MATNR_CHK .
PERFORM MAINTAIN_CLASSIFICATION .
* PERFORM MAINTAIN_CLASSIFICATION_BAPI .
MOVE N_MATNR_CHK TO O_MATNR_CHK .
ELSE.
IF P_BKJOB IS INITIAL .
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
APPEND I_RESULT .
CLEAR I_RESULT .
ENDIF .
ENDIF .
ENDIF .
ENDLOOP .
IF NOT P_BKJOB IS INITIAL .
PERFORM CLOSE_GROUP .
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDIF .
ENDFORM. " MATERIAL_MAINTAIN
*&---------------------------------------------------------------------*
*& Form DETERMINE_MATERIAL_VIEWS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DETERMINE_MATERIAL_VIEWS .
REFRESH: VWS_ITAB . CLEAR: VWS_ITAB .
REFRESH: INT_TAB .
CLEAR : INT_TAB .
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_BASIC
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 18
I_END_ROW = 9999
TABLES
INTERN = INT_TAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
SORT INT_TAB BY ROW COL.
LOOP AT INT_TAB .
AT NEW ROW.
CLEAR: VWS_ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO VWS_ITAB-MTART.
TRANSLATE VWS_ITAB-MTART TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO VWS_ITAB-BASIC_VIEWS.
TRANSLATE VWS_ITAB-BASIC_VIEWS TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO VWS_ITAB-CLASS_VIEWS.
TRANSLATE VWS_ITAB-CLASS_VIEWS TO UPPER CASE.
WHEN 4.
MOVE INT_TAB-VALUE TO VWS_ITAB-WERKS.
TRANSLATE VWS_ITAB-WERKS TO UPPER CASE.
WHEN 5.
MOVE INT_TAB-VALUE TO VWS_ITAB-PROCUREMENT.
TRANSLATE VWS_ITAB-PROCUREMENT TO UPPER CASE.
WHEN 6.
MOVE INT_TAB-VALUE TO VWS_ITAB-SALES_VIEWS.
TRANSLATE VWS_ITAB-SALES_VIEWS TO UPPER CASE.
WHEN 7.
MOVE INT_TAB-VALUE TO VWS_ITAB-PURCH_VIEWS.
TRANSLATE VWS_ITAB-PURCH_VIEWS TO UPPER CASE.
WHEN 8.
MOVE INT_TAB-VALUE TO VWS_ITAB-MRP_VIEWS.
TRANSLATE VWS_ITAB-MRP_VIEWS TO UPPER CASE.
WHEN 9.
MOVE INT_TAB-VALUE TO VWS_ITAB-WKSCH_VIEWS.
TRANSLATE VWS_ITAB-WKSCH_VIEWS TO UPPER CASE.
* WHEN 10.
* MOVE INT_TAB-VALUE TO VWS_ITAB-FOREC_VIEWS.
* TRANSLATE VWS_ITAB-FOREC_VIEWS TO UPPER CASE.
WHEN 10.
MOVE INT_TAB-VALUE TO VWS_ITAB-QA_VIEWS.
TRANSLATE VWS_ITAB-QA_VIEWS TO UPPER CASE.
WHEN 11.
MOVE INT_TAB-VALUE TO VWS_ITAB-STORAGE_VIEW.
TRANSLATE VWS_ITAB-STORAGE_VIEW TO UPPER CASE.
WHEN 12.
MOVE INT_TAB-VALUE TO VWS_ITAB-ACCTS_VIEWS.
TRANSLATE VWS_ITAB-ACCTS_VIEWS TO UPPER CASE.
WHEN 13.
MOVE INT_TAB-VALUE TO VWS_ITAB-COSTS_VIEWS.
TRANSLATE VWS_ITAB-COSTS_VIEWS TO UPPER CASE.
WHEN 14.
MOVE INT_TAB-VALUE TO VWS_ITAB-BATCH_MANAGE.
TRANSLATE VWS_ITAB-BATCH_MANAGE TO UPPER CASE.
WHEN 15.
MOVE INT_TAB-VALUE TO VWS_ITAB-REMARKS.
TRANSLATE VWS_ITAB-REMARKS TO UPPER CASE.
ENDCASE .
AT END OF ROW.
IF NOT VWS_ITAB-MTART IS INITIAL .
APPEND VWS_ITAB.
CLEAR VWS_ITAB .
ENDIF .
ENDAT.
ENDLOOP .
ENDFORM. " DETERMINE_MATERIAL_VIEWS
*&---------------------------------------------------------------------*
*& Form MAP_MATERIAL_DESCRIPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MATERIAL_DESCRIPTION .
*append data to internal table
**material description
REFRESH: MATERIALDESCRIPTION .
CLEAR : MATERIALDESCRIPTION .
MOVE '1' TO MATERIALDESCRIPTION-LANGU .
MOVE ITAB-MAKTX TO MATERIALDESCRIPTION-MATL_DESC.
APPEND: MATERIALDESCRIPTION . CLEAR : MATERIALDESCRIPTION .
MOVE 'E' TO MATERIALDESCRIPTION-LANGU .
MOVE ITAB-MAKTX TO MATERIALDESCRIPTION-MATL_DESC.
APPEND: MATERIALDESCRIPTION .
CLEAR : MATERIALDESCRIPTION .
**unit of measurement
REFRESH: UNITSOFMEASURE, UNITSOFMEASUREX .
CLEAR : UNITSOFMEASURE, UNITSOFMEASUREX .
IF NOT ITAB-UMREN IS INITIAL AND NOT ITAB-UMREZ IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-UMREN.
IF SY-SUBRC = 0.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
ELSE.
MOVE ITAB-UMREN TO UNITSOFMEASURE-ALT_UNIT .
ENDIF .
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
ENDIF .
IF NOT ITAB-BOX01 IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ 'CAR'.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BOX01 TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BOX02 IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ 'PAL'.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BOX02 TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BSTME IS INITIAL AND NOT ITAB-UMREN IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-BSTME.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-UMREN TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BRGEW IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-MEINS.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BRGEW TO UNITSOFMEASURE-GROSS_WT .
MOVE ITAB-GEWEI TO UNITSOFMEASURE-UNIT_OF_WT .
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-GROSS_WT.
MOVE XFLAG TO UNITSOFMEASUREX-UNIT_OF_WT.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
* ENDIF .
ENDFORM. " MAP_MATERIAL_DESCRIPTION
*&---------------------------------------------------------------------*
*& Form MAP_MATERIAL_MASTER_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MATERIAL_MASTER_DATA .
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-MEINS.
* assign field vaues to header data
MOVE ITAB-MATNR TO HEADDATA-MATERIAL. "Material Number
MOVE ITAB-MBRSH TO HEADDATA-IND_SECTOR. "Industry sector
MOVE ITAB-MTART TO HEADDATA-MATL_TYPE. "Material Type
** assign client level data
MOVE ITAB-MSTAE TO CLIENTDATA-PUR_STATUS. "Cross-Plant Material Status
MOVE XFLAG TO CLIENTDATAX-PUR_STATUS. "Cross-Plant Material Status
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM. "Base Unit of Measure
MOVE XFLAG TO CLIENTDATAX-BASE_UOM. "Base Unit of Measure
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM_ISO. "Base Unit of Measure (ISO)
MOVE XFLAG TO CLIENTDATAX-BASE_UOM_ISO."Base Unit of Measure (ISO)
MOVE ITAB-MATKL TO CLIENTDATA-MATL_GROUP. "Material Group
MOVE XFLAG TO CLIENTDATAX-MATL_GROUP. "Material Group
MOVE SPACE TO CLIENTDATA-DEL_FLAG. "Flag Material for Deletion at Client Level
MOVE XFLAG TO CLIENTDATAX-DEL_FLAG. "Flag Material for Deletion at Client Level
MOVE ITAB-MATKL TO CLIENTDATA-MATL_GROUP. "Material Group
MOVE XFLAG TO CLIENTDATAX-MATL_GROUP. "Material Group
MOVE ITAB-BISMT TO CLIENTDATA-OLD_MAT_NO. "Old material number
MOVE XFLAG TO CLIENTDATAX-OLD_MAT_NO. "Old material number
MOVE XFLAG TO CLIENTDATA-MATERIAL_FIXED."Material Blocked Indicator
MOVE XFLAG TO CLIENTDATAX-MATERIAL_FIXED."Material Blocked Indicator
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM. "Base Unit of Measure
MOVE XFLAG TO CLIENTDATAX-BASE_UOM. "Base Unit of Measure
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM_ISO. "Base Unit of Measure (ISO)
MOVE XFLAG TO CLIENTDATAX-BASE_UOM_ISO."Base Unit of Measure (ISO)
MOVE ITAB-BSTME TO CLIENTDATA-PO_UNIT. "Purchase Order Unit of Measure
MOVE XFLAG TO CLIENTDATAX-PO_UNIT. "Purchase Order Unit of Measure
MOVE ITAB-GEWEI TO CLIENTDATA-UNIT_OF_WT. "Weight Unit
MOVE XFLAG TO CLIENTDATAX-UNIT_OF_WT. "Weight Unit
MOVE ITAB-NTGEW TO CLIENTDATA-NET_WEIGHT. "Net Weight
MOVE XFLAG TO CLIENTDATAX-NET_WEIGHT. "Net Weight
MOVE ITAB-ZEINR TO CLIENTDATA-DOCUMENT. "Document number (without document management system)
MOVE XFLAG TO CLIENTDATAX-DOCUMENT. "Document number (without document management system)
MOVE ITAB-SPART TO CLIENTDATA-DIVISION. "Division
MOVE XFLAG TO CLIENTDATAX-DIVISION. "Division
ENDFORM. " MAP_MATERIAL_MASTER_DATA
*&---------------------------------------------------------------------*
*& Form MAP_SALES_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_SALES_DATA .
MOVE ITAB-TRAGR TO CLIENTDATA-TRANS_GRP. "Transportation Group
MOVE XFLAG TO CLIENTDATAX-TRANS_GRP."Transportation Group
MOVE ITAB-LADGR TO PLANTDATA-LOADINGGRP. "Loading Group
MOVE XFLAG TO PLANTDATAX-LOADINGGRP."Loading Group
MOVE ITAB-VKORG TO SALESDATA-SALES_ORG . "Sales Organization
MOVE ITAB-VKORG TO SALESDATAX-SALES_ORG ."Sales Organization
MOVE ITAB-VTWEG TO SALESDATA-DISTR_CHAN. "Distribution Channel
MOVE ITAB-VTWEG TO SALESDATAX-DISTR_CHAN."Distribution Channel
MOVE ITAB-DWERK TO SALESDATA-DELYG_PLNT. "Delivering Plant
MOVE XFLAG TO SALESDATAX-DELYG_PLNT."Delivering Plant
MOVE ITAB-VERSG TO SALESDATA-MATL_STATS. "Material statistics group
MOVE XFLAG TO SALESDATAX-MATL_STATS."Material statistics group
MOVE ITAB-KONDM TO SALESDATA-MAT_PR_GRP. "Material Pricing Group
MOVE XFLAG TO SALESDATAX-MAT_PR_GRP."Material Pricing Group
MOVE ITAB-KTGRM TO SALESDATA-ACCT_ASSGT. "Account assignment group for this material
MOVE XFLAG TO SALESDATAX-ACCT_ASSGT."Account assignment group for this material
MOVE ITAB-MTPOS TO SALESDATA-ITEM_CAT . "Item category group from material master
MOVE XFLAG TO SALESDATAX-ITEM_CAT ."Item category group from material master
MOVE '02' TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK ."Checking Group for Availability Check
** Tax for Sales Data
REFRESH: TAXCLASSIFICATIONS . CLEAR: TAXCLASSIFICATIONS.
CASE ITAB-WERKS .
WHEN '1005' OR '1006'.
MOVE 'HK' TO TAXCLASSIFICATIONS-DEPCOUNTRY.
MOVE 'HOK' TO TAXCLASSIFICATIONS-DEPCOUNTRY_ISO.
MOVE 'MWST' TO TAXCLASSIFICATIONS-TAX_TYPE_1.
MOVE ITAB-TAXKM TO TAXCLASSIFICATIONS-TAXCLASS_1.
APPEND: TAXCLASSIFICATIONS .
CLEAR : TAXCLASSIFICATIONS.
WHEN '2001' OR '2003' OR '2004'.
MOVE 'CN' TO TAXCLASSIFICATIONS-DEPCOUNTRY.
MOVE 'CHI' TO TAXCLASSIFICATIONS-DEPCOUNTRY_ISO.
MOVE 'MWST' TO TAXCLASSIFICATIONS-TAX_TYPE_1.
MOVE ITAB-TAXKM TO TAXCLASSIFICATIONS-TAXCLASS_1.
APPEND: TAXCLASSIFICATIONS .
CLEAR : TAXCLASSIFICATIONS.
ENDCASE .
ENDFORM. " MAP_SALES_DATA
*&---------------------------------------------------------------------*
*& Form MAP_PURCHASING_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_PURCHASING_DATA .
MOVE ITAB-EKGRP TO PLANTDATA-PUR_GROUP . "Purchasing Group
MOVE XFLAG TO PLANTDATAX-PUR_GROUP ."Purchasing Group
MOVE ITAB-USEQU TO PLANTDATA-QUOTAUSAGE ."Quota arrangement usage
MOVE XFLAG TO PLANTDATAX-QUOTAUSAGE."Quota arrangement usage
MOVE ITAB-WEBAZ TO PLANTDATA-GR_PR_TIME ."Goods Receipt Processing Time in Days
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME."Goods Receipt Processing Time in Days
MOVE ITAB-XCHPF TO PLANTDATA-BATCH_MGMT ."Batch management requirement indicator
MOVE XFLAG TO PLANTDATAX-BATCH_MGMT."Batch management requirement indicator
MOVE ITAB-KORDB TO PLANTDATA-SOURCELIST ."Indicator: Source list requirement
MOVE XFLAG TO PLANTDATAX-SOURCELIST."Indicator: Source list requirement
MOVE ITAB-KZKRI TO PLANTDATA-CRIT_PART ."Indicator: Critical part
MOVE XFLAG TO PLANTDATAX-CRIT_PART ."Indicator: Critical part
ENDFORM. " MAP_PURCHASING_DATA
*&---------------------------------------------------------------------*
*& Form MAP_MRP_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MRP_DATA .
*-MRP VIEW 01
MOVE ITAB-EKGRP TO PLANTDATA-PUR_GROUP . "Purchasing Group
MOVE XFLAG TO PLANTDATAX-PUR_GROUP . "Purchasing Group
MOVE ITAB-DISGR TO PLANTDATA-MRP_GROUP . "MRP Group
MOVE XFLAG TO PLANTDATAX-MRP_GROUP . "MRP Group
MOVE ITAB-DISMM TO PLANTDATA-MRP_TYPE . "MRP Type
MOVE XFLAG TO PLANTDATAX-MRP_TYPE . "MRP Type
MOVE ITAB-DISPO TO PLANTDATA-MRP_CTRLER . "MRP Controller (Materials Planner)
MOVE XFLAG TO PLANTDATAX-MRP_CTRLER. "MRP Controller (Materials Planner)
MOVE ITAB-DISLS TO PLANTDATA-LOTSIZEKEY . "Lot size (materials planning)
MOVE XFLAG TO PLANTDATAX-LOTSIZEKEY. "Lot size (materials planning)
MOVE ITAB-BSTRF TO PLANTDATA-ROUND_VAL . "Rounding value for purchase order quantity
MOVE XFLAG TO PLANTDATAX-ROUND_VAL . "Rounding value for purchase order quantity
*-MRP View 02
*-MRP View 02-Puchasing
MOVE ITAB-BESKZ TO PLANTDATA-PROC_TYPE . "Procurement Type
MOVE XFLAG TO PLANTDATAX-PROC_TYPE . "Procurement Type
MOVE ITAB-SOBSL TO PLANTDATA-SPPROCTYPE . "Special procurement type
MOVE XFLAG TO PLANTDATAX-SPPROCTYPE. "Special procurement type
MOVE ITAB-USEQU TO PLANTDATA-QUOTAUSAGE . "Quota arrangement usage
MOVE XFLAG TO PLANTDATAX-QUOTAUSAGE. "Quota arrangement usage
MOVE ITAB-RGEKZ TO PLANTDATA-BACKFLUSH . "Indicator: Backflush
MOVE XFLAG TO PLANTDATAX-BACKFLUSH . "Indicator: Backflush
*-MRP View 02-planning
MOVE ITAB-LGPRO TO PLANTDATA-ISS_ST_LOC .
MOVE XFLAG TO PLANTDATAX-ISS_ST_LOC.
MOVE ITAB-LGFSB TO PLANTDATA-SLOC_EXPRC .
MOVE XFLAG TO PLANTDATAX-SLOC_EXPRC.
MOVE ITAB-PLIFZ TO PLANTDATA-PLND_DELRY . "Planned Delivery Time in Days
MOVE XFLAG TO PLANTDATAX-PLND_DELRY. "Planned Delivery Time in Days
MOVE ITAB-FHORI TO PLANTDATA-SM_KEY . "Scheduling Margin Key for Floats
MOVE XFLAG TO PLANTDATAX-SM_KEY . "Scheduling Margin Key for Floats
IF ITAB-BESKZ = 'E'.
MOVE ITAB-WEBAZ_GR TO PLANTDATA-GR_PR_TIME.
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME.
ELSE.
MOVE ITAB-WEBAZ TO PLANTDATA-GR_PR_TIME . "Goods Receipt Processing Time in Days
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME. "Goods Receipt Processing Time in Days
ENDIF .
MOVE ITAB-DZEIT TO PLANTDATA-INHSEPRODT . "In-house production time .
MOVE XFLAG TO PLANTDATAX-INHSEPRODT. "In-house production time .
*-MRP View 02-Net Requirement Calculation
MOVE ITAB-EISBE TO PLANTDATA-SAFETY_STK . "Safety Stock
MOVE XFLAG TO PLANTDATAX-SAFETY_STK. "Safety Stock
*-MRP View 03
MOVE ITAB-PERKZ TO PLANTDATA-PERIOD_IND . "Period Indicator
MOVE XFLAG TO PLANTDATAX-PERIOD_IND. "Period Indicator
*-MRP View 03 - Available check
MOVE ITAB-MTVFP1 TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK. "Checking Group for Availability Check
MOVE '02' TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK ."Checking Group for Availability Check
*-MRP View 04
MOVE ITAB-SBDKZ TO PLANTDATA-DEP_REQ_ID . "Dependent requirements ind. for individual and coll. reqmts
MOVE XFLAG TO PLANTDATAX-DEP_REQ_ID. "Dependent requirements ind. for individual and coll. reqmts
MOVE ITAB-KAUSF TO PLANTDATA-COMP_SCRAP . "Component scrap in percent
MOVE XFLAG TO PLANTDATAX-COMP_SCRAP. "Component scrap in percent
ENDFORM. " MAP_MRP_DATA
*&---------------------------------------------------------------------*
*& Form MAP_QA_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_QA_DATA .
DATA: L_CNT_QM TYPE I .
IF ITAB-BESKZ = 'F' OR ITAB-BESKZ = 'X'.
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
ENDIF.
IF ITAB-WERKS EQ '2001' OR ITAB-WERKS EQ '2003' OR ITAB-WERKS EQ '2004'.
IF ITAB-QMPUR IS INITIAL AND ITAB-SSQSS IS INITIAL
AND ITAB-AKTIV_01 IS INITIAL AND ITAB-AKTIV_03 IS INITIAL
AND ITAB-AKTIV_04 IS INITIAL AND ITAB-AKTIV_05 IS INITIAL
AND ITAB-AKTIV_09 IS INITIAL.
MOVE SPACE TO HEADDATA-QUALITY_VIEW. "Quality Views
ELSE.
MOVE XFLAG TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE ITAB-QMPUR TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT."QM in Procurement is Active
MOVE ITAB-SSQSS TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
MOVE ITAB-INSMK TO PLANTDATA-IND_POST_TO_INSP_STOCK ."Post to Inspection Stock
MOVE XFLAG TO PLANTDATAX-IND_POST_TO_INSP_STOCK."Post to Inspection Stock
ENDIF .
ELSE.
CLEAR: MARA, L_CNT_QM .
SELECT COUNT( * ) INTO L_CNT_QM FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR
AND QMPUR NE SPACE .
IF L_CNT_QM > 0.
MOVE XFLAG TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT."QM in Procurement is Active
MOVE '0000' TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
ELSE.
CLEAR: MARA, L_CNT_QM .
SELECT COUNT( * ) INTO L_CNT_QM FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR.
IF L_CNT_QM GT 0 .
MOVE SPACE TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE SPACE TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE SPACE TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
ENDIF .
ENDIF .
ENDIF.
MOVE ITAB-PRFRQ TO PLANTDATA-INSP_INT . "Interval until next recurring inspection
MOVE XFLAG TO PLANTDATAX-INSP_INT . "Interval until next recurring inspection
ENDFORM. " MAP_QA_DATA
*&---------------------------------------------------------------------*
*& Form MAP_FICO_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_FICO_DATA .
MOVE ITAB-AWSLS TO PLANTDATA-VARIANCE_KEY. "Variance Key
MOVE XFLAG TO PLANTDATAX-VARIANCE_KEY. "Variance Key
MOVE ITAB-WERKS TO VALUATIONDATAX-VAL_AREA . "Valuation Area
MOVE ITAB-WERKS TO VALUATIONDATA-VAL_AREA . "Valuation Area
MOVE ITAB-BKLAS TO VALUATIONDATA-VAL_CLASS. "Valuation Class
MOVE XFLAG TO VALUATIONDATAX-VAL_CLASS. "Valuation Class
MOVE ITAB-VPRSV TO VALUATIONDATA-PRICE_CTRL. "Price control indicator
MOVE XFLAG TO VALUATIONDATAX-PRICE_CTRL. "Price control indicator
MOVE ITAB-PEINH TO VALUATIONDATA-PRICE_UNIT. "Price Unit
MOVE XFLAG TO VALUATIONDATAX-PRICE_UNIT. "Price Unit
MOVE ITAB-VERPR TO VALUATIONDATA-MOVING_PR. "Moving average price/periodic unit price
MOVE XFLAG TO VALUATIONDATAX-MOVING_PR. "Moving average price/periodic unit price
MOVE ITAB-STPRS TO VALUATIONDATA-STD_PRICE. "Standard price
MOVE XFLAG TO VALUATIONDATAX-STD_PRICE. "Standard price
MOVE ITAB-EKALR TO VALUATIONDATA-QTY_STRUCT. "Material Is Costed with Quantity Structure
MOVE XFLAG TO VALUATIONDATAX-QTY_STRUCT. "Material Is Costed with Quantity Structure
MOVE ITAB-HKMAT TO VALUATIONDATA-ORIG_MAT. "Material-related origin
MOVE XFLAG TO VALUATIONDATAX-ORIG_MAT. "Material-related origin
MOVE ITAB-HRKFT TO VALUATIONDATA-ORIG_GROUP. "Origin Group as Subdivision of Cost Element
MOVE XFLAG TO VALUATIONDATAX-ORIG_GROUP. "Origin Group as Subdivision of Cost Element
MOVE ITAB-KOSGR TO VALUATIONDATA-OVERHEAD_GRP. "Costing Overhead Group
MOVE XFLAG TO VALUATIONDATAX-OVERHEAD_GRP."Costing Overhead Group
MOVE ITAB-ZPLP1 TO VALUATIONDATA-PLNDPRICE1. "Future Planned Price 1
MOVE XFLAG TO VALUATIONDATAX-PLNDPRICE1. "Future Planned Price 1
MOVE ITAB-ZPLP2 TO VALUATIONDATA-PLNDPRICE2. "Future Planned Price 2
MOVE XFLAG TO VALUATIONDATAX-PLNDPRICE2. "Future Planned Price 2
MOVE ITAB-ZPLD1 TO VALUATIONDATA-PLNDPRDATE1. "Date from Which Future Planned Price 1 Is Valid
MOVE XFLAG TO VALUATIONDATAX-PLNDPRDATE1. "Date from Which Future Planned Price 1 Is Valid
MOVE ITAB-ZPLD2 TO VALUATIONDATA-PLNDPRDATE2. "Date from Which Future Planned Price 1 Is Valid
MOVE XFLAG TO VALUATIONDATAX-PLNDPRDATE2. "Date from Which Future Planned Price 1 Is Valid
ENDFORM. " MAP_FICO_DATA
*&---------------------------------------------------------------------*
*& Form MAP_STORAGE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_STORAGE_DATA .
IF NOT ITAB-LGORT IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGORT.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGORT TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGORT TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF.
IF NOT ITAB-LGPRO IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGPRO.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGPRO TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGPRO TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF .
IF NOT ITAB-LGFSB IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGFSB.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGFSB TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGFSB TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF .
ENDFORM. " MAP_STORAGE_DATA
*&---------------------------------------------------------------------*
*& Form MAINTAIN_CLASSIFICATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAINTAIN_CLASSIFICATION .
DATA: WA LIKE ITAB .
DATA: L_KLART LIKE AUSP-KLART.
DATA: L_LINE_CH1 TYPE I.
DATA: L_LINE_CH2 TYPE I.
CLEAR: AUSP.
CLEAR: L_CNT.
CLEAR: WA .
WA = ITAB .
SELECT COUNT( * ) INTO L_CNT FROM AUSP CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND OBJEK EQ WA-MATNR.
CLEAR: L_KLART .
L_KLART = WA-KLART .
TRANSLATE WA-CLASS_01 TO UPPER CASE .
TRANSLATE WA-MWERT_DESC1 TO UPPER CASE .
REFRESH: BDCDATA, MESSTAB .
CLEAR : BDCDATA, MESSTAB .
IF L_CNT = 0 .
REFRESH: BDCDATA, MESSTAB .
CLEAR : BDCDATA, MESSTAB .
CLEAR : L_LINE_CH1, L_LINE_CH2.
IF NOT WA-MWERT_DESC1 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC11 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC12 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC2 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
IF NOT WA-MWERT_DESC21 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
IF NOT WA-MWERT_DESC22 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR' WA-MATNR.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(03)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCLCA' '0602'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
PERFORM BDC_FIELD USING 'RMCLF-KLART' L_KLART.
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMCLF-CLASS(01)' WA-CLASS_01.
PERFORM BDC_DYNPRO USING 'SAPLCTMS' '0109'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
IF L_LINE_CH1 = 1 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
IF L_LINE_CH1 = 2 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC11.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
IF L_LINE_CH1 = 3 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC11.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC12.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(08)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(08)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=WECH'.
PERFORM BDC_FIELD USING 'RMCLF-PAGPOS' '1'.
PERFORM BDC_DYNPRO USING 'SAPLCLCA' '0602'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
IF SY-MANDT = '710'.
PERFORM BDC_FIELD USING 'RMCLF-KLART' '022'.
ELSE.
PERFORM BDC_FIELD USING 'RMCLF-KLART' '023'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
IF WA-MTART = 'FERT'.
PERFORM BDC_FIELD USING 'RMCLF-STDCL(01)' 'X'.
ENDIF .
PERFORM BDC_FIELD USING 'RMCLF-CLASS(01)' 'A003'.
PERFORM BDC_DYNPRO USING 'SAPLCTMS' '0109'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A003'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' '入库日期'.
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENDE'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=YES'.
IF NOT P_BKJOB IS INITIAL .
PERFORM BDC_TRANSACTION USING 'MM01'.
ELSE.
CALL TRANSACTION 'MM01' USING BDCDATA
MODE 'E'
UPDATE 'L'
MESSAGES INTO MESSTAB.
READ TABLE MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
ELSE.
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDFORM. " MAINTAIN_CLASSIFICATION
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CLOSE_GROUP.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. "CLOSE_GROUP
*&---------------------------------------------------------------------*
*& Form OPEN_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OPEN_GROUP.
DATA: C_HOLDDATE LIKE SY-DATUM.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'MM01_CLASS'
* user = c_user
USER = SY-UNAME
KEEP = 'X' "C_KEEP
HOLDDATE = C_HOLDDATE.
ENDFORM. "OPEN_GROUP
*&---------------------------------------------------------------------*
*& Form BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BATCH_INPUT_SESSION_SUBMIT .
* Run BDC session automatically instead execute in SM35.
SUBMIT RSBDCSUB AND RETURN
WITH USER = SY-UNAME
WITH MAPPE = 'MM01_CLASS'
WITH VON = SY-DATUM
WITH BIS = SY-DATUM
WITH Z_VERARB = 'X'
WITH FEHLER = ''.
ENDFORM. " BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'MATNR' 'I_RESULT' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_RESULT' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'MTART' 'I_RESULT' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'MAKTX' 'I_RESULT' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'MEINS' 'I_RESULT' '' TEXT-D02.
PERFORM SET_ALV_FIELDS USING 'TYPE' 'I_RESULT' '' TEXT-D03.
PERFORM SET_ALV_FIELDS USING 'MESSAGE' 'I_RESULT' '' TEXT-D04.
PERFORM SET_ALV_FIELDS USING 'QMVIEWS' 'I_RESULT' '' TEXT-D05.
PERFORM SET_ALV_FIELDS USING 'MESSAGE01' 'I_RESULT' '' TEXT-D06.
IF P_BKJOB IS INITIAL.
PERFORM SET_ALV_FIELDS USING 'MESSAGE02' 'I_RESULT' '' TEXT-D07.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMAND
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = I_RESULT[].
ENDFORM. " DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVST'.
SET TITLEBAR 'ALVST'.
ENDFORM. "standard_st01
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: L_PROCESSED(001) .
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE I_RESULT INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR' OR 'QMVIEWS' OR 'WERKS'.
SET PARAMETER ID 'MAT' FIELD I_RESULT-MATNR.
SET PARAMETER ID 'WRK' FIELD I_RESULT-WERKS.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE .
ENDIF .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form COLUMN_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COLUMN_HEADER .
WRITE:/ TEXT-C01 COLOR COL_KEY,
TEXT-C06 COLOR COL_KEY,
TEXT-C08 COLOR COL_KEY,
TEXT-C03 COLOR COL_KEY,
TEXT-C02 COLOR COL_KEY,
TEXT-C09 COLOR COL_KEY,
TEXT-C10 COLOR COL_KEY,
TEXT-C11 COLOR COL_KEY,
TEXT-C04 COLOR COL_KEY,
TEXT-C05 COLOR COL_KEY,
TEXT-C07 COLOR COL_KEY.
ULINE.
ENDFORM. " COLUMN_HEADER
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
DATA: L_SCR_DISABLE TYPE C.
CLEAR: L_SCR_DISABLE .
IF SY-UNAME EQ 'T31920' OR SY-UNAME EQ 'ABAP06' OR SY-UNAME EQ 'A31920'.
L_SCR_DISABLE = 'N'.
ELSE.
L_SCR_DISABLE = 'Y'.
ENDIF.
IF L_SCR_DISABLE EQ 'Y'.
LOOP AT SCREEN .
IF SCREEN-NAME = 'P_MMAM'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_MARC'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_QMDATA'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_CLASS'.
SCREEN-INVISIBLE = 1 .
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ENDIF .
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_CLASS'.
SCREEN-INVISIBLE = 1 .
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form MATERIAL_TYPE_CHANGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MATERIAL_TYPE_CHANGE .
REFRESH: BDCDATA.
CLEAR : BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RM03Z-NMTAR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RM03Z-MATNR' ITAB-MATNR .
PERFORM BDC_FIELD USING 'RM03Z-NMTAR' ITAB-MTART.
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=LOS'.
PERFORM BDC_FIELD USING 'RM03Z-MATNR' ITAB-MATNR.
PERFORM BDC_FIELD USING 'RM03Z-NMTAR' ITAB-MTART .
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
CALL TRANSACTION 'MMAM' USING BDCDATA MODE 'N' UPDATE 'L'.
REFRESH: BDCDATA.
CLEAR : BDCDATA.
ENDFORM. " MATERIAL_TYPE_CHANGE
*&---------------------------------------------------------------------*
*& Form MAINTAIN_CLASSIFICATION_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAINTAIN_CLASSIFICATION_BAPI .
DATA: L_OBJECT(050) .
CLEAR: AUSP, L_CNT.
SELECT COUNT( * ) INTO L_CNT FROM AUSP CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND OBJEK EQ ITAB-MATNR.
IF L_CNT = 0.
REFRESH: GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : L_OBJECT .
L_OBJECT = ITAB-MATNR .
CLEAR: INT_CNT, GS_VALUES_CHAR .
IF NOT ITAB-MWERT_DESC1 IS INITIAL .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC1. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
IF NOT ITAB-MWERT_DESC11 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC11. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
IF NOT ITAB-MWERT_DESC12 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC12. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
ENDIF .
CLEAR: INT_CNT, GS_VALUES_CHAR .
IF NOT ITAB-MWERT_DESC2 IS INITIAL .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC2. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
IF NOT ITAB-MWERT_DESC21 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC21. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
IF NOT ITAB-MWERT_DESC22 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC22. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
ENDIF .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A004'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_SCR. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A005'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_SER. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CALL FUNCTION 'BAPI_OBJCL_CREATE'
EXPORTING
OBJECTKEYNEW = L_OBJECT "Material Master
OBJECTTABLENEW = 'MARA'
CLASSNUMNEW = 'A001' "Class Number
CLASSTYPENEW = '001' "Class Type
STANDARDCLASS = 'X'
NO_DEFAULT_VALUES = 'X'
TABLES
ALLOCVALUESNUM = GIT_BAPI1003
ALLOCVALUESCHAR = GIT_VALUES_CHAR
ALLOCVALUESCURR = GIT_VALUES_CURR
RETURN = GIT_BAPIRET2.
READ TABLE GIT_BAPIRET2 WITH KEY TYPE = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
REFRESH: GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR: GS_VALUES_CHAR, INT_CNT.
GS_VALUES_CHAR-CHARACT = 'A003'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = '入库日期'. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CALL FUNCTION 'BAPI_OBJCL_CREATE'
EXPORTING
OBJECTKEYNEW = L_OBJECT "Material Master
OBJECTTABLENEW = 'MARA'
CLASSNUMNEW = 'A003' "Class Number
CLASSTYPENEW = '023' "Class Type
STANDARDCLASS = 'X'
NO_DEFAULT_VALUES = 'X'
TABLES
ALLOCVALUESNUM = GIT_BAPI1003
ALLOCVALUESCHAR = GIT_VALUES_CHAR
ALLOCVALUESCURR = GIT_VALUES_CURR
RETURN = GIT_BAPIRET2.
READ TABLE GIT_BAPIRET2 WITH KEY TYPE = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
ENDFORM. " MAINTAIN_CLASSIFICATION_BAPI
*----------------------------------------------------------------------*
* Program : ZMMMDE001 *
* Author : Patrick,Song *
* Date : Sep 10, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* include program & subrouting *
*----------------------------------------------------------------------*
INCLUDE : ZBCDWI000 .
TYPE-POOLS: KCDE.
TYPE-POOLS: SLIS.
*----------------------------------------------------------------------*
* tables declaration *
*----------------------------------------------------------------------*
TABLES: AUSP, " Characteristic Values
MARC, " Plant Data for Material
MARA, " General Material Data
MVKE, " Sales Data for Material
T001L, " Storage Locations
T006A, " Assign Internal to Language-Dependent Unit
T134. " Material Types
*----------------------------------------------------------------------*
* selection screen definition *
*----------------------------------------------------------------------*
* Input file information block B1
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-SC1 .
PARAMETER: P_BASIC LIKE RLGRAP-FILENAME OBLIGATORY .
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .
SELECTION-SCREEN END OF BLOCK A1.
PARAMETERS: P_MMAM AS CHECKBOX DEFAULT SPACE .
PARAMETERS: P_MARC AS CHECKBOX DEFAULT SPACE .
PARAMETERS: P_QMDATA AS CHECKBOX DEFAULT SPACE .
*PARAMETERS: P_CLASS AS CHECKBOX .
PARAMETERS: P_BKJOB AS CHECKBOX DEFAULT SPACE .
*----------------------------------------------------------------------*
* Internal tables and field strings *
*----------------------------------------------------------------------*
*-* to store uploaded data
* define table to store tempoary data => Material Views Selection
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------*
* Global program variables *
*----------------------------------------------------------------------*
* TO STORE MATERIAL MASTER DATA WHICH NEED TO BE UPLOADED
*** Generated data section with specific formatting - DO NOT CHANGE ***
DATA: BEGIN OF ITAB OCCURS 0.
DATA: MATNR(018). "物料号 ****
DATA: BISMT(018). "旧物料号****
DATA: MAKTX(040). "物料描述****
DATA: MBRSH(001). "行业领域****
DATA: MTART(004). "物料类型****
DATA: WERKS(004). "工厂 ****
DATA: LGORT(004). "库存地点****
DATA: VKORG(004). "销售组织****
DATA: VTWEG(002). "分销渠道****
DATA: MEINS(003). "基本计量单位****
DATA: SPART(002). "产品组****
DATA: MSTAE(002). "跨工厂物料状态
DATA: MATKL(009). "物料组****
DATA: GEWEI(003). "重量单位****
DATA: BRGEW(017). "毛重***
DATA: NTGEW(017). "净重***
DATA: ZEINR(022). "产品图号***
DATA: KLART(003). "类别种类****
DATA: CLASS_01(018). "类别****
DATA: MWERT_SCR(030). "安规标准****
DATA: MWERT_SER(030). "产品系列号****
DATA: MWERT_DESC1(090). "物料描述1****
DATA: MWERT_DESC11(030). "物料描述1****
DATA: MWERT_DESC12(030). "物料描述1****
DATA: MWERT_DESC2(090). "物料描述2****
DATA: MWERT_DESC21(030). "物料描述2****
DATA: MWERT_DESC22(030). "物料描述2****
DATA: EKGRP(003). "采购组 ****
DATA: BSTME(003). "订单单位 ****
DATA: UMREN(006). "转换比例中订单单位数量
DATA: WEBAZ(003). "收货处理时间 ****
DATA: KORDB(001). "货源清单 ****
DATA: USEQU(001). "配额安排 ****
DATA: KZKRI(001). "是否合同管控*****
DATA: DWERK(004). "交货工厂*****
DATA: SPART_GRP(002). "产品组*****
DATA: TAXKM(001). "税*****
DATA: VERSG(001). "物料统计组*****
DATA: KONDM(002). "物料定价组*****
DATA: KTGRM(002). "科目设置组*****
DATA: MTPOS(004). "项目类别组*****
DATA: BOX01(006). "每箱对应的产品数量*****
DATA: BOX02(006). "每栈板对应的产品数量*****
DATA: TRAGR(004). "运输组 *****
DATA: LADGR(004). "装载组 *****
DATA: MTVFP(002). "可用性检查 *****
DATA: DISMM(002). "MRP 类型 ****
DATA: DISGR(004). "MRP组 ****
DATA: DISPO(003). "MRP 控制者 ******
DATA: DISLS(002). "批量大小 ****
DATA: BSTRF(017). "舍入值 ****
DATA: BESKZ(001). "采购类型 * ****
DATA: SOBSL(002). "特殊采购类 ****
DATA: RGEKZ(001). "反冲 ****
DATA: LGPRO(004). "生产仓储地点 *****
DATA: LGFSB(004). "外部采购仓储地点*
DATA: DZEIT(003). "自制生产时间 ****
DATA: WEBAZ_GR(003). "收货处理时间 ****
DATA: PLIFZ(003). "计划交货时间 ****
DATA: FHORI(003). "计划边际码 ****
DATA: EISBE(017). "安全库存 ****
DATA: PERKZ(001). "期间标识 ****
DATA: KAUSF(006). "部件废品(%) ****
DATA: MTVFP1(002). "可用性检查 ****
DATA: SBDKZ(001). "独立/集中 ****
DATA: XCHPF(001). "批次管理 ****
DATA: LGPBE(010). "库存仓位 ****
DATA: INSMK(001). "过帐到检验库存***
DATA: PRFRQ(006). "检查间隔天数 ****
DATA: QMPUR(001). "QM采购激活 ****
DATA: SSQSS(008). "QM 控制码 ****
DATA: AKTIV_01(001). "激活检验类型01***
DATA: AKTIV_03(001). "激活检验类型03***
DATA: AKTIV_04(001). "激活检验类型04***
DATA: AKTIV_05(001). "激活检验类型05***
DATA: AKTIV_09(001). "激活检验类型09***
DATA: BKLAS(004). "评估类 ****
DATA: VPRSV(001). "价格控制 ****
DATA: PEINH(006). "价格单位 ****
DATA: VERPR(015). "移动平均价 ****
DATA: STPRS(015). "标准价格 ****
DATA: EKALR(001). "物料根据数量结构进行成本核算*****
DATA: HKMAT(001). "物料来源 ****
DATA: HRKFT(004). "原始组 ****
DATA: KOSGR(010). "间接费分组 ****
DATA: AWSLS(006). "差异码 ****
DATA: ZPLP1(014). "未来计划价格1****
DATA: ZPLD1(010). "未来计划价格1日期*****
DATA: ZPLP2(014). "未来计划价格2****
DATA: ZPLD2(010). "未来计划价格2日期*****
DATA: UMREZ(006). "转换比例fm
DATA: END OF ITAB.
* define internal table to store views selection for material type & plant
DATA: BEGIN OF VWS_ITAB OCCURS 0 .
DATA: MTART(004) TYPE C. " Material Type
DATA: BASIC_VIEWS(001) TYPE C. " Flag for Basic View
DATA: CLASS_VIEWS(001) TYPE C. " Flag for Classification
DATA: WERKS(004) TYPE C. " Plant Data
DATA: PROCUREMENT(001) TYPE C. " Flag for procurement Type
DATA: SALES_VIEWS(001) TYPE C. " Flag for Sales Views
DATA: PURCH_VIEWS(001) TYPE C. " Flag for Purchasing Views
DATA: MRP_VIEWS(001) TYPE C. " Flag for MRP Views
DATA: WKSCH_VIEWS(001) TYPE C. " Flag for Work Schedule
DATA: FOREC_VIEWS(001) TYPE C. " Flag for Forecasting
DATA: PRT_VIEWS(001) TYPE C. " Flag for PRT Tools
DATA: STORAGE_VIEW(001) TYPE C. " Flag for storage views
DATA: WH_VIEWS(001) TYPE C. " Flag for Warehouse Management
DATA: QA_VIEWS(001) TYPE C. " Flag for Quality Management
DATA: ACCTS_VIEWS(001) TYPE C. " Flag for Accountings
DATA: COSTS_VIEWS(001) TYPE C. " Flag for Costings
DATA: BATCH_MANAGE(001) TYPE C. " Flag for Batch Management
DATA: REMARKS(020) TYPE C. " Remarks
DATA: END OF VWS_ITAB.
CONSTANTS: XFLAG(001) TYPE C VALUE 'X'.
DATA : L_CLASS(001) TYPE C .
DATA: LINE_CNT TYPE I .
**-* *-* *-* define internal table for BAPI function call *-* *-* *-* *-* *-*
*-* Material Descriptions
DATA: MATERIALDESCRIPTION LIKE BAPI_MAKT OCCURS 0 WITH HEADER LINE .
*-* Units of Measure
DATA: UNITSOFMEASURE LIKE BAPI_MARM OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for BAPI_MARM
DATA: UNITSOFMEASUREX LIKE BAPI_MARMX OCCURS 0 WITH HEADER LINE .
*-* International Article Numbers (EANs)
DATA: INTERNATIONALARTNOS LIKE BAPI_MEAN OCCURS 0 WITH HEADER LINE .
*-* Long Texts
DATA: MATERIALLONGTEXT LIKE BAPI_MLTX OCCURS 0 WITH HEADER LINE .
*-* Tax Data
DATA: TAXCLASSIFICATIONS LIKE BAPI_MLAN OCCURS 0 WITH HEADER LINE .
*-* Substitute Structure for Return Parameter BAPIRET2
DATA: RETURNMESSAGES LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE .
*-* Production Resource Tool (PRT) Fields in the Material Master
DATA: PRTDATA LIKE BAPI_MFHM OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for BAPI_MFHM
DATA: PRTDATAX LIKE BAPI_MFHMX OCCURS 0 WITH HEADER LINE .
*-* Ref. structure for BAPI parameter ExtensionIn/ExtensionOut
DATA: EXTENSIONIN LIKE BAPIPAREX OCCURS 0 WITH HEADER LINE .
*-* Checkbox Structure for Extension In/Extension Out
DATA: EXTENSIONINX LIKE BAPIPAREXX OCCURS 0 WITH HEADER LINE .
*-* /NFM/: NF Charge Weights for Materials on Org. Level
DATA: NFMCHARGEWEIGHTS LIKE /NFM/BAPITVGW OCCURS 0 WITH HEADER LINE .
*-* /NFM/: Update Information for /NFM/BAP
DATA: NFMCHARGEWEIGHTSX LIKE /NFM/BAPITVGWX OCCURS 0 WITH HEADER LINE .
*-* /NFM/: NF Structural Weights
DATA: NFMSTRUCTURALWEIGHTS LIKE /NFM/BAPITKGW OCCURS 0 WITH HEADER LINE .
*-* /NFM/: Update Information for /NFM/BAPITKGW
DATA: NFMSTRUCTURALWEIGHTSX LIKE /NFM/BAPITKGWX OCCURS 0 WITH HEADER LINE .
*-* Returned Parameters
DATA: RETURN LIKE BAPIRET2." OCCURS 0 WITH HEADER LINE .
*
DATA: INSPECTIONCTRL LIKE BAPI1001004_QMAT OCCURS 0 WITH HEADER LINE .
*
DATA: QM_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
* define structure data for BAPIs function of material master creation
DATA: HEADDATA LIKE BAPIMATHEAD. "Header Segment with Control Information
DATA: CLIENTDATA LIKE BAPI_MARA. "Material Data at Client Level
DATA: CLIENTDATAX LIKE BAPI_MARAX. "Checkbox Structure for BAPI_MARA
DATA: PLANTDATA LIKE BAPI_MARC. "Material Data at Plant Level
DATA: PLANTDATAX LIKE BAPI_MARCX. "Checkbox Structure for BAPI_MARC
DATA: FORECASTPARAMETERS LIKE BAPI_MPOP. "Forecast Parameters
DATA: FORECASTPARAMETERSX LIKE BAPI_MPOPX. "Checkbox Structure for BAPI_MPOP
DATA: PLANNINGDATA LIKE BAPI_MPGD. "Change Document Structure for Material Master/Product Group
DATA: PLANNINGDATAX LIKE BAPI_MPGDX. "Checkbox Structure for BAPI_MPGD
DATA: STORAGELOCATIONDATA LIKE BAPI_MARD. "Material Data at Storage Location Level
DATA: STORAGELOCATIONDATAX LIKE BAPI_MARDX. "Checkbox Structure for BAPI_MARD
DATA: VALUATIONDATA LIKE BAPI_MBEW. "Valuation Data
DATA: VALUATIONDATAX LIKE BAPI_MBEWX. "Checkbox Structure for BAPI_MBEW
DATA: WAREHOUSENUMBERDATA LIKE BAPI_MLGN. "Warehouse Number Data
DATA: WAREHOUSENUMBERDATAX LIKE BAPI_MLGNX. "Checkbox Structure for BAPI_MLGN
DATA: SALESDATA LIKE BAPI_MVKE. "Sales Data
DATA: SALESDATAX LIKE BAPI_MVKEX. "Checkbox Structure for BAPI_MVKE
DATA: STORAGETYPEDATA LIKE BAPI_MLGT. "Storage Type Data
DATA: STORAGETYPEDATAX LIKE BAPI_MLGTX. "Checkbox Structure for BAPI_MLGT
*Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
*Messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* define internal table to store uploading result ...
DATA: BEGIN OF I_RESULT OCCURS 0.
DATA: MATNR LIKE ITAB-MATNR.
DATA: WERKS LIKE ITAB-WERKS.
DATA: MTART LIKE ITAB-MTART.
DATA: MAKTX LIKE ITAB-MAKTX.
DATA: MEINS LIKE ITAB-MEINS.
INCLUDE STRUCTURE RETURNMESSAGES.
DATA: QMVIEWS(001).
DATA: MESSAGE01 LIKE RETURNMESSAGES-MESSAGE.
DATA: MESSAGE02 LIKE RETURNMESSAGES-MESSAGE.
DATA: SELK(001) TYPE C .
DATA: END OF I_RESULT.
DATA: BEGIN OF I_ERROR OCCURS 0.
DATA: MATNR LIKE ITAB-MATNR.
DATA: WERKS LIKE ITAB-WERKS.
DATA: MTART LIKE ITAB-MTART.
DATA: MEINS LIKE ITAB-MEINS.
DATA: END OF I_ERROR.
*-* define parameter to store line count
DATA: LINE TYPE I.
DATA: L_CNT TYPE I.
DATA: INT_CNT TYPE I .
DATA: GIT_BAPI1003 LIKE BAPI1003_ALLOC_VALUES_NUM OCCURS 0 WITH HEADER LINE,
GIT_VALUES_CHAR LIKE BAPI1003_ALLOC_VALUES_CHAR OCCURS 0 WITH HEADER LINE,
GIT_VALUES_CURR LIKE BAPI1003_ALLOC_VALUES_CURR OCCURS 0 WITH HEADER LINE,
GIT_VALUES_LIST LIKE BAPI1003_ALLOC_LIST OCCURS 0 WITH HEADER LINE,
GIT_BAPIRET2 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
LS_BAPIRET2 TYPE BAPIRET2.
DATA: GS_BAPI1003 TYPE BAPI1003_ALLOC_VALUES_NUM,
GS_VALUES_CHAR TYPE BAPI1003_ALLOC_VALUES_CHAR,
GS_VALUES_CURR TYPE BAPI1003_ALLOC_VALUES_CURR,
GC_FLAG_X(1) TYPE C VALUE 'X'.
DATA: G_MATNR_CHK LIKE ITAB-MATNR .
DATA: M_MATNR_CHK LIKE ITAB-MATNR .
DATA: S_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
*----------------------------------------------------------------------*
* TOP-OF-PAGE.
*----------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM COLUMN_HEADER.
*----------------------------------------------------------------------*
* initialization. *
*----------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB, VWS_ITAB, BDCDATA, MESSTAB, I_RESULT, I_ERROR.
CLEAR : ITAB, VWS_ITAB, BDCDATA, MESSTAB, I_RESULT, I_ERROR.
IF SY-UNAME CA 'USER'.
* set default value for data migration => Background Job
P_BKJOB = 'X'.
ENDIF .
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BASIC.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_BASIC
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
*--------------------------------------------------------------------*
* at selection-screen output
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON P_MMAM .
IF NOT P_MMAM IS INITIAL .
MOVE XFLAG TO P_MARC.
MOVE XFLAG TO P_QMDATA.
ENDIF.
*--------------------------------------------------------------------*
* at selection-screen output
*--------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT .
* PERFORM MODIFY_SCREEN .
*----------------------------------------------------------------------*
* Start-of-selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM DETERMINE_MATERIAL_VIEWS .
PERFORM UPLOAD_DATA.
SORT ITAB BY MATNR WERKS DESCENDING.
CLEAR: LINE_CNT .
DESCRIBE TABLE ITAB LINES LINE_CNT .
LOOP AT ITAB .
TRANSLATE ITAB-MATNR TO UPPER CASE .
TRANSLATE ITAB-GEWEI TO UPPER CASE .
ITAB-MWERT_DESC11 = ITAB-MWERT_DESC1+30(30).
ITAB-MWERT_DESC12 = ITAB-MWERT_DESC1+60(30).
ITAB-MWERT_DESC1 = ITAB-MWERT_DESC1+0(30).
ITAB-MWERT_DESC21 = ITAB-MWERT_DESC2+30(30).
ITAB-MWERT_DESC22 = ITAB-MWERT_DESC2+60(30).
ITAB-MWERT_DESC2 = ITAB-MWERT_DESC2+0(30).
IF NOT ITAB-MATNR IS INITIAL .
PERFORM FORMAT_ALPHA_OUTPUT CHANGING ITAB-MATNR .
WRITE:/ ITAB-MATNR UNDER TEXT-C01,
ITAB-MAKTX UNDER TEXT-C06,
ITAB-NTGEW UNDER TEXT-C08,
ITAB-MTART UNDER TEXT-C03,
ITAB-WERKS UNDER TEXT-C02,
ITAB-VKORG UNDER TEXT-C09,
ITAB-LGPRO UNDER TEXT-C10,
ITAB-LGFSB UNDER TEXT-C11,
ITAB-LGORT UNDER TEXT-C04,
ITAB-BESKZ UNDER TEXT-C05,
ITAB-SOBSL UNDER TEXT-C07.
IF ITAB-WERKS = '1005' OR ITAB-WERKS = '1006'.
MOVE 'F' TO ITAB-BESKZ.
ENDIF .
IF ITAB-BESKZ IS INITIAL AND ( ITAB-MTART EQ 'ROH' OR
ITAB-MTART EQ 'ROH1' OR
ITAB-MTART EQ 'ROH2' OR
ITAB-MTART EQ 'ROH3' OR
ITAB-MTART EQ 'UNBW' OR
ITAB-MTART EQ 'LEIH' ).
MOVE 'F' TO ITAB-BESKZ.
ENDIF .
* Check if MRP Controller is fit for Plant and Material Type or not
IF ITAB-WERKS = '2001' OR ITAB-WERKS = '2003' OR ITAB-WERKS = '2004'.
IF ITAB-MTART EQ 'ROH'.
IF ITAB-DISPO+0(1) NE 'M'.
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF.
ENDIF.
ENDIF .
IF ITAB-WERKS = '2001' OR ITAB-WERKS = '2003' OR ITAB-WERKS = '2004'.
IF ITAB-MTART EQ 'HALB'.
IF ITAB-DISPO+0(1) EQ 'M'.
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF.
ENDIF.
ENDIF .
IF ITAB-BRGEW = 'G' OR ITAB-BRGEW = 'g' .
MOVE-CORRESPONDING ITAB TO I_ERROR.
COLLECT: I_ERROR.
CLEAR : I_ERROR.
ENDIF .
MODIFY ITAB .
ELSE.
DELETE ITAB .
ENDIF .
ENDLOOP .
*----------------------------------------------------------------------*
* End-of-selection *
*----------------------------------------------------------------------*
END-OF-SELECTION.
IF I_ERROR[] IS INITIAL.
SET PF-STATUS 'P1100'.
ELSE.
WRITE:/ '请检查以下物料各个字段值:'.
ULINE .
LOOP AT I_ERROR .
WRITE: / I_ERROR-MATNR COLOR COL_NEGATIVE,
I_ERROR-WERKS COLOR COL_NEGATIVE.
ENDLOOP .
ENDIF .
WRITE:/ TEXT-T00, LINE_CNT COLOR COL_KEY.
*----------------------------------------------------------------------*
* at user-command *
*----------------------------------------------------------------------*
AT USER-COMMAND .
CASE SY-UCOMM .
WHEN 'MDRCRT' .
REFRESH: I_RESULT .
CLEAR : I_RESULT .
PERFORM MATERIAL_MAINTAIN .
PERFORM PREPARE_ALV_FIELDS.
PERFORM DISPLAY_ALV_RESULT.
ENDCASE .
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPLOAD_DATA .
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = P_FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF ITAB[] IS INITIAL.
MESSAGE '导入数据为空,请确认后重新导入! ' TYPE 'I'.
EXIT.
ENDIF.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form MATERIAL_MAINTAIN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MATERIAL_MAINTAIN .
DATA: L_MARA TYPE I .
DATA: L_QMATV LIKE MARC-QMATV .
DATA: L_MARC(001).
DATA: N_MATNR_CHK LIKE ITAB-MATNR .
DATA: O_MATNR_CHK LIKE ITAB-MATNR .
CLEAR: N_MATNR_CHK, O_MATNR_CHK.
SORT VWS_ITAB BY MTART.
IF NOT P_BKJOB IS INITIAL .
PERFORM OPEN_GROUP .
ENDIF .
LOOP AT ITAB .
CLEAR: L_CLASS, L_QMATV, L_MARC, L_MARA.
* move-corresponding data to header data => HEADDATA
CLEAR: HEADDATA,
CLIENTDATA, CLIENTDATA,
PLANTDATA, PLANTDATAX,
FORECASTPARAMETERS, FORECASTPARAMETERSX,
PLANNINGDATA, PLANNINGDATAX,
STORAGELOCATIONDATA, STORAGELOCATIONDATAX,
VALUATIONDATA, VALUATIONDATAX,
WAREHOUSENUMBERDATA, WAREHOUSENUMBERDATAX,
SALESDATA, SALESDATAX,
STORAGETYPEDATA, STORAGETYPEDATAX.
* get customizing views which need to be selected
CLEAR: VWS_ITAB .
READ TABLE VWS_ITAB WITH KEY MTART = ITAB-MTART
WERKS = ITAB-WERKS
PROCUREMENT = ITAB-BESKZ .
***** Check Material Plant Data Maintain Or Not
CLEAR: MARC .
SELECT SINGLE * FROM MARC CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR
AND WERKS EQ ITAB-WERKS .
IF SY-SUBRC EQ 0 .
IF ITAB-WERKS EQ '2001' OR
ITAB-WERKS EQ '2003' OR
ITAB-WERKS EQ '2004' .
MOVE MARC-QMATV TO L_QMATV .
ELSE .
MOVE XFLAG TO L_QMATV.
* CLEAR: L_QMATV.
ENDIF .
MOVE XFLAG TO L_MARC .
ELSE.
IF ITAB-WERKS EQ '1005' OR ITAB-WERKS EQ '1006'.
MOVE XFLAG TO L_QMATV.
ELSE.
CLEAR: L_QMATV.
ENDIF.
CLEAR: L_MARC .
ENDIF .
*** Update QM Data or not
IF NOT P_QMDATA IS INITIAL .
IF ITAB-WERKS EQ '1005' OR ITAB-WERKS EQ '1006'.
MOVE XFLAG TO L_QMATV.
ELSE.
CLEAR: L_QMATV.
ENDIF.
ENDIF .
*** Update Plant Data or not
IF NOT P_MARC IS INITIAL .
CLEAR: L_MARC .
ENDIF .
IF L_MARC IS INITIAL.
IF NOT P_MMAM IS INITIAL .
CLEAR: MARA .
SELECT SINGLE * FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR .
IF SY-SUBRC = 0.
IF ITAB-MTART <> MARA-MTART .
PERFORM MATERIAL_TYPE_CHANGE .
ENDIF .
ENDIF .
ENDIF .
* Conver value to uper case
TRANSLATE ITAB-MEINS TO UPPER CASE.
IF ITAB-MEINS EQ 'G' OR ITAB-MEINS EQ 'g'.
ITAB-MEINS = 'g'.
ELSE.
TRANSLATE ITAB-MEINS TO UPPER CASE.
ENDIF .
TRANSLATE ITAB-GEWEI TO UPPER CASE.
PERFORM MAP_MATERIAL_DESCRIPTION .
PERFORM MAP_MATERIAL_MASTER_DATA .
* determine & select views for material maintain
CASE VWS_ITAB-BASIC_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-BASIC_VIEW. "Basic Views
ENDCASE.
CASE VWS_ITAB-SALES_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'. " If phantom item, not required for Accts & Costs % QA Views
** assign plant data & ** assign update information
IF NOT ITAB-VKORG IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-SALES_VIEW. "Sales Views
PERFORM MAP_SALES_DATA .
ENDIF .
ENDIF.
ENDCASE .
CASE VWS_ITAB-PURCH_VIEWS.
WHEN 'X'.
** assign plant data & ** assign update information
IF ITAB-SOBSL NE '50'.
IF NOT ITAB-EKGRP IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-PURCHASE_VIEW."Purchasing View
PERFORM MAP_PURCHASING_DATA .
ENDIF .
ENDIF .
ENDCASE .
************ MRP VIEWS ****************
CASE VWS_ITAB-MRP_VIEWS.
WHEN 'X'.
** assign plant data & ** assign update information
IF NOT ITAB-DISMM IS INITIAL .
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
MOVE XFLAG TO HEADDATA-MRP_VIEW. "MRP Views
PERFORM MAP_MRP_DATA .
ENDIF .
ENDCASE .
************ FORECASTING VIEWS ****************
CASE VWS_ITAB-FOREC_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-FORECAST_VIEW."Forecasting View
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDCASE .
************ WORK SCHEDULING VIEWS ****************
CASE VWS_ITAB-WKSCH_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'.
MOVE XFLAG TO HEADDATA-WORK_SCHED_VIEW."Work Scheduling
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDIF .
ENDCASE .
************ PRT VIEWS ****************
CASE VWS_ITAB-PRT_VIEWS.
WHEN 'X'. MOVE XFLAG TO HEADDATA-PRT_VIEW. "PRT Views
ENDCASE .
************ STORAGE VIEWS ****************
CASE VWS_ITAB-STORAGE_VIEW.
WHEN 'X'.
** assign plant data & ** assign update information
IF ITAB-SOBSL NE '50'.
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_STORAGE_DATA .
ENDIF .
WHEN SPACE.
IF ITAB-MTART = 'ABF'.
IF NOT ITAB-LGORT IS INITIAL OR
NOT ITAB-LGPRO IS INITIAL OR
NOT ITAB-LGFSB IS INITIAL.
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_STORAGE_DATA .
ENDIF .
ENDIF .
ENDCASE .
************ WAREHOUSE MANAGEMENT VIEWS ****************
CASE VWS_ITAB-WH_VIEWS.
WHEN 'X'.
MOVE XFLAG TO HEADDATA-WAREHOUSE_VIEW. "
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDCASE .
************ QA VIEWS ****************
CASE VWS_ITAB-QA_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50'.
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
PERFORM MAP_QA_DATA.
ENDIF.
ENDCASE .
************ ACCOUNTING & COSTINGS VIEWS ****************
CASE VWS_ITAB-ACCTS_VIEWS.
WHEN 'X'.
IF ITAB-SOBSL NE '50' AND ITAB-MTART NE 'ABF'.
IF NOT ITAB-BKLAS IS INITIAL .
MOVE XFLAG TO HEADDATA-ACCOUNT_VIEW. "Accounting Data
MOVE XFLAG TO HEADDATA-COST_VIEW. "Costing Data
PERFORM MAP_FICO_DATA .
ENDIF .
** assign plant data & ** assign update information
MOVE ITAB-WERKS TO PLANTDATA-PLANT .
MOVE ITAB-WERKS TO PLANTDATAX-PLANT .
ENDIF .
ENDCASE .
************ BATCH MANAGEMENT ****************
CASE VWS_ITAB-BATCH_MANAGE.
WHEN 'X'.
MOVE ITAB-XCHPF TO CLIENTDATA-BATCH_MGMT . "Batch management requirement indicator
MOVE XFLAG TO CLIENTDATAX-BATCH_MGMT . "Batch management requirement indicator
ENDCASE.
CLEAR : RETURN.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = HEADDATA
CLIENTDATA = CLIENTDATA
CLIENTDATAX = CLIENTDATAX
PLANTDATA = PLANTDATA
PLANTDATAX = PLANTDATAX
FORECASTPARAMETERS = FORECASTPARAMETERS
FORECASTPARAMETERSX = FORECASTPARAMETERSX
PLANNINGDATA = PLANNINGDATA
PLANNINGDATAX = PLANNINGDATAX
STORAGELOCATIONDATA = STORAGELOCATIONDATA
STORAGELOCATIONDATAX = STORAGELOCATIONDATAX
VALUATIONDATA = VALUATIONDATA
VALUATIONDATAX = VALUATIONDATAX
WAREHOUSENUMBERDATA = WAREHOUSENUMBERDATA
WAREHOUSENUMBERDATAX = WAREHOUSENUMBERDATAX
SALESDATA = SALESDATA
SALESDATAX = SALESDATAX
STORAGETYPEDATA = STORAGETYPEDATA
STORAGETYPEDATAX = STORAGETYPEDATAX
FLAG_ONLINE = SPACE
FLAG_CAD_CALL = SPACE
NO_DEQUEUE = SPACE
NO_ROLLBACK_WORK = SPACE
IMPORTING
RETURN = RETURN
TABLES
MATERIALDESCRIPTION = MATERIALDESCRIPTION
UNITSOFMEASURE = UNITSOFMEASURE
UNITSOFMEASUREX = UNITSOFMEASUREX
INTERNATIONALARTNOS = INTERNATIONALARTNOS
MATERIALLONGTEXT = MATERIALLONGTEXT
TAXCLASSIFICATIONS = TAXCLASSIFICATIONS
RETURNMESSAGES = RETURNMESSAGES
PRTDATA = PRTDATA
PRTDATAX = PRTDATAX
EXTENSIONIN = EXTENSIONIN
EXTENSIONINX = EXTENSIONINX.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
COMMIT WORK.
CALL FUNCTION 'BUFFER_REFRESH_ALL'.
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE-CORRESPONDING RETURN TO I_RESULT .
ENDIF .
CASE VWS_ITAB-QA_VIEWS.
WHEN 'X'.
IF L_QMATV IS INITIAL AND ITAB-SOBSL NE '50' AND ITAB-MTART NE 'ABF'.
REFRESH: INSPECTIONCTRL, QM_RETURN.
CLEAR : INSPECTIONCTRL, QM_RETURN.
IF NOT ITAB-AKTIV_01 IS INITIAL.
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '01' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST. "
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN."
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC."
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE."
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_03 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '03' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_04 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '04' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN."
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC."
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE."
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED."
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_05 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '05' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
* MOVE SPACE TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
* MOVE '1' TO INSPECTIONCTRL-CONTR_INSP_LOT_CREATE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF NOT ITAB-AKTIV_09 IS INITIAL.
MOVE '004' TO INSPECTIONCTRL-FUNCTION.
MOVE '09' TO INSPECTIONCTRL-INSPTYPE.
MOVE ITAB-MATNR TO INSPECTIONCTRL-MATERIAL.
MOVE ITAB-WERKS TO INSPECTIONCTRL-PLANT.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_WITH_TSK_LIST.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTO_ASSIGN.
MOVE XFLAG TO INSPECTIONCTRL-IND_INSP_BY_CHARAC.
MOVE XFLAG TO INSPECTIONCTRL-IND_SINGLE_UNITS_POSSIBLE.
MOVE XFLAG TO INSPECTIONCTRL-IND_SKIPS_ALLOWED.
MOVE XFLAG TO INSPECTIONCTRL-IND_AUTOMATIC_UD.
MOVE '06' TO INSPECTIONCTRL-QUAL_SCORE_PROCEDURE.
IF ITAB-INSMK EQ XFLAG.
MOVE XFLAG TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ELSE.
MOVE SPACE TO INSPECTIONCTRL-IND_POST_TO_INSP_STOCK.
ENDIF .
MOVE XFLAG TO INSPECTIONCTRL-IND_INSPTYPE_MAT_ACTIVE.
APPEND INSPECTIONCTRL.
CLEAR INSPECTIONCTRL.
ENDIF .
IF ITAB-AKTIV_01 IS INITIAL AND ITAB-AKTIV_03 IS INITIAL
AND ITAB-AKTIV_04 IS INITIAL AND ITAB-AKTIV_05 IS INITIAL
AND ITAB-AKTIV_09 IS INITIAL.
MOVE XFLAG TO L_QMATV .
ELSE.
REFRESH: QM_RETURN.
CLEAR : QM_RETURN.
CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA'
TABLES
RETURN = QM_RETURN
INSPECTIONCTRL = INSPECTIONCTRL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
COMMIT WORK.
CALL FUNCTION 'BUFFER_REFRESH_ALL'.
MOVE XFLAG TO I_RESULT-QMVIEWS.
IF QM_RETURN[] IS INITIAL .
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE TEXT-S08 TO I_RESULT-MESSAGE01 .
ELSE .
LOOP AT QM_RETURN .
MOVE-CORRESPONDING ITAB TO I_RESULT.
MOVE QM_RETURN-MESSAGE TO I_RESULT-MESSAGE01 .
ENDLOOP .
ENDIF .
ENDIF .
ENDIF .
ENDCASE .
IF L_MARC IS INITIAL .
CLEAR: I_RESULT-MESSAGE02 .
IF NOT I_RESULT-MATNR IS INITIAL.
CLEAR: N_MATNR_CHK .
MOVE ITAB-MATNR TO N_MATNR_CHK .
IF N_MATNR_CHK NE O_MATNR_CHK .
PERFORM MAINTAIN_CLASSIFICATION .
* PERFORM MAINTAIN_CLASSIFICATION_BAPI .
MOVE N_MATNR_CHK TO O_MATNR_CHK .
ELSE.
IF P_BKJOB IS INITIAL .
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
APPEND I_RESULT .
CLEAR I_RESULT .
ENDIF .
ELSE.
CLEAR: I_RESULT-MESSAGE02 .
IF L_QMATV IS INITIAL .
IF NOT I_RESULT-MATNR IS INITIAL.
CLEAR: N_MATNR_CHK .
MOVE ITAB-MATNR TO N_MATNR_CHK .
IF N_MATNR_CHK NE O_MATNR_CHK .
PERFORM MAINTAIN_CLASSIFICATION .
* PERFORM MAINTAIN_CLASSIFICATION_BAPI .
MOVE N_MATNR_CHK TO O_MATNR_CHK .
ELSE.
IF P_BKJOB IS INITIAL .
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
APPEND I_RESULT .
CLEAR I_RESULT .
ENDIF .
ENDIF .
ENDIF .
ENDLOOP .
IF NOT P_BKJOB IS INITIAL .
PERFORM CLOSE_GROUP .
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDIF .
ENDFORM. " MATERIAL_MAINTAIN
*&---------------------------------------------------------------------*
*& Form DETERMINE_MATERIAL_VIEWS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DETERMINE_MATERIAL_VIEWS .
REFRESH: VWS_ITAB . CLEAR: VWS_ITAB .
REFRESH: INT_TAB .
CLEAR : INT_TAB .
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_BASIC
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 18
I_END_ROW = 9999
TABLES
INTERN = INT_TAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
SORT INT_TAB BY ROW COL.
LOOP AT INT_TAB .
AT NEW ROW.
CLEAR: VWS_ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO VWS_ITAB-MTART.
TRANSLATE VWS_ITAB-MTART TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO VWS_ITAB-BASIC_VIEWS.
TRANSLATE VWS_ITAB-BASIC_VIEWS TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO VWS_ITAB-CLASS_VIEWS.
TRANSLATE VWS_ITAB-CLASS_VIEWS TO UPPER CASE.
WHEN 4.
MOVE INT_TAB-VALUE TO VWS_ITAB-WERKS.
TRANSLATE VWS_ITAB-WERKS TO UPPER CASE.
WHEN 5.
MOVE INT_TAB-VALUE TO VWS_ITAB-PROCUREMENT.
TRANSLATE VWS_ITAB-PROCUREMENT TO UPPER CASE.
WHEN 6.
MOVE INT_TAB-VALUE TO VWS_ITAB-SALES_VIEWS.
TRANSLATE VWS_ITAB-SALES_VIEWS TO UPPER CASE.
WHEN 7.
MOVE INT_TAB-VALUE TO VWS_ITAB-PURCH_VIEWS.
TRANSLATE VWS_ITAB-PURCH_VIEWS TO UPPER CASE.
WHEN 8.
MOVE INT_TAB-VALUE TO VWS_ITAB-MRP_VIEWS.
TRANSLATE VWS_ITAB-MRP_VIEWS TO UPPER CASE.
WHEN 9.
MOVE INT_TAB-VALUE TO VWS_ITAB-WKSCH_VIEWS.
TRANSLATE VWS_ITAB-WKSCH_VIEWS TO UPPER CASE.
* WHEN 10.
* MOVE INT_TAB-VALUE TO VWS_ITAB-FOREC_VIEWS.
* TRANSLATE VWS_ITAB-FOREC_VIEWS TO UPPER CASE.
WHEN 10.
MOVE INT_TAB-VALUE TO VWS_ITAB-QA_VIEWS.
TRANSLATE VWS_ITAB-QA_VIEWS TO UPPER CASE.
WHEN 11.
MOVE INT_TAB-VALUE TO VWS_ITAB-STORAGE_VIEW.
TRANSLATE VWS_ITAB-STORAGE_VIEW TO UPPER CASE.
WHEN 12.
MOVE INT_TAB-VALUE TO VWS_ITAB-ACCTS_VIEWS.
TRANSLATE VWS_ITAB-ACCTS_VIEWS TO UPPER CASE.
WHEN 13.
MOVE INT_TAB-VALUE TO VWS_ITAB-COSTS_VIEWS.
TRANSLATE VWS_ITAB-COSTS_VIEWS TO UPPER CASE.
WHEN 14.
MOVE INT_TAB-VALUE TO VWS_ITAB-BATCH_MANAGE.
TRANSLATE VWS_ITAB-BATCH_MANAGE TO UPPER CASE.
WHEN 15.
MOVE INT_TAB-VALUE TO VWS_ITAB-REMARKS.
TRANSLATE VWS_ITAB-REMARKS TO UPPER CASE.
ENDCASE .
AT END OF ROW.
IF NOT VWS_ITAB-MTART IS INITIAL .
APPEND VWS_ITAB.
CLEAR VWS_ITAB .
ENDIF .
ENDAT.
ENDLOOP .
ENDFORM. " DETERMINE_MATERIAL_VIEWS
*&---------------------------------------------------------------------*
*& Form MAP_MATERIAL_DESCRIPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MATERIAL_DESCRIPTION .
*append data to internal table
**material description
REFRESH: MATERIALDESCRIPTION .
CLEAR : MATERIALDESCRIPTION .
MOVE '1' TO MATERIALDESCRIPTION-LANGU .
MOVE ITAB-MAKTX TO MATERIALDESCRIPTION-MATL_DESC.
APPEND: MATERIALDESCRIPTION . CLEAR : MATERIALDESCRIPTION .
MOVE 'E' TO MATERIALDESCRIPTION-LANGU .
MOVE ITAB-MAKTX TO MATERIALDESCRIPTION-MATL_DESC.
APPEND: MATERIALDESCRIPTION .
CLEAR : MATERIALDESCRIPTION .
**unit of measurement
REFRESH: UNITSOFMEASURE, UNITSOFMEASUREX .
CLEAR : UNITSOFMEASURE, UNITSOFMEASUREX .
IF NOT ITAB-UMREN IS INITIAL AND NOT ITAB-UMREZ IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-UMREN.
IF SY-SUBRC = 0.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
ELSE.
MOVE ITAB-UMREN TO UNITSOFMEASURE-ALT_UNIT .
ENDIF .
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
ENDIF .
IF NOT ITAB-BOX01 IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ 'CAR'.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BOX01 TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BOX02 IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ 'PAL'.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BOX02 TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BSTME IS INITIAL AND NOT ITAB-UMREN IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-BSTME.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-UMREN TO UNITSOFMEASURE-NUMERATOR.
MOVE 1 TO UNITSOFMEASURE-DENOMINATR.
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-NUMERATOR.
MOVE XFLAG TO UNITSOFMEASUREX-DENOMINATR.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
IF NOT ITAB-BRGEW IS INITIAL.
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-MEINS.
MOVE T006A-MSEHI TO UNITSOFMEASURE-ALT_UNIT .
MOVE ITAB-BRGEW TO UNITSOFMEASURE-GROSS_WT .
MOVE ITAB-GEWEI TO UNITSOFMEASURE-UNIT_OF_WT .
MOVE T006A-MSEHI TO UNITSOFMEASUREX-ALT_UNIT .
MOVE XFLAG TO UNITSOFMEASUREX-GROSS_WT.
MOVE XFLAG TO UNITSOFMEASUREX-UNIT_OF_WT.
APPEND: UNITSOFMEASURE . CLEAR : UNITSOFMEASURE .
APPEND: UNITSOFMEASUREX. CLEAR : UNITSOFMEASUREX.
ENDIF .
* ENDIF .
ENDFORM. " MAP_MATERIAL_DESCRIPTION
*&---------------------------------------------------------------------*
*& Form MAP_MATERIAL_MASTER_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MATERIAL_MASTER_DATA .
CLEAR: T006A.
SELECT SINGLE * FROM T006A CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND SPRAS EQ '1'
AND MSEH3 EQ ITAB-MEINS.
* assign field vaues to header data
MOVE ITAB-MATNR TO HEADDATA-MATERIAL. "Material Number
MOVE ITAB-MBRSH TO HEADDATA-IND_SECTOR. "Industry sector
MOVE ITAB-MTART TO HEADDATA-MATL_TYPE. "Material Type
** assign client level data
MOVE ITAB-MSTAE TO CLIENTDATA-PUR_STATUS. "Cross-Plant Material Status
MOVE XFLAG TO CLIENTDATAX-PUR_STATUS. "Cross-Plant Material Status
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM. "Base Unit of Measure
MOVE XFLAG TO CLIENTDATAX-BASE_UOM. "Base Unit of Measure
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM_ISO. "Base Unit of Measure (ISO)
MOVE XFLAG TO CLIENTDATAX-BASE_UOM_ISO."Base Unit of Measure (ISO)
MOVE ITAB-MATKL TO CLIENTDATA-MATL_GROUP. "Material Group
MOVE XFLAG TO CLIENTDATAX-MATL_GROUP. "Material Group
MOVE SPACE TO CLIENTDATA-DEL_FLAG. "Flag Material for Deletion at Client Level
MOVE XFLAG TO CLIENTDATAX-DEL_FLAG. "Flag Material for Deletion at Client Level
MOVE ITAB-MATKL TO CLIENTDATA-MATL_GROUP. "Material Group
MOVE XFLAG TO CLIENTDATAX-MATL_GROUP. "Material Group
MOVE ITAB-BISMT TO CLIENTDATA-OLD_MAT_NO. "Old material number
MOVE XFLAG TO CLIENTDATAX-OLD_MAT_NO. "Old material number
MOVE XFLAG TO CLIENTDATA-MATERIAL_FIXED."Material Blocked Indicator
MOVE XFLAG TO CLIENTDATAX-MATERIAL_FIXED."Material Blocked Indicator
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM. "Base Unit of Measure
MOVE XFLAG TO CLIENTDATAX-BASE_UOM. "Base Unit of Measure
MOVE T006A-MSEHI TO CLIENTDATA-BASE_UOM_ISO. "Base Unit of Measure (ISO)
MOVE XFLAG TO CLIENTDATAX-BASE_UOM_ISO."Base Unit of Measure (ISO)
MOVE ITAB-BSTME TO CLIENTDATA-PO_UNIT. "Purchase Order Unit of Measure
MOVE XFLAG TO CLIENTDATAX-PO_UNIT. "Purchase Order Unit of Measure
MOVE ITAB-GEWEI TO CLIENTDATA-UNIT_OF_WT. "Weight Unit
MOVE XFLAG TO CLIENTDATAX-UNIT_OF_WT. "Weight Unit
MOVE ITAB-NTGEW TO CLIENTDATA-NET_WEIGHT. "Net Weight
MOVE XFLAG TO CLIENTDATAX-NET_WEIGHT. "Net Weight
MOVE ITAB-ZEINR TO CLIENTDATA-DOCUMENT. "Document number (without document management system)
MOVE XFLAG TO CLIENTDATAX-DOCUMENT. "Document number (without document management system)
MOVE ITAB-SPART TO CLIENTDATA-DIVISION. "Division
MOVE XFLAG TO CLIENTDATAX-DIVISION. "Division
ENDFORM. " MAP_MATERIAL_MASTER_DATA
*&---------------------------------------------------------------------*
*& Form MAP_SALES_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_SALES_DATA .
MOVE ITAB-TRAGR TO CLIENTDATA-TRANS_GRP. "Transportation Group
MOVE XFLAG TO CLIENTDATAX-TRANS_GRP."Transportation Group
MOVE ITAB-LADGR TO PLANTDATA-LOADINGGRP. "Loading Group
MOVE XFLAG TO PLANTDATAX-LOADINGGRP."Loading Group
MOVE ITAB-VKORG TO SALESDATA-SALES_ORG . "Sales Organization
MOVE ITAB-VKORG TO SALESDATAX-SALES_ORG ."Sales Organization
MOVE ITAB-VTWEG TO SALESDATA-DISTR_CHAN. "Distribution Channel
MOVE ITAB-VTWEG TO SALESDATAX-DISTR_CHAN."Distribution Channel
MOVE ITAB-DWERK TO SALESDATA-DELYG_PLNT. "Delivering Plant
MOVE XFLAG TO SALESDATAX-DELYG_PLNT."Delivering Plant
MOVE ITAB-VERSG TO SALESDATA-MATL_STATS. "Material statistics group
MOVE XFLAG TO SALESDATAX-MATL_STATS."Material statistics group
MOVE ITAB-KONDM TO SALESDATA-MAT_PR_GRP. "Material Pricing Group
MOVE XFLAG TO SALESDATAX-MAT_PR_GRP."Material Pricing Group
MOVE ITAB-KTGRM TO SALESDATA-ACCT_ASSGT. "Account assignment group for this material
MOVE XFLAG TO SALESDATAX-ACCT_ASSGT."Account assignment group for this material
MOVE ITAB-MTPOS TO SALESDATA-ITEM_CAT . "Item category group from material master
MOVE XFLAG TO SALESDATAX-ITEM_CAT ."Item category group from material master
MOVE '02' TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK ."Checking Group for Availability Check
** Tax for Sales Data
REFRESH: TAXCLASSIFICATIONS . CLEAR: TAXCLASSIFICATIONS.
CASE ITAB-WERKS .
WHEN '1005' OR '1006'.
MOVE 'HK' TO TAXCLASSIFICATIONS-DEPCOUNTRY.
MOVE 'HOK' TO TAXCLASSIFICATIONS-DEPCOUNTRY_ISO.
MOVE 'MWST' TO TAXCLASSIFICATIONS-TAX_TYPE_1.
MOVE ITAB-TAXKM TO TAXCLASSIFICATIONS-TAXCLASS_1.
APPEND: TAXCLASSIFICATIONS .
CLEAR : TAXCLASSIFICATIONS.
WHEN '2001' OR '2003' OR '2004'.
MOVE 'CN' TO TAXCLASSIFICATIONS-DEPCOUNTRY.
MOVE 'CHI' TO TAXCLASSIFICATIONS-DEPCOUNTRY_ISO.
MOVE 'MWST' TO TAXCLASSIFICATIONS-TAX_TYPE_1.
MOVE ITAB-TAXKM TO TAXCLASSIFICATIONS-TAXCLASS_1.
APPEND: TAXCLASSIFICATIONS .
CLEAR : TAXCLASSIFICATIONS.
ENDCASE .
ENDFORM. " MAP_SALES_DATA
*&---------------------------------------------------------------------*
*& Form MAP_PURCHASING_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_PURCHASING_DATA .
MOVE ITAB-EKGRP TO PLANTDATA-PUR_GROUP . "Purchasing Group
MOVE XFLAG TO PLANTDATAX-PUR_GROUP ."Purchasing Group
MOVE ITAB-USEQU TO PLANTDATA-QUOTAUSAGE ."Quota arrangement usage
MOVE XFLAG TO PLANTDATAX-QUOTAUSAGE."Quota arrangement usage
MOVE ITAB-WEBAZ TO PLANTDATA-GR_PR_TIME ."Goods Receipt Processing Time in Days
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME."Goods Receipt Processing Time in Days
MOVE ITAB-XCHPF TO PLANTDATA-BATCH_MGMT ."Batch management requirement indicator
MOVE XFLAG TO PLANTDATAX-BATCH_MGMT."Batch management requirement indicator
MOVE ITAB-KORDB TO PLANTDATA-SOURCELIST ."Indicator: Source list requirement
MOVE XFLAG TO PLANTDATAX-SOURCELIST."Indicator: Source list requirement
MOVE ITAB-KZKRI TO PLANTDATA-CRIT_PART ."Indicator: Critical part
MOVE XFLAG TO PLANTDATAX-CRIT_PART ."Indicator: Critical part
ENDFORM. " MAP_PURCHASING_DATA
*&---------------------------------------------------------------------*
*& Form MAP_MRP_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_MRP_DATA .
*-MRP VIEW 01
MOVE ITAB-EKGRP TO PLANTDATA-PUR_GROUP . "Purchasing Group
MOVE XFLAG TO PLANTDATAX-PUR_GROUP . "Purchasing Group
MOVE ITAB-DISGR TO PLANTDATA-MRP_GROUP . "MRP Group
MOVE XFLAG TO PLANTDATAX-MRP_GROUP . "MRP Group
MOVE ITAB-DISMM TO PLANTDATA-MRP_TYPE . "MRP Type
MOVE XFLAG TO PLANTDATAX-MRP_TYPE . "MRP Type
MOVE ITAB-DISPO TO PLANTDATA-MRP_CTRLER . "MRP Controller (Materials Planner)
MOVE XFLAG TO PLANTDATAX-MRP_CTRLER. "MRP Controller (Materials Planner)
MOVE ITAB-DISLS TO PLANTDATA-LOTSIZEKEY . "Lot size (materials planning)
MOVE XFLAG TO PLANTDATAX-LOTSIZEKEY. "Lot size (materials planning)
MOVE ITAB-BSTRF TO PLANTDATA-ROUND_VAL . "Rounding value for purchase order quantity
MOVE XFLAG TO PLANTDATAX-ROUND_VAL . "Rounding value for purchase order quantity
*-MRP View 02
*-MRP View 02-Puchasing
MOVE ITAB-BESKZ TO PLANTDATA-PROC_TYPE . "Procurement Type
MOVE XFLAG TO PLANTDATAX-PROC_TYPE . "Procurement Type
MOVE ITAB-SOBSL TO PLANTDATA-SPPROCTYPE . "Special procurement type
MOVE XFLAG TO PLANTDATAX-SPPROCTYPE. "Special procurement type
MOVE ITAB-USEQU TO PLANTDATA-QUOTAUSAGE . "Quota arrangement usage
MOVE XFLAG TO PLANTDATAX-QUOTAUSAGE. "Quota arrangement usage
MOVE ITAB-RGEKZ TO PLANTDATA-BACKFLUSH . "Indicator: Backflush
MOVE XFLAG TO PLANTDATAX-BACKFLUSH . "Indicator: Backflush
*-MRP View 02-planning
MOVE ITAB-LGPRO TO PLANTDATA-ISS_ST_LOC .
MOVE XFLAG TO PLANTDATAX-ISS_ST_LOC.
MOVE ITAB-LGFSB TO PLANTDATA-SLOC_EXPRC .
MOVE XFLAG TO PLANTDATAX-SLOC_EXPRC.
MOVE ITAB-PLIFZ TO PLANTDATA-PLND_DELRY . "Planned Delivery Time in Days
MOVE XFLAG TO PLANTDATAX-PLND_DELRY. "Planned Delivery Time in Days
MOVE ITAB-FHORI TO PLANTDATA-SM_KEY . "Scheduling Margin Key for Floats
MOVE XFLAG TO PLANTDATAX-SM_KEY . "Scheduling Margin Key for Floats
IF ITAB-BESKZ = 'E'.
MOVE ITAB-WEBAZ_GR TO PLANTDATA-GR_PR_TIME.
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME.
ELSE.
MOVE ITAB-WEBAZ TO PLANTDATA-GR_PR_TIME . "Goods Receipt Processing Time in Days
MOVE XFLAG TO PLANTDATAX-GR_PR_TIME. "Goods Receipt Processing Time in Days
ENDIF .
MOVE ITAB-DZEIT TO PLANTDATA-INHSEPRODT . "In-house production time .
MOVE XFLAG TO PLANTDATAX-INHSEPRODT. "In-house production time .
*-MRP View 02-Net Requirement Calculation
MOVE ITAB-EISBE TO PLANTDATA-SAFETY_STK . "Safety Stock
MOVE XFLAG TO PLANTDATAX-SAFETY_STK. "Safety Stock
*-MRP View 03
MOVE ITAB-PERKZ TO PLANTDATA-PERIOD_IND . "Period Indicator
MOVE XFLAG TO PLANTDATAX-PERIOD_IND. "Period Indicator
*-MRP View 03 - Available check
MOVE ITAB-MTVFP1 TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK. "Checking Group for Availability Check
MOVE '02' TO PLANTDATA-AVAILCHECK . "Checking Group for Availability Check
MOVE XFLAG TO PLANTDATAX-AVAILCHECK ."Checking Group for Availability Check
*-MRP View 04
MOVE ITAB-SBDKZ TO PLANTDATA-DEP_REQ_ID . "Dependent requirements ind. for individual and coll. reqmts
MOVE XFLAG TO PLANTDATAX-DEP_REQ_ID. "Dependent requirements ind. for individual and coll. reqmts
MOVE ITAB-KAUSF TO PLANTDATA-COMP_SCRAP . "Component scrap in percent
MOVE XFLAG TO PLANTDATAX-COMP_SCRAP. "Component scrap in percent
ENDFORM. " MAP_MRP_DATA
*&---------------------------------------------------------------------*
*& Form MAP_QA_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_QA_DATA .
DATA: L_CNT_QM TYPE I .
IF ITAB-BESKZ = 'F' OR ITAB-BESKZ = 'X'.
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
ENDIF.
IF ITAB-WERKS EQ '2001' OR ITAB-WERKS EQ '2003' OR ITAB-WERKS EQ '2004'.
IF ITAB-QMPUR IS INITIAL AND ITAB-SSQSS IS INITIAL
AND ITAB-AKTIV_01 IS INITIAL AND ITAB-AKTIV_03 IS INITIAL
AND ITAB-AKTIV_04 IS INITIAL AND ITAB-AKTIV_05 IS INITIAL
AND ITAB-AKTIV_09 IS INITIAL.
MOVE SPACE TO HEADDATA-QUALITY_VIEW. "Quality Views
ELSE.
MOVE XFLAG TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE ITAB-QMPUR TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT."QM in Procurement is Active
MOVE ITAB-SSQSS TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
MOVE ITAB-INSMK TO PLANTDATA-IND_POST_TO_INSP_STOCK ."Post to Inspection Stock
MOVE XFLAG TO PLANTDATAX-IND_POST_TO_INSP_STOCK."Post to Inspection Stock
ENDIF .
ELSE.
CLEAR: MARA, L_CNT_QM .
SELECT COUNT( * ) INTO L_CNT_QM FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR
AND QMPUR NE SPACE .
IF L_CNT_QM > 0.
MOVE XFLAG TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE XFLAG TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT."QM in Procurement is Active
MOVE '0000' TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
ELSE.
CLEAR: MARA, L_CNT_QM .
SELECT COUNT( * ) INTO L_CNT_QM FROM MARA CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND MATNR EQ ITAB-MATNR.
IF L_CNT_QM GT 0 .
MOVE SPACE TO HEADDATA-QUALITY_VIEW. "Quality Views
MOVE SPACE TO CLIENTDATA-QM_PROCMNT. "QM in Procurement is Active
MOVE XFLAG TO CLIENTDATAX-QM_PROCMNT. "QM in Procurement is Active
MOVE SPACE TO PLANTDATA-CTRL_KEY . "Control Key
MOVE XFLAG TO PLANTDATAX-CTRL_KEY . "Control Key
ENDIF .
ENDIF .
ENDIF.
MOVE ITAB-PRFRQ TO PLANTDATA-INSP_INT . "Interval until next recurring inspection
MOVE XFLAG TO PLANTDATAX-INSP_INT . "Interval until next recurring inspection
ENDFORM. " MAP_QA_DATA
*&---------------------------------------------------------------------*
*& Form MAP_FICO_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_FICO_DATA .
MOVE ITAB-AWSLS TO PLANTDATA-VARIANCE_KEY. "Variance Key
MOVE XFLAG TO PLANTDATAX-VARIANCE_KEY. "Variance Key
MOVE ITAB-WERKS TO VALUATIONDATAX-VAL_AREA . "Valuation Area
MOVE ITAB-WERKS TO VALUATIONDATA-VAL_AREA . "Valuation Area
MOVE ITAB-BKLAS TO VALUATIONDATA-VAL_CLASS. "Valuation Class
MOVE XFLAG TO VALUATIONDATAX-VAL_CLASS. "Valuation Class
MOVE ITAB-VPRSV TO VALUATIONDATA-PRICE_CTRL. "Price control indicator
MOVE XFLAG TO VALUATIONDATAX-PRICE_CTRL. "Price control indicator
MOVE ITAB-PEINH TO VALUATIONDATA-PRICE_UNIT. "Price Unit
MOVE XFLAG TO VALUATIONDATAX-PRICE_UNIT. "Price Unit
MOVE ITAB-VERPR TO VALUATIONDATA-MOVING_PR. "Moving average price/periodic unit price
MOVE XFLAG TO VALUATIONDATAX-MOVING_PR. "Moving average price/periodic unit price
MOVE ITAB-STPRS TO VALUATIONDATA-STD_PRICE. "Standard price
MOVE XFLAG TO VALUATIONDATAX-STD_PRICE. "Standard price
MOVE ITAB-EKALR TO VALUATIONDATA-QTY_STRUCT. "Material Is Costed with Quantity Structure
MOVE XFLAG TO VALUATIONDATAX-QTY_STRUCT. "Material Is Costed with Quantity Structure
MOVE ITAB-HKMAT TO VALUATIONDATA-ORIG_MAT. "Material-related origin
MOVE XFLAG TO VALUATIONDATAX-ORIG_MAT. "Material-related origin
MOVE ITAB-HRKFT TO VALUATIONDATA-ORIG_GROUP. "Origin Group as Subdivision of Cost Element
MOVE XFLAG TO VALUATIONDATAX-ORIG_GROUP. "Origin Group as Subdivision of Cost Element
MOVE ITAB-KOSGR TO VALUATIONDATA-OVERHEAD_GRP. "Costing Overhead Group
MOVE XFLAG TO VALUATIONDATAX-OVERHEAD_GRP."Costing Overhead Group
MOVE ITAB-ZPLP1 TO VALUATIONDATA-PLNDPRICE1. "Future Planned Price 1
MOVE XFLAG TO VALUATIONDATAX-PLNDPRICE1. "Future Planned Price 1
MOVE ITAB-ZPLP2 TO VALUATIONDATA-PLNDPRICE2. "Future Planned Price 2
MOVE XFLAG TO VALUATIONDATAX-PLNDPRICE2. "Future Planned Price 2
MOVE ITAB-ZPLD1 TO VALUATIONDATA-PLNDPRDATE1. "Date from Which Future Planned Price 1 Is Valid
MOVE XFLAG TO VALUATIONDATAX-PLNDPRDATE1. "Date from Which Future Planned Price 1 Is Valid
MOVE ITAB-ZPLD2 TO VALUATIONDATA-PLNDPRDATE2. "Date from Which Future Planned Price 1 Is Valid
MOVE XFLAG TO VALUATIONDATAX-PLNDPRDATE2. "Date from Which Future Planned Price 1 Is Valid
ENDFORM. " MAP_FICO_DATA
*&---------------------------------------------------------------------*
*& Form MAP_STORAGE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAP_STORAGE_DATA .
IF NOT ITAB-LGORT IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGORT.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGORT TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGORT TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF.
IF NOT ITAB-LGPRO IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGPRO.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGPRO TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGPRO TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF .
IF NOT ITAB-LGFSB IS INITIAL.
CLEAR: T001L.
SELECT SINGLE * FROM T001L CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND WERKS EQ ITAB-WERKS
AND LGORT EQ ITAB-LGFSB.
IF SY-SUBRC EQ 0 .
MOVE XFLAG TO HEADDATA-STORAGE_VIEW. "Storage Views
MOVE ITAB-WERKS TO STORAGELOCATIONDATA-PLANT. "Plant
MOVE ITAB-LGFSB TO STORAGELOCATIONDATA-STGE_LOC. "storage location
MOVE T001L-DISKZ TO STORAGELOCATIONDATA-MRP_IND. "MRP indicator
MOVE ITAB-WERKS TO STORAGELOCATIONDATAX-PLANT. "Plant
MOVE ITAB-LGFSB TO STORAGELOCATIONDATAX-STGE_LOC."storage location
MOVE XFLAG TO STORAGELOCATIONDATAX-MRP_IND. "MRP indicator
ENDIF .
ENDIF .
ENDFORM. " MAP_STORAGE_DATA
*&---------------------------------------------------------------------*
*& Form MAINTAIN_CLASSIFICATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAINTAIN_CLASSIFICATION .
DATA: WA LIKE ITAB .
DATA: L_KLART LIKE AUSP-KLART.
DATA: L_LINE_CH1 TYPE I.
DATA: L_LINE_CH2 TYPE I.
CLEAR: AUSP.
CLEAR: L_CNT.
CLEAR: WA .
WA = ITAB .
SELECT COUNT( * ) INTO L_CNT FROM AUSP CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND OBJEK EQ WA-MATNR.
CLEAR: L_KLART .
L_KLART = WA-KLART .
TRANSLATE WA-CLASS_01 TO UPPER CASE .
TRANSLATE WA-MWERT_DESC1 TO UPPER CASE .
REFRESH: BDCDATA, MESSTAB .
CLEAR : BDCDATA, MESSTAB .
IF L_CNT = 0 .
REFRESH: BDCDATA, MESSTAB .
CLEAR : BDCDATA, MESSTAB .
CLEAR : L_LINE_CH1, L_LINE_CH2.
IF NOT WA-MWERT_DESC1 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC11 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC12 IS INITIAL .
ADD 1 TO L_LINE_CH1 .
ENDIF .
IF NOT WA-MWERT_DESC2 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
IF NOT WA-MWERT_DESC21 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
IF NOT WA-MWERT_DESC22 IS INITIAL .
ADD 1 TO L_LINE_CH2 .
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR' WA-MATNR.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(03)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCLCA' '0602'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
PERFORM BDC_FIELD USING 'RMCLF-KLART' L_KLART.
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMCLF-CLASS(01)' WA-CLASS_01.
PERFORM BDC_DYNPRO USING 'SAPLCTMS' '0109'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
IF L_LINE_CH1 = 1 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
IF L_LINE_CH1 = 2 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC11.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
IF L_LINE_CH1 = 3 .
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' WA-MWERT_DESC1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(02)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(02)' WA-MWERT_DESC11.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(03)' 'A001'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(03)' WA-MWERT_DESC12.
IF L_LINE_CH2 = 1.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC21.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SER.
ENDIF.
ENDIF .
IF L_LINE_CH2 = 3.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(04)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(04)' WA-MWERT_DESC2.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(05)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(05)' WA-MWERT_DESC21.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(06)' 'A002'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(06)' WA-MWERT_DESC22.
IF WA-MWERT_SCR NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(07)' 'A004'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(07)' WA-MWERT_SCR.
ENDIF.
IF WA-MWERT_SER NE SPACE.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(08)' 'A005'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(08)' WA-MWERT_SER.
ENDIF.
ENDIF .
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=WECH'.
PERFORM BDC_FIELD USING 'RMCLF-PAGPOS' '1'.
PERFORM BDC_DYNPRO USING 'SAPLCLCA' '0602'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
IF SY-MANDT = '710'.
PERFORM BDC_FIELD USING 'RMCLF-KLART' '022'.
ELSE.
PERFORM BDC_FIELD USING 'RMCLF-KLART' '023'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
IF WA-MTART = 'FERT'.
PERFORM BDC_FIELD USING 'RMCLF-STDCL(01)' 'X'.
ENDIF .
PERFORM BDC_FIELD USING 'RMCLF-CLASS(01)' 'A003'.
PERFORM BDC_DYNPRO USING 'SAPLCTMS' '0109'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
PERFORM BDC_FIELD USING 'RCTMS-MNAME(01)' 'A003'.
PERFORM BDC_FIELD USING 'RCTMS-MWERT(01)' '入库日期'.
PERFORM BDC_DYNPRO USING 'SAPLCLFM' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENDE'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=YES'.
IF NOT P_BKJOB IS INITIAL .
PERFORM BDC_TRANSACTION USING 'MM01'.
ELSE.
CALL TRANSACTION 'MM01' USING BDCDATA
MODE 'E'
UPDATE 'L'
MESSAGES INTO MESSTAB.
READ TABLE MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
ELSE.
MOVE TEXT-S13 TO I_RESULT-MESSAGE02.
ENDIF .
ENDFORM. " MAINTAIN_CLASSIFICATION
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CLOSE_GROUP.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. "CLOSE_GROUP
*&---------------------------------------------------------------------*
*& Form OPEN_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OPEN_GROUP.
DATA: C_HOLDDATE LIKE SY-DATUM.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'MM01_CLASS'
* user = c_user
USER = SY-UNAME
KEEP = 'X' "C_KEEP
HOLDDATE = C_HOLDDATE.
ENDFORM. "OPEN_GROUP
*&---------------------------------------------------------------------*
*& Form BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BATCH_INPUT_SESSION_SUBMIT .
* Run BDC session automatically instead execute in SM35.
SUBMIT RSBDCSUB AND RETURN
WITH USER = SY-UNAME
WITH MAPPE = 'MM01_CLASS'
WITH VON = SY-DATUM
WITH BIS = SY-DATUM
WITH Z_VERARB = 'X'
WITH FEHLER = ''.
ENDFORM. " BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'MATNR' 'I_RESULT' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_RESULT' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'MTART' 'I_RESULT' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'MAKTX' 'I_RESULT' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'MEINS' 'I_RESULT' '' TEXT-D02.
PERFORM SET_ALV_FIELDS USING 'TYPE' 'I_RESULT' '' TEXT-D03.
PERFORM SET_ALV_FIELDS USING 'MESSAGE' 'I_RESULT' '' TEXT-D04.
PERFORM SET_ALV_FIELDS USING 'QMVIEWS' 'I_RESULT' '' TEXT-D05.
PERFORM SET_ALV_FIELDS USING 'MESSAGE01' 'I_RESULT' '' TEXT-D06.
IF P_BKJOB IS INITIAL.
PERFORM SET_ALV_FIELDS USING 'MESSAGE02' 'I_RESULT' '' TEXT-D07.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMAND
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = I_RESULT[].
ENDFORM. " DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVST'.
SET TITLEBAR 'ALVST'.
ENDFORM. "standard_st01
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: L_PROCESSED(001) .
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE I_RESULT INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR' OR 'QMVIEWS' OR 'WERKS'.
SET PARAMETER ID 'MAT' FIELD I_RESULT-MATNR.
SET PARAMETER ID 'WRK' FIELD I_RESULT-WERKS.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE .
ENDIF .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form COLUMN_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COLUMN_HEADER .
WRITE:/ TEXT-C01 COLOR COL_KEY,
TEXT-C06 COLOR COL_KEY,
TEXT-C08 COLOR COL_KEY,
TEXT-C03 COLOR COL_KEY,
TEXT-C02 COLOR COL_KEY,
TEXT-C09 COLOR COL_KEY,
TEXT-C10 COLOR COL_KEY,
TEXT-C11 COLOR COL_KEY,
TEXT-C04 COLOR COL_KEY,
TEXT-C05 COLOR COL_KEY,
TEXT-C07 COLOR COL_KEY.
ULINE.
ENDFORM. " COLUMN_HEADER
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
DATA: L_SCR_DISABLE TYPE C.
CLEAR: L_SCR_DISABLE .
IF SY-UNAME EQ 'T31920' OR SY-UNAME EQ 'ABAP06' OR SY-UNAME EQ 'A31920'.
L_SCR_DISABLE = 'N'.
ELSE.
L_SCR_DISABLE = 'Y'.
ENDIF.
IF L_SCR_DISABLE EQ 'Y'.
LOOP AT SCREEN .
IF SCREEN-NAME = 'P_MMAM'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_MARC'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_QMDATA'.
SCREEN-INPUT = 0 .
MODIFY SCREEN .
ENDIF .
IF SCREEN-NAME = 'P_CLASS'.
SCREEN-INVISIBLE = 1 .
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ENDIF .
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_CLASS'.
SCREEN-INVISIBLE = 1 .
MODIFY SCREEN .
ENDIF .
ENDLOOP .
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form MATERIAL_TYPE_CHANGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MATERIAL_TYPE_CHANGE .
REFRESH: BDCDATA.
CLEAR : BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RM03Z-NMTAR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RM03Z-MATNR' ITAB-MATNR .
PERFORM BDC_FIELD USING 'RM03Z-NMTAR' ITAB-MTART.
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=LOS'.
PERFORM BDC_FIELD USING 'RM03Z-MATNR' ITAB-MATNR.
PERFORM BDC_FIELD USING 'RM03Z-NMTAR' ITAB-MTART .
PERFORM BDC_DYNPRO USING 'SAPMM03Z' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
CALL TRANSACTION 'MMAM' USING BDCDATA MODE 'N' UPDATE 'L'.
REFRESH: BDCDATA.
CLEAR : BDCDATA.
ENDFORM. " MATERIAL_TYPE_CHANGE
*&---------------------------------------------------------------------*
*& Form MAINTAIN_CLASSIFICATION_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAINTAIN_CLASSIFICATION_BAPI .
DATA: L_OBJECT(050) .
CLEAR: AUSP, L_CNT.
SELECT COUNT( * ) INTO L_CNT FROM AUSP CLIENT SPECIFIED
WHERE MANDT EQ SY-MANDT
AND OBJEK EQ ITAB-MATNR.
IF L_CNT = 0.
REFRESH: GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : L_OBJECT .
L_OBJECT = ITAB-MATNR .
CLEAR: INT_CNT, GS_VALUES_CHAR .
IF NOT ITAB-MWERT_DESC1 IS INITIAL .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC1. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
IF NOT ITAB-MWERT_DESC11 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC11. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
IF NOT ITAB-MWERT_DESC12 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A001'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC12. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
ENDIF .
CLEAR: INT_CNT, GS_VALUES_CHAR .
IF NOT ITAB-MWERT_DESC2 IS INITIAL .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC2. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
IF NOT ITAB-MWERT_DESC21 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC21. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
IF NOT ITAB-MWERT_DESC22 IS INITIAL .
CLEAR: GS_VALUES_CHAR.
GS_VALUES_CHAR-CHARACT = 'A002'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_DESC22. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
ENDIF .
ENDIF .
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A004'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_SCR. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CLEAR: INT_CNT, GS_VALUES_CHAR .
GS_VALUES_CHAR-CHARACT = 'A005'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = ITAB-MWERT_SER. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CALL FUNCTION 'BAPI_OBJCL_CREATE'
EXPORTING
OBJECTKEYNEW = L_OBJECT "Material Master
OBJECTTABLENEW = 'MARA'
CLASSNUMNEW = 'A001' "Class Number
CLASSTYPENEW = '001' "Class Type
STANDARDCLASS = 'X'
NO_DEFAULT_VALUES = 'X'
TABLES
ALLOCVALUESNUM = GIT_BAPI1003
ALLOCVALUESCHAR = GIT_VALUES_CHAR
ALLOCVALUESCURR = GIT_VALUES_CURR
RETURN = GIT_BAPIRET2.
READ TABLE GIT_BAPIRET2 WITH KEY TYPE = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
REFRESH: GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR : GIT_BAPI1003, GIT_VALUES_CHAR, GIT_VALUES_CURR, GIT_BAPIRET2.
CLEAR: GS_VALUES_CHAR, INT_CNT.
GS_VALUES_CHAR-CHARACT = 'A003'. "Characteristics
GS_VALUES_CHAR-VALUE_CHAR = '入库日期'. "characteristics value
ADD 1 TO INT_CNT .
GS_VALUES_CHAR-INSTANCE = INT_CNT.
APPEND GS_VALUES_CHAR TO GIT_VALUES_CHAR.
CALL FUNCTION 'BAPI_OBJCL_CREATE'
EXPORTING
OBJECTKEYNEW = L_OBJECT "Material Master
OBJECTTABLENEW = 'MARA'
CLASSNUMNEW = 'A003' "Class Number
CLASSTYPENEW = '023' "Class Type
STANDARDCLASS = 'X'
NO_DEFAULT_VALUES = 'X'
TABLES
ALLOCVALUESNUM = GIT_BAPI1003
ALLOCVALUESCHAR = GIT_VALUES_CHAR
ALLOCVALUESCURR = GIT_VALUES_CURR
RETURN = GIT_BAPIRET2.
READ TABLE GIT_BAPIRET2 WITH KEY TYPE = 'E'.
IF SY-SUBRC NE 0.
MOVE TEXT-S10 TO I_RESULT-MESSAGE02.
ELSE.
MOVE TEXT-S12 TO I_RESULT-MESSAGE02.
ENDIF .
ENDIF .
ENDFORM. " MAINTAIN_CLASSIFICATION_BAPI