*&---------------------------------------------------------------------*
*& Report ZDBCO_SD_CREDIT_INFO
*&
*&---------------------------------------------------------------------*
*&from wjg:zwbzl + 授信
*&tcode: zsd10
*&---------------------------------------------------------------------*
REPORT ZDBCO_SD_CREDIT_INFO.
TABLES:KNKK,BSID,KNA1,BSAD,T691T.
TYPES:BEGIN OF WTAB,
KONZS LIKE KNA1-KONZS, "组代码
KUNNR LIKE KNA1-KUNNR, "客户号
NAME1 LIKE KNA1-NAME1, "姓名
SKFOR LIKE KNKK-SKFOR, "应收总额
SAUFT LIKE KNKK-SAUFT, "销售额
KLIMK LIKE KNKK-KLIMK, "信贷限额
CTLPC LIKE KNKK-CTLPC, "信贷风险类别
KNKLI LIKE KNKK-KNKLI, "借贷账号
KKBER LIKE KNKK-KKBER, "信贷范围
OBLIG LIKE KNKK-KLIMK, "信贷风险总额
WAERB LIKE BSID-WAERS, "信贷币种
WRBTR LIKE KNKK-KLIMK, "超账期金额
WRBTR0 LIKE KNKK-KLIMK,
WRBTR1 LIKE KNKK-KLIMK,
WRBTR2 LIKE KNKK-KLIMK,
WRBTR3 LIKE KNKK-KLIMK,
WRBTR4 LIKE KNKK-KLIMK,
WRBTR5 LIKE KNKK-KLIMK,
WRBTR6 LIKE KNKK-KLIMK,
WRBTR7 LIKE KNKK-KLIMK,
WRBTR8 LIKE KNKK-KLIMK,
WRBTR9 LIKE KNKK-KLIMK,
WAERS LIKE BSID-WAERS,
RTEXT LIKE T691T-RTEXT, "风险种类描述
END OF WTAB.
DATA:
STDATUM LIKE SY-DATUM,
STUZEIT LIKE SY-UZEIT,
GT_DATA TYPE TABLE OF WTAB,
GS_DATA TYPE WTAB,
GT_FIELDCAT TYPE LVC_T_FCAT,
GS_FIELDCAT TYPE LVC_S_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO.
DATA:BEGIN OF gd,
d1 TYPE d,
d2 TYPE d,
d3 TYPE d,
d4 TYPE d,
d5 TYPE d,
d6 TYPE d,
d7 TYPE d,
d8 TYPE d,
END OF gd.
*t_itab类型处理未清类型凭证
TYPES:BEGIN OF t_itab,
belnr LIKE bsid-belnr, "凭证编号
kunnr LIKE bsid-kunnr, "客户编号1
name1 LIKE kna1-name1, "名称1
blart LIKE bsid-blart, "凭证类型
waers LIKE bsid-waers, "贷币代码
dmbtr LIKE bsid-dmbtr, "按本位币的金额
wrbtr LIKE bsid-wrbtr, "凭证货币金额
shkzg LIKE bsid-shkzg, "借方/货方标识(H 为负)
budat LIKE bsid-budat, "记帐日期
rebzg LIKE bsid-rebzg, "发票参考号
rebzj LIKE bsid-rebzj, "参考发票的会计年度
budat2 LIKE bsid-budat, "参考发票的日期
END OF t_itab.
DATA:itab TYPE TABLE OF t_itab WITH NON-UNIQUE KEY kunnr waers WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_KUNNR FOR KNA1-KUNNR DEFAULT '400000' to '610000'. "物料代码
SELECT-OPTIONS S_BUKRS FOR BSID-BUKRS DEFAULT '1000'. "工厂
SELECT-OPTIONS S_KKBER FOR KNKK-KKBER DEFAULT '2000' no INTERVALS. "信贷范围
SELECT-OPTIONS S_GSBER FOR BSID-GSBER DEFAULT '0001'. "业务范围
PARAMETERS:PBUDAT LIKE BSID-BUDAT DEFAULT sy-datum.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) TEXT-002.
*modified by jack_cao 2007.12.07
PARAMETERS: rast1(4) TYPE C DEFAULT '0000'.
PARAMETERS: rast2(4) TYPE C DEFAULT '0030'.
PARAMETERS: rast3(4) TYPE C DEFAULT '0060'.
PARAMETERS: rast4(4) TYPE C DEFAULT '0090'.
PARAMETERS: rast5(4) TYPE C DEFAULT '0120'.
PARAMETERS: rast6(4) TYPE C DEFAULT '0150'.
PARAMETERS: rast7(4) TYPE C DEFAULT '0180'.
PARAMETERS: rast8(4) TYPE C DEFAULT '0210'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN END OF BLOCK 001.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TXT2.
PARAMETERS: PCONME1 LIKE DBCON-CON_NAME DEFAULT 'ORA_209MES'.
SELECTION-SCREEN END OF BLOCK B2 .
INITIALIZATION.
TXT2 = '目标数据库(不选择即空着,当前目标不同步)'.
START-OF-SELECTION.
STDATUM = SY-DATUM.
STUZEIT = SY-UZEIT.
PERFORM GET_DATA.
PERFORM PROCESS_DATA.
if PCONME1 is not INITIAL and pconme1 NE space.
PERFORM UPLOAD2DBCENTER USING PCONME1.
endif.
PERFORM WRITERPTRUNRECORD.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form UPLOAD2DBCENTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_DBNAME text
* -->CNT text
*----------------------------------------------------------------------*
FORM UPLOAD2DBCENTER USING P_DBNAME like DBCON-CON_NAME.
DATA:lcnt TYPE I .
DATA: lcx_error TYPE REF TO cx_root.
DATA: err_text TYPE C LENGTH 1000.
DATA: ll_lines(10),"行数
ll_tabix(10),"循环标号
ll_pecnt TYPE p LENGTH 6 DECIMALS 2,"百分比
ll_pecet(6),"百分数
ll_text(40)."消息
CLEAR: ll_lines,ll_tabix,ll_pecnt,ll_pecet,ll_text.
TRY.
PERFORM GETCON USING P_DBNAME.
DESCRIBE TABLE GT_DATA LINES ll_lines."获取内表行数
LOOP AT GT_DATA into gs_Data.
ll_tabix = sy-tabix."当前处理的行号
ll_pecnt = ll_tabix / ll_lines * 100."已处理百分比
ll_pecet = ll_pecnt.
"拼接显示消息
CONCATENATE '上传209中间库:已完成' ll_pecet '%,共' ll_tabix '条/' ll_lines '条' INTO ll_text.
CONDENSE ll_text."整理格式,去掉多余空格,格式更整齐
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'"调用进度条函数,传入百分比和消息
EXPORTING
percentage = ll_pecnt
TEXT = ll_text.
SHIFT GS_DATA-KUNNR LEFT DELETING LEADING '0'.
SHIFT GS_DATA-KONZS LEFT DELETING LEADING '0'.
SHIFT GS_DATA-KNKLI LEFT DELETING LEADING '0'.
lcnt = lcnt + 1.
EXEC SQL.
DELETE FROM CRM_ACCOUNTS_RECEIVABLE_ERP WHERE CUSTNO = :GS_DATA-KUNNR
ENDEXEC.
commit WORK AND WAIT.
EXEC SQL.
INSERT INTO CRM_ACCOUNTS_RECEIVABLE_ERP
(GRPNO
,CUSTNO
,CUSTNAME
,SKFOR
,SAUFT
,OBLIG
,KLIMK
,CTLPC
,KNKLI
,WAERB
,KKBER
,WRBTR
,WRBTR0
,WRBTR1
,WRBTR2
,WRBTR3
,WRBTR4
,WRBTR5
,WRBTR6
,WRBTR7
,WRBTRN
,WAERS
,RTEXT )
VALUES
(:GS_DATA-KONZS,
:GS_DATA-KUNNR,
:GS_DATA-NAME1,
:GS_DATA-SKFOR,
:GS_DATA-SAUFT,
:GS_DATA-OBLIG,
:GS_DATA-KLIMK,
:GS_DATA-CTLPC,
:GS_DATA-KNKLI,
:GS_DATA-WAERB,
:GS_DATA-KKBER,
:GS_DATA-WRBTR,
:GS_DATA-WRBTR1,
:GS_DATA-WRBTR2,
:GS_DATA-WRBTR3,
:GS_DATA-WRBTR4,
:GS_DATA-WRBTR5,
:GS_DATA-WRBTR6,
:GS_DATA-WRBTR7,
:GS_DATA-WRBTR8,
:GS_DATA-WRBTR9,
:GS_DATA-WAERS,
:GS_DATA-RTEXT )
ENDEXEC.
endloop.
PERFORM CLOSECON USING P_DBNAME.
CATCH cx_sy_open_sql_db CX_SY_NATIVE_SQL_ERROR INTO lcx_error.
err_text = lcx_error->get_text( ). "得到错误信息
WRITE:/ SY-VLINE, '上传数据到',P_DBNAME,'失败,原因:',err_text , SY-VLINE.
ENDTRY.
WRITE:/ SY-VLINE, '上传数据',lcnt,'/',ll_lines,'到',P_DBNAME,'成功', SY-VLINE.
WRITE:/ SY-ULINE.
ENDFORM. "UPLOAD2DBCENTER
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
data:sauft1 like s066-OEIKW.
data:sauft2 like s067-OLIKW.
SELECT KONZS kna1~KUNNR NAME1 SKFOR SAUFT KLIMK CTLPC KNKLI KNKK~KKBER
into TABLE GT_DATA
FROM KNA1
JOIN KNKK ON KNKK~KUNNR = KNA1~KUNNR
WHERE kna1~KUNNR IN S_KUNNR AND KKBER IN S_KKBER.
loop at gt_Data into gs_data.
IF gs_data-KKBER = '2000'.
select sum( OLIKW ) into sauft2 from s067
where s067~kkber = gs_data-kkber and s067~KNKLI = gs_data-knkli.
SELECT SUM( OEIKW ) INTO sauft1 FROM s066
WHERE s066~kkber = gs_data-kkber AND s066~KNKLI = gs_data-knkli.
gs_data-sauft = sauft1 + sauft2.
gs_data-OBLIG = gs_data-SKFOR + gs_data-SAUFT.
gs_data-WAERB = 'USD'.
endif.
SELECT SINGLE rtext INTO Gs_data-RTEXT
FROM T691T WHERE kkber = gs_data-kkber AND CTLPC = gs_data-CTLPC and spras = 1.
modify gt_data from gs_Data.
ENDLOOP.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PROCESS_DATA.
PERFORM getgd.
loop at gt_data into gs_Data.
FIELD-SYMBOLS:<itab> LIKE itab ,<fs> LIKE itab .
DATA:loc_budat LIKE bsid-budat,loc_id TYPE I .
************ 获取未清项
SELECT
bsid~belnr
bsid~kunnr
kna1~name1
bsid~blart
bsid~waers
SUM( bsid~dmbtr )
SUM( bsid~wrbtr )
bsid~shkzg
bsid~budat
bsid~rebzg
bsid~rebzj
INTO TABLE itab
FROM bsid INNER JOIN kna1 ON ( bsid~kunnr = kna1~kunnr )
WHERE bsid~bukrs in s_bukrs AND
bsid~kunnr EQ gs_data-KUNNR AND
bsid~waers EQ gs_data-WAERB AND
bsid~budat <= pbudat AND
bsid~gsber IN s_gsber AND
bsid~umskz EQ space
GROUP BY bsid~belnr
bsid~kunnr
kna1~name1
bsid~blart
bsid~shkzg
bsid~waers
bsid~budat
bsid~rebzg
bsid~rebzj.
LOOP AT itab ASSIGNING <fs>.
IF <fs>-shkzg EQ 'H' .
<fs>-dmbtr = -1 * <fs>-dmbtr .
<fs>-wrbtr = -1 * <fs>-wrbtr .
ENDIF .
IF <fs>-blart = 'AB' AND <fs>-rebzg NE space .
SELECT SINGLE
bsid~budat
FROM bsid
INTO <fs>-budat2
WHERE bsid~belnr EQ <fs>-rebzg
AND bsid~gjahr EQ <fs>-rebzj .
IF sy-subrc NE 0 .
SELECT SINGLE
bsad~budat
FROM bsad
INTO <fs>-budat2
WHERE bsad~belnr EQ <fs>-rebzg AND bsad~gjahr EQ <fs>-rebzj .
ENDIF .
<fs>-budat = <fs>-budat2.
ENDIF.
gs_data-WRBTR = gs_data-WRBTR + <FS>-WRBTR.
IF <fs>-budat >= gd-D1.
gs_data-WRBTR1 = gs_data-WRBTR1 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D2.
gs_data-WRBTR2 = gs_data-WRBTR2 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D3.
gs_data-WRBTR3 = gs_data-WRBTR3 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D4.
gs_data-WRBTR4 = gs_data-WRBTR4 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D5.
gs_data-WRBTR5 = gs_data-WRBTR5 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D6.
gs_data-WRBTR6 = gs_data-WRBTR6 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D7.
gs_data-WRBTR7 = gs_data-WRBTR7 + <FS>-WRBTR.
ELSEIF <fs>-budat >= gd-D8.
gs_data-WRBTR8 = gs_data-WRBTR8 + <FS>-WRBTR.
Else.
gs_data-WRBTR9 = gs_data-WRBTR9 + <FS>-WRBTR.
endif.
ENDLOOP .
gs_data-WAERS = gs_data-WAERB.
MODIFY gt_data FROM gs_data.
ENDLOOP.
ENDFORM. "PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form getgd
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GETGD.
DATA:LOC_NAME(10),
LOC_TOTAL TYPE I,
LOC_RASTBIS(4) TYPE C ,
* LOC_RASTBIS TYPE ALLGROGR,
LOC_POINT TYPE D.
FIELD-SYMBOLS:<LOC_P> TYPE D.
DO 8 TIMES.
CLEAR LOC_NAME.
LOC_NAME+0(1) = SY-INDEX.
CONCATENATE 'RAST' LOC_NAME INTO LOC_NAME.
CLEAR LOC_RASTBIS.
WRITE (LOC_NAME) TO LOC_RASTBIS.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE GD TO <LOC_P>.
<LOC_P> = PBUDAT - LOC_RASTBIS.
ENDDO.
ENDFORM. "PROCESS_DATA
*&---------------------------------------------------------------------*
*& FORM WRITERPTRUNRECORD
*&---------------------------------------------------------------------*
* 获取数据
*----------------------------------------------------------------------*
FORM WRITERPTRUNRECORD.
TYPES:BEGIN OF TYP_BW,
BUKRS LIKE T001-BUKRS ,
WERKS LIKE T001W-WERKS ,
END OF typ_BW.
DATA:
GT_BW TYPE TABLE OF TYP_BW,
GS_BW TYPE TYP_BW.
GET TIME.
CALL FUNCTION 'ZSYS_RPT_RUNRECORD'
EXPORTING
TCODE = SY-TCODE
PROGRAMM = SY-CPROG
DATUMRST = STDATUM
UZEITRST = STUZEIT
BATCH = SY-BATCH
DATUMREND = SY-datum
UZEITREND = sy-UZEIT
DATUMC = '20220510'
RUNNER = SY-UNAME
RPTSRC = 'SD 王建国'.
ENDFORM. "WRITERPTRUNRECORD
*&---------------------------------------------------------------------*
*& FORM DISPLAY_DATA
*&---------------------------------------------------------------------*
* 显示数据
*----------------------------------------------------------------------*
FORM DISPLAY_DATA.
PERFORM BUILD_FIELDCAT USING 'KONZS' '' '' '' '' '' '' '组代码' 'X'.
PERFORM BUILD_FIELDCAT USING 'KUNNR' '' '' '' '' '' '' '客户号' 'X'.
PERFORM BUILD_FIELDCAT USING 'NAME1' '' '' '' '' '' '' '客户名称' 'X'.
PERFORM BUILD_FIELDCAT USING 'SKFOR' '' '' '' '' '' '' '应收总额' 'X'.
PERFORM BUILD_FIELDCAT USING 'SAUFT' '' '' '' '' '' '' '销售额' 'X'.
PERFORM BUILD_FIELDCAT USING 'OBLIG' '' '' '' '' '' '' '信贷风险' 'X'.
PERFORM BUILD_FIELDCAT USING 'KLIMK' '' '' '' '' '' '' '信贷限额' 'X'.
PERFORM BUILD_FIELDCAT USING 'CTLPC' '' '' '' '' '' '' '信贷风险' 'X'.
PERFORM BUILD_FIELDCAT USING 'KNKLI' '' '' '' '' '' '' '信贷账户' 'X'.
PERFORM BUILD_FIELDCAT USING 'KKBER' '' '' '' '' '' '' '信贷范围' 'X'.
PERFORM BUILD_FIELDCAT USING 'WAERB' '' '' '' '' '' '' '信贷币种' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR' '' '' '' '' '' '' '超账期总金额' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR1' '' '' '' '' '' '' '账龄1' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR2' '' '' '' '' '' '' '账龄2' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR3' '' '' '' '' '' '' '账龄3' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR4' '' '' '' '' '' '' '账龄4' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR5' '' '' '' '' '' '' '账龄5' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR6' '' '' '' '' '' '' '账龄6' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR7' '' '' '' '' '' '' '账龄7' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR8' '' '' '' '' '' '' '账龄8' 'X'.
PERFORM BUILD_FIELDCAT USING 'WRBTR9' '' '' '' '' '' '' '账龄9' 'X'.
PERFORM BUILD_FIELDCAT USING 'WAERS' '' '' '' '' '' '' '凭证货币' 'X'.
gs_layout-cwidth_opt = 'X'.
gs_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
" I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_ALV'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND_ALV'
IT_FIELDCAT_LVC = GT_FIELDCAT
IS_LAYOUT_LVC = GS_LAYOUT
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_DATA
EXCEPTIONS
OTHERS = 1.
CLEAR GT_DATA[].
ENDFORM. "DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT USING P_FIELDNAME TYPE FIELDNAME
P_QFIELDNAME TYPE LVC_QFNAME
P_CFIELDNAME TYPE LVC_CFNAME
P_REF_TABLE TYPE LVC_RTNAME
P_REF_FIELD TYPE LVC_RFNAME
P_CONVEXIT TYPE CONVEXIT
P_EMPHASIZE TYPE LVC_EMPHSZ
P_SCRTEXT_L TYPE SCRTEXT_L
P_NO_ZERO TYPE XFLAG.
GS_FIELDCAT-FIELDNAME = P_FIELDNAME.
GS_FIELDCAT-QFIELDNAME = P_QFIELDNAME.
GS_FIELDCAT-CFIELDNAME = P_CFIELDNAME.
GS_FIELDCAT-REF_TABLE = P_REF_TABLE.
GS_FIELDCAT-REF_FIELD = P_REF_FIELD.
GS_FIELDCAT-CONVEXIT = P_CONVEXIT.
GS_FIELDCAT-EMPHASIZE = P_EMPHASIZE.
GS_FIELDCAT-SCRTEXT_L = P_SCRTEXT_L.
GS_FIELDCAT-NO_ZERO = P_NO_ZERO.
GS_FIELDCAT-COLDDICTXT = 'L'.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR: GS_FIELDCAT.
ENDFORM. "BUILD_FIELDCAT
**&---------------------------------------------------------------------*
**& FORM PF_STATUS_ALV
**&---------------------------------------------------------------------*
** TEXT
**----------------------------------------------------------------------*
*FORM PF_STATUS_ALV USING RT_EXTAB TYPE SLIS_T_EXTAB .
* SET PF-STATUS 'STATUS_ALV' EXCLUDING RT_EXTAB.
*ENDFORM. "PF_STATUS_ALV
*&---------------------------------------------------------------------*
*& FORM USER_COMMAND_ALV
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM USER_COMMAND_ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
CASE RS_SELFIELD-FIELDNAME.
WHEN ''.
* CHECK RS_SELFIELD-VALUE IS NOT INITIAL.
* SET PARAMETER ID 'MBN' FIELD RS_SELFIELD-VALUE.
* CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM. "USER_COMMAND_ALV
*&---------------------------------------------------------------------*
*& FORM GETCON
*&---------------------------------------------------------------------*
* TEXT 调用外部数据库
*----------------------------------------------------------------------*
FORM GETCON USING P_DBNAME LIKE DBCON-CON_NAME.
EXEC SQL.
CONNECT TO :P_DBNAME
ENDEXEC.
IF SY-SUBRC NE 0.
WRITE:/ '连接数据库失败'.
ENDIF.
EXEC SQL.
SET CONNECTION :P_DBNAME
ENDEXEC.
ENDFORM. "GETCON
*&---------------------------------------------------------------------*
*& FORM CLOSECON
*&---------------------------------------------------------------------*
* TEXT 关闭外部数据库
*----------------------------------------------------------------------*
FORM CLOSECON USING P_DBNAME LIKE DBCON-CON_NAME.
COMMIT CONNECTION (P_DBNAME).
EXEC SQL.
DISCONNECT :P_DBNAME
ENDEXEC.
ENDFORM. "CLOSECON
客户 外币账龄报表
最新推荐文章于 2024-04-16 08:58:46 发布