前言
业务需求:在COOIS抬头、组件增加客制化显示字段。
一、获取展示显示结构
抬头:F1如下==>IOHEADER
组件:F1如下==>IOOPCOMP
二、显示结构APPEND附加新字段
IOHEADER:
IOOPCOMP:
三、BADI:WORKORDER_INFOSYSTEM
方法:TABLES_MODIFY_LAY
代码如下:
METHOD if_ex_workorder_infosystem~tables_modify_lay.
CASE abap_true.
WHEN is_tcoa-header_sel. " 抬头
IF ct_ioheader[] IS NOT INITIAL.
DATA(lt_ioheader) = ct_ioheader[].
SORT lt_ioheader BY plnbez.
DELETE ADJACENT DUPLICATES FROM lt_ioheader COMPARING plnbez.
IF lt_ioheader[] IS NOT INITIAL.
SELECT
mara~matnr AS plnbez,
mara~zclph,
mara~zthgg
FROM mara
FOR ALL ENTRIES IN @lt_ioheader
WHERE matnr = @lt_ioheader-plnbez
INTO TABLE @DATA(lt_data_header).
IF sy-subrc = 0.
SORT lt_data_header BY plnbez.
LOOP AT ct_ioheader ASSIGNING FIELD-SYMBOL(<fs_ioheader>).
READ TABLE lt_data_header INTO DATA(ls_data_header) WITH KEY plnbez = <fs_ioheader>-plnbez BINARY SEARCH.
IF sy-subrc = 0.
<fs_ioheader>-zclph = ls_data_header-zclph.
<fs_ioheader>-zthgg = ls_data_header-zthgg.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
WHEN is_tcoa-opcomp_sel. " 组件
IF ct_ioopcomp[] IS NOT INITIAL.
DATA(lt_ioopcomp) = ct_ioopcomp[].
SORT lt_ioopcomp BY aufnr.
DELETE ADJACENT DUPLICATES FROM lt_ioopcomp COMPARING aufnr.
IF lt_ioopcomp[] IS NOT INITIAL.
SELECT
afko~aufnr,
afko~gmein,
afko~gamng,
afpo~matnr,
makt~maktx
FROM afko
INNER JOIN afpo ON afko~aufnr = afpo~aufnr
LEFT JOIN makt ON afpo~matnr = makt~matnr AND makt~spras = '1'
FOR ALL ENTRIES IN @lt_ioopcomp
WHERE afko~aufnr = @lt_ioopcomp-aufnr
INTO TABLE @DATA(lt_data_opcomp).
IF sy-subrc = 0.
SORT lt_data_opcomp BY aufnr.
LOOP AT ct_ioopcomp ASSIGNING FIELD-SYMBOL(<fs_ioopcomp>).
READ TABLE lt_data_opcomp INTO DATA(ls_data_opcomp) WITH KEY aufnr = <fs_ioopcomp>-aufnr BINARY SEARCH.
IF sy-subrc = 0.
<fs_ioopcomp>-zzgmein = ls_data_opcomp-gmein.
<fs_ioopcomp>-zzgamng = ls_data_opcomp-gamng.
<fs_ioopcomp>-zzmatnr = ls_data_opcomp-matnr.
<fs_ioopcomp>-zzmaktx = ls_data_opcomp-maktx.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
四、效果如下
抬头:
组件: