关于将预留单中增强字段带入物料凭证和会计凭证中

news2024/11/18 16:52:43

1、业务需求

预留中自定义文本字段“大项修”。根据预留创建物料凭证时,将该字段带入到物料凭证中,类似标准字段“项目文本”。并在物料凭证自动产生会计凭证后,将该字段带入到会计凭证行项目中。

其中需要解决以上三张凭证对该字段的界面显示,以及预留对该字段的维护。解决接口中用BAPI对创建预留,创建物料凭证的字段维护

2、前台界面增强

2.1、预留增强

增强RESB表,添加大项修字段ZSGTXT

在屏幕中增加对应字段

设置MB21和MB22可编辑,MB23只读

代码如下

"-----------------------------@斌将军-----------------------------
MODULE screen_set_edit OUTPUT.
*预留中控制大项修字段是否可编辑
  IF sy-dynnr = 0510.
    IF sy-tcode = 'MB21' OR sy-tcode = 'MB22'.

    ELSE.
      LOOP AT SCREEN.
        IF screen-name = 'RESB-ZSGTXT'.
          screen-input = 0."设置为不可编辑
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    ENDIF.
  ENDIF.
ENDMODULE.
"-----------------------------@斌将军-----------------------------

其中MB22修改时,字段并不能保存到底表,需要做增强更新

2.2、物料凭证增强

标准表增强该字段

MSEG

 MATDOC

创建DDL视图用于扩展NSDM_E_MSEG

为了使增强字段更能体现是由预留带入,因此直接将该字段显示到预留页签中。根据前台F1可知,预留界面所在位置,以及界面字段在结构GOITEM中

增强GOITEM结构

屏幕添加字段,因为只需要显示,所以设置为只输出

到此,前台界面执行MIGO根据预留单创建物料凭证,就能直接带出该字段的值。但是过账时发现,该字段的值并没有保存到MSEG表中。

此处推测,应该是前台字段在保存到MSEG表的过程中,某些结构没有该增强字段,导致值传递时丢失。后经反复测试,大致摸清数据传输的过程

最终找到影响的位置,当传输给ls_imseg3时,ls_imseg3中并没有增强该字段,所以传输给ls_imseg时,增强字段的值就丢了

ls_imseg3的结构是IMSEG3,ls_imseg的结构是IMSEG。

在给IMSEG3增加ZSGTXT时,发现报错:GOITEM不能定义两个ZSGTXT

原来GOITEM和IMSEG中都包含IMSEG3结构,所以删除之前GOITEM的增强字段,直接在IMSEG3中增强该字段,则三个结构中都有了ZSGTXT

后经测试,创建物料凭证时,可以直接将预留的该字段值带入到物料凭证中

2.3、会计凭证增强

会计凭证是在创建物料凭证时自动产生的,因此DEBUG的方向还是物料凭证创建过程

在这个过程中有一个增强点MM07MFF9_F_BELEG_ERGAENZEN→CKMV_AC_DOCUMENT_CREATE,可以在生成会计凭证时,修改XACCIT表的数据,就可以改变会计凭证的行项目值,这与问题解决非常贴合。

所以需要在XACCIT中增强字段,并且在最终的会计凭证表BSEG中增强字段。

XACCIT

BSEG

但是经过测试,数据仍然没有通过物料凭证带入到会计凭证中,推测也是和物料凭证遇到的问题一样,数据传递时,有结构没有增加该字段

进入到CKMV_AC_DOCUMENT_CREATE函数中调试后,发现其中一个表p_acc对应的结构中没有该字段

对应的结构是通过代码定义的,因此直接在代码中增加了该字段

然后ZSGTXT的值就可以存入BSEG中。

之后在前台界面添加该字段用于展示即可

增强BSEG_ALV结构,在行项目表中显示

更改布局,显示在列表中

至此,预留单中的“大项修”字段,就可以传递到物料凭证中,并传递到会计凭证中

3、接口代码

3.1、预留

通过BAPI创建预留时,需要将ZSGTXT传递到预留中

增强实施

 添加代码

"-----------------------------@斌将军-----------------------------
METHOD if_ex_mb_res_bapi_create1~extensionin_to_resb.
    CONSTANTS: lc_vbkok    TYPE char5  VALUE 'VBKOK',           "Enhance the structure for more z fields in LIKP
               lc_vbpok    TYPE char5  VALUE 'VBPOK',           "Enhance the structure for more z fields in LIPS
               lc_cs_vbkok TYPE char8  VALUE 'CS_VBKOK'.
    DATA: ls_zresb TYPE zresb_append,
          lv_rspos TYPE resb-rspos.

    LOOP AT it_extension_in INTO DATA(ls_extension).

      IF ls_extension-structure = 'ZRESB_APPEND'.
        lv_rspos = ls_extension-valuepart1.
        ls_zresb = ls_extension-valuepart2.
        READ TABLE resb INTO DATA(ls_resb) INDEX lv_rspos.
        IF sy-subrc = 0.
          ls_resb-zsgtxt = ls_zresb-zsgtxt."大项修
          MODIFY resb FROM ls_resb INDEX lv_rspos TRANSPORTING zsgtxt.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.
"-----------------------------@斌将军-----------------------------

3.2、物料凭证

BADI:MB_BAPI_GOODSMVT_CREATE

调用方法IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC

IMSEG结构中也要新增增强字段,用于传值,上文已经新增过了

增强代码

"--------------------@斌将军--------------------
METHOD IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC.

  DATA:
    c_lenstruc          TYPE i VALUE 30,
    wa_bapi_mb_header   TYPE bapi_te_xmkpf,
    wa_bapi_mb_item     TYPE bapi_te_xmseg,
    wa_extension_in     TYPE bapiparex.

  FIELD-SYMBOLS:
    <fs_imseg>          TYPE imseg.

  CHECK NOT extension_in[] IS INITIAL.

* Analyze IMSEG for document structure and assign LINE_IDs if necessary
  CALL METHOD cl_mmim_line_id_manager=>analyze_mb_create
    CHANGING
      ct_imseg          = ct_imseg[]
    EXCEPTIONS
      duplicate_line_id = 1
      OTHERS            = 2.

  LOOP AT extension_in INTO wa_extension_in.
    CASE wa_extension_in-structure.
* extension of MKPF
      WHEN 'BAPI_TE_XMKPF'.
        MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_header.
        MOVE-CORRESPONDING wa_bapi_mb_header TO cs_imkpf.
* extension of MSEG
      WHEN 'BAPI_TE_XMSEG'.
        MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_item.
        READ TABLE ct_imseg
          WITH KEY line_id = wa_bapi_mb_item-matdoc_itm
          ASSIGNING <fs_imseg>.
        IF sy-subrc EQ 0.
          MOVE-CORRESPONDING wa_bapi_mb_item TO <fs_imseg>.
        ENDIF.
    ENDCASE.
  ENDLOOP.

ENDMETHOD.
"--------------------@斌将军--------------------

至此,BAPI传值增强也已完成

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

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

相关文章

c/c++函数可变参数的实现

c语言&#xff0c;利用<stdarg.h> 里面的 typedef char* va_list; void va_start ( va_list ap, prev_param ); /* ANSI version */ type va_arg ( va_list ap, type ); void va_end ( va_list ap );#include <stdio.h> #include <stdarg.h> double Sum(int…

火爆全球的AI艺术二维码到底是怎么做的?

如今&#xff0c;二维码扫描已经成为一种与呼吸一样自然的本能动作。支付、购物、点餐、订票、浏览网页&#xff0c;几乎所有事情都可以通过扫描二维码来完成。你是否可以想象到下面是二维码&#xff1f;AI生成的艺术二维码使二维码瞬间变得高逼格。这些艺术二维码极具吸引力&a…

如何制定项目计划?甘特图告诉你

最近被领导指派负责一个新的项目&#xff0c;我想把项目做成功&#xff0c;给老板留下深刻的印象&#xff0c;同时也给自己的职业生涯添上浓墨重彩的一笔。 但是&#xff0c;项目管理流程很复杂&#xff0c;项目本身也不好做。在收集了与该项目有关的所有信息&#xff0c;并将…

亚马逊搜索关键词下单有哪些好处

在亚马逊上使用搜索关键词进行下单有许多好处&#xff0c;以下是其中一些主要的优点&#xff1a; 1、准确的产品匹配&#xff1a; 通过输入相关的搜索关键词&#xff0c;您可以更准确地找到您所需的产品&#xff0c;从而避免了浏览大量无关的商品页面。 2、节省时间&#xff…

亚马逊买家账号多久可以评论

根据亚马逊的政策&#xff0c;买家账号在购买商品后通常需要等待一段时间才能发布评论。 1、实物商品&#xff1a; 买家需要等待购买商品后的48小时&#xff0c;然后才能发布评论。 2、数字商品&#xff1a; 买家需要等待购买数字商品后的24小时&#xff0c;然后才能发布评论…

深度学习之用PyTorch实现逻辑回归

0.1 学习视频源于&#xff1a;b站&#xff1a;刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容&#xff0c;若有错误欢迎指正&#xff01; 代码&#xff08;类比线性回归&#xff09;&#xff1a; # 调用库 import torch import torch.nn.functional as F#…

[保研/考研机试] KY187 二进制数 北京邮电大学复试上机题 C++实现

描述 大家都知道&#xff0c;数据在计算机里中存储是以二进制的形式存储的。 有一天&#xff0c;小明学了C语言之后&#xff0c;他想知道一个类型为unsigned int 类型的数字&#xff0c;存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗&#xff1f;并且&#xff0c;小…

使用MyEclipse如何部署Descriptor (XML)编辑器?

Descriptor (XML) Editor编辑器包含了高级的XML编辑功能&#xff0c;在本文中您将了解到这些编辑功能、Web XML编辑等&#xff0c;此功能包含在MyEclipse中可用。 MyEclipse v2023.1.2离线版下载 1. Web XML 编辑器 MyEclipse Web XML编辑器包括高级XML编辑功能&#xff0c;…

2022年世界各国GDP总量、人均GDP总量及排名

【勘误&#xff1a;表格第103哥伦比亚应为柬埔寨】

线程隔离问题之服务降级、熔断

一、雪崩问题 微服务中&#xff0c;服务间调用关系错综复杂&#xff0c;一个请求&#xff0c;可能需要调用多个微服务接口才能实现&#xff0c;会形成非常复杂的调用链路&#xff1a; 如图&#xff0c;一次业务请求&#xff0c;需要调 用A、P、H、I四个服务&#xff0c;这四个…

【LeetCode每日一题】——575.分糖果

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 575.分糖果 四【题目描述】 Alice 有 n 枚糖&…

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

【转】彻底搞明白 GB2312、GBK 、GB18030和UTF-8

日常工作的过程中&#xff0c;关于字符编码的问题经常让人头疼不已&#xff0c;这篇文章就来捋一捋关于 GB2312、GBK、GB18030 相关的知识 以及它们和 Unicode 的关系 简介 GB2312&#xff08;2个字节&#xff09; 1980 年&#xff0c;中国发布了第一个汉字编码标准&#xf…

明道云联合Kyligence结合示范性场景应用

案例背景 前言 国内大部分制造企业在经历疫情后&#xff0c;终于迎来了市场端的消费需求的恢复和增长&#xff0c;但如何在激烈的竞争中以更少投入&#xff0c;获得更高回报&#xff0c;在市场上获得一席生存之地&#xff0c;成为了悬在众多企业头上的达摩克利斯之剑。在市场…

手搓 LLM (不用rnn 不用attention 完全新思路)padding 实验

数据集地址 诗 实验过的几种策略 主体代码 import paddle import numpy as np from tqdm import tqdm import pandas as pd class EmMask(paddle.nn.Layer):def

力扣63.不同路径II(动态规划)

/*** author Limg* date 2022/08/09* 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。* 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。* 现在考虑网…

大厂容器云实践之路(三)

5-基于Kubernetes打造SAE容器云 目前SAE基于请求的架构 • 优点 - 进程内隔离&#xff0c;消耗资源最⼩ - ⽆感扩容&缩容&#xff0c;⽤户⽆成本 - Health&Redispatch&#xff0c;升级切换⽆成本 • 缺点 - ⽆法提供独⽴的namespace - ⽆法Build&Ship&Run ⽤…

数据质量:数据越好,模型就越好

如果数据不准确&#xff0c;模型就无法正常运行。虽然最终可能得到一个尚可应付的模型&#xff0c;但它的功能会不尽人意。可以说&#xff0c;数据质量是机器学习模型训练中的重中之重。无论为模型提供了多少数据&#xff0c;如果数据不适用&#xff0c;对改善机器模型的性能就…

网络电影购票系统代理商客户端开发(java开源)

一、背景介绍 随着互联网技术的不断发展&#xff0c;网络电影购票已经成为了人们日常生活中的一部分。然而&#xff0c;在电影购票市场中&#xff0c;代理商客户端的开发与搭建是一个关键环节。接下来将介绍如何使用Java开源技术来开发一个网络电影购票系统代理商客户端。 二、…

基于Spring Boot的网络在线学习网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的网络在线学习网站的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java spri…