You are on page 1of 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