为什么会出现运行时错误 DBSQL_DBSL_LENGTH_ERROR?

时间:2021-06-10 20:58:27

标签: abap

我有以下代码:

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_stocTYPE TABLE OF zsd_stock_list,字段长度不匹配怎么办?

0 个答案:

没有答案