FUNCTION ZFM_MM_016. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(I_BUKRS) TYPE BUKRS OPTIONAL *" VALUE(I_LIFNR) TYPE LIFNR OPTIONAL *" VALUE(I_DATUM) TYPE DATUM DEFAULT SY-DATUM *" EXPORTING *" VALUE(E_CODE) TYPE CHAR1 *" VALUE(E_MSG) TYPE STRING *" TABLES *" ET_TAB STRUCTURE ZSMM0028 OPTIONAL *"---------------------------------------------------------------------- DATA:RT_BUKRS TYPE RANGE OF BUKRS WITH HEADER LINE, RT_LIFNR TYPE RANGE OF LIFNR WITH HEADER LINE. IF I_BUKRS IS NOT INITIAL. RT_BUKRS-SIGN = 'I'. RT_BUKRS-OPTION = 'EQ'. RT_BUKRS-LOW = I_BUKRS. APPEND RT_BUKRS. ENDIF. IF I_LIFNR IS NOT INITIAL. RT_LIFNR-SIGN = 'I'. RT_LIFNR-OPTION = 'EQ'. RT_LIFNR-LOW = I_LIFNR. APPEND RT_LIFNR. ENDIF. SELECT BUKRS, LIFNR, WAERS, CASE SHKZG WHEN 'H' THEN WRBTR WHEN 'S' THEN - WRBTR END AS WRBTR, ZFBDT, ZBD1T FROM BSIK_VIEW WHERE BUKRS IN @RT_BUKRS AND LIFNR IN @RT_LIFNR ORDER BY BUKRS,LIFNR,WAERS INTO TABLE @DATA(LT_TAB). IF SY-SUBRC NE 0. E_CODE = 'E'. E_MSG = '未查询到数据!'. ENDIF. MOVE-CORRESPONDING LT_TAB[] TO ET_TAB[]. DELETE ADJACENT DUPLICATES FROM ET_TAB COMPARING BUKRS LIFNR WAERS. DATA:LV_OM TYPE I. FIELD-SYMBOLS <FS_TAB> TYPE ZSMM0028. LOOP AT LT_TAB INTO DATA(WA_TAB). READ TABLE ET_TAB ASSIGNING <FS_TAB> WITH KEY BUKRS = WA_TAB-BUKRS LIFNR = WA_TAB-LIFNR WAERS = WA_TAB-WAERS BINARY SEARCH. CHECK SY-SUBRC EQ 0. WA_TAB-ZFBDT = WA_TAB-ZFBDT + WA_TAB-ZBD1T."计算付款日期 LV_OM = ( WA_TAB-ZFBDT+0(4) - I_DATUM+0(4) ) * 12 + WA_TAB-ZFBDT+4(2) - I_DATUM+4(2). CASE LV_OM. WHEN -3."超期3个月 <FS_TAB>-ZAMT3B = <FS_TAB>-ZAMT3B + WA_TAB-WRBTR. <FS_TAB>-ZOVERDATE = <FS_TAB>-ZOVERDATE + WA_TAB-WRBTR. WHEN -2."超期2个月 <FS_TAB>-ZAMT2B = <FS_TAB>-ZAMT2B + WA_TAB-WRBTR. <FS_TAB>-ZOVERDATE = <FS_TAB>-ZOVERDATE + WA_TAB-WRBTR. WHEN -1."超期1个月 <FS_TAB>-ZAMT1B = <FS_TAB>-ZAMT1B + WA_TAB-WRBTR. <FS_TAB>-ZOVERDATE = <FS_TAB>-ZOVERDATE + WA_TAB-WRBTR. WHEN 0."当前期 <FS_TAB>-ZAMT0 = <FS_TAB>-ZAMT0 + WA_TAB-WRBTR. <FS_TAB>-ZOVERDATE = <FS_TAB>-ZAMOUNT + WA_TAB-WRBTR. WHEN 1."未来1个月 <FS_TAB>-ZAMT1 = <FS_TAB>-ZAMT1 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. WHEN 2."未来2个月 <FS_TAB>-ZAMT2 = <FS_TAB>-ZAMT2 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. WHEN 3."未来3个月 <FS_TAB>-ZAMT3 = <FS_TAB>-ZAMT3 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. WHEN 4 OR 5 OR 6."未来4-6个月 <FS_TAB>-ZAMT6 = <FS_TAB>-ZAMT6 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. WHEN 7 OR 8 OR 9 OR 10 OR 11 OR 12."未来7-12个月 <FS_TAB>-ZAMT12 = <FS_TAB>-ZAMT12 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. WHEN OTHERS. IF LV_OM GT 0."未来12个月以上 <FS_TAB>-ZAMT99 = <FS_TAB>-ZAMT99 + WA_TAB-WRBTR. <FS_TAB>-ZOPENDATE = <FS_TAB>-ZOPENDATE + WA_TAB-WRBTR. ELSE."预期3个月以上 <FS_TAB>-ZAMT9B = <FS_TAB>-ZAMT9B + WA_TAB-WRBTR. <FS_TAB>-ZOVERDATE = <FS_TAB>-ZOVERDATE + WA_TAB-WRBTR. ENDIF. ENDCASE. <FS_TAB>-ZAMOUNT = <FS_TAB>-ZOVERDATE + <FS_TAB>-ZOPENDATE. CLEAR:WA_TAB,LV_OM. ENDLOOP. E_CODE = 'S'. E_MSG = '查询成功!'. ENDFUNCTION.
网友评论