单击保存按钮时应自动生成临时销售订单

2020-08-24 03:59发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我遇到有关创建临时销售订单号的问题

代码在下面:-

如果SY-UCOMM ='SAVE'。

DOC_NUM TYPE CHAR10。

从ZLIPS选择MAX(ZVBELN)到DOC_NUM,其中VBELN = WA_ZLIPS-ZVBELN。

WA_ZLIPS-ZVBELN = DOC_NUM +1。


BREAK-POINT。

将DOC_NUM移动到WA_FINAL-ZVBELN。
将wa_zlips-vbeln移至wa_final- vbeln。
将wa_zlips-posnr移至wa_final-posnr。
将wa_zlips-MATNR移至wa_final-MATNR。
将WA_zlips-ZIEME移至WA_final-ZIEME。
将WA_zlips-UMZIZZ移至WA_final。
将WA_zlips-MEINS移动到WA_final-MEINS。
将WA_zlips-UMZIN移动到WA_final-UMZIN。
将WA_zlips-WERKS移动到WA_final-WERKS。
将WA_zlips-ERDAT移动到WA_final-ERDAT。 >将WA_zlips-MAKTX移动到WA_final-MAKTX。

将wa_zlips附加到it_zLIPS。

修改表it_ZLIPS中的zlips。

如果sy-subrc =0。
消息 :"新临时订单号。" 类型为" I"。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我遇到有关创建临时销售订单号的问题

代码在下面:-

如果SY-UCOMM ='SAVE'。

DOC_NUM TYPE CHAR10。

从ZLIPS选择MAX(ZVBELN)到DOC_NUM,其中VBELN = WA_ZLIPS-ZVBELN。

WA_ZLIPS-ZVBELN = DOC_NUM +1。


BREAK-POINT。

将DOC_NUM移动到WA_FINAL-ZVBELN。
将wa_zlips-vbeln移至wa_final- vbeln。
将wa_zlips-posnr移至wa_final-posnr。
将wa_zlips-MATNR移至wa_final-MATNR。
将WA_zlips-ZIEME移至WA_final-ZIEME。
将WA_zlips-UMZIZZ移至WA_final。
将WA_zlips-MEINS移动到WA_final-MEINS。
将WA_zlips-UMZIN移动到WA_final-UMZIN。
将WA_zlips-WERKS移动到WA_final-WERKS。
将WA_zlips-ERDAT移动到WA_final-ERDAT。 >将WA_zlips-MAKTX移动到WA_final-MAKTX。

将wa_zlips附加到it_zLIPS。

修改表it_ZLIPS中的zlips。

如果sy-subrc =0。
消息 :"新临时订单号。" 类型为" I"。

付费偷看设置
发送
3条回答
我是小鹏鹏啊
1楼-- · 2020-08-24 04:35

此代码写在哪里? 您使用了合适的出口吗?

这里的业务需求是什么?

huskylover
2楼-- · 2020-08-24 04:36

需求:

开发一个报告alv报告,单击"保存"按钮时将存储临时销售号码。

完整代码:-


TYPE-POOLS SLIS。
表格:VBAP,MAKT,ZLIPS。

* DATA:LV_TEMP(10)TYPEC。


TYPES:TY_VBAP开头,
VBELN类型VBELN,"销售订单
POSNR类型POSNR,"产品编号
MATNR类型MATNR,"材料编号 ZIEME类型DZIEME," UNIT
UMZIZ类型UMZIZ," 70
UMZIN型UMZIN," 1
面型面型," KG
WERKS型面型,"植物
ERDAT型ERDAT,"日期
* VRKME型VRKME," BAG
* NTGEW型 NTGEW," KG
TY_VBAP的结尾。

类型:TY_MAKT的开始,
MATNR的类型MATNR,
MAKTX的类型的MAKTX,
TY_MAKT的结尾。

类型:TY_ZLIPS的开始,
ZVBELN类型ZLIPS-ZVBELN,
VBELN类型ZLIPS-VBELN,
POSNR类型ZLIPS-POSNR,
MATNR类型ZLIPS-MATNR,
ZIEME类型ZLIPS-ZIEME ,
UMZIZ型ZLIPS-UMZIZ,
UMZIN型ZLIPS-UMZIN,
MEINS型ZLIPS-MEINS,
WERKS型ZLIPS-WERKS,
ERDAT型ZLIPS-ERDAT,
MAKTX ZLIPS-MAKTX类型,
TY_ZLIPS的结尾。

类型:TY_FINAL的开始,
ZVBELN ZLIPS-ZV类型 BELN,
VBELN类型ZLIPS-VBELN,
POSNR类型ZLIPS-POSNR,
MATNR类型ZLIPS-MATNR,
ZIEME类型ZLIPS-ZIEME,
UMZIZ类型ZLIPS-UMZIZ,
UMZIN类型ZLIPS-UMZIN,
意味着类型ZLIPS-MEINS,
WERKS类型ZLIPS-WERKS,
ERDAT类型ZLIPS-ERDAT,
MAKTX类型ZLIPS-MAKTX,
TY_FINAL结尾。 br>
*类型:TY_FINAL的开始,
* ZVBELN类型ZLIPS-ZVBELN,
* VBELN类型VBAP-VBELN,
* POSNR类型VBAP-POSNR,
* MATNR类型VBAP- MATNR,
* ZIEME型VBAP-ZIEME,
* UMZIZ型VBAP-UMZIZ,
* UMZIN型VBAP-UMZIN,
* MEINS型VBAP-MEINS,
* WERKS型VBAP- WERKS,
* ERDAT类型VBAP-ERDAT,
* MAKTX类型MAKT-MAKTX,
* TY_FINAL的结尾。


数据:IT_VBAP类型标准表TY_VBAP,
WA_VBAP类型TY_VBAP,
TY_MAKT类型的IT_MAKT类型标准表,
WA_MAKT类型TY_ZLIPS的标准类型表,
WA_ZLIPS类型TY_TYL的类型TY_TYL,
br> WA_FINAL TYPE TY_FINAL。

数据:IT_FCAT类型SLIS_T_FIELDCAT_ALV,
与IT_FCAT类似的WA_FCAT线。

在it_final循环到wa_final。

将WA_FINAL-ZVBELN移至WA_ZLIPS-ZVBELN。
将wa_final移至。 wa_ZLIPS-vbeln。 " = wa_final-vbeln。
将wa_final-posnr移至wa_ZLIPS-posnr。
将wa_final-MATNR移至wa_ZLIPS-MATNR。
将WA_FINAL-ZIEME移至WA_ZLIPS-ZIEME。
将WA_FINAL-ZIEME移至WA_FINAL-UMZIME。 WA_ZLIPS-UMZIZ。
将WA_FINAL-MEINS移至WA_ZLIPS-MEINS。
将WA_FINAL-UMZIN移至WA_ZLIPS-UMZIN。
将WA_FINAL-WERKS移至WA_ZLIPS-WERKS。
将WA_FINAL-ERDAT移至WA_FINAL-ERDAT。 ERDAT。
将WA_FINAL-MAKTX移动到WA_ZLIPS-MAKTX。" WA_ZLIPS-MAKTX更改为WA_FINAL-MAKTX
ENDLOOP。

具有框架标题文本001的B1块的选择屏幕开始。
参数:P_VBELN类型的VBAP-VBELN。
* A_VBELN类型的VBAP-VBELN。

块的选择屏幕结束 B1。


* DATA:L_NUM(4)TY,PE N.
* data:temp_zvbeln(4)类型n。


FORM GET_DATA。

SELECT VBELN POSNR
MATNR
ZIEME UMZIZ UMZIN MEINS
从VBAP到表IT_VBAP的ERDAT
VBELN EQ P_VBELN。


从MAKT到表IT_MAKT中选择MATNR MAKTX。 br>从ZLIPS中选择ZVBELN
VBELN到表IT_ZLIPS中。

ENDFORM。


表格FINAL_DATA。
* BREAK-POINT。
如果IT_VBAP不是初始的 。

将IT_VBAP插入WA_VBAP。
* BREAK-点。
用键VBELN = WA_VBAP-VBELN将表IT_VBAP读入WA_VBAP。
用键MATNR = WA_VAPAP将表IT_MAKT读入WA_MAKT = WA_VBAP -MATNR。
用键VBELN = WA_ZLIPS-VBELN将表IT_ZLIPS读入WA_ZLIPS。
* WA_FINAL-ZVBELN = A_VBELN。 "温度交货订单
WA_FINAL-VBELN = WA_VBAP-VBELN。"销售订单
WA_FINAL-POSNR = WA_VBAP-POSNR。 "项目编号
WA_FINAL-MATNR = WA_VBAP-MATNR。"材料编号
WA_FINAL-ZIEME = WA_VBAP-ZIEME。
WA_FINAL-UMZIZ = WA_VBAP-UMZIZ。
WA_FINAL-MEINS = WA_VBAP-MEINS。
WA_FINAL-UMZIN = WA_VBAP-UMZIN。
WA_FINAL-WERKS = WA_VBAP-WERKS。 "工厂
WA_FINAL-ERDAT = WA_VBAP-ERDAT。"创建记录的日期
WA_FINAL-MATNR = WA_VBAP-MATNR。 "材料编号
WA_FINAL-MAKTX = WA_MAKT-MAKTX。"材料描述

数据:gd_date(10)。


将sy-data写入gd_date DD/MM/YYYY。 >

SHIFT WA_FINAL-VBELN左删除领导者'0'。
WA_FINAL-VBELN = WA_FINAL-VBELN + 0(6)。
SHIFT WA_FINAL-VBELN删除领导者'0'。 > WA_FINAL-POSNR = WA_FINAL-POSNR + 0(6)。
SHIFT WA_FINAL-MATNR左删除领先'0'。
WA_FINAL-MATNR = WA_FINAL-MATNR + 0(6)。

将WA_FINAL附加到IT_FINAL。
清除:WA_FINAL,WA_VBAP。


* BREAK-POINT。
在it_final处循环到wa_final。

将WA_FINAL-ZVBELN移至WA_zlips- ZVBELN。
将wa_final-vbeln移至wa_zlips-vbeln。
将wa_final-posnr移至wa_zlips-posnr。
将wa_final-MATNR移至wa_zlips-MATNR。
将WA_FINAL-ZIEME移动至WA_ZLIPS。
将WA_FINAL-UMZIZ移至WA_ZLIPS-UMZIZ。
将WA_FINAL-MEINS移至WA_ZLIPS-MEINS。
将WA_FINAL-UMZIN移至WA_ZLIPS-UMZIN。
将WA_FINAL-UMZIN移至WA_ZLIPS-WERKS。 >将WA_FINAL-ERDAT移动到WA_ZL IPS-ERDAT。
将WA_FINAL-MAKTX移动到WA_ZLIPS-MAKTX。
从WA_final插入zlips。
清除:WA_FINAL,WA_ZLIPS。
endloop。

ENDLOOP。
ENDIF 。


*如果IT_ZLIPS尚未初始化。
*
*将IT_ZLIPS插入WA_ZLIPS。
*使用键ZVBELN = WA_ZLIPS-ZVBELN将表IT_ZLIPS读入WA_ZLIPS。 > * WA_FINAL-ZVBELN = WA_ZLIPS-ZVBELN。
* ENDLOOP。
* ENDIF。
ENDFORM。

* FORM FORMAT_VALTO_VALON_DATE使用ERDAT更改WA_ERDAT。
*清除:
* WA_ERDAT。
*
* WA_ERDAT = WA_ERDAT = WA_ERDAT。
*
*通话功能'FORMAT_DATE_4_OUTPUT'
*导出
* DATIN = WA_ERDAT
*格式='DD .MM.YYYY'
*导入
* DATEX = WA_ERDAT。
*
* ENDFORM。

执行GET_DATA。

执行FINAL_DATA。


选择结束。

PERFORM FIELD_CAT。
*&--------------- -------------------------------------------------- ---- *
*&表单FIELD_CAT
*&--------------------------------- ------------------------------------ *
*文字
* ---- -------------------------------------------------- ---------------- *
*-> p1文本
* <-p2文本
* ----------- -------------------------------------------------- --------- *
FORM FIELD_CAT。

* WA_FCAT-FIELDNAME ='ZVBELN'。
* WA_FCAT-REF_TABNAME ='IT_FINAL'。
* WA_FCAT-SELTEXT_L ='TEMP。
* WA_FCAT-COL_POS =1。
* WA_FCAT-EDIT ='X'。
*将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='VBELN'。< br> WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='销售文档'。
WA_FCAT-COL_POS =2。
将WA_FCAT附加到IT_FCAT。


WA_FCAT-FIELDNAME =' POSNR"。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='销售文档'。
WA_FCAT-COL_POS =3。
在WA_FCAT上附加IT_FCAT。

WA_FCAT-FIELDNAME ='MATNR'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='材料编号'。
WA_FCAT-COL_POS =4。
将WA_FCAT附加到IT_FCAT。
>
WA_FCAT-FIELDNAME ='UMZIZ'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='KG'。
WA_FCAT-EDIT ='X'。
wa_fcat- do_sum ='X'。
WA_FCAT-COL_POS =5。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='MEINS'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='UNIT'。
WA_FCAT-COL_POS =6。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='UMZIN'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='BAG'。
WA_FCAT-EDIT ='X'。
wa_fcat-do_sum ='X'。
WA_FCAT-COL_POS =7。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='ZIEME'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='UNIT'。
WA_FCAT-COL_POS =8。
将WA_FCAT附加到IT_FCAT。


WA_FCAT-FIELDNAME ='WERKS'。
WA_FCAT- REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='PLANT'。
WA_FCAT-COL_POS =9。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='ERDAT'。
> WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='DATE'。
WA_FCAT-COL_POS =10。
将WA_FCAT附加到IT_FCAT。


WA_FCAT-FIELDNAME ='MAKTX' 。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='DESCRIPTION'。
WA_FCAT-COL_POS =11。
将WA_FCAT追加到IT_FCAT。


调用函数'REUSE_ALV_GRID_DISPLAY '
导出
i_callback_program = sy-repid
it_fieldcat = i t_fcat"通过字段目录到ALV
* i_save ='X'
I_CALLBACK_PF_STATUS_SET ='SET_PF_STATUS'



t_outtab = it_final。


ENDFORM。


使用rt_extab类型slis_t_extab形式的set_pf_status。


SET PF-STATUS'SAVE'。
* CASE SY-UCOMM。


* END
*案例SY-UCOMM。
*当'SAVE'。
*断点。
*当'SAVE'。
如果SY-UCOMM ='SAVE '。
断点。
* LOOP。

*断点。
DATA:DOC_NUM类型的字符CHAR10。
* it_vbap处的wa_vbaP中的LOOP。
* LOOP 在IT_FINAL处进入WA_FINAL。
在表中将IT_ZLIPS入具有键vbeln = wa_vbaP-VBELN的wa_zlips。
*将表IT_ZLIPS入具有键vbeln = wa_zlips-VBELN的wa_zlips。
* BREAK- <点>。 SHIFT WA_VBAP-VBELN左删除领先'0'。
*从zlips中选择max(zvbeln)到DOC_NUM,其中vbeln = WA_zlips-VBELN。
*从ZLIPS中选择MAX(ZVBELN)到DOC_NUM其中VBELN = W_ZLIPS- 。 " INTO DOC_NUM
* wa_VBAP-vbeln。
* vbeln = wa_vbap-vbeln。
* zvbeln = wa_zlips-zvbeln。
* wa_FINAL-zvbeln = 2020 + temp_zvbeln + 1.
WA_ZLIPS ZVBELN = DOC_NUM +1。" DOC_NUM + 1
* WA_ZLIPS-ZVBELN = WA_ZLIPS-ZVBELN + 1.
* DOC_NUM = WA_ZLIPS-ZVBELN + 1.


* BREAK-POINT。
*在it_final处循环进入wa_final。
将DOC_NUM移至WA_final-ZVBELN。
*将DOC_NUM移至WA_zlips-ZVBELN。
将wa_zlips-vbeln移至wa_final-vbeln。
将wa_zlips-posnr移至。 转到wa_final-posnr。
将wa_zlips-MATNR移至wa_final-MATNR。
移动WA_zlips-ZIEME到WA_final-ZIEME。
移动WA_zlips-UMZIZ到WA_final-UMZIZ。
移动WA_zfinsal-MEINS -MEINS。
将WA_zlips-UMZIN移动到WA_final-UMZIN。
将WA_zlips-WERKS移动到WA_final-WERKS。
将WA_zlips-ERDAT移动到WA_final-ERDAT。
将WA_zlips-MAKTX移动到WA_final 。

将wa_zlips附加到it_zLIPS。
清除zlips。
清除DOC_NUM。
*将WA_ZLIPS附加到IT_FINAL。
*删除it_zlips索引1.
修改z
* endloop。
如果sy-subrc =0。
消息:"新临时订单号"。 类型'I'。

endif。
* ENDLOOP。
ENDIF。

消息:'数据已成功保存'类型'S'。
* endloop。
*结束符。

*当'BACK'时。
如果SY-UCOMM ='BACK'。
离开程序。
ENDIF。
*当'EXIT'时。
如果SY-UCOMM ='EXIT'。
*保留到屏幕0。
离开程序。
ENDIF。
*当'CANCEL'。
如果SY-UCOMM =' 取消'。
离开程序。
*离开程序。
ENDIF。
* ENDCASE。
*当'BACK'时。
*如果SY-UCOMM ='BACK'。< br> *离开程序。
* ENDIF。
**当"退出"时。
*如果SY-UCOMM =" EXIT"。
**离开屏幕0.
*离开 程序
* ENDIF。
**当'CANCEL'。
*如果SY-UCOMM ='CANCEL'。
*离开程序。
**离开程序。
* ENDIF。
** ENDCASE。

ENDFORM。

我是小鹏鹏啊
3楼-- · 2020-08-24 04:47

您的要求+解决方案从功能上讲没有意义:

1。 为什么甚至需要保存临时销售订单号?

2。 即使您能够保存临时订单号,也不会阻止系统使用与保存的临时订单相同的临时订单来创建新的销售订单号。

2。 您可能需要为您的要求定义一个新的数字范围或设计一个自定义数字范围。例如YYYYMMDDxxx,其中xxx是递增的。

一周热门 更多>