当前位置: 首页 > news >正文

金色传说:SAP-SD-VA01增强:创建销售订单时检查抬头长文本必输增强

文章目录

  • 需求
  • 一、需求分析
  • 二、需求实现
    • 1.从内存中获取长文本数据
  • 二、实现步骤
    • 1.获得所有本销售订单长文本
    • 2.读取抬头长文本
    • 3.代码示例


需求

VA01创建特定类型销售订单时检查抬头的长文本有没有输入内容,还必须是ZH中文的内容,没输入时不能保存销售订单.

一、需求分析

销售订单保存增强MV45AFZZ执行时,还没产生销售订单号,自然也产生不了长文本存储时需要的TDNAME,更不用说保存到数据表了,所以,直接在增强MV45AFZZ中查STXH表是获取不到数据的,给大家分享下我的增强检查方法

二、需求实现

1.从内存中获取长文本数据

sap在长文本保存,读取等操作时,有一个特殊的函数组:SAPLSTXD,可以用SE38查看.
经过分析,在SAPLSTXD=>LSTXDUXX=>LSTXDU08的230行位置找到了需要的内存参数ID.

二、实现步骤

1.获得所有本销售订单长文本

代码如下(示例):

*--------------------------------------------------------------------S↓*
    "S4   检查销售订单抬头,必须录入长文本,且必须是中文的         12.09.2024 09:45:03
DATA BEGIN OF catalog OCCURS 50.
INCLUDE STRUCTURE tcatalog.
DATA END OF catalog.

DATA BEGIN OF theader.
     INCLUDE STRUCTURE thead.
DATA END OF theader.
DATA BEGIN OF gt_lines occurs 50.
  INCLUDE STRUCTURE tline.
DATA END OF gt_lines.

"取得所有该销售订单的长文本内存
 IMPORT catalog FROM MEMORY ID 'SAPLSTXD'.

2.读取抬头长文本

示例取得的数据如下:
在这里插入图片描述
TDOBJECT字段:
VBBK表示抬头文本;VBBP是行项目文本
TDNAME字段:
只有XXXXX的是抬头文本;XXXX000010的表示是行项目第一行
TDID字段:
表示文本id顺序,上图的第四行TDID=0001,就表示的是下图中的 表格抬头长文本,TDID=0002表示的就是下图的抬头注释1
在这里插入图片描述
TDSPRAS字段:代表语言,1是中文,E是英语,其他的可以用函数CONVERSION_EXIT_ISOLA_INPUT 进行查询
在这里插入图片描述
ID字段:
表示这个销售订单所有长文本的输入顺序,可以用来拼装取长文本具体内容的的内存ID参数

3.代码示例

代码如下(示例):

DATA BEGIN OF catalog OCCURS 50.
INCLUDE STRUCTURE tcatalog.
DATA END OF catalog.

"这是获取详细内容用的
DATA BEGIN OF theader.
     INCLUDE STRUCTURE thead.
DATA END OF theader.
DATA BEGIN OF gt_lines occurs 50.
  INCLUDE STRUCTURE tline.
DATA END OF gt_lines.
DATA head_id(14) TYPE c.
IF ( sy-tcode = 'VA01' OR sy-tcode = 'VA02') AND ( xvbak-auart EQ 'ZOR1' OR xvbak-auart EQ 'ZOR8').
  "取得所有该销售订单的长文本内存
  IMPORT catalog FROM MEMORY ID 'SAPLSTXD'.

  LOOP AT catalog INTO DATA(ds_head) WHERE tdobject EQ 'VBBK' AND tdspras EQ '1'.
    head_id = 'SAPLSTXD' && ds_head-id.
    EXIT.
  ENDLOOP.
  IF ds_head IS INITIAL.
     MESSAGE E146(ZV00).
  ENDIF.
    "长文本详细内容
*  IF head_id IS NOT INITIAL.
*    IMPORT thead TO theader tline TO gt_lines FROM MEMORY ID head_id.
*      LOOP AT gt_lines.
*        "在此处理长文本的内容
*      ENDLOOP.
*  ENDIF.
ENDIF.

---
# 总结
SAP博大精深

相关文章:

  • makefile语法注意点
  • JVM字节码
  • stm32f103c8t6最小系统中的指示灯
  • C#使用TCP-S7协议读写西门子PLC(二)
  • mysql Deadlock found when trying to get lock; try restarting transaction
  • 影刀RPA实战:自动化同步商品库存至各大电商平台(一)
  • PPT技巧:如何在幻灯片中生成目录?
  • Mongoose OverwriteModelError: Cannot overwrite `note` model once compiled.
  • 易基因:朱健康团队WGBS揭示主动DNA去甲基化缺失植物的DNA甲基化跨代增加|PNAS
  • SprinBoot+Vue山西文旅网的设计与实现
  • 【原创】java+springboot+mysql疫情期间在线答疑系统设计与实现
  • 【笔记】自动驾驶预测与决策规划_Part1_自动驾驶决策规划简介
  • 单链表的实现(C语言)
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)
  • S7-1500替代S7-300全解析系列
  • Python中的单例模式:从入门到精通
  • SpringCloud Alibaba入门简介
  • 逆向基础一阶段检测-1
  • Facebook的虚拟现实计划:未来社交的全新视角
  • spring项目整合log4j2日志框架(含log4j无法打印出日志的情况,含解决办法)
  • 横跨万里穿越百年,《受到召唤·敦煌》中张艺兴一人分饰两角
  • 美国和沙特签署上千亿美元军售协议
  • 旭辉控股集团主席林中:债务重组是活下来的前提,自营开发业务收缩至少数核心城市
  • 我国7名优秀护理工作者荣获第50届南丁格尔奖
  • 全国重点网络媒体和网络达人走进沧州,探寻“文武双全”的多重魅力
  • 上海第四批土拍成交额97亿元:杨浦宅地成交楼板单价半年涨近7000元