короткий дамп: символ поля еще не был назначен - PullRequest
2 голосов
/ 08 февраля 2012

Я получаю короткий дамп (символ поля еще не был назначен), когда я запускаю эту программу. Я знаю, что могу получить эту ошибку, если не правильно заполню t_fieldcat. Насколько я знаю, я правильно заполнил каталог полей.

Я не могу понять, где проблема .. Пожалуйста, помогите.

REPORT  Y_ALV1.

type-pools slis.
tables: scarr.

data:
      t_scarr type table of scarr,
      t_fieldcat type slis_t_fieldcat_alv.

data:
      wa_fieldcat type slis_fieldcat_alv.

select-options:
      s_carrid for scarr-carrid.

start-of-selection.
      select * into table t_scarr from scarr where carrid in s_carrid.
        if sy-subrc ne 0.
          leave list-processing.
          endif.

define fill_fieldcatalog.
  wa_fieldcat-col_pos = &1.
  wa_fieldcat-fieldname = &2.
  wa_fieldcat-tabname = &3.
  wa_fieldcat-outputlen = &4.

  append wa_fieldcat to t_fieldcat.

  end-of-definition.


  fill_fieldcatalog 1 'carrid' 't_scarr' 10.
  fill_fieldcatalog 2 'carrname' 't_scarr' 10.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
   EXPORTING
      IT_FIELDCAT                    = t_fieldcat
    TABLES
      T_OUTTAB                       = t_scarr
   EXCEPTIONS
     PROGRAM_ERROR                  = 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.

Ответы [ 2 ]

4 голосов
/ 08 февраля 2012

К сожалению, дело здесь имеет значение.Измените следующие строки:

fill_fieldcatalog 1 'carrid' 't_scarr' 10.
fill_fieldcatalog 2 'carrname' 't_scarr' 10.

на

fill_fieldcatalog 1 'CARRID' 't_scarr' 10.
fill_fieldcatalog 2 'CARRNAME' 't_scarr' 10.
1 голос
/ 10 февраля 2012

Другой вариант - сделать перевод в верхний регистр в вашем макросе.Таким образом, вы никогда не совершите ошибку при ее вызове.

wa_fieldcat-fieldname = &2.
TRANSLATE wa_fieldcat-fieldname TO UPPER CASE.
wa_fieldcat-tabname = &3.
TRANSLATE wa_fieldcat-tabname TO UPPER CASE.
...