本地类方法中的内联声明

2020-09-02 17:51发布

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

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


 CLASS lcl_ewb定义。
   公共部分。
     方法:
       get_data,
       get_sd_invoice。
      " get_sd_invoice导出t_vbrk类型任何表-不起作用
 ENDCLASS。
 类别lcl_ewb的实现
 方法get_data。
     check_active_jobs()。
     如果gr_fkart不是INITIAL或gr_vbeln不是INITIAL。
       get_sd_invoice()。
       " get_sd_invoice(正在导入t_vbrk = data(gt_vbrk))-不起作用
       检查gt_vbrk是否不初始化
     万一。
   终结法。
 方法get_sd_invoice。
       SELECT vbeln,
              fkart,
              knumv,
              fkdat,
              belnr,
              杰尔
         来自vbrk
         插入表@DATA(lt_vbrk)
         vbeln在哪里@gr_vbeln
           和fkart IN @gr_fkart
           和fkdat IN @s_bldat
           AND Bukrs在@s_bukrs
           和@@ s_kunnr中的kunag。
       如果sy-subrc = 0。
         按vbeln排序lt_vbrk。
         t_vbrk = lt_vbrk。
       万一。
   终结法。
 ENDCLASS。

伙计们,

使用首次尝试使用的Inline声明时,我面临一个挑战。 我已经附上了代码片段。

在Local方法中,我正在使用内联声明将VBRK的访存写入ITAB。 此ITAB将是本地的,但我需要将此内部表全局用于其他方法。 如果在方法定义中使用IMPORTING参数,应如何声明内部表? 我尝试了ANY TABLE,但无法正常工作。 我不想在SE11中创建表类型并在此处使用它(这违背了使用Inline的目的)。

请帮助我找出我做错了什么,如果您对以更好的方式编写此逻辑有任何建议,请提及。

此致

NishanthVK

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

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


 CLASS lcl_ewb定义。
   公共部分。
     方法:
       get_data,
       get_sd_invoice。
      " get_sd_invoice导出t_vbrk类型任何表-不起作用
 ENDCLASS。
 类别lcl_ewb的实现
 方法get_data。
     check_active_jobs()。
     如果gr_fkart不是INITIAL或gr_vbeln不是INITIAL。
       get_sd_invoice()。
       " get_sd_invoice(正在导入t_vbrk = data(gt_vbrk))-不起作用
       检查gt_vbrk是否不初始化
     万一。
   终结法。
 方法get_sd_invoice。
       SELECT vbeln,
              fkart,
              knumv,
              fkdat,
              belnr,
              杰尔
         来自vbrk
         插入表@DATA(lt_vbrk)
         vbeln在哪里@gr_vbeln
           和fkart IN @gr_fkart
           和fkdat IN @s_bldat
           AND Bukrs在@s_bukrs
           和@@ s_kunnr中的kunag。
       如果sy-subrc = 0。
         按vbeln排序lt_vbrk。
         t_vbrk = lt_vbrk。
       万一。
   终结法。
 ENDCLASS。

伙计们,

使用首次尝试使用的Inline声明时,我面临一个挑战。 我已经附上了代码片段。

在Local方法中,我正在使用内联声明将VBRK的访存写入ITAB。 此ITAB将是本地的,但我需要将此内部表全局用于其他方法。 如果在方法定义中使用IMPORTING参数,应如何声明内部表? 我尝试了ANY TABLE,但无法正常工作。 我不想在SE11中创建表类型并在此处使用它(这违背了使用Inline的目的)。

请帮助我找出我做错了什么,如果您对以更好的方式编写此逻辑有任何建议,请提及。

此致

NishanthVK

付费偷看设置
发送
6条回答
Aaron 3364
1楼 · 2020-09-02 18:42.采纳回答
 CLASS lcl_ewb定义。
   公共部分。
     方法:
       get_sd_invoice导出eo_data类型REF TO数据,
       测试。
 ENDCLASS。
 类别lcl_ewb的实现。
   方法get_sd_invoice。

     数据:lo_data TYPE REF TO数据。
     FIELD-SYMBOLS:键入任何表。

     SELECT vbeln,
            fkart,
            knumv,
            fkdat,
            belnr,
            杰尔
       来自vbrk
       插入表@DATA(lt_vbrk)
       最多10行。
     如果sy-subrc = 0。
       按vbeln排序lt_vbrk。

       创建数据lo_data类似于lt_vbrk。
       如果lo_data已绑定。
         ASSIGN lo_data-> *至。
         如果已分配 = lt_vbrk []。
         万一。
         eo_data = lo_data。
       万一。
     万一。
   终结法。
   方法测试。

     数据:lo_data TYPE REF TO数据。
     字段符号:键入任何表。

     get_sd_invoice(
       输入
         eo_data = lo_data
     )。

     如果lo_data已绑定。
       ASSIGN lo_data-> *至。
       如果已分配。
         "-执行动作
       万一。
     万一。


   终结法。
 ENDCLASS。


 数据:go_obj类型参考为lcl_ewb。


 选择开始。

   创建对象go_obj。
   go_obj-> test()。
 

PS:发表评论后对代码进行了更改

SAP小菜
2楼-- · 2020-09-02 18:40

尊敬的拉米兹,

感谢您的快速答复和解决方案。 创建数据引用和使用字段符号工作正常。 当然,当选择查询更多时,这将变得复杂。 我只是对如何使用可以用作全局内部表的Inline声明感到好奇。 从现在开始,我将为最需要的ITab使用全局类型或本地类型,为本地需要的ITab使用内联类型。

此致

NishanthVK

shere_lin
3楼-- · 2020-09-02 18:39

使用Eclipse,有一个快速修复程序可以在本地转换宿主变量,并声明带有所有字段的类型。

如果没有的话

注意:在旧的后端编辑器中,您还可以使用"样式"按钮来选择" 具有字段的结构化数据对象",即从一个表中选择字段,并生成ABAP代码" BEGIN OF ... END OF ..."(但比Eclipse实用得多!)

空代码
4楼-- · 2020-09-02 18:31

嘿桑德拉

很抱歉没有提供反馈。 我当时不知道我在想什么,我也使用``带字段的结构化数据对象''选项来创建长结构,因为它将按顺序创建。 现在,我找到了Rammez的答案中给出的解决方案。

谢谢

此致

Nishanth VK

Aaron 3364
5楼-- · 2020-09-02 18:16

我更喜欢在字典中声明类型。

如果使用的是本地类,则可以在public部分中定义类型。

(是的,这里的内联声明没有用)

在您的代码中,定义一个返回变量/Structure/表。

(大多数情况下)需要导入方法并返回1。 否则,您将无法明确负责此方法。 这很糟糕,很糟糕,因为它不是干净的代码

jovirus
6楼-- · 2020-09-02 18:41

嘿弗雷德里克,

对不起,我没有提前提供反馈。

我将对大多数使用的内部表使用类型结构。

谢谢

此致

Nishanth VK

一周热门 更多>