博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
采购合同新增接口
阅读量:2036 次
发布时间:2019-04-28

本文共 26480 字,大约阅读时间需要 88 分钟。

FUNCTION ZMM_CONTRACT_CREATE
.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_HEAD) TYPE  ZVS_EKKO
*"     VALUE(BAPIFUN) TYPE  CHAR1
*"     VALUE(TESTRUN) TYPE  CHAR1 OPTIONAL
*"     VALUE(NOAPPLLOG) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(E_SUCC) TYPE  CHAR1
*"     VALUE(E_EBELN) TYPE  EBELN
*"     VALUE(E_MESSAGE) TYPE  GTER_TEXT
*"  TABLES
*"      I_ITEM STRUCTURE  ZVS_EKPO
*"      ET_RETURN STRUCTURE  BAPIE1RET2 OPTIONAL
*"----------------------------------------------------------------------
  
REFRESH ET_RETURN
.
  
CLEAR 
:GS_CTRD_LOG
.
  
MOVE-CORRESPONDING I_HEAD 
TO GS_CTRD_LOG
.
  GS_CTRD_LOG
-TESTRUN 
TESTRUN
.
  GS_CTRD_LOG
-BAPIFUN 
BAPIFUN
.
  
DATA
:
HEADER             
LIKE  BAPIMEOUTHEADER
,
       HEADERX            
LIKE  BAPIMEOUTHEADERX
,
       TECHNICAL_DATA     
LIKE BAPIMEOUTTECH
,
       LV_EBELN           
TYPE BAPIMEOUTHEADER
-
NUMBER
,
       LT_RETURN          
LIKE 
TABLE 
OF BAPIRET2 
WITH 
HEADER 
LINE
,
       LT_ITEM            
LIKE 
TABLE 
OF  BAPIMEOUTITEM 
WITH 
HEADER 
LINE
,
       LT_ITEMX           
LIKE 
TABLE 
OF BAPIMEOUTITEMX 
WITH 
HEADER 
LINE
,
       LT_ITEM_CONDITION  
LIKE 
TABLE 
OF BAPIMEOUTCONDITION 
WITH 
HEADER 
LINE
,
       LT_ITEM_CONDITIONX  
LIKE 
TABLE 
OF  BAPIMEOUTCONDITIONX 
WITH 
HEADER 
LINE
,
       LT_VALID           
LIKE 
TABLE 
OF BAPIMEOUTVALIDITY 
WITH 
HEADER 
LINE
,
       LT_VALIDX          
LIKE 
TABLE 
OF BAPIMEOUTVALIDITYX 
WITH 
HEADER 
LINE
,
       LT_EXTENSIONIN      
LIKE 
TABLE 
OF BAPIPAREX 
WITH 
HEADER 
LINE
,
       LT_EXTENSIONOUT    
LIKE 
TABLE 
OF BAPIPAREX 
WITH 
HEADER 
LINE
,
       LT_PARTNER         
LIKE  
TABLE 
OF BAPIMEOUTPARTNER 
WITH 
HEADER 
LINE
,
       LT_PARTNERX        
LIKE  
TABLE 
OF BAPIMEOUTPARTNERX 
WITH 
HEADER 
LINE
,
       LT_ITEM_TEXT        
LIKE 
TABLE 
OF BAPIMEOUTITEMTEXT 
WITH 
HEADER 
LINE
,
       LT_HEADER_TEXT      
LIKE 
TABLE 
OF BAPIMEOUTTEXT 
WITH 
HEADER 
LINE
,
       LS_HEADEXIN        
TYPE BAPI_TE_MEOUTHEADER
.
  
DATA
:LT_WYT3 
LIKE 
TABLE 
OF WYT3 
WITH 
HEADER 
LINE
.
  
DATA 
LW_GCJZNQ 
TYPE ZMM_GCJZNQ
.
  
IF I_HEAD
-WAERS 
''
.
    
SELECT 
SINGLE WAERS 
FROM LFM1 
INTO I_HEAD
-WAERS 
WHERE LIFNR 
I_HEAD
-LIFNR 
AND EKORG 
I_HEAD
-EKORG
.
  
ENDIF
.
  
CALL 
FUNCTION 
'CONVERSION_EXIT_ALPHA_INPUT'
    
EXPORTING
      
INPUT  
I_HEAD
-LIFNR
    
IMPORTING
      
OUTPUT 
I_HEAD
-LIFNR
.
  
IF I_HEAD
-ZZEVRT 
IS 
NOT 
INITIAL
.
    
CALL 
FUNCTION 
'CONVERSION_EXIT_ALPHA_INPUT'
      
EXPORTING
        
INPUT  
I_HEAD
-ZZEVRT
      
IMPORTING
        
OUTPUT 
I_HEAD
-ZZEVRT
.
  
ENDIF
.
  
HEADER
-
NUMBER 
I_HEAD
-EBELN
.
  
HEADER
-COMP_CODE 
I_HEAD
-BUKRS
.
  HEADERX
-COMP_CODE 
'X'
.
  
HEADER
-DOC_TYPE 
I_HEAD
-EVART
.
  HEADERX
-DOC_TYPE 
'X'
.
  
HEADER
-CREAT_DATE 
SY
-DATUM
.
  HEADERX
-CREAT_DATE 
'X'
.
  
HEADER
-CREATED_BY 
SY
-UNAME
.
  HEADERX
-CREATED_BY 
'X'
.
  
HEADER
-VENDOR 
I_HEAD
-LIFNR
.
  HEADERX
-VENDOR 
'X'
.
  
HEADER
-ITEM_INTVL 
1
.
  HEADERX
-ITEM_INTVL 
'X'
.
  
HEADER
-SUBITEMINT 
'1'
.
  HEADERX
-SUBITEMINT 
'X'
.
  
HEADER
-PURCH_ORG 
I_HEAD
-EKORG
.
  HEADERX
-PURCH_ORG 
'X'
.
  
HEADER
-PUR_GROUP 
I_HEAD
-EKGRP
.
  HEADERX
-PUR_GROUP 
'X'
.
  
HEADER
-
CURRENCY 
I_HEAD
-WAERS
.
  HEADERX
-
CURRENCY 
'X'
.
  
HEADER
-DOC_DATE 
I_HEAD
-VEDAT
.
  HEADERX
-DOC_DATE 
'X'
.
  
HEADER
-VPER_START 
I_HEAD
-KDATB
.
  HEADERX
-VPER_START 
'X'
.
  
HEADER
-VPER_END 
I_HEAD
-KDATE
.
  HEADERX
-VPER_END 
'X'
.
  
IF I_HEAD
-TXT_K01 <> 
''
.
    LT_HEADER_TEXT
-TEXT_FORM 
'*'
.
    LT_HEADER_TEXT
-TEXT_ID 
=   
'K01'
.
    LT_HEADER_TEXT
-TEXT_LINE 
I_HEAD
-TXT_K01
.
    
APPEND LT_HEADER_TEXT
.
    
CLEAR LT_HEADER_TEXT
.
  
ENDIF
.
*采购客服 ZZCGKH
  
REFRESH LT_WYT3[]
.
  
SELECT 
FROM WYT3
    
INTO 
TABLE LT_WYT3
      
WHERE LIFNR 
I_HEAD
-LIFNR
        
AND EKORG 
I_HEAD
-EKORG
        
AND PARVW 
'C1'
        
AND PERNR 
I_HEAD
-ZZCGKH
.
  
IF LT_WYT3[] 
IS 
INITIAL
.
*    CONCATENATE E_MESSAGE '该采购客服不存在于采购组织中,请联系IT修改!' INTO E_MESSAGE.
  
ENDIF
.
  
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
  LT_PARTNER
-PARTN_ROLE 
'C1'
.
  LT_PARTNERX
-PARTN_ROLE 
'C1'
.
  LT_PARTNER
-LANGU 
'1'
.
  LT_PARTNERX
-LANGU 
'X'
.
  LT_PARTNER
-PARTNR 
I_HEAD
-ZZCGKH
.
  LT_PARTNERX
-PARTNR 
'X'
.
  
APPEND LT_PARTNER
.
  
APPEND LT_PARTNERX
.
  
REFRESH LT_WYT3[]
.
  
SELECT 
FROM WYT3
    
INTO 
TABLE LT_WYT3
    
WHERE LIFNR 
I_HEAD
-LIFNR
      
AND EKORG 
I_HEAD
-EKORG
      
AND PARVW 
'C1'
.
  
LOOP 
AT LT_WYT3 
WHERE PERNR <> I_HEAD
-ZZCGKH
.
    
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
    LT_PARTNER
-PARTN_ROLE 
'C1'
.
    LT_PARTNERX
-PARTN_ROLE 
'C1'
.
    LT_PARTNER
-LANGU 
'1'
.
    LT_PARTNERX
-LANGU 
'X'
.
    LT_PARTNER
-PARTNR 
LT_WYT3
-PERNR
.
    LT_PARTNERX
-PARTNR 
'X'
.
    LT_PARTNER
-DELETE_IND 
'X'
.
"采购凭证中的删除标识
    LT_PARTNERX
-DELETE_IND 
'X'
.
    
APPEND LT_PARTNER
.
    
APPEND LT_PARTNERX
.
  
ENDLOOP
.
*采购协助 ZZCGXZ
  
IF I_HEAD
-ZZCGXZ 
IS 
NOT 
INITIAL
.
    
REFRESH LT_WYT3[]
.
    
SELECT 
FROM WYT3
      
INTO 
TABLE LT_WYT3
        
WHERE LIFNR 
I_HEAD
-LIFNR
          
AND EKORG 
I_HEAD
-EKORG
          
AND PARVW 
'C2'
          
AND PERNR 
I_HEAD
-ZZCGXZ
.
    
IF LT_WYT3[] 
IS 
INITIAL
.
*      CONCATENATE E_MESSAGE '该采购协助不存在于采购组织中,请联系IT修改!' INTO E_MESSAGE.
    
ENDIF
.
    
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
    LT_PARTNER
-PARTN_ROLE 
'C2'
.
    LT_PARTNERX
-PARTN_ROLE 
'C2'
.
    LT_PARTNER
-LANGU 
'1'
.
    LT_PARTNERX
-LANGU 
'X'
.
    LT_PARTNER
-PARTNR 
I_HEAD
-ZZCGXZ
.
    LT_PARTNERX
-PARTNR 
'X'
.
    
APPEND LT_PARTNER
.
    
APPEND LT_PARTNERX
.
    
REFRESH LT_WYT3[]
.
    
SELECT 
FROM WYT3
      
INTO 
TABLE LT_WYT3
      
WHERE LIFNR 
I_HEAD
-LIFNR
        
AND EKORG 
I_HEAD
-EKORG
        
AND PARVW 
'C2'
.
    
LOOP 
AT LT_WYT3 
WHERE PERNR <> I_HEAD
-ZZCGXZ
.
      
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
      LT_PARTNER
-PARTN_ROLE 
'C2'
.
      LT_PARTNERX
-PARTN_ROLE 
'C2'
.
      LT_PARTNER
-LANGU 
'1'
.
      LT_PARTNERX
-LANGU 
'X'
.
      LT_PARTNER
-PARTNR 
LT_WYT3
-PERNR
.
      LT_PARTNERX
-PARTNR 
'X'
.
      LT_PARTNER
-DELETE_IND 
'X'
.
"采购凭证中的删除标识
      LT_PARTNERX
-DELETE_IND 
'X'
.
      
APPEND LT_PARTNER
.
      
APPEND LT_PARTNERX
.
    
ENDLOOP
.
  
ELSE
.
    
"如果采购协助为空,就去取主数据,校验一个与采购客服相同的人员,删除其他
    
REFRESH LT_WYT3[]
.
    
SELECT 
FROM WYT3
      
INTO 
TABLE LT_WYT3
      
WHERE LIFNR 
I_HEAD
-LIFNR
        
AND EKORG 
I_HEAD
-EKORG
        
AND PARVW 
'C2'
        
AND PERNR 
I_HEAD
-ZZCGKH
.
    
IF SY
-SUBRC 
.
      
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
      LT_PARTNER
-PARTN_ROLE 
'C2'
.
      LT_PARTNERX
-PARTN_ROLE 
'C2'
.
      LT_PARTNER
-LANGU 
'1'
.
      LT_PARTNERX
-LANGU 
'X'
.
      LT_PARTNER
-PARTNR 
I_HEAD
-ZZCGKH
.
      LT_PARTNERX
-PARTNR 
'X'
.
      
APPEND LT_PARTNER
.
      
APPEND LT_PARTNERX
.
      
REFRESH LT_WYT3[]
.
      
SELECT 
FROM WYT3
        
INTO 
TABLE LT_WYT3
        
WHERE LIFNR 
I_HEAD
-LIFNR
          
AND EKORG 
I_HEAD
-EKORG
          
AND PARVW 
'C2'
.
      
LOOP 
AT LT_WYT3 
WHERE PERNR <> I_HEAD
-ZZCGKH
.
        
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
        LT_PARTNER
-PARTN_ROLE 
'C2'
.
        LT_PARTNERX
-PARTN_ROLE 
'C2'
.
        LT_PARTNER
-LANGU 
'1'
.
        LT_PARTNERX
-LANGU 
'X'
.
        LT_PARTNER
-PARTNR 
LT_WYT3
-PERNR
.
        LT_PARTNERX
-PARTNR 
'X'
.
        LT_PARTNER
-DELETE_IND 
'X'
.
"采购凭证中的删除标识
        LT_PARTNERX
-DELETE_IND 
'X'
.
        
APPEND LT_PARTNER
.
        
APPEND LT_PARTNERX
.
      
ENDLOOP
.
    
ELSE
.
      
"要是没有和采购客服相同的人员的话,不取
    
ENDIF
.
  
ENDIF
.
*采购驻厂 ZZZCRY
  
IF I_HEAD
-ZZZCRY 
IS 
NOT 
INITIAL
.
    
REFRESH LT_WYT3[]
.
    
SELECT 
FROM WYT3
      
INTO 
TABLE LT_WYT3
        
WHERE LIFNR 
I_HEAD
-LIFNR
          
AND EKORG 
I_HEAD
-EKORG
          
AND PARVW 
'C3'
          
AND PERNR 
I_HEAD
-ZZZCRY
.
    
IF LT_WYT3[] 
IS 
INITIAL
.
*      CONCATENATE E_MESSAGE '该驻厂人员不存在于采购组织中,请联系IT修改!' INTO E_MESSAGE.
    
ENDIF
.
    
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
    LT_PARTNER
-PARTN_ROLE 
'C3'
.
    LT_PARTNERX
-PARTN_ROLE 
'C3'
.
    LT_PARTNER
-LANGU 
'1'
.
    LT_PARTNERX
-LANGU 
'X'
.
    LT_PARTNER
-PARTNR 
I_HEAD
-ZZZCRY
.
    LT_PARTNERX
-PARTNR 
'X'
.
    
APPEND LT_PARTNER
.
    
APPEND LT_PARTNERX
.
    
REFRESH LT_WYT3[]
.
    
SELECT 
FROM WYT3
      
INTO 
TABLE LT_WYT3
      
WHERE LIFNR 
I_HEAD
-LIFNR
        
AND EKORG 
I_HEAD
-EKORG
        
AND PARVW 
'C3'
.
    
LOOP 
AT LT_WYT3 
WHERE PERNR <> I_HEAD
-ZZZCRY
.
      
CLEAR 
LT_PARTNER
,LT_PARTNERX
.
      LT_PARTNER
-PARTN_ROLE 
'C3'
.
      LT_PARTNERX
-PARTN_ROLE 
'C3'
.
      LT_PARTNER
-LANGU 
'1'
.
      LT_PARTNERX
-LANGU 
'X'
.
      LT_PARTNER
-PARTNR 
LT_WYT3
-PERNR
.
      LT_PARTNERX
-PARTNR 
'X'
.
      LT_PARTNER
-DELETE_IND 
'X'
.
"采购凭证中的删除标识
      LT_PARTNERX
-DELETE_IND 
'X'
.
      
APPEND LT_PARTNER
.
      
APPEND LT_PARTNERX
.
    
ENDLOOP
.
  
ELSE
.
    
"因为驻厂只会有一个人,要是为空的话,那就不用考虑别的了,直接抓取主数据中的
  
ENDIF
.
  
DATA
:LV_SERIAL_ID 
TYPE N LENGTH 
10
,
       LV_KOPOS     
TYPE KOPOS
.
  
DATA
:L_ITNO 
TYPE EBELP
.
  
LOOP 
AT I_ITEM
.
    
IF I_ITEM
-MATNR 
IS 
NOT 
INITIAL
.
      
CALL 
FUNCTION 
'CONVERSION_EXIT_MATN1_INPUT'
        
EXPORTING
          
INPUT        
I_ITEM
-MATNR
        
IMPORTING
          
OUTPUT       
I_ITEM
-MATNR
        
EXCEPTIONS
          LENGTH_ERROR 
1
          
OTHERS       
2
.
    
ENDIF
.
    LT_ITEM
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_ITEMX
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_ITEMX
-ITEM_NOX 
'X'
.
    LT_ITEM
-SHORT_TEXT 
I_ITEM
-TXZ01
.
    LT_ITEMX
-SHORT_TEXT 
'X'
.
    LT_ITEM
-MATERIAL 
I_ITEM
-MATNR
.
    LT_ITEMX
-MATERIAL 
'X'
.
    LT_ITEM
-PLANT 
I_ITEM
-WERKS
.
    LT_ITEMX
-PLANT 
'X'
.
    LT_ITEM
-STGE_LOC 
I_ITEM
-LGORT
.
    LT_ITEMX
-STGE_LOC 
'X'
.
    LT_ITEM
-MATL_GROUP 
I_ITEM
-MATKL
.
    LT_ITEMX
-MATL_GROUP 
'X'
.
    LT_ITEM
-ITEM_CAT 
I_ITEM
-EPSTP
.
    LT_ITEMX
-ITEM_CAT 
'X'
.
    LT_ITEM
-TARGET_QTY 
I_ITEM
-KTMNG
.
    LT_ITEMX
-TARGET_QTY 
'X'
.
    LT_ITEM
-PO_UNIT 
I_ITEM
-MEINS
.
    LT_ITEMX
-PO_UNIT 
'X'
.
    LT_ITEM
-NET_PRICE 
I_ITEM
-NETPR
.
    LT_ITEMX
-NET_PRICE 
'X'
.
    LT_ITEM
-PRICE_UNIT 
1
.
    LT_ITEMX
-PRICE_UNIT 
'X'
.
    LT_ITEM
-INFO_UPD 
''
.
    LT_ITEMX
-INFO_UPD 
'X'
.
    
APPEND LT_ITEM
.
    
CLEAR LT_ITEM
.
    
APPEND LT_ITEMX
.
    
CLEAR LT_ITEMX
.
    
IF I_ITEM
-TXT_K01 <> 
''
.
      LT_ITEM_TEXT
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_TEXT
-TEXT_FORM 
'*'
.
      LT_ITEM_TEXT
-TEXT_ID 
=   
'K01'
.
      LT_ITEM_TEXT
-TEXT_LINE 
I_ITEM
-TXT_K01
.
      
APPEND LT_ITEM_TEXT
.
      
CLEAR LT_ITEM_TEXT
.
    
ENDIF
.
    LV_SERIAL_ID 
LV_SERIAL_ID + 
1
.
    LV_KOPOS 
1
.
    LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
    LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
    LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
    LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
    LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
    LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
    LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
    LT_ITEM_CONDITION
-COND_TYPE 
'PB00'
.
    LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
    LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-NETPR
.
    LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
    LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
    LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
    LT_ITEM_CONDITION
-COND_P_UNT 
1
.
    LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
    LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
    LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
    LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
    
APPEND LT_ITEM_CONDITION
.
    
APPEND LT_ITEM_CONDITIONX
.
    
CLEAR LT_ITEM_CONDITIONX
.
    
CLEAR LT_ITEM_CONDITION
.
    LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
    LT_VALID
-VALID_FROM 
SY
-DATUM
.
"I_HEAD-KDATB.
    LT_VALID
-VALID_TO 
'99991231'
.
    
APPEND LT_VALID
.
    LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
    LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
    LT_VALIDX
-SERIAL_IDX 
'X'
.
    LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
    LT_VALIDX
-VALID_FROM 
'X'
.
    LT_VALIDX
-VALID_TO 
'X'
.
    
APPEND LT_VALIDX
.
    
IF I_ITEM
-ZYF <> 
0
.
"ZMB1  运费  ZYFDD
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZMB1'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZYFDD / 
'1.17'
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM  
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
    
IF I_ITEM
-ZYF <> 
0
.
"ZRB1  运费(代垫)  ZYF
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZRB1'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZYF
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM  
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
    
IF I_ITEM
-ZSLDD <> 
0
.
"ZRB2  上力费(代垫)  ZSLDD
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZRB2'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZSLDD
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM 
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
    
IF I_ITEM
-ZSL <> 
0
.
"ZMB2  上力费(一票)  ZSL
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZMB2'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZSL / 
'1.17'
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM 
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
    
IF I_ITEM
-ZQTDD <> 
0
.
"ZRB3  其他(代垫)  ZQTDD
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZRB3'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZQTDD
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM 
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
    
IF I_ITEM
-ZQT <> 
0
.
"ZMB3  其他(一票)  ZQT
      
ADD 
TO LV_SERIAL_ID
.
      
ADD 
TO LV_KOPOS
.
      LT_ITEM_CONDITION
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_ITEM_CONDITIONX
-ITEM_NOX 
'X'
.
      LT_ITEM_CONDITION
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_ITEM_CONDITIONX
-SERIAL_IDX 
'X'
.
      LT_ITEM_CONDITION
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNT 
LV_KOPOS
.
      LT_ITEM_CONDITIONX
-COND_COUNTX 
'X'
.
      LT_ITEM_CONDITION
-COND_TYPE 
'ZMB3'
.
      LT_ITEM_CONDITIONX
-COND_TYPE 
'X'
.
      LT_ITEM_CONDITION
-COND_VALUE 
I_ITEM
-ZQT / 
'1.17'
.
      LT_ITEM_CONDITIONX
-COND_VALUE 
'X'
.
      LT_ITEM_CONDITION
-
CURRENCY 
I_HEAD
-WAERS
.
      LT_ITEM_CONDITIONX
-
CURRENCY 
'X'
.
      LT_ITEM_CONDITION
-COND_P_UNT 
1
.
      LT_ITEM_CONDITIONX
-COND_P_UNT 
'X'
.
      LT_ITEM_CONDITION
-COND_UNIT 
I_ITEM
-MEINS
.
      LT_ITEM_CONDITIONX
-COND_UNIT 
'X'
.
      LT_ITEM_CONDITION
-CHANGE_ID 
'I'
.
      
APPEND LT_ITEM_CONDITION
.
      
APPEND LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITIONX
.
      
CLEAR LT_ITEM_CONDITION
.
      LT_VALID
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALID
-SERIAL_ID 
LV_SERIAL_ID
.
*    LT_VALID-PLANT = I_ITEM-WERKS.
      LT_VALID
-VALID_FROM 
SY
-DATUM
.
      LT_VALID
-VALID_TO 
'99991231'
.
      
APPEND LT_VALID
.
      LT_VALIDX
-ITEM_NO 
I_ITEM
-EBELP
.
      LT_VALIDX
-SERIAL_ID 
LV_SERIAL_ID
.
      LT_VALIDX
-SERIAL_IDX 
'X'
.
      LT_VALIDX
-ITEM_NOX 
'X'
.
*    LT_VALIDX-PLANT = 'X'.
      LT_VALIDX
-VALID_FROM 
'X'
.
      LT_VALIDX
-VALID_TO 
'X'
.
      
APPEND LT_VALIDX
.
    
ENDIF
.
  
ENDLOOP
.
  
"若月奖励勾选,则季奖励和年奖励同时勾选传输
  
IF I_HEAD
-ZZFANL_Y 
'X'
.
    I_HEAD
-ZZFANL_J 
'X'
.
    I_HEAD
-ZZFANL_N 
'X'
.
  
ENDIF
.
*  自定义字段
  
CLEAR LT_EXTENSIONIN
.
  LT_EXTENSIONIN
-
STRUCTURE 
'BAPI_TE_MEOUTHEADER'
.
  LT_EXTENSIONIN
-VALUEPART1+0
(
10
I_HEAD
-EBELN
.
  LT_EXTENSIONIN
-VALUEPART1+10
(
10
I_HEAD
-ZZEVRT
.
  LT_EXTENSIONIN
-VALUEPART1+20
(
5
I_HEAD
-ZZEVRTP
.
  LT_EXTENSIONIN
-VALUEPART1+25
(
16
I_HEAD
-ZZMQTY
.
  LT_EXTENSIONIN
-VALUEPART1+41
(
3
I_HEAD
-ZZMEINS
.
  LT_EXTENSIONIN
-VALUEPART1+44
(
1
I_HEAD
-ZZZHANL
.
  LT_EXTENSIONIN
-VALUEPART1+45
(
1
I_HEAD
-ZZBUC
.
  LT_EXTENSIONIN
-VALUEPART1+46
(
1
I_HEAD
-ZZFANL
.
*  LT_EXTENSIONIN-VALUEPART1+47(8) = I_HEAD-ZZCGKH
*  LT_EXTENSIONIN-VALUEPART1+55(8) = I_HEAD-ZZCGXZ
*  LT_EXTENSIONIN-VALUEPART1+63(8) = I_HEAD-ZZZCRY
*  LT_EXTENSIONIN-VALUEPART1+71(4) = I_HEAD-ZZYYBM
*  LT_EXTENSIONIN-VALUEPART1+75(10) = I_HEAD-ZZVBELN
  LT_EXTENSIONIN
-VALUEPART1+85
(
1
I_HEAD
-ZZFANL_Y
.
  LT_EXTENSIONIN
-VALUEPART1+86
(
1
I_HEAD
-ZZFANL_J
.
  LT_EXTENSIONIN
-VALUEPART1+87
(
1
I_HEAD
-ZZFANL_N
.
  LT_EXTENSIONIN
-VALUEPART1+88
(
3
I_HEAD
-ZZFKFS
.
  LT_EXTENSIONIN
-VALUEPART1+91
(
1
I_HEAD
-ZZJHTQ
.
  
APPEND   LT_EXTENSIONIN
.
  
CLEAR LT_EXTENSIONIN
.
  LT_EXTENSIONIN
-
STRUCTURE 
'BAPI_TE_MEOUTHEADERX'
.
  LT_EXTENSIONIN
-VALUEPART1+0
(
10
I_HEAD
-EBELN
.
  LT_EXTENSIONIN
-VALUEPART1+10
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+11
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+12
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+13
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+14
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+15
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+16
(
1
'X'
.
*  LT_EXTENSIONIN-VALUEPART1+17(1) = 'X'.
*  LT_EXTENSIONIN-VALUEPART1+18(1) = 'X'.
*  LT_EXTENSIONIN-VALUEPART1+19(1) = 'X'.
*  LT_EXTENSIONIN-VALUEPART1+20(1) = 'X'.
*  LT_EXTENSIONIN-VALUEPART1+21(1) = 'X'.
  LT_EXTENSIONIN
-VALUEPART1+22
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+23
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+24
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+25
(
1
'X'
.
  LT_EXTENSIONIN
-VALUEPART1+26
(
1
'X'
.
  
APPEND   LT_EXTENSIONIN
.
*  DATA: LS_BAPI_TE_MEOUTHEADERX LIKE BAPI_TE_MEOUTHEADERX,
*        LS_BAPI_TE_MEOUTHEADER  LIKE BAPI_TE_MEOUTHEADER.
*  CLEAR LT_EXTENSIONIN.
*  LT_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MEOUTHEADER'.
*  LS_BAPI_TE_MEOUTHEADER-NUMBER = I_HEAD-EBELN.
*  LS_BAPI_TE_MEOUTHEADER-ZZEVRT = I_HEAD-ZZEVRT.
*  LS_BAPI_TE_MEOUTHEADER-ZZEVRTP = I_HEAD-ZZEVRTP.
*  LS_BAPI_TE_MEOUTHEADER-ZZMQTY = I_HEAD-ZZMQTY.
*  LS_BAPI_TE_MEOUTHEADER-ZZMEINS = I_HEAD-ZZMEINS.
*  LS_BAPI_TE_MEOUTHEADER-ZZZHANL = I_HEAD-ZZZHANL.
*  LS_BAPI_TE_MEOUTHEADER-ZZBUC = I_HEAD-ZZBUC.
*
*  LS_BAPI_TE_MEOUTHEADER-ZZFANL = ''.
*  LS_BAPI_TE_MEOUTHEADER-ZZCGKH = ''.
*  LS_BAPI_TE_MEOUTHEADER-ZZCGXZ = ''.
*  LS_BAPI_TE_MEOUTHEADER-ZZZCRY = ''.
*  LS_BAPI_TE_MEOUTHEADER-ZZYYBM = ''.
*  LS_BAPI_TE_MEOUTHEADER-ZZVBELN = ''.
*
*  LS_BAPI_TE_MEOUTHEADER-ZZFANL_Y = I_HEAD-ZZFANL_Y.
*  LS_BAPI_TE_MEOUTHEADER-ZZFANL_J = I_HEAD-ZZFANL_J.
*  LS_BAPI_TE_MEOUTHEADER-ZZFANL_N = I_HEAD-ZZFANL_N.
*  LS_BAPI_TE_MEOUTHEADER-ZZFKFS = I_HEAD-ZZFKFS.
*  LS_BAPI_TE_MEOUTHEADER-ZZJHTQ = I_HEAD-ZZJHTQ.
*  LT_EXTENSIONIN+30(960) = LS_BAPI_TE_MEOUTHEADER.
**  CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>FILL_CONTAINER_C
**    EXPORTING
**      IM_VALUE               = LS_BAPI_TE_MEOUTHEADER
**    IMPORTING
**      EX_CONTAINER           = LT_EXTENSIONIN-VALUEPART1
**    EXCEPTIONS
**      ILLEGAL_PARAMETER_TYPE = 1
**      OTHERS                 = 2.
*  APPEND LT_EXTENSIONIN.
*
*  CLEAR LT_EXTENSIONIN.
*  LT_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MEOUTHEADERX'.
*  LT_EXTENSIONIN+30(960)   = LS_BAPI_TE_MEOUTHEADERX.
**  LS_BAPI_TE_MEOUTHEADERX-NUMBER = I_HEAD-EBELN.
**  LS_BAPI_TE_MEOUTHEADERX-ZZEVRT = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZEVRTP = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZMQTY = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZMEINS = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZZHANL = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZBUC = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZFANL_Y = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZFANL_J = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZFANL_N = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZFKFS = 'X'.
**  LS_BAPI_TE_MEOUTHEADERX-ZZJHTQ = 'X'.
**  CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>FILL_CONTAINER_C
**    EXPORTING
**      IM_VALUE               = LS_BAPI_TE_MEOUTHEADERX
**    IMPORTING
**      EX_CONTAINER           = LT_EXTENSIONIN-VALUEPART1
**    EXCEPTIONS
**      ILLEGAL_PARAMETER_TYPE = 1
**      OTHERS                 = 2.
*  APPEND LT_EXTENSIONIN.
  
IF BAPIFUN 
'I'
.
    TECHNICAL_DATA
-NO_MESSAGING 
'X'
.
    TECHNICAL_DATA
-NO_AUTHORITY_CHECK 
'X'
.
    
CALL 
FUNCTION 
'BAPI_CONTRACT_CREATE'
      
EXPORTING
        
HEADER              
HEADER
        HEADERX             
HEADERX
*       VENDOR_ADDRESS      =
        TESTRUN             
TESTRUN
        TECHNICAL_DATA      
TECHNICAL_DATA
      
IMPORTING
        PURCHASINGDOCUMENT  
E_EBELN
*       EXP_HEADER          =
      
TABLES
        
RETURN              
LT_RETURN
        ITEM                
LT_ITEM
        ITEMX               
LT_ITEMX
*       ACCOUNT             =
*       ACCOUNTPROFITSEGMENT        =
*       ACCOUNTX            =
*       DELIVERY_ADDRESS    =
        ITEM_COND_VALIDITY  
LT_VALID
        ITEM_COND_VALIDITYX 
LT_VALIDX
        ITEM_CONDITION      
LT_ITEM_CONDITION
        ITEM_CONDITIONX     
LT_ITEM_CONDITIONX
*       ITEM_COND_SCALE_VALUE       =
*       ITEM_COND_SCALE_QUAN        =
        ITEM_TEXT           
LT_ITEM_TEXT
        HEADER_TEXT         
LT_HEADER_TEXT
*       HEAD_COND_VALIDITY  =
*       HEAD_COND_VALIDITYX =
*       HEAD_CONDITION      =
*       HEAD_CONDITIONX     =
*       HEAD_COND_SCALE_VAL =
*       HEAD_COND_SCALE_QUAN        =
        PARTNER             
LT_PARTNER
        PARTNERX            
LT_PARTNERX
        EXTENSIONIN         
LT_EXTENSIONIN
*       EXTENSIONOUT        =
      
.
  
ELSEIF BAPIFUN 
'U'
.
    E_EBELN 
I_HEAD
-EBELN
.
    
CALL 
FUNCTION 
'BAPI_CONTRACT_CHANGE'
      
EXPORTING
        PURCHASINGDOCUMENT 
I_HEAD
-EBELN
        
HEADER             
HEADER
        HEADERX            
HEADERX
*       VENDOR_ADDRESS     =
        TESTRUN            
TESTRUN
        TECHNICAL_DATA     
TECHNICAL_DATA
* IMPORTING
*       EXP_HEADER         =
      
TABLES
        ITEM               
LT_ITEM
        ITEMX              
LT_ITEMX
*       ACCOUNT            =
*       ACCOUNTPROFITSEGMENT        =
*       ACCOUNTX           =
*       DELIVERY_ADDRESS   =
*       ITEM_COND_VALIDITY =
*       ITEM_COND_VALIDITYX         =
        ITEM_CONDITION     
LT_ITEM_CONDITION
        ITEM_CONDITIONX    
LT_ITEM_CONDITIONX
*       ITEM_COND_SCALE_VALUE       =
*       ITEM_COND_SCALE_QUAN        =
*       ITEM_TEXT          =
*       HEADER_TEXT        =
*       HEAD_COND_VALIDITY =
*       HEAD_COND_VALIDITYX         =
*       HEAD_CONDITION     =
*       HEAD_CONDITIONX    =
*       HEAD_COND_SCALE_VAL         =
*       HEAD_COND_SCALE_QUAN        =
*       PARTNER            =
*       PARTNERX           =
*       RELEASE_DOCU       =
*       EXTENSIONIN        =
*       EXTENSIONOUT       =
        
RETURN             
LT_RETURN
.
  
ENDIF
.
  
APPEND 
LINES 
OF LT_RETURN 
TO ET_RETURN
.
  
LOOP 
AT LT_RETURN 
WHERE 
TYPE 
'E' 
OR 
TYPE 
'A'
.
    E_SUCC 
'E'
.
    
IF LT_RETURN
-
ID 
'BAPI' 
AND LT_RETURN
-
NUMBER 
'001' 
AND LT_RETURN
-
TYPE 
'E'
.
      
"排除此消息
    
ELSE
.
      
CONCATENATE E_MESSAGE LT_RETURN
-
MESSAGE 
';' 
INTO E_MESSAGE
.
    
ENDIF
.
  
ENDLOOP
.
  
IF SY
-SUBRC <> 
0
.
    
CALL 
FUNCTION 
'BAPI_TRANSACTION_COMMIT'
      
EXPORTING
        
WAIT 
'X'
.
    E_SUCC 
'S'
.
    
IF TESTRUN 
''
.
      GS_CTRD_LOG
-EBELN 
E_EBELN
.
      
CONCATENATE E_MESSAGE 
'采购合同' E_EBELN 
'创建成功!' 
INTO E_MESSAGE
.
      
CLEAR LW_GCJZNQ
.
      LW_GCJZNQ
-EBELN 
E_EBELN
.
      LW_GCJZNQ
-GCJZNQ 
I_HEAD
-GCJZNQ
.
      LW_GCJZNQ
-BEIZ 
'采购合同'
.
      LW_GCJZNQ
-ERDAT 
SY
-DATUM
.
      LW_GCJZNQ
-ERZET 
SY
-UZEIT
.
      
MODIFY ZMM_GCJZNQ 
FROM LW_GCJZNQ
.
      
IF SY
-SUBRC 
.
        
COMMIT 
WORK
.
      
ENDIF
.
    
ELSE
.
      
CONCATENATE E_MESSAGE 
'采购合同检查成功!' 
INTO E_MESSAGE
.
    
ENDIF
.
  
ELSE
.
    
CALL 
FUNCTION 
'BAPI_TRANSACTION_ROLLBACK'
.
  
ENDIF
.
  
CLEAR
:
HEADER
,HEADERX
,TECHNICAL_DATA
,LT_RETURN
,LT_ITEM
,LT_ITEMX
,LT_VALID
,LT_VALIDX
,LT_ITEM_CONDITION
,LT_ITEM_CONDITIONX
,LT_EXTENSIONIN
,LT_HEADER_TEXT
,LT_ITEM_TEXT
.
  
REFRESH
:LT_RETURN
,LT_ITEM
,LT_ITEMX
,LT_VALID
,LT_VALIDX
,LT_ITEM_CONDITION
,LT_ITEM_CONDITIONX
,LT_EXTENSIONIN
,LT_HEADER_TEXT
,LT_ITEM_TEXT
,LT_PARTNER
,LT_PARTNERX
.
*  写日志
  
IF NOAPPLLOG 
''
.
    GS_CTRD_LOG
-E_MESSAGE 
E_MESSAGE
.
    GS_CTRD_LOG
-E_SUCC 
E_SUCC
.
    
PERFORM SAVE_CTRD_LOG 
TABLES I_ITEM
.
  
ENDIF
.
ENDFUNCTION
.

转载地址:http://olqaf.baihongyu.com/

你可能感兴趣的文章
java 注解
查看>>
CAS:乐观锁实现
查看>>
压力测试工具Apache ab
查看>>
Linux - Shell
查看>>
MySQL 如何执行关联查询
查看>>
算法运行时间n3,n2, n, nlogn对比
查看>>
java 中的suppressedException
查看>>
Rope --高效字符串处理数据结构
查看>>
Gap buffer -- 一个数据结构为可编辑的文本
查看>>
X/Open DTP模型,两阶段提交,JTA接口定义
查看>>
MySql binlog 日志
查看>>
spring 事务管理
查看>>
Redis集群
查看>>
线程中实现不可中断的任务
查看>>
世界城市时间计算
查看>>
Hessian原理分析
查看>>
WebCollector提供免费代理
查看>>
将WebCollector导入MAVEN项目
查看>>
WebCollector爬虫爬取一个或多个网站
查看>>
WebCollector爬虫的数据持久化
查看>>