如何将多个内部表数据下载到一个Excel中的多个工作表中。

2020-08-27 00:58发布

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

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


此处已下载excel,但在excel中我没有值。

 包括ole2incl。

   类型:ty_bseg1的开始,

           belnr TYPE belnr_d,

           gjahr TYPE bseg-gjahr,

           lifnr TYPE bseg-lifnr,

           wrbtr TYPE wrbtr,

           hkont TYPE bseg-hkont,

         结束于ty_bseg1。

   类型:ty_t012k1的开始,

           hbkid TYPE t012k-hbkid,

           hktid TYPE t012k-hktid,

           bankn TYPE t012k-bankn,

         结束于ty_t012k1。

   类型:ty_lfbk1的开始,

           银行类型lfbk-banks,

           银行类型lfbk-bankl,

           bankl1 TYPE lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           bvtyp TYPE lfbk-bvtyp,

           KOINH TYPE LFBK-KOINH,

           v_blank TYPE char20,



         ty_lfbk1结束。

   TYPES:开始于ty_temp,

           wrbtr(12)C型,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(70)TYPE C,

         结束时间ty_temp。



   TYPES:开始于ty_temp1,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           KOINH TYPE LFBK-KOINH,

           wrbtr TYPE wrbtr,

         结束于ty_temp1。



   类型:ty_print的开始,

           wrbtr TYPE wrbtr,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(100)TYPE C,

         ty_print的结尾。



   TYPE:BEGIN OF ty_print1,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           KOINH TYPE LFBK-KOINH,

           wrbtr TYPE wrbtr,

         ty_print1结束。



 类型:Itab的开始,

           wrbtr TYPE wrbtr,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(100)TYPE C,

         Itab的结尾。



   数据:应用程序类型ole2_object,

         工作簿类型ole2_object,

         工作表TYPE ole2_object,

         单元格类型ole2_object。



   常量:row_max TYPE i VALUE 256。

    数据:v_col类型i。

   数据索引类型i。

   数据:ty_temp1初始大小1的it_temp1类型标准表,

          wa_temp1类型ty_temp1。

   数据:ty_print1初始大小1的it_print1类型标准表,

          wa_print1类型ty_temp1。



   数据:ty_temp初始大小为1的it_temp类型标准表,

          wa_temp TYPE ty_temp。

   数据:ty_temp初始大小为1的it_print类型标准表,

          wa_print TYPE ty_temp。

    数据:使用HEADER LINE的it_get LINE_TYPE TYPE TABLE。

   数据:v_con(100)类型c。

 选择包

           贝恩

           杰尔

           布泽

           科阿特

           k

           dmbtr

           wrbtr

           萨克纳

           赫康特

           nn

           lifnr

           bvtyp

           从bseg到表it_bseg的nebtr

     s_belnr中的belnr和s_gjahr中的gjahr。

   如果it_bseg不是INITIAL。

     选择包

         hbkid

         hktid

         班恩

         从t012k到表it_t012k中的hkont,用于it_bseg中的所有条目

       在哪里hkont = it_bseg-hkont。

   万一。

   如果it_bseg不是INITIAL。

     从lfbk中选择lifnr银行bankl bankn bvtyp koinh到表it_lfbk

       对于it_bseg中所有条目,lifnr = it_bseg-lifnr。

     如果sy-subrc <> 0。

       MESSAGE"找不到数据"类型" I"。

     万一。

   万一。

   删除it_bseg,其中lifnr处于初始状态。

   循环到it_bseg INTO wa_bseg。

     wa_temp-wrbtr = wa_bseg-wrbtr。

     wa_temp1-wrbtr = wa_bseg-wrbtr。

     使用键hkont = wa_bseg-hkont二进制搜索将表it_t012k读入wa_t012k。

     wa_temp-bankn1 = wa_t012k-bankn。

     使用键lifnr = wa_bseg-lifnr二进制搜索将表it_lfbk读入wa_lfbk。

     wa_temp-bankl = wa_lfbk-bankl。

     wa_temp1-bankl = wa_lfbk-bankl。

     wa_temp-bankl1 + 0(4)= wa_lfbk-bankl。

     wa_temp-bankn2 = wa_lfbk-bankn。

     wa_temp1-bankn2 = wa_lfbk-bankn。

     wa_temp-v_blank = wa_temp-v_blank。

     wa_temp-koinh = wa_lfbk-koinh。

     wa_temp1-koinh = wa_lfbk-koinh。

     wa_temp-info1 ='来自3F Industries Ltd.的Ac付款"。

     wa_temp-info2 ='3F Industries Limited'。

     链接wa_temp-wrbtr wa_temp-bankn1 wa_temp-bankl wa_temp-bankl1 wa_temp-bankn2 wa_temp-v_blank

                 wa_temp-koinh wa_temp-info1 wa_temp-info2 INTO v_con由"-"分隔。

     wa_temp-v_con = v_con。

   结局。

   将wa_temp附加到it_print。

   将wa_temp1附加到it_print1。



 创建对象应用程序" excel.application"。

   设置应用程序"可见"的属性= 1。

   应用程序"工作簿"的调用方法=工作簿。

   工作簿"添加"的调用方法。

   申请方法"工作表" =工作表

                                导出#1 = 1。

   表格"激活"的呼叫方法。

   设置工作表的属性"名称" =" Sheet1"。

   清除v_col。

   将it_print循环到wa_print中。

      v_col = 1。

       使用v_col 1 wa_print-wrbtr执行fill_cell。

       使用v_col 2 wa_print-bankn1执行fill_cell。

       使用v_col 3 wa_print-bankn2执行fill_cell。

       使用v_col 4 wa_print-v_blank执行fill_cell。

       使用v_col 5 wa_print-koinh执行fill_cell。

        使用v_col 6 wa_print-bankl1执行fill_cell。

         使用v_col 7 wa_print-info1执行fill_cell。

         使用v_col 8 wa_print-info2执行fill_cell。

         使用v_col 8 wa_print-v_con执行fill_cell。
   结局。

   工作表"另存为"的调用方法

                   导出#1 ='c:\ temp \ excelgeet.xls'"文件名

                             #2 =1。" fileFormat

  设置应用程序"可见"的属性= 0。

  设置应用程序" DisplayAlerts"的属性= 0。

    免费的对象应用程序。


 使用行列val形成fill_cell。

    数据:应用程序类型ole2_object,

         工作簿类型ole2_object,

         工作表TYPE ole2_object,

         单元格类型ole2_object。



     表格"单元格"的调用方法=单元格导出#1 =行#9 =列。

     设置单元格的属性"值" = val。

    最终形式。



 

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

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


此处已下载excel,但在excel中我没有值。

 包括ole2incl。

   类型:ty_bseg1的开始,

           belnr TYPE belnr_d,

           gjahr TYPE bseg-gjahr,

           lifnr TYPE bseg-lifnr,

           wrbtr TYPE wrbtr,

           hkont TYPE bseg-hkont,

         结束于ty_bseg1。

   类型:ty_t012k1的开始,

           hbkid TYPE t012k-hbkid,

           hktid TYPE t012k-hktid,

           bankn TYPE t012k-bankn,

         结束于ty_t012k1。

   类型:ty_lfbk1的开始,

           银行类型lfbk-banks,

           银行类型lfbk-bankl,

           bankl1 TYPE lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           bvtyp TYPE lfbk-bvtyp,

           KOINH TYPE LFBK-KOINH,

           v_blank TYPE char20,



         ty_lfbk1结束。

   TYPES:开始于ty_temp,

           wrbtr(12)C型,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(70)TYPE C,

         结束时间ty_temp。



   TYPES:开始于ty_temp1,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           KOINH TYPE LFBK-KOINH,

           wrbtr TYPE wrbtr,

         结束于ty_temp1。



   类型:ty_print的开始,

           wrbtr TYPE wrbtr,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(100)TYPE C,

         ty_print的结尾。



   TYPE:BEGIN OF ty_print1,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           KOINH TYPE LFBK-KOINH,

           wrbtr TYPE wrbtr,

         ty_print1结束。



 类型:Itab的开始,

           wrbtr TYPE wrbtr,

           bankn1 TYPE t012k-bankn,

           银行类型lfbk-bankl,

           bankn2 TYPE t012k-bankn,

           v_blank TYPE char20,

           KOINH TYPE LFBK-KOINH,

           bankl1 TYPE lfbk-bankl,

           info1 TYPE char30,

           info2 TYPE char30,

           v_con(100)TYPE C,

         Itab的结尾。



   数据:应用程序类型ole2_object,

         工作簿类型ole2_object,

         工作表TYPE ole2_object,

         单元格类型ole2_object。



   常量:row_max TYPE i VALUE 256。

    数据:v_col类型i。

   数据索引类型i。

   数据:ty_temp1初始大小1的it_temp1类型标准表,

          wa_temp1类型ty_temp1。

   数据:ty_print1初始大小1的it_print1类型标准表,

          wa_print1类型ty_temp1。



   数据:ty_temp初始大小为1的it_temp类型标准表,

          wa_temp TYPE ty_temp。

   数据:ty_temp初始大小为1的it_print类型标准表,

          wa_print TYPE ty_temp。

    数据:使用HEADER LINE的it_get LINE_TYPE TYPE TABLE。

   数据:v_con(100)类型c。

 选择包

           贝恩

           杰尔

           布泽

           科阿特

           k

           dmbtr

           wrbtr

           萨克纳

           赫康特

           nn

           lifnr

           bvtyp

           从bseg到表it_bseg的nebtr

     s_belnr中的belnr和s_gjahr中的gjahr。

   如果it_bseg不是INITIAL。

     选择包

         hbkid

         hktid

         班恩

         从t012k到表it_t012k中的hkont,用于it_bseg中的所有条目

       在哪里hkont = it_bseg-hkont。

   万一。

   如果it_bseg不是INITIAL。

     从lfbk中选择lifnr银行bankl bankn bvtyp koinh到表it_lfbk

       对于it_bseg中所有条目,lifnr = it_bseg-lifnr。

     如果sy-subrc <> 0。

       MESSAGE"找不到数据"类型" I"。

     万一。

   万一。

   删除it_bseg,其中lifnr处于初始状态。

   循环到it_bseg INTO wa_bseg。

     wa_temp-wrbtr = wa_bseg-wrbtr。

     wa_temp1-wrbtr = wa_bseg-wrbtr。

     使用键hkont = wa_bseg-hkont二进制搜索将表it_t012k读入wa_t012k。

     wa_temp-bankn1 = wa_t012k-bankn。

     使用键lifnr = wa_bseg-lifnr二进制搜索将表it_lfbk读入wa_lfbk。

     wa_temp-bankl = wa_lfbk-bankl。

     wa_temp1-bankl = wa_lfbk-bankl。

     wa_temp-bankl1 + 0(4)= wa_lfbk-bankl。

     wa_temp-bankn2 = wa_lfbk-bankn。

     wa_temp1-bankn2 = wa_lfbk-bankn。

     wa_temp-v_blank = wa_temp-v_blank。

     wa_temp-koinh = wa_lfbk-koinh。

     wa_temp1-koinh = wa_lfbk-koinh。

     wa_temp-info1 ='来自3F Industries Ltd.的Ac付款"。

     wa_temp-info2 ='3F Industries Limited'。

     链接wa_temp-wrbtr wa_temp-bankn1 wa_temp-bankl wa_temp-bankl1 wa_temp-bankn2 wa_temp-v_blank

                 wa_temp-koinh wa_temp-info1 wa_temp-info2 INTO v_con由"-"分隔。

     wa_temp-v_con = v_con。

   结局。

   将wa_temp附加到it_print。

   将wa_temp1附加到it_print1。



 创建对象应用程序" excel.application"。

   设置应用程序"可见"的属性= 1。

   应用程序"工作簿"的调用方法=工作簿。

   工作簿"添加"的调用方法。

   申请方法"工作表" =工作表

                                导出#1 = 1。

   表格"激活"的呼叫方法。

   设置工作表的属性"名称" =" Sheet1"。

   清除v_col。

   将it_print循环到wa_print中。

      v_col = 1。

       使用v_col 1 wa_print-wrbtr执行fill_cell。

       使用v_col 2 wa_print-bankn1执行fill_cell。

       使用v_col 3 wa_print-bankn2执行fill_cell。

       使用v_col 4 wa_print-v_blank执行fill_cell。

       使用v_col 5 wa_print-koinh执行fill_cell。

        使用v_col 6 wa_print-bankl1执行fill_cell。

         使用v_col 7 wa_print-info1执行fill_cell。

         使用v_col 8 wa_print-info2执行fill_cell。

         使用v_col 8 wa_print-v_con执行fill_cell。
   结局。

   工作表"另存为"的调用方法

                   导出#1 ='c:\ temp \ excelgeet.xls'"文件名

                             #2 =1。" fileFormat

  设置应用程序"可见"的属性= 0。

  设置应用程序" DisplayAlerts"的属性= 0。

    免费的对象应用程序。


 使用行列val形成fill_cell。

    数据:应用程序类型ole2_object,

         工作簿类型ole2_object,

         工作表TYPE ole2_object,

         单元格类型ole2_object。



     表格"单元格"的调用方法=单元格导出#1 =行#9 =列。

     设置单元格的属性"值" = val。

    最终形式。



 
付费偷看设置
发送
7条回答
N-Moskvin
1楼-- · 2020-08-27 01:25

您好 SHUBhAM TAKLIKAR

您的工作表似乎有问题

在相应位置尝试以下代码。

 DATA:go_excel TYPE ole2_object,
 lo_mapl TYPE ole2_object,
 lo_map TYPE ole2_object,
 lo_worksheet TYPE ole2_object。

   创建对象go_excel'EXCEL.APPLICATION'。
   go_excel"工作簿"的调用方法= lo_mapl。
   设置go_excel的"可见"属性= 1。
   lo_mapl的调用方法"添加" = lo_map。
   获得go_excel'ACTIVESHEET'= lo_worksheet的属性。
   lo_worksheet的SET属性"名称" =" Sheet1"。
 ******************************************************  **************************************
 表格"单元格"的调用方法=单元格导出#1 =行#9 =列。  <-错误#9
 表格"单元格"的调用方法=单元格导出#1 =行#2 =列。  <-使用#2
 
me_for_i
2楼-- · 2020-08-27 01:15

只需使用 abap2xlsx (速度更快,可在后台运行 ,提供的演示程序,更少的代码...)

Nir深蓝
3楼-- · 2020-08-27 01:13

您应该使用 abap2xlsx

如果您需要执行相同操作,请参考以下链接。 您会得到您想念的东西

将表格下载到Excel中的多个工作表中

Doze时光
4楼-- · 2020-08-27 01:16

您的代码的一个大问题是,每个OLE调用都可能发生错误,但您不知道在哪里 因为尚未验证SY-SUBRC。

lukcy2020
5楼-- · 2020-08-27 01:25

最终解决了问题。.

任何有类似要求的人,请参考此代码。

在itab1处循环。 连接itab1-wrbtr itab1-bankn1 itab1-bankl itab1-bankl1 itab1-bankn2 itab1-v_blank itab1-koinh itab1-info1 itab1-info2 itab1-v_con由熟食店分隔。 附加它。 串联'金额''发件人AC''Bene IFSC''Bene AC否''Bene Ac类型''Bene Ac名称''银行名称' "信息","汇款来源","批量上传数据"到v_send中,由熟食店分隔。 如果sy-tabix = 1。 将v_send插入其中INDEX 1。 万一。 清除:它,v_send。 结束循环。 在itab2上循环。 将itab2-bankl itab2-bankn2 itab2-koinh itab2-wrbtr连接到it_2中(由熟食店分隔)。 附加它_2。 将" IFSC","受益人A/C否","受益人A/C名称","金额"串联到DELI分隔的V_SEND1中。 如果sy-tabix = 1。 将V_SEND1插入到它_2索引1。 万一。 清除:it_2。 结束循环。 如果h_excel-header =空格或h_excel-handle = -1。 创建对象h_excel'EXCEL.APPLICATION'。 万一。 h_excel"工作簿"的调用方法= h_mapl。 设置h_excel"可见"的属性= 1。 h_mapl的呼叫方法'Add'= h_map。 gv_sheet_name ="银行上传"。 获得h_excel'ACTIVESHEET'=工作表的属性。 设置工作表的属性"名称" = gv_sheet_name。 h_excel"单元格"的调用方法= w_cell1 出口 #1 = 1 #2 = 1。 h_excel"单元格"的调用方法= w_cell2 出口 #1 = 1 #2 = 50。 h_excel的调用方法'范围'= h_cell 出口 #1 = w_cell1 #2 = w_cell2。 呼叫方法cl_gui_frontend_services => clipboard_export 输入 数据=它[] 改变 rc = l_rc 例外情况 cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 其他= 4。 h_excel"单元格"的调用方法= w_cell1 出口 #1 = 1 #2 = 1。 h_excel"单元格"的调用方法= w_cell2 出口 #1 = 1 #2 = 1。 h_excel的调用方法"范围" =范围 出口 #1 = w_cell1 #2 = w_cell2。 范围"选择"的调用方法。 呼叫工作表"粘贴"的方法。 ****************************************************** ************************ * h_mapl"添加"的呼叫方法= h_map。 gv_sheet_name ='附件'。 获得h_excel'Sheets'= h_sheet2的属性。 h_sheet2的呼叫方法"添加" = h_map。 设置h_map'Name'= gv_sheet_name的属性。 获得h_excel'ACTIVESHEET'=工作表的属性。 h_excel"单元格"的调用方法= w_cell1 出口 #1 = 1 #2 = 1。 h_excel"单元格"的调用方法= w_cell2 出口 #1 = 1 #2 = 50。 h_excel的调用方法'范围'= h_cell 出口 #1 = w_cell1 #2 = w_cell2。 呼叫方法cl_gui_frontend_services => clipboard_export 输入 数据= it_2 [] 改变 rc = l_rc 例外情况 cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 其他= 4。 h_excel"单元格"的调用方法= w_cell1 出口 #1 = 1 #2 = 1。 h_excel"单元格"的调用方法= w_cell2 出口 #1 = 1 #2 = 1。 h_excel的调用方法"范围" =范围 出口 #1 = w_cell1 #2 = w_cell2。 范围"选择"的调用方法。 呼叫工作表"粘贴"的方法。
lukcy2020
6楼-- · 2020-08-27 01:13

我正在尝试使用相同的代码,但下载的空白页是相同的。

一周热门 更多>