【成都】增强使用总结
来源:互联网 发布:python subprocess 编辑:程序博客网 时间:2024/04/30 13:12
PPCO0007 保存生产订单时退出
*&---------------------------------------------------------------------**& 包含 ZXCO1U06*&---------------------------------------------------------------------**&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------**& 申请人:徐文*& 创 建 者:张晨宇*& 创建时间:2015.03.06*& 请 求 号: DEVK900084*& 程序说明:*& 用于指定生产订单增强,以控制生产订单定额变更权限,没有计划价格不允许下达,*& 创建生产订单时必须录入对应的公司间采购订单。*&*&---------------------------------------------------------------------**& 修改日志*& 修改日期 修改者 请求号 描述*&---------------------------------------------------------------------**IF sy-uname = 'HANDZCY'.* BREAK-POINT. "校验*---------------------------------增强1---------------------------------------** 增强 一 :没有计划价格不允许下达生产订单* 在生产订单下达时(涉及T-Code:CO01、CO02、CO40、COHV,可能的增强PPCO0021),* 根据“物料号 = MBEW-MATNR”和“工厂 = MBEW - BWKEY”找到“MBEW-STPRS 标准价”判断其是否大于零,* 如果不大于零则不允许下达生产订单,并报错:* “物料号[MBEW-MATNR]在工厂[MBEW-BWKEY]下尚未维护标准价,不允许生产,请联系财务部门” TYPES:BEGIN OF ty_mbew, matnr TYPE mbew-matnr, bwkey TYPE mbew-bwkey, stprs TYPE mbew-stprs, END OF ty_mbew. DATA gw_mbew TYPE ty_mbew. DATA gv_string TYPE string. FIELD-SYMBOLS: <fs_afpo>. CONSTANTS: lc_afpo(19) TYPE c VALUE '(SAPLCOB1)AFPO_BT[]'. ASSIGN (lc_afpo) TO <fs_afpo>. CHECK sy-subrc EQ 0. DATA zebeln TYPE ebeln. DATA zebelp TYPE ebelp. IMPORT zebeln FROM MEMORY ID 'ZEBELN'. IMPORT zebelp FROM MEMORY ID 'ZEBELP'. SELECT SINGLE matnr bwkey stprs FROM mbew INTO gw_mbew WHERE matnr = header_imp-matnr AND bwkey = header_imp-werks. IF sy-subrc NE 0 OR gw_mbew-stprs <= 0. SEARCH header_imp-sttxt FOR 'REL'. IF sy-subrc = 0. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = gw_mbew-matnr IMPORTING output = gw_mbew-matnr. CONCATENATE '物料号' gw_mbew-matnr '在工厂' header_imp-werks '下尚未维护标准价,不允许生产,请联系财务部门' INTO gv_string. MESSAGE gv_string TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ENDIF. CLEAR gv_string. CLEAR gw_mbew.*---------------------------------增强1---------------------------------------**---------------------------------增强2---------------------------------------**增强 二 :针对生产订单做字段增强(公司间采购订单),并确保其被录*1.在T-Code:CO01、CO02、CO40中,订单类型AUFK-AUART:NF11~NF16、NF21~NF26、NF31~NF36,保存前校验“AFPO-ABLAD卸货点”和“AFPO-WEMPF收货方”,如果存在空值则不允许保存,并报错“尚未输入采购订单号”;*2.如果都不为空,继续校验是否存在“AFPO-ABLAD卸货点 = EKPO-EBELN采购凭证”和“AFPO-WEMPF收货方 = EKPO–EBELP行项目”,且“EKPO-LOEKZ删除标识”不等于“L”,且“EKKO-FRGZU审批状态 = X”的项目,如果不存在则报错“该采购订单行不存在或未被审批,请重新输入”;*3.如果存在,则继续校验“EKKO-BSART采购凭证类型”是否等于ZP12,如果不是则报错“该采购订单类型不符合要求,请重新输入”;*4.如果是则判断“EKPO-MATNR物料号”是否等于“AFPO-MATNR物料号”,如果是则转至第6步;*5.如果不是则检查“AFPO-MATNR物料号”是否包含在“EKPO-MATNR物料号”的BOM中(EKPO-MATNR物料号 = MAST-MATNR物料号,AUFK-WERKS工厂 = MAST- WERKS工厂),如果是则转至第6步,如果不是则报错“采购订单行物料与生产订单物料不对应”;*6.判断“EKPO-ELIKZ交货已完成”是否等于“X”,如果是则报错“该公司间采购订单行已交货完成不允许再分配生产订单”,如果不是,则根据采购订单号和行项目号将对应的文本写入生产订单文本中,如下图*7.修改“AFPO-ABLAD卸货点”描述为“公司间采购订单”和“AFPO-WEMPF收货方”描述为“行项目”,如果不能则在AFPO表中增强两个字段,在屏幕上显示以替换以上两个字段。*---------------------------------增强2---------------------------------------* DATA :lv_errflag TYPE c. DATA :lv_ebeln TYPE ekpo-ebeln. DATA :lv_ebelp TYPE ekpo-ebelp. DATA :lt_afpo_bt TYPE STANDARD TABLE OF afpob, lw_afpo_bt LIKE LINE OF lt_afpo_bt. DATA :lt_ekpo TYPE STANDARD TABLE OF ekpo, lt_ekko TYPE STANDARD TABLE OF ekko, lw_ekpo TYPE ekpo, lw_ekko TYPE ekko. DATA :lw_mast TYPE mast. DATA: lt_stpo TYPE STANDARD TABLE OF stpo. DATA: lw_stpo TYPE stpo. CLEAR lt_afpo_bt. CLEAR lw_afpo_bt. CLEAR lv_errflag. lt_afpo_bt = <fs_afpo>. READ TABLE lt_afpo_bt INTO lw_afpo_bt INDEX 1. CASE header_imp-auart. WHEN 'NF11'.lv_errflag = '1'. WHEN 'NF12'.lv_errflag = '1'. WHEN 'NF13'.lv_errflag = '1'. WHEN 'NF14'.lv_errflag = '1'. WHEN 'NF15'.lv_errflag = '1'. WHEN 'NF16'.lv_errflag = '1'. WHEN 'NF21'.lv_errflag = '1'. WHEN 'NF22'.lv_errflag = '1'. WHEN 'NF23'.lv_errflag = '1'. WHEN 'NF24'.lv_errflag = '1'. WHEN 'NF25'.lv_errflag = '1'. WHEN 'NF26'.lv_errflag = '1'. WHEN 'NF31'.lv_errflag = '1'. WHEN 'NF32'.lv_errflag = '1'. WHEN 'NF33'.lv_errflag = '1'. WHEN 'NF34'.lv_errflag = '1'. WHEN 'NF35'.lv_errflag = '1'. WHEN 'NF36'.lv_errflag = '1'. WHEN OTHERS. ENDCASE. IF lv_errflag = '1'. CLEAR lv_ebeln. CLEAR lv_ebelp. IF zebeln IS INITIAL OR zebelp IS INITIAL. MESSAGE '尚未输入采购订单号' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ELSE. lv_ebeln = zebeln. lv_ebelp = zebelp. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_ebeln IMPORTING output = lv_ebeln. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_ebelp IMPORTING output = lv_ebelp. SELECT SINGLE * FROM ekpo INTO lw_ekpo WHERE ebeln = lv_ebeln AND ebelp = lv_ebelp AND loekz NE 'L' . IF sy-subrc = 0. SELECT SINGLE * FROM ekko INTO lw_ekko WHERE ebeln = lv_ebeln AND frgzu = 'X'. IF sy-subrc = 0. IF lw_ekko-bsart = 'ZP12'."3.如果存在,则继续校验“EKKO-BSART采购凭证类型”是否等于ZP12,如果不是则报错“该采购订单类型不符合要求,请重新输入”; IF lw_ekpo-matnr = lw_afpo_bt-matnr."4.如果是则判断“EKPO-MATNR物料号”是否等于“AFPO-MATNR物料号”,如果是则转至第6步; "6.判断“EKPO-ELIKZ交货已完成”是否等于“X”,如果是则报错“该公司间采购订单行已交货完成不允许再分配生产订单”,如果不是,则根据采购订单号和行项目号将对应的文本写入生产订单文本中 IF lw_ekpo-elikz = 'X'. MESSAGE '该公司间采购订单行已交货完成不允许再分配生产订单' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. SELECT SINGLE * FROM mast INTO lw_mast WHERE matnr = lw_ekpo-matnr AND werks = header_imp-werks AND stlan = '1'. IF sy-subrc = 0. SELECT * FROM stpo INTO CORRESPONDING FIELDS OF TABLE lt_stpo WHERE stlnr = lw_mast-stlnr. IF sy-subrc = 0. READ TABLE lt_stpo INTO lw_stpo WITH KEY idnrk = lw_afpo_bt-matnr. IF sy-subrc = 0. "6.判断“EKPO-ELIKZ交货已完成”是否等于“X”,如果是则报错“该公司间采购订单行已交货完成不允许再分配生产订单”,如果不是,则根据采购订单号和行项目号将对应的文本写入生产订单文本中 IF lw_ekpo-elikz = 'X'. MESSAGE '该公司间采购订单行已交货完成不允许再分配生产订单' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. MESSAGE '采购订单行物料与生产订单物料不对应' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. MESSAGE '采购订单行物料与生产订单物料不对应' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. MESSAGE '采购订单行物料与生产订单物料不对应' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ENDIF. "根据采购订单号和行项目号将对应的文本写入生产订单文本中 DATA lv_name LIKE thead-tdname. DATA lt_data TYPE STANDARD TABLE OF tline. DATA header LIKE thead. CLEAR lv_name. CONCATENATE lv_ebeln lv_ebelp INTO lv_name. CALL FUNCTION 'READ_TEXT' " 抬头备注 EXPORTING client = sy-mandt language = '1' id = 'F01' name = lv_name object = 'EKPO' TABLES lines = lt_data " LIKE TLINE EXCEPTIONS id = 1 language = 2 name = 3 not_found = 4 object = 5 referenc_check = 6 wrong_access_to_archive = 7 OTHERS = 8. IF sy-subrc = 0. header-tdobject = 'AUFK'. CONCATENATE sy-mandt header_imp-aufnr INTO lv_name. header-tdname = lv_name . header-tdid = 'KOPF'. header-tdspras = sy-langu. CALL FUNCTION 'SAVE_TEXT' EXPORTING header = header TABLES lines = lt_data. header_exp = header_imp. header_exp-ltext = sy-langu. CALL FUNCTION 'COMMIT_TEXT' EXPORTING object = 'AUFK' name = lv_name id = 'KOPF' language = '*'. ELSE. MESSAGE '读取采购订单长文本失败' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ELSE. MESSAGE '该采购订单类型不符合要求,请重新输入' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. MESSAGE '该采购订单行不存在或未被审批,请重新输入' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ELSE. MESSAGE '该采购订单行不存在或未被审批,请重新输入' TYPE 'S' DISPLAY LIKE 'E'. LEAVE TO SCREEN sy-dynnr. ENDIF. ENDIF. ENDIF.*---------------------------------增强2---------------------------------------**ENDIF.
写表出口:
DATA ZEBELN TYPE EBELN.DATA ZEBELP TYPE EBELP.IMport ZEBELN FROM MEMORY id 'ZEBELN'.IMport ZEBELP FROM MEMORY id 'ZEBELP'. E_COCI_AUFK-ZZEBELN = ZEBELN. E_COCI_AUFK-ZZEBELP = ZEBELP.
创建结构:CI_AUFK,该结构对应写表出口中E_COCI_AUFK结构,会自动保存进表AUFK中
屏幕PBO:
MODULE status_0100 OUTPUT.* IF sy-uname = 'HANDZCY'. DATA zebeln TYPE ebeln. DATA zebelp TYPE ebelp. DATA lw_aufk TYPE aufk. DATA :lt_afpo_bt TYPE STANDARD TABLE OF afpob, lw_afpo_bt LIKE LINE OF lt_afpo_bt. FIELD-SYMBOLS: <fs_afpo>. CONSTANTS: lc_afpo(19) TYPE c VALUE '(SAPLCOB1)AFPO_BT[]'. ASSIGN (lc_afpo) TO <fs_afpo>. lt_afpo_bt = <fs_afpo>. READ TABLE lt_afpo_bt INTO lw_afpo_bt INDEX 1. IMPORT zebeln FROM MEMORY ID 'ZEBELN'. IMPORT zebelp FROM MEMORY ID 'ZEBELP'. IF sy-subrc NE 0. SELECT SINGLE * FROM aufk INTO lw_aufk WHERE aufnr = lw_afpo_bt-aufnr. IF sy-subrc = 0. zebeln = lw_aufk-zzebeln. zebelp = lw_aufk-zzebelp. ENDIF. ENDIF.* ENDIF.ENDMODULE. " STATUS_0100 OUTPUT
PAI
MODULE user_command_0100 INPUT.* IF SY-UNAME = 'HANDZCY'. export ZEBELN to memory id 'ZEBELN'. export ZEBELP to memory id 'ZEBELP'.* ENDIF.ENDMODULE. " USER_COMMAND_0100 INPUT
0 0
- 【成都】增强使用总结
- 冬令营成都集训总结
- 2013 成都区域赛 总结
- 2013 ACM-ICPC 成都总结
- SAP增强总结-第一代增强
- 成都
- 《成都》
- 增强方式、方法总结
- BW中的增强总结
- sap增强小总结
- 查找增强方法总结
- 图像增强方法总结
- 语音增强算法总结
- ABAP增强总结
- 数据增强相关总结
- 图像增强知识总结
- 图像增强算法总结
- ABAP增强总结
- 其他可用的时间函数
- 能pingt通外部的Ip和dns,但上不了网络
- 第一章---网络基础知识
- Leetcode: Min Stack
- 基于Java LinkedList,实现Android大数据缓存策略
- 【成都】增强使用总结
- StringBuilder
- Java虚拟机类加载方式
- Interleaving String
- 动态绑定
- 用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- WinDbg调试DMP格式文件
- 解析ISO8583报文实例
- Eclipse 中自动安装 Apachen Tomcat Server 插件