什么是最佳ABAP逻辑? 2个内部表以及一个映射表。

2020-09-16 17:22发布

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

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


我有2张桌子; 我的Local表(包含300个字段)和Customer表(包含300个字段),以及一个映射表,用于将字段从Local表映射到Customer表。 在我的本地表中,大约有10000个条目,现在必须根据映射表将它们复制到客户表。

映射表可能会不时更改,因此解决方案必须是动态的。

两个文件中的字段名称完全不同,看起来像这样:

LOC_TAB(字段)

  • 用户名
  • 名字
  • field_0001
  • xyz_fld
  • …等等…

CUST_TAB(字段)

  • usrid
  • fname
  • tpid
  • 示例
  • …等等…

MAPPING_TAB

  • LOC名称CUST_name
  • 用户名已结束
  • 名字fname
  • field_0001示例
  • xyz_fld tpid
  • …等等…

因此,例如,必须将字段" userid"中的值传递到"客户"表中的字段" usrid"。 我可以做类似的事情:

LOC_TAB处的LOOP进入local_workarea。

在MAPPING_TAB处将LOOP放入map_workarea。

  • 这里有什么动态编码?

附加CUST_TAB吗????

ENDLOOP。

ENDLOOP。

问题是上述解决方案意味着要在我的映射表上为每个单个条目循环并在本地文件上循环。 我想不出更好的方法。:(

所有帮助深表感谢!

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

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


我有2张桌子; 我的Local表(包含300个字段)和Customer表(包含300个字段),以及一个映射表,用于将字段从Local表映射到Customer表。 在我的本地表中,大约有10000个条目,现在必须根据映射表将它们复制到客户表。

映射表可能会不时更改,因此解决方案必须是动态的。

两个文件中的字段名称完全不同,看起来像这样:

LOC_TAB(字段)

  • 用户名
  • 名字
  • field_0001
  • xyz_fld
  • …等等…

CUST_TAB(字段)

  • usrid
  • fname
  • tpid
  • 示例
  • …等等…

MAPPING_TAB

  • LOC名称CUST_name
  • 用户名已结束
  • 名字fname
  • field_0001示例
  • xyz_fld tpid
  • …等等…

因此,例如,必须将字段" userid"中的值传递到"客户"表中的字段" usrid"。 我可以做类似的事情:

LOC_TAB处的LOOP进入local_workarea。

在MAPPING_TAB处将LOOP放入map_workarea。

  • 这里有什么动态编码?

附加CUST_TAB吗????

ENDLOOP。

ENDLOOP。

问题是上述解决方案意味着要在我的映射表上为每个单个条目循环并在本地文件上循环。 我想不出更好的方法。:(

所有帮助深表感谢!

付费偷看设置
发送
4条回答
灬番茄
1楼 · 2020-09-16 17:56.采纳回答
 LOOP AT source_tab分配。
   将初始行追加到target_tab ASSIGNING 。
   LOOP AT mapping_table INTO映射。
     将结构分配到的组件(地图源)。
     将结构<目标行>分配给<目标字段>的组件(地图目标)。
      = 。
   结局。
 ENDLOOP。

未经测试或语法验证,但应该可以带给您基本概念。

落灬小鱼
2楼-- · 2020-09-16 17:51

没有愚蠢的问题。 尽管有很多好奇的白痴,但我不认为你是其中之一。 精心构造的非FAQ基本问题受到我的欢迎。

clever101
3楼-- · 2020-09-16 18:06

在MAPRESING中使用CORRESPONDING运算符还是在CL_ABAP_CORRESPONDING中使用?

https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abencorresponding.htm

野沐沐
4楼-- · 2020-09-16 18:01

我认为这应该可行 :

选择source_col,target_col
  来自MAPPING_TAB
  插入表@DATA(lt_mab)。

 循环到lt_mab INTO DATA(ls_mab)。
  如果lv_sel是INITIAL。
  lv_sel = | {ls_mab-source_col} AS {ls_mab-target_col} |。
  其他。
  lv_sel = | {lv_sel},{ls_mab-source_col} AS {ls_mab-target_col} |。
  万一。
 结局。
 从LOC_TAB选择(LV_SEL)到表@DATA(lt_target)中。
 
 从lt_target更新CUST_TAB。

一周热门 更多>