Skip to Content
0
Former Member
Dec 15, 2008 at 03:38 PM

Problem with FIELD SYMBOL upgrading from 46c to ECC6.0

29 Views

Hi people... i'm having big trouble making an upgrade from 4.6c to ECC6.0 with this portion of code of Z's programm.

In the line

 ASSIGN (w_field) TO <fs_field>. 

i don't see any assigment, so <fs_field> remains empty, when enters into firts IF conditions it is TRUE, then go into second IF condition, it is FALSE, and finally assing

 <fs_field> = '/'. 

, at this point i have a DUMP telling me MOVE_TO_LIT_NOTALLOWED_NODATA

I'm try any way of definition, assigment, but always i have a DUMP.

Someone can give a hand with this issue!

Thanks in advance!!!

This is the full code from the FORM with the problem.

*---------------------------------------------------------------------*
*       FORM GRABA                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  VALUE(P_TABLE)                                  *
*---------------------------------------------------------------------*
FORM graba USING value(p_table) TYPE c.
  DATA:
    w_field(60),
    w_dd03l  TYPE dd03l.
  FIELD-SYMBOLS <fs_field>.

  CLEAR w_flag.

  CASE p_table.
    WHEN 'BGR00'.
      d_bgr00-group  = w_batin.
      d_bgr00-mandt  = sy-mandt.
      d_bgr00-usnam  = sy-uname.
      d_bgr00-xkeep  = 'X'.
      d_bgr00-nodata = '/'.
      d_bgr00-stype = 0.

      TRANSFER d_bgr00 TO w_fname.

    WHEN 'BBKPF'.
      LOOP AT gt_dd03l INTO w_dd03l WHERE tabname EQ p_table.
        CONCATENATE
            'd_'
            w_dd03l-tabname
            '-'
            w_dd03l-fieldname
          INTO w_field.

        ASSIGN (w_field) TO <fs_field>.

        IF <fs_field> IS INITIAL OR <fs_field> EQ '/'.
          IF w_dd03l-fieldname EQ 'TBNAM'.
            <fs_field> = p_table.
          ELSE.
            <fs_field> = '/'.
          ENDIF.
        ELSE.
          w_flag = 'X'.
        ENDIF.
      ENDLOOP.

      TRANSFER d_bbkpf TO w_fname.

    WHEN 'BBSEG'.
      LOOP AT gt_dd03l INTO w_dd03l WHERE tabname EQ p_table.
        CONCATENATE
            'd_'
            w_dd03l-tabname
            '-'
            w_dd03l-fieldname
          INTO w_field.

        ASSIGN (w_field) TO <fs_field>.

        IF <fs_field> IS INITIAL OR <fs_field> EQ '/'.
          IF w_dd03l-fieldname EQ 'TBNAM'.
            <fs_field> = p_table.
          ELSE.
            <fs_field> = '/'.
          ENDIF.
        ELSE.
          w_flag = 'X'.
        ENDIF.
      ENDLOOP.

      TRANSFER d_bbseg TO w_fname.

  ENDCASE.

ENDFORM.

Edited by: Matt on Dec 15, 2008 5:03 PM - Made subject more informative