- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
预留中自定义文本字段“大项修”。根据预留创建物料凭证时,将该字段带入到物料凭证中,类似标准字段“项目文本”。并在物料凭证自动产生会计凭证后,将该字段带入到会计凭证行项目中.
其中需要解决以上三张凭证对该字段的界面显示,以及预留对该字段的 维护。解决接口中用BAPI对创建预留,创建物料凭证的字段维护 。
增强RESB表,添加大项修字段ZSGTXT 。
在屏幕中增加对应字段 。
设置MB21和MB22可编辑,MB23只读 。
代码如下 。
" -----------------------------@斌将军----------------------------- MODULE screen_set_edit OUTPUT . * 预留中控制大项修字段是否可编辑 IF sy-dynnr = 0510 . IF sy-tcode = ' MB21 ' OR sy-tcode = ' MB22 ' . ELSE . LOOP AT SCREEN . IF screen-name = ' RESB-ZSGTXT ' . screen -input = 0 . " 设置为不可编辑 ENDIF . MODIFY SCREEN . ENDLOOP . ENDIF . ENDIF . ENDMODULE . " -----------------------------@斌将军-----------------------------
其中MB22修改时,字段并不能保存到底表,需要做增强更新 。
标准表增强该字段 。
MSEG 。
MATDOC 。
创建DDL视图用于扩展NSDM_E_MSEG 。
为了使增强字段更能体现是由预留带入,因此直接将该字段显示到预留页签中。根据前台F1可知,预留界面所在位置,以及界面字段在结构GOITEM中 。
增强GOITEM结构 。
屏幕添加字段,因为只需要显示,所以设置为只输出 。
到此,前台界面执行MIGO根据预留单创建物料凭证,就能直接带出该字段的值。但是过账时发现,该字段的值并没有保存到MSEG表中.
此处推测,应该是前台字段在保存到MSEG表的过程中,某些结构没有该增强字段,导致值传递时丢失。 后经反复测试,大致摸清数据传输的过程 。
最终找到影响的位置,当传输给ls_imseg3时,ls_imseg3中并没有增强该字段,所以传输给ls_imseg时,增强字段的值就丢了 。
ls_imseg3的结构是IMSEG3,ls_imseg的结构是IMSEG.
在给IMSEG3增加ZSGTXT时,发现报错: GOITEM不能定义两个ZSGTXT 。
原来GOITEM和IMSEG中都包含IMSEG3结构,所以删除之前GOITEM的增强字段,直接在IMSEG3中增强该字段,则三个结构中都有了ZSGTXT 。
后经测试,创建物料凭证时,可以直接将预留的该字段值带入到物料凭证中 。
会计凭证是在创建物料凭证时自动产生的,因此DEBUG的方向还是物料凭证创建过程 。
在这个过程中有一个增强点MM07MFF9_F_BELEG_ERGAENZEN→CKMV_AC_DOCUMENT_CREATE,可以在生成会计凭证时,修改XACCIT表的数据,就可以改变会计凭证的行项目值,这与问题解决非常贴合.
所以需要在XACCIT中增强字段,并且在最终的会计凭证表BSEG中增强字段.
XACCIT 。
BSEG 。
但是经过测试,数据仍然没有通过物料凭证带入到会计凭证中,推测也是和物料凭证遇到的问题一样,数据传递时,有结构没有增加该字段 。
进入到CKMV_AC_DOCUMENT_CREATE函数中调试后,发现其中一个表p_acc对应的结构中没有该字段 。
对应的结构是通过代码定义的,因此直接在代码中增加了该字段 。
然后ZSGTXT的值就可以存入BSEG中.
之后在前台界面添加该字段用于展示即可 。
增强BSEG_ALV结构,在行项目表中显示 。
更改布局,显示在列表中 。
至此,预留单中的“大项修”字段,就可以传递到物料凭证中,并传递到会计凭证中 。
通过BAPI创建预留时,需要将ZSGTXT传递到预留中 。
增强实施 。
添加代码 。
" -----------------------------@斌将军----------------------------- METHOD if_ex_mb_res_bapi_create1~extensionin_to_resb. CONSTANTS : lc_vbkok TYPE char5 VALUE ' VBKOK ' , " Enhance the structure for more z fields in LIKP lc_vbpok TYPE char5 VALUE ' VBPOK ' , " Enhance the structure for more z fields in LIPS lc_cs_vbkok TYPE char8 VALUE ' CS_VBKOK ' . DATA : ls_zresb TYPE zresb_append, lv_rspos TYPE resb- rspos. LOOP AT it_extension_in INTO DATA (ls_extension). IF ls_extension- structure = ' ZRESB_APPEND ' . lv_rspos = ls_extension- valuepart1. ls_zresb = ls_extension- valuepart2. READ TABLE resb INTO DATA (ls_resb) INDEX lv_rspos. IF sy-subrc = 0 . ls_resb -zsgtxt = ls_zresb-zsgtxt. " 大项修 MODIFY resb FROM ls_resb INDEX lv_rspos TRANSPORTING zsgtxt. ENDIF . ENDIF . ENDLOOP . ENDMETHOD . " -----------------------------@斌将军-----------------------------
BADI:MB_BAPI_GOODSMVT_CREATE 。
调用方法IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC 。
IMSEG结构中也要新增增强字段,用于传值,上文已经新增过了 。
增强代码 。
" --------------------@斌将军-------------------- METHOD IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC. DATA : c_lenstruc TYPE i VALUE 30 , wa_bapi_mb_header TYPE bapi_te_xmkpf, wa_bapi_mb_item TYPE bapi_te_xmseg, wa_extension_in TYPE bapiparex. FIELD-SYMBOLS : <fs_imseg> TYPE imseg. CHECK NOT extension_in[] IS INITIAL . * Analyze IMSEG for document structure and assign LINE_IDs if necessary CALL METHOD cl_mmim_line_id_manager=> analyze_mb_create CHANGING ct_imseg = ct_imseg[] EXCEPTIONS duplicate_line_id = 1 OTHERS = 2 . LOOP AT extension_in INTO wa_extension_in. CASE wa_extension_in- structure . * extension of MKPF WHEN ' BAPI_TE_XMKPF ' . MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_header. MOVE-CORRESPONDING wa_bapi_mb_header TO cs_imkpf. * extension of MSEG WHEN ' BAPI_TE_XMSEG ' . MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_item. READ TABLE ct_imseg WITH KEY line_id = wa_bapi_mb_item- matdoc_itm ASSIGNING <fs_imseg> . IF sy-subrc EQ 0 . MOVE-CORRESPONDING wa_bapi_mb_item TO <fs_imseg> . ENDIF . ENDCASE . ENDLOOP . ENDMETHOD . " --------------------@斌将军--------------------
至此,BAPI传值增强也已完成 。
。
。
最后此篇关于关于将预留单中增强字段带入物料凭证和会计凭证中的文章就讲到这里了,如果你想了解更多关于关于将预留单中增强字段带入物料凭证和会计凭证中的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的问题是: 如何预留 Azure Kubernetes 服务 (AKS) VM? https://azure.microsoft.com/en-us/pricing/calculator/ 在定价计
我的任务是创建一个应用程序,该应用程序接收 MAC 地址并为该 MAC 地址创建 DHCP 预留。 .NET 中是否内置了任何 API 来轻松完成此操作? 最佳答案 当我为基础设施编写应用程序时,Wi
在用户指南 [1] 中,声明要根据您的预留实例对您的按需 ec2 实例进行计费,它们必须符合四个条件。 地区, 可用区, 实例类型, 和平台指定 该平台令人困惑,因为我使用了 自定义 Ubuntu A
我使用 AWS 市场 CentOS 微型和小型实例作为我的实例的镜像基础。 查看 EC2 实例预留用户界面,有几个选项可供选择,例如: Linux/Unix Linux/Unix (Amazon VP
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!