首页 > 其他分享 >ABAP 跨Client 拷贝表数据

ABAP 跨Client 拷贝表数据

时间:2023-09-18 12:35:42浏览次数:39  
标签:lt alv ABAP Client ls tname table 拷贝 TYPE

REPORT  ztest_client_copy. 

 TYPE-POOLS:abap. 

 TABLES:dd02l. 

 SELECT-OPTIONS:s_name FOR dd02l-tabname NO INTERVALS. 

 PARAMETERS p_mandt1 TYPE mandt DEFAULT '600'. 

 PARAMETERS p_mandt2 TYPE mandt DEFAULT '700'. 





 TYPES:BEGIN OF ty_tname,tabname TYPE dd02l-tabname,END OF ty_tname. 

 DATA: lt_tname TYPE TABLE OF ty_tname , 

       ls_tname TYPE ty_tname. 



 DATA: d_ref TYPE REF TO data, 



 lt_alv_cat TYPE TABLE OF lvc_s_fcat, 



 ls_alv_cat LIKE LINE OF lt_alv_cat. 







 DATA: lt_table LIKE TABLE OF dntab. 



 DATA: ls_table TYPE dntab. 







 DATA: dyn_table TYPE REF TO data. 



 DATA: dyn_wa TYPE REF TO data. 





 FIELD-SYMBOLS : 



   <dyn_table> TYPE table, 



   <dyn_wa> TYPE ANY, 



   <dyn_field> TYPE ANY, 



   <fs_str> TYPE ANY. 



 *取出表结构的字段目录 





 *BREAK-POINT. 



 SELECT tabname INTO TABLE lt_tname FROM dd02l WHERE tabname IN s_name. 



 LOOP AT lt_tname INTO ls_tname. 





   CALL FUNCTION 'NAMETAB_GET' 

     EXPORTING 

       langu          = sy-langu 

       tabname        = ls_tname-tabname 

     TABLES 

       nametab        = lt_table 

     EXCEPTIONS 

       no_texts_found = 1. 



 *根据取出的字段目录生成参考字段目录 



   LOOP AT lt_table INTO ls_table. 



     ls_alv_cat-fieldname = ls_table-fieldname. 



     ls_alv_cat-ref_table = ls_tname-tabname. 



     ls_alv_cat-ref_field = ls_table-fieldname. 



     APPEND ls_alv_cat TO lt_alv_cat. 



     CLEAR: ls_alv_cat, 

            ls_table. 



   ENDLOOP. 



 *内表创建 



   CALL METHOD cl_alv_table_create=>create_dynamic_table 

     EXPORTING 

       it_fieldcatalog = lt_alv_cat 

     IMPORTING 

       ep_table        = d_ref. 



 *指定生成的内表到字段符号 



   ASSIGN d_ref->* TO <dyn_table>. 



 *创建动态工作区结构 



   CREATE DATA dyn_wa LIKE LINE OF <dyn_table>. 



 *创建动态工作区 



   ASSIGN dyn_wa->* TO <dyn_wa>. 





 *从动态表中取数到动态内表中 



   SELECT * INTO CORRESPONDING FIELDS OF TABLE <dyn_table> FROM (ls_tname-tabname)  CLIENT SPECIFIED   



 WHERE mandt = p_mandt1. 





   LOOP AT <dyn_table> ASSIGNING <dyn_wa>. 

     ASSIGN COMPONENT 'MANDT' OF STRUCTURE <dyn_wa> TO <fs_str>. 

     <fs_str> = p_mandt2. 

 *    append <dyn_wa> to <dyn_table>. 

   ENDLOOP. 



   MODIFY (ls_tname-tabname)  CLIENT SPECIFIED FROM TABLE <dyn_table>. 





   IF sy-subrc = 0. 

     WRITE:/  ls_tname-tabname , ' copy successfully'. 



   ENDIF. 



   CLEAR: ls_tname,lt_table,ls_table,lt_alv_cat,ls_alv_cat. 

   free d_ref. 

 ENDLOOP.

标签:lt,alv,ABAP,Client,ls,tname,table,拷贝,TYPE
From: https://blog.51cto.com/u_8215601/7508986

相关文章

  • ABAP中的F4帮助怎么用?
    当我们在sap的界面上,焦点放到一个字段上的时候,按F4,会出现选择或者搜索的界面,这就是abap中的f4帮助。 有多种实现f4帮助的方法,现在就把我指导的一点点说出来: 1, 固定值。 我们在Domain中可以定义valuerange,在valuerange中定义的值,就可以出现在f4帮助中。这是最简单的实......
  • abap 中 for all entries in 中的 distinct 功能
    用forallentriesin做查询的时候,能够进行自动的distinct,请看如下的例子:REPORTZ_LJC222.types:beginofty_mm,matnrtypemara-matnr,endofty_mm.types:beginofty_makt,matnrtypemara-matnr,sprastypemakt-spras,......
  • abap 中的 i 类型
    abap中的i类型的最大长度为 2147483647 那天程序出现了shortdumperror,仔细debug之后,发现将一个字符串赋给一个I类型的字段的时候导致的错误。 原来那个字符串转换成整数之后的长度大于2147483647 将那个字段的类型改成了P就不出现shortdump了。......
  • abap中 search 内表
        Search内表SEARCHdobjFORpattern  [IN{BYTE|CHARACTER}MODE]      [STARTINGATp1][ENDINGATp2]      [ABBREVIATED]      [ANDMARK].当指定了 Pos 和endingatPos之后。只会在指定的行中去找当指定了ABBREVIATE......
  • abap弹出对话框
    datax_anstypec.callfunction'POPUP_TO_CONFIRM_STEP'exportingDEFAULTOPTION='Y'textline1='thisisadog'TEXTLINE2=''titel='thatis......
  • JavaScript中的浅拷贝与深拷贝
    前言JavaScript中的浅拷贝和深拷贝是非常重要的概念,它们在处理对象和数组时具有不同的作用。在编程中,经常需要复制数据以便进行各种操作,但必须注意拷贝的方式,以确保得到预期的结果。浅拷贝是创建一个新对象或数组,并将原始对象或数组的引用复制给它。这意味着新对象和原始对象将......
  • 75-深浅拷贝-内存分析
      如,克隆一个人,只克隆我自己,我的儿子孙子没拷贝进来,就是浅拷贝浅拷贝只拷贝个人,而深拷贝是一个家庭     ......
  • 76-深浅拷贝-参数的传递-不可变对象含可变子对象-内存分析
        元组不可变,不支持给它的元素赋值      ......
  • vCenter 6.X无法提取请求的数据。有关详细信息,请查看 vSphere Client 日志
    vCenter6.X无法提取请求的数据。有关详细信息,请查看vSphereClient日志解释:根本原因是证书不一致,但是vc的证书和vsan他们不共用一个证书,所以需要保证集群证书的统一,当时由于vc的证书到期后,只替换了vc的sts证书,在替换了STS证书之后,可能会导致计算机SSL证书与该vCenterServer......
  • 如何使用 jest 测试使用 axios 的 httpClient?
    要使用Jest测试使用axios的httpClient,您可以使用Jest提供的模拟功能来伪造对外部API的请求和响应。下面是一个示例测试的代码:首先,安装所需的依赖:npminstallaxiosaxios-mock-adapterjest--save-dev然后,创建一个名为httpService.test.js的测试文件,编写以下代码:importaxiosfrom......