克隆表NAST中的记录

2020-09-15 18:06发布

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

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


大家好。

我有问题。

我在NAST表中有超过1000条记录,键KAPPL ='V5'和KSCHL ='ZRC1'。 其他关键领域并不重要。 我需要将此1000条记录克隆到其他键即1000条记录中,即

键KAPPL ='V5'和KSCHL ='ZRC1'的1000条记录===>键KAPPL ='V5'和KSCHL ='ZRC2'的1000条记录。

也许标准功能具有进行此克隆的工具?

p.s。 抱歉,我的英语不好。

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

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


大家好。

我有问题。

我在NAST表中有超过1000条记录,键KAPPL ='V5'和KSCHL ='ZRC1'。 其他关键领域并不重要。 我需要将此1000条记录克隆到其他键即1000条记录中,即

键KAPPL ='V5'和KSCHL ='ZRC1'的1000条记录===>键KAPPL ='V5'和KSCHL ='ZRC2'的1000条记录。

也许标准功能具有进行此克隆的工具?

p.s。 抱歉,我的英语不好。

付费偷看设置
发送
6条回答
nice_wp
1楼-- · 2020-09-15 18:40

对不起。 我们的顾问不想手动进行记录。 编写了程序。 源代码

表格:t685。

 数据:gv_error TYPE C,
       go_log类型参考zcl_log,
       gt_nast类型标准表。

 带有标题标题text-001的bl1块的选择屏幕开始。
 参数:p_kap_fr类型sna_kappl强制性,
             p_obj_fr TYPE na_objkey,
             p_ksc_fr类型sna_kschl义务。
 bl1的选择屏幕结尾。
 带有标题标题text-002的bl2块的选择屏幕开始。
 参数:p_kap_to类型sna_kappl强制性,
             p_ksc_to类型sna_kschl义务。
 块bl2的选择屏幕结束。

 选择开始。
   执行主要。

 选择结束。
   执行show_result。

 表格主要。
   go_log = zcl_log => factory()。

   执行check_sel_data。
   检查gv_error是否为INITIAL。

   执行get_data。

   检查gv_error是否为INITIAL。
   执行check_data。

   检查gv_error是否为INITIAL。
   执行prepare_data。

   执行save_data。

 ENDFORM。

 FORM check_sel_data。

   数据:lv_kap_to TYPE sy-msgv1,
         lv_ksc_to喜欢lv_kap_to。

   单选*
     从t685起
     哪里kvewe ='B'
       AND kappl = p_kap_to
       AND kschl = p_ksc_to。

   IF sy-subrc NE 0。
     gv_error = abap_true。

     将p_kap_to移动到lv_kap_to。
     将p_ksc_to移动到lv_ksc_to。

     go_log-> add(iv_msgty ='E'
                  iv_msgid ='ZMES_UTIL'
                  iv_msgno = 002
                  iv_msgv1 = lv_kap_to
                  iv_msgv2 = lv_ksc_to)。
   万一。

 ENDFORM。

 FORM get_data。

   数据:lt_where_tab(40)类型c。

   如果p_obj_fr不是INITIAL。
     lt_where_tab ='OBJKY = @P_OBJ_FR'。
   万一。

   选择 *
     进入表@gt_nast
     从纳斯特
     在哪里kappl = @p_kap_fr
       AND kschl = @p_ksc_fr
       AND(lt_where_tab)。

   如果gt_nast []是INITIAL。
     gv_error = abap_true。
     go_log-> add(iv_msgty ='E'
                  iv_msgid ='ZMES_UTIL'
                  iv_msgno = 000)。
   万一。

 ENDFORM。

 FORM check_data。

   数据:带有默认键的lt_nast类型标准列表
         lv_line_count类型sy-msgv1。

   选择NAST〜*
     进入表@lt_nast
     从纳斯特
     在哪里kappl = @p_kap_to
       AND kschl = @p_ksc_to。

   如果lt_nast []不是INITIAL。
     在lt_nast分配字段符号()处循环播放。
       读取表gt_nast分配字段符号()二进制搜索
         WITH KEY objky =  -objky
                  spras =  -spras
                  parnr =  -parnr
                  parvw =  -parvw
                  erdat =  -erdat
                  eruhr =  -eruhr。

       如果sy-subrc = 0。
          -kappl ='DL'。
       万一。
     结局。

     删除gt_nast WHERE kappl ='DL'。

   万一。

   如果gt_nast []是INITIAL。
     gv_error = abap_true。
     go_log-> add(iv_msgty ='E'
              iv_msgid ='ZMES_UTIL'
              iv_msgno = 000)。
   其他。
     描述表gt_nast LINES DATA(lv_count)。
     将lv_count移动到lv_line_count。
     go_log-> add(iv_msgty ='I'
              iv_msgid ='ZMES_UTIL'
              iv_msgno = 001
              iv_msgv1 = lv_line_count)。
   万一。

 ENDFORM。

 FORM prepare_data。

   在gt_nast分配字段符号()处循环播放。
      -kappl = p_kap_to。
      -kschl = p_ksc_to。
   结局。

 ENDFORM。

 FORM save_data。

   调用功能'Z _ ***** _ INSERT_NAST'在更新任务中
     出口
       it_nast = gt_nast。

 ENDFORM。

 FORM show_result。

   go_log-> display()。

 ENDFORM。
shere_lin
2楼-- · 2020-09-15 18:31

您好,真正的提案是什么?

以下 SAP文档解释了NAST表 和相应的处理。

关于

葫芦娃快救爷爷
3楼-- · 2020-09-15 18:36

问题已解决

SAP小菜
4楼-- · 2020-09-15 18:39

就像罗伯托一样,我想知道此练习的目的是什么,因为您提到了另一个关键 字段并不重要。 这些不重要的字段之一是OBJKEY,它链接到实际的文档,在您的情况下,该文档应该是输出组(VG02)。

您的任务是确定大量现有文档中的某些新输出类型吗? 如果是的话,那么您的职能顾问应该已经知道该如何处理,并且您不需要在ABAP中写任何花哨的东西。 您只需要配置输出过程,创建条件记录,维护打印参数运输等,确保可以在文档中自动确定输出。 然后,您所需要做的就是更改模式并保存。 对于一件如此简单的事情,甚至可以创建一个记录(VG02,输入文件编号,保存)并通过批处理输入来处理文件。 应该是一次活动的1000个文档还不足以证明需要开发人员参与。

落灬小鱼
5楼-- · 2020-09-15 18:36

一天中的好时光。 我会写得更准确。 其他关键字段也很重要,但是当我撰写此问题时,此关键字段并不重要。

很早以前,当我们将ERP系统集成到公司中时,就创建了1000多个记录,键KAPPL ='V5'和KSCHL ='ZRC1'。 现在您需要创建相同的1000条记录,但是KSCHL是" ZRC2"的值。

我看到两种方式:

1。 手动创建超过1000条记录。 但是很长。

2。 编写程序,她会做的。

Veseline和Roberto,谢谢您的回答。

能不能别闹
6楼-- · 2020-09-15 18:47

现在,请与我们分享您的解决方法。 毕竟,有两个人试图帮助您-为什么不帮助遇到相同或相似问题的人?

一周热门 更多>