FAGLL03H 新增自定义字段

1、SGLPOS_N_GL_CT、SGLPOS_N_CT两个结构新增自定义字段

2、执行t-code:HDBVIEWS

 

 3、实施增强 FAGL_LIB

 

 4、使用select data方法

 

5、代码示例:

 

method IF_FAGL_LIB~SELECT_DATA.
    FIELD-SYMBOLS: <fs> TYPE any.
    FIELD-SYMBOLS <ls_data>                 TYPE any.
    FIELD-SYMBOLS <ld_data>                 TYPE any.

    DATA: ls_component LIKE LINE OF it_component.
    DATA lr_data                  TYPE REF TO data.
    DATA lo_descr                 TYPE REF TO cl_abap_typedescr.
    DATA lo_str_descr_in          TYPE REF TO cl_abap_structdescr.
    DATA ls_abap_comp_descr       TYPE abap_compdescr.

    DATA: lv_id    TYPE c LENGTH 50,
          lv_name TYPE c LENGTH 200.

    CREATE DATA lr_data LIKE LINE OF ct_data.
    ASSIGN lr_data->* TO <ls_data>.

* Get structure description of data table
    CALL METHOD cl_abap_structdescr=>describe_by_data
      EXPORTING
        p_data      = <ls_data>
      RECEIVING
        p_descr_ref = lo_descr.

    lo_str_descr_in ?= lo_descr.

    LOOP AT ct_data ASSIGNING <ls_data>.

* Go over the components of the structure
      LOOP AT lo_str_descr_in->components
        INTO ls_abap_comp_descr.
        "贷款银行
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZBAK'."贷款银行代码
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztfi_zbak_helpt WHERE banka = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZEBANK'."贷款银行名称
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
        "政府补助
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZBZTYPE'."政府补助项目
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztfi_zbztyp_helt WHERE zzbztype = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZBZNAME'."政府补助项目名称
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
        "现金流量码
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZCASHFLOW'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztficashflowt WHERE zzcashflow = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZCASHNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
       "在建工程公告项目
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZDWGGXM'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztfi0076t WHERE zzdwggxm = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZGGXMNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
        "费用类型
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZEXPTYPE'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztfi0078t WHERE zzexptype = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZFYLXNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
        "附加成本中心
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZKOSTL'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE ltext INTO lv_name FROM cskt WHERE kostl = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZKOSTLNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
       "附加客户
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZKUNNR'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE name1,name2 INTO (@DATA(lv_name1),@DATA(lv_name2)) FROM kna1 WHERE kunnr = @lv_id.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZKUNNRNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name1 && lv_name2.
          ENDIF.
        ENDIF.
       "附加供应商
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZLIFNR'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE name1,name2 INTO (@DATA(lv_name3),@DATA(lv_name4)) FROM lfa1 WHERE lifnr = @lv_id.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZLIFNRNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name3 && lv_name4.
          ENDIF.
        ENDIF.
       "摊销费用类型文本
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZSHARE'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name  FROM ztfi0001t WHERE zzshare = lv_id AND spras = sy-langu.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZEFYLXNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
        "投资文号
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZTZWH'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE zzktext INTO lv_name  FROM ztfi_aux_tzwh WHERE zzplantcp = lv_id.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZKTEXT'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
      "国家专项
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZXMBH'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE xmmc INTO lv_name  FROM ztfi0010 WHERE xmbh = lv_id.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'XMMC'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.
       "变动原因
        CLEAR:lv_id,lv_name.
        IF ls_abap_comp_descr-name = 'ZZYWLX'.
          ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
          lv_id = <ld_data>.
          SELECT SINGLE txt50 INTO lv_name FROM ztfi0077t WHERE zzywlx = lv_id.
          IF sy-subrc = 0.
            ls_abap_comp_descr-name = 'ZZBDYZNAME'.
            ASSIGN COMPONENT ls_abap_comp_descr-name OF STRUCTURE <ls_data> TO <ld_data>.
            IF sy-subrc NE 0.
              EXIT.
            ENDIF.
            <ld_data> = lv_name.
          ENDIF.
        ENDIF.


      ENDLOOP.

    ENDLOOP.
  endmethod.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值