首页 > 其他分享 >【ABAP SAP】开发-BUG修补记录_采购申请打印时品名规格品牌为空

【ABAP SAP】开发-BUG修补记录_采购申请打印时品名规格品牌为空

时间:2024-12-12 10:00:15浏览次数:5  
标签:物料 JOIN 品名 ABAP 为空 OUTER 采购 SAP LEFT

项目场景:

TCODE:自开发程序ZMMF004
采购申请打印
在这里插入图片描述


问题描述

ZMMF004打印的时候,有的采购申请的品名、规格、品牌为空
在这里插入图片描述


原因分析:

1、首先我通过写SQL语句查底表来看这几条采购申请本身有无品名、规格、品牌
SQL语句如下,只需修改where条件即可测试各条数据
eban底表:采购申请

测试1:采购申请号:2500000122

SELECT ZPM,ZGGXH,ZPP
FROM EBAN
WHERE BANFN = '2500000122';

执行结果:
在这里插入图片描述
可看出该条采购申请是本身就没有品名、规格、品牌的值的

测试2:采购申请号:2500000134

SELECT ZPM,ZGGXH,ZPP
FROM EBAN
WHERE BANFN = '2500000134';

执行结果:
在这里插入图片描述
可看出该条采购申请是本身就有品名的值,但没有规格、品牌的值

测试3:采购申请号:2500000136

SELECT ZPM,ZGGXH,ZPP
FROM EBAN
WHERE BANFN = '2500000136';

执行结果:
在这里插入图片描述
可看出该条采购申请对应两个物料号,其中一个物料有品名值,无规格、品牌的值;另一个物料这三个字段都没有值

从上面的测试结果我可以得出,并不是由于程序取数逻辑错误而导致带不出品名、规格、品牌等字段值,而是因为一些采购申请本身就没有填相应的字段值

2、我的首先的思路是,loop循环ALV最终要显现出来的取到数据的内表,一条一条查哪些采购申请的品名、规格、品牌为空,若为空,则再从物料主数据中取然后放到内表中,但这样loop会非常耗费时间,代码实现也要相对注意,所以这个思路out

3、与其loop已取出来数的内表,不如直接从源头select改变取值方式,直接去物料主数据里取


解决方案:

通过上面的原因分析,可采用如下解决方案:也就是原因分析中的第三条
直接取物料对应的物料主数据上的需要的字段信息,并使其显示出来,若采购申请有这三个字段的值也没关系,从物料主数据中取出来的三字段的值会直接覆盖(因为采购申请中的三字段值和物料主数据中的应该是一致的)
所以解决办法也很简单,直接在原先select语句基础上,连一个表mara物料主数据,让直接从mara表中取品名,规格,品牌(前提是mara表中得有这些字段)

mara表:
在这里插入图片描述

修改的语句如下:

SELECT a~banfn,
         a~bnfpo,
         a~badat,
         a~bsart,
         a~matkl,
         a~ernam,
         a~knttp,
         a~werks,
         d~name1,
         a~ekgrp,
         b~eknam,
         a~matnr,
         a~txz01,
         i~zpm,
         i~zggxh,
         i~zpp,
         a~menge,
         a~meins,
         a~lfdat,
         a~lgort,
         c~lgobe,
         a~afnam,
         a~zjjcd,
         a~zjhjh,
         f~maktx,
         g~wgbez,
         h~knttx
   INTO CORRESPONDING FIELDS OF TABLE @gt_alv
    FROM eban AS a
    LEFT  OUTER JOIN t024    AS b ON a~ekgrp = b~ekgrp
    LEFT  OUTER JOIN t023T   AS g ON a~matkl = g~matkl
    LEFT  OUTER JOIN t001L   AS c ON a~werks = c~werks AND a~lgort = c~lgort
    LEFT  OUTER JOIN t001w   AS d ON a~werks = d~werks
    LEFT  OUTER JOIN makt    AS f ON a~matnr = f~matnr
    LEFT  OUTER JOIN zmmt021 AS e ON a~banfn = e~banfn
    LEFT  OUTER JOIN t163i   AS h ON a~knttp = h~knttp AND h~spras = @sy-langu
    LEFT  OUTER JOIN MARA    AS i on i~matnr = a~matnr
   WHERE a~bsart IN @s_bsart
     AND a~werks IN @s_werks
     AND a~banfn IN @s_banfn
     AND a~badat IN @s_badat
     AND a~ernam IN @s_ernam
     AND a~loekz NE 'X'
     AND (lv_str)
     AND (lv_str2).

红框中为修改并添加的语句
在这里插入图片描述
再执行 ZMMF004,效果如下:
在这里插入图片描述

标签:物料,JOIN,品名,ABAP,为空,OUTER,采购,SAP,LEFT
From: https://blog.csdn.net/weixin_52203666/article/details/144406142

相关文章

  • SAP配置网络打印机
    1、网络打印机在项目中需要用打印机打印表单,如果不配置网络打印机,通常需要通过连接特定的计算机(如打印服务器)来进行打印,或者使用本地连接的打印机,这样每台计算机可能需要单独配置打印机或安装驱动,导致资源浪费,也不方便。如果配置了网络打印机,无需本地连接特定的计算机或设备,多台......
  • ABAP Dump:GETWA_NOT_ASSIGNED
    ALV点击导出按钮时系统Dump,看报错应该是哪里的字段结构不符 经过检查发现ALV布局参数设置时,添加了内表未定义的字段CELLCOLOR。1DATALS_LAYOUTTYPESLIS_LAYOUT_ALV.2LS_LAYOUT-ZEBRA='X'.3LS_LAYOUT-COLWIDTH_OPTIMIZE='X'.4*LS_LAYOUT-COLTAB_FIEL......
  • ABAP DIALOG屏幕编程2
    在上一篇博客ABAPDIALOG屏幕编程1中阐述了DIALOG、PBO、PAI的概念并且对常用页面元素怎么用进行了演示。在这一篇博文中会讲述怎么添加下拉框、搜索帮助,怎么创建表控件、屏幕跳转等。会用到上一篇里面的内容。有关程序包含文件结构如下。一、响应用户指令如上一篇博文中......
  • ABAP DIALOG屏幕编程3
    在DIALOG屏幕编程1中阐述了DIALOG、PBO、PAI的概念并且对常用页面元素怎么用进行了演示。在DIALOG屏幕编程2中演示了响应用户指令、怎么添加下拉框、搜索帮助,实现屏幕跳转等。在这篇文章中会演示怎么创建表控件和标签条。一、创建新屏幕在同一个MODULE模块池中可以创建多块......
  • SAP QM 客户退货检验的三种实现方案
    SAPQM客户退货检验的三种实现方案   在SAP项目上,客户退货检验场景经常遇到。如果项目上启用QM模块,要在SAP里实现客户退货场景的质量检验,有三种实现方式。本文将对这三种实现方案做简要说明,与同行共勉。  1,客户退货的收货启用移动类型651,物料激活检验类型06,退货......
  • 在SAP Fiori界面上的ME53N事务
    在SAPFiori界面上的ME53N事务  在SAPFiori界面上的采购申请显示界面(事务代码ME53N),基本跟在SAPGUI上显示界面相同。 MaterialData选项卡,    Quantities/Dates选项卡,  Valuation选项卡,   SourceofSupply选项卡,    Status选项卡, ......
  • ABAP开发-批量导入BAPI和BDC_1
    系列文章目录文章目录系列文章目录@[TOC](文章目录)前言一、概念二、BDC和BAPI数据导入1、BDC数据导入(录屏)2、BAPI数据导入三、实例1、BAPI2、BDC总结前言一、概念SAP中,对一个事务码反复操作并且达到批量处理数据的效果,即批量导入,重复操作一类数据,从而用程序模......
  • 快速编译并执行csapp程序
    现在要实现通过cfile.c来执行两个过程:#1.根据c文件名生成对应的输出文件gcc-I/home/crx/study/csapp/code/include/home/crx/study/csapp/code/src/csapp.cfile.c-ofile#2.执行输出文件./file通过chatgpt的方案是,使用脚本来根据输入文件名自动生成输出文件名。......
  • 禁用SAP Hana错误密码锁定用户功能
    背景公司项目适配多种数据库其中包含SAPHana,由于有同事的数据库连接工具保存了某个在用的数据库的旧密码,导致时不时会被锁用户。通过查询官方文档已解决,这里统一记录一下。禁用密码锁定方法以下按系统管理员和普通用户的解法分别列出。禁用SYSTEM管理员密码锁定查找安装Hana......
  • 用后台判断gridview中的单元格是否为空
    XS73111btnQDKCPDforeach(GridViewRowgridRowingrd.Rows){if(_page.GridRowIsSelected(gridRow.RowIndex)){if(string.IsNullOrEmpty(_page.GetRowDataByKey(gridRow.RowIndex,"WLID")))......