ABAP 内表的定义,与PERFORM传值的定义
参考大姑寒武青峰 ,原链接https://blog.csdn.net/lmf496891416/article/details/117702217
1、手动定义
TYPES : BEGIN OF typ_alv , aufnr TYPE afpo-aufnr, "生产订单 auart TYPE aufk-auart, "订单类型 mes TYPE char200, END OF typ_alv . DATA : gs_alv TYPE typ_alv, "alv报表的结构,传一行数据的 gt_alv TYPE TABLE OF typ_alv. "ALV内表
2.包含表或者结构另外加上自定义字段作为结构
DATA BEGIN OF typ_alv . INCLUDE TYPE ztsd_kpsq ."包含自己创建表的所有字段 DATA VKGRP TYPE VBAK-vkgrp. DATA del TYPE c. "删除标记 DATA END OF typ_alv . DATA : gs_alv LIKE typ_alv, ""alv报表的结构,传一行数据的 gt_alv LIKE TABLE OF typ_alv. "ALV内表
现在很少定义带头的表了,因为它既可以是结构,也可以是内表,这样很容易混淆。比如:DATA gt_return LIKE bapi_matreturn2 OCCURS 0 WITH HEADER LINE.
二、abap7.5以上,DATA可以即时定义,建议在form中使用,很灵活。
1.SQL 语句中使用
SELECT * FROM sflight WHERE carrid = 'AA' INTO TABLE @DATA(lt_sflight) . "lt_sflight定义为含有SFLIGHT中所有字段的内表 SELECT SINGLE * from sflight where carrid = 'AA' INTO @DATA(ls_sflight) ."ls_sflight定义为含有SFLIGHT中所有字段的一行数据的工作区
2.LOOP 语句使用
LOOP AT lt_sflight INTO DATA(ls_sflight)."ls_sflight根据lt_sflight自适应的工作区 clear:ls_sflight。 ENDLOOP.
3.READ 中的使用
READ TABLE lt_sflight INTO DATA(LS_sflight) WITH KEY ........
4.临时自适应的变量
DATA(ilen) = strlen( IS_DATA )."查字段长度。
三.perform的使用方法
PERFORM f_clientdata TABLES lt_extensionin "填充CLIENTDATA lt_extensioninx USING ls_alv CHANGING gw_clientdatax gw_clientdata gw_bapi_te_marax gw_bapi_te_mara . FORM f_clientdata TABLES lt_extensionin STRUCTURE bapiparex lt_extensioninx STRUCTURE bapiparexx USING gs_alv TYPE zsmdm_matnr_detail CHANGING gw_clientdatax TYPE bapi_marax gw_clientdata TYPE bapi_mara gw_bapi_te_marax TYPE bapi_te_marax "声明客户端层次物料数据 gw_bapi_te_mara TYPE bapi_te_mara . "声明客户端层次物料数据 ENDFORM.
TABLES:把内表传入form中,内表值可以有变化
USING:只能传个一条数据的工作区进来,而且数据不能变化,强行变值,也传不出去。
CHANGING:传一条数据的工作区进来,值可以变化。
FORM 传值变量的定义
TABLES: 一般参考结构:内表 STRUCTURE 结构。
USING /CHANGING:
工作区 STRUCTURE 结构
工作区 LIKE 结构
工作区 TYPE 结构
这些都可以哟!
好了,分享使我快乐,我是萧静默