我有以下代码:
DATA: lt_matnr TYPE TABLE OF mara,
ls_matnr TYPE mara,
lv_werk TYPE werks_d VALUE 'WERK',
lt_stoc_int TYPE TABLE OF zmm_s_stock_list,
lt_stoc TYPE TABLE OF zsd_stock_list,
ls_stoc TYPE zsd_stock_list.
SELECT matnr
FROM mara
INTO CORRESPONDING FIELDS OF TABLE lt_matnr.
LOOP AT lt_matnr INTO ls_matnr.
CALL FUNCTION 'Z_MM_LIST_STOC_MATERIAL_WERKS'
EXPORTING
IP_MATNR = ls_matnr-matnr
IP_WERKS = lv_werk
IMPORTING
ET_STOCK_EXP = lt_stoc_int.
LOOP AT lt_stoc_int ASSIGNING FIELD-SYMBOL(<ls_stoc_int>).
MOVE-CORRESPONDING <ls_stoc_int> TO ls_stoc.
* + other data processing ...
APPEND ls_stoc TO lt_stoc.
ENDLOOP.
ENDLOOP.
INSERT zsd_stock_list FROM TABLE lt_stoc.
一切正常,直到 INSERT 语句出现以下短转储:
运行时错误:DBSQL_DBSL_LENGTH_ERROR
异常:CX_SY_OPEN_SQL_DB
错误分析: 发生了异常,下面将对其进行更详细的解释。这 分配给“CX_SY_OPEN_SQL_DB”类的异常未被捕获 因此导致运行时错误。 异常的原因是: 访问数据库时,ABAP 中的字段长度不 匹配相应数据库字段的大小。 例如,如果字符串绑定到数据库字段,就会发生这种情况 比当前字符串短。
没有意义,因为lt_stoc
是TYPE TABLE OF zsd_stock_list
,字段长度不匹配怎么办?