‎2007 May 15 11:36 AM
Hello All..
1. I have created one basic list, now if i double click on any record then it should call another transaction... this is to be done using LIST PROCESSING. i need to write code in 'At Line Selection' but where to code this at line selection.
2. Also while designing selection screen i've created execute icon using
SET PF-STATUS.. but this is also appearing when basic list is being displayed.. i dont ant this to appear... no other buttons i.e.., back button, cancel are working...
Regards,
Radhi..
‎2007 May 15 11:41 AM
hi,
1) Check the dmeo program DEMO_LIST_AT_LINE_SELECTION
2) If you have not created any pf-status, then predefined buttons gets displayed.
Once you create a pf-status, only the buttons which are created in it gets displayed.
If you want to create a button on application toolbar in selection-screen, this can not be achieved using SET PF-STATUS.Check program DEMO_SEL_SCREEN_FUNCTION_KEY
Regards
Sailaja.
‎2007 May 15 11:59 AM
Hi
Sample program for At Line-Selection
&----
*& Report ZHC010F_CONFIRMATION_COMPACT *
*& *
&----
&----
Module PP - PRODUCTION PLANNING
&----
&----
REPORT ZHC010F_CONFIRMATION_COMPACT LINE-SIZE 275 LINE-COUNT 50 NO STANDARD PAGE HEADING.
*
TABLES : ZHT010_FORGE,
MARC.
*
TYPES : BEGIN OF I_CONFIRM,
ZBUDAT TYPE ZHT010_FORGE-ZBUDAT,
MATNR TYPE ZHT010_FORGE-MATNR,
PLWRK TYPE ZHT010_FORGE-PLWRK,
ZSHIFT TYPE ZHT010_FORGE-ZSHIFT,
ZWRKCE TYPE ZHT010_FORGE-ZWRKCE,
ZWIRECD TYPE ZHT010_FORGE-ZWIRECD,
ZACQTY TYPE ZHT010_FORGE-ZACQTY,
ZREQTY TYPE ZHT010_FORGE-ZREQTY,
ZSCQTY TYPE ZHT010_FORGE-ZSCQTY,
ZSEQTY TYPE ZHT010_FORGE-ZSEQTY,
ENDBIT TYPE ZHT010_FORGE-ENDBIT,
ENDBIT2 TYPE ZHT010_FORGE-ENDBIT2,
TIMLO TYPE ZHT010_FORGE-TIMLO,
ZCONFIRM TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMREJ TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMSC TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMSE TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBIT TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBIT2 TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBUR TYPE ZHT010_FORGE-ZCONFIRMBUR,
TOKEN TYPE ZHT010_FORGE-TOKEN,
JONUMBER TYPE ZHT010_FORGE-JONUMBER,
CHARG TYPE ZHT010_FORGE-CHARG,
ZACCISSQTY TYPE ZHT010_FORGE-ZACCISSQTY,
ZREJISSQTY TYPE ZHT010_FORGE-ZREJISSQTY,
ZSCMISSQTY TYPE ZHT010_FORGE-ZSCMISSQTY,
ZSEMISSQTY TYPE ZHT010_FORGE-ZSEMISSQTY,
VERID TYPE ZHT010_FORGE-VERID,
MARK(1),
DELETE(1),
END OF I_CONFIRM.
TYPES: BEGIN OF TAB_TYPE,
FCODE LIKE RSMPE-FUNC,
END OF TAB_TYPE.
*
TYPES : BEGIN OF STR_BACKFLUSH,
MATNR LIKE ZHT010_FORGE-MATNR,
PLWRK LIKE ZHT010_FORGE-PLWRK,
GSMNG LIKE PLAF-GSMNG,
ZWRKCE LIKE ZHT010_FORGE-ZWRKCE,
ZBUDAT LIKE ZHT010_FORGE-ZBUDAT,
ZSHIFT LIKE ZHT010_FORGE-ZSHIFT,
TIMLO LIKE ZHT010_FORGE-TIMLO,
ZWIRECD LIKE ZHT010_FORGE-ZWIRECD,
ZACQTY LIKE ZHT010_FORGE-ZACQTY,
ZREQTY LIKE ZHT010_FORGE-ZREQTY,
ZSCQTY LIKE ZHT010_FORGE-ZSCQTY,
ZSEQTY LIKE ZHT010_FORGE-ZSEQTY,
ENDBIT LIKE ZHT010_FORGE-ENDBIT,
ENDBIT2 LIKE ZHT010_FORGE-ENDBIT2,
BURSLG LIKE ZHT010_FORGE-BURSLG,
TOKEN LIKE ZHT010_FORGE-TOKEN,
JONUMBER LIKE ZHT010_FORGE-JONUMBER,
CHARG LIKE ZHT010_FORGE-CHARG,
MARK ,
VERID LIKE MKAL-VERID,
END OF STR_BACKFLUSH.
*
DATA : REM TYPE I,
W_COUNT TYPE I VALUE 4,
WA(200),
W_ZACQTY(15),
W_ZREQTY(15),
W_ZSCQTY(15),
W_ZSEQTY(15),
W_ENDBIT(15),
W_ENDBIT2(15),
W_ACCISSQTY(15),
W_REJISSQTY(15),
W_SCMISSQTY(15),
W_SEMISSQTY(15),
W_CONFIRM,
W_CONFIRMREJ,
W_CONFIRMSC,
W_CONFIRMSE,
W_VERID LIKE ZHT010_FORGE-VERID,
W_START_LINE TYPE I,
W_END_LINE TYPE I,
W_START_COUNT TYPE I,
W_END_COUNT TYPE I,
W_LINES TYPE I ,
W_TAB TYPE TAB_TYPE,
W_MOD TYPE I,
W_SPC(15),
W_MATNR TYPE MARA-MATNR,
W_CHARG TYPE ZHT010_FORGE-CHARG,
W_TIMLO TYPE ZHT010_FORGE-TIMLO,
W_WIRECD TYPE MARA-MATNR,
W_JONO TYPE ZHT010_FORGE-JONUMBER,
W_MACHINE TYPE ZHT010_FORGE-ZWRKCE,
W_LBKUM TYPE MBEW-LBKUM,
ZWCD TYPE ZHT010_FORGE-ZWIRECD,
W_BI TYPE C,
W_LINECOUNT TYPE I,
W_MAKTX LIKE MAKT-MAKTX,
W_STLAL LIKE STKO-STLAL.
TYPES : BEGIN OF I_ST,
MATNR TYPE MARA-MATNR,
WIRECD TYPE MARA-MATNR, "Entered in ZHC018
UOM TYPE MARA-MEINS,
RMCODE TYPE MARA-MATNR, "Actual RM by BOM Explosion
MEINS TYPE MARA-MEINS, "Actual meins of RM by BOM
SPC TYPE MBEW-LBKUM,
END OF I_ST.
TYPES :BEGIN OF STR_BATCH ,
MARK(1),
MATNR LIKE MARA-MATNR,
WIRECD LIKE MARA-MATNR,
CHARG LIKE MCHB-CHARG,
CLABS LIKE MCHB-CLABS,
QTY LIKE MSEG-ERFMG,
UOM LIKE MSEG-ERFME,
SCRPQTY LIKE MSEG-MENGE,
MEINS LIKE MSEG-ERFME,
PENQTY LIKE MCHB-CLABS,
POSSQTY LIKE MCHB-CLABS,
TOPOST LIKE MCHB-CLABS,
REQTY LIKE MCHB-CLABS,
TIMLO LIKE ZHT010_FORGE-TIMLO,
END OF STR_BATCH.
DATA: IT_CONFIRM TYPE STANDARD TABLE OF I_CONFIRM WITH HEADER LINE,
IT_BACKFLUSH TYPE STANDARD TABLE OF STR_BACKFLUSH WITH HEADER LINE
,
TAB TYPE STANDARD TABLE OF TAB_TYPE WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE 10,
IT_STBD_SCRP TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE_SCRP TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK_SCRP TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM_SCRP TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP_SCRP TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT_SCRP TYPE CSXTPL OCCURS 0 WITH HEADER LINE,
IT_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
I_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
IT_STPOX TYPE STPOX OCCURS 0 WITH HEADER LINE,
IT_MAT TYPE CSCMAT OCCURS 0 WITH HEADER LINE,
WA_STPOX LIKE IT_STPOX,
IT_ST TYPE STANDARD TABLE OF I_ST WITH HEADER LINE,
IT_ST1 TYPE STANDARD TABLE OF I_ST WITH HEADER LINE,
IT_STBD TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT TYPE CSXTPL OCCURS 0 WITH HEADER LINE,
IT_STBD_ACTQTY TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE_ACTQTY TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK_ACTQTY TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM_ACTQTY TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP_ACTQTY TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT_ACTQTY TYPE CSXTPL OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : PR_WERKS LIKE IT_CONFIRM-PLWRK OBLIGATORY,
PR_BUDAT LIKE IT_CONFIRM-ZBUDAT OBLIGATORY.
SELECT-OPTIONS : SO_SHIFT FOR IT_CONFIRM-ZSHIFT NO-EXTENSION NO INTERVALS,
SO_MATNR FOR IT_CONFIRM-MATNR,
SO_WORK FOR IT_CONFIRM-ZWRKCE ,
SO_TOKEN FOR ZHT010_FORGE-TOKEN,
SO_CELL FOR MARC-FEVOR NO-EXTENSION NO INTERVALS.
PARAMETERS : PR_CONFM AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B1.
*
**This selection screen gives an option to execute in
**foreground or in the background.
**This is needed to analyse any errors while posting data.
SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME TITLE TEXT-018 NO
INTERVALS.
PARAMETERS: PR_BIN RADIOBUTTON GROUP BI DEFAULT 'X',
PR_BIA RADIOBUTTON GROUP BI.
SELECTION-SCREEN END OF BLOCK RADIO.
DATA W_WERKS LIKE ZHT010_FORGE-PLWRK.
AT SELECTION-SCREEN.
IF PR_WERKS IS NOT INITIAL.
IF PR_WERKS <> '4100'.
SET CURSOR FIELD 'PR_WERKS'.
MESSAGE E000(ZSFL) WITH 'Plant 4100 Only Allowed'.
EXIT.
ENDIF.
ENDIF.
IF PR_BIA = 'X'.
IF SY-UNAME = 'PP4100A01' OR SY-UNAME = 'PP4100B01' OR SY-UNAME = 'PP4100C01' OR
SY-UNAME = 'PP4100C02' OR SY-UNAME = 'PP4200B01' OR SY-UNAME = 'PP4200C01' OR
SY-UNAME = 'PP4200C02'.
MESSAGE E000(ZSFL) WITH 'No Authorization to Run in Foreground'.
EXIT.
ENDIF.
ENDIF.
START-OF-SELECTION.
*******************
MOVE 'DELETE' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
MOVE 'SELA' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
MOVE 'DSELA' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
SET PF-STATUS 'CONF' EXCLUDING TAB.
IF PR_CONFM = 'X'.
SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
A~ZREQTY
AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
A~ZCONFIRMREJ
AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
AMATNR AND BWERKS = PR_WERKS
INNER JOIN MARA AS C ON CMATNR = AMATNR
INTO TABLE IT_CONFIRM
WHERE A~PLWRK EQ PR_WERKS
AND A~ZSHIFT IN SO_SHIFT
AND A~ZBUDAT EQ PR_BUDAT
AND A~MATNR IN SO_MATNR
AND A~ZWRKCE IN SO_WORK
AND A~TOKEN IN SO_TOKEN
AND B~FEVOR IN SO_CELL
AND C~FERTH = 'RCOMP'
AND ( A~ZCONFIRM = ''
OR A~ZCONFIRMREJ = ''
OR A~ZCONFIRMSC = ''
OR A~ZCONFIRMSE = '' )
or a~zconfirmbit = '' )
OR a~zconfirmbit2 = '' ) and
AND KZLOESCH <> 'X'.
ELSE.
SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
A~ZREQTY
AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
A~ZCONFIRMREJ
AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
AMATNR AND BWERKS = PR_WERKS
INNER JOIN MARA AS C ON CMATNR = AMATNR
INTO TABLE IT_CONFIRM
WHERE A~PLWRK EQ PR_WERKS
AND A~ZSHIFT IN SO_SHIFT
AND A~ZBUDAT EQ PR_BUDAT
AND A~MATNR IN SO_MATNR
AND A~ZWRKCE IN SO_WORK
AND A~TOKEN IN SO_TOKEN
AND B~FEVOR IN SO_CELL
AND C~FERTH = 'RCOMP' AND
KZLOESCH <> 'X'.
ENDIF.
W_LINES = LINES( IT_CONFIRM ).
IF W_LINES LT 1.
MESSAGE I999(ZSFL) WITH 'No Records Found For The Seln Criteria'.
EXIT.
ENDIF.
END-OF-SELECTION.
SORT IT_CONFIRM BY MATNR.
LOOP AT IT_CONFIRM.
W_MATNR = IT_CONFIRM-MATNR.
REM = SY-TABIX MOD 2.
W_WIRECD = IT_CONFIRM-ZWIRECD.
W_TIMLO = IT_CONFIRM-TIMLO.
W_CHARG = IT_CONFIRM-CHARG.
W_JONO = IT_CONFIRM-JONUMBER.
W_MACHINE = IT_CONFIRM-ZWRKCE.
W_ZACQTY = IT_CONFIRM-ZACQTY.
W_ZREQTY = IT_CONFIRM-ZREQTY.
W_ZSCQTY = IT_CONFIRM-ZSCQTY.
W_ZSEQTY = IT_CONFIRM-ZSEQTY.
W_ENDBIT = IT_CONFIRM-ENDBIT.
W_ENDBIT2 = IT_CONFIRM-ENDBIT2.
W_ACCISSQTY = IT_CONFIRM-ZACCISSQTY.
W_REJISSQTY = IT_CONFIRM-ZREJISSQTY.
W_SCMISSQTY = IT_CONFIRM-ZSCMISSQTY.
W_SEMISSQTY = IT_CONFIRM-ZSEMISSQTY.
W_CONFIRM = IT_CONFIRM-ZCONFIRM.
W_CONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ.
W_CONFIRMSC = IT_CONFIRM-ZCONFIRMSC.
W_CONFIRMSE = IT_CONFIRM-ZCONFIRMSE.
W_VERID = IT_CONFIRM-VERID.
SHIFT W_ZACQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZREQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZSCQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZSEQTY LEFT DELETING LEADING SPACE.
SHIFT W_ENDBIT LEFT DELETING LEADING SPACE.
SHIFT W_ENDBIT2 LEFT DELETING LEADING SPACE.
SHIFT W_ACCISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_REJISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_SCMISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_SEMISSQTY LEFT DELETING LEADING SPACE.
SELECT SINGLE MAKTX INTO W_MAKTX FROM MAKT WHERE MATNR =
IT_CONFIRM-MATNR AND SPRAS = 'E'.
IF IT_CONFIRM-ZCONFIRM = 'X' AND IT_CONFIRM-ZCONFIRMREJ = 'X' AND
IT_CONFIRM-ZCONFIRMSC = 'X'
AND IT_CONFIRM-ZCONFIRMSE = 'X' AND IT_CONFIRM-ZCONFIRMBIT = 'X'
AND IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
WRITE : / SY-VLINE,
IT_CONFIRM-MARK AS CHECKBOX INPUT OFF ,
IT_CONFIRM-MATNR UNDER TEXT-002,
W_MAKTX(20) UNDER TEXT-027,
IT_CONFIRM-ZSHIFT UNDER TEXT-011,
IT_CONFIRM-ZWRKCE UNDER TEXT-010,
IT_CONFIRM-ZWIRECD UNDER TEXT-003,
IT_CONFIRM-CHARG UNDER TEXT-022,
IT_CONFIRM-JONUMBER UNDER TEXT-019.
ELSE.
WRITE : / SY-VLINE,
IT_CONFIRM-MARK AS CHECKBOX,
IT_CONFIRM-MATNR UNDER TEXT-002 HOTSPOT ON,
W_MAKTX(20) UNDER TEXT-027,
IT_CONFIRM-ZSHIFT UNDER TEXT-011,
IT_CONFIRM-ZWRKCE UNDER TEXT-010,
IT_CONFIRM-ZWIRECD UNDER TEXT-003,
IT_CONFIRM-CHARG UNDER TEXT-022 ,
IT_CONFIRM-JONUMBER UNDER TEXT-019.
ENDIF.
Check if the burslg has already been posted. Incase it
has been posted then acc, rej , pr sc and se sc qnty cannot
be in editable
IF IT_CONFIRM-ZCONFIRM EQ 'X'. "or it_confirm-zconfirmbur eq 'X'.
IF IT_CONFIRM-ZCONFIRM EQ 'X' .
WRITE W_ZACQTY UNDER TEXT-004 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZACQTY UNDER TEXT-004 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZACQTY UNDER TEXT-004 INPUT OFF.
ENDIF.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' .
WRITE W_ZREQTY UNDER TEXT-005 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZREQTY UNDER TEXT-005 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZREQTY UNDER TEXT-005. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X' .
WRITE W_ZSCQTY UNDER TEXT-006 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZSCQTY UNDER TEXT-006 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZSCQTY UNDER TEXT-006. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X' .
WRITE W_ZSEQTY UNDER TEXT-007 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZSEQTY UNDER TEXT-007 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZSEQTY UNDER TEXT-007. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
WRITE W_ENDBIT UNDER TEXT-008 COLOR 5 INTENSIFIED OFF.
ELSE.
WRITE W_ENDBIT UNDER TEXT-008. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
WRITE W_ENDBIT2 UNDER TEXT-009 COLOR 5 INTENSIFIED OFF.
ELSE.
WRITE W_ENDBIT2 UNDER TEXT-009. " input on.
ENDIF.
WRITE W_ACCISSQTY UNDER TEXT-023 COLOR 5 INTENSIFIED OFF.
WRITE W_REJISSQTY UNDER TEXT-024 COLOR 5 INTENSIFIED OFF.
WRITE W_SCMISSQTY UNDER TEXT-025 COLOR 5 INTENSIFIED OFF.
WRITE W_SEMISSQTY UNDER TEXT-026 COLOR 5 INTENSIFIED OFF.
WRITE 274 SY-VLINE.
HIDE: W_MATNR,W_WIRECD,W_ZACQTY,W_ZREQTY,W_ZSCQTY,
W_ZSEQTY,W_CHARG,W_JONO,W_MACHINE,W_TIMLO,
W_CONFIRM,W_CONFIRMREJ,W_CONFIRMSC,W_CONFIRMSE,W_VERID.
ULINE (274).
ENDLOOP.
TOP-OF-PAGE.
FORMAT COLOR 5 INTENSIFIED ON.
WRITE : 'Plant: ', PR_WERKS,
"'Shift: ', so_shift-low, ' To ' , so_shift-high,
'Posting date: ', PR_BUDAT.
WRITE : /''.
ULINE (274).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE :/1 SY-VLINE,
5 TEXT-002, " Material no.
21 TEXT-027, " Description
45 TEXT-011, " shift
50 TEXT-010, " Work center.
65 TEXT-003, " Wire code.
85 TEXT-022, " Heat Number
105 TEXT-019, " Job Order Number
125 TEXT-004, " Acc. qty.
140 TEXT-005, " Rej. qty.
154 TEXT-006, " Scrap.
170 TEXT-007, " Set qty.
185 TEXT-008, " Endbit in Kg.
199 TEXT-009, " SOP.
214 TEXT-023,
229 TEXT-024,
244 TEXT-025,
259 TEXT-026,
274 SY-VLINE.
FORMAT COLOR OFF.
WRITE :/''.
ULINE (274).
END-OF-PAGE.
in order to show the stock
of wire code and requirement qty of wirecode .
AT LINE-SELECTION.
************************************************
DATA: W_MEINS TYPE MARA-MEINS,
W_SPC1 TYPE MBEW-LBKUM,
W_STMAT TYPE MARA-MATNR,
W_QTY1 TYPE STKO-BMENG,
W_QTY2 TYPE STKO-BMENG,
W_QTY3 TYPE STKO-BMENG,
W_QTY4 TYPE STKO-BMENG,
W_TOTAL TYPE STKO-BMENG,
W_BRGEW TYPE MARA-BRGEW,
W_GEWEI TYPE MARA-GEWEI,
W_BUOM TYPE MARA-MEINS,
W_RQTY TYPE P DECIMALS 3,
w_ferth type mara-ferth,
TMATNR LIKE MARA-MATNR,
W_BATCH1(10),
W_BATCH2(10),
W_BATCH3(10),
W_BATCH4(10),
W_BATCH5(10),
W_BALQTY LIKE MCHB-CLABS,
w_penqty like mchb-clabs,
W_CLABS LIKE MCHB-CLABS.
IF SY-LILLI <= 4.
MESSAGE S000(ZSFL) WITH 'Select Correct Record'.
STOP.
ENDIF.
*zwcd = sy-lisel+64(18).
REFRESH IT_ST.
CLEAR IT_ST.
PERFORM F001-READ_MAT.
**Logic changed. the req qty should be shown from the BOM.
**Therefore these changes are needed.
CLEAR : IT_STBD,IT_STBE,IT_STBK,IT_STBM,IT_STBP,IT_STBT,W_QTY1,W_QTY2,
W_QTY3,W_TOTAL.
W_QTY1 = SY-LISEL+119(15).
W_QTY2 = SY-LISEL+137(15).
W_QTY3 = SY-LISEL+152(15).
W_QTY4 = SY-LISEL+167(15).
W_TOTAL = W_QTY1.
PERFORM F002-GET_QTY.
CLEAR : IT_STBD_SCRP,IT_STBE_SCRP,IT_STBK_SCRP,IT_STBM_SCRP,IT_STBP_SCRP
,IT_STBT_SCRP.
PERFORM F002-GET_SCRPQTY.
SORT IT_ST.
IF SY-LSIND = 1.
WINDOW STARTING AT 1 10 ENDING AT 135 20.
SET PF-STATUS 'ZCOMP'.
*to display batch and batch qty in pop up screen
REFRESH IT_BATCH[].
CLEAR :IT_BATCH , IT_ST,TMATNR.
LOOP AT IT_ST WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD.
IT_BATCH-MATNR = IT_ST-MATNR.
IT_BATCH-WIRECD = IT_ST-WIRECD .
IT_BATCH-TIMLO = W_TIMLO.
READ TABLE IT_STBP_SCRP WITH KEY OBJNR = IT_ST-RMCODE.
IF SY-SUBRC = 0.
IF IT_ST-UOM = IT_ST-MEINS.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG.
ELSE.
IF IT_ST-MEINS = 'KG' AND IT_ST-UOM = 'TO'.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG / 1000.
ELSEIF IT_ST-MEINS = 'TO' AND IT_ST-UOM ='KG'.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG * 1000.
ENDIF.
ENDIF.
ENDIF.
SELECT SINGLE MATNR INTO TMATNR FROM MCHB WHERE MATNR =
IT_BATCH-WIRECD.
IF SY-SUBRC <> 0.
READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR WIRECD =
IT_BATCH-WIRECD.
IF SY-SUBRC <> 0.
APPEND IT_BATCH.
ENDIF.
ELSE.
SELECT CLABS CHARG INTO (IT_BATCH-CLABS , IT_BATCH-CHARG) FROM
MCHB
WHERE MATNR = IT_ST-WIRECD AND WERKS = PR_WERKS AND LGORT =
'0007'.
READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR WIRECD =
IT_ST-WIRECD
CHARG = IT_BATCH-CHARG .
IF SY-SUBRC <> 0.
APPEND IT_BATCH.
ENDIF.
ENDSELECT.
ENDIF.
CLEAR :IT_BATCH , IT_STBP_SCRP.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_BATCH COMPARING WIRECD CHARG.
DELETE IT_BATCH WHERE CLABS = 0.
ULINE AT /1(134).
FORMAT COLOR 5 INTENSIFIED OFF.
WRITE : /1 SY-VLINE,
5 TEXT-003, " Wire code.
23(1) SY-VLINE,
25 TEXT-013,
39(1) SY-VLINE,
40 TEXT-014,
43(1) SY-VLINE,
44 TEXT-015,
59(1) SY-VLINE,
60 TEXT-020,
71(1) SY-VLINE,
72 TEXT-021,
90(1) SY-VLINE,
91 'Pending Qty',
104(1) SY-VLINE,
105 'Possible Qty',
119(1) SY-VLINE,
120 'To Post',
134(1) SY-VLINE.
ULINE AT /1(134).
CLEAR IT_ST.
SORT IT_ST.
DELETE ADJACENT DUPLICATES FROM IT_ST COMPARING ALL FIELDS.
SORT IT_ST.
REFRESH IT_ST1.
CLEAR: IT_ST1,IT_ST.
LOOP AT IT_ST WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD.
MOVE-CORRESPONDING IT_ST TO IT_ST1.
APPEND IT_ST1.
ENDLOOP.
SORT: IT_ST,IT_ST1.
DELETE IT_ST1 WHERE MATNR NE W_MATNR.
SORT: IT_ST,IT_ST1.
CLEAR: IT_ST1.
LOOP AT IT_ST1 WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD .
W_MEINS = IT_ST1-MEINS.
W_SPC = IT_ST1-SPC.
W_STMAT = IT_ST1-WIRECD.
**ZC127 has only a one to one relationship to BOM therefore only one
**line in the internal table is expected.
CLEAR IT_STBP.
READ TABLE IT_STBP WITH KEY OBJNR = IT_ST1-RMCODE.
IF IT_ST1-UOM = IT_ST1-MEINS .
W_RQTY = IT_STBP-MNGLG.
ELSE.
IF IT_ST1-MEINS = 'KG' AND IT_ST1-UOM = 'TO'.
W_RQTY = IT_STBP-MNGLG / 1000.
ELSEIF IT_ST1-MEINS = 'TO' AND IT_ST1-UOM = 'KG'.
W_RQTY = IT_STBP-MNGLG * 1000.
ENDIF.
ENDIF.
FORMAT COLOR 2 INTENSIFIED OFF.
CLEAR : W_BATCH1,W_BATCH2,W_BATCH3,W_BATCH4,W_BATCH5,W_BALQTY,
W_CLABS.
SPLIT W_CHARG AT ',' INTO W_BATCH1 W_BATCH2 W_BATCH3 W_BATCH4
W_BATCH5.
DELETE IT_BATCH WHERE CHARG <> W_BATCH1 AND CHARG <> W_BATCH2 AND
CHARG <> W_BATCH3
AND CHARG <> W_BATCH4 AND CHARG <> W_BATCH5
AND MATNR = W_MATNR
AND WIRECD = W_WIRECD AND TIMLO = W_TIMLO.
W_BALQTY = W_RQTY.
LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD AND
TIMLO = W_TIMLO.
SELECT SINGLE PENDINGQTY FROM ZHT012_JOBORDNO INTO
IT_BATCH-PENQTY WHERE LOT = IT_BATCH-CHARG AND
RMCODE = W_WIRECD AND
JO_NO = W_JONO AND
MACHINE = W_MACHINE.
IF IT_BATCH-PENQTY >= IT_BATCH-CLABS.
W_CLABS = IT_BATCH-CLABS.
ELSE.
W_CLABS = IT_BATCH-PENQTY.
ENDIF.
IF W_BALQTY > W_CLABS.
IT_BATCH-TOPOST = W_CLABS.
W_BALQTY = W_BALQTY - W_CLABS.
ELSEIF W_BALQTY < W_CLABS.
IT_BATCH-TOPOST = W_BALQTY.
W_BALQTY = W_BALQTY - IT_BATCH-TOPOST.
ENDIF.
IF IT_BATCH-PENQTY < IT_BATCH-CLABS.
IT_BATCH-POSSQTY = IT_BATCH-PENQTY.
ELSEIF IT_BATCH-CLABS < IT_BATCH-PENQTY.
IT_BATCH-POSSQTY = IT_BATCH-CLABS.
ELSEIF IT_BATCH-CLABS = IT_BATCH-PENQTY.
IT_BATCH-POSSQTY = IT_BATCH-CLABS.
ENDIF.
MODIFY IT_BATCH .
CLEAR IT_BATCH.
ENDLOOP.
LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD .
READ TABLE IT_STBP_ACTQTY WITH KEY OBJNR = IT_ST1-RMCODE.
FORMAT COLOR 2 INTENSIFIED OFF.
WRITE:/1 SY-VLINE,
3 IT_BATCH-MARK AS CHECKBOX,
IT_BATCH-WIRECD UNDER TEXT-003,
23(1) SY-VLINE.
ON CHANGE OF IT_BATCH-WIRECD.
AT NEW WIRECD.
WRITE :
W_SPC UNDER TEXT-013 LEFT-JUSTIFIED.
ENDON.
ENDAT.
WRITE: 39(1) SY-VLINE,
IT_ST1-UOM UNDER TEXT-014 ,
43(1) SY-VLINE,
W_RQTY UNDER TEXT-015 LEFT-JUSTIFIED,
59(1) SY-VLINE,
60 IT_BATCH-CHARG,
71(1) SY-VLINE,
72 IT_BATCH-CLABS LEFT-JUSTIFIED,
90(1) SY-VLINE,
91 IT_BATCH-PENQTY LEFT-JUSTIFIED,
104(1) SY-VLINE,
105 IT_BATCH-POSSQTY LEFT-JUSTIFIED,
119(1) SY-VLINE,
120 IT_BATCH-TOPOST LEFT-JUSTIFIED,
134(1) SY-VLINE.
IT_BATCH-QTY = IT_STBP_ACTQTY-MNGLG.
IT_BATCH-UOM = IT_ST1-UOM.
IT_BATCH-MEINS = IT_ST1-MEINS.
IT_BATCH-REQTY = W_RQTY.
MODIFY IT_BATCH TRANSPORTING QTY UOM MEINS REQTY.
ENDLOOP.
CLEAR : IT_BATCH , IT_STBP_ACTQTY.
ENDLOOP.
ULINE AT /1(134).
ENDIF.
AT USER-COMMAND.
****************
CLEAR W_MOD.
CASE SY-UCOMM.
WHEN 'SELA'.
W_COUNT = 5.
LOOP AT IT_CONFIRM.
IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = '' OR
IT_CONFIRM-ZCONFIRMSC = ''
OR IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = '' OR
IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
IT_CONFIRM-MARK = 'X'.
MODIFY IT_CONFIRM.
READ LINE W_COUNT.
MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
WHEN 'DSELA'.
W_COUNT = 5.
LOOP AT IT_CONFIRM.
IT_CONFIRM-MARK = ''.
MODIFY IT_CONFIRM.
READ LINE W_COUNT.
MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM ''.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
WHEN 'BLOCK'.
W_COUNT = 5.
W_START_COUNT = W_START_LINE - W_COUNT.
W_START_COUNT = W_START_COUNT + 1.
W_END_COUNT = W_END_LINE - W_COUNT.
W_END_COUNT = W_END_COUNT + 1.
REM = W_START_COUNT MOD 2.
IF REM EQ 0.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
ELSE.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
ENDIF.
REM = W_END_COUNT MOD 2.
IF REM EQ 0.
READ LINE W_END_LINE.
MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
ELSE.
READ LINE W_END_LINE.
MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
ENDIF.
LOOP AT IT_CONFIRM FROM W_START_COUNT TO W_END_COUNT.
IT_CONFIRM-MARK = 'X'.
MODIFY IT_CONFIRM.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
W_START_LINE = W_START_LINE + 1.
ENDLOOP.
CLEAR : W_START_COUNT, W_END_COUNT, W_START_LINE, W_END_LINE.
WHEN 'SAV'.
DATA : W_TCOUNT TYPE I VALUE 0.
W_LINECOUNT = 4.
CLEAR IT_BATCH.
LOOP AT IT_BATCH.
READ LINE W_LINECOUNT FIELD VALUE IT_BATCH-MARK.
IF IT_BATCH-MARK = 'X'.
W_TCOUNT = W_TCOUNT + 1.
MODIFY IT_BATCH TRANSPORTING MARK.
READ TABLE I_BATCH WITH KEY MATNR = IT_BATCH-MATNR
WIRECD = IT_BATCH-WIRECD
CHARG = IT_BATCH-CHARG
TIMLO = IT_BATCH-TIMLO.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING IT_BATCH TO I_BATCH.
APPEND I_BATCH.
ENDIF.
CLEAR : IT_BATCH , I_BATCH.
ENDIF.
W_LINECOUNT = W_LINECOUNT + 1.
ENDLOOP.
IF W_TCOUNT = 0.
MESSAGE E000(ZSFL) WITH 'Select Atleast One Entry'.
ENDIF.
SELECT SINGLE WERKS INTO W_WERKS FROM MAST WHERE WERKS = PR_WERKS AND MATNR = W_MATNR.
IF SY-SUBRC = 0.
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = W_MATNR AND
VERID = W_VERID.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01'
DATUV = SY-DATUM
MKTLS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
STLAL = W_STLAL
TABLES
STB = IT_STPOX.
ENDIF.
CLEAR W_TCOUNT.
LOOP AT IT_BATCH WHERE MARK = 'X'.
AT NEW WIRECD.
W_TCOUNT = W_TCOUNT + 1.
ENDAT.
ENDLOOP.
DESCRIBE TABLE IT_STPOX LINES SY-TFILL.
IF W_TCOUNT <> SY-TFILL.
MESSAGE E000(ZSFL) WITH 'Select all Components as in BOM'.
ENDIF.
SET SCREEN 0.
SET USER-COMMAND 'BACK'.
WHEN 'SAVE'.
DATA W_MARK TYPE I VALUE 0.
W_COUNT = 5.
CLEAR IT_BACKFLUSH.
REFRESH IT_BACKFLUSH.
LOOP AT IT_CONFIRM.
CLEAR W_ZACQTY.
CLEAR W_ZREQTY.
CLEAR W_ZSCQTY.
CLEAR W_ZSEQTY.
CLEAR W_ENDBIT.
CLEAR W_ENDBIT2.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
IF IT_CONFIRM-MARK EQ 'X'.
READ TABLE I_BATCH WITH KEY MATNR = IT_CONFIRM-MATNR WIRECD = IT_CONFIRM-ZWIRECD
TIMLO = IT_CONFIRM-TIMLO.
IF SY-SUBRC <> 0.
W_MARK = W_MARK + 1.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZACQTY.
IT_CONFIRM-ZACQTY = W_ZACQTY.
IF IT_CONFIRM-ZACQTY EQ 0.
IT_CONFIRM-ZCONFIRM = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZREQTY.
IT_CONFIRM-ZREQTY = W_ZREQTY.
IF IT_CONFIRM-ZREQTY EQ 0.
IT_CONFIRM-ZCONFIRMREJ = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
IT_CONFIRM-ZSCQTY = W_ZSCQTY.
IF IT_CONFIRM-ZSCQTY EQ 0.
IT_CONFIRM-ZCONFIRMSC = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
IT_CONFIRM-ZSEQTY = W_ZSEQTY.
IF IT_CONFIRM-ZSEQTY EQ 0.
IT_CONFIRM-ZCONFIRMSE = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ENDBIT.
IT_CONFIRM-ENDBIT = W_ENDBIT.
IF IT_CONFIRM-ENDBIT EQ 0.
IT_CONFIRM-ZCONFIRMBIT = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
IF IT_CONFIRM-ENDBIT2 EQ 0.
IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
ENDIF.
PERFORM CHECK_FLAG_ROUTINE.
PERFORM CHECK_BATCH.
MODIFY IT_CONFIRM.
CLEAR IT_BACKFLUSH.
MOVE-CORRESPONDING IT_CONFIRM TO IT_BACKFLUSH.
UPDATE ZHT010_FORGE
SET ZACQTY = W_ZACQTY
ZREQTY = W_ZREQTY
ZSCQTY = W_ZSCQTY
ZSEQTY = W_ZSEQTY
ENDBIT = W_ENDBIT
ENDBIT2 = W_ENDBIT2
ZCONFIRM = IT_CONFIRM-ZCONFIRM
ZCONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ
ZCONFIRMSC = IT_CONFIRM-ZCONFIRMSC
ZCONFIRMSE = IT_CONFIRM-ZCONFIRMSE
ZCONFIRMBIT = IT_CONFIRM-ZCONFIRMBIT
ZCONFIRMBIT2 = IT_CONFIRM-ZCONFIRMBIT2
WHERE ZBUDAT EQ IT_CONFIRM-ZBUDAT
AND MATNR EQ IT_CONFIRM-MATNR
AND PLWRK EQ IT_CONFIRM-PLWRK
AND ZSHIFT EQ IT_CONFIRM-ZSHIFT
AND JONUMBER EQ IT_CONFIRM-JONUMBER
AND ZWRKCE EQ IT_CONFIRM-ZWRKCE
AND TIMLO EQ IT_CONFIRM-TIMLO.
Transfer recs into the IT only if atleast one column
needs to be posted.
IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = ''
OR IT_CONFIRM-ZCONFIRMSC = ''
OR IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = ''
OR IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
APPEND IT_BACKFLUSH.
ENDIF.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
IF W_MARK > 0.
MESSAGE E000(ZSFL) WITH 'Select the component'.
ENDIF.
DELETE IT_BACKFLUSH WHERE ZACQTY = 0 AND ZREQTY = 0 AND ZSCQTY = 0 AND ZSEQTY = 0.
DESCRIBE TABLE IT_BACKFLUSH.
CHECK SY-TFILL GT 0.
SET PARAMETER ID 'ZPLWRK' FIELD PR_WERKS.
SET PARAMETER ID 'ZBUDAT' FIELD PR_BUDAT.
IF PR_BIN = 'X'.
W_BI = 'N'.
ELSEIF PR_BIA = 'X'.
W_BI = 'A'.
ENDIF.
EXPORT W_BI FROM W_BI TO MEMORY ID 'W_BI'.
EXPORT IT_BACKFLUSH TO MEMORY ID 'CONFIRM'.
EXPORT I_BATCH TO MEMORY ID 'TMPBATCH'.
CALL TRANSACTION 'ZHC010_FINAL'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'ENTER'.
W_COUNT = 7.
LOOP AT IT_CONFIRM.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
IF IT_CONFIRM-MARK EQ 'X'.
READ LINE W_COUNT FIELD VALUE W_ZACQTY.
IT_CONFIRM-ZACQTY = W_ZACQTY.
READ LINE W_COUNT FIELD VALUE W_ZREQTY.
IT_CONFIRM-ZREQTY = W_ZREQTY.
READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
IT_CONFIRM-ZSCQTY = W_ZSCQTY.
READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
IT_CONFIRM-ZSEQTY = W_ZSEQTY.
READ LINE W_COUNT FIELD VALUE W_ENDBIT.
IT_CONFIRM-ENDBIT = W_ENDBIT.
READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
MODIFY IT_CONFIRM.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 7.
ELSE.
W_COUNT = W_COUNT + 1.
ENDIF.
ENDLOOP.
WHEN 'DELETE'.
W_COUNT = 5.
CLEAR IT_BACKFLUSH.
LOOP AT IT_CONFIRM.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-DELETE.
IF IT_CONFIRM-DELETE EQ 'X'.
Tech Note : Provision to delete any record shld be given cos it wud
create prbs
IF ( IT_CONFIRM-ZCONFIRM = '' AND IT_CONFIRM-ZCONFIRMREJ = ''
AND IT_CONFIRM-ZCONFIRMSC = ''
AND IT_CONFIRM-ZCONFIRMSE = '' AND IT_CONFIRM-ZCONFIRMBIT =
'' AND IT_CONFIRM-ZCONFIRMBIT2 = ''
AND IT_CONFIRM-ZCONFIRMBUR = '' ) .
DELETE FROM ZHT010_FORGE
WHERE ZBUDAT = IT_CONFIRM-ZBUDAT
AND MATNR = IT_CONFIRM-MATNR
AND PLWRK = IT_CONFIRM-PLWRK
AND ZSHIFT = IT_CONFIRM-ZSHIFT
AND ZWRKCE = IT_CONFIRM-ZWRKCE
AND TIMLO = IT_CONFIRM-TIMLO.
ENDIF.
ENDIF.
W_COUNT = W_COUNT + 1.
ENDLOOP.
LEAVE PROGRAM.
WHEN 'RW'.
SET SCREEN 0.
WHEN 'BACK'.
SET SCREEN 0.
ENDCASE.
&----
*& Form check_flag_routine
&----
text
----
--> p1 text
<-- p2 text
----
FORM CHECK_FLAG_ROUTINE .
IF IT_CONFIRM-ZCONFIRM EQ 'X'.
IT_CONFIRM-ZACQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X'.
IT_CONFIRM-ZREQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X'.
IT_CONFIRM-ZSCQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X'.
IT_CONFIRM-ZSEQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
IT_CONFIRM-ENDBIT = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
IT_CONFIRM-ENDBIT2 = 0.
ENDIF.
ENDFORM. " check_flag_routine
&----
*& Form f001-read_mat
&----
text
----
--> p1 text
<-- p2 text
----
FORM F001-READ_MAT .
DATA :W_FERTH LIKE MARA-FERTH.
**Note: BREMS = 'X' - give limited explosion
MEHRS = 'X' - give the multi level explosion
LOOP AT IT_CONFIRM.
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = IT_CONFIRM-MATNR AND
VERID = W_VERID.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
MEHRS = 'X'
MTNRV = IT_CONFIRM-MATNR
WERKS = IT_CONFIRM-PLWRK
STLAL = W_STLAL
TABLES
STB = IT_STPOX
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STPOX WHERE DUMPS = 'x'.
SORT IT_STPOX.
LOOP AT IT_STPOX INTO WA_STPOX.
CLEAR W_BUOM.
SELECT SINGLE MEINS INTO W_BUOM
FROM MARA WHERE MATNR = IT_CONFIRM-ZWIRECD.
CLEAR IT_ST.
IT_ST-MATNR = IT_CONFIRM-MATNR.
IT_ST-WIRECD = IT_CONFIRM-ZWIRECD.
IT_ST-UOM = W_BUOM.
IT_ST-RMCODE = WA_STPOX-IDNRK.
IT_ST-MEINS = WA_STPOX-MMEIN.
APPEND IT_ST.
ENDLOOP.
ENDLOOP.
SORT IT_ST BY MATNR.
CLEAR: IT_ST.
LOOP AT IT_ST.
SELECT SINGLE FERTH INTO W_FERTH FROM MARA WHERE MATNR = IT_ST-MATNR
.
CLEAR W_LBKUM.
SELECT SINGLE LBKUM INTO W_LBKUM FROM MBEW
WHERE MBEW~MATNR = IT_ST-WIRECD
AND MBEW~BWKEY = PR_WERKS
AND MBEW~BWTAR = ''.
IT_ST-SPC = W_LBKUM.
MODIFY IT_ST INDEX SY-TABIX TRANSPORTING SPC .
ENDLOOP.
ENDFORM. " f001-read_mat
&----
*& Form f002-get_qty
&----
text
----
--> p1 text
<-- p2 text
----
FORM F002-GET_QTY .
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = W_MATNR AND
VERID = W_VERID.
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
EMENG = W_TOTAL
MEHRS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
STLAL = W_STLAL
TABLES
STBD = IT_STBD
STBE = IT_STBE
STBK = IT_STBK
STBM = IT_STBM
STBP = IT_STBP
STBT = IT_STBT.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STBP WHERE DUMPS = 'x'.
SORT IT_STBP.
CLEAR W_TOTAL.
W_TOTAL = W_QTY1 + W_QTY2 .
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
EMENG = W_TOTAL
MEHRS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
STLAL = W_STLAL
TABLES
STBD = IT_STBD_ACTQTY
STBE = IT_STBE_ACTQTY
STBK = IT_STBK_ACTQTY
STBM = IT_STBM_ACTQTY
STBP = IT_STBP_ACTQTY
STBT = IT_STBT_ACTQTY.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STBP_ACTQTY WHERE DUMPS = 'x'.
SORT IT_STBP_ACTQTY.
ENDFORM. " f002-get_qty
&----
*& Form f002-get_scrpqty
&----
text
----
FORM F002-GET_SCRPQTY .
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = W_MATNR AND
VERID = W_VERID.
W_TOTAL = W_QTY3.
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
EMENG = W_TOTAL
MEHRS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
STLAL = W_STLAL
TABLES
STBD = IT_STBD_SCRP
STBE = IT_STBE_SCRP
STBK = IT_STBK_SCRP
STBM = IT_STBM_SCRP
STBP = IT_STBP_SCRP
STBT = IT_STBT_SCRP.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STBP_SCRP WHERE DUMPS = 'x'.
SORT IT_STBP_SCRP.
ENDFORM. " f002-get_scrpqty
&----
*& Form check_batch
&----
text
----
--> p1 text
<-- p2 text
----
FORM CHECK_BATCH .
DATA : W_POSSQTY LIKE MSEG-ERFMG,
W_TOPOST LIKE MSEG-ERFMG.
CLEAR : W_POSSQTY,W_TOPOST.
LOOP AT I_BATCH WHERE MATNR = IT_CONFIRM-MATNR AND WIRECD =
IT_CONFIRM-ZWIRECD
AND TIMLO = IT_CONFIRM-TIMLO.
W_POSSQTY = W_POSSQTY + I_BATCH-POSSQTY.
ENDLOOP.
IF I_BATCH-REQTY > W_POSSQTY.
W_MATNR = IT_CONFIRM-MATNR.
IF IT_CONFIRM-ZACQTY > 0 AND IT_CONFIRM-ZCONFIRM <> 'X'.
W_TOTAL = IT_CONFIRM-ZACQTY.
PERFORM CAL_QTY USING W_TOTAL CHANGING W_TOPOST.
IF W_TOPOST > W_POSSQTY.
IT_CONFIRM-ZACQTY = 0.
ELSE.
W_POSSQTY = W_POSSQTY - W_TOPOST.
ENDIF.
ENDIF.
IF IT_CONFIRM-ZREQTY > 0 AND IT_CONFIRM-ZCONFIRMREJ <> 'X'.
W_TOTAL = IT_CONFIRM-ZREQTY.
PERFORM CAL_QTY USING W_TOTAL CHANGING W_TOPOST.
IF W_TOPOST > W_POSSQTY.
IT_CONFIRM-ZREQTY = 0.
ELSE.
W_POSSQTY = W_POSSQTY - W_TOPOST.
ENDIF.
ENDIF.
W_TOTAL = IT_CONFIRM-ZSCQTY + IT_CONFIRM-ZSEQTY.
IF W_TOTAL > 0 AND IT_CONFIRM-ZCONFIRMSC <> 'X' AND
IT_CONFIRM-ZCONFIRMSE <> 'X'.
PERFORM CAL_QTY USING W_TOTAL CHANGING W_TOPOST.
IF W_TOPOST > W_POSSQTY.
IT_CONFIRM-ZSCQTY = 0.
IT_CONFIRM-ZSEQTY = 0.
ELSE.
W_POSSQTY = W_POSSQTY - W_TOPOST.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " check_batch
&----
*& Form cal_qty
&----
text
----
--> p1 text
<-- p2 text
----
&----
*& Form cal_qty
&----
text
----
-->P_W_TOTAL text
<--P_W_TOPOST text
----
FORM CAL_QTY USING P_W_TOTAL
CHANGING P_W_TOPOST.
CLEAR P_W_TOPOST.
CALL FUNCTION 'CS_BOM_EXPLOSION'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
EMENG = P_W_TOTAL
MEHRS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
TABLES
STBD = IT_STBD
STBE = IT_STBE
STBK = IT_STBK
STBM = IT_STBM
STBP = IT_STBP
STBT = IT_STBT.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STBP WHERE DUMPS = 'x'.
SORT IT_STBP.
P_W_TOPOST = IT_STBP-MNGLG.
ENDFORM. " cal_qty
reward points if it is helpful.
Regards,
Sangeetha.A
‎2007 May 15 12:56 PM
Hi All,
I got the answer for this..
1. i've used At line-selection immediately after display
CASE sy-ucomm.
when PICK.
call transaction....
click on pf-status and define PICK for f2 key.
2. use
SET pf-status space.
this will overwrite the previous status and there by all the standard buttons in application toolbar will appear......
Regards,
Radhi
‎2007 May 18 1:34 PM
hi...
below i am giving the sample code this should help you out.
****************************
sample code
****************************
TABLES: VBAK,VBAP.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
AUDAT TYPE VBAK-AUDAT,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
END OF TY_VBAP.
DATA: IT_VBAK TYPE STANDARD TABLE OF TY_VBAK,
IT_VBAP TYPE STANDARD TABLE OF TY_VBAP,
WA_VBAK TYPE TY_VBAK,
WA_VBAP TYPE TY_VBAP.
*selection-screen: begin of screen 1001 as subscreen.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: VBELN FOR VBAK-VBELN.
SELECTION-SCREEN: END OF BLOCK B1.
*selection-screen: end of screen 1001.
SET PF-STATUS 'ABC'.
INITIALIZATION.
START-OF-SELECTION.
SELECT VBELN
ERDAT
AUDAT FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN VBELN.
LOOP AT IT_VBAK INTO WA_VBAK.
WRITE 😕 WA_VBAK-VBELN,
WA_VBAK-ERDAT,
WA_VBAK-AUDAT.
HIDE: WA_VBAK-VBELN,
WA_VBAK-ERDAT.
ENDLOOP.
AT LINE-SELECTION.
SELECT VBELN
POSNR
MATNR FROM VBAP INTO TABLE IT_VBAP WHERE VBELN = WA_VBAK-ERDAT.
LOOP AT IT_VBAP INTO WA_VBAP.
WRITE:/ WA_VBAP-VBELN COLOR 3,
WA_VBAP-POSNR COLOR 5,
WA_VBAP-MATNR COLOR 7.
ENDLOOP.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'CLICK'.
SELECT VBELN
POSNR
MATNR FROM VBAP INTO TABLE IT_VBAP WHERE VBELN = WA_VBAK-VBELN.
LOOP AT IT_VBAP INTO WA_VBAP.
WRITE:/ WA_VBAP-VBELN COLOR 7,
WA_VBAP-POSNR COLOR 5,
WA_VBAP-MATNR COLOR 3.
ENDLOOP.
WRITE: / 'SY-LSIND',SY-LSIND.
WHEN 'BACK'.
LEAVE TO SCREEN 1001.
WHEN 'EXIT'.
leave program.
*****************************************************************************************
<u><b>
plz reward pts if helpfull.</b></u>
regards
vijay