Abap 值在相邻列中重复

Abap 值在相邻列中重复,abap,alv,Abap,Alv,我正在写一个程序,我有三个栏目,当其中一个栏目没有数据时,我会复制下三个栏目的内容,反之亦然。为什么列复制相邻列 在这里,用红色圈起来的列是从用蓝色圈起来的列复制内容,而蓝色圈起来的列不是wright。红色列应具有0个值 REPORT Z_KABAP_STATUS_COMENZI. TABLES T003P. TABLES AFKO. TABLES AFPO. TABLES AUFM. TABLES AUFK. TABLES MAKT. TABLES AFVV. TYPE-POOLS

我正在写一个程序,我有三个栏目,当其中一个栏目没有数据时,我会复制下三个栏目的内容,反之亦然。为什么列复制相邻列

在这里,用红色圈起来的列是从用蓝色圈起来的列复制内容,而蓝色圈起来的列不是wright。红色列应具有0个值

REPORT  Z_KABAP_STATUS_COMENZI.

TABLES T003P.
TABLES AFKO.
TABLES AFPO.
TABLES AUFM.
TABLES AUFK.
TABLES MAKT.
TABLES AFVV.



TYPE-POOLS: slis.  " SLIS contains all the ALV data types

DATA: MyGridTitle TYPE LVC_TITLE.
DATA: report_id LIKE sy-repid.
DATA: MyLayout TYPE slis_layout_alv. "alv layout
DATA: afield TYPE slis_fieldcat_alv. "wa_fieldcat
*DATA: it_sort TYPE slis_t_sortinfo_alv.
DATA: it1_sort TYPE slis_t_sortinfo_alv.
*DATA: wa_sort   TYPE slis_sortinfo_alv.
DATA: it_filter TYPE slis_t_filter_alv.
Data: ls_filter TYPE slis_filter_alv.
DATA: FIELDCATALOG TYPE slis_t_fieldcat_alv, "WITH HEADER LINE,
      GD_LAYOUT    TYPE slis_layout_alv,
      G_SAVE TYPE C VALUE 'X',
      G_VARIANT TYPE DISVARIANT,
      GX_STOC TYPE DISVARIANT,
      G_EXIT TYPE C.
DATA: MyEvents TYPE slis_t_event.

DATA: it_sort      TYPE slis_t_sortinfo_alv,
      wa_sort      TYPE slis_sortinfo_alv..



TYPES: BEGIN OF tables_fields,


  AUFNR TYPE AUFK-AUFNR, "Nr comanda productie
  AUART TYPE AUFK-AUART, "Tip comanda /Sectie
  WERKS TYPE AUFK-WERKS, "Unitate logistica
  TXT   TYPE T003P-TXT,  "Nume sectie
  "MENGE TYPE AUFM-MENGE, "Cantitate buc predata
  GAMNG TYPE AFKO-GAMNG, "Cantitatea totala vrac in kg
  GMEIN TYPE AFKO-GMEIN, "Unitatea de masura cantitate totala
  "WEMNG TYPE AFPO-WEMNG, "Cantitatea totala livrata
  ERFMG TYPE AUFM-ERFMG, "Cantitatea kg totala livrata defalcata
  GSTRP Type AFKO-GSTRP, "Data lansarii comenzii
  GLTRP TYPE AFKO-GLTRP, "Data estimativa a finalizarii comenzii
  BLDAT TYPE AUFM-BLDAT, "Data finalizarii comenzii
  MGVRG TYPE AFVV-MGVRG, "Bucati pe comanda-cant de baza
  "MEINS TYPE AUFM-MEINS,"Unitate bucati pe comanda-rectificat
  MEINH TYPE AFVV-MEINH,  "Unitate bucati pe comanda
  MENGE TYPE AUFM-MENGE, "Cantitate buc predata

  MATNR TYPE AUFM-MATNR, "Cod material
  MAKTX TYPE MAKT-MAKTX, "Descriere material
   MBLNR TYPE AUFM-MBLNR,
  ZEILE TYPE AUFM-ZEILE,
  BMSCH TYPE AFVV-BMSCH,

  SPRAS TYPE T003P-SPRAS,"Restrictionare limba
  ZILEDEP TYPE I,"AFKO-GLTRP, "Filtru date intre care s-au realizat comenzi
  COMDEP(10) TYPE C,"Nr zile comanda depasita
  COMINTRE TYPE AFKO-GSTRP,"Data comenzi termen depasit

  line_color(4) TYPE c,

   END OF tables_fields.



DATA: lt_join TYPE STANDARD TABLE OF tables_fields,
      wa_join TYPE tables_fields.



FIELD-SYMBOLS :  <wa_join> TYPE tables_fields.

SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE text-001.
SELECT-OPTIONS NrCom FOR AUFK-AUFNR. "AUFK-AUFNR. "Comanda proces
SELECT-OPTIONS Material FOR AUFM-MATNR."AFKO-PLNBEZ. "Cod material
SELECT-OPTIONS UnitLog FOR AUFK-WERKS. " Unitate logistica
SELECT-OPTIONS TipCom FOR AUFK-AUART. "Tip comanda/Sectie
SELECT-OPTIONS COMINTRE FOR AFKO-GSTRP. "modif id m1. "Date intre care s-au lansat comenzi
SELECTION-SCREEN END OF BLOCK BLOCK1.

SELECTION-SCREEN BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE text-001.
SELECTION-SCREEN COMMENT /1(79) label_4.
PARAMETERS: btn1    RADIOBUTTON GROUP RAD1 USER-COMMAND chk DEFAULT 'X',
            btn2    RADIOBUTTON GROUP RAD1,
            btn3    RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK BLOCK2.


START-OF-SELECTION.



  PERFORM Selectare.
  PERFORM BUILD_FIELDCATALOG.
  PERFORM sort_catalog.


  LOOP AT lt_join INTO wa_join.

    IF wa_join-MEINH = 'ST'.
      wa_join-MEINH ='BUC'.
    ENDIF.


    IF wa_join-MEINH = 'KG'.
      wa_join-MGVRG = '0'.
      wa_join-MEINH = '0'.
      wa_join-MENGE = '0'.
    endif.

    IF wa_join-GMEIN = 'ST'.
      wa_join-GMEIN ='KG'.
    ENDIF.


    IF wa_join-erfmg = wa_join-menge.
      wa_join-GMEIN ='0'.
      wa_join-gamng = '0'.
      wa_join-ERFMG = '0'.
    ENDIF.



    IF wa_join-bldat > wa_join-gltrp."
      wa_join-comdep = 'Depasit'." Comenzi termen depasit.
    ELSE.
      wa_join-comdep = 'Nedepasit'.
    ENDIF.


    IF wa_join-bldat > wa_join-gltrp."" comanda nr zile depasite fata de data estimata .
      wa_join-ziledep = wa_join-bldat - wa_join-gltrp.
    ELSE.
      wa_join-ziledep = ''.
    ENDIF.

    MODIFY lt_join FROM wa_join TRANSPORTING MEINH MGVRG MENGE GMEIN GAMNG ERFMG COMDEP BLDAT  ZILEDEP."COMINTRE. "  WEMNG MEINS

  ENDLOOP.

  LOOP AT lt_join ASSIGNING <wa_join>.
    IF <wa_join>-aufnr EQ '2001'.
      MOVE 'C410' TO <wa_join>-line_color.
    ELSE.
      MOVE 'C510' TO <wa_join>-line_color.
    ENDIF.

  ENDLOOP.

  MyLayout-zebra = 'X'.
  MyLayout-colwidth_optimize = 'X'.
  MyLayout-info_fieldname =      'LINE_COLOR'.

  Refresh it_filter.
  if btn1 = 'X'.
    ls_filter-fieldname = 'COMDEP'.  "Filtru data comanda intre doua date calendaristice pentru Depasit radiobuton "
    ls_filter-tabname = 'LT_JOIN'.
    ls_filter-sign0 = 'I'.
    ls_filter-optio = 'EQ'.
    ls_filter-valuf_int = 'Depasit'.
    APPEND ls_filter TO It_filter.
  ELSEIF btn3 = 'X'.
    ls_filter-fieldname = 'COMDEP'.  "Filtru data comanda intre doua date calendaristice pentru Nedepasit radiobuton "
    ls_filter-tabname = 'LT_JOIN'.
    ls_filter-sign0 = 'I'.
    ls_filter-optio = 'EQ'.
    ls_filter-valuf_int = 'Nedepasit'.
    APPEND ls_filter TO It_filter.
  EndIf.


  PERFORM DISPLAY_ALV_REPORT TABLES lt_join.



FORM Selectare.


  ##too_many_itab_fields
  SELECT a~aufnr
         "e~aufnr
         a~auart
         a~werks
         b~txt
         c~gamng "cant kg pe comanda
         c~gmein " unit masura kg
         "d~wemng
         e~erfmg " cant kg pe comanda predata
         c~gstrp
         c~gltrp
         e~bldat
         g~mgvrg "cant buc pe comanda
         g~meinh " unit masura buc
         "e~meins
         e~menge " cant buc pe comanda predata
         e~matnr"c~plnbez
         f~maktx
         e~mblnr
         e~zeile
         g~bmsch



  FROM AUFK AS a
 inner JOIN T003P AS b
  ON a~auart = b~auart
inner  JOIN AFKO as c
  ON a~aufnr = c~aufnr
inner  JOIN AFPO as d
  ON a~aufnr = d~aufnr
 inner JOIN AUFM as e
  ON a~aufnr = e~aufnr
 inner JOIN MAKT as f
  ON d~matnr = f~matnr
inner JOIN AFVV as g
  ON c~aufpl = g~aufpl


INTO TABLE lt_join
"FOR ALL ENTRIES IN lt_join
    WHERE a~aufnr IN NrCom AND "
          a~werks IN UnitLog AND
          b~auart IN TipCom AND
          b~SPRAS = SY-LANGU AND
          f~spras = sy-langu and
          e~matnr IN Material AND "c~plnbez
          bwart = '101' AND
          c~gstrp IN COMINTRE.


  sort lt_join by MBLNR.

  DELETE ADJACENT DUPLICATES FROM lt_join comparing MBLNR."

ENDFORM.


FORM sort_catalog.

  wa_sort-spos      = 4.
  wa_sort-fieldname = 'AUFNR'.
  wa_sort-up        = 'X'.
  wa_sort-subtot    = 'X'.
  APPEND wa_sort TO it_sort.

ENDFORM.

FORM BUILD_FIELDCATALOG.
  REFRESH FIELDCATALOG.

  afield-FIELDNAME = 'WERKS'.
  afield-SELTEXT_M = 'Unitate logistica'.
  afield-COL_POS   = 1.
  afield-OUTPUTLEN = 10.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'AUART'.
  afield-SELTEXT_M = 'Tip Comanda'.
  afield-COL_POS   = 2.
  afield-OUTPUTLEN = 10.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'TXT'.
  afield-SELTEXT_M = 'Nume sectie'.
  afield-COL_POS   = 3.
  afield-OUTPUTLEN = 25.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'AUFNR'.
  afield-SELTEXT_M = 'Numar comanda'.
  afield-COL_POS   = 4.
  afield-OUTPUTLEN = 10.
  afield-no_zero = 'X'.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'MATNR'."'PLNBEZ'.
  afield-SELTEXT_M = 'Cod Material'.
  afield-COL_POS   = 5.
  afield-OUTPUTLEN = 15.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'MAKTX'.
  afield-SELTEXT_M = 'Descriere material'.
  afield-COL_POS   = 6.
  afield-OUTPUTLEN = 25.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'MGVRG'.
  afield-SELTEXT_M = 'Bucati pe comanda'.
  afield-COL_POS   = 7.
  afield-OUTPUTLEN = 13.
  afield-decimals_out = 0.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'MEINH'."MEINS
  afield-SELTEXT_M = 'Unitate'.
  afield-COL_POS   = 8.
  afield-OUTPUTLEN = 7.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'MENGE'.
  afield-SELTEXT_M = 'Cant. buc. predate'.
  afield-COL_POS   = 9.
  afield-OUTPUTLEN = 13.
  afield-decimals_out = 0.
  afield-do_sum = 'X'.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'GAMNG'.
  afield-SELTEXT_M = 'Cant.pe comanda'.
  afield-COL_POS   = 10.
  afield-OUTPUTLEN = 13.
  "afield-decimals_out = 0.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'GMEIN'.
  afield-SELTEXT_M = 'Unitate'.
  afield-COL_POS   = 11.
  afield-OUTPUTLEN = 5.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'ERFMG'. "WEMNG
  afield-SELTEXT_M = 'Cant. predata'.
  afield-COL_POS   = 12.
  afield-OUTPUTLEN = 10.
  "afield-decimals_out = 0.
  afield-do_sum = 'X'.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'GSTRP'.
  afield-SELTEXT_M = 'Lansare comanda'.
  afield-COL_POS   = 13.
  afield-OUTPUTLEN = 12.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'GLTRP'.
  afield-SELTEXT_M = 'Data plan finalizare'.
  afield-COL_POS   = 14.
  afield-OUTPUTLEN = 15.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'BLDAT'.
  afield-SELTEXT_M = 'Data predare comanda'.
  afield-COL_POS   = 15.
  afield-OUTPUTLEN = 13.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'COMDEP'.
  afield-SELTEXT_M = 'Termen comanda'.
  afield-COL_POS   = 16.
  afield-OUTPUTLEN = 13.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.

  afield-FIELDNAME = 'ZILEDEP'.
  afield-SELTEXT_M = 'Nr zile'.
  afield-COL_POS   = 17.
  afield-OUTPUTLEN = 13.
  APPEND afield TO FIELDCATALOG.
  CLEAR afield.



ENDFORM.




FORM DISPLAY_ALV_REPORT TABLES lt_join.
* USING P_GRID_TITLE.
* rs_selfield TYPE slis_selfield.
  report_id = SY-REPID.
* RS_SELFIELD-ROW_STABLE = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = report_id
      I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'
*     I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
*     I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
      IT_FIELDCAT              = FIELDCATALOG"[]
*     I_GRID_TITLE             = P_GRID_TITLE
      I_SAVE                   = 'X'
      IT_EVENTS                = MyEvents
      is_layout                = MyLayout
      it_sort                  = it_sort
      it_filter                = it_filter " List output filter criteria
*     IS_VARIANT               = G_VARIANT
    TABLES
      T_OUTTAB                 = lt_join
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

  IF SY-SUBRC <> 0.
  ENDIF.

ENDFORM.


*---------------------------------------------------------*
* Grid  Header                                            *
*---------------------------------------------------------*
Form TOP-OF-PAGE.
*ALV Header declarations
  data: My_header type slis_t_listheader,
        wa_header type slis_listheader,
        My_line   like wa_header-info,
        ld_lines  type i,
        ld_linesc(10) type c.

* Title
  clear wa_header.
  wa_header-typ  = 'H'.
  wa_header-info =
    'Raport status comenzi de productie'.
  append wa_header to My_header.
*
*  clear wa_header.
*  wa_header-typ  = 'H'.
*  wa_header-info =`enter code here`
*  'Efectuati DUBLU Click pt Analiza Grafica - optiunile 01-08'.
*  append wa_header to My_header.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = My_header.
*            i_logo             = 'Z_LOGO'.
endform.
报告Z_KABAP_状态_COMENZI。
表T003P。
阿夫科。
表AFPO。
表AUFM。
奥夫克。
桌子是空的。
表AFVV。
类型池:SLI。“SLI包含所有ALV数据类型
数据:MyGridTitle类型LVC_TITLE。
数据:报告如sy repid所示。
数据:我的布局类型slis\U布局\U alv。“alv布局”
数据:外场型slis\U fieldcat\U alv。“哇,野猫
*数据:it_排序类型slis_t_sortinfo_alv。
数据:it1_排序类型slis_t_sortinfo_alv。
*数据:wa_排序类型slis_sortinfo_alv。
数据:it_过滤器类型slis_t_过滤器alv。
数据:ls\U过滤器类型slis\U过滤器\U alv。
数据:字段目录类型slis\U t\U fieldcat\U alv,“带标题行,
GD\U布局类型slis\U布局\U alv,
G_保存类型C值“X”,
G_变体类型DISVARIANT,
GX_STOC型双变量,
G_出口类型C。
数据:MyEvents类型slis\U t\U事件。
数据:it_排序类型slis_t_sortinfo_alv,
wa_分拣类型slis_sortinfo_alv。。
类型:表格和字段的开头,
AUFNR型AUFK-AUFNR,“Nr公司产品”
AUART类型AUFK-AUART,“提示comanda/Sectie
WERKS型AUFK-WERKS,“Unitate logistica
TXT类型T003P-TXT,“Nume部分
“孟格型奥夫姆-孟格”大合唱
GAMNG类型AFKO-GAMNG,“总甘茶vrac,单位为千克
GMEIN型AFKO-GMEIN,“总马苏拉坎特茶”
“WEMNG型AFPO-WEMNG”,利夫拉塔总体康蒂塔酒店
ERFMG型AUFM-ERFMG,“意大利全脂清茶
GSTRP类型AFKO-GSTRP,“数据Lansari comenzii
GLTRP类型AFKO-GLTRP,“最终确定的数据估计”
BLDAT型AUFM-BLDAT,“数据最终确定
MGVRG型AFVV-MGVRG,“Bucasti pe comanda cant de baza
“MEINS型AUFM-MEINS”,Unitate bucati pe comanda矫正
MEINH型AFVV-MEINH,“统一布卡蒂pe comanda
孟格类型AUFM-MENGE,“大合唱
材料编号类型AUFM-MATNR,“化学需氧量材料
MAKTX类型MAKT-MAKTX,“描述材料
MBLNR型AUFM-MBLNR,
ZEILE型AUFM-ZEILE,
BMSCH型AFVV-BMSCH,
T003P型SPRAS-SPRAS,“限流林巴”
ZILEDEP I型,“AFKO-GLTRP”,过滤日期,内部护理s-au实现
COMDEP(10)C类,“Nr zile comanda depasita
中心类型AFKO-GSTRP,“数据comenzi termen depasit
线条颜色(4)c型,
表的末尾是字段。
数据:lt\u联接类型表的标准表\u字段,
wa_联接类型表_字段。
字段符号:键入表格和字段。
区块1的选择屏幕开始,框架标题文本为-001。
为AUFK-AUFNR选择-OPTIONS NrCom。“AUFK-AUFNR”,科曼达程序
AUFM-MATNR.“AFKO-PLNBEZ.”Cod材料的选择选项材料
为AUFK-WERKS选择选项UnitLog。“Unitate logistica
用于AUFK-AUART的SELECT-OPTIONS TipCom.“提示comanda/Sectie
选择AFKO-GSTRP的选项中心。“莫迪夫id m1.”科门齐国际护理服务有限公司
块BLOCK1的选择屏幕结束。
区块2的选择屏幕开始,框架标题为text-001。
选择屏幕注释/1(79)标签4。
参数:btn1单选按钮组RAD1用户命令chk默认值“X”,
btn2单选按钮组RAD1,
btn3单选按钮组RAD1。
块块2的选择屏幕结束。
开始选择。
执行Selectare。
执行BUILD_FIELDCATALOG。
执行目录排序。
在lt_连接处循环到wa_连接。
如果wa_join-MEINH='ST'。
我们一起去。
恩迪夫。
如果wa_join-MEINH='KG'。
wa_join-MGVRG='0'。
wa_join-MEINH='0'。
wa_join-MENGE='0'。
恩迪夫。
如果wa_join-GMEIN='ST'。
wa_join-GMEIN='KG'。
恩迪夫。
如果wa_join-erfmg=wa_join-menge。
wa_join-GMEIN='0'。
wa_join-gamng='0'。
wa_join-ERFMG='0'。
恩迪夫。
如果wa_join-bldat>wa_join-gltrp。“
wa_join-comdep=‘Depasit’。“Comenzi termen Depasit。
其他的
wa_join-comdep='Nedepasit'。
恩迪夫。
如果wa_join-bldat>wa_join-gltrp。”“数据估算的最后进近区。
wa_join-ziledp=wa_join-bldat-wa_join-gltrp。
其他的
wa_join-ziledep=''。
恩迪夫。
从WAU join MEINH MGVRG MENGE GMEIN GAMNG ERMG COMDEP BLDAT ZILEDEP修改lt_join.“COMINTRE.”WEMNG MEINS
结束循环。
在lt_连接处循环。
IF-aufnr等式'2001'。
将“C410”移动到-line_颜色。
其他的
将“C510”移动到-line_颜色。
恩迪夫。
结束循环。
MyLayout斑马='X'。
MyLayout-colwidth_optimize='X'。
MyLayout-info_字段名='LINE_COLOR'。
刷新它并使用过滤器。
如果btn1='X'。
ls_filter-fieldname='COMDEP'。“过滤数据公司的内部日期日历数据”
ls\u filter-tabname='LT\u JOIN'。
ls_filter-sign0='I'。
ls_filter-optio='EQ'。
ls_filter-valuf_int='Depasit'。
将ls\u filter附加到It\u filter。
ELSEIF btn3='X'。
ls_filter-fieldname='COMDEP'。“过滤数据公司的内部日期日历数据”
ls\u filter-tabname='LT\u JOIN'。
ls_filter-sign0='I'。
ls_filter-optio='EQ'。
ls_filter-valuf_int='Nedepasit'。
将ls\u filter附加到It\u filter。
恩迪夫。
执行显示ALV报告表lt\U join。
FORM Selectare。
##太多的itab字段
选择一个~aufnr
“e~aufnr
奥亚特
a~沃克斯
b~txt
c~gamng“超公斤级pe comanda
c~gmein“单位:千克
“d~wemng
e~erfmg“不可能超过10公斤
c~gstrp
c~gltrp
e~bldat
g~mgvrg“不能与公司合作
g~meinh“单位masura buc
“我的
“我不能在这之前做任何事。”
e~matnr“c~plnbez
f~maktx
e~mblnr
e~zeile
g~bmsch
从奥夫克身上
内连接
IF wa_join-MEINH = 'KG'.
  wa_join-MGVRG = '0'.
  wa_join-MEINH = '0'.
  wa_join-MENGE = '0'.
endif.