Backgroud
If there are two internal table. We need assign value for same. The different we will
add it in the other internal table.
1 Demo1
SORT ITAB BY COL4 COL7 COL3.
CLEAR:WA_ITAB.
LOOP AT LT_ZTMM132_NEW ASSIGNING <LFS_ZTMM132_NEW>.
G1_INDEX = sy-tabix .
READ TABLE ITAB INTO WA_ITAB WITH KEY COL4 = <LFS_ZTMM132_NEW>-MATNR
COL7 = <LFS_ZTMM132_NEW>-LIFNR
COL3 = <LFS_ZTMM132_NEW>-WERKS BINARY SEARCH.
IF SY-SUBRC = 0.
G2_INDEX = sy-tabix .
IF <LFS_ZTMM132_NEW>-PEINH IS NOT INITIAL.
WA_ITAB-COL13 = <LFS_ZTMM132_NEW>-NETPR / <LFS_ZTMM132_NEW>-PEINH.
ELSE.
WA_ITAB-COL13 = <LFS_ZTMM132_NEW>-NETPR .
ENDIF.
MODIFY ITAB INDEX g2_index FROM WA_ITAB TRANSPORTING COL13 .
DELETE LT_ZTMM132_NEW INDEX g1_index .
ENDIF.
CLEAR: WA_ITAB.
ENDLOOP.
loop at itab ASSIGNING <fs_itab>.
IF <fs_itab>-COL13 IS INITIAL.
IF <fs_itab>-COL12 IS NOT INITIAL.
<fs_itab>-COL13 = <fs_itab>-COL12 .
ELSE.
IF <fs_itab>-COL11 IS NOT INITIAL.
<fs_itab>-COL13 = <fs_itab>-COL11 .
ELSE.
<fs_itab>-COL13 = <fs_itab>-COL10.
ENDIF.
ENDIF.
endif.
ENDLOOP.
2 Demo2
sort lt_b by f1.
loop at lt_a into lw_A.
read table lt_b transporting no fields
with key f1 = lw_a-f1 binnary search.
if sy-subrc = 0.
loop at lt_a into lw_b from sy-tabix.
if lw_b-f1 <> lw_a-f1.
exit.
endif.
lw_c-f1 = lw_a-f1.
lw_c-f2 = lw_a-f2.
lw_c-f3 = lw_b-f3.
append lw_c to lt_c.
endloop.
endif.
endloop.
3 Demo3
SORT lt_sta BY vbeln.
*描述
LOOP AT it_vbap.
w_loop1 = sy-tabix.
CLEAR: l_flag.
CLEAR it_alv.
IF it_vbap-pstyv = 'TAP' OR it_vbap-pstyv ='ZTP1'.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING it_vbap TO it_alv.
IF it_vbap-upmat IS INITIAL.
it_alv-upmat = it_vbap-matnr.
ENDIF.
* "取审批状态
* CALL FUNCTION 'STATUS_TEXT_EDIT'
* EXPORTING
* client = sy-mandt
* flg_user_stat = 'X'
* objnr = it_vbap-objnr
* only_active = 'X'
* spras = '1'
* bypass_buffer = 'X'
* IMPORTING
** ANW_STAT_EXISTING =
* e_stsma = stsma
** LINE =
* user_line = status
** STONR =
* EXCEPTIONS
* object_not_found = 1
* OTHERS = 2.
* CLEAR:LT_STA,STATUS.
READ TABLE lt_sta WITH KEY vbeln = it_vbap-vbeln BINARY SEARCH.
IF sy-subrc = 0.
status = lt_sta-status.
ENDIF.
IF status = 'Z2'.
it_alv-statu = '已审批'.
ELSEIF status = 'Z1'.
it_alv-statu = '未审批'.
ELSE.
it_alv-statu = '不批准'.
ENDIF.
* 过滤审批状态
IF s_status IS NOT INITIAL.
IF status <> s_status-low.
CONTINUE.
ENDIF.
ENDIF.
* 审批日期
IF status EQ 'Z1' OR status EQ 'Z3'.
it_alv-date = ''.
ELSEIF status EQ 'Z2'.
SELECT objnr stat chgnr udate chind
INTO TABLE it_jcds
FROM jcds
WHERE objnr = it_vbap-objnr
AND stat = 'E0002'.
SORT it_jcds BY chgnr.
READ TABLE it_jcds WITH KEY objnr = it_vbap-objnr BINARY SEARCH.
it_alv-date = it_jcds-udate.
ENDIF.
* 过滤审批状态
IF s_date IS NOT INITIAL.
IF it_alv-date NOT IN s_date.
CONTINUE.
ENDIF.
ENDIF.
* 取送达方
READ TABLE it_vbpa WITH KEY vbeln = it_vbap-vbeln BINARY SEARCH.
IF sy-subrc = 0.
it_alv-kunnr2 = it_vbpa-kunnr.
ENDIF.
READ TABLE it_vbkd WITH KEY vbeln = it_vbap-vbeln
posnr = it_vbap-posnr BINARY SEARCH.
IF sy-subrc = 0.
it_alv-sdabw = it_vbkd-sdabw.
it_alv-bstnk = it_vbkd-bstkd.
ELSE.
READ TABLE it_vbkd WITH KEY vbeln = it_vbap-vbeln
posnr = '000000' BINARY SEARCH.
IF sy-subrc = 0.
it_alv-sdabw = it_vbkd-sdabw.
it_alv-bstnk = it_vbkd-bstkd.
ENDIF.
ENDIF.
* begin by zhangg 20151118 获取销售订单表头状态
READ TABLE it_vbuk WITH KEY vbeln = it_vbap-vbeln BINARY SEARCH.
IF sy-subrc = 0.
it_alv-lfgsk = it_vbuk-lfgsk.
ENDIF.
* end by zhangg 20151118 获取销售订单表头状态
* 处理拒绝和确认数量
IF it_vbap-abgru IS INITIAL.
READ TABLE it_vbep_col WITH KEY vbeln = it_vbap-vbeln
posnr = it_vbap-posnr BINARY SEARCH.
IF sy-subrc = 0 .
it_alv-bmeng = it_vbep_col-bmeng.
ENDIF.
ELSE.
READ TABLE it_lips_col WITH KEY vgbel = it_vbap-vbeln
vgpos = it_vbap-posnr BINARY SEARCH.
IF sy-subrc = 0.
it_alv-bmeng = it_lips_col-lfimg."发货量
it_alv-jjsl = it_vbap-kwmeng - it_lips_col-lfimg."总量-发货量
ELSE.
it_alv-jjsl = it_vbap-kwmeng.
ENDIF.
ENDIF.
IF it_alv-kwmeng IS NOT INITIAL .
it_alv-kzwi1 = it_vbap-kzwi1 / it_alv-kwmeng.
ENDIF.
* begin by zhanggh 订单类型为ZMF2时,实际价取成本价
IF it_alv-auart = 'ZMF2' AND it_alv-kwmeng IS NOT INITIAL .
it_alv-kzwi1 = it_vbap-wavwr / it_alv-kwmeng.
ENDIF.
* end by zhanggh 订单类型为ZMF2时,实际价取成本价
READ TABLE it_lips WITH KEY vgbel = it_vbap-vbeln
vgpos = it_vbap-posnr BINARY SEARCH.
*
w_loop2 = sy-tabix.
DO.
IF sy-subrc <> 0
OR it_lips-vgbel <> it_vbap-vbeln
OR it_lips-vgpos <> it_vbap-posnr .
EXIT.
ENDIF.
it_alv-bolnr = it_lips-bolnr.
it_alv-vbeln_1 = it_lips-vbeln.
it_alv-lfimg = it_lips-lfimg.
it_alv-wadat = it_lips-wadat_ist.
it_alv-wbsta = it_lips-wbsta.
READ TABLE it_vbrk WITH KEY vgbel = it_lips-vbeln
vgpos = it_lips-posnr BINARY SEARCH.
IF sy-subrc = 0.
it_alv-vbeln_2 = it_vbrk-vbeln."发票号
ELSE.
it_alv-vbeln_2 = ''.
ENDIF.
READ TABLE it_likp WITH KEY vbeln = it_lips-vbeln BINARY SEARCH.
IF sy-subrc = 0.
it_alv-mytxt = it_likp-mytxt."合同号
ELSE.
it_alv-mytxt = ''.
ENDIF.
l_flag = 'X'.
APPEND it_alv.
w_loop2 = w_loop2 + 1.
READ TABLE it_lips INDEX w_loop2.
ENDDO.
IF l_flag = ''.
APPEND it_alv.
ENDIF.
sy-tabix = w_loop1.
ENDLOOP.
4 Demo4
LOOP AT LT_ZTMM132 ASSIGNING <LFS_ZTMM132>.
WA_ITAB-COL4 = <LFS_ZTMM132>-MATNR.
WA_ITAB-COL7 = <LFS_ZTMM132>-LIFNR.
WA_ITAB-COL3 = <LFS_ZTMM132>-WERKS.
* WA_ITAB-COL2 = <LFS_ZTMM132>-ZDGJG.
WA_ITAB-COL6 = <LFS_ZTMM132>-PEINH.
L_GJAHR = P_GJAHR - <LFS_ZTMM132>-GJAHR .
IF L_GJAHR = 3.
WA_ITAB-COL10 = <LFS_ZTMM132>-ZDGJG.
ELSEIF L_GJAHR = 2.
WA_ITAB-COL11 = <LFS_ZTMM132>-ZDGJG.
ELSEIF L_GJAHR = 1.
WA_ITAB-COL12 = <LFS_ZTMM132>-ZDGJG.
ENDIF.
AT END OF WERKS.
APPEND WA_ITAB TO ITAB.
CLEAR :WA_ITAB.
ENDAT.
ENDLOOP .