0% found this document useful (0 votes)
62 views26 pages

PV Program

This document contains a report (ZUTPP609) for a production version creation utility program. The program allows for mass uploading of production version information for a given material, plant, bill of materials (BOM), and routing at a plant. It includes details on the data declarations, selections screens, and forms used for initialization, selection, and processing. The main steps are to get input data, process it for a batch data change (BDC) transaction, generate a report or execute the BDC, and provide a status report.

Uploaded by

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

PV Program

This document contains a report (ZUTPP609) for a production version creation utility program. The program allows for mass uploading of production version information for a given material, plant, bill of materials (BOM), and routing at a plant. It includes details on the data declarations, selections screens, and forms used for initialization, selection, and processing. The main steps are to get input data, process it for a batch data change (BDC) transaction, generate a report or execute the BDC, and provide a status report.

Uploaded by

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

*&---------------------------------------------------------------------*

*& Report ZUTPP609


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZUTPP609
LINE-SIZE 200
LINE-COUNT 200
MESSAGE-ID ZZ
NO STANDARD PAGE HEADING.
***********************************************************************
* Program: Production Version Creation Utility Program *
* *
* Description: Basically this is Mass upload utility program to create*
* Production version for given Material,Plant,BOM, and *
* Routing information. *
***********************************************************************

***********************************************************************
* T A B L E D E C L A R A T I O N S *
***********************************************************************
TABLES : MAST,MAPL,MKAL,STKO,MARA,MARC.
***********************************************************************
* D A T A D E C L A R A T I O N S *
***********************************************************************

TYPE-POOLS: SLIS,TRUXS.

DATA:EXIT.
DATA: FCT TYPE SLIS_FIELDCAT_ALV,
IT_FCT TYPE SLIS_T_FIELDCAT_ALV,
LOUT TYPE SLIS_LAYOUT_ALV,
HEAD TYPE SLIS_LISTHEADER,
IT_HEAD TYPE SLIS_T_LISTHEADER.
*** MATERIAL TO BOM LINK DATA
TYPES: BEGIN OF TY_MAST,
MATNR TYPE MAST-MATNR,
WERKS TYPE MAST-WERKS,
STLAN TYPE MAST-STLAN,
STLNR TYPE MAST-STLNR,
STLAL TYPE MAST-STLAL,
LOSVN TYPE MAST-LOSVN,
LOSBS TYPE MAST-LOSBS,
ANDAT TYPE MAST-ANDAT,
END OF TY_MAST.
DATA : GT_MAST TYPE TABLE OF TY_MAST,
GS_MAST LIKE LINE OF GT_MAST.
*** ROUTING DATA
TYPES: BEGIN OF TY_MAPL,
MATNR TYPE MAPL-MATNR,
WERKS TYPE MAPL-WERKS,
PLNTY TYPE MAPL-PLNTY,
PLNNR TYPE MAPL-PLNNR,
PLNAL TYPE MAPL-PLNAL,
ZKRIZ TYPE MAPL-ZKRIZ,
ZAEHL TYPE MAPL-ZAEHL,
DATUV TYPE MAPL-DATUV,
LOEKZ TYPE MAPL-LOEKZ,
ANDAT TYPE MAPL-ANDAT,
END OF TY_MAPL.
DATA : GT_MAPL TYPE TABLE OF TY_MAPL,
GS_MAPL LIKE LINE OF GT_MAPL.
*** BOM HEADER DATA
TYPES: BEGIN OF TY_STKO,
STLTY TYPE STKO-STLTY,
STLNR TYPE STKO-STLNR,
STLAL TYPE STKO-STLAL,
STKOZ TYPE STKO-STKOZ,
DATUV TYPE STKO-DATUV,
LOEKZ TYPE STKO-LOEKZ,
ANDAT TYPE STKO-ANDAT,
STLST TYPE STKO-STLST,
END OF TY_STKO.
DATA : GT_STKO TYPE TABLE OF TY_STKO,
GS_STKO LIKE LINE OF GT_STKO.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
SPART TYPE MARA-SPART,
END OF TY_MARA.
DATA : GT_MARA TYPE TABLE OF TY_MARA,
GS_MARA LIKE LINE OF GT_MARA.
TYPES: BEGIN OF TY_MARC,
MATNR TYPE MARA-MATNR,
WERKS TYPE MARC-WERKS,
DISPO TYPE MARC-DISPO,
END OF TY_MARC.
DATA : GT_MARC TYPE TABLE OF TY_MARC,
GS_MARC LIKE LINE OF GT_MARC.
TYPES: BEGIN OF TY_MAKL,
MATNR TYPE MKAL-MATNR, "material
WERKS TYPE MKAL-WERKS, "plant
VERID TYPE MKAL-VERID, "production version
BDATU TYPE MKAL-BDATU, "valid from
ADATU TYPE MKAL-ADATU, "valid to
STLAL TYPE MKAL-STLAL, "Alternative bom
STLAN TYPE MKAL-STLAN, "bom usage
PLNTY TYPE MKAL-PLNTY, "task type
PLNNR TYPE MKAL-PLNNR, "task list
PLNAL TYPE MAPL-PLNAL, "group counter
BSTMI TYPE MKAL-BSTMI, "lot size from
BSTMA TYPE MKAL-BSTMA, "lot size to
ALORT TYPE MKAL-ALORT, "receiving storage location
PRFG_F(10) TYPE C, "status
TEXT1 TYPE MKAL-TEXT1, "text
ICON(4) TYPE C, "signal symbol
END OF TY_MAKL.
DATA : GT_MAKL TYPE TABLE OF TY_MAKL,
GS_MAKL LIKE LINE OF GT_MAKL,
GT_STATUS TYPE TABLE OF TY_MAKL,
GS_STATUS LIKE LINE OF GT_STATUS.

TYPES: BEGIN OF TY_FINAL,


MATNR TYPE MAPL-MATNR,
WERKS TYPE MAPL-WERKS,
PLNTY TYPE MAPL-PLNTY,
PLNNR TYPE MAPL-PLNNR,
BDATU TYPE MKAL-BDATU,
ADATU TYPE MKAL-ADATU,
STLAL TYPE MKAL-STLAL,
STLAN TYPE MKAL-STLAN,
BSTMI TYPE MKAL-BSTMI,
BSTMA TYPE MKAL-BSTMA,
TEXT1 TYPE MKAL-TEXT1,
PLNAL TYPE MAPL-PLNAL,
VERID TYPE MKAL-VERID,
END OF TY_FINAL.
DATA : GT_FINAL TYPE TABLE OF TY_FINAL,
GT_FINAL1 TYPE TABLE OF TY_FINAL,
GS_FINAL LIKE LINE OF GT_FINAL.
*DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
INCLUDE BDCRECXY.
DATA : P_MODE TYPE CTU_PARAMS-DISMODE,
LV_HEAD TYPE C.

***********************************************************************
* S E L E C T - O P T I O N S / P A R A M E T E R S *
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_TEST RADIOBUTTON GROUP R1 USER-COMMAND USR DEFAULT 'X',
P_UPDAT RADIOBUTTON GROUP R1.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-004.


PARAMETERS : P_TRANS RADIOBUTTON GROUP R3 MODIF ID MD1 USER-COMMAND USR1 DEFAULT
'X',
P_SIM RADIOBUTTON GROUP R3 MODIF ID MD1,
* P_SIMRUN RADIOBUTTON GROUP R3 MODIF ID MD1,
P_MAP TYPE APQI-GROUPID MODIF ID MD1 DEFAULT 'C223_VERS_UT'.
SELECTION-SCREEN END OF BLOCK B4.

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


PARAMETERS : P_VALID RADIOBUTTON GROUP R2 MODIF ID MD2,
P_INVALD RADIOBUTTON GROUP R2 MODIF ID MD2.
SELECTION-SCREEN END OF BLOCK B3.

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


SELECT-OPTIONS : S_MATNR FOR MAST-MATNR,
S_WERKS FOR MAST-WERKS,
S_STLAL FOR STKO-STLAL,
S_PLNNR FOR MAPL-PLNNR,
S_ANDAT FOR STKO-ANDAT OBLIGATORY,
S_RODAT FOR MAPL-ANDAT OBLIGATORY,
S_ANNAM FOR MAPL-ANNAM,
S_DISPO FOR MARC-DISPO,
S_SPART FOR MARA-SPART.
PARAMETER : C1 AS CHECKBOX,
P_ALORT TYPE MKAL-ALORT.

SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
IF P_TEST = 'X' AND SCREEN-GROUP1 = 'MD1'.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
CONTINUE.
* ELSEIF P_UPDAT = 'X' AND SCREEN-GROUP1 = 'MD2'.
* SCREEN-ACTIVE = '0'.
* MODIFY SCREEN.
* CONTINUE.
ENDIF.
ENDLOOP.

IF P_TRANS = 'X'." AND SCREEN-GROUP1 = 'MD1'.


LOOP AT SCREEN.
IF SCREEN-NAME = 'P_MAP' OR SCREEN-NAME = '%_P_MAP_%_APP_%-TEXT'.
SCREEN-ACTIVE = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_MAP'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

***********************************************************************
* I N I T I A L I Z A T I O N *
***********************************************************************
INITIALIZATION.
P_MODE = 'A'.
***********************************************************************
* S T A R T - O F - S E L E C T I O N *
***********************************************************************
START-OF-SELECTION.
IF P_UPDAT = 'X' AND P_INVALD = 'X'.
MESSAGE S208(00) WITH 'select valid prod.vers option to update' DISPLAY LIKE
'E'.
STOP.
ENDIF.
IF C1 = 'X' AND P_ALORT = ' '.
MESSAGE S208(00) WITH 'Please input receiving storage location' DISPLAY LIKE
'E'.
STOP.
ENDIF.
PERFORM GET_DATA_INPUT. " GET PRODUCTION VERSION DETAILS.
PERFORM FINAL_DATA. " DATA PROCESSING FOR BDC
IF P_TEST = 'X'.
PERFORM REPORT. " GENERATE REPORT.
ELSE.
IF P_TRANS = 'X'.
PERFORM START_BDC. " START BDC USING CALL TRANSACTION
ELSE.
PERFORM START_SESSION_BDC. " START BDC USING CALL SESSION
ENDIF.
PERFORM STATUS_REPORT. " status after succesfull creation of
production version
ENDIF.

***********************************************************************
* F O R M S *
***********************************************************************
*&---------------------------------------------------------------------*
*& Form GET_DATA_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA_INPUT .

IF S_MATNR[] IS NOT INITIAL.


" Material given in input selection.

SELECT MATNR SPART FROM MARA INTO TABLE GT_MARA


WHERE MATNR IN S_MATNR
* AND SPART = P_SPART.

AND SPART IN S_SPART.

IF GT_MARA[] IS NOT INITIAL.


IF S_DISPO[] IS INITIAL.
" MRP controller is not given in selection.
SELECT MATNR WERKS STLAN STLNR STLAL LOSVN LOSBS ANDAT FROM MAST
" get material to BOM link
INTO TABLE GT_MAST FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_ANDAT
AND STLAL IN S_STLAL
AND ANNAM IN S_ANNAM.
SELECT MATNR WERKS PLNTY PLNNR PLNAL ZKRIZ ZAEHL DATUV LOEKZ ANDAT FROM
MAPL " Get Task list
INTO TABLE GT_MAPL FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_RODAT
AND PLNNR IN S_PLNNR
AND LOEKZ = ' '
AND PLNTY = 'N'
AND ANNAM IN S_ANNAM.
ELSE.
" MRP controller is in input selection.
SELECT MATNR WERKS DISPO FROM MARC INTO TABLE GT_MARC
FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND DISPO IN S_DISPO.
IF GT_MARC[] IS NOT INITIAL.
SELECT MATNR WERKS STLAN STLNR STLAL LOSVN LOSBS ANDAT FROM MAST
" Get material to BOM link
INTO TABLE GT_MAST FOR ALL ENTRIES IN GT_MARC
WHERE MATNR = GT_MARC-MATNR
AND WERKS = GT_MARC-WERKS
AND STLAL IN S_STLAL
AND ANDAT IN S_ANDAT
AND ANNAM IN S_ANNAM.
SELECT MATNR WERKS PLNTY PLNNR PLNAL ZKRIZ ZAEHL DATUV LOEKZ ANDAT FROM
MAPL " Get Task list
INTO TABLE GT_MAPL FOR ALL ENTRIES IN GT_MARC
WHERE MATNR = GT_MARC-MATNR
AND WERKS = GT_MARC-WERKS
AND PLNNR IN S_PLNNR
AND ANDAT IN S_RODAT
AND LOEKZ = ' '
AND PLNTY = 'N'
AND ANNAM IN S_ANNAM.
ENDIF.
ENDIF.
ENDIF.

ELSE.
" Material not given in input selection

IF S_DISPO[] IS NOT INITIAL.


" MRP controller is in input selection.
SELECT MATNR WERKS DISPO FROM MARC INTO TABLE GT_MARC
WHERE MATNR IN S_MATNR
AND WERKS IN S_WERKS
AND DISPO IN S_DISPO.
IF GT_MARC[] IS NOT INITIAL.
SELECT MATNR SPART FROM MARA INTO TABLE GT_MARA
FOR ALL ENTRIES IN GT_MARC
WHERE MATNR = GT_MARC-MATNR
* AND SPART = P_SPART.

AND SPART IN S_SPART.

ENDIF.
IF GT_MARA[] IS NOT INITIAL.
SELECT MATNR WERKS STLAN STLNR STLAL LOSVN LOSBS ANDAT FROM MAST
" get material to BOM link
INTO TABLE GT_MAST FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_ANDAT
AND STLAL IN S_STLAL
AND ANNAM IN S_ANNAM.
SELECT MATNR WERKS PLNTY PLNNR PLNAL ZKRIZ ZAEHL DATUV LOEKZ ANDAT FROM
MAPL " Get Task list
INTO TABLE GT_MAPL FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_RODAT
AND PLNNR IN S_PLNNR
AND LOEKZ = ' '
AND PLNTY = 'N'
AND ANNAM IN S_ANNAM.
ENDIF.
ELSE.
" MRP controller is not given in selection.
SELECT MATNR SPART FROM MARA INTO TABLE GT_MARA
WHERE MATNR IN S_MATNR
* AND SPART = P_SPART.

AND SPART IN S_SPART.

IF GT_MARA[] IS NOT INITIAL.


SELECT MATNR WERKS STLAN STLNR STLAL LOSVN LOSBS ANDAT FROM MAST
" get material to BOM link
INTO TABLE GT_MAST FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_ANDAT
AND STLAL IN S_STLAL
AND ANNAM IN S_ANNAM.
SELECT MATNR WERKS PLNTY PLNNR PLNAL ZKRIZ ZAEHL DATUV LOEKZ ANDAT FROM
MAPL " Get Task list
INTO TABLE GT_MAPL FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND ANDAT IN S_RODAT
AND PLNNR IN S_PLNNR
AND LOEKZ = ' '
AND PLNTY = 'N'
AND ANNAM IN S_ANNAM.
ENDIF.
ENDIF.
ENDIF.

IF GT_MAST[] IS NOT INITIAL.


SELECT STLTY STLNR STLAL STKOZ DATUV LOEKZ ANDAT STLST FROM STKO
INTO TABLE GT_STKO FOR ALL ENTRIES IN GT_MAST
WHERE STLNR = GT_MAST-STLNR
AND STLAL = GT_MAST-STLAL
AND LOEKZ = ' '.
ENDIF.

IF GT_MARA[] IS NOT INITIAL.

SELECT MATNR WERKS VERID BDATU ADATU STLAL STLAN PLNTY PLNNR ALNAL BSTMI BSTMA
FROM MKAL
INTO TABLE GT_MAKL FOR ALL ENTRIES IN GT_MARA
WHERE MATNR = GT_MARA-MATNR
AND WERKS IN S_WERKS
AND STLAL IN S_STLAL
AND PLNNR IN S_PLNNR.
ENDIF.

ENDFORM. " GET_DATA_INPUT


*&---------------------------------------------------------------------*
*& Form FINAL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FINAL_DATA .
DATA : COUNT(4) TYPE N.
SORT GT_MAKL ASCENDING BY MATNR WERKS STLAL PLNNR.
SORT GT_MAST ASCENDING BY MATNR WERKS STLNR STLAL.
SORT GT_MAPL ASCENDING BY MATNR WERKS PLNNR.

LOOP AT GT_MAST INTO GS_MAST.


READ TABLE GT_STKO INTO GS_STKO
WITH KEY STLNR = GS_MAST-STLNR
STLAL = GS_MAST-STLAL.

IF SY-SUBRC = 0.
IF GS_STKO-DATUV <= SY-DATUM. " BOM SHOULD BE VALID FROM
CURRENT DATE ONLY
READ TABLE GT_MAKL INTO GS_MAKL
WITH KEY MATNR = GS_MAST-MATNR
WERKS = GS_MAST-WERKS
STLAL = GS_MAST-STLAL.
IF SY-SUBRC = 0. " BOM ALREADY USED.
* COUNT = GS_MAKL-VERID.
* AT END OF MATNR.
* AT END OF WERKS.
* CLEAR : COUNT.
* ENDAT.
* ENDAT.
CONTINUE.
ELSE.
GS_FINAL-MATNR = GS_MAST-MATNR.
GS_FINAL-WERKS = GS_MAST-WERKS.
* IF COUNT IS INITIAL.
* COUNT = '0001'.
* ELSE.
* COUNT = COUNT + 0001.
* ENDIF.

GS_FINAL-BSTMI = '1'. "lot size from


GS_FINAL-BSTMA = '999999'. "lot size to
GS_FINAL-ADATU = SY-DATUM. "valid from production version
GS_FINAL-BDATU = '99991231'. "valid to production version

GS_FINAL-VERID = GS_STKO-STLAL. "COUNT. "version


counter
GS_FINAL-STLAL = GS_STKO-STLAL. "alternative bom
GS_FINAL-STLAN = GS_MAST-STLAN. "bom usage
CONCATENATE 'Production Version' GS_STKO-STLAL INTO GS_FINAL-TEXT1
SEPARATED BY SPACE.

READ TABLE GT_MAPL INTO GS_MAPL


WITH KEY MATNR = GS_MAST-MATNR
WERKS = GS_MAST-WERKS.
IF SY-SUBRC = 0.
GS_FINAL-PLNNR = GS_MAPL-PLNNR. " routing
GS_FINAL-PLNTY = GS_MAPL-PLNTY. " task list type
GS_FINAL-PLNAL = GS_MAPL-PLNAL. " group counter
IF P_VALID = 'X'.
APPEND GS_FINAL TO GT_FINAL.
CLEAR :GS_FINAL.
ENDIF.
ELSE.
IF P_INVALD = 'X'.
APPEND GS_FINAL TO GT_FINAL1.
CLEAR: GS_FINAL.
ENDIF.
ENDIF.
* IF P_VALID = 'X'.
* APPEND GS_FINAL TO GT_FINAL.
* CLEAR :GS_FINAL.
* ENDIF.
CLEAR :GS_FINAL.
ENDIF.
* AT END OF MATNR.
* AT END OF WERKS.
* CLEAR : COUNT.
* ENDAT.
* ENDAT.
ENDIF.
ENDIF.
ENDLOOP.

IF SY-SUBRC <> 0.
LOOP AT GT_MAPL INTO GS_MAPL.

GS_FINAL-PLNNR = GS_MAPL-PLNNR. " routing


GS_FINAL-PLNTY = GS_MAPL-PLNTY. " task list type
GS_FINAL-PLNAL = GS_MAPL-PLNAL. " group counter
READ TABLE GT_MAST INTO GS_MAST
WITH KEY MATNR = GS_MAPL-MATNR
WERKS = GS_MAPL-WERKS.
IF SY-SUBRC = 0.
READ TABLE GT_STKO INTO GS_STKO
WITH KEY STLNR = GS_MAST-STLNR
STLAL = GS_MAST-STLAL.
IF SY-SUBRC = 0.
IF GS_STKO-DATUV <= SY-DATUM. " BOM SHOULD BE VALID FROM
CURRENT DATE ONLY
READ TABLE GT_MAKL INTO GS_MAKL
WITH KEY MATNR = GS_MAST-MATNR
WERKS = GS_MAST-WERKS
STLAL = GS_MAST-STLAL.
IF SY-SUBRC = 0. " BOM ALREADY USED.
CONTINUE.
ELSE.
GS_FINAL-MATNR = GS_MAST-MATNR.
GS_FINAL-WERKS = GS_MAST-WERKS.
GS_FINAL-BSTMI = '1'. "lot size from
GS_FINAL-BSTMA = '999999'. "lot size to
GS_FINAL-ADATU = SY-DATUM. "valid from production
version
GS_FINAL-BDATU = '99991231'. "valid to production version
GS_FINAL-VERID = GS_STKO-STLAL. "COUNT. "version
counter
GS_FINAL-STLAL = GS_STKO-STLAL. "alternative bom
GS_FINAL-STLAN = GS_MAST-STLAN. "bom usage
CONCATENATE 'Production Version' GS_STKO-STLAL INTO GS_FINAL-TEXT1
SEPARATED BY SPACE.
IF P_VALID = 'X'.
APPEND GS_FINAL TO GT_FINAL.
CLEAR :GS_FINAL.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
IF P_INVALD = 'X'.
GS_FINAL-MATNR = GS_MAPL-MATNR.
GS_FINAL-WERKS = GS_MAPL-WERKS.
GS_FINAL-BSTMI = '1'. "lot size from
GS_FINAL-BSTMA = '999999'. "lot size to
GS_FINAL-ADATU = SY-DATUM. "valid from production version
GS_FINAL-BDATU = '99991231'. "valid to production version
APPEND GS_FINAL TO GT_FINAL1.
CLEAR: GS_FINAL.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF GT_FINAL[] IS INITIAL AND P_VALID = 'X'.
MESSAGE I208(00) WITH 'No Prod.Versions will be created for selected data'.
STOP.
ELSEIF GT_FINAL1[] IS INITIAL AND P_INVALD = 'X'.
MESSAGE I208(00) WITH 'No data found for selected data'.
STOP.
ENDIF.
ENDFORM. " BDC
*&---------------------------------------------------------------------*
*& Form REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM REPORT .

PERFORM BUILD_ALV.

ENDFORM. " REPORT


*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_ALV .

FCT-SELTEXT_M = 'Plant'.
FCT-SELTEXT_L = 'Plant'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'WERKS'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.
FCT-SELTEXT_M = 'Material'.
FCT-SELTEXT_L = 'Material'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'MATNR'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Production Version'.


FCT-SELTEXT_L = 'Production Version'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'VERID'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Short text'.


FCT-SELTEXT_L = 'Short text'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'TEXT1'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Lot-size from'.


FCT-SELTEXT_L = 'Lot-size from '.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'BSTMI'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Lot-size to '.


FCT-SELTEXT_L = 'Lot-size to'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'BSTMA'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.
FCT-SELTEXT_M = 'Valid From'.
FCT-SELTEXT_L = 'Valid From'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'ADATU'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Valid To'.


FCT-SELTEXT_L = 'Valid To'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'BDATU'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Task List Type'.


FCT-SELTEXT_L = 'Task List Type'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'PLNTY'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Task List'.


FCT-SELTEXT_L = 'Task List'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'PLNNR'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Group Counter'.


FCT-SELTEXT_L = 'Group Counter'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'PLNAL'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Alternative BOM'.


FCT-SELTEXT_L = 'Alternative BOM'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'STLAL'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'BOM Usage'.


FCT-SELTEXT_L = 'BOM Usage'.
IF P_VALID = 'X'.
FCT-TABNAME = 'GT_FINAL'.
ELSE.
FCT-TABNAME = 'GT_FINAL1'.
ENDIF.
FCT-FIELDNAME = 'STLAN'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

IF P_VALID = 'X'. " DISPLAY REPORT


FOR VALID PRODUCTION VERSIONS.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZUTPP609'
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = LOUT
IT_FIELDCAT = IT_FCT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_FINAL[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZUTPP609'
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = LOUT
IT_FIELDCAT = IT_FCT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_FINAL1[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.

ENDFORM. " BUILD_ALV


*&---------------------------------------------------------------------*
*& Form BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM START_BDC .

IF GT_FINAL[] IS INITIAL.
MESSAGE I208(00) WITH 'No Prod.Versions will be created for selected data'.
STOP.
ELSE.

LOOP AT GT_FINAL INTO GS_FINAL.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL-MATNR'.

PERFORM BDC_FIELD USING 'MKAL-WERKS'


GS_FINAL-WERKS.
PERFORM BDC_FIELD USING 'MKAL-MATNR'
GS_FINAL-MATNR.
WRITE GS_FINAL-ADATU TO GS_FINAL-ADATU.
PERFORM BDC_FIELD USING 'MKAL_ADMIN-STTAG'
GS_FINAL-ADATU.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CREA'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'


'MKAL-WERKS'.
PERFORM BDC_FIELD USING 'MKAL-WERKS'
GS_FINAL-WERKS.
PERFORM BDC_FIELD USING 'MKAL-MATNR'
GS_FINAL-MATNR.
PERFORM BDC_FIELD USING 'MKAL_ADMIN-STTAG'
GS_FINAL-ADATU.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-STLAN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.

PERFORM BDC_FIELD USING 'MKAL_EXPAND-MATNR'


GS_FINAL-MATNR.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-VERID'
GS_FINAL-VERID.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-TEXT1'
GS_FINAL-TEXT1.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BSTMI'
'1'. "GS_FINAL-BSTMI.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BSTMA'
'999999'."GS_FINAL-BSTMA.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-ADATU'
GS_FINAL-ADATU."'25.09.2013'.
WRITE GS_FINAL-BDATU TO GS_FINAL-BDATU.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BDATU'
GS_FINAL-BDATU.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-PLNTY'
'N'.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-PLNNR'
GS_FINAL-PLNNR.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-ALNAL'
GS_FINAL-PLNAL.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-STLAL'
GS_FINAL-STLAL.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-STLAN'
GS_FINAL-STLAN.

IF P_ALORT IS NOT INITIAL AND C1 = 'X'.


PERFORM BDC_FIELD USING 'MKAL_EXPAND-ALORT'
P_ALORT.
ENDIF.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-VERID'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PRFG'.

PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=RW'.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-VERID'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CLOS'.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SAVE'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'


'MKAL-WERKS'.

CALL TRANSACTION 'C223' USING BDCDATA MODE 'N' UPDATE 'S'.


CLEAR : BDCDATA.
REFRESH : BDCDATA.
ENDLOOP.
ENDIF.

ENDFORM. " START_BDC

*&---------------------------------------------------------------------*
*& Form TOP_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM TOP_PAGE.

DATA: LV_DATE TYPE STRING,


LINE TYPE I.

CLEAR: IT_HEAD,LINE.
HEAD-TYP = 'H'.
IF LV_HEAD = 'X'.
HEAD-INFO = 'Following Production versions are created'.
ELSE.
IF P_VALID = 'X'.
HEAD-INFO = 'Valid records for Production version'.
ELSE.
HEAD-INFO = 'Invalid Records for Production version'.
ENDIF.
ENDIF.
APPEND HEAD TO IT_HEAD.

CONCATENATE SY-DATUM+6(2) '.'


SY-DATUM+4(2) '.' SY-DATUM+0(4) INTO LV_DATE.
CONDENSE LV_DATE.

HEAD-TYP = 'S'.
HEAD-KEY = 'Run Date'.
HEAD-INFO = LV_DATE.
APPEND HEAD TO IT_HEAD.
CLEAR : LV_HEAD.

IF P_VALID = 'X'.
DESCRIBE TABLE GT_FINAL[] LINES LINE.
HEAD-TYP = 'S'.
HEAD-KEY = 'Total Records:'.
HEAD-INFO = LINE.
APPEND HEAD TO IT_HEAD.
CLEAR : LINE.
ELSE.
DESCRIBE TABLE GT_FINAL1[] LINES LINE.
HEAD-TYP = 'S'.
HEAD-KEY = 'Total Records:'.
HEAD-INFO = LINE.
APPEND HEAD TO IT_HEAD.
CLEAR : LINE.
ENDIF.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
IT_LIST_COMMENTARY = IT_HEAD
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.

ENDFORM. "TOP_PAGE

*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
*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.
* IF FVAL <> SPACE.
* BDCDATA-FNAM = FNAM.
* BDCDATA-FVAL = FVAL.
* APPEND BDCDATA.
* ENDIF.
*ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form STATUS_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM STATUS_REPORT .

DATA: FCT TYPE SLIS_FIELDCAT_ALV,


IT_FCT TYPE SLIS_T_FIELDCAT_ALV,
LOUT TYPE SLIS_LAYOUT_ALV,
HEAD TYPE SLIS_LISTHEADER,
IT_HEAD TYPE SLIS_T_LISTHEADER.

CLEAR : IT_FCT[],IT_HEAD[].

IF GT_FINAL[] IS NOT INITIAL.

SELECT MATNR WERKS VERID BDATU ADATU STLAL STLAN PLNTY PLNNR ALNAL BSTMI BSTMA
ALORT PRFG_F FROM MKAL
INTO TABLE GT_STATUS FOR ALL ENTRIES IN GT_FINAL
WHERE MATNR = GT_FINAL-MATNR
AND WERKS = GT_FINAL-WERKS
AND VERID = GT_FINAL-VERID.
ENDIF.

IF GT_STATUS[] IS NOT INITIAL.


LV_HEAD = 'X'.
LOOP AT GT_STATUS INTO GS_STATUS.
CASE GS_STATUS-PRFG_F.
WHEN '1'.
MOVE: ICON_LED_GREEN TO GS_STATUS-ICON,
'OK' TO GS_STATUS-PRFG_F.
MODIFY GT_STATUS FROM GS_STATUS TRANSPORTING ICON PRFG_F.
WHEN '2'.
MOVE: ICON_LED_YELLOW TO GS_STATUS-ICON,
'WARNING' TO GS_STATUS-PRFG_F.
MODIFY GT_STATUS FROM GS_STATUS TRANSPORTING ICON PRFG_F.
WHEN '3'.
MOVE: ICON_LED_RED TO GS_STATUS-ICON,
'ERROR' TO GS_STATUS-PRFG_F.
MODIFY GT_STATUS FROM GS_STATUS TRANSPORTING ICON PRFG_F.
ENDCASE.
READ TABLE GT_FINAL INTO GS_FINAL
WITH KEY MATNR = GS_STATUS-MATNR
WERKS = GS_STATUS-WERKS
STLAL = GS_STATUS-STLAL
PLNNR = GS_STATUS-PLNNR.
IF SY-SUBRC = 0.
GS_STATUS-TEXT1 = GS_FINAL-TEXT1.
MODIFY GT_STATUS FROM GS_STATUS TRANSPORTING TEXT1.
ENDIF.
ENDLOOP.

FCT-SELTEXT_M = 'Plant'.
FCT-SELTEXT_L = 'Plant'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'WERKS'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Material'.
FCT-SELTEXT_L = 'Material'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'MATNR'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Production Version'.


FCT-SELTEXT_L = 'Production Version'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'VERID'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Short text'.


FCT-SELTEXT_L = 'Short text'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'TEXT1'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Lot-size to'.


FCT-SELTEXT_L = 'Lot-size to'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'BSTMI'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Lot-size from'.


FCT-SELTEXT_L = 'Lot-size from'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'BSTMA'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Valid From'.


FCT-SELTEXT_L = 'Valid From'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'ADATU'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Valid To'.


FCT-SELTEXT_L = 'Valid To'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'BDATU'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Task List Type'.


FCT-SELTEXT_L = 'Task List Type'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'PLNTY'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Task List'.


FCT-SELTEXT_L = 'Task List'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'PLNNR'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Group Counter'.


FCT-SELTEXT_L = 'Group Counter'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'PLNAL'.
FCT-OUTPUTLEN = '18'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Alternative BOM'.


FCT-SELTEXT_L = 'Alternative BOM'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'STLAL'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'BOM Usage'.


FCT-SELTEXT_L = 'BOM Usage'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'STLAN'.
FCT-OUTPUTLEN = '12'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

FCT-SELTEXT_M = 'Status'.
FCT-SELTEXT_L = 'Status'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'PRFG_F'.
FCT-OUTPUTLEN = '10'.
APPEND FCT TO IT_FCT.
CLEAR FCT.
*** Begin of +SK20141016
FCT-SELTEXT_M = 'Rec.Storage Loc.'.
FCT-SELTEXT_L = 'Rec.Storage Loc.'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'ALORT'.
FCT-OUTPUTLEN = '15'.
APPEND FCT TO IT_FCT.
CLEAR FCT.
*** End of +SK20141016
FCT-SELTEXT_M = 'ICON'.
FCT-SELTEXT_L = 'ICON'.
FCT-TABNAME = 'GT_STATUS'.
FCT-FIELDNAME = 'ICON'.
FCT-OUTPUTLEN = '1'.
APPEND FCT TO IT_FCT.
CLEAR FCT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZUTPP609'
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = LOUT
IT_FIELDCAT = IT_FCT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_STATUS[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDFORM. " STATUS_REPORT

*&---------------------------------------------------------------------*
*& Form BDC_OPEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BDC_OPEN .

CALL FUNCTION 'BDC_OPEN_GROUP'


EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = P_MAP
* HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = '%'
* DATFM = '%'
* IMPORTING
* QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.

ENDFORM. " BDC_OPEN


*&---------------------------------------------------------------------*
*& Form BDC_CLOSE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BDC_CLOSE .

CALL FUNCTION 'BDC_CLOSE_GROUP'


EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.

ENDFORM. " BDC_CLOSE


*&---------------------------------------------------------------------*
*& Form START_SESSION_BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM START_SESSION_BDC .

DATA : L_JOBNAME TYPE TBTCJOB-JOBNAME,


L_JOBCOUNT TYPE TBTCJOB-JOBCOUNT,
L_DEST TYPE PRI_PARAMS-PDEST VALUE 'LOCL',
L_LINSZ TYPE PRI_PARAMS-LINSZ VALUE '999999',
L_JOBSTATUS TYPE TBTCO-STATUS,
L_RQIDENT TYPE TSP01-RQIDENT.

IF GT_FINAL[] IS INITIAL.
MESSAGE I208(00) WITH 'No Prod.Versions will be created for selected data'.
STOP.
ELSE.
PERFORM BDC_OPEN.
LOOP AT GT_FINAL INTO GS_FINAL.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL-MATNR'.

PERFORM BDC_FIELD USING 'MKAL-WERKS'


GS_FINAL-WERKS.
PERFORM BDC_FIELD USING 'MKAL-MATNR'
GS_FINAL-MATNR.
WRITE GS_FINAL-ADATU TO GS_FINAL-ADATU.
PERFORM BDC_FIELD USING 'MKAL_ADMIN-STTAG'
GS_FINAL-ADATU.
PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CREA'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'


'MKAL-WERKS'.

PERFORM BDC_FIELD USING 'MKAL-WERKS'


GS_FINAL-WERKS.
PERFORM BDC_FIELD USING 'MKAL-MATNR'
GS_FINAL-MATNR.
PERFORM BDC_FIELD USING 'MKAL_ADMIN-STTAG'
GS_FINAL-ADATU.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-STLAN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.

PERFORM BDC_FIELD USING 'MKAL_EXPAND-MATNR'


GS_FINAL-MATNR.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-VERID'
GS_FINAL-VERID.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-TEXT1'
GS_FINAL-TEXT1.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BSTMI'
'1'. "GS_FINAL-BSTMI.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BSTMA'
'999999'."GS_FINAL-BSTMA.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-ADATU'
GS_FINAL-ADATU."'25.09.2013'.
WRITE GS_FINAL-BDATU TO GS_FINAL-BDATU.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-BDATU'
GS_FINAL-BDATU.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-PLNTY'
'N'.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-PLNNR'
GS_FINAL-PLNNR.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-ALNAL'
GS_FINAL-PLNAL.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-STLAL'
GS_FINAL-STLAL.
PERFORM BDC_FIELD USING 'MKAL_EXPAND-STLAN'
GS_FINAL-STLAN.

IF P_ALORT IS NOT INITIAL AND C1 = 'X'.


PERFORM BDC_FIELD USING 'MKAL_EXPAND-ALORT'
P_ALORT.
ENDIF.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-VERID'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PRFG'.

PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=RW'.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '2000'.


PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MKAL_EXPAND-VERID'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CLOS'.

PERFORM BDC_DYNPRO USING 'SAPLCMFV' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SAVE'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'


'MKAL-WERKS'.

* CALL TRANSACTION 'C223' USING BDCDATA MODE 'N' UPDATE 'S'.


CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'C223'
TABLES
DYNPROTAB = BDCDATA
EXCEPTIONS
OTHERS = 1.
CLEAR : BDCDATA.
REFRESH : BDCDATA.
ENDLOOP.
ENDIF.
PERFORM BDC_CLOSE.

* IF P_SIMRUN = 'X'.
** L_JOBNAME = SY-REPID.
** CALL FUNCTION 'JOB_OPEN'
** EXPORTING
** JOBNAME = L_JOBNAME
** IMPORTING
** JOBCOUNT = L_JOBCOUNT
** EXCEPTIONS
** CANT_CREATE_JOB = 1
** INVALID_JOB_DATA = 2
** JOBNAME_MISSING = 3
** OTHERS = 4.
** IF SY-SUBRC EQ 0.
*
* COMMIT WORK AND WAIT.
* SUBMIT RSBDCSUB TO SAP-SPOOL WITHOUT SPOOL DYNPRO AND RETURN
* WITH MAPPE = P_MAP " SESSION NAME
* WITH Z_VERARB = 'X'
* WITH FEHLER = ' ' " NOT BATCH SESSION IN ERROR
* WITH LOGALL = 'X'. " EXTENDED LOG
*
** IF SY-SUBRC EQ 0.
**
** CALL FUNCTION 'JOB_CLOSE'
** EXPORTING
** JOBCOUNT = L_JOBCOUNT
** JOBNAME = L_JOBNAME
** STRTIMMED = 'X'
** EXCEPTIONS
** CANT_START_IMMEDIATE = 1
** INVALID_STARTDATE = 2
** JOBNAME_MISSING = 3
** JOB_CLOSE_FAILED = 4
** JOB_NOSTEPS = 5
** JOB_NOTEX = 6
** LOCK_FAILED = 7
** OTHERS = 8.
**
** ENDIF.
** ENDIF.
* ENDIF.

ENDFORM. " START_SESSION_BDC

You might also like