分配组件到底有什么用?

2020-09-30 03:16发布

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

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


嗨朋友,

我想知道分配组件的确切用途是什么……

下面是我用来更新工作区和内部表中的值的代码。

但我的疑问是,我们可以通过将价值传递给工作区域本身来直接做到这一点。

喜欢......

从but000中选择*到表gt_tab中,最多10行。

 循环到gt_tab分配 -bpkind ='SOMENAME'。
 结束循环。

为什么我们在这里使用分配组件......

两者都在做同样的工作...我们可以通过直接传递或使用assign组件来完成....

从but000中选择*到表gt_tab中,最多10行。

 循环到gt_tab分配。
   将结构的组件'BPKIND'分配给 ='SOMENAME'。
 结束循环。

请帮助我...

谢谢

Divi。

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

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


嗨朋友,

我想知道分配组件的确切用途是什么……

下面是我用来更新工作区和内部表中的值的代码。

但我的疑问是,我们可以通过将价值传递给工作区域本身来直接做到这一点。

喜欢......

从but000中选择*到表gt_tab中,最多10行。

 循环到gt_tab分配 -bpkind ='SOMENAME'。
 结束循环。

为什么我们在这里使用分配组件......

两者都在做同样的工作...我们可以通过直接传递或使用assign组件来完成....

从but000中选择*到表gt_tab中,最多10行。

 循环到gt_tab分配。
   将结构的组件'BPKIND'分配给 ='SOMENAME'。
 结束循环。

请帮助我...

谢谢

Divi。

付费偷看设置
发送
9条回答
梦想连接
1楼 · 2020-09-30 04:15.采纳回答

嗨Divi,

如果您不知道要更新值的内部表中的字段名称,则在执行程序之前(如TYPE ANY一样动态),您将使用ASSIGN COMPONENT。 在下面的示例中,根据输入的参数字段名称,我们将数据分配给内部表中的特定字段。

数据:行开始,
col1类型i值11,
col2类型i值22,
col3类型i值33,
行尾。

参数:p_field TYPE C。

FIELD-SYMBOLS:类型ANY,类型ANY,类型ANY。

ASSIGN行TO
ASSIGN p_field至

做3次。
将结构分配到的组件索引。

ENDDO。

分配结构的
写/

SC_Yao
2楼-- · 2020-09-30 04:11

谢谢venkatesh ...现在非常清楚。

愤怒的猪头君
3楼-- · 2020-09-30 04:08

要自己了解,

  1. 阅读关于语句LOOP ASSIGNING 和MODIFY(itab)的联机/F1文档
  2. 想想"动态"

致谢,
雷蒙德

Bunny_CDM
4楼-- · 2020-09-30 04:07

谢谢霍斯特

宇峰
5楼-- · 2020-09-30 04:22

如果可以静态完成 (直接),您不需要ASSIGN COMPONENT。

如果必须动态编程,即仅在运行时(而不是在编译时)知道组件的名称或位置,则可以使用ASSIGN COMPONENT。

也许看看以下内容:

http://help.sap.com/abapdocu_751/ zh_cn/index.htm?file = abendyn_access_data_obj_guidl.htm

天桥码农
6楼-- · 2020-09-30 04:00

感谢Ricardo提供示例和说明:)...我第一次使用Assign组件... 现在非常清楚了……

ZJXianG
7楼-- · 2020-09-30 03:57

嗨,


您也可以将其与字段索引一起使用,这里有一些信息;

http://help.sap.com/SAPhelp_nw70/ helpdata/zh-CN/fc/eb3923358411d1829f0000e829fbfe/content.htm

就像雷蒙德所说的那样,认为"动态"。

例如,图像中有一个具有以下结构的表,其中有一个具有表名的字段,而另一个具有内容的字段;

类型:
    开始于tys_data,
      tabname TYPE标签名,
      内容类型EDI_SDATA,
    结束于tys_data,
    tyt_data类型标准表tys_data。

您知道将始终需要打印一个名为LIFNR的字段。 但是您不知道每个记录中表的名称。

您可以执行以下操作;

为每种表类型创建一个变量; (尽管也许您在"设计"时不知道所有表类型)

数据:
     lt_data TYPE tyt_data,
     ls_lfa1 TYPE lfa1,
     ls_lfb1 TYPE lfb1,
     ls_ekko TYPE ekko。
 * ...


    字段符号:
      TYPE tys_data。


   循环lt_data
     分配。

     情况 -tabname。
       当" LFA1"时。
         将-内容移动到ls_lfa1。
         写:\ ls_lfa1-lifnr。

       当" LFB1"时。
         将-内容移动到ls_lfb1。
         写:\ ls_lfb1-lifnr。

       当" EKKO"。
         将-内容移动到ls_ekko。
         写:\ ls_ekko-lifnr。

 * ...

       当别人。

     结束。

   ENDLOOP。

或者您可以像这样动态地进行操作:

数据:
     lo_content TYPE REF TO数据,
     lt_data TYPE tyt_data。

    字段符号:
      TYPE tys_data,
      TYPE任意,
      TYPE任意。

   循环lt_data
     分配。

     创建数据lo_content TYPE( -tabname)。
     检查sy-subrc EQ 0。

     ASSIGN lo_content-> * TO 。
     检查sy-subrc EQ 0。

     将结构的组件" LIFNR"分配给。
     检查sy-subrc EQ 0。

     写:。

   ENDLOOP。

这只是一个愚蠢的例子,但是您可以弄清楚该怎么做。

此致

里卡多。

一周热门 更多>