po针对行项目检查有两个出口:
出口一:
示例代码
ME_PROCESS_PO_CUST~IF_EX_ME_PROCESS_PO_CUST~CHECK
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
</STYLE.
*include MM_MESSAGES_MAC.
* DATA: header TYPE mepoheader,
*items TYPE purchase_order_items,
*line_item TYPE purchase_order_item,
*po_line TYPE mepoitem,
*po_condition type mmpur_tkomv,
*wa_im_komv TYPE komv,
*eipo_line type MEPO_EIPO. "Foreign Trade: Export/Import: Item Data
*
*DATA:LW_A992 TYPE A992.
*
*data:l_flag(1)."是否能手工创建采购订单标志,只是限制ZPO1,ZPO2的订单类型
*
* header = im_header->get_data( ).
*
* items = im_header->get_items( ).
* CLEAR:l_flag.
* BREAK-POINT.
* LOOP AT items INTO line_item.
*
* po_line = line_item-item->get_data( ).
*
* IF PO_LINE-BANFN = ''.
* l_flag = 'X'.
* ENDIF.
** CALL METHOD line_item-item->get_conditions
** IMPORTING
** ex_conditions = po_condition.
*** IF header-INCO1 <> '100'.
** BREAK-POINT.
** loop at po_condition into wa_im_komv.
*** IF wa_im_komv-KSCHL = 'ZFR1' AND wa_im_komv-LIFNR = header-LIFNR.
*** mmpur_message 'W' 'ZMSG' '003' wa_im_komv-KPOSN '' '' ''.
*** ENDIF.
*** clear wa_im_komv.
**
**
** endloop.
** endif.
*
* SELECT SINGLE *
* INTO LW_A992
* FROM A992
* WHERE ZZLGORT = PO_LINE-LGORT
* AND MATNR = PO_LINE-MATNR.
* IF SY-SUBRC <> 0.
* MESSAGE '请维护该物料的采购信息记录' type 'E'.
* ENDIF.
*
* endloop.
*
**IF ( header-BSART = 'ZPO1' OR header-BSART = 'ZPO2' ) AND l_flag = 'X' and sy-TCODE = 'ME21N'.
** mmpur_message 'E' 'ZMSG' '004' '' '' '' ''.
**ENDIF.
出口2
ME_PROCESS_PO_CUST~IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
</STYLE.
method if_ex_me_process_po_cust~process_item.
include mm_messages_mac.
data:wa_mara type mara.
data : re_header type mepoheader.
data:l_item type mepoitem.
data: l_header type ref to if_purchase_order_mm."采购订单抬头
data:lw_flag1.
data:lw_flag2.
data:lw_str type string.
l_header = im_item->get_header( ).
re_header = l_header->get_data( )."获取头信息
l_item = im_item->get_data( ).
check re_header-kalsm = 'ZRM002'.
** 针对关税必须维护采购信息记录
data:lw_a992 type a992.
select single *
into lw_a992
from a992
where kschl = 'ZGS1' "关税
and zzlgort = l_item-lgort
and matnr = l_item-matnr.
** 如果没有找到相应的记录,则报错
if sy-subrc <> 0.
lw_flag1 = '1'.
* message '请维护该物料的关税的采购信息记录' type 'E'.
endif.
** 针对消费税,整车必须维护消费税信息记录,部品不需要
**取物料的产品类型
data:lw_mtart type mara-mtart.
select single mtart into lw_mtart
from mara
where matnr = l_item-matnr.
if lw_mtart = 'ZCAR'. "整车
select single *
into lw_a992
from a992
where kschl = 'ZXFS' "消费税
and zzlgort = l_item-lgort
and matnr = l_item-matnr.
** 如果没有找到相应的记录,则报错
if sy-subrc <> 0.
* message '请维护该物料的消费税的采购信息记录' type 'E'.
lw_flag2 = '1'.
endif.
endif.
if lw_flag1 = '1' and lw_flag2 = '1'.
concatenate '请维护物料'
l_item-matnr
'的关税和消费税'
into lw_str.
elseif lw_flag1 = '1' and lw_flag2 = ''.
concatenate '请维护物料'
l_item-matnr
'的关税'
into lw_str.
elseif lw_flag1 = '' and lw_flag2 = '1'.
concatenate '请维护物料'
l_item-matnr
'消费税'
into lw_str.
else.
endif.
clear:lw_flag1,lw_flag2,lw_mtart.
message lw_str type 'E'.
endmethod.