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

at line selection

Former Member
0 Likes
689

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

4 REPLIES 4
Read only

Former Member
0 Likes
645

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.

Read only

Former Member
0 Likes
645

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

Read only

Former Member
0 Likes
645

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

Read only

Vijay
Active Contributor
0 Likes
645

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