Abap 值在相邻列中重复
我正在写一个程序,我有三个栏目,当其中一个栏目没有数据时,我会复制下三个栏目的内容,反之亦然。为什么列复制相邻列 在这里,用红色圈起来的列是从用蓝色圈起来的列复制内容,而蓝色圈起来的列不是wright。红色列应具有0个值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
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.