SE19
ME_GUI_PO_CUST

SUBSCRIBE
METHOD if_ex_me_gui_po_cust~subscribe. *---------------采购订单抬头添加附加屏幕增强---------* DATA: lw_subscribers TYPE mepo_subscribers. * IF sy-tcode EQ 'ME21N' OR sy-tcode EQ 'ME22N' OR sy-tcode EQ 'ME23N' OR sy-tcode EQ 'ME29N' . * we want to add a customer subscreen on the item detail tab CHECK im_application = 'PO'. CHECK im_element = 'HEADER'. * each line in re_subscribers generates a subscreen. We add one subscreen in this example CLEAR:re_subscribers[],lw_subscribers. * the name is a unique identifier for the subscreen and defined in this class definition lw_subscribers-name = subscreen. * the dynpro number to use lw_subscribers-dynpro = '0101'. * the program where the dynpro can be found lw_subscribers-program = 'SAPLZFG_MM_004'. * each subscreen needs his own DDIC-Structure lw_subscribers-struct_name = 'CI_EKKODB'. * a label can be defined lw_subscribers-label = TEXT-001. * the position within the tabstrib can be defined lw_subscribers-position = 11. * the height of the screen can be defined here. Currently we suport two screen sizes: * value <= 7 a sevel line subscreen * value > 7 a 16 line subscreen lw_subscribers-height = 2. APPEND lw_subscribers TO re_subscribers. * ENDIF. *---------------采购订单抬头添加附加屏幕增强---------* ENDMETHOD.
MAP_DYNPRO_FIELDS
METHOD if_ex_me_gui_po_cust~map_dynpro_fields. *---------------采购订单抬头添加附加屏幕增强---------* * given the fieldcatalog of structure mepo_badi_exampl we have to establish a * mapping to metafields which are used for field selection purposes and error handling * Standard definitions can be found in type pool MMMFD. It is important for customer * fields to use integer constants above 90000000 for the metafield. FIELD-SYMBOLS: <mapping> LIKE LINE OF ch_mapping. * IF sy-tcode EQ 'ME21N' OR sy-tcode EQ 'ME22N' OR sy-tcode EQ 'ME23N' OR sy-tcode EQ 'ME29N'. LOOP AT ch_mapping ASSIGNING <mapping>. CASE <mapping>-fieldname. WHEN 'ZZNFC'. <mapping>-metafield = mmmfd_cust_01. WHEN 'ZZCFC'. <mapping>-metafield = mmmfd_cust_02. WHEN 'ZZROC'. <mapping>-metafield = mmmfd_cust_03. WHEN 'ZZPRN'. <mapping>-metafield = mmmfd_cust_04. WHEN 'ZZFTP'. <mapping>-metafield = mmmfd_cust_05. WHEN 'ZOANUMBER'. <mapping>-metafield = mmmfd_cust_06. ENDCASE. ENDLOOP. * ENDIF. *---------------采购订单抬头添加附加屏幕增强---------* ENDMETHOD.
TRANSPORT_FROM_MODEL
METHOD if_ex_me_gui_po_cust~transport_from_model. *---------------采购订单抬头添加附加屏幕增强---------* DATA: lw_header TYPE REF TO if_purchase_order_mm, lw_mepoheader TYPE mepoheader, lw_customer TYPE ci_ekkodb. *--------------------------------------------------------------------* * system asks to transport data from the business logic into the view *--------------------------------------------------------------------* IF im_name = subscreen. * is it an Header? im_model can be header or item. mmpur_dynamic_cast lw_header im_model. CHECK NOT lw_header IS INITIAL. * transport standard fields lw_mepoheader = lw_header->get_data( ). * store info for later use MOVE-CORRESPONDING lw_mepoheader TO dynp_data_pbo. ENDIF. *---------------采购订单抬头添加附加屏幕增强---------* ENDMETHOD.
TRANSPORT_FROM_DYNP
METHOD if_ex_me_gui_po_cust~transport_from_dynp. IF im_name = subscreen. CALL FUNCTION 'ZFM_EKKODB_POP' IMPORTING ex_dynp_data = dynp_data_pai. ENDIF. IF dynp_data_pai <> dynp_data_pbo. * something has changed therefor we have to notify the framework * to transport data to the model re_changed = mmpur_yes. ENDIF. ENDMETHOD.
TRANSPORT_TO_MODEL
METHOD if_ex_me_gui_po_cust~transport_to_model. *---------------采购订单抬头添加附加屏幕增强---------* DATA: lw_header TYPE REF TO if_purchase_order_mm, lw_mepoheader TYPE mepoheader, lw_customer TYPE ci_ekkodb, lw_po_header_handle TYPE REF TO cl_po_header_handle_mm. *--------------------------------------------------------------------* * data have to be transported to business logic *--------------------------------------------------------------------* IF im_name = subscreen. * is it an item? im_model can be header or item. mmpur_dynamic_cast lw_header im_model. CHECK NOT lw_header IS INITIAL. lw_mepoheader = lw_header->get_data( ). * standard fields changed? IF dynp_data_pbo-zznfc <> dynp_data_pai-zznfc OR dynp_data_pbo-zzcfc <> dynp_data_pai-zzcfc OR dynp_data_pbo-zzroc <> dynp_data_pai-zzroc OR dynp_data_pbo-zzprn <> dynp_data_pai-zzprn OR dynp_data_pbo-zzftp <> dynp_data_pai-zzftp OR dynp_data_pbo-ZOANUMBER <> dynp_data_pai-ZOANUMBER . * update standard fields lw_mepoheader-zznfc = dynp_data_pai-zznfc. lw_mepoheader-zzcfc = dynp_data_pai-zzcfc. lw_mepoheader-zzroc = dynp_data_pai-zzroc. lw_mepoheader-zzprn = dynp_data_pai-zzprn. lw_mepoheader-zzftp = dynp_data_pai-zzftp. lw_mepoheader-ZOANUMBER = dynp_data_pai-ZOANUMBER. CALL METHOD lw_header->set_data EXPORTING im_data = lw_mepoheader. * CALL METHOD lw_header->set_changed( ). ENDIF. ENDIF. *---------------采购订单抬头添加附加屏幕增强---------* ENDMETHOD.
-----------------------------------------------------------------------------------------------


IF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER
METHOD IF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER. "edit by jack 20191115 DATA: LS_MEPOHEADER TYPE MEPOHEADER, LS_CUSTOMER TYPE CI_EKKODB, LV_FLAG TYPE INT4. INCLUDE MM_MESSAGES_MAC. "useful macros for message handling LS_MEPOHEADER = IM_HEADER->GET_DATA( ). * IF LS_MEPOHEADER-BSART EQ 'ZCP'. "在建工程采购订单 * IF LS_MEPOHEADER-ZOANUMBER IS INITIAL . * MMPUR_METAFIELD MMMFD_CUST_06. * MMPUR_MESSAGE_FORCED 'E' 'ZMM001' '000' '推送人不能为空' '' '' ''. * CALL METHOD IM_HEADER->INVALIDATE( ). * ELSE. * CLEAR:LV_FLAG. * SELECT COUNT(*) INTO LV_FLAG FROM ZPOPUSH2OA WHERE ZOANUMBER = LS_MEPOHEADER-ZOANUMBER. * IF LV_FLAG LE 0. * MMPUR_METAFIELD MMMFD_CUST_06. * MMPUR_MESSAGE_FORCED 'E' 'ZMM001' '000' '推送人不存在' '请选择正确的值' '' ''. * CALL METHOD IM_HEADER->INVALIDATE( ). * ENDIF. * ENDIF. * * ENDIF. ENDMETHOD.
IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM
METHOD if_ex_me_process_po_cust~process_item.
DATA:re_header TYPE REF TO if_purchase_order_mm,
lw_header TYPE mepoheader,
lw_item TYPE mepoitem,
lt_purchase_order_items TYPE purchase_order_items,
lw_purchase_order_item TYPE purchase_order_item,
gw_mepoitem TYPE mepoitem,
lt_komv1 TYPE STANDARD TABLE OF komv,
lt_komv TYPE mmpur_tkomv.
DATA:lv_menge_po TYPE menge_d.
"获取抬头数据
re_header = im_item->get_header( ).
lw_header = re_header->get_data( ).
"行项目数据
lt_purchase_order_items = re_header->get_items( ).
"获取行项目数据
lw_item = im_item->get_data( ).
"获取条件数据
im_item->get_conditions( IMPORTING ex_conditions = lt_komv ).
*-------begin of wangpeng 20191113 运费供应商判断---------------------------*
" add by wangpeng 调整 02.01.2020 08:52:03
* BREAK KS003.
* IF lw_item-inco1 = 'EXW' .
DATA:ls_komv_temp TYPE komv.
LOOP AT lt_komv INTO ls_komv_temp WHERE kschl = 'ZFR1' AND KWERT NE 0.
IF ls_komv_temp-lifnr EQ lw_header-lifnr .
MESSAGE e023(zmm001) WITH lw_item-ebelp.
ENDIF.
ENDLOOP.
* ENDIF.
IF ( lw_header-bsart EQ 'ZSTO' OR lw_header-bsart EQ 'ZSTR' ).
DATA:ls_komv_temp1 TYPE komv.
LOOP AT lt_komv INTO ls_komv_temp1 WHERE kschl = 'ZFR1' AND KWERT NE 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_komv_temp1-lifnr
IMPORTING
output = ls_komv_temp1-lifnr.
IF strlen( ls_komv_temp1-lifnr ) = 4 .
MESSAGE e023(zmm001) WITH lw_item-ebelp.
ENDIF.
ENDLOOP.
ENDIF.
*-------end of wangpeng 20191113 运费判断-----------------------------*
"创建修改标识
ASSIGN ('(SAPLMEPO)TRTYP') TO FIELD-SYMBOL(<trtyp>).
* BREAK sapyh.
* IF sy-tcode EQ 'ME21N' OR sy-tcode EQ 'ME22N' OR sy-tcode EQ 'ME23N' OR sy-tcode EQ 'ME29N'.
IF <trtyp> EQ 'H'.
*--------Begin Of Owen 将采购信息记录的采购组记录到PO的订货原因----->
IF lw_item-infnr IS NOT INITIAL .
SELECT SINGLE ekgrp INTO @DATA(lv_ekgrp) FROM eine
WHERE infnr EQ @lw_item-infnr
AND ekorg EQ @lw_header-ekorg
AND werks EQ @lw_item-werks.
IF sy-subrc = 0 AND lv_ekgrp IS NOT INITIAL.
lw_item-bsgru = lv_ekgrp.
im_item->set_data( im_data = lw_item ).
ENDIF.
ENDIF.
*--------End Of Owen 将采购信息记录的采购组记录到PO的订货原因----->
*--------begin Of owen 信息更新字段默认为空----->
lw_item-spinf = space.
im_item->set_data( im_data = lw_item ).
*--------End Of Owen 信息更新字段默认为空----->
*--------begin Of owen 公司间的税码默认J5----->
IF <trtyp> EQ 'H' AND ( lw_header-bsart EQ 'ZSTO' OR lw_header-bsart EQ 'ZSTR' )
AND lw_item-mwskz IS INITIAL .
lw_item-mwskz = 'J5'.
im_item->set_data( im_data = lw_item ).
ENDIF.
*--------End Of Owen 公司间的税码默认J5----->
*--------begin Of vicky 默认净重毛重---->
IF <trtyp> EQ 'H'
AND lw_header-bsart EQ 'ZSTO'
AND lw_item-matnr IS NOT INITIAL
AND lw_header-lifnr IS NOT INITIAL.
SELECT SINGLE marc~werks,marc~zzntgew,marc~zzbrgew
FROM lfa1
JOIN marc ON marc~werks = lfa1~werks AND marc~matnr = @lw_item-matnr
WHERE lfa1~lifnr = @lw_header-lifnr
INTO @DATA(ls_marc).
IF sy-subrc = 0 AND ls_marc-zzntgew <> 0 AND ls_marc-zzbrgew <> 0.
lw_item-ntgew = ls_marc-zzntgew.
lw_item-brgew = ls_marc-zzbrgew.
im_item->set_data( im_data = lw_item ).
ELSE.
MESSAGE e020(zmm001) WITH lw_item-matnr ls_marc-werks.
ENDIF.
ENDIF.
*--------End Of vicky 默认净重毛重----->
*--------begin Of owen RFQ转PO默认第一次自动带出剩余数量----->
IF lw_item-anfnr IS NOT INITIAL AND <trtyp> EQ 'H'.
SELECT COUNT(*) FROM marc WHERE werks EQ lw_item-werks AND matnr EQ lw_item-matnr.
IF sy-subrc = 0.
"RFQ数量
SELECT SINGLE ktmng INTO @DATA(lv_ktmng)
FROM ekko AS a INNER JOIN ekpo AS b ON a~ebeln = b~ebeln
WHERE b~ebeln = @lw_item-anfnr
AND b~ebelp = @lw_item-anfps
AND a~memory = ''
AND b~loekz = ''.
"RFQ已转PO数
SELECT b~menge,umrez,umren INTO TABLE @DATA(lt_ttqty)
FROM ekko AS a INNER JOIN ekpo AS b ON a~ebeln = b~ebeln
WHERE b~anfnr = @lw_item-anfnr
AND b~anfps = @lw_item-anfps
AND a~memory = ''
AND b~loekz = ''.
TYPES:BEGIN OF ty_ebelp,
ebelp TYPE ekpo-ebelp,
anfnr TYPE ekpo-anfnr,
anfps TYPE ekpo-anfps,
END OF ty_ebelp.
DATA:lw_ttqty LIKE LINE OF lt_ttqty.
DATA:lv_menge TYPE menge_d.
DATA:lv_menge_sum TYPE menge_d.
DATA:lt_ebelp TYPE STANDARD TABLE OF ty_ebelp.
DATA:lw_ebelp TYPE ty_ebelp.
"本次其余ITEM数
LOOP AT lt_purchase_order_items INTO lw_purchase_order_item.
gw_mepoitem = lw_purchase_order_item-item->get_data( ).
IF gw_mepoitem-anfnr EQ lw_item-anfnr
AND gw_mepoitem-anfps = lw_item-anfps
AND gw_mepoitem-ebelp NE lw_item-ebelp
AND gw_mepoitem-loekz = space.
lw_ttqty = VALUE #( menge = gw_mepoitem-menge
umrez = gw_mepoitem-umrez
umren = gw_mepoitem-umren ).
APPEND lw_ttqty TO lt_ttqty.
ENDIF.
ENDLOOP.
"计算本次剩余数量
LOOP AT lt_ttqty INTO lw_ttqty.
lv_menge = lw_ttqty-menge * lw_ttqty-umrez / lw_ttqty-umren .
ADD lv_menge TO lv_menge_sum.
ENDLOOP.
"默认带一次逻辑
IMPORT lt_ebelp = lt_ebelp FROM MEMORY ID 'ME21N_OWEN_MENGE'.
READ TABLE lt_ebelp INTO lw_ebelp WITH KEY ebelp = gw_mepoitem-ebelp
anfnr = gw_mepoitem-anfnr
anfps = gw_mepoitem-anfps.
IF sy-subrc <> 0.
lw_item-menge = lv_ktmng - lv_menge_sum.
IF lw_item-menge < 0.
lw_item-menge = 0.
ENDIF.
im_item->set_data( im_data = lw_item ).
ENDIF.
lw_ebelp-ebelp = gw_mepoitem-ebelp.
lw_ebelp-anfnr = gw_mepoitem-anfnr.
lw_ebelp-anfps = gw_mepoitem-anfps.
APPEND lw_ebelp TO lt_ebelp.
EXPORT lt_ebelp = lt_ebelp TO MEMORY ID 'ME21N_OWEN_MENGE'.
ENDIF.
ENDIF.
*--------end Of owen rfq转po默认第一次自动带出剩余数量----->
"---------------------------------增加判断物料是否为分批到货物料,如果是,自动将确认设为0004 2020.1.4 陈永坚
IF lw_item-matnr IS NOT INITIAL AND lw_item-BSTAE IS INITIAL AND lw_item-werks IS NOT INITIAL AND lw_header-BSART ne 'ZSTO' AND lw_header-BSART ne 'ZSTR' .
SELECT SINGLE zjiaoh INTO @DATA(w_jiaoh) FROM marc
WHERE
werks = @lw_item-werks
AND
matnr = @lw_item-matnr.
IF w_jiaoh eq 'X'.
lw_item-bstae = '0004'.
im_item->set_data( im_data = lw_item ).
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.IF_EX_ME_PROCESS_PO_CUST~CHECK
METHOD if_ex_me_process_po_cust~check . INCLUDE mm_messages_mac. "useful macros for message handling DATA:gw_mepoheader TYPE mepoheader, lt_purchase_order_items TYPE purchase_order_items, lw_purchase_order_item TYPE purchase_order_item, gw_mepoitem TYPE mepoitem, lt_purchase TYPE purchase_order_accountings, lw_purchase TYPE purchase_order_accounting, lw_mepoaccounting TYPE mepoaccounting, lt_schedule TYPE purchase_order_schedules, lw_schedule TYPE purchase_order_schedule, lw_meposchedule TYPE meposchedule, lt_condition TYPE mmpur_tkomv, " 20191113 add by wangpeng ls_condition TYPE komv. " 20191113 add by wangpeng DATA:lv_menge_po TYPE menge_d. "抬头数据 gw_mepoheader = im_header->get_data( ). "排除创建账号单据 CHECK gw_mepoheader-ernam NE 'DATAUSER'. "行项目数据 lt_purchase_order_items = im_header->get_items( ). *--------------------------------------------------------------------* IF sy-tcode EQ 'ME21N' OR sy-tcode EQ 'ME22N' OR sy-tcode EQ 'ME23N' OR sy-tcode EQ 'ME59' OR sy-tcode EQ 'ME59N' OR sy-tcode EQ 'ME29N'. BREAK sapvw. LOOP AT lt_purchase_order_items INTO lw_purchase_order_item. DATA(lv_check_banfn) = space. lw_purchase_order_item-item->get_data( RECEIVING re_data = gw_mepoitem ). *--------------------------------------------------------------------* " 条件 20191113 add by wangpeng CALL METHOD im_header->get_conditions IMPORTING ex_conditions = lt_condition. *--------------------------------------------------------------------* *----add by vicky AT 24.09.2019 09:46:21 begin-----------* IF gw_mepoitem-bsgru <> space. SELECT COUNT(*) FROM tbsg WHERE bsgru = gw_mepoitem-bsgru. IF sy-subrc <> 0. MESSAGE e019(zmm001) WITH gw_mepoitem-ebelp gw_mepoitem-bsgru . ENDIF. ENDIF. *----add by vicky at 24.09.2019 09:46:21 end-----------* "删除/完成项目不检查 IF gw_mepoitem-loekz IS NOT INITIAL OR gw_mepoitem-elikz IS NOT INITIAL. CONTINUE. ENDIF. lw_purchase_order_item-item->get_schedules( RECEIVING re_schedules = lt_schedule ). LOOP AT lt_schedule INTO lw_schedule. lw_schedule-schedule->get_data( RECEIVING re_data = lw_meposchedule ). "判断计划行PR是否为空 IF lw_meposchedule-banfn IS INITIAL AND lw_meposchedule-bnfpo IS INITIAL. lv_check_banfn = abap_true. ENDIF. ENDLOOP. *-----begin Of owen 创建po,货源分配标识必须通过rfq转单-----* *-----Begin Of Owen PO数量不允许 大于RFQ数量-----* IF gw_mepoheader-bsart EQ 'ZNB' OR gw_mepoheader-bsart EQ 'ZSTO' OR gw_mepoheader-bsart EQ 'ZEX' OR gw_mepoheader-bsart EQ 'ZSC'. "判断货源分配标识 SELECT COUNT(*) FROM marc WHERE matnr EQ @gw_mepoitem-matnr AND werks EQ @gw_mepoitem-werks AND kordb EQ @abap_true. DATA(lv_subrc) = sy-subrc. CASE lv_subrc. WHEN '0'. IF gw_mepoitem-anfnr IS INITIAL AND gw_mepoitem-anfps IS INITIAL. "必须是RFQ转单 *------------add by yakir at 20.08.2019 13:40:11------begin--* IF gw_mepoheader-bsart NE 'ZSTO'. MESSAGE e002(zmm001) WITH gw_mepoitem-ebelp gw_mepoitem-werks gw_mepoitem-matnr. ENDIF. *------------add by yakir at 20.08.2019 13:40:11------end--* ELSE. "RFQ数量 SELECT SUM( ekpo~ktmng ) INTO @DATA(lv_ktmng) FROM ekpo WHERE ebeln EQ @gw_mepoitem-anfnr AND ebelp EQ @gw_mepoitem-anfps AND loekz EQ @space. "已转PO数量 SELECT menge,umrez,umren INTO TABLE @DATA(lt_menge) FROM ekpo WHERE anfnr EQ @gw_mepoitem-anfnr AND anfps EQ @gw_mepoitem-anfps AND ( ebeln NE @gw_mepoitem-ebeln OR ebelp NE @gw_mepoitem-ebelp ) AND loekz EQ @space. CLEAR lv_menge_po. LOOP AT lt_menge INTO DATA(lw_menge). lv_ktmng = lv_ktmng - ( lw_menge-menge * lw_menge-umrez / lw_menge-umren ). ENDLOOP. "PO数量 lv_menge_po = ( gw_mepoitem-menge * gw_mepoitem-umrez / gw_mepoitem-umren ). IF lv_menge_po GT lv_ktmng. MESSAGE e006(zmm001) WITH gw_mepoitem-ebelp lv_ktmng. ENDIF. ENDIF. WHEN OTHERS. IF lv_check_banfn = abap_true AND ( gw_mepoheader-ekgrp NE 'Z98' AND gw_mepoheader-ekgrp NE 'Z99' AND gw_mepoheader-ekgrp NE 'C01' AND gw_mepoheader-ekgrp NE 'Z96' ). "必须是PR转单 MESSAGE e003(zmm001) WITH gw_mepoitem-ebelp gw_mepoitem-werks gw_mepoitem-matnr. ENDIF. ENDCASE. ENDIF. *-----End Of owen 创建po类型是znb 必须通过rfq转单-----* *-----End Of Owen PO数量不允许 大于RFQ数量-----* *-----Begin Of owen 工程公司采购订单检查内部订单与仓库的关系-----* IF gw_mepoheader-bsart EQ 'ZEN'. IF gw_mepoitem-knttp EQ 'I'."判断项目类别为I则判断仓位是否跟内部订单分类仓位一致 "获取科目分配数据 lw_purchase_order_item-item->get_accountings( RECEIVING re_accountings = lt_purchase ). LOOP AT lt_purchase INTO lw_purchase . lw_purchase-accounting->get_data( RECEIVING re_data = lw_mepoaccounting ). IF lw_mepoaccounting-aufnr IS NOT INITIAL AND lw_mepoaccounting-aufnr+1(4) NE gw_mepoitem-lgort. MESSAGE e010(zmm001) WITH gw_mepoitem-ebelp gw_mepoitem-lgort lw_mepoaccounting-aufnr+1(4). * DATA(lv_objek) = 'OR' && lw_mepoaccounting-aufnr. * SELECT SINGLE atwrt INTO @DATA(lv_atwrt) FROM ausp * WHERE objek EQ @lv_objek AND atinn IN ( SELECT atinn FROM cabn WHERE atnam EQ 'ZLGORT'). * IF sy-subrc = 0 AND lv_atwrt IS NOT INITIAL AND gw_mepoitem-lgort NE lv_atwrt. * * ENDIF. ENDIF. ENDLOOP. ENDIF. ENDIF. *-----End Of owen 工程公司采购订单检查内部订单与仓库的关系-----* *-----Begin Of owen 转单数量不是最小包装数的倍数-----* "PO数量 lv_menge_po = ( gw_mepoitem-menge * gw_mepoitem-umrez / gw_mepoitem-umren ). SELECT SINGLE bstrf INTO @DATA(lv_bstrf) FROM marc WHERE werks EQ @gw_mepoitem-werks AND matnr EQ @gw_mepoitem-matnr. IF sy-subrc = 0 AND lv_bstrf IS NOT INITIAL. DATA(lv_mod_bstrf) = lv_menge_po MOD lv_bstrf. IF lv_mod_bstrf IS NOT INITIAL. MESSAGE w015(zmm001) WITH gw_mepoitem-ebelp lv_bstrf. ENDIF. ENDIF. *-----end Of owen 转单数量不是最小包装数的倍数-----* IF gw_mepoitem-emlif IS NOT INITIAL AND gw_mepoitem-lblkz IS INITIAL. MESSAGE e016(zmm001) WITH gw_mepoitem-ebelp. ENDIF. *----------begin of by Luolin 15.01.2020 15:32:45---------- *ZCP在建工程采购订单行项申请人如果传X,就要求发票页签预付定金类别必须填写 IF GW_MEPOHEADER-BSART EQ 'ZCP' AND ( GW_MEPOITEM-AFNAM EQ 'X' OR GW_MEPOITEM-AFNAM EQ 'x' ) AND GW_MEPOITEM-DPTYP IS INITIAL. MESSAGE e029(zmm001) WITH gw_mepoitem-EBELN gw_mepoitem-ebelp. ENDIF. *----------end of by Luolin 15.01.2020 15:32:45---------- ENDLOOP. IF ( gw_mepoheader-zznfc IS INITIAL OR gw_mepoheader-zzcfc IS INITIAL ) AND gw_mepoheader-bsart EQ 'ZCP'. MESSAGE e018(zmm001). ENDIF. ENDIF. ENDMETHOD. "IF_EX_ME_PROCESS_PO_CUST~CHECK
IF_EX_ME_PROCESS_PO_CUST~POST
METHOD IF_EX_ME_PROCESS_PO_CUST~POST. *--------Begin Of owen rfq转po默认第一次自动带出剩余数量-----> FREE MEMORY ID 'ME21N_OWEN_MENGE'. *--------end Of owen rfq转po默认第一次自动带出剩余数量-----> * edit by jack 20191116 DATA: LS_MEPOHEADER TYPE MEPOHEADER, LS_CUSTOMER TYPE CI_EKKODB. LS_MEPOHEADER = IM_HEADER->GET_DATA( ). *集团 批准标识 已批准 可变性 价值更改 描述 *300 B 4 0.0 未批准,可修改 *300 G X 2 40.0 已释放 *300 R X 1 0.0 已释放,无更改 *300 Z X 4 0.0 已批准,可修改 IF LS_MEPOHEADER-FRGKE EQ 'Z'."批准标识:采购凭证 IF LS_MEPOHEADER-ZOANUMBER IS NOT INITIAL AND LS_MEPOHEADER-BSART EQ 'ZCP'. "在建工程采购订单 DATA:LS_ZMMD007 TYPE ZMMD007_T, LV_COUNT TYPE INT2. SELECT COUNT(*) INTO LV_COUNT FROM ZMMD007_T WHERE EBELN = LS_MEPOHEADER-EBELN AND FRGKE = LS_MEPOHEADER-FRGKE . IF LV_COUNT EQ 0. LS_ZMMD007-MANDT = SY-MANDT. "集团 LS_ZMMD007-EBELN = LS_MEPOHEADER-EBELN. "采购凭证编号 LS_ZMMD007-FRGKE = LS_MEPOHEADER-FRGKE. "批准标识:采购凭证 LS_ZMMD007-E_CODE = '1'. "版本号组件 * LS_ZMMD007-OAWFNAME = LS_MEPOHEADER-OAWFNAME."OA单据号 LS_ZMMD007-AEDAT = LS_MEPOHEADER-AEDAT. "记录建立日期 LS_ZMMD007-BSART = LS_MEPOHEADER-BSART. "订单类型(采购) * LS_ZMMD007-ZMSG = LS_MEPOHEADER-ZMSG. "文本字段长度 200 LS_ZMMD007-ZZCFC = LS_MEPOHEADER-ZZCFC. "合同编号 LS_ZMMD007-ZZNFC = LS_MEPOHEADER-ZZNFC. "项目名称 LS_ZMMD007-ZOANUMBER = LS_MEPOHEADER-ZOANUMBER. INSERT ZMMD007_T FROM LS_ZMMD007 . ENDIF. ENDIF. ENDIF. ENDMETHOD.
IF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_HEADER
METHOD if_ex_me_process_po_cust~fieldselection_header. *-------------Begin Of Owen 采购订单创建/修改显示附加屏幕---------------* DATA: lw_header TYPE mepoheader. DATA: lv_persistent TYPE mmpur_bool. FIELD-SYMBOLS: <fs> LIKE LINE OF ch_fieldselection. lw_header = im_header->get_data( ). DEFINE set_input. READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY metafield = &1. IF sy-subrc = 0. IF im_header->is_changeable( ) = mmpur_yes. <fs>-fieldstatus = '+'. ELSE. <fs>-fieldstatus = '*'. ENDIF. IF lw_header-bsart NE 'ZCP' AND lw_header-bsart NE 'ZEN' AND lw_header-bsart NE 'ZNB' . <fs>-fieldstatus = '-'. ENDIF. ENDIF. END-OF-DEFINITION. * if the item is already on the database, we disallow to change field badi_bsgru lv_persistent = im_header->is_persistent( ). set_input mmmfd_cust_01. set_input mmmfd_cust_02. set_input mmmfd_cust_03. set_input mmmfd_cust_04. set_input mmmfd_cust_05. set_input mmmfd_cust_06. *-------------End Of Owen 采购订单创建/修改显示附加屏幕---------------* ENDMETHOD.
网友评论