[ABAP技术总结]几个小问题

目录导航

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!
原文出自:

9.      问题... 79

9.1.           ALV自带导出文件时字段数据末尾被截断问题... 79

9.2.           Smartform 中Template无法显示减号后面内容... 80

9.3.           Smartform金额或者数量字段显示不出来... 80

9.4.           更新数据库表时,工作区或内表的结构需参考数据库表来定义... 80

9.5.           DELETE ADJACENT DUPLICATES…去重复... 80

9.6.           Text使用Excel打开乱码问题... 80

9.7.           VBFA与EKPO联合查询问题... 81

9.   问题

9.1.  ALV自带导出文件时字段数据末尾被截断问题

发现有前导0时,导出会被截断:现发现VBAK-VBELN 与 MARA-MFRNR都有这个问题,可能原因是他们带有转换输出与输入规则所导致

另一种解决办法:

 

9.2.  Smartform中Template无法显示减号后面内容

在Smartform中的Template里,如果输入的变量内容含有减号,则减号后面的内容会被丢掉

问题原因:输出的内容超出了Template单元格的长度

解决办法:更改TEMPLATE的长度,或者换成 TABLE

9.3.  Smartform金额或者数量字段显示不出来

9.4.  更新数据库表时,工作区或内表的结构需参考数据库表来定义

使用使用MODIFY更新数据库表时,工作区或内表的行结构与数据库表结构中各字段声明顺序要相同,否则更新会错位,该内表最好参照数据库词典结构类型来声明,这样就不会有问题。

9.5.  DELETE ADJACENT DUPLICATES…去重复

DELETE ADJACENT DUPLICATES FROM <itab> [COMPARING<f1><f2> ... | ALL FIELDS]

注,在未使用COMPARING 选项时,要删除重复数据之前,一定要按照内表关键字声明的顺序来进行排序,才能删除重复数据,否则不会删除掉;如果指定了COMPARING 选项,则需要根据指定的比较字段顺序进行排序(如COMPARING <F1><F2>时,则需要sort by <F1><F2>,而不能是sort by <F2><F1>),才能删除所有重复数据

9.6.  Text使用Excel打开乱码问题

如果使用GUI_DOWNLOAD函数下载文本文件,或者是发送邮件的附件,在英文XP操作系统中使用英文Excel软件打开时,请使用 UTF-16LE 编码,否则可能出现乱码情况。

data:  l_codepage(4) type n .
data:  l_encoding(20).
"根据编码名获取对应的CodePage
callfunction‘SCP_CODEPAGE_BY_EXTERNAL_NAME‘
EXPORTING
    external_name = ‘UTF-16LE‘
IMPORTING
    sap_codepage  = l_codepage.
l_encoding = l_codepage.

data: convout type ref to cl_abap_conv_out_ce.
convout = cl_abap_conv_out_ce=>create( encoding = l_encoding ).
convout->write( data = lv_content )."将字符按照l_encoding编码格式转换为X类型(二进制)
xstr =  convout->get_buffer( ).
"在码流最前面加上编码信息,该编码由文本编辑软件在打开文件时使用
concatenate cl_abap_char_utilities=>byte_order_mark_little
                 xstr into  xstr in byte mode.

9.7.  VBFA与EKPO联合查询问题

由于VBFA-POSNN 与 EKPO-EBELP字段的类型相同,但长度不一样(VBFA-POSNN是6位的数字类型,而EKPO-EBELP为5位数字类型,但VBAP-POSNR行项目号是6位数字类型,不会出现此类问题),所以它们不能进行关联查询,相似的还有VBFA- POSNV也是6位的。下面这个关联查询是查不出数据的,只能分两次查询:

SELECT SINGLE vbeln posnn txz01 menge
  INTO (it_result-ebeln, it_result-ebelp, it_result-txz01 , it_result-menge_2)
  FROM vbfa AS v INNER JOIN ekpo AS e ON v~vbeln = e~ebeln AND v~posnn = e~ebelp AND e~knttp = ‘E‘"Where条件是根据销售单查找前置单据——采购单,V为采购单凭证类型
  WHERE  vbelv = it_result-vbeln AND posnv = it_result-posnr  AND vbtyp_n = ‘V‘.

HNTTP:采购凭证中的帐户设置类型,E——生产/销售所需物料的采购

分成两个可以正常查询:

SELECT SINGLE vbeln posnn
  INTO (it_result-ebeln, it_result-ebelp)
  FROM vbfa AS v"Where条件是:先根据销售单查找到前置采购单的单号与行项目号
  WHERE  vbelv = it_result-vbeln AND posnv = it_result-posnr  AND vbtyp_n = ‘V‘.

SELECT SINGLE  txz01 menge
  INTO (it_result-txz01, it_result-menge_2)
  FROM ekpo"Where条件是:再根据前面查出来的采购单号与行项目号,查出EKPO其他详细信息
  WHERE  ebeln = it_result-ebeln AND ebelp = it_result-ebelp AND knttp= ‘E‘.

时间: 2024-11-11 20:03:24

[ABAP技术总结]几个小问题的相关文章

[SAP ABAP开发技术总结]几个小技巧

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 10.1.     让READ TABLE...WITH KEY可使用OR条件或其他非"="操作符 READ TABLE...WITH KEY... 后面不能接OR条件操作符,也不能使用其他非等于的比较操作符,因原是该语句即使在查询出多条时也只取第一条,所以限制了 WITH KEY 后面条件使用.下面是错误的语法: READ TABLE it_tab WITH

[ABAP技术总结]ALV

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 7.      ALV. 70 7.1.           Layout重要字段... 70 7.2.           FIELDCATALOG重要字段... 70 7.3.           指定双击触发的FunCode. 71 7.4.           相关函数... 71 7.5.           重要参数接口... 71 7.6.         

Android直播app用什么技术可以做到延迟小一些?

问题描述 请教一下各位老师,我想做一款android的直播软件,现在用的rtmp格式流,用了一个开源播放器.在浏览器播放该URL延迟在2.3秒,但是在Android上播放,延迟大概10秒,这个延迟时间太长了,严重影响我的功能,用什么技术能够将这个延迟控制短一些,能否达到2.3秒之内? 请大家给一些意见,比如用什么流格式(rtmp/m3u8),用什么传输协议,Android用自带的Player,还是用Webview加载HTML,或者用什么免费的播放器? 跪求,谢谢.现在主流的直播软件都是怎么搭配的

[ABAP技术总结]逻辑数据库

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 6.      逻辑数据库... 56 6.1.           组成... 56 6.2.           结构... 56 6.3.           选择屏幕(Selections)... 57 6.3.1.        PARAMETERS屏幕参数扩充... 58 6.3.2.        SELECTION-SCREEN格式化屏幕... 58 6.

[ABAP技术总结]内表

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 3.      内表... 33 3.1.           LOOP AT循环内表... 33 3.1.1.        SUM.. 34 3.1.2.        AT... ENDAT. 34 3.1.3.        自已实现AT... ENDAT. 37 3.2.           在LOOP AT中修改当前内表行... 39 3.2.1.      

[ABAP技术总结]面向对象

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 由于历史遗留原因,很多项目也还在使用老的ABAP过程化语句进行开发,但新的SAP很多的东西都已经通过类来实现了,比如BAPI(比类还早).BADI.ALV,还有很多东西都了已经通过类来重写了,所以为了与时俱进,还是使用类吧 2.      面向对象... 27 2.1.           类与接口定义... 27 2.1.1.        components. 27

20170111 ABAP技术小结(全半角转换)

DATA: it_po LIKE it_alv OCCURS 0 WITH HEADER LINE.********************************************************************************************TSTC SAP 事务代码表********************************************************************************************CE

[技术博客] 微信小程序的formid获取

微信小程序的formid获取 formId的触发 微信小程序可以通过收集用户的formid,获取formid给用户主动推送微信消息.获取formid有两个途径,一个是触发一次表单提交,或者触发一次支付行为.如果要给用户主动推送模板消息,就需要拿到足够多的formid. 用表单的方法一定需要绑定bindsubmit,button的form-type设置为submit,在js代码中可以通过e.detail.formId 获取formId. 实例: <form bindsubmit="submi

【华为云技术分享】基于小熊派STM32芯片的通过MQTT上报JSON数据到华为物联网平台的自动售货机Demo解析

[摘要] STM32的工程在文章末尾,可自行下载. 一.工程配置 1.MCU类型选择STM32L431RC 2.烧录器选择OpenOCD,参数 -f interface/stlink-v2-1.cfg -f target/stm32l4x.cfg 3.输出目录选择 LiteOS_Lab_STM32\targets\STM32L431_BearPi\GCC\appbuild 4.编译器Makefile选择 targets\STM32L431_BearPi\GCC\Makefile 5.平台参数配置