域VBAP NETWR在未完成过程Y1中没有被定义 消息号V1105

一、问题描述

项目中,调研阶段说标准订单不允许出现零金额订单,因此将净价配置成不完整校验,但是在系统运行一段时间后,出现新增买赠业务,需要在标准订单中下零金额行,因此修改了SAP销售凭证不完整日志配置,造成销售订单打开时,报错如下:
报错信息
原配置
原配置
去掉净值后的配置
修改配置

二、解决方法

猜测是由于订单创建时系统配置有净价,而后续修改了不完整过程Y1,系统校验不完整日志时,在Y1中无法找到净价字段,所以报错“域VBAP NETWR在未完成过程Y1中没有被定义”。
由于是对系统配置变更造成的报错,因此需要对MV45AFZB进行了增强,以便在运行时在不完整日志(XVBUV内部表)中添加其他字段。 表单例程取决于字段。
要禁止VA02和VA03中的"未完成过程中未定义字段<>"消息,请在LV45FFUV中进行增强。
OVA2中不保留任何条目,所有检查都在运行时进行。
源码片段
FORM USEREXIT_MOVE_FIELD_TO_COBL USING US_VBAK STRUCTURE VBAK
US_VBAP STRUCTURE VBAP
CHANGING CH_COBL STRUCTURE COBL.

  • Examples
  • CH_COBL-zzfield = US_VBAK-zzfield2.
  • CH_COBL-zzfield = US_VBAP-zzfield2.
    *{ INSERT S4DK903207 1
    READ TABLE XVBUV[] WITH KEY TBNAM = ‘VBAP’ FDNAM = ‘NETWR’ FEHGR = ‘Y1’ TRANSPORTING NO FIELDS .
    IF SY-SUBRC = 0 .
    DELETE XVBUV[] WHERE TBNAM = ‘VBAP’ AND FDNAM = ‘NETWR’ AND FEHGR = ‘Y1’ .
    ENDIF .

*} INSERT

ENDFORM.

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VBAP(Vector Base Amplitude Panning)音像定位是一种基于幅度调制的立体声声像合成技术。以下是一份使用MATLAB实现VBAP声像合成的代码示例: ``` clear all close all clc % 设置输入信 [x, fs] = audioread('input.wav'); % 设置输出声道数 nChannels = 8; % 设置扬声器位置 speakerPos = [1 0 0; 0 1 0; -1 0 0; 0 -1 0; 0 0 1; 0 0 -1; 0.5 0.5 0.5; -0.5 -0.5 -0.5]; % 计算输入信的长度和采样频率 [nSamples, nInputs] = size(x); % 初始化输出矩阵 y = zeros(nSamples, nChannels); % 遍历每个采样点并进行声像合成 for i = 1:nSamples for j = 1:nChannels % 计算输入信在当前扬声器位置的振幅 a = vbap_amplitude(speakerPos(j,:), nChannels); % 在输出矩阵添加输入信的振幅 y(i,j) = a * x(i,:); end end % 将输出矩阵写入WAV文件 audiowrite('output.wav', y, fs); % VBAP振幅计算函数 function a = vbap_amplitude(speaker, nChannels) % 计算扬声器与X轴的夹角 theta = atan2(speaker(2), speaker(1)); % 如果扬声器位于前方,则夹角为正;如果位于后方,则夹角为负 if theta < 0 theta = theta + 2*pi; end % 计算扬声器在圆上所处的位置 speakerIndex = ceil(theta / (2*pi/nChannels)); % 计算扬声器与所处位置两个最近邻的扬声器之间的向量 leftSpeaker = mod(speakerIndex - 1, nChannels) + 1; rightSpeaker = mod(speakerIndex, nChannels) + 1; vLeft = speaker - speakerPos(leftSpeaker,:); vRight = speakerPos(rightSpeaker,:) - speaker; % 计算扬声器与两个最近邻扬声器之间的夹角 phiLeft = acos(dot(speaker, speakerPos(leftSpeaker,:))/norm(speaker)/norm(speakerPos(leftSpeaker,:))); phiRight = acos(dot(speaker, speakerPos(rightSpeaker,:))/norm(speaker)/norm(speakerPos(rightSpeaker,:))); % 计算振幅 a = min([1 dot(vLeft,vRight)/(norm(vLeft)*norm(vRight)) dot(vLeft,vRight)/(norm(vLeft)*norm(vRight))]); end ``` 该代码,首先读取输入音频文件,并设置输出声道数和扬声器位置。然后,使用vbap_amplitude函数计算每个扬声器在当前位置的振幅,并将振幅乘以输入信的振幅来进行声像合成。最后,将输出矩阵写入WAV文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joker Yin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值