您好,我想在客户数据这块增强屏幕里 获取这个科目分配中的资产号,我尝试用field-symbols分配给屏幕字段去读取 但是读不到,用DYNP_VALUES_READ也读不到,请问我该用什么方法呢,现在这三个出口函数里的包含文件ZXM02U01、ZXM02U02、ZXM02U03,请问我该把逻辑加在哪个文件里呢,求解答


FIELD-SYMBOLS TYPE any.
ASSIGN ('(SAPLKACB)COBL-ANLN1') to .
您好,我想在客户数据这块增强屏幕里 获取这个科目分配中的资产号,我尝试用field-symbols分配给屏幕字段去读取 但是读不到,用DYNP_VALUES_READ也读不到,请问我该用什么方法呢,现在这三个出口函数里的包含文件ZXM02U01、ZXM02U02、ZXM02U03,请问我该把逻辑加在哪个文件里呢,求解答


关注引自免费微信小程序:皆我百晓生
为了实现你在SAP ME51N采购申请屏幕上增强获取科目分配中的资产号的功能,你需要遵循以下步骤:
确定增强点:
在ME51N中,你需要在ZXM02U01(屏幕头)、ZXM02U02(屏幕体)或ZXM02U03(屏幕脚)中进行增强。由于你需要访问科目分配信息,通常这些信息位于屏幕体中,因此推荐在ZXM02U02中进行增强。
创建变量: 使用field-symbols声明一个变量来存储资产号。例如:
DATA: lv_asset_number TYPE psegk-fieldname.
读取科目分配:
首先,你需要找到科目分配的行数。这可以通过检查表LIPS(内部表,存储了采购申请的明细信息)的行数来实现。然后遍历每行,查找科目分配相关的行。
DATA(lips_count) = lines( lips ).
DO lips_count TIMES.
READ TABLE lips INTO DATA(ls_lips) INDEX sy-tabix.
IF ls_lips-koststelle EQ 'K'.
" 这里假设'K'是科目分配行的标志
lv_asset_number = ls_lips-assetnumber.
" 现在lv_asset_number应该包含了资产号
ENDIF.
ENDDO.
显示资产号: 将资产号显示在屏幕上的相应位置。这可能涉及到修改屏幕布局,添加一个新的字段或者在现有字段旁边显示资产号。具体取决于你的用户界面需求。
FIELD-SYMBOLS <ls_screen> LIKE LINE OF screen.
LOOP AT SCREEN INTO <ls_screen>.
IF sy-subrc = 0.
" 根据你的屏幕布局,找到对应的字段名,例如'ASSET_NUMBER'
<ls_screen>-ASSET_NUMBER = lv_asset_number.
ENDIF.
ENDLOOP.
保存并激活增强: 完成上述代码后,确保在SE80中正确地保存和激活你的ABAP程序,并且配置到ME51N的屏幕增强中。
请注意,这段代码是一个基本示例,实际的实现可能会根据你的系统设置、屏幕布局以及业务规则有所不同。如果你遇到任何问题,比如找不到正确的字段或者行标志,建议参考SAP标准屏幕的代码或者使用事务码SE11、SE80来分析结构和字段。
另外,如果你需要将结果展示在一个特定的位置,可能需要对屏幕布局做相应的调整,这可能涉及到对屏幕控件的使用,如FIELDFORM或DISPLAY等命令。