使用GUI上传时需要更改日期格式

2020-09-12 09:19发布

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

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


我正在做一个报告,将一个csv文件上传到自定义数据库表中,但是问题是在日期字段中我遇到了问题,因为我的csv中的值是DD/MM/YYYY,而一个SAP是 YYYY/MM/DD。

我需要以DD/MM/YYYY格式更改日期,因为当文件将被上传时它将具有该格式,您知道我如何使用gui上传来尝试使用某些功能模块,但是它们没有 对我不起作用,因为他们仍以sap默认格式显示日期。

csv文件中的日期为31/03/17,但检查数据库表中的条目时为17.3/.31/0

我现在的约会日期是

这是我的代码:

数据:z01_file_update的gt_upload类型表。
 数据:z01_file_update的gt_upload2类型表。
 数据:lv_file类型字符串。

   字段符号类似于gt_upload的行。

 类型:tab1的开始,

   str(255),

   tab1的末尾。

 tab1的数据itab1类型表。

   字段符号类似于itab1的行。

   数据:lit_filetable TYPE文件表,

          lv_rc TYPE i,

          fwa类型filetable行。
   呼叫方法cl_gui_frontend_services => file_open_dialog

     出口

       window_title ='查找文件'

 * DEFAULT_EXTENSION =

 * DEFAULT_FILENAME =

       file_filter ='*。*'

       initial_directory ='C:\'

 *多重选择=

 * WITH_ENCODING =

     改变

       file_table = lit_filetable

       rc = lv_rc

 * USER_ACTION =

 * FILE_ENCODING =

     例外情况

       file_open_dialog_failed = 1

       cntl_error = 2

       error_no_gui = 3

       not_supported_by_gui = 4

       其他= 5。

 将表lit_filetable读入fwa索引1。

 如果sy-subrc = 0。

 lv_file = fwa文件名。

 万一。


 调用方法cl_gui_frontend_services => gui_upload

   出口

     文件名= lv_file

     文件类型='DAT'

   改变

     data_tab = itab1

   例外情况

     file_open_error = 1

     file_read_error = 2

     no_batch = 3

     gui_refuse_filetransfer = 4

     invalid_type = 5

     no_authority = 6

     unknown_error = 7

     bad_data_format = 8

     header_not_allowed = 9

     spacer_not_allowed = 10

     header_too_long = 11

     unknown_dp_error = 12

     access_denied = 13

     dp_out_of_memory = 14

     disk_full = 15

     dp_timeout = 16

     not_supported_by_gui = 17

     error_no_gui = 18

     其他= 19

         。

 如果sy-subrc <> 0。

  消息"您做错了!" 像'I'一样键入'E'显示。

 万一。

   char50的数据dtab类型表。

   字段符号类似于dtab的行。


   在itab1循环,根据说明行从2开始分配。"。

     在<;处分割 到表dtab中。

     将初始行附加到gt_upload并分配。

     在dtab中循环,分配。

       案例sy-tabix。

         当1。

            -bukrs = 

         当2。

            -gjahr = 

         当3。

            -budat = 

         当4。

            -bldat = 

         当5。

            -blart = 

         当6。

            -belnr = 

         当7。

            -xblnr = 

         当8。

            -hkont = 

         当9。

            -sgtxt = 

         当10。

            -buzei = 

         当11。

            -dmbtr = 

         当12。

            -shkzg = 

         当13。

            -bschl = 

         当14。

            -umsks = 

         当15。

            -kostl = 

       尾箱。

     结束循环。

   结束循环。

 数据lv_line类型i。
 从z01_file_update中选择*到表gt_upload2中。
 描述表gt_upload2行lv_line。
 如果lv_line = 0。
 从表gt_upload插入z01_file_update接受重复的密钥。
 其他。
 从表gt_upload中删除z01_file_update。
 endif。

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

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


我正在做一个报告,将一个csv文件上传到自定义数据库表中,但是问题是在日期字段中我遇到了问题,因为我的csv中的值是DD/MM/YYYY,而一个SAP是 YYYY/MM/DD。

我需要以DD/MM/YYYY格式更改日期,因为当文件将被上传时它将具有该格式,您知道我如何使用gui上传来尝试使用某些功能模块,但是它们没有 对我不起作用,因为他们仍以sap默认格式显示日期。

csv文件中的日期为31/03/17,但检查数据库表中的条目时为17.3/.31/0

我现在的约会日期是

这是我的代码:

数据:z01_file_update的gt_upload类型表。
 数据:z01_file_update的gt_upload2类型表。
 数据:lv_file类型字符串。

   字段符号类似于gt_upload的行。

 类型:tab1的开始,

   str(255),

   tab1的末尾。

 tab1的数据itab1类型表。

   字段符号类似于itab1的行。

   数据:lit_filetable TYPE文件表,

          lv_rc TYPE i,

          fwa类型filetable行。
   呼叫方法cl_gui_frontend_services => file_open_dialog

     出口

       window_title ='查找文件'

 * DEFAULT_EXTENSION =

 * DEFAULT_FILENAME =

       file_filter ='*。*'

       initial_directory ='C:\'

 *多重选择=

 * WITH_ENCODING =

     改变

       file_table = lit_filetable

       rc = lv_rc

 * USER_ACTION =

 * FILE_ENCODING =

     例外情况

       file_open_dialog_failed = 1

       cntl_error = 2

       error_no_gui = 3

       not_supported_by_gui = 4

       其他= 5。

 将表lit_filetable读入fwa索引1。

 如果sy-subrc = 0。

 lv_file = fwa文件名。

 万一。


 调用方法cl_gui_frontend_services => gui_upload

   出口

     文件名= lv_file

     文件类型='DAT'

   改变

     data_tab = itab1

   例外情况

     file_open_error = 1

     file_read_error = 2

     no_batch = 3

     gui_refuse_filetransfer = 4

     invalid_type = 5

     no_authority = 6

     unknown_error = 7

     bad_data_format = 8

     header_not_allowed = 9

     spacer_not_allowed = 10

     header_too_long = 11

     unknown_dp_error = 12

     access_denied = 13

     dp_out_of_memory = 14

     disk_full = 15

     dp_timeout = 16

     not_supported_by_gui = 17

     error_no_gui = 18

     其他= 19

         。

 如果sy-subrc <> 0。

  消息"您做错了!" 像'I'一样键入'E'显示。

 万一。

   char50的数据dtab类型表。

   字段符号类似于dtab的行。


   在itab1循环,根据说明行从2开始分配。"。

     在<;处分割 到表dtab中。

     将初始行附加到gt_upload并分配。

     在dtab中循环,分配。

       案例sy-tabix。

         当1。

            -bukrs = 

         当2。

            -gjahr = 

         当3。

            -budat = 

         当4。

            -bldat = 

         当5。

            -blart = 

         当6。

            -belnr = 

         当7。

            -xblnr = 

         当8。

            -hkont = 

         当9。

            -sgtxt = 

         当10。

            -buzei = 

         当11。

            -dmbtr = 

         当12。

            -shkzg = 

         当13。

            -bschl = 

         当14。

            -umsks = 

         当15。

            -kostl = 

       尾箱。

     结束循环。

   结束循环。

 数据lv_line类型i。
 从z01_file_update中选择*到表gt_upload2中。
 描述表gt_upload2行lv_line。
 如果lv_line = 0。
 从表gt_upload插入z01_file_update接受重复的密钥。
 其他。
 从表gt_upload中删除z01_file_update。
 endif。
付费偷看设置
发送
5条回答
Violet凡
1楼 · 2020-09-12 10:11.采纳回答

为什么不只使用偏移量。

 date = | 20 { +6(2)} { +3(2)} {(2)  } |。

花点时间,直到不再有效为止:-)至少对于您的文件上传

Bunny_CDM
2楼-- · 2020-09-12 10:12

谢谢您为我工作!!

太Q了
3楼-- · 2020-09-12 10:02

在下一行放置一个断点,并检查传递了什么值

  -bldat = 
  -bldat = 

您还在表Z01_FILE_UPLOAD中使用了什么数据类型?

我可以看到您是直接从字段符号传递值,而不是在更新数据库表之前将日期转换为内部格式YYYYMMDD。

请参阅Florian的解决方案,您也可以使用它。

还要检查其他字段是否也有转换出口。 例如:BELNR。

槿木_熙
4楼-- · 2020-09-12 10:02

我已经使用了数据元素bldat

灬番茄
5楼-- · 2020-09-12 10:03

您应该使用转换功能模块。

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答