关于获取业务员个人欠款的rfc

来源:互联网 发布:城市人口密度数据 编辑:程序博客网 时间:2024/05/17 08:15

FUNCTION  ZBAPI_GET_STAFF_EXPENSE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_DATUM1) LIKE  BSID-BUDAT
*"     VALUE(I_DATUM2) LIKE  BSID-BUDAT
*"  TABLES
*"      IKUNNR STRUCTURE  ZKEHUBH OPTIONAL
*"      I_DATUM STRUCTURE  ZDATUM OPTIONAL
*"      I_FANLI STRUCTURE  ZCUSTOMER_FANLI OPTIONAL
*"      ZJINE1 STRUCTURE  ZJINE OPTIONAL
*"----------------------------------------------------------------------
tables:bsid,kna1,knb1.
data:itab like ZCUSTOMER_FANLI occurs 0 with header line.
data:begin of jtab occurs 0,
      kunnr like bsid-kunnr,
      bukrs like bsid-bukrs,
      ktokd like kna1-ktokd,
     end of jtab.

 DATA:BEGIN OF jtab_bsid OCCURS 0,
       kunnr  LIKE bsid-kunnr,
       umskz  LIKE bsid-umskz,
       budat  LIKE bsid-budat,
       belnr  LIKE bsid-belnr,
       waers  LIKE bsid-waers,
       SGTXT  like bsid-SGTXT,
       monat  LIKE bsid-monat,
       shkzg  LIKE bsid-shkzg,
       dmbtr  LIKE bsid-dmbtr,
       wrbtr  LIKE bsid-wrbtr,
       kkber  LIKE bsid-kkber,"贷方控制范围
     END OF jtab_bsid.
data:itab_bsid like jtab_bsid occurs 0 with header line.
data:itab_bsid1 like jtab_bsid occurs 0 with header line.
data:itab_bsid2 like jtab_bsid occurs 0 with header line.
data: ZJINE2 like  ZJINE1 occurs 0 with header line.
data: ZJINE3 like  ZJINE1 occurs 0 with header line.
data: ZJINE4 like  ZJINE1 occurs 0 with header line.
* if I_DATUM is initial.
*  message i000(000) with '必须输入日期范围'.
*  stop.
 if i_datum1+6(2) <> '01'.
  message i000(000) with '必须输入每月一号'.
  stop.
 endif.
*****根据客户帐户组和公司代码确定业务员
select knb1~kunnr KNB1~bukrs kna1~ktokd into table jtab
 from knb1 join kna1 on knb1~kunnr = kna1~kunnr
  where kna1~ktokd = 'FI02'
  and knb1~kunnr in iKUNNR
  and knb1~bukrs = '2100'.

sort jtab by kunnr.
*****取得小于屏幕选择条件业务员借回款
    SELECT kunnr umskz budat belnr waers SGTXT monat shkzg dmbtr wrbtr kkber FROM bsid
     INTO  TABLE jtab_bsid
      FOR ALL ENTRIES IN jtab
      WHERE kunnr = jtab-kunnr
*      and  budat in I_DATUM
      and  budat < I_DATUM2
      AND  kkber = 2110.
sort jtab_bsid by budat.
refresh itab_bsid.
clear itab_bsid.
*****得到明细数据
loop at jtab_bsid.
 move-corresponding jtab_bsid to I_FANLI.
 append I_FANLI.
 clear I_FANLI.
 clear jtab_bsid.
endloop.
****保留原有数据通过另一个内表计算
itab_bsid[] = jtab_bsid[].
loop at itab_bsid.
 if itab_bsid-shkzg = 'H'."贷方汇总
  itab_bsid-dmbtr = -1 * itab_bsid-dmbtr.
  if  itab_bsid-budat > I_DATUM1 .
  move-corresponding itab_bsid to ZJINE3.
  zjine3-budat = ''.
  collect zjine3.

  endif.
 else.
  if  itab_bsid-budat > I_DATUM1 ."借方汇总
  move-corresponding itab_bsid to ZJINE4.
  zjine4-budat = ''.
  collect zjine4.
  endif.
 ENDIF.
 if itab_bsid-budat < I_DATUM1 .
  move-corresponding itab_bsid to ZJINE1."期初
  zjine1-budat = ''.
  collect zjine1.
  clear itab_bsid.
  clear zjine1.
 elseif itab_bsid-budat >  I_DATUM1.
  move-corresponding itab_bsid to ZJINE2."本月
  zjine2-budat = ''.
  collect zjine2.
  clear itab_bsid.
  clear zjine2.
 endif.

endloop.

loop at ZJINE1.
* read table zjine2 with key kunnr = zjine1-kunnr.
* if sy-subrc = 0 .
*
* endif.
****本期借款
 read table zjine4 with key kunnr = zjine1-kunnr.
 if sy-subrc = 0 .
  zjine1-dmbtr1 = zjine4-dmbtr.
 endif.
*****本期还款
 read table zjine3 with key kunnr = zjine1-kunnr.
 if sy-subrc = 0 .
    zjine1-dmbtr2 = zjine3-dmbtr.
 endif.
*****总欠款
 zjine1-dmbtr3 = zjine1-dmbtr + zjine1-dmbtr1 + zjine1-dmbtr2.
 modify zjine1.
 clear zjine1.
endloop.
ENDFUNCTION.

原创粉丝点击