ME51N屏幕增强——添加历史订单价格字段

参考:

资料:SAP所有模块用户出口(User Exits) _coopa003-CSDN博客

SAP ABAP常用增强记录文档_sap自动过账增强-CSDN博客

https://www.cnblogs.com/zyhcs/p/15759434.html

需求:

增加给OA传输接口的字段。 采购申请增加历史价格显示。

已经有的信息:

SE11字段信息

cmod中已经有了增强Zmm002

增强分配:

组件:

分别双击对应的功能出口:

001

包含文件zxm02u01双击

代码功能:

将PRitem的值写入Ci_ebandb表。

增强exit_saplmereq_003, 包含 ZXM02U03.

ZXM02U03的代码如下。

代码功能, 将CI_EBANDB的数据写入PRitem.

exit_saplmereq_005内容为空。

exit_sapLMEREQ_010, 包含 ZXM02U12。

 ZXM02U12的代码如下:

检查对应数据是否发送OA、

分别打上断点,运行ME52N,检查系统运行逻辑。

先进入ZXM02U01断点,从PR中读取数据写入CI_EBANDB中。F8执行后进入主界面。

修改字段信息:

回车后进入另一个断点ZXM02U03

CI_EBANDB信息为屏幕信息,PRitem信息为之前信息。

运行之后,PRitem信息变更。《可以在这里通过select查询显示历史订单信息。》

之后重新调用增强01. 进入PR屏幕。

保存时,先调用增强03。然后调用增强010 include ZXM02U012检查OA传递报表。

重新调用增强01。运行后进入“显示采购申请”主界面。退回F3,重新调用增强03.然后清屏返回主界面。

创建PR时,每次回车,系统同先调用增强03,再调用增强01.

通过zflg跟踪, 推送OA的信息。

在zMMFU004实施断点,检查堆栈,推送给OA的信息,在ZCL_IM_ME_PROCESS_REQ里面实施。在这个类的方法中构造传给OA的数据。

在对应的方法上断点看程序:

推送的信息,可以在这个方法中实施。

需要做的事情:

1, CI_EBANDB增加字段. SE11

2,  ME51N 屏幕增加字段。CMOD

3,屏幕字段查询赋值

4, 增加推送OA字段。 

实施过程

1, 增加字段。

增加四个字段

组件类型zlowestpr需要创建数据元素

创建curr类型的字段需要特殊设置。

2,  ME51N 屏幕增加字段。CMOD

双击屏幕出口,

选择布局,选择表,字段,放入屏幕。

双击对应四个字段的显示位置,修改属性。

属性区域,选择程序, 取消输入字段选项。

保存激活。

测试屏幕:

3,屏幕字段查询赋值

CMOD进入增强用户出口, EXIT_SAPLMEREQ_003的包含文件ZXM02U03中增加下面的代码。

激活运行ME51N输入零件号和数量,回车后屏幕显示如下:

4, 增加推送OA字段。

按照之前debug的信息,找到增强类 ZCL_IM_ME_PROCESS_REQ_CUST。

post方法的代码如下:

 METHOD if_ex_me_process_req_cust~post.DATA: lo_s0001  TYPE REF TO zco_si_sap_purchase_odr_out,ls_output TYPE zcreat_purchase_requisition_w1,ls_input  TYPE zcreat_purchase_requisition_wo,lt_item   TYPE zpurchase_requisition_deta_tab,ls_item   TYPE zpurchase_requisition_detail_r.DATA lt_zmmt002 TYPE TABLE OF zmmt002.DATA ls_zmmt002 TYPE zmmt002.DATA:gs_item TYPE mmpur_requisition_item.DATA:gt_item TYPE mmpur_requisition_items.DATA:ls_eban TYPE mereq_item.DATA is_req TYPE  /zjt/sappo_req_info.DATA es_ret  TYPE  /zjt/sappo_ret_info.IF sy-ucomm = 'MESAVE'.SELECT SINGLE COUNT(*) FROM zmmt002 WHERE banfn EQ im_banfn AND zbj = 'X'.IF sy-subrc EQ 0.MESSAGE '订单已推送OA' TYPE 'E'.ENDIF.ENDIF.CALL METHOD im_header->get_itemsRECEIVINGre_items = gt_item.IF sy-ucomm = 'MESAVE' AND ( sy-tcode = 'ME51N' OR sy-tcode = 'ME52N' ).LOOP AT gt_item INTO gs_item.CLEAR ls_eban.CALL METHOD gs_item-item->get_dataRECEIVINGre_data = ls_eban.ls_item-bnfpo = ls_eban-bnfpo. "采购申请行项目号ls_item-ekgrp = ls_eban-ekgrp. " 采购组ls_item-frgkz = ls_eban-frgkz. "批准标识ls_item-knttp = ls_eban-knttp. "科目分配类别ls_item-kostl = ls_eban-kostl. "成本中心ls_item-lfdat = ls_eban-lfdat. "交货日期ls_item-loekz = ls_eban-loekz. "删除标识ls_item-matkl = ls_eban-matkl. "物料组ls_item-matnr = ls_eban-matnr. "物料编码ls_item-meins = ls_eban-meins. "单位ls_item-menge = ls_eban-menge. "申请数量ls_item-peinh = ls_eban-peinh. "价格单位ls_item-preis = ls_eban-preis. "采购申请中的价格ls_item-pstyp = ls_eban-pstyp. "项目类别ls_item-txz01 = ls_eban-txz01. "物料描述ls_item-werks = ls_eban-werks. "工厂ls_item-afnam = ls_eban-afnam. "申请人ls_item-zbrand = ls_eban-zbrand. "品牌ls_item-zbudget = ls_eban-zbudget. "是否已签合同ls_item-zcontract = ls_eban-zcontract. "所属预算ls_item-zreason = ls_eban-zreason. "申请理由ls_item-zshychx = ls_eban-zshychx. "使用产线ls_item-zshyshb = ls_eban-zshyshb. "具体使用设备CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGinput  = ls_item-matnrIMPORTINGoutput = ls_item-matnr.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGinput  = ls_item-bnfpoIMPORTINGoutput = ls_item-bnfpo.APPEND ls_item TO lT_item.ls_output-in0-banfn = im_banfn. "采购申请编号CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGinput  = ls_output-in0-banfnIMPORTINGoutput = ls_output-in0-banfn.ls_zmmt002-banfn = im_banfn. "采购申请编号ls_output-in0-bname = ls_eban-ernam. "创建人CLEAR ls_item.ENDLOOP.*      DATA(lt_item_two) = lt_item.
*      SORT lt_item_two BY bnfpo loekz.
*      DELETE ADJACENT DUPLICATES FROM lt_item_two COMPARING bnfpo loekz.
*      SORT lt_item BY bnfpo.
*
*      LOOP AT  lt_item_two INTO DATA(ls_item_two).
*
*
*      ENDLOOP.ls_output-in0-item-purchase_requisition_detail_re = lt_item.DELETE lt_item WHERE loekz = 'X'.IF lt_item IS NOT INITIAL.CALL FUNCTION 'ZMMFU004'EXPORTINGoutput = ls_output
*           is_req = is_reqIMPORTINGinput  = ls_input.
*          es_ret = es_ret.ENDIF.*      CALL FUNCTION 'ZMMFU004'
*        EXPORTING
*          output = ls_output
**         is_req = is_req
*        IMPORTING
*          input  = ls_input.
**          es_ret = es_ret.*      TRY .
*          CREATE OBJECT lo_s0001.
*          lo_s0001->si_sap_purchase_odr_out(
*            EXPORTING
*              output = ls_output
*            IMPORTING
*              input  = ls_input
*             ).
*
*          COMMIT WORK .IF ls_input-out-flag = '0'.ls_zmmt002-zbj = 'X'.
*      ELSE.
*        MESSAGE ls_input-out-message TYPE 'S' DISPLAY LIKE 'E'.ENDIF.*        CATCH cx_root INTO DATA(cx_root).
*          DATA(lv_msg) = cx_root->get_text( ).
*          MESSAGE ls_input-out-message TYPE 'S' DISPLAY LIKE 'E'.
*      ENDTRY.ls_zmmt002-zname = sy-uname.ls_zmmt002-zdate = sy-datum.ls_zmmt002-ztime = sy-uzeit.ls_zmmt002-zmes = ls_input-out-message.APPEND ls_zmmt002 TO lt_zmmt002.IF lt_zmmt002 IS NOT INITIAL.MODIFY zmmt002 FROM TABLE lt_zmmt002.IF sy-subrc = 0.COMMIT WORK.ELSE.ROLLBACK WORK.ENDIF.ENDIF.ENDIF.ENDMETHOD.

对应的字段信息可以在如图位置插入。

但是,ls_item类型定义中并没有对应的字段设置。

zpurchase_requisition_detail_r,系统内的属性为 Proxy structure (generated),不可增加字段。

点击代理编辑器:

结论,数据结构是通过接口定义的。另外zpurchase_requisition_detail_r内部所有字段类型都是String。下一步需要在接口定义的地方增加新字段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 水印效果

Android 水印效果 本文主要介绍下android 中水印的实现效果. 实现的方式有多种,就不一一赘述了, 本文就是通过自定义drawable来实现水印. 不多说,直接上代码吧: import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; i…

【QT+QGIS跨平台编译】之七:【libjpeg+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libjpeg介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libjpeg介绍 libjpeg是一个广泛使用的jpeg图像压缩和解压的函数库,采用 C 语言开发。 2013年1月,Independent JPEG Group发布了版本9,对新引入的无损编码模式进行了改进。2022年1月,发布了版…

蓝桥杯省赛无忧 排序 课件40 冒泡排序

01 冒泡排序的思想 02 冒泡排序的实现 03 例题讲解 #include <iostream> using namespace std; void bubbleSort(int arr[], int n) {for (int i 0; i < n-1; i) { for (int j 0; j < n-i-1; j) {if (arr[j] > arr[j1]) {int temp arr[j];arr[j] arr[j1…

Django开发_18_REST Framework

一、介绍 二、使用 &#xff08;一&#xff09;安装依赖 pip install djangorestframework pip install httpie &#xff08;二&#xff09;序列化 1.models.py创建模型类 2.admin.py中注册模型类 3.创建serializer.py文件 创建序列化类 4.views.py中编写视图函数 首先要…

[极客大挑战 2019]BabySQL1

发现union select被过滤了&#xff0c;双写绕过 or、from被过滤 where被过滤 在b4bysql中找到flag

架构师之路(十四)计算机网络(网络层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 网络层提供主机…

探索Gin框架:快速构建高性能的Golang Web应用

前言 Gin框架是一个轻量级的Web框架&#xff0c;基于Go语言开发&#xff0c;旨在提供高性能和简洁的API。它具有快速的路由和中间件支持&#xff0c;使得构建Web应用变得更加简单和高效。无论是构建小型的API服务还是大型的Web应用&#xff0c;Gin框架都能够满足你的需求。 无论…

go api(get post传参,数据库,redis) 测试

介绍&#xff1a;分别测试get请求&#xff0c;post请求&#xff0c;请求链接数据库&#xff0c;以及redis操作。 1.api代码 package mainimport (_ "database/sql""encoding/json""github.com/gin-gonic/gin""go-test/com.zs/database&quo…

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…

Vue3+TS+dhtmlx-gantt实现甘特图

实现样式 因为只做展示&#xff0c;所以实现很简单 实现功能 自定义列头增加斑马线&#xff0c;实际结束时间&#xff08;自定义实现&#xff09;自定义进度展示&#xff0c;根据层级让进度背景颜色变浅marker标记今天自定义提示框内容 实现 import { gantt } from "d…

STM32F407移植OpenHarmony笔记1

参考文档&#xff1a; OpenAtom OpenHarmonywidthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v3.2/zh-cn/device-dev/get-code/gettools-acquire.md/ 搭建环境 安装linux系统: Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-91-generic x86_64) 下载源代码&a…

如何在转接的NVME 固态盘上安装WIN 系统并引导启动

问题&#xff1a; 家里的台式机一直挂着一块128G的SSD固态盘&#xff0c;由于家里自己建了NAS存储&#xff0c;所以基本数据都在NAS里&#xff0c;台式机就没有挂机械盘了&#xff0c;但是最近台式机空间被系统侵蚀&#xff0c;显然就不够用了&#xff0c;除了清理系统&#xf…

bash 5.2中文修订4

Compound Commands 复合命令 复合命令是 shell 编程语言的结构。每个构造都以保留字或控制运算符开始&#xff0c;并以相应的保留字或运算符终止。与复合命令关联的任何重定向&#xff08;请参阅 Redirections &#xff09;都适用于该复合命令中的所有命令&#xff0c;除非显式…

vue3使用AntV G6 (图可视化引擎)历程[二]

上期回顾&#xff1a;历程[一]描述了基本的树状图的绘制&#xff0c;默认节点类型defaultNode中的type是circle,下面这篇描述的是节点抽离自定义节点并做数据静态渲染。 官网地址&#xff1a;https://g6-next.antv.antgroup.com/manual/introduction 一、案例效果 二、自定义节…

使用CSS 或 SASS 实现主题背景切换效果

目录 &#x1f389;应用背景 &#x1f389;分析实现思路 &#x1f389;CSS实现主题切换 &#x1f389;SCSS实现主题切换 &#x1f389;结语 &#x1f389;应用背景 现在的主流网站中&#xff0c;无论是一些技术文档获取官网&#xff0c;都存在着使用一个switch按钮实现主题…

Nginx与keepalived实现集群

提醒一下&#xff1a;下面实例讲解是在mac虚拟机里的Ubuntu系统演示的&#xff1b; Nginx与keepalived实现集群实现的效果 两台服务器都安装Nginx与keepalived&#xff1a; mater服务器的ip(192.168.200.2) backup服务器的ip(192.168.200.4) 将 mater服务器Nginx与keepalived都…

【DG 特长生2019】模拟赛赛后总结(2024.1.24)

打了330pt,订正后350pt T1 签到 T2 dfs剪枝&#xff08;虽然我写挂了&#xff09; T3 NOIP原题 T4 floyd 主要是想分享一下T4。 写了一种基于floyd的做法。 感觉好像和大部分人的写法不太一样。 因为看到大小关系&#xff0c;我就想到了传递性。 floyd是可以维护传递…

Unity中URP下获取每一个额外灯数据

文章目录 前言一、我们先来看一下 SimpleLit 中的调用二、获取额外灯索引1、非移动平台2、非GLES平台3、大多数平台 三、获取额外灯数据 前言 在上一篇文章中&#xff0c;我们知道了URP下是怎么获取额外灯数量的。 Unity中URP下获取额外灯数量 在这篇文章中&#xff0c;我们…

虹科分享丨AR与AI融合加速,医疗护理更便捷!

来源&#xff1a;虹科数字化与AR 虹科分享丨AR与AI融合加速&#xff0c;医疗护理更便捷&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/Fi0wNfk_TDXRo_1-6cSRNQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #AR眼镜 #医疗护理 根据Reports and Da…

MySQL函数—流程函数

MySQL函数—流程函数&#xff1a;用于实现条件筛选&#xff0c;从而题搞语句的效率。 MySQL函数—流程函数 函数功能IF(value,t,f)如果value为true&#xff0c;则返回t&#xff0c;否则返回fIFNULL(value1,value2)如果value1不为空&#xff0c;返回value1&#xff0c;否则返回v…