S Ded 013040
S Ded 013040
S Ded 013040
REPORT /SH1/SDED013040.
AT SELECTION-SCREEN.
* PERFORM PFM_CHECK.
START-OF-SELECTION.
PERFORM PFM_CHECK.
PERFORM PFM_UPLOAD.
*&---------------------------------------------------------------------*
*& Form PfM_GET_FILEPATH
*&---------------------------------------------------------------------*
FORM PFM_GET_FILEPATH .
DATA:L_RC TYPE I,
LS_FILE_TABLE TYPE FILE_TABLE,
LT_FILE_TABLE TYPE FILETABLE.
CLEAR LS_FILE_TABLE.
READ TABLE LT_FILE_TABLE INTO LS_FILE_TABLE INDEX 1.
P_FILE = LS_FILE_TABLE.
FIELD-SYMBOLS <LFS>.
CLEAR LS_UPDATA.
READ TABLE GT_UPDATA INTO LS_UPDATA INDEX 1.
SELECT SINGLE *
FROM TVBVK
INTO LS_TVBVK
WHERE VKBUR = 'NSEC'
AND VKGRP = LS_UPDATA-VKGRP.
IF SY-SUBRC <> 0.
CONCATENATE 'SalesGroup'
LS_UPDATA-VKGRP
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
SELECT SINGLE *
FROM KNVV
INTO LS_KNVV
WHERE KUNNR = LS_UPDATA-KUNNR
AND VKORG = 'SLS'
AND VTWEG = '20'
AND SPART = '00'.
IF SY-SUBRC <> 0.
CONCATENATE 'Soldto'
LS_UPDATA-KUNNR
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
SELECT SINGLE *
FROM KNVV
INTO LS_KNVV
WHERE KUNNR = LS_UPDATA-KUNNR1
AND VKORG = 'SLS'
AND VTWEG = '20'
AND SPART = '00'.
IF SY-SUBRC <> 0.
CONCATENATE 'Shipto'
LS_UPDATA-KUNNR1
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
IF LS_UPDATA-BSTKD = SPACE.
CONCATENATE 'PONumber'
LS_UPDATA-BSTKD
'is mandatory'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
CLEAR LWK_KETDAT.
LWK_KETDAT = LS_UPDATA-KETDAT.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = LWK_KETDAT.
IF SY-SUBRC <> 0.
CONCATENATE 'DeliveryDate'
LS_UPDATA-KETDAT
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
CLEAR LWK_PRSDT.
LWK_PRSDT = LS_UPDATA-PRSDT.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = LWK_PRSDT.
IF SY-SUBRC <> 0.
CONCATENATE 'PriceDate'
LS_UPDATA-PRSDT
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
SELECT SINGLE *
FROM TVSB
INTO LS_TVSB
WHERE VSBED = LS_UPDATA-VSBED.
IF SY-SUBRC <> 0.
CONCATENATE 'ShippingCondition'
LS_UPDATA-VSBED
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
SELECT *
FROM MARA
INTO TABLE LT_MARA
FOR ALL ENTRIES IN GT_UPDATA
WHERE MATNR = GT_UPDATA-MATNR.
SELECT *
FROM MARD
INTO TABLE LT_MARD
FOR ALL ENTRIES IN GT_UPDATA
WHERE MATNR = GT_UPDATA-MATNR
AND WERKS = GT_UPDATA-WERKS
AND LGORT = GT_UPDATA-LGORT.
SELECT *
FROM MVKE
INTO TABLE LT_MVKE
FOR ALL ENTRIES IN GT_UPDATA
WHERE MATNR = GT_UPDATA-MATNR
AND VKORG = 'SLS'
AND VTWEG = '20'.
IF SY-SUBRC <> 0.
CONCATENATE 'Line item'
L_TABIX
':MaterialCode'
LS_UPDATA-MATNR
'is not valid for Plant'
LS_UPDATA-WERKS
'StorageLocation'
LS_UPDATA-LGORT
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
IF SY-SUBRC <> 0.
CONCATENATE 'Line item'
L_TABIX
': No valid salesview for MaterialCode'
LS_UPDATA-MATNR
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
IF LS_UPDATA-KWMENG <= 0.
CONCATENATE 'Line item'
L_TABIX
': Quantity'
L_KWMENG
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
CLEAR LWK_KNUMH.
SELECT SINGLE KNUMH
FROM A005 INTO LWK_KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'ZPR0'
AND VKORG = 'SLS'
AND VTWEG = '20'
AND KUNNR = LWK_KUNNR
AND MATNR = LS_UPDATA-MATNR
AND DATBI >= LWK_PRSDT
AND DATAB <= LWK_PRSDT.
SELECT COUNT(*)
FROM KONP
WHERE KNUMH = LWK_KNUMH
AND LOEVM_KO <> 'X'.
IF SY-SUBRC <> 0.
CLEAR LWK_KNUMH.
SELECT SINGLE KNUMH
FROM A004 INTO LWK_KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'ZPR0'
AND VKORG = 'SLS'
AND VTWEG = '20'
AND MATNR = LS_UPDATA-MATNR
AND DATBI >= LWK_PRSDT
AND DATAB <= LWK_PRSDT.
SELECT COUNT(*)
FROM KONP
WHERE KNUMH = LWK_KNUMH
AND LOEVM_KO <> 'X'.
IF SY-SUBRC <> 0.
CONCATENATE 'Line item'
L_TABIX
':No valid price ZPR0 for'
LS_UPDATA-MATNR
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
ENDIF.
CLEAR LWK_KNUMH.
SELECT SINGLE KNUMH
FROM A005 INTO LWK_KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'ZPMN'
AND VKORG = 'SLS'
AND VTWEG = '20'
AND KUNNR = LWK_KUNNR
AND MATNR = LS_UPDATA-MATNR
AND DATBI >= LWK_PRSDT
AND DATAB <= LWK_PRSDT.
SELECT COUNT(*)
FROM KONP
WHERE KNUMH = LWK_KNUMH
AND LOEVM_KO <> 'X'.
IF SY-SUBRC <> 0.
CLEAR LWK_KNUMH.
SELECT SINGLE KNUMH
FROM A004 INTO LWK_KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'ZPMN'
AND VKORG = 'SLS'
AND VTWEG = '20'
AND MATNR = LS_UPDATA-MATNR
AND DATBI >= LWK_PRSDT
AND DATAB <= LWK_PRSDT.
SELECT COUNT(*)
FROM KONP
WHERE KNUMH = LWK_KNUMH
AND LOEVM_KO <> 'X'.
IF SY-SUBRC <> 0.
CONCATENATE 'Line item'
L_TABIX
':No valid price ZPMN for'
LS_UPDATA-MATNR
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR LS_UPDATA.
READ TABLE GT_UPDATA INTO LS_UPDATA INDEX 1.
LS_HEADER-DOC_TYPE = 'ZORP'.
LS_HEADER-SALES_ORG = 'SLS'.
LS_HEADER-DISTR_CHAN = '20'.
LS_HEADER-DIVISION = '00'.
LS_HEADER-SALES_OFF = 'NSEC'.
LS_HEADER-SALES_GRP = LS_UPDATA-VKGRP.
LS_PARTNERS-PARTN_ROLE = 'AG'.
LS_PARTNERS-PARTN_NUMB = LS_UPDATA-KUNNR.
APPEND LS_PARTNERS TO LT_PARTNERS.
LS_PARTNERS-PARTN_ROLE = 'WE'.
LS_PARTNERS-PARTN_NUMB = LS_UPDATA-KUNNR1.
APPEND LS_PARTNERS TO LT_PARTNERS.
LS_HEADER-PURCH_NO_C = LS_UPDATA-BSTKD.
LS_HEADER-PRICE_DATE = LS_UPDATA-KETDAT.
LS_HEADER-ORD_REASON = LS_UPDATA-AUGRU.
LS_HEADER-SHIP_COND = LS_UPDATA-VSBED.
LS_HEADER-SHIP_TYPE = LS_UPDATA-VSART.
LS_HEADERX-DOC_TYPE = 'X'.
LS_HEADERX-SALES_ORG = 'X'.
LS_HEADERX-DISTR_CHAN = 'X'.
LS_HEADERX-DIVISION = 'X'.
LS_HEADERX-SALES_OFF = 'X'.
LS_HEADERX-SALES_GRP = 'X'.
LS_HEADERX-PURCH_NO_C = 'X'.
LS_HEADERX-PRICE_DATE = 'X'.
LS_HEADERX-ORD_REASON = 'X'.
LS_HEADERX-SHIP_COND = 'X'.
LS_HEADERX-SHIP_TYPE = 'X'.
LS_ITEMS-ITM_NUMBER = L_TABIX.
LS_ITEMS-MATERIAL = LS_UPDATA-MATNR.
LS_ITEMS-PLANT = LS_UPDATA-WERKS.
LS_ITEMS-STORE_LOC = LS_UPDATA-LGORT.
APPEND LS_ITEMS TO LT_ITEMS.
LS_ITEMSX-ITM_NUMBER = L_TABIX.
* LS_ITEMSX-UPDATEFLAG = 'I'.
LS_ITEMSX-MATERIAL = 'X'.
LS_ITEMSX-PLANT = 'X'.
LS_ITEMSX-STORE_LOC = 'X'.
APPEND LS_ITEMSX TO LT_ITEMSX.
LS_SCHEDULES-ITM_NUMBER = L_TABIX.
LS_SCHEDULES-REQ_QTY = LS_UPDATA-KWMENG.
APPEND LS_SCHEDULES TO LT_SCHEDULES.
LS_SCHEDULESX-ITM_NUMBER = L_TABIX.
LS_SCHEDULESX-REQ_QTY = 'X'.
APPEND LS_SCHEDULESX TO LT_SCHEDULESX.
ENDLOOP.
L_SWITCH-COND_HANDL = 'X'.
LS_CONDITIONSX-COND_TYPE = 'ZPR0'.
* LS_CONDITIONSX-UPDATEFLAG = 'I'.
APPEND LS_CONDITIONSX TO LT_CONDITIONSX.
LS_CONDITIONSX-COND_TYPE = 'ZPMN'.
* LS_CONDITIONSX-UPDATEFLAG = 'I'.
APPEND LS_CONDITIONSX TO LT_CONDITIONSX.