0% found this document useful (0 votes)
69 views

S Ded 013040

This document contains a report for order data upload validation. It defines data structures to store uploaded order records and validate the fields. The validation checks that customer, material, plant and other key fields are valid references in the system. Any invalid fields will return error messages to stop processing.

Uploaded by

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

S Ded 013040

This document contains a report for order data upload validation. It defines data structures to store uploaded order records and validate the fields. The validation checks that customer, material, plant and other key fields are valid references in the system. Any invalid fields will return error messages to stop processing.

Uploaded by

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

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

*& Report /SH1/SDED013040


*&
*&---------------------------------------------------------------------*
* ZORP 受注伝票一括 UL
*-----------------------------------------------------------------------
* MAINTENANCE HISTORY --------------------------------------------------
* V001 1502-A002 2015/11/04 LX14010287
* NSEC Initial Coding
*&---------------------------------------------------------------------*

REPORT /SH1/SDED013040.

TYPES: BEGIN OF TY_DATA,


VKGRP TYPE VBAK-VKGRP, "销售组
KUNNR TYPE KUAGV-KUNNR, "售达方
KUNNR1 TYPE KUWEV-KUNNR, "送达方
BSTKD TYPE VBKD-BSTKD, "客户采购订单编号
KETDAT TYPE RV45A-KETDAT, "凭证请求交货日期
PRSDT TYPE VBKD-PRSDT, "定价日期和汇率
AUGRU TYPE VBAK-AUGRU, "订购原因( 业务原因 )
VSBED TYPE VBAK-VSBED, "装运条件
TRATY TYPE VBKD-TRATY, "运输方式类型
VSART TYPE VBKD-VSART, "装运类型
TEXT TYPE CHAR200,
MATNR TYPE VBAP-MATNR,
KWMENG TYPE RV45A-KWMENG,
WERKS TYPE VBAP-WERKS,
LGORT TYPE VBAP-LGORT,
END OF TY_DATA.

DATA: GT_UPDATA TYPE STANDARD TABLE OF TY_DATA.

PARAMETERS: P_FILE TYPE RLGRAP-FILENAME OBLIGATORY,


P_TEST TYPE CHAR1 RADIOBUTTON GROUP RG,
P_UPLOAD TYPE CHAR1 RADIOBUTTON GROUP RG.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.


PERFORM PFM_GET_FILEPATH.

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.

DATA:L_FILE_FILTER TYPE STRING VALUE 'All(*.*)|*.*'.


CLEAR: LT_FILE_TABLE,
L_RC.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG


EXPORTING
* WINDOW_TITLE = '请选择上传的文件'
MULTISELECTION = SPACE
FILE_FILTER = L_FILE_FILTER
CHANGING
FILE_TABLE = LT_FILE_TABLE
RC = L_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.

CLEAR LS_FILE_TABLE.
READ TABLE LT_FILE_TABLE INTO LS_FILE_TABLE INDEX 1.
P_FILE = LS_FILE_TABLE.

ENDFORM. " PfM_GET_FILEPATH


*&---------------------------------------------------------------------*
*& Form PFM_CHECK
*&---------------------------------------------------------------------*
FORM PFM_CHECK .

DATA: LWK_KNUMH TYPE A005-KNUMH,


LWK_PRSDT TYPE D,
LWK_KETDAT TYPE D,
LWK_KUNNR TYPE KUAGV-KUNNR,
L_KWMENG TYPE CHAR15,
L_TABIX TYPE CHAR3,
LT_MVKE TYPE STANDARD TABLE OF MVKE,
LT_MARA TYPE STANDARD TABLE OF MARA,
LT_MARD TYPE STANDARD TABLE OF MARD,
LS_TVAU TYPE TVAU,
LS_TVSB TYPE TVSB,
LS_TVTY TYPE TVTY,
LS_T173 TYPE T173,
L_MSG TYPE STRING,
LS_KNVV TYPE KNVV,
LS_TVBVK TYPE TVBVK,
L_LINES TYPE SY-TABIX,
LS_UPDATA TYPE TY_DATA,
LS_INTERN TYPE ALSMEX_TABLINE,
LS_INTERN_L TYPE ALSMEX_TABLINE,
LT_INTERN TYPE STANDARD TABLE OF ALSMEX_TABLINE.

FIELD-SYMBOLS <LFS>.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'


EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 15
I_END_ROW = 10000
TABLES
INTERN = LT_INTERN.

* DELETE LT_INTERN WHERE ROW = '1'.


LOOP AT LT_INTERN INTO LS_INTERN_L.
LS_INTERN = LS_INTERN_L.

ASSIGN COMPONENT LS_INTERN-COL


OF STRUCTURE LS_UPDATA
TO <LFS>.
TRANSLATE LS_INTERN-VALUE TO UPPER CASE.
* WRITE LS_INTERN-VALUE TO <LFS> LEFT-JUSTIFIED.
<LFS> = LS_INTERN-VALUE.
AT END OF ROW.
APPEND LS_UPDATA TO GT_UPDATA.
CLEAR LS_UPDATA.
ENDAT.
CLEAR: LS_INTERN_L,
LS_INTERN.
ENDLOOP.

L_LINES = LINES( GT_UPDATA ).


IF L_LINES > 499.
MESSAGE 'Max item line number is 499' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.

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.

IF LS_UPDATA-KETDAT < SY-DATUM.


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.

IF NOT LS_UPDATA-AUGRU IS INITIAL.


SELECT SINGLE *
FROM TVAU
INTO LS_TVAU
WHERE AUGRU = LS_UPDATA-AUGRU.
IF SY-SUBRC <> 0.
CONCATENATE 'OrderReason'
LS_UPDATA-AUGRU
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
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.

IF NOT LS_UPDATA-TRATY IS INITIAL.


SELECT SINGLE *
FROM TVTY
INTO LS_TVTY
WHERE TRATY = LS_UPDATA-TRATY.
IF SY-SUBRC <> 0.
CONCATENATE 'MnsOfTrnsType'
LS_UPDATA-TRATY
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
ENDIF.

IF NOT LS_UPDATA-VSART IS INITIAL.


SELECT SINGLE *
FROM T173
INTO LS_T173
WHERE VSART = LS_UPDATA-VSART.
IF SY-SUBRC <> 0.
CONCATENATE 'ShippingType'
LS_UPDATA-VSART
'is not valid'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
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'.

LOOP AT GT_UPDATA INTO LS_UPDATA.


L_TABIX = SY-TABIX.
IF L_TABIX = 1.
LWK_KUNNR = LS_UPDATA-KUNNR.
LWK_PRSDT = LS_UPDATA-PRSDT.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LS_UPDATA-MATNR
IMPORTING
OUTPUT = LS_UPDATA-MATNR.
READ TABLE LT_MARA TRANSPORTING NO FIELDS WITH KEY MATNR = LS_UPDATA-MATNR.
IF SY-SUBRC <> 0.
CONCATENATE 'Line item'
L_TABIX
':MaterialCode'
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.

READ TABLE LT_MARD TRANSPORTING NO FIELDS WITH KEY MATNR = LS_UPDATA-MATNR


WERKS = LS_UPDATA-WERKS
LGORT = LS_UPDATA-LGORT.

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.

READ TABLE LT_MVKE TRANSPORTING NO FIELDS WITH KEY MATNR = LS_UPDATA-MATNR


VKORG = 'SLS'
VTWEG = '20'.

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.

ENDFORM. " PFM_CHECK


*&---------------------------------------------------------------------*
*& Form PFM_UPLOAD
*&---------------------------------------------------------------------*
FORM PFM_UPLOAD .

DATA: L_SALESDOCUMENT TYPE BAPIVBELN-VBELN,


LT_CONDITIONS TYPE STANDARD TABLE OF BAPICOND,
LS_CONDITIONS TYPE BAPICOND,
LT_CONDITIONSX TYPE STANDARD TABLE OF BAPICONDX,
LS_CONDITIONSX TYPE BAPICONDX,
LT_BUSINESS TYPE STANDARD TABLE OF BAPISDBUSI,
LS_BUSINESS TYPE BAPISDBUSI,
L_SWITCH TYPE BAPISDLS,
LT_SCHEDULES TYPE STANDARD TABLE OF BAPISCHDL,
LS_SCHEDULES TYPE BAPISCHDL,
LT_SCHEDULESX TYPE STANDARD TABLE OF BAPISCHDLX,
LS_SCHEDULESX TYPE BAPISCHDLX,
L_MSG TYPE STRING,
L_TABIX TYPE SY-TABIX,
LT_TEXT TYPE STANDARD TABLE OF BAPISDTEXT,
LS_TEXT TYPE BAPISDTEXT,
LT_ITEMS TYPE STANDARD TABLE OF BAPISDITM,
LS_ITEMS TYPE BAPISDITM,
LT_ITEMSX TYPE STANDARD TABLE OF BAPISDITMX,
LS_ITEMSX TYPE BAPISDITMX,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LS_RETURN TYPE BAPIRET2,
L_TESTRUN TYPE BAPIFLAG-BAPIFLAG,
LS_HEADER TYPE BAPISDHD1,
LS_HEADERX TYPE BAPISDHD1X,
LT_PARTNERS TYPE STANDARD TABLE OF BAPIPARNR,
LS_PARTNERS TYPE BAPIPARNR,
LS_UPDATA TYPE TY_DATA.

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

LOOP AT GT_UPDATA INTO LS_UPDATA.


L_TABIX = SY-TABIX * 10.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LS_UPDATA-MATNR
IMPORTING
OUTPUT = LS_UPDATA-MATNR.

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_CONDITIONS-COND_TYPE = 'ZPR0'. "定价条件


APPEND LS_CONDITIONS TO LT_CONDITIONS .

LS_CONDITIONS-COND_TYPE = 'ZPMN'. "定价条件


APPEND LS_CONDITIONS TO LT_CONDITIONS .

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.

CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'


EXPORTING
SALES_HEADER_IN = LS_HEADER
SALES_HEADER_INX = LS_HEADERX
LOGIC_SWITCH = L_SWITCH
* BUSINESS_OBJECT = ' '
TESTRUN = P_TEST
IMPORTING
SALESDOCUMENT_EX = L_SALESDOCUMENT
* SALES_HEADER_OUT =
* SALES_HEADER_STATUS =
TABLES
RETURN = LT_RETURN
SALES_ITEMS_IN = LT_ITEMS
SALES_ITEMS_INX = LT_ITEMSX
SALES_PARTNERS = LT_PARTNERS
SALES_SCHEDULES_IN = LT_SCHEDULES
SALES_SCHEDULES_INX = LT_SCHEDULESX
SALES_CONDITIONS_IN = LT_CONDITIONS
SALES_CONDITIONS_INX = LT_CONDITIONSX
* SALES_CFGS_REF =
* SALES_CFGS_INST =
* SALES_CFGS_PART_OF =
* SALES_CFGS_VALUE =
* SALES_CFGS_BLOB =
* SALES_CFGS_VK =
* SALES_CFGS_REFINST =
* SALES_CCARD =
* SALES_TEXT =
* SALES_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
* SALES_SCHED_CONF_IN =
* ITEMS_EX =
* SCHEDULE_EX =
BUSINESS_EX = LT_BUSINESS.
* INCOMPLETE_LOG =
* EXTENSIONEX =
* CONDITIONS_EX =
* PARTNERS_EX =
* TEXTHEADERS_EX =
* TEXTLINES_EX =
* BATCH_CHARC =
* CAMPAIGN_ASGN =
* CONDITIONS_KONV_EX =

LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E' OR TYPE = 'A'.


EXIT.
ENDLOOP.
IF SY-SUBRC = 0.
MESSAGE 'Error occured when create sales order' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ELSE.
IF NOT P_TEST IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE 'No error occrured in TestRun mode' TYPE 'S'.
LEAVE LIST-PROCESSING.
STOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CONCATENATE 'SO document'
L_SALESDOCUMENT
'successfully saved'
INTO L_MSG SEPARATED BY SPACE.
MESSAGE L_MSG TYPE 'S'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
ENDIF.

ENDFORM. " PFM_UPLOAD

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy