select语句错误
- select a
- b
- c from <透明表> into table <内表> where <条件>.
- *字段必须要一一对应.否则会报错或者值平移
- select * from <透明表> into corresponding fields of table <内表> where <条件>.
- *虽然可以自动匹配可以避免错误但运行速度不如上一个.
ALV报表无报错却显示错误 (数据错位)
- define:catalog.
- clear wa_fieldcat.
- wa_fieldcat-fieldname = &1.
- wa_fieldcat-seltext_s = &2.
- append wa_fieldcat to gt_fieldcat.
- clear: wa_fieldcat.
- end-of-definition.
- catalog:
- 'KE' '循环',
- 'JR' '细节',
- 'Gh' '数据',
- 'shg' '酒店'.
- "这里因为单引号中没有大写不会报错
- "如果gh数据类型与jr一致则ALV二三行数据一模一样
https://www.cnblogs.com/clsoho/archive/2010/02/24/1672466.html
最近在使用函数 F4IF_INT_TABLE_VALUE_REQUEST时,出现了虽然弹出帮助对话框,确不显示选择值的问题。

也就是显示找到了条目,但是数据显示不出来。
原因是自定义表没有表头文本,内表结构里的字段不能用C类型,而应参照数据表里的字段类型。
此处改为"将type c改为 type char6,"即可!
最近在使用函数 F4IF_INT_TABLE_VALUE_REQUEST时,出现了虽然弹出帮助对话框,确不显示选择值的问题。
原因二value_org = 'S' 该参数未放开
最近在使用函数 F4IF_INT_TABLE_VALUE_REQUEST时,出现了虽然第一次弹出帮助对话框,但第一次之后确不显示选择值的问题。
引用对象赋值和定义要放在AT SELECTION-SCREEN ON VALUE-REQUEST FOR事件下执行
例如:
DATA:
lr_tabdescr TYPE REF TO cl_abap_structdescr,
* ls_value_tab TYPE REF TO DATA,
lt_dfies TYPE ddfields,
ls_dfies TYPE dfies,
lv_offset TYPE doffset,
ls_fieldcat TYPE lvc_s_fcat.
lr_tabdescr ?= cl_abap_structdescr=>describe_by_data( ls_value_tab ).
lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr )."用与搜索帮助联动
代码:
- TYPE-POOLS truxs.
- DATA:it_raw TYPE truxs_t_text_data.
-
- *定义一个内表来存储数据,内表的列数和要传得数据的列数要相同,其按照列来匹配传值
- DATA: BEGIN OF gt_data OCCURS 0,
- col1 TYPE char10,
- col2 TYPE char10,
- END OF gt_data.
-
-
- *生成一个parameters元素,给其加上on value-request事件(在parameters上点击F4时触发)
-
- PARAMETERS:p_file TYPE rlgrap-filename.
-
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
-
- CLEAR p_file.
-
- CALL FUNCTION 'F4_FILENAME'
- IMPORTING
- file_name = p_file."返回文件名
- *Excel传值
- START-OF-SELECTION.
- PERFORM exceltotab.
- LOOP AT gt_data.
- WRITE:/ gt_data-COL1,
- gt_data-COL2.
- ENDLOOP.
- *&---------------------------------------------------------------------*
- *& Form exceltotab
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM exceltotab .
- CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
- EXPORTING
- * I_FIELD_SEPERATOR =
- i_line_header = 'X'
- i_tab_raw_data = it_raw " WORK TABLE
- i_filename = p_file
- TABLES
- i_tab_converted_data = gt_data[] "ACTUAL DATA
- EXCEPTIONS
- conversion_failed = 1
- OTHERS = 2.
- IF sy-subrc <> 0.
- MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
- WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
- ENDIF.
- ENDFORM.

原因了,原来OFFICE2003重新安装一遍就好了。
does not begin with "FUNCTION-POOL" 解决办法之一-CSDN博客
刚自学,写abap,有一些小细节,不注意,出了问题,不知道为啥。总结一下。
出现上述问题,我的理解是函数必须有函数组,可能也包含函数组了,但是函数组没激活,就出现这个情况。
激活函数组,就好了。
abap,一切 都要 激活。
选择屏幕问题
- SELECTION-SCREEN COMMENT 01(54) TEXT-130.
- SELECTION-SCREEN COMMENT 01(54) TEXT-140 MODIF ID tex."
- SELECTION-SCREEN COMMENT 01(54) TEXT-150 MODIF ID tex.
- 连续两行文本会报错,原因文本会重叠的
解决方法
- SELECTION-SCREEN COMMENT 01(54) TEXT-130.
- SELECTION-SCREEN SKIP 1.
- SELECTION-SCREEN COMMENT 01(54) TEXT-140 MODIF ID tex."
- SELECTION-SCREEN SKIP 1.
- SELECTION-SCREEN COMMENT 01(54) TEXT-150 MODIF ID tex.
- 或者
- SELECTION-SCREEN COMMENT 01(54) TEXT-130.
- SELECTION-SCREEN BEGIN OF LINE.
- SELECTION-SCREEN COMMENT 01(54) TEXT-140 MODIF ID tex."
- SELECTION-SCREEN END OF LINE.
- SELECTION-SCREEN COMMENT 01(54) TEXT-150 MODIF ID tex.也可
这里需要定义MIME类型.




- SELECT
- carrid
- fldate
- price
- planetype
- paymentsum
- FROM sflight
- WHERE carrid IN s_carrid
- INTO CORRESPONDING FIELDS OF TABLE gt_out
- UP TO 20 ROWS.
![]()
- SELECT
- carrid,
- fldate,
- price,
- planetype,
- paymentsum
- FROM sflight
- WHERE carrid IN s_carrid
- INTO CORRESPONDING FIELDS OF TABLE @gt_out
- UP TO 20 ROWS.
![]()
正确写法
- SELECT
- carrid,
- fldate,
- price,
- planetype,
- paymentsum
- FROM sflight
- WHERE carrid IN @s_carrid
- INTO CORRESPONDING FIELDS OF TABLE @gt_out
- UP TO 20 ROWS.
想要回到最初始的结果
inner join 和全局内表不用@
或者
into * inner table放到from db之前呢
- SELECT
- carrid
- fldate
- price
- planetype
- paymentsum
- FROM sflight
- INTO CORRESPONDING FIELDS OF TABLE gt_out
- UP TO 20 ROWS
- WHERE carrid IN s_carrid.