且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

PO创建出口检查

更新时间:2022-08-22 09:15:19

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.