【ABAP】动态字段名

23 篇文章 2 订阅

为适用特性的不同,采用动态字段名的形式导出ALV,字段定义省略
动态字段名的字段类型定义为feld-name.

  LOOP AT lt_dq.
    SPLIT lt_dq-beizhu  AT '/' INTO lt_dq-vbeln2 lt_dq-posnr2.

    PERFORM frm_alpha_input USING lt_dq-vbeln2.
    PERFORM frm_alpha_input USING lt_dq-posnr2.
    IF lt_dq-aufnr <> ''.
      SELECT SINGLE matnr INTO s_matnr
        FROM afpo
        WHERE aufnr = lt_dq-aufnr.

      IF s_matnr <> ''.
        lt_dq-matnr = s_matnr.
      ENDIF.
    ENDIF.
    SELECT SINGLE maktx INTO lt_dq-maktx
      FROM makt
      WHERE matnr = lt_dq-matnr.

    SELECT SINGLE ftrmi INTO lt_dq-ftrmi
      FROM afko
      WHERE aufnr = lt_dq-aufnr.

    SELECT SINGLE cuobj INTO lt_dq-cuobj2
      FROM vbap
      WHERE vbeln = lt_dq-vbeln2
        AND posnr = lt_dq-posnr2.

    REFRESH: itab1,itab11.
    CLEAR: itab1,itab11.

    IF yxklcs = ''.
      cuobj1 = lt_dq-cuobj."新里程
      cuobj2 = lt_dq-cuobj2."康力
    ELSE.
      cuobj1 = lt_dq-cuobj2."康力
      cuobj2 = lt_dq-cuobj."新里程
    ENDIF.

    IF cuobj1 <> space.
      CALL FUNCTION 'VC_I_GET_CONFIGURATION'
        EXPORTING
          instance      = cuobj1
          language      = sy-langu
        TABLES
          configuration = itab1.

      IF cuobj2 <> space.
        CALL FUNCTION 'VC_I_GET_CONFIGURATION'
          EXPORTING
            instance      = cuobj2
            language      = sy-langu
          TABLES
            configuration = itab11.
      ENDIF.
      atwtbnum = '00'.
      atnamnum = '00'.
      LOOP AT itab1.
        l_num = atnamnum.
        IF l_num < '51'.
          IF l_num < '10'.
            CONCATENATE '0' atnamnum INTO atnamnum.
          ENDIF.
          READ TABLE lt_atnam WITH KEY num = atnamnum.
          IF sy-subrc NE 0.
            lt_atnam-num = atnamnum.
            lt_atnam-atnam = itab1-atnam.
            lt_atnam-atbez = itab1-atbez.
            APPEND lt_atnam.
            atwtbnum = atnamnum.
            CONCATENATE 'LT_DQ-ATWTB' atwtbnum INTO fn_atwtb.
            ASSIGN (fn_atwtb) TO <atwtb>.
            <atwtb> = itab1-atwtb.
            atnamnum = atnamnum + 1.
          ELSE.
            IF <atnam> = itab1-atnam.
              atwtbnum = atnamnum.
              CONCATENATE 'LT_DQ-ATWTB' atwtbnum INTO fn_atwtb.
              ASSIGN (fn_atwtb) TO <atwtb>.
              <atwtb> = itab1-atwtb.
            ENDIF.
            atnamnum = atnamnum + 1.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDLOOP.

      LOOP AT itab11.
        l_num = atnamnum.
        IF l_num < '51'.
          IF l_num < '10'.
            CONCATENATE '0' atnamnum INTO atnamnum.
          ENDIF.
          READ TABLE lt_atnam WITH KEY num = atnamnum.
          IF sy-subrc NE 0.
            lt_atnam-num = atnamnum.
            lt_atnam-atnam = itab1-atnam.
            lt_atnam-atbez = itab1-atbez.
            APPEND lt_atnam.
            atwtbnum = atnamnum.
            CONCATENATE 'LT_DQ-ATWTB' atwtbnum INTO fn_atwtb.
            ASSIGN (fn_atwtb) TO <atwtb>.
            <atwtb> = itab1-atwtb.
            atnamnum = atnamnum + 1.
          ELSE.
            IF <atnam> = itab1-atnam.
              atwtbnum = atnamnum.
              CONCATENATE 'LT_DQ-ATWTB' atwtbnum INTO fn_atwtb.
              ASSIGN (fn_atwtb) TO <atwtb>.
              <atwtb> = itab1-atwtb.
            ENDIF.
            atnamnum = atnamnum + 1.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDLOOP.
    ENDIF.
    MODIFY lt_dq.
  ENDLOOP.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值