我想知道您将如何在END ROUTINE中获取主数据属性

2020-09-06 19:15发布

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

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


大家好

我想在我的最终例程中为客户主数据属性编写一个逻辑。 谁能告诉我是否可以在结束例程中为主数据属性编写逻辑。

我尝试了ABAP代码,但该代码无法正常工作。 请在下面找到代码。

从/BI0/PCUSTOMER中将客户/BIC/ZCUSTPAR/BIC/ZCUSTPARG选择到表IT_/BI0/PCUSTOMER中,以获取RESULT_PACKAGE中的所有条目,其中客户= Result_package-客户。

如果sy-subrc =0。

按客户对它_/BI0/PCUSTOMER进行排序。

ENDIF。

在Result_package ASSIGNING 处循环。

使用键Customer = wa_/BI0/PCUSTOMER-customer将表IT_/BI0/PCUSTOMER读入wa_/BI0/PCUSTOMER。

如果sy-subrc = 0。

如果 -zcustpar =``。

-zcustpar = wa_/BIO/PCUSTOMER-customer。

endif。

-zcustparg = -zcustpar。

endif。

如果 -customer + 7(3)='_IN'并且 -zcustpar =''。

<结果字段> -zcustpar = <结果字段> -customer + 0(7)。

endif。

如果 -customer + 7(3)='_IN'并且 -zcustparg =''。

<结果字段> -zcustparg = <结果字段> -zcustpar。 万一。

结束循环。

但是代码抛出错误,表明ZCUSTPAR和ZCUSTPARG不在result_fields中。 这两个字段不过是主数据属性。

请提供帮助。

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

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


大家好

我想在我的最终例程中为客户主数据属性编写一个逻辑。 谁能告诉我是否可以在结束例程中为主数据属性编写逻辑。

我尝试了ABAP代码,但该代码无法正常工作。 请在下面找到代码。

从/BI0/PCUSTOMER中将客户/BIC/ZCUSTPAR/BIC/ZCUSTPARG选择到表IT_/BI0/PCUSTOMER中,以获取RESULT_PACKAGE中的所有条目,其中客户= Result_package-客户。

如果sy-subrc =0。

按客户对它_/BI0/PCUSTOMER进行排序。

ENDIF。

在Result_package ASSIGNING 处循环。

使用键Customer = wa_/BI0/PCUSTOMER-customer将表IT_/BI0/PCUSTOMER读入wa_/BI0/PCUSTOMER。

如果sy-subrc = 0。

如果 -zcustpar =``。

-zcustpar = wa_/BIO/PCUSTOMER-customer。

endif。

-zcustparg = -zcustpar。

endif。

如果 -customer + 7(3)='_IN'并且 -zcustpar =''。

<结果字段> -zcustpar = <结果字段> -customer + 0(7)。

endif。

如果 -customer + 7(3)='_IN'并且 -zcustparg =''。

<结果字段> -zcustparg = <结果字段> -zcustpar。 万一。

结束循环。

但是代码抛出错误,表明ZCUSTPAR和ZCUSTPARG不在result_fields中。 这两个字段不过是主数据属性。

请提供帮助。

付费偷看设置
发送
8条回答
大道至简
1楼-- · 2020-09-06 19:52

查看类型的定义。 您会看到与InfoObjects zcustpar和zcustparg相关的字段名称不仅是zcustpr和zcustparg。 它们的前缀是您错过的前缀。

您还可以在表/BIC/PZCUSTPAR和/BIC/ZCUSTPARG中看到正确的名称。

葫芦娃快救爷爷
2楼-- · 2020-09-06 19:58

请使用代码 粘贴代码时,在编辑器中单击按钮。 它使读取起来非常容易-特别是如果您花时间对其进行格式化-例如,使用内置的漂亮打印机。
请注意,每行一个abap语句。

您 应该如下定义您的表IT_/BI0/PCUSTOMER:

 DATA it_/bi0/pcustomer类型散列表/bi0/pcustomer
      

然后使用TABLE KEY将READ更改为READ ...,这要快得多。

您的SORT不会使您的程序运行更快。

此外,您还应该在选择中包含OBJVERS EQ'A'子句,否则您也会选择不活动的值

从/BI0/PCUSTOMER中选择客户/BIC/ZCUSTPAR/BIC/ZCUSTPARG
        进入表IT_/BI0/PCUSTOMER
        适用于RESULT_PACKAGE中的所有条目
        客户= Result_package-customer
          AND objvers ='A'。
 在Result_package ASSIGNING 处循环。
   将表IT_/BI0/PCUSTOMER读入wa_/BI0/PCUSTOMER
         使用表键Customer = wa_/BI0/PCUSTOMER-customer。
   如果sy-subrc = 0。
     如果 -zcustpar =''。
         -zcustpar = wa_/BIO/PCUSTOMER-客户。
     万一。
     <结果字段> -zcustparg = <结果字段> -zcustpar。
   万一。
   
   如果 -customer + 7(3)='_IN'并且 -zcustpar =''。
     <结果字段> -zcustpar = <结果字段> -customer + 0(7)。
   万一。

   如果 -customer + 7(3)='_IN'并且 -zcustparg =''。
      <结果字段> -zcustparg = <结果字段> -zcustpar。
   万一。
 结束循环。
 
lukcy2020
3楼-- · 2020-09-06 19:44

首先,检查result_field结构是否存在(查看结构_ty_s_TG_1)。

第二,检查例程的映射(如果这些字段位于 移出目标字段。

第三,我不明白为什么您需要例行程序。 您正在阅读客户主数据,以根据可靠的客户编号更新其自己的属性,那么为什么不创建公式规则来从源客户编号确定属性值呢?

clasier
4楼-- · 2020-09-06 19:45

发现得好!

一只江湖小虾
5楼-- · 2020-09-06 19:41

嗨,马修,

当有大量记录要读入内部表并进一步处理时,我仅使用哈希表。

排序表将比标准表花费更多的时间,而对标准表进行排序不会花费太多时间。

无论如何,他编写了没有BINARY SEARCH的READ表语句,并且在READ语句之前使用了SORT语句,因此为了使读取速度更快并更新正确的客户,我进行了更改以添加 二进制搜索。

@ Vignesh,

您可以检查代码运行时间并选择最佳解决方案。

问候,

Satya。

Climb_Ma
6楼-- · 2020-09-06 20:04

如果要从哈希表中读取数据,则应始终使用它们(如果您确实没有唯一的密钥,则排序)。 您担心开销。 事实是,只有在要运行很多次的循环中构造HASHED表时,开销才成为问题。

在这里情况并非如此。 在我从事ABAP编程的22年中,我从未遇到过这种情况。

作为ABAP编程的一般原则,如果使用HASHED表作为首选项,然后根据需要使用SORTED并最终使用STANDARD,则不会遇到性能问题。 如果这样做,那么您随时可以调整代码。

您找他对表进行排序的借口很弱。 如果您建议使用SORTED表,那么我会更接受您编写的内容,但是您正在积极提倡一种旧的编程方式,我认为这很糟糕。 永远不需要SORT/BINARY搜索。 使用排序表并输入21世纪。

哦,您应该阅读有关答案的文字。 "在回答之前 您只能在提出海报者问题的解决方案时提交答案。"您应该使用注释。

一周热门 更多>