Backorder issue
Hi all,
I getting an error when create backorder:
Check the settings for checking group 02 and checking rule
Message no. AG588
Pls tell me solution!
I also have checked in OVZ9.
Thnks & Rgdrs,
Hi,
How can i create new record in OMIH??
Thanks
Similar Messages
-
Notified washer was on backorder on the day of deliver!!!
We ordered a Whirlpool front loading washer online on Wed. December 31. It told us the delivery date would be today Fri Jan 2. The email confirmation stated "confirmed appointment date January 2". It said someone would contact us by 9PM the night before the appointment to schedule delivery time. No one called that night, although that didn't surprise me since it was New Years Day. The delivery person called around 8:30 AM today to advise the deliery time would be sometime this afternoon. He then called back about 30 minutes later to say that the washer was on backorder. I called customer service to complain on why i wasn't notified of the backorder status when the order was placed, and I was advised "it never tells you when the item is on backorder".
They are now telling me the washer can not be available untill Wednesday January 7, but the system won't let them even enter a delivery date, so we still have no idea when it will be here.
This is a huge problem as our washer has been broken since December 15. We have been fighting with Lowes over an extended warranty claim for 2 weeks - they could not get any one to make the repair and ultimately agreed to reimburse us for the cost of the old one. So now after a horrendous customer service situation with Lowes we are running into another one with Best Buy.Good afternoon wolfie72,
Having been out of a washer since December 15th, I can imagine how relieved you must have been to finally be receiving a working washer. It is truly regrettable to hear of your troubles with Lowe's, as well as the backorder issue you encountered when you ordered your replacement washer from us.
I am sorry that you were not made aware of the backorder until the day of your delivery. I'm sure this was not only greatly disappointing, but also frustrating. It is disheartening that this ultimately led to you canceling your order with us.
While I'm glad to hear you should have received your replacement washer by now, I'm discouraged to find it wasn't with us. I hope that in the future you will trust us with an appliance purchase should one need replacing or you feel like upgrading. Thank you for taking the time to share this experience with us. I can assure you that it has not gone unnoticed.
Please let me know if you should have any questions!
Sincerely,
Tasha|Social Media Specialist | Best Buy® Corporate
Private Message -
Think there will be a droid X backup?
I know that the Incredible has the screen issue so it is delaying shipping.....
Do you think there is any possibility that the X will have any kind of backorder issue too?
The whole shipping thing might just sway which phone I get. The X keeps looking better although I am afraid to get a phone before any customer reviews are in!! My nephew got the Incredible with the pre-order and has loved his so it may not be so bad if I get the X before any reviews are in!!shipwrestler125 wrote:
I spoke with a verizon rep today and they said they will have plenty in stock because motorola has their stuff together where HTC didnt quite expect that much sales from the phone. And the screen was also changed so they could bypass the back orders since it is an lcd screen which is readily available and only a few phones use that kind of screen
Store-wise, the biggest store in my area said they only had 40. -
Issue found in Backorder processing-CO06
Hi friends,
I used T-code: CO06 to process backorder (enter material, plant, checking rule, sales order) and found out all the qty are showed 0. What's more, when click "Change confirmation", it always showed msg: "Please select a line that can be changed". This issue also happened in V_RA. Do anyone know how to solve this issue or give me some suggestion? Thanks!In addition,
1. the availability check for the material is 01.
2. In CO06, most of the MRP element is Order/Deliv, with MRP element data=SD totals record. No any sales order number could be observed.
Hope the info make the problem more clear..Thanks! -
I want an iPhone 5 and have checked my local retailer and can get it in December (backordered). My question is: If I order one online, a) will it arrive quicker than Dec and b) will I be able to take it to them and activate without any issues? Thanks for any help!
Firstly, if you order online from the Apple Store, I assume you will be using an "upgrade" discount, right? If yes, there is no doubt that your service provider will accept you new iPhone 5 without question. Secondly, I think you will see an shipped by date as you order online, and thus will know if the date is better than your local retailer.
-
We have created a sales order in R/3 and did the ATP check. The ATP proposed the date 18.01.2010. We accepted the proposal and saved the order. Now when I see the order I see the confirmed date as 17.03.2010. During the BOP the dates have changed.
Can you please explain how this happens?
Note - The date in APO is still 18.01.2010.
Thanks and regards,
Vinay KalapHi Vinay Kalap,
Within backorder processing, the system selects items from SD documents and stock transfer
documents depending on the filter and a sorter, and brings them into a sequence. An ATP check
is then performed for the items.
The check date for backorder processing is always todayu2019s date.
SAP APO transfers the backorder processing results to the connected OLTP system (R/3
system). The SD document is automatically updated in the OLTP system, meaning that the
document is changed.
The data for the requirement (requested quantity, requested delivery date/time)
is retained. The changes to the document relate to the confirmed quantity and the confirmed date.
When stock transport orders are updated, the requested delivery date/time may be shifted into
the future, depending on the confirmation situation.
Regards
R. Senthil Mareeswaran. -
Hi,
The program(developed by someother person) which was given to me is having performance issue. Its giving RUNTIME ERROR 'TIME LIMIT EXCEEDED'. Can u please suggest me in what way i can improve the performance of the program.
please help me in resolving this.
Helpful answers will be rewarded.
TABLES : MARA, "General Material Data
MARC, "Plant Data for Material
VBAP, "Sales Document: Item Data
MARD, "Storage Location Data for Material
MAST, "Material to BOM Link
MKPF, "Header: Material Document
MSEG, "Document Segment: Material
PKHD, "Control Cycle
PKPS, "Control Cycle Item / Kanban
PVBE, "Supply area
ZTGRP, "Wabco Technology Group table
ZZC10. "Kanban status table
I N T E R N A L T A B L E D E C L A R A T I O N *
INTERNAL TABLE FOR TECH.GROUP AND PLANT
DATA: BEGIN OF IT_MARC_ZTGRP OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
ZZPTG LIKE ZTGRP-ZZPTG,
ZZPTD LIKE ZTGRP-ZZPTD,
END OF IT_MARC_ZTGRP.
INTERNAL TABLE FOR RETURN VALUES
DATA IT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.
INTERNAL TABLE FOR SUBASSEMBLY AND FINISHED GOOD
DATA: BEGIN OF IT_MATERIAL OCCURS 0,
IDNRK LIKE STPO-IDNRK,
MATNR LIKE MAST-MATNR,
END OF IT_MATERIAL.
INTERNAL TABLE FOR OUTPUT YESTERDAY
DATA: BEGIN OF IT_KBED_KAKO OCCURS 0,
KBEAREST LIKE KBED-KBEAREST,
KRUEREST LIKE KBED-KRUEREST,
KEINH LIKE KBED-KEINH,
END OF IT_KBED_KAKO.
INTERNAL TABLE FOR MATERIAL AND PLANT
DATA: BEGIN OF IT_PLANT OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
END OF IT_PLANT.
DATA: BEGIN OF IT_COBK OCCURS 0,
RUECK LIKE COBK-REFBN,
END OF IT_COBK.
DATA: BEGIN OF IT_COEPL OCCURS 0,
KOKRS LIKE COEPL-KOKRS,
BELNR LIKE COEPL-BELNR,
END OF IT_COEPL.
DATA: BEGIN OF IT_CAPACITIES OCCURS 0,
LSBBTR LIKE COEPL-LSBBTR,
MEINB LIKE COEPL-MEINB,
END OF IT_CAPACITIES.
DATA: BEGIN OF IT_MKPF_MSEG OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
DMBTR LIKE MSEG-DMBTR,
WERKS LIKE MSEG-WERKS,
END OF IT_MKPF_MSEG.
INTERNAL TABLE FOR MATERIAL-TO-BOM LINK
DATA: IT_MAST LIKE MAST OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR MATERIAL
DATA: BEGIN OF IT_MAT OCCURS 0,
MATNR LIKE MARA-MATNR,
END OF IT_MAT.
INTERNAL TABLE FOR STORAGE LOCATION DATA FOR SUBASSEMBLY
DATA: BEGIN OF IT_MARD OCCURS 0,
LABST LIKE MARD-LABST,
END OF IT_MARD.
INTERNAL TABLE FOR PLANT FOR MATERIALS
DATA IT_MARC LIKE MARC OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR BOM ITEM DATA
DATA: IT_STPO LIKE STPO OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR KANBAN STATUS DATA
DATA IT_ZZC10 LIKE ZZC10 OCCURS 0 WITH HEADER LINE.
TEMPORARY INTERNAL TABLE FOR KANBAN STATUS DATA
DATA IT_ZZC10_TEMP LIKE ZZC10 OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR CONTROL CYCLE
DATA IT_PKHD LIKE PKHD OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR CONTROL CYCLE ITEM
DATA IT_PKPS LIKE PKPS OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR MATERIAL DOCUMENT HEADER
DATA IT_MKPF LIKE MKPF OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR MATERIAL DOCUMENT ITEM
DATA IT_MSEG LIKE MSEG OCCURS 0 WITH HEADER LINE.
TEMPORARY INTERNAL TABLE FOR ACTUAL QUANTITY
DATA : BEGIN OF IT_TEMP OCCURS 0,
TECH LIKE ZTGRP-ZZPTD,
MATNR LIKE ZZC10-MATNR,
FINISHED LIKE MAST-MATNR,
PKNUM LIKE PKHD-PKNUM,
WERKS LIKE ZZC10-WERKS,
GSMNG LIKE PLAF-GSMNG,
MEINS LIKE PLAF-MEINS,
BEHAZ LIKE PKHD-BEHAZ,
BEHMG LIKE PKHD-BEHMG,
PKBMG LIKE ZZC10-PKBMG,
LATEHOURS LIKE PKHD-KWBZM,
FILLRATE TYPE P DECIMALS 2,
REPL_LEAD_TIME TYPE P DECIMALS 3,
QTY_1 LIKE PLAF-GSMNG,
QTY_2 LIKE PLAF-GSMNG,
QTY_3 LIKE PLAF-GSMNG,
QTY_4 LIKE PLAF-GSMNG,
QTY_5 LIKE PLAF-GSMNG,
QTY_6 LIKE PLAF-GSMNG,
GSMNG_OUTY LIKE PLAF-GSMNG,
MEINS_OUTY LIKE PLAF-MEINS,
KAPBD_OUTY LIKE COEPL-LSTBTR,
KEINH_OUTY LIKE COEPL-MEINH,
GSMNG_OUTM LIKE MSEG-MENGE,
MEINS_OUTM LIKE MSEG-MEINS,
KAPBD_OUTM LIKE COEPL-LSTBTR,
KEINH_OUTM LIKE COEPL-MEINH,
GSMNG_BORD LIKE PLAF-GSMNG,
MEINS_BORD LIKE MSEG-MEINS,
KAPBD_BORD LIKE KBED-KBEAREST,
KEINH_BORD LIKE COEPL-MEINH,
GSMNG_TDAY LIKE PLAF-GSMNG,
KAPBD_TDAY LIKE KBED-KBEAREST,
GSMNG_DAY1 LIKE PLAF-GSMNG,
KAPBD_DAY1 LIKE KBED-KBEAREST,
GSMNG_DAY2 LIKE PLAF-GSMNG,
KAPBD_DAY2 LIKE KBED-KBEAREST,
GSMNG_DAY3 LIKE PLAF-GSMNG,
KAPBD_DAY3 LIKE KBED-KBEAREST,
GSMNG_DAY4 LIKE PLAF-GSMNG,
KAPBD_DAY4 LIKE KBED-KBEAREST,
GSMNG_DAY5 LIKE PLAF-GSMNG,
KAPBD_DAY5 LIKE KBED-KBEAREST,
STOCK_PO01 LIKE MARD-LABST,
F_GSMNG_BORD LIKE PLAF-GSMNG,
F_MEINS_BORD LIKE MSEG-MEINS,
F_KAPBD_BORD LIKE KBED-KBEAREST,
F_KEINH_BORD LIKE COEPL-MEINH,
F_GSMNG_TDAY LIKE PLAF-GSMNG,
F_MEINS_TDAY LIKE MSEG-MEINS,
F_KAPBD_TDAY LIKE KBED-KBEAREST,
F_KEINH_TDAY LIKE COEPL-MEINH,
F_GSMNG_DAY1 LIKE PLAF-GSMNG,
F_MEINS_DAY1 LIKE MSEG-MEINS,
F_KAPBD_DAY1 LIKE KBED-KBEAREST,
F_KEINH_DAY1 LIKE COEPL-MEINH,
F_GSMNG_DAY2 LIKE PLAF-GSMNG,
F_MEINS_DAY2 LIKE MSEG-MEINS,
F_KAPBD_DAY2 LIKE KBED-KBEAREST,
F_KEINH_DAY2 LIKE COEPL-MEINH,
F_GSMNG_DAY3 LIKE PLAF-GSMNG,
F_MEINS_DAY3 LIKE MSEG-MEINS,
F_KAPBD_DAY3 LIKE KBED-KBEAREST,
F_KEINH_DAY3 LIKE COEPL-MEINH,
F_GSMNG_DAY4 LIKE PLAF-GSMNG,
F_MEINS_DAY4 LIKE MSEG-MEINS,
F_KAPBD_DAY4 LIKE KBED-KBEAREST,
F_KEINH_DAY4 LIKE COEPL-MEINH,
F_GSMNG_DAY5 LIKE PLAF-GSMNG,
F_MEINS_DAY5 LIKE MSEG-MEINS,
F_KAPBD_DAY5 LIKE KBED-KBEAREST,
F_KEINH_DAY5 LIKE COEPL-MEINH,
F_GSMNG_OUTM LIKE MSEG-MENGE,
F_MEINS_OUTM LIKE MSEG-MEINS,
F_KAPBD_OUTM LIKE COEPL-LSTBTR,
F_KEINH_OUTM LIKE COEPL-MEINH,
F_GSMNG_OUTN LIKE MSEG-MENGE,
F_MEINS_OUTN LIKE MSEG-MEINS,
F_KAPBD_OUTN LIKE KBED-KBEAREST,
F_KEINH_OUTN LIKE COEPL-MEINH,
END OF IT_TEMP.
INTERNAL TABLE FOR PLANNED DATA
DATA IT_PLAF LIKE PLAF OCCURS 0 WITH HEADER LINE.
INTERNAL TABLE FOR FACTORY CALENDER AND CURRENCY
DATA: BEGIN OF IT_T001W OCCURS 0,
WERKS LIKE T001W-WERKS,
BWKEY LIKE T001W-BWKEY,
FABKL LIKE T001W-FABKL,
END OF IT_T001W.
V A R I A B L E S *
DATA: AUX_BORD LIKE SY-DATUM,
AUX_YDAY LIKE SY-DATUM,
AUX_TDAY LIKE SY-DATUM,
AUX_DAY1 LIKE SY-DATUM,
AUX_DAY2 LIKE SY-DATUM,
AUX_DAY3 LIKE SY-DATUM,
AUX_DAY4 LIKE SY-DATUM,
AUX_DAY5 LIKE SY-DATUM,
AUX_CURRENT LIKE SY-DATUM,
AUX_PREVIOUS LIKE SY-DATUM,
AUX_TECH LIKE ZTGRP-ZZPTD,
AUX_BUDAT LIKE MKPF-BUDAT,
AUX_LOW LIKE MKPF-BUDAT,
AUX_HIGH LIKE MKPF-BUDAT,
AUX_MNG LIKE MSEG-MENGE,
AUX_MENGE LIKE MSEG-MENGE,
AUX_QUANT LIKE PLAF-GSMNG,
AUX_SUM_UNIT LIKE UMADD-MSEHI,
AUX_TIMESTAMP1 LIKE CCUPEAKA-TIMESTAMP,
AUX_TIMESTAMP2 LIKE CCUPEAKA-TIMESTAMP,
AUX_BUKRS LIKE T001K-BUKRS,
AUX_BWKEY LIKE T001W-BWKEY,
AUX_GSMNG LIKE PLAF-GSMNG,
AUX_PKBMG LIKE ZZC10-PKBMG,
AUX_FILL LIKE ZZC10-PKBMG,
AUX_TOTAL LIKE ZZC10-PKBMG,
AUX_FABKL LIKE SCAL-FCALID,
AUX_WAERS LIKE MSEG-WAERS,
AUX_ZZC10_HR TYPE P DECIMALS 3,
AUX_PLAF_HR TYPE P DECIMALS 3,
AUX_KAPBD_OUTY TYPE P DECIMALS 3,
AUX_KAPBD_OUTM TYPE P DECIMALS 3,
AUX_KAPBD_BORD TYPE P DECIMALS 3,
AUX_F_KAPBD_BORD TYPE P DECIMALS 3,
AUX_F_KAPBD_TDAY TYPE P DECIMALS 3,
AUX_F_KAPBD_DAY1 TYPE P DECIMALS 3,
AUX_F_KAPBD_DAY2 TYPE P DECIMALS 3,
AUX_F_KAPBD_DAY3 TYPE P DECIMALS 3,
AUX_F_KAPBD_DAY4 TYPE P DECIMALS 3,
AUX_F_KAPBD_DAY5 TYPE P DECIMALS 3,
AUX_F_KAPBD_OUTM TYPE P DECIMALS 3,
AUX_F_KAPBD_OUTN TYPE P DECIMALS 3,
AUX_PKHD_TIME TYPE P DECIMALS 3,
AUX_LATEHOURS TYPE P DECIMALS 3,
AUX_DIFF TYPE I,
AUX_FLAG TYPE C,
AUX_SET TYPE C,
AUX_DATUMABSOLUT(5) TYPE P,
AUX_FDAY LIKE SY-DATUM,
AUX_DAYS LIKE PKHD-KWBZD,
AUX_HOURS LIKE IT_ZZC10-TIME_EMPTY,
AUX_TIME LIKE PKHD-KWBZM,
AUX_PKHD_DAYS LIKE PKHD-KWBZD,
AUX_PKHD_HOURS LIKE PKHD-KWBZM,
AUX_TMP_DAYS LIKE PKHD-KWBZM VALUE 24,
AUX_TMP_HRS LIKE PKHD-KWBZM,
AUX_FILL_DAYS LIKE PKHD-KWBZD,
AUX_FILL_HOURS LIKE AUX_HOURS,
AUX_FILL_TIME LIKE PKHD-KWBZM,
AUX_TOTAL_QTY LIKE PKHD-BEHMG,
AUX_RATID LIKE PLAF-RATID,
AUX_MATNR LIKE PLAF-MATNR,
AUX_HEADER LIKE MARA-MATNR,
AUX_ZZPTG LIKE MARC-ZZPTG,
AUX_PEDTR LIKE PLAF-PEDTR,
AUX_KRUEREST LIKE KBED-KRUEREST,
AUX_KBEAREST LIKE KBED-KBEAREST,
AUX_KRUEREST_T LIKE KBED-KRUEREST,
AUX_KBEAREST_T LIKE KBED-KBEAREST,
AUX_KEINH LIKE KBED-KEINH,
AUX_KAPBD LIKE KBED-KBEAREST,
AUX_ARBPL LIKE MKAL-MDV01,
AUX_ARBID LIKE CRHD-OBJID,
AUX_QUALF LIKE CRHD-QUALF,
AUX_SAT1800 LIKE SY-UZEIT VALUE '180000'.
S E L E C T I O N S C R E E N *
INPUT SELECTION
SELECTION-SCREEN : BEGIN OF BLOCK BL0 WITH FRAME TITLE TEXT-000.
SELECT-OPTIONS : SO_PRVBE FOR PVBE-PRVBE,
SO_MATNR FOR MARA-MATNR,
SO_ZZPTG FOR MARC-ZZPTG OBLIGATORY,
SO_WERKS FOR MARC-WERKS OBLIGATORY,
SO_BUDAT FOR MKPF-BUDAT OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK BL0.
I N I T I A L I Z A T I O N *
INITIALIZATION.
MOVE SY-DATUM TO AUX_CURRENT.
AUX_PREVIOUS = AUX_CURRENT - 1.
MOVE SY-DATUM TO SO_BUDAT-LOW.
MOVE '01' TO SO_BUDAT-LOW+6(2).
APPEND SO_BUDAT.
AUX_PREVIOUS = AUX_CURRENT - 1.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN.
CHECK ON SELECTION SCREEN
PERFORM CHECK_ON_SELECTION.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
CHECK IF BOM EXISTS FOR THE COMPONENTS
PERFORM CHECK_BOM_EXISTENCE.
GET FINISHED PRODUCT NUMBER FOR THE SUBASSEMBLIES
IF NOT IT_MARC_ZTGRP[] IS INITIAL.
LOOP AT IT_MARC_ZTGRP.
PERFORM GET_HEADER_MATERIAL USING IT_MARC_ZTGRP-MATNR.
IF NOT IT_MAT[] IS INITIAL.
PERFORM GET_FINISHED_GOOD TABLES IT_MAT.
ENDIF.
CLEAR IT_MARC_ZTGRP.
ENDLOOP.
ELSE.
MESSAGE S010 WITH 'No data present for given selection'.
ENDIF.
CHECK IF SALES DATA EXIST FOR THE FINISHED GOOD
PERFORM CHECK_SALESDATA_EXISTENCE.
GET CONTROL CYCLE AND KANBAN DATA
PERFORM GET_KANBAN_DATA.
GET VALUATION AREA DATA
PERFORM GET_VALUATION_AREA.
GET MATERIAL DOCUMENT DATA
PERFORM GET_MATERIAL_DOC_DATA.
GET KANBAN DETAILS
PERFORM GET_KANBAN_DETAILS.
E N D O F S E L E C T I O N *
END-OF-SELECTION.
IF NOT IT_TEMP[] IS INITIAL.
DISPLAY OUTPUT
PERFORM DISPLAY_OUTPUT.
ENDIF.
*& Form CHECK_ON_SELECTION
text
--> p1 text
<-- p2 text
FORM CHECK_ON_SELECTION .
CHECK IF ENTERED PLANT IS VALID
IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.
SELECT SINGLE * FROM MARC WHERE WERKS EQ SO_WERKS-LOW.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'SO_WERKS-LOW'.
MESSAGE E010 WITH 'Please enter a valid Plant'.
ENDIF.
ENDIF.
CHECK IF SUPPLY AREA AND PLANT IS VALID
IF NOT SO_PRVBE-LOW IS INITIAL AND SO_PRVBE-HIGH IS INITIAL.
IF NOT SO_WERKS IS INITIAL AND SO_WERKS-HIGH IS INITIAL.
SELECT SINGLE * FROM PVBE WHERE WERKS EQ SO_WERKS-LOW
AND PRVBE EQ SO_PRVBE-LOW.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'SO_PRVBE-LOW'.
MESSAGE E010 WITH 'Supply Area' SO_PRVBE-LOW 'donot belong to'
SO_WERKS-LOW.
ENDIF.
ENDIF.
ENDIF.
CHECK IF ENTERED MATERIAL NUMBER IS VALID
IF NOT SO_MATNR-LOW IS INITIAL AND SO_MATNR-HIGH IS INITIAL.
SELECT SINGLE * FROM MARA WHERE MATNR EQ SO_MATNR-LOW.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'SO_MATNR-LOW'.
MESSAGE E010 WITH 'Please enter a valid Material Number'.
ELSE.
IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.
SELECT SINGLE * FROM MARC WHERE MATNR EQ SO_MATNR-LOW
AND WERKS EQ SO_WERKS-LOW.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'SO_MATNR-LOW'.
MESSAGE E010 WITH 'Material' SO_MATNR-LOW
'doesnot belong to plant' SO_WERKS-LOW.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CHECK IF TECHNOLOGY GROUP AND PLANT IS VALID
IF NOT SO_ZZPTG-LOW IS INITIAL AND SO_ZZPTG-HIGH IS INITIAL.
IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.
SELECT SINGLE * FROM MARC WHERE WERKS EQ SO_WERKS-LOW
AND ZZPTG EQ SO_ZZPTG-LOW.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'SO_ZZPTG-LOW'.
MESSAGE E010 WITH 'Tech.Group' SO_ZZPTG-LOW 'doesnot belong to plant'
SO_WERKS-LOW.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " CHECK_ON_SELECTION
*& Form CHECK_BOM_EXISTENCE
text
--> p1 text
<-- p2 text
FORM CHECK_BOM_EXISTENCE .
JOIN MARC AND ZTGRP TABLES TO GET THE COMPONENTS BASED ON THE INPUT
CRITERIA
REFRESH IT_MARC_ZTGRP.
SELECT MARCMATNR MARCWERKS ZTGRPZZPTG ZTGRPZZPTD
INTO TABLE IT_MARC_ZTGRP
FROM MARC INNER JOIN ZTGRP
ON MARCWERKS EQ ZTGRPWERKS AND
MARCZZPTG EQ ZTGRPZZPTG
WHERE MARC~WERKS IN SO_WERKS
AND MARC~ZZPTG IN SO_ZZPTG
AND MARC~MATNR IN SO_MATNR
AND MARC~LVORM NE 'X'
AND ( MARC~BESKZ EQ 'E' OR
MARC~BESKZ EQ 'X' ).
IF NOT IT_MARC_ZTGRP[] IS INITIAL.
CHECK THE EXISTENCE OF BOM FOR THE SELECTED COMPONENTS.
IF NOT PRESENT, DELETE THE ENTRY FROM INTERNAL TABLE
LOOP AT IT_MARC_ZTGRP.
REFRESH IT_RETURN.
CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'
EXPORTING
MATERIAL = IT_MARC_ZTGRP-MATNR
PLANT = IT_MARC_ZTGRP-WERKS
BOMUSAGE = '1'
TABLES
RETURN = IT_RETURN.
IF NOT IT_RETURN[] IS INITIAL.
DELETE IT_MARC_ZTGRP WHERE MATNR EQ IT_MARC_ZTGRP-MATNR
AND WERKS EQ IT_MARC_ZTGRP-WERKS
AND ZZPTG EQ IT_MARC_ZTGRP-ZZPTG.
ENDIF.
CLEAR IT_MARC_ZTGRP.
ENDLOOP.
ELSE.
MESSAGE S010 WITH 'No data present for given selection'.
ENDIF.
ENDFORM. " CHECK_BOM_EXISTENCE
*& Form GET_HEADER_MATERIAL
text
-->P_IT_MARC_ZTGRP_MATNR text
FORM GET_HEADER_MATERIAL USING P_MATNR.
REFRESH IT_STPO.
GET BOM ITEM DATA FOR THE COMPONENT
SELECT * FROM STPO INTO TABLE IT_STPO WHERE IDNRK EQ P_MATNR
AND DATUV LE SO_BUDAT-LOW
AND LKENZ NE 'X'.
IF NOT IT_STPO[] IS INITIAL.
IF BOM ITEM DATA IS PRESENT FOR THE COMPONENT
REFRESH IT_MAST.
GET MATERIAL TO BOM LINK
SELECT * FROM MAST INTO TABLE IT_MAST FOR ALL ENTRIES IN IT_STPO
WHERE STLNR EQ IT_STPO-STLNR.
IF NOT IT_MAST[] IS INITIAL.
SORT IT_MAST BY MATNR.
DELETE ADJACENT DUPLICATES FROM IT_MAST COMPARING MATNR.
LOOP AT IT_MAST.
CLEAR AUX_SET.
REFRESH IT_PLANT.
GET ALL THE PLANTS FOR THE COMPONENT
SELECT MATNR WERKS FROM MARC INTO TABLE IT_PLANT
WHERE MATNR EQ IT_MAST-MATNR.
LOOP AT IT_PLANT.
REFRESH IT_RETURN.
CHECK FOR BOM EXISTENCE FOR MATERIAL IN ALL PLANTS
CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'
EXPORTING
MATERIAL = IT_MAST-MATNR
PLANT = IT_PLANT-WERKS
BOMUSAGE = '1'
TABLES
RETURN = IT_RETURN.
IF IT_RETURN[] IS INITIAL.
MOVE 'X' TO AUX_SET.
ENDIF.
CLEAR IT_PLANT.
ENDLOOP.
IF BOM EXISTS FOR THE COMPONENT IN ANY PLANT, MOVE THE COMPONENT
TO INTERNAL TABLE IT_MAT
IF AUX_SET EQ 'X'.
MOVE IT_MAST-MATNR TO IT_MAT-MATNR.
APPEND IT_MAT.
CLEAR IT_MAT.
ELSE.
IF BOM DOESNOT EXISTS FOR THE COMPONENT IN ALL PLANTS,
SELECT THE COMPONENT AS THE FINISHED PRODUCT
CLEAR MARA.
SELECT SINGLE * FROM MARA WHERE MATNR EQ IT_MAST-MATNR.
IF SY-SUBRC EQ 0 AND MARA-LVORM NE 'X'.
MOVE: IT_MARC_ZTGRP-MATNR TO IT_MATERIAL-IDNRK,
IT_MAST-MATNR TO IT_MATERIAL-MATNR.
APPEND IT_MATERIAL.
CLEAR IT_MATERIAL.
ENDIF.
ENDIF.
CLEAR IT_MAST.
ENDLOOP.
ENDIF.
ELSE.
IF BOM ITEM DATA DOESNOT PRESENT FOR THE COMPONENT,
CONSIDER THE COMPONENT AS FINISHED PRODUCT
CLEAR MARA.
SELECT SINGLE * FROM MARA WHERE MATNR EQ P_MATNR.
IF SY-SUBRC EQ 0 AND MARA-LVORM NE 'X'.
MOVE: IT_MARC_ZTGRP-MATNR TO IT_MATERIAL-IDNRK,
P_MATNR TO IT_MATERIAL-MATNR.
APPEND IT_MATERIAL.
CLEAR IT_MATERIAL.
ENDIF.
ENDIF.
ENDFORM. " GET_HEADER_MATERIAL
*& Form GET_FINISHED_GOOD
text
-->P_IT_MAT text
FORM GET_FINISHED_GOOD TABLES P_IT_MAT LIKE IT_MAT[].
LOOP AT P_IT_MAT.
PERFORM GET_HEADER_MATERIAL USING P_IT_MAT-MATNR.
DELETE P_IT_MAT INDEX 1.
CLEAR P_IT_MAT.
ENDLOOP.
ENDFORM. " GET_FINISHED_GOOD
*& Form CHECK_SALESDATA_EXISTENCE
text
--> p1 text
<-- p2 text
FORM CHECK_SALESDATA_EXISTENCE .
IF NOT IT_MATERIAL[] IS INITIAL.
LOOP AT IT_MATERIAL.
CLEAR VBAP.
SELECT SINGLE * FROM VBAP WHERE MATNR EQ IT_MATERIAL-MATNR.
IF SY-SUBRC NE 0.
DELETE IT_MATERIAL WHERE IDNRK EQ IT_MATERIAL-IDNRK
AND MATNR EQ IT_MATERIAL-MATNR.
ENDIF.
CLEAR IT_MATERIAL.
ENDLOOP.
ENDIF.
ENDFORM. " CHECK_SALESDATA_EXISTENCE
*& Form GET_KANBAN_DATA
text
--> p1 text
<-- p2 text
FORM GET_KANBAN_DATA.
SORT IT_MATERIAL BY IDNRK MATNR.
DELETE ADJACENT DUPLICATES FROM IT_MATERIAL COMPARING ALL FIELDS.
IF NOT IT_MATERIAL[] IS INITIAL.
GET CONTROL CYCLE HEADER DATA
SELECT * FROM PKHD INTO TABLE IT_PKHD
FOR ALL ENTRIES IN IT_MATERIAL
WHERE WERKS IN SO_WERKS
AND MATNR EQ IT_MATERIAL-IDNRK
AND PRVBE IN SO_PRVBE.
IF NOT IT_PKHD[] IS INITIAL.
GET CONTROL CYCLE ITEM DATA
SELECT * FROM PKPS INTO TABLE IT_PKPS
FOR ALL ENTRIES IN IT_PKHD
WHERE PKNUM EQ IT_PKHD-PKNUM.
IF NOT IT_PKPS[] IS INITIAL.
GET KANBAN STATUS DATA
SELECT * FROM ZZC10 INTO TABLE IT_ZZC10_TEMP
FOR ALL ENTRIES IN IT_PKPS
WHERE PKKEY EQ IT_PKPS-PKKEY
AND PKNUM EQ IT_PKPS-PKNUM
AND ZDATE BETWEEN SO_BUDAT-LOW AND SY-DATUM
AND STATUS EQ '5'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " GET_KANBAN_DATA
*& Form GET_VALUATION_AREA
text
--> p1 text
<-- p2 text
FORM GET_VALUATION_AREA.
IF NOT IT_MARC_ZTGRP[] IS INITIAL.
SELECT WERKS BWKEY FABKL FROM T001W INTO TABLE IT_T001W
FOR ALL ENTRIES IN IT_MARC_ZTGRP
WHERE WERKS EQ IT_MARC_ZTGRP-WERKS.
ENDIF.
ENDFORM. " GET_VALUATION_AREA
*& Form GET_MATERIAL_DOC_DATA
text
--> p1 text
<-- p2 text
FORM GET_MATERIAL_DOC_DATA.
GET MATERIAL DOCUMENT HEADER DATA
SELECT * FROM MKPF INTO TABLE IT_MKPF
WHERE BUDAT IN SO_BUDAT.
IF NOT IT_MKPF[] IS INITIAL.
GET MATERIAL DOCUMENT ITEM DATA
SELECT * FROM MSEG INTO TABLE IT_MSEG
FOR ALL ENTRIES IN IT_MKPF
WHERE MBLNR EQ IT_MKPF-MBLNR
AND WERKS IN SO_WERKS
AND MJAHR EQ SY-DATUM+0(4)
AND ( BWART EQ '131' OR BWART EQ '132' ).
IF NOT IT_MATERIAL[] IS INITIAL.
LOOP AT IT_MSEG.
READ TABLE IT_MATERIAL WITH KEY IDNRK = IT_MSEG-MATNR.
IF SY-SUBRC NE 0.
DELETE IT_MSEG WHERE MATNR EQ IT_MSEG-MATNR.
ENDIF.
CLEAR: IT_MATERIAL, IT_MSEG.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " GET_MATERIAL_DOC_DATA
*& Form GET_KANBAN_DETAILS
text
--> p1 text
<-- p2 text
FORM GET_KANBAN_DETAILS .
SORT IT_PKHD BY PKNUM.
IF NOT IT_ZZC10_TEMP[] IS INITIAL.
LOOP AT IT_ZZC10_TEMP.
CLEAR: AUX_FILL, AUX_PKBMG.
MOVE IT_ZZC10_TEMP] TO IT_ZZC10[.
DELETE IT_ZZC10 WHERE MATNR NE IT_ZZC10_TEMP-MATNR
AND WERKS NE IT_ZZC10_TEMP-WERKS.
LOOP AT IT_ZZC10.
CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2, AUX_ZZC10_HR, AUX_DIFF.
EMPTY DATE GREATER THAN FULL DATE
IF IT_ZZC10-DATE_EMPTY GT IT_ZZC10-DATE_FULL.
CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY
INTO AUX_TIMESTAMP1.
CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL
INTO AUX_TIMESTAMP2.
CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'
EXPORTING
TIMESTAMP1 = AUX_TIMESTAMP1
TIMESTAMP2 = AUX_TIMESTAMP2
IMPORTING
DIFFERENCE = AUX_DIFF.
AUX_ZZC10_HR = AUX_DIFF / 3600.
FULL DATE GREATER THAN EMPTY DATE
ELSEIF IT_ZZC10-DATE_FULL GT IT_ZZC10-DATE_EMPTY.
CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY
INTO AUX_TIMESTAMP2.
CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL
INTO AUX_TIMESTAMP1.
CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'
EXPORTING
TIMESTAMP1 = AUX_TIMESTAMP1
TIMESTAMP2 = AUX_TIMESTAMP2
IMPORTING
DIFFERENCE = AUX_DIFF.
AUX_ZZC10_HR = AUX_DIFF / 3600.
FULL DATE EQUAL TO EMPTY DATE
ELSEIF IT_ZZC10-DATE_FULL EQ IT_ZZC10-DATE_EMPTY.
EMPTY TIME GREATER THAN FULL TIME
IF IT_ZZC10-TIME_EMPTY GT IT_ZZC10-TIME_FULL.
CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY
INTO AUX_TIMESTAMP1.
CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL
INTO AUX_TIMESTAMP2.
CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'
EXPORTING
TIMESTAMP1 = AUX_TIMESTAMP1
TIMESTAMP2 = AUX_TIMESTAMP2
IMPORTING
DIFFERENCE = AUX_DIFF.
AUX_ZZC10_HR = AUX_DIFF / 3600.
FULL TIME GREATER THAN EMPTY TIME
ELSEIF IT_ZZC10-TIME_FULL GT IT_ZZC10-TIME_EMPTY.
CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY
INTO AUX_TIMESTAMP2.
CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL
INTO AUX_TIMESTAMP1.
CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'
EXPORTING
TIMESTAMP1 = AUX_TIMESTAMP1
TIMESTAMP2 = AUX_TIMESTAMP2
IMPORTING
DIFFERENCE = AUX_DIFF.
AUX_ZZC10_HR = AUX_DIFF / 3600.
FULL TIME EQUAL TO EMPTY TIME
ELSEIF IT_ZZC10-TIME_FULL EQ IT_ZZC10-TIME_EMPTY.
AUX_ZZC10_HR = 0.
ENDIF.
ENDIF.
READ TABLE IT_PKHD WITH KEY PKNUM = IT_ZZC10-PKNUM
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2,
AUX_PKHD_DAYS, AUX_PKHD_HOURS, AUX_TMP_DAYS,
AUX_PKHD_TIME.
AUX_PKHD_DAYS = IT_PKHD-KWBZD.
AUX_PKHD_HOURS = IT_PKHD-KWBZM.
IF AUX_PKHD_DAYS NE 0.
AUX_TMP_DAYS = AUX_PKHD_DAYS * 24.
AUX_PKHD_TIME = AUX_TMP_DAYS + AUX_PKHD_HOURS.
ELSE.
AUX_PKHD_TIME = AUX_PKHD_HOURS.
ENDIF.
COMPARE STATUS CHANGE TIME WITH REPLENISHMENT LEAD TIME
IF AUX_ZZC10_HR GT AUX_PKHD_TIME.
CLEAR: AUX_LATEHOURS.
LATE HOURS
AUX_LATEHOURS = AUX_ZZC10_HR - AUX_PKHD_TIME.
LATE QUANTITY FOR +1 DAY
IF AUX_LATEHOURS LE 24.
IT_TEMP-QTY_1 = IT_TEMP-QTY_1 + IT_ZZC10-PKBMG.
LATE QUANTITY FOR +2 DAYS
ELSEIF AUX_LATEHOURS GT 24
AND AUX_LATEHOURS LE 48.
IT_TEMP-QTY_2 = IT_TEMP-QTY_2 + IT_ZZC10-PKBMG.
LATE QUANTITY FOR +3 DAYS
ELSEIF AUX_LATEHOURS GT 48
AND AUX_LATEHOURS LE 72.
IT_TEMP-QTY_3 = IT_TEMP-QTY_3 + IT_ZZC10-PKBMG.
LATE QUANTITY FOR +4 DAYS
ELSEIF AUX_LATEHOURS GT 72
AND AUX_LATEHOURS LE 96.
IT_TEMP-QTY_4 = IT_TEMP-QTY_4 + IT_ZZC10-PKBMG.
LATE QUANTITY FOR +5 DAYS
ELSEIF AUX_LATEHOURS GT 96
AND AUX_LATEHOURS LE 120.
IT_TEMP-QTY_5 = IT_TEMP-QTY_5 + IT_ZZC10-PKBMG.
LATE QUANTITY FOR MORE THAN 5 DAYS
ELSEIF AUX_LATEHOURS GT 120.
IT_TEMP-QTY_6 = IT_TEMP-QTY_6 + IT_ZZC10-PKBMG.
ENDIF.
TOTAL KANBAN LATE QUANTITIES
AUX_PKBMG = AUX_PKBMG + IT_ZZC10-PKBMG.
ELSE.
AUX_FILL = AUX_FILL + IT_ZZC10-PKBMG.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
SUBASSEMBLY PART NUMBER
IT_TEMP-MATNR = IT_ZZC10-MATNR.
FINISHED GOOD
READ TABLE IT_MATERIAL WITH KEY IDNRK = IT_ZZC10-MATNR.
IT_TEMP-FINISHED = IT_MATERIAL-MATNR.
TECHNOLOGY GROUP
READ TABLE IT_MARC_ZTGRP WITH KEY WERKS = IT_ZZC10-WERKS
MATNR = IT_ZZC10-MATNR.
IF SY-SUBRC EQ 0.
MOVE IT_MARC_ZTGRP-ZZPTD TO IT_TEMP-TECH.
ENDIF.
NUMBER OF KANBAN CONTAINERS
IT_TEMP-BEHAZ = IT_PKHD-BEHAZ.
KANBAN QUANTITY
IT_TEMP-BEHMG = IT_PKHD-BEHMG.
LATE HOURS
AUX_LATEHOURS = AUX_ZZC10_HR - AUX_PKHD_TIME.
IT_TEMP-LATEHOURS = AUX_LATEHOURS.
REPLENISHMENT LEAD TIME
IT_TEMP-REPL_LEAD_TIME = AUX_PKHD_TIME.
KANBAN LATE QUANTITIES
IT_TEMP-GSMNG = AUX_PKBMG.
FILL RATE
AUX_TOTAL = AUX_PKBMG + AUX_FILL.
IT_TEMP-FILLRATE = ( AUX_FILL / AUX_TOTAL ) * 100.
GET STOCK IN PO01
REFRESH IT_MARD.
SELECT LABST FROM MARD INTO TABLE IT_MARD
WHERE MATNR EQ IT_ZZC10-MATNR
AND WERKS EQ IT_ZZC10-WERKS.
IF SY-SUBRC EQ 0.
LOOP AT IT_MARD.
SUM.
ENDLOOP.
MOVE IT_MARD-LABST TO IT_TEMP-STOCK_PO01.
CLEAR IT_MARD.
ENDIF.
GET YESTERDAY'S OUTPUT QUANTITY
PERFORM GET_YESTERDAY_QTY.
CUMULATIVE OUTPUT FOR ACTUAL MONTH
PERFORM GET_CUMULATIVE_OUTPUT.
GET BACKORDER SUBASSEMBLY DATA
PERFORM GET_BACKORDER_QTY.
GET BACKORDER FINISHED GOODS, TODAY, +1, +2, +3, +4, +5
AND AVERAGE OUPTUT NEEDED DATA
PERFORM GET_FINISHEDGOODS_DATA.
GET DATA FOR ACTUAL MONTH DELIVERED
PERFORM GET_ACTUAL_MONTH_DATA.
APPEND IT_TEMP.
CLEAR IT_TEMP.
DELETE IT_ZZC10_TEMP WHERE MATNR EQ IT_ZZC10_TEMP-MATNR
AND WERKS EQ IT_ZZC10_TEMP-WERKS.
CLEAR: IT_ZZC10, IT_ZZC10_TEMP, IT_PKHD.
ENDLOOP.
ENDIF.
ENDFORM. " GET_KANBAN_DETAILS
*& Form GET_YESTERDAY_QTY
text
--> p1 text
<-- p2 text
FORM GET_YESTERDAY_QTY .
CLEAR: AUX_BUKRS, AUX_WAERS.
READ TABLE IT_T001W WITH KEY WERKS = IT_PKHD-WERKS.
IF SY-SUBRC EQ 0.
CLEAR AUX_FABKL.
MOVE IT_T001W-FABKL TO AUX_FABKL.
SELECT SINGLE BUKRS INTO AUX_BUKRS FROM T001K
WHERE BWKEY = IT_T001W-BWKEY.
IF SY-SUBRC EQ 0.
SELECT SINGLE WAERS INTO AUX_WAERS FROM T001
WHERE BUKRS = AUX_BUKRS.
ENDIF.
IF 'WD;WF;WN;WP;WU' CS AUX_FABKL.
AUX_FABKL(1) = 'P'.
ENDIF.
MOVE SY-DATUM TO AUX_DATUMABSOLUT.
PERFORM WEEKDAY USING AUX_DATUMABSOLUT.
MOVE 'W' TO AUX_FLAG.
PERFORM CHECK_WORKING_DAY CHANGING AUX_FLAG.
IF AUX_DATUMABSOLUT = 0.
AUX_YDAY = SY-DATUM.
ELSEIF AUX_DATUMABSOLUT = 1.
AUX_YDAY = SY-DATUM - 1.
ELSEIF AUX_FLAG = 'F'.
AUX_YDAY = SY-DATUM.
ENDIF.
IF AUX_DATUMABSOLUT = 0 OR
AUX_DATUMABSOLUT = 1 OR
AUX_FLAG = 'F'.
PERFORM DATE_WITH_OFFSET USING 0 CHANGING AUX_TDAY.
PERFORM DATE_WITH_OFFSET USING 1 CHANGING AUX_DAY1.
PERFORM DATE_WITH_OFFSET USING 2 CHANGING AUX_DAY2.
PERFORM DATE_WITH_OFFSET USING 3 CHANGING AUX_DAY3.
PERFORM DATE_WITH_OFFSET USING 4 CHANGING AUX_DAY4.
PERFORM DATE_WITH_OFFSET USING 5 CHANGING AUX_DAY5.
ELSE.
PERFORM DATE_WITH_OFFSET USING 0 CHANGING AUX_YDAY.
PERFORM DATE_WITH_OFFSET USING 1 CHANGING AUX_TDAY.
PERFORM DATE_WITH_OFFSET USING 2 CHANGING AUX_DAY1.
PERFORM DATE_WITH_OFFSET USING 3 CHANGING AUX_DAY2.
PERFORM DATE_WITH_OFFSET USING 4 CHANGING AUX_DAY3.
PERFORM DATE_WITH_OFFSET USING 5 CHANGING AUX_DAY4.
PERFORM DATE_WITH_OFFSET USING 6 CHANGING AUX_DAY5.
ENDIF.
AUX_BORD = '19000101'.
GET PLANNED ORDER DATA FOR YESTERDAY
REFRESH IT_PLAF.
CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG.
SELECT * FROM PLAF INTO TABLE IT_PLAF
WHERE MATNR EQ IT_PKHD-MATNR
AND PLWRK EQ IT_PKHD-WERKS
AND ( PAART EQ 'KD' OR PAART EQ 'PE' )
AND RATID GT 0
AND PEDTR EQ AUX_YDAY.
IF NOT IT_PLAF[] IS INITIAL.
LOOP AT IT_PLAF.
REFRESH IT_KBED_KAKO.
SELECT KBED~KBEAREST KBED~KRUEREST KBED~KEINH
FROM KBED INNER JOIN KAKO
ON KBED~KAPID EQ KAKO~KAPID
INTO TABLE IT_KBED_KAKO
WHERE KBED~BEDID = IT_PLAF-RATID
AND KAKO~KAPAR = '001'.
IF NOT IT_KBED_KAKO[] IS INITIAL.
LOOP AT IT_KBED_KAKO.
IF IT_KBED_KAKO-KEINH NE 'STD'.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KBEAREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KBEAREST.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KRUEREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KRUEREST.
ENDIF.
ADD IT_KBED_KAKO-KBEAREST TO AUX_KBEAREST.
ADD IT_KBED_KAKO-KRUEREST TO AUX_KRUEREST.
CLEAR IT_KBED_KAKO.
ENDLOOP.
AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.
ENDIF.
CLEAR IT_PLAF.
ENDLOOP.
ENDIF.
READ TABLE IT_KBED_KAKO INDEX 1.
MOVE: AUX_KAPBD TO IT_TEMP-KAPBD_OUTY,
IT_KBED_KAKO-KEINH TO IT_TEMP-KEINH_OUTY.
GET OUTPUT QUANTITY FOR YESTERDAY
REFRESH: IT_MKPF, IT_MSEG.
CLEAR: AUX_MENGE.
SELECT * FROM MKPF INTO TABLE IT_MKPF
WHERE BUDAT EQ AUX_PREVIOUS.
IF NOT IT_MKPF[] IS INITIAL.
GET MATERIAL DOCUMENT ITEM DATA
SELECT * FROM MSEG INTO TABLE IT_MSEG
FOR ALL ENTRIES IN IT_MKPF
WHERE MBLNR EQ IT_MKPF-MBLNR
AND MATNR IN SO_MATNR
AND WERKS IN SO_WERKS
AND MJAHR EQ SY-DATUM+0(4)
AND ( BWART EQ '131' OR BWART EQ '132' ).
IF NOT IT_MSEG[] IS INITIAL.
LOOP AT IT_MSEG.
AUX_MENGE = AUX_MENGE + IT_MSEG-MENGE.
CLEAR IT_MSEG.
ENDLOOP.
ENDIF.
ENDIF.
READ TABLE IT_MSEG INDEX 1.
MOVE: AUX_MENGE TO IT_TEMP-GSMNG_OUTY,
IT_MSEG-MEINS TO IT_TEMP-MEINS_OUTY.
CLEAR IT_T001W.
ENDIF.
ENDFORM. " GET_YESTERDAY_QTY
*& Form GET_BACKORDER_QTY
text
--> p1 text
<-- p2 text
FORM GET_BACKORDER_QTY .
GET PLANNED ORDER DATA FOR BACKORDER
REFRESH IT_PLAF.
CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG, AUX_QUANT.
SELECT * FROM PLAF INTO TABLE IT_PLAF
WHERE MATNR EQ IT_ZZC10-MATNR
AND PLWRK EQ IT_ZZC10-WERKS
AND ( PAART EQ 'KD' OR PAART EQ 'PE' )
AND RATID GT 0
AND PEDTR GE SO_BUDAT-LOW
AND PEDTR LE SY-DATUM.
IF NOT IT_PLAF[] IS INITIAL.
LOOP AT IT_PLAF.
CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2, AUX_PLAF_HR, AUX_DIFF.
EMPTY DATE GREATER THAN FULL DATE
CONCATENATE SY-DATUM SY-UZEIT
INTO AUX_TIMESTAMP1.
CONCATENATE IT_PLAF-PEDTR IT_PLAF-PEDTI
INTO AUX_TIMESTAMP2.
CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'
EXPORTING
TIMESTAMP1 = AUX_TIMESTAMP1
TIMESTAMP2 = AUX_TIMESTAMP2
IMPORTING
DIFFERENCE = AUX_DIFF.
AUX_PLAF_HR = AUX_DIFF / 3600.
IF AUX_PLAF_HR > AUX_PKHD_TIME.
AUX_GSMNG = AUX_GSMNG + IT_PLAF-GSMNG.
REFRESH IT_KBED_KAKO.
SELECT KBEDKBEAREST KBEDKRUEREST KBED~KEINH
FROM KBED INNER JOIN KAKO
ON KBEDKAPID EQ KAKOKAPID
INTO TABLE IT_KBED_KAKO
WHERE KBED~BEDID = IT_PLAF-RATID
AND KAKO~KAPAR = '001'.
IF NOT IT_KBED_KAKO[] IS INITIAL.
LOOP AT IT_KBED_KAKO.
IF IT_KBED_KAKO-KEINH NE 'STD'.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KBEAREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KBEAREST.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KRUEREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KRUEREST.
ENDIF.
AUX_KBEAREST = AUX_KBEAREST + IT_KBED_KAKO-KBEAREST.
AUX_KRUEREST = AUX_KRUEREST + IT_KBED_KAKO-KRUEREST.
CLEAR IT_KBED_KAKO.
ENDLOOP.
AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.
ENDIF.
ENDIF.
ENDLOOP.
READ TABLE IT_PLAF INDEX 1.
MOVE: AUX_GSMNG TO IT_TEMP-GSMNG_BORD,
IT_PLAF-MEINS TO IT_TEMP-MEINS_BORD.
READ TABLE IT_KBED_KAKO INDEX 1.
MOVE: AUX_KAPBD TO IT_TEMP-KAPBD_BORD,
IT_KBED_KAKO-KEINH TO IT_TEMP-KEINH_BORD.
ENDIF.
ENDFORM. " GET_BACKORDER_QTY
*& Form WEEKDAY
text
-->P_AUX_DATUMABSOLUT text
FORM WEEKDAY USING P_DATUMABSOLUT.
P_DATUMABSOLUT = P_DATUMABSOLUT MOD 7.
ENDFORM. " WEEKDAY
*& Form CHECK_WORKING_DAY
text
<--P_AUX_FLAG text
FORM CHECK_WORKING_DAY CHANGING P_FLAG.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
DATE = SY-DATUM
FACTORY_CALENDAR_ID = AUX_FABKL
IMPORTING
DATE = AUX_FDAY
EXCEPTIONS
CALENDAR_BUFFER_NOT_LOADABLE = 1
CORRECT_OPTION_INVALID = 2
DATE_AFTER_RANGE = 3
DATE_BEFORE_RANGE = 4
DATE_INVALID = 5
FACTORY_CALENDAR_NOT_FOUND = 6
OTHERS = 7.
IF AUX_FDAY NE SY-DATUM.
AUX_FLAG = 'F'.
ENDIF.
ENDFORM. " CHECK_WORKING_DAY
*& Form DATE_WITH_OFFSET
text
-->P_0 text
<--P_AUX_TDAY text
FORM DATE_WITH_OFFSET USING AUX_OFFSET
CHANGING P_TDAY.
DATA:
AUX_CALENDARDATE LIKE SCAL-DATE,
AUX_FACTORYDATE LIKE SCAL-FACDATE.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
DATE = SY-DATUM
FACTORY_CALENDAR_ID = AUX_FABKL
IMPORTING
FACTORYDATE = AUX_FACTORYDATE
EXCEPTIONS
CALENDAR_BUFFER_NOT_LOADABLE = 1
CORRECT_OPTION_INVALID = 2
DATE_AFTER_RANGE = 3
DATE_BEFORE_RANGE = 4
DATE_INVALID = 5
FACTORY_CALENDAR_NOT_FOUND = 6
OTHERS = 7.
AUX_FACTORYDATE = AUX_FACTORYDATE + AUX_OFFSET.
CALL FUNCTION 'FACTORYDATE_CONVERT_TO_DATE'
EXPORTING
FACTORYDATE = AUX_FACTORYDATE
FACTORY_CALENDAR_ID = AUX_FABKL
IMPORTING
DATE = AUX_CALENDARDATE
EXCEPTIONS
CALENDAR_BUFFER_NOT_LOADABLE = 1
FACTORYDATE_AFTER_RANGE = 2
FACTORYDATE_BEFORE_RANGE = 3
FACTORYDATE_INVALID = 4
FACTORY_CALENDAR_ID_MISSING = 5
FACTORY_CALENDAR_NOT_FOUND = 6
OTHERS = 7.
P_TDAY = AUX_CALENDARDATE.
ENDFORM. " DATE_WITH_OFFSET
*& Form GET_CUMULATIVE_OUTPUT
text
--> p1 text
<-- p2 text
FORM GET_CUMULATIVE_OUTPUT .
CLEAR: AUX_LOW, AUX_HIGH.
MOVE: SY-DATUM TO AUX_LOW,
SY-DATUM TO AUX_HIGH.
MOVE: '01' TO AUX_LOW+6(2),
'31' TO AUX_HIGH+6(2).
REFRESH IT_MKPF_MSEG.
CLEAR AUX_MNG.
SELECT MKPFMBLNR MKPFMJAHR MKPF~BUDAT
MSEGBWART MSEGMATNR MSEGMENGE MSEGMEINS MSEGDMBTR MSEGWERKS
INTO TABLE IT_MKPF_MSEG
FROM MKPF JOIN MSEG
ON MKPFMBLNR EQ MSEGMBLNR
WHERE MKPF~BUDAT BETWEEN AUX_LOW AND AUX_HIGH
AND MKPF~MJAHR EQ AUX_CURRENT+0(4)
AND MKPF~VGART EQ 'WS'
AND MSEG~ZEILE EQ 1
AND MSEG~WERKS EQ SO_WERKS
AND MSEG~MATNR EQ IT_PKHD-MATNR
AND MSEG~BWART IN ('131', '132').
IF NOT IT_MKPF_MSEG[] IS INITIAL.
LOOP AT IT_MKPF_MSEG.
AUX_MNG = AUX_MNG + IT_MKPF_MSEG-MENGE.
CLEAR IT_MKPF_MSEG.
ENDLOOP.
ENDIF.
MOVE AUX_MNG TO IT_TEMP-GSMNG_OUTM.
READ TABLE IT_MKPF_MSEG INDEX 1.
MOVE IT_MKPF_MSEG-MEINS TO IT_TEMP-MEINS_OUTM.
REFRESH IT_COBK.
SELECT DISTINCT BLPP~RUECK FROM BLPK INNER JOIN BLPP
ON BLPKPRTNR EQ BLPPPRTNR
INTO TABLE IT_COBK
WHERE BLPK~WERKS EQ SO_WERKS
AND BLPK~MATNR EQ SO_MATNR
AND BLPK~DATUM BETWEEN AUX_LOW
AND AUX_HIGH
AND BLPP~PRTPS EQ '0002'.
IF NOT IT_COBK[] IS INITIAL.
REFRESH IT_COEPL.
SELECT KOKRS BELNR FROM COBK
INTO CORRESPONDING FIELDS OF TABLE IT_COEPL
FOR ALL ENTRIES IN IT_COBK
WHERE REFBT EQ 'R'
AND REFBN EQ IT_COBK-RUECK
AND BLDAT BETWEEN AUX_LOW AND AUX_HIGH.
CLEAR IT_CAPACITIES.
REFRESH IT_CAPACITIES.
LOOP AT IT_COEPL.
SELECT LSBBTR MEINB FROM COEPL
APPENDING CORRESPONDING FIELDS OF TABLE IT_CAPACITIES
WHERE KOKRS EQ IT_COEPL-KOKRS
AND BELNR EQ IT_COEPL-BELNR
AND OBJNR LIKE '%DLABOR'.
CALL FUNCTION 'UNIT_SUM'
IMPORTING
QUANTITY_SUM = IT_TEMP-KAPBD_OUTM
UNIT_SUM = AUX_SUM_UNIT
TABLES
QUANTITIES_UNITS = IT_CAPACITIES.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_TEMP-KAPBD_OUTM
UNIT_IN = AUX_SUM_UNIT
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_TEMP-KAPBD_OUTM.
ENDLOOP.
READ TABLE IT_CAPACITIES INDEX 1.
MOVE IT_CAPACITIES-MEINB TO IT_TEMP-KEINH_OUTM.
ENDIF.
ENDFORM. " GET_CUMULATIVE_OUTPUT
*& Form GET_FINISHEDGOODS_DATA
text
--> p1 text
<-- p2 text
FORM GET_FINISHEDGOODS_DATA .
GET PLANNED ORDER DATA
REFRESH IT_PLAF.
CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG.
SELECT * FROM PLAF INTO TABLE IT_PLAF
WHERE MATNR EQ IT_TEMP-FINISHED
AND ( PAART EQ 'KD' OR PAART EQ 'PE' )
AND RATID GT 0
AND PEDTR GE AUX_BORD
AND PEDTR LE AUX_DAY5.
IF NOT IT_PLAF[] IS INITIAL.
LOOP AT IT_PLAF.
CLEAR: AUX_KAPBD, AUX_GSMNG.
REFRESH IT_KBED_KAKO.
SELECT KBEDKBEAREST KBEDKRUEREST KBED~KEINH
FROM KBED INNER JOIN KAKO
ON KBEDKAPID EQ KAKOKAPID
INTO TABLE IT_KBED_KAKO
WHERE KBED~BEDID = IT_PLAF-RATID
AND KAKO~KAPAR = '001'.
IF NOT IT_KBED_KAKO[] IS INITIAL.
CLEAR AUX_KAPBD.
LOOP AT IT_KBED_KAKO.
IF IT_KBED_KAKO-KEINH NE 'STD'.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KBEAREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KBEAREST.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_KBED_KAKO-KRUEREST
UNIT_IN = IT_KBED_KAKO-KEINH
UNIT_OUT = 'STD'
IMPORTING
OUTPUT = IT_KBED_KAKO-KRUEREST.
ENDIF.
ADD IT_KBED_KAKO-KBEAREST TO AUX_KBEAREST.
ADD IT_KBED_KAKO-KRUEREST TO AUX_KRUEREST.
CLEAR IT_KBED_KAKO.
ENDLOOP.
AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.
ENDIF.
READ TABLE IT_KBED_KAKO INDEX 1.
CASE IT_PLAF-PEDTR.
WHEN AUX_DAY5.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_DAY5 = IT_TEMP-F_GSMNG_DAY5 + AUX_GSMNG.
IT_TEMP-F_MEINS_DAY5 = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_DAY5 = IT_TEMP-F_KAPBD_DAY5 + AUX_KAPBD.
IT_TEMP-F_KEINH_DAY5 = IT_KBED_KAKO-KEINH.
WHEN AUX_DAY4.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_DAY4 = IT_TEMP-F_GSMNG_DAY4 + AUX_GSMNG.
IT_TEMP-F_MEINS_DAY4 = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_DAY4 = IT_TEMP-F_KAPBD_DAY4 + AUX_KAPBD.
IT_TEMP-F_KEINH_DAY4 = IT_KBED_KAKO-KEINH.
WHEN AUX_DAY3.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_DAY3 = IT_TEMP-F_GSMNG_DAY3 + AUX_GSMNG.
IT_TEMP-F_MEINS_DAY3 = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_DAY3 = IT_TEMP-F_KAPBD_DAY3 + AUX_KAPBD.
IT_TEMP-F_KEINH_DAY3 = IT_KBED_KAKO-KEINH.
WHEN AUX_DAY2.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_DAY2 = IT_TEMP-F_GSMNG_DAY2 + AUX_GSMNG.
IT_TEMP-F_MEINS_DAY2 = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_DAY2 = IT_TEMP-F_KAPBD_DAY2 + AUX_KAPBD.
IT_TEMP-F_KEINH_DAY2 = IT_KBED_KAKO-KEINH.
WHEN AUX_DAY1.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_DAY1 = IT_TEMP-F_GSMNG_DAY1 + AUX_GSMNG.
IT_TEMP-F_MEINS_DAY1 = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_DAY1 = IT_TEMP-F_KAPBD_DAY1 + AUX_KAPBD.
IT_TEMP-F_KEINH_DAY1 = IT_KBED_KAKO-KEINH.
WHEN AUX_TDAY.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_TDAY = IT_TEMP-F_GSMNG_TDAY + AUX_GSMNG.
IT_TEMP-F_MEINS_TDAY = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_TDAY = IT_TEMP-F_KAPBD_TDAY + AUX_KAPBD.
IT_TEMP-F_KEINH_TDAY = IT_KBED_KAKO-KEINH.
WHEN OTHERS.
AUX_GSMNG = IT_PLAF-GSMNG.
IT_TEMP-F_GSMNG_BORD = IT_TEMP-F_GSMNG_BORD + AUX_GSMNG.
IT_TEMP-F_MEINS_BORD = IT_PLAF-MEINS.
IT_TEMP-F_KAPBD_BORD = IT_TEMP-F_KAPBD_BORD + AUX_KAPBD.
IT_TEMP-F_KEINH_BORD = IT_KBED_KAKO-KEINH.
ENDCASE.
IT_TEMP-F_GSMNG_OUTN = IT_TEMP-F_GSMNG_OUTN + AUX_GSMNG.
IT_TEMP-F_KAPBD_OUTN = IT_TEMP-F_KAPBD_OUTN + AUX_KAPBD.
ENDLOOP.
READ TABLE IT_PLAF INDEX 1.
MOVE IT_PLAF-MEINS TO IT_TEMP-F_MEINS_OUTN.
READ TABLE IT_KBED_KAKO INDEX 1.
MOVE IT_KBED_KAKO-KEINH TO IT_TEMP-F_KEINH_OUTN.
ENDIF.
ENDFORM. " GET_FINISHEDGOODS_DATA
*& Form GET_ACTUAL_MONTH_DATA
text
--> p1 text
<-- p2 text
FORM GET_ACTUAL_MONTH_DATA .
CLEAR: AUX_LOW, AUX_HIGH.
MOVE: '01' TO SO_BUDAT-LOW+6(2),
SO_BUDAT-LOW TO AUX_LOW,
'31' TO SO_BUDAT-LOW+6(2),
SO_BUDAT-LOW TO AUX_HIGH.
REFRESH IT_MKPF_MSEG.
CLEAR AUX_MNG.
SELECT MKPFMBLNR MKPFMJAHR MKPF~BUDAT
MSEGBWART MSEHi Ramya,
Your program contains a lot of BIG standard tables, these tables
usually contain huge amount of data,
plus you have used SELECT * in many places, try to avoid that and replace with only those field names that are reqd.
even the joins are on huge tables, performance could improve on those if you can put some more conditions or keys to the joins to make it more specific.
even after that if it gives the Runtime Error then you have 2 options:
1. Ask your Basis to increase Time limit for program executing in foreground.
2. Execute your program in Background Mode.
Regards,
Samson Rodrigues. -
How to find out the exact reason for backordered order in oracle apps R12
Hi,
I am new to OM module.I booked an order and trying to do "pick release" the booked order but i couldn't do so, because the order is getting backordered.
These are the things i checked
1.On-hand quantity for the particular item i am booking is sufficient enough
2.Item is in M1 org and onhand quantity is also in same org.
Can you please help me how to find the exact reason for my order getting backordered.
Regards
Sandeep.GHi Sandeep,
Reasons for pick release resulting in back ordered can be found here:
Reasons for a Sales Order to get Backordered!
Failing pick release, orders getting backordered and other common issues with picking.
Please review notes:
Cannot Pick Release Items, Completes with Warning and the Item is Backordered. (Doc ID 1240404.1)
Pick Release Process Completes In Warning Line Gets Backordered Though Onhand Is Present (Doc ID 1285514.1)
Pick Release Backorders Sales Order Lines, Error in Log File "No Mtl_Sales_Order ID found for oe header" (Doc ID 398385.1)
Reservation Remains After Pick Release Of Backordered Move Order (Doc ID 754518.1)
In addition, please review:
What is Back Order in OM? How are Backorders Handled | Oracle Apps
Thanks &
Best Regards, -
APO GATP Backorder processing -- SO's in R/3 not updating -- CIF problem
Issue: After executing backorder processing in APO, the update is stuck in CIF .. error (*"Inbound APOCLNT800: No IModel active for cat. Sale"*)
Note: I am able to create SO's in R/3 and getting commit from APO.
After Saving the SO's the SO's are transferred to APO ( I am able to see the SO's in product view - APO).
I wonder where is the IM not active
Appreciate your inputsHi kitkat,
If this is a test of a new functionality, you might just have an old blocked queue. Try deleting the blocked queue and then re-try the BOP.
If this is a new error for a BOP scenario that had been working previously, then check your deltareport. You may have an order in SCM that for whatever reason is no longer being handled by SCM. In this case, you only need to delete the order in SCM.
If these two tries don't work, then you need to start examining your CIFs to see if the product/location/sales ord/stock/ATP/etc etc are consistant with your expectations. Don't forget, in the case of a GATP using location/product substitution, you need to ensure that all possible data that would be needed by BOP is being properly CIFd across.
Best Regards,
DB49 -
Sales BOM - Delivery Quantity check during post goods issue
I am working on a problem in my company. We are running ECC6.0 ehp 4. We are using standard ERLA functionality with sales bom (5) for product kits. Delivery manager has requested that we investigate a system check during delivery post goods issue. THe problem is that when shipper processes delivery, if they have to backorder they update pick and delivery quanity on the TAE item. They should also update TAQ delivery quantity, so that backorder amount is correct. If they make data entry error, backorder quantity is incorrect. The delivery manager has tried a number of attempts to re-train and correct mistakes. He is now asking that SAP issue a hard error if TAQ and TAE delivery item quantities are not the same.
I have searched on SAP Notes, Forms, and Google and do not see solution. I know that at delviery item category there is a minimum qty check for the item category. I've not found a user exit or configuration point that checks quanities. Does anyone know of out of the box solution? Or where would I put in custom user exit?
Test Case
Create Standard Order
Enter Material with Sales BOM
ITEM A Qty 10
BOM explodes with Item categories
ITEM A TAQ parent
ITEM B TAE child
Create Delivery
Delivery has item categories TAQ and TAE
TAE is pickable, TAQ no pick
Process TAE
Pick quantity of 5 items
Change delivery quantity to 5 items
Forget to change TAQ delivery quantity
Pack 5 items
Post Goods Issue the delivery.
Is there are requirement/routine than can be run at time of PGI that checks TAQ delivery quantity is the same as TAE delivery quantity. If quanities are not the same, show hard error and message do not allow PGI to complete.
Thank you
Tony RomainI tried setting that field in the sale order this morning. By defaulting it to "C"; I was able to get warning message for TAE line. I was able to post goods with TAE and TAQ, being different quantities. I need the check to determine if TAE and TAQ delivery quantity are different. Using this fields seems to be line specific. Thanks for the suggestion. I now know what that field does to the delivery.
I rewarded points.
Thanks,
Tony -
Confirmation Quantity issue while creating Sales order using BAPI
Hi SDN,
Can anyone of you help mein the below issue:
I have a program to create a sales order using upload file. for this i use "BAPI_SALESORDER_CREATEFROMDAT2" & for changing existing "BAPI_SALESORDER_CHANGE".
Now If the upload file contains the Same Material, Based on other conditions, it needs to create Multiple sales order.
When the first Salesorder is created, the Quantity is getting confirmed (Confirmed quantity VBEP-BMENG). But during actual run, since the confirmation is getting done for the same material in the above Sales order, the confirmation is not being done in the subsequent Sales order".
This poses a problem for business, user need to manual refresh the u201Cconfirmed quantity for each line item in the particular SO where it failed during program upload.
Also while uploading using the BAPI, if we wait forsometime after creating the first sales order in Debug, then the above material is unlocked & the confirmation quantity is done for the subsequent sales order also.
But in the actual run, this is creating a problem. Some Refresh or Unlocking problem.
Can you please suggest a suitable solution for this issue.
Thanks & regrads,
Chaitanya LBKHave you tried backorder processing?
V_V1
V_V2
V_RA
V_R1
V_R2 -
GATP Product allocation status report and backorder processing
Dear Experts,
We are using product allocation as the first and only step in GATP check.
The scenario is like this:
Sales order total quantity = 200
Planned allocation quantity=150
Thus
Confirmed sales order quantity=150
Questions:
1.Now how can see the confirmed/unconfirmed situation for all sales orders.
Is there any standard report.
I understand that this report need to show the planned allocation quantity,total sales order quantity and the confirmed sales order quantity may be bucket wise.Also this report can show the details of all sales orders in the bucket.
The GATP planning book only shows confirmed sales orders in the "sales order" keyfigure until you have introduced another order series key figure for sales order(not related to GATP) which has sales order/scheduling agreement category group assigned to it.
2.Can I do backorder processing of sales orders assuming that after the above report is run,I have changed the planned allocation quantity from 150 to 200 and I need that the sales order can be confirmed now by this program rather than by going into ECC and triggering the GATP check again.
Note that the stock availability situation may remain the same.
Request you to kindly suggest if this is possible in backorder processing.If yes,then what are the settings and the transactions to execute this.
Thanks,
ChandanThanks so much Michael for a prompt reply.
Couple of points.
1./sapapo/ac42-This report is helpful but this has 2 issues.
It has to be run at individual CVC level.Thus it is not a comprehensive report.
It does not provide sales order original quantity.It just provides the planned allocation quantity,confirmed sales order quantity and the remaining quantity.This is normally already available in interactive planning of GATP planning area.
What we need is a report which must say what is the original sales order quantity and how much has been confirmed and how much is the bucket planned allocation quantity.
2.Running ATP in product view or interactive backorder processing view may not help as they seem to be working with ATP group and not with check mode.Note that product allocation gets triggered when check mode comes into play.
Do you know if we can make it work with check mode.
3.The batch backorder processing is working when I am using the "update changes" option.I am still evaluating the results as I don't understand many settings here.It will be nice if you can elaborate on some of the settings used in this transaction please.
Thanks again.
Regards,
Chandan -
How can we backorder a FREIGHT item?
As charges cannot be taxed and there's a request to see the Freight as a separate invoice line, we have a FREIGHT item, not marked as an Inventory Item but Shippable. The issue is when the main item is backordered - in such a case, the Freight item is already invoiced. Just wondering if there's a way to get around this without setting Freight as an inventory item.
Hi Sanjib,
The other workaround you can explore is to apply a Billing Hold to the FREIGHT item & don't release this hold until the main items gets fulfilled. Once it is fulfilled, release this hold & let FRIEGHT items get invoiced.
Regards,
Hemanth -
Dear All,
Pls help me to resolve an issue with Back Order Processing (TCode V_RA). I m getting an error when i click Backorder for a Sales Doc: Check the settings for checking group 02 and checking rule
Thank you!Hi,
Please go through this once.......and check according to this...
Backorder processing is a functionality in SAP where you can change the committments and over-ride the blockage of stocks
marked against sales documents/deliveries. For e.g. you receive an order from a very important customer for material "A" but
the entire quantity of A is committed to another customer "B" via earlier sales orders and this is where BACKORDER processing helps you to change the committment and shift stock due for B to A. This is the benefit of this funtionality.
OMIH - Checking rule for updating backorders
OPJL - Define new checking rule
OPJJ - Define scope of check
V_RA - Backorder Processing
Data selection:-
Sold-to-party Customer code Mandatory
Sales Organization Mandatory
Distribution Channel Mandatory
Division Mandatory
Changed confirmed quantity :-
Tick the material you want to changed and click the Backorder button
Confirmed quantity that still can be changed are highlighted.
V.15 - Backorder List
Sales Organization Mandatory
Distribution Channel Mandatory
Division Mandatory
I Hope it mightbe solve your problem...
Regards,
Reddy. -
Purchase of appliances on backorder
On August 26, I purchased a washer and dryer in store and was told that both items were currently on backorder and would not be available for delivery until after September 21. Since it was an in-store purchase, I was not sure if there was a way I could contact someone with the purchase information to see the status of the backorder or whatnot. While doing some research on the purchased items I noticed that it is showing the washer I purchased is no longer available from Bestbuy.com in the area I am located and didn't know if this also affected my already-placed purchase. Please let me know if there is any information you need on the purchase in order to help me. Thank you!
Hello llamamuffins,
You ask some really great questions! I apologize for any ambiguity with which you may have been left about who to contact about the status of your order. We strive to provide superior communication so that you know what to expect as part of a service, so I regret that we didn't live up to that for you.
In looking into your order, I note that everything appears to be on track for the delivery to be within the time frame you indicate. There isn't a product availability issue for your order and you need not anticipate that there will be any before your new laundry appliances are delivered. Should you need us to look into the status of your order in the future, you may reply to this message or contact the store where you placed your order for an update.
I've very grateful that you took the time to write to us with your concerns.
Sincerely,
John|Social Media Specialist | Best Buy® Corporate
Private Message
Maybe you are looking for
-
PI 7.11 - Sync HTTP receiver adapter with response XML file
Hi We have a File to HTTP scenario in which we need a sync HTTP interface. We send a file to the HTTP address and receive a XML acknowledge. As I read in this forum: sync HTTP interfaces are not possible with the "standard" HTTP adapter. So I found a
-
Hwo to make this effect in flash
SO i know in after effect i can make this but i dont have the program and this is for a flash intro... Lets say I have a ball in motion and I was a line trailing behind it like a ball has been kick and it is flying through the air how can i make the
-
My raw files from Canon T5i isn't being recognized?
I am getting this message: PS could not complete your request because the file appears to be from a camera model which is not supported by the install version of Camera Raw. Presently I have Photoshop 5.1 and won't read my RAW files from Canon T5i, a
-
Killing long running SQl automatically
I want to put a restriction on my database, if a sql query is running for more then 15 min, then killing this automatically. If this is possible kindly let me know.
-
On my old BB Bold, when i wanted to make a call via my hands-free device in my car, and the person i was calling had multiple phone numbers, the device would ask if i wanted "mobile 1" or "work" for instance; on my new BB Classic, the device recites