SAP ABAP MIGO交货单gohead-LFSNR字段增强

2023-10-14 09:20

本文主要是介绍SAP ABAP MIGO交货单gohead-LFSNR字段增强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求:根据采购订单供应商信息,自动填充交货单字段。

效果:

经过DEBUG及翻译资料。并无合适的增强用来做增强。所以可以采用隐士增强的方式来实现功能。

se38:LMIGOHG2 找到  METHOD pai. 。

创建增强实施:

*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZEP_LMIGOHG2.    "active version
*自动生成交货单号 。
*103收货订单类型:ZNB1\ZNB2\ZNB3\ZNB4\ZNB5\ZNB6\ZNB9\ZNBF\ZNBX\ZNBY
*101收货订单类型:ZNB7\ZNB8
*号码规则:供应商+系统的六位年月日+两位流水(根据供应商送货次数来)
*两位流水:如果此供应商一次送了三张采购订单,则是三位流水,三次送货也是三位流水。DATA:LS_EKKO TYPE EKKO.DATA:LV_XBLNR TYPE MKPF-XBLNR .DATA:LV_STR TYPE CHAR02 .DATA:LV_STRS TYPE CHAR02 .DATA:LV_NUM TYPE N LENGTH 2 .DATA:LV_BSART TYPE EKKO-BSART .DATA:LV_LIFNR TYPE EKKO-LIFNR.BREAK ZWANGGF.if gohead-LFSNR is INITIAL and sy-tcode eq 'MIGO'.IF GODYNPRO-ACTION EQ 'A01' AND godynpro-REFDOC EQ 'R01' AND godynpro-PO_NUMBER IS NOT INITIAL .
*自动生成交货单号 。
*103收货订单类型:ZNB1\ZNB2\ZNB3\ZNB4\ZNB5\ZNB6\ZNB9\ZNBF\ZNBX\ZNBY
*101收货订单类型:ZNB7\ZNB8
*号码规则:供应商+系统的六位年月日+两位流水(根据供应商送货次数来)
*两位流水:如果此供应商一次送了三张采购订单,则是三位流水,三次送货也是三位流水。CLEAR LV_BSART .SELECT SINGLE * INTO LS_EKKO FROM EKKOWHERE EBELN = godynpro-PO_NUMBER.LV_BSART = LS_EKKO-BSART .FIND LV_BSART IN 'ZNB1\ZNB2\ZNB3\ZNB4\ZNB5\ZNB6\ZNB9\ZNBF\ZNBX\ZNBY\ZNB7\ZNB8' .IF SY-SUBRC = 0 .
*查询已经流水的记录。CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGINPUT  = LS_EKKO-LIFNRIMPORTINGOUTPUT = LV_LIFNR.CONCATENATE LV_LIFNR SY-DATUM+2(6) '*' INTO LV_XBLNR .SELECTMKPF~MBLNR,MKPF~XBLNRINTO TABLE @DATA(LT_HIS)FROM MKPF INNER JOIN MSEG ON MSEG~MBLNR EQ MKPF~MBLNR AND MSEG~MJAHR EQ MKPF~MJAHRWHEREMKPF~CPUDT EQ @SY-DATUMAND MKPF~VGART EQ 'WE'AND MSEG~LIFNR EQ @LS_EKKO-LIFNR .
*获取系统中的记录数据。DELETE LT_HIS WHERE XBLNR NP LV_XBLNR .SORT LT_HIS BY XBLNR DESCENDING .LOOP AT LT_HIS INTO DATA(LS_HIS) .LV_STR = LS_HIS-XBLNR+13(2) .CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'EXPORTINGINPUT      = LV_STR
*             INTERNAL   = 'X'IMPORTINGOUTPUT     = LV_STRSEXCEPTIONSNO_NUMERIC = 1
*             OTHERS     = 2.IF SY-SUBRC <> 0.CONTINUE .ELSE .LV_NUM =  LV_STR .EXIT .ENDIF.ENDLOOP .IF LV_NUM IS INITIAL .LV_NUM = 01 .ELSE .LV_NUM = LV_NUM + 1 .ENDIF .CONCATENATE LV_LIFNR SY-DATUM+2(6) LV_NUM INTO gohead-LFSNR .ENDIF .ENDIF .endif .
ENDENHANCEMENT.

如果通过MIGO_DIALOG函数跳转,需要设置 I_REF_DOC_NO参数即可。

这篇关于SAP ABAP MIGO交货单gohead-LFSNR字段增强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209594

相关文章

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Mysql表如何按照日期字段的年月分区

《Mysql表如何按照日期字段的年月分区》:本文主要介绍Mysql表如何按照日期字段的年月分区的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、创键表时直接设置分区二、已有表分区1、分区的前置条件2、分区操作三、验证四、注意总结一、创键表时直接设置分区

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

mysql数据库member中telephone字段被篡改

现在准备查询log日志文件,看下被操作的原因是什么

java的Timestamp时间插入mysql的datetime字段是0000-00-00 00:00:00

Mysql 与 java 的时间类型             MySql的时间类型有              Java 中与之对应的时间类型                  date                                               java.sql.Date               Datetime

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账

PL/SQL工具创建Oracle数据库表,实现id字段的自动递增

通过PL/SQL工具,创建Oracle数据库表,如何实现字段ID自动递增; Oracle的自增需要依靠序列和触发器共同实现 比如:先创建一个表 create table test (id int primary key, name varchar2(10)); 创建一个序列 create sequence test_seq increment by 1 start with 1  min