FORM FRM_ESB_DATA .
DATA(LV_YEAR) = P_GJAHR && '年'.
DATA(LV_MONTH) = P_MONT && '月'.
TRY.
EXEC SQL.
connect to :gw_dbs
ENDEXEC.
CATCH CX_SY_NATIVE_SQL_ERROR INTO G_OBJ_SQLDB.
CALL METHOD G_OBJ_SQLDB->GET_TEXT
RECEIVING
RESULT = G_ERROR_TEXT.
ENDTRY.
IF G_ERROR_TEXT IS INITIAL.
EXEC SQL.
SET CONNECTION :gw_dbs
ENDEXEC.
TRY .
EXEC SQL PERFORMING LOOP_OUTPUT.
SELECT CURRENCY,
ENTITY,
ACCOUNT,
CATEGORY1,
AMOUNT,
UPDATE_DATE,
NEW_COLUMN,
P_ENTITY
FROM C1_CF_COST_SUM_DETAIL
WHERE YEAR = :LV_YEAR
AND PERIOD = :LV_MONTH
INTO :GS_ESB
ENDEXEC.
CATCH CX_SY_NATIVE_SQL_ERROR INTO G_OBJ_SQLDB.
CALL METHOD G_OBJ_SQLDB->GET_TEXT
RECEIVING
RESULT = G_ERROR_TEXT.
ENDTRY.
ELSE.
SKIP.
ENDIF.
* SKIP.
* 更新到后台表ZTFM0013
DATA:LS_ZTFM0013 TYPE ZTFM0013,
LT_ZTFM0013 TYPE STANDARD TABLE OF ZTFM0013.
CLEAR:GS_ESB.
SELECT * FROM ZTFM0012 INTO TABLE @DATA(LT_A)
WHERE WERKS = @P_WERKS1
AND ZTYPE = '0'.
SELECT * FROM ZTFM0012 INTO TABLE @DATA(LT_BC)
WHERE WERKS = @P_WERKS1
AND ( ZTYPE = '1' OR ZTYPE = '2' ).
SORT LT_A BY ZCLAID.
SORT LT_BC BY ZTYPE ZPAID.
DELETE ADJACENT DUPLICATES FROM LT_A COMPARING ZCLAID.
DELETE ADJACENT DUPLICATES FROM LT_BC COMPARING ZTYPE ZPAID.
APPEND LINES OF LT_BC TO LT_A."合并ABC表
SELECT * FROM DD07T INTO TABLE @DATA(LT_DD07T)
FOR ALL ENTRIES IN @LT_A
WHERE ( DOMVALUE_L = @LT_A-ZCLAID OR DOMVALUE_L = @LT_A-ZPAID ).
LOOP AT LT_A INTO DATA(LS_A).
LS_ZTFM0013-MANDT = SY-MANDT.
LS_ZTFM0013-WERKS = '1250'."默认1250 P_WERKS1
LS_ZTFM0013-GJAHR = P_GJAHR.
LS_ZTFM0013-MONT = P_MONT.
LS_ZTFM0013-CRNAM = SY-UNAME.
LS_ZTFM0013-CRDAT = SY-DATUM.
LS_ZTFM0013-CRTIM = SY-UZEIT.
IF LS_A-ZTYPE = '0'.
LS_ZTFM0013-ZCLAID = LS_A-ZCLAID.
READ TABLE LT_DD07T INTO DATA(LS_DD07T) WITH KEY DOMVALUE_L = LS_A-ZCLAID.
IF SY-SUBRC = 0.
LS_ZTFM0013-ZCLASS = LS_DD07T-DDTEXT.
ENDIF.
LOOP AT GT_ESB INTO GS_ESB WHERE ENTITY = LS_A-NEWKOSTL.
LS_ZTFM0013-ZZYSZJE = LS_ZTFM0013-ZZYSZJE + GS_ESB-AMOUNT.
ENDLOOP.
ELSEIF LS_A-ZTYPE = '1'.
LS_ZTFM0013-ZCLAID = LS_A-ZPAID.
READ TABLE LT_DD07T INTO LS_DD07T WITH KEY DOMVALUE_L = LS_A-ZPAID.
IF SY-SUBRC = 0.
LS_ZTFM0013-ZCLASS = LS_DD07T-DDTEXT.
ENDIF.
LOOP AT GT_ESB INTO GS_ESB WHERE ENTITY = LS_A-NEWKOSTL.
LS_ZTFM0013-ZZYSZJE = LS_ZTFM0013-ZZYSZJE + GS_ESB-AMOUNT.
ENDLOOP.
ELSEIF LS_A-ZTYPE = '2'.
LS_ZTFM0013-ZCLAID = LS_A-ZPAID.
READ TABLE LT_DD07T INTO LS_DD07T WITH KEY DOMVALUE_L = LS_A-ZPAID.
IF SY-SUBRC = 0.
LS_ZTFM0013-ZCLASS = LS_DD07T-DDTEXT.
ENDIF.
LOOP AT GT_ESB INTO GS_ESB WHERE ENTITY = LS_A-FICTR.
LS_ZTFM0013-ZZYSZJE = LS_ZTFM0013-ZZYSZJE + GS_ESB-AMOUNT.
ENDLOOP.
ENDIF.
APPEND LS_ZTFM0013 TO LT_ZTFM0013.
CLEAR:LS_ZTFM0013,LS_A.
ENDLOOP.
MODIFY ZTFM0013 FROM TABLE LT_ZTFM0013.
COMMIT WORK.
*存储到ZTPM0024表
DATA:LS_ZTPM0024 TYPE ZTPM0024,
LT_ZTPM0024 TYPE STANDARD TABLE OF ZTPM0024.
SELECT * FROM ZTPM0025
INTO TABLE @DATA(LT_ZTPM0025)
WHERE WERKS = @P_WERKS1.
SORT LT_ZTPM0025 BY ZID.
DELETE ADJACENT DUPLICATES FROM LT_ZTPM0025 COMPARING ZID.
LOOP AT LT_ZTPM0025 INTO DATA(LS_ZTPM0025).
LS_ZTPM0024-MANDT = SY-MANDT.
LS_ZTPM0024-WERKS = '1250'."默认1250 P_WERKS1
LS_ZTPM0024-ZID = LS_ZTPM0025-ZID.
LS_ZTPM0024-GJAHR = P_GJAHR.
LS_ZTPM0024-MONT = P_MONT.
LS_ZTPM0024-CHNAME = LS_ZTPM0025-CHNAME.
LOOP AT GT_ESB INTO GS_ESB WHERE ENTITY = LS_ZTPM0025-FICTR.
LS_ZTPM0024-ZZYSZJE = LS_ZTPM0024-ZZYSZJE + GS_ESB-AMOUNT.
ENDLOOP.
LS_ZTPM0024-ZZYSZJE = '0.95' * LS_ZTPM0024-ZZYSZJE .
LS_ZTPM0024-UNAME = SY-UNAME.
LS_ZTPM0024-CRDAT = SY-DATUM.
LS_ZTPM0024-CRTIM = SY-UZEIT.
APPEND LS_ZTPM0024 TO LT_ZTPM0024.
CLEAR:LS_ZTPM0024,LS_ZTPM0025.
ENDLOOP.
MODIFY ZTPM0024 FROM TABLE LT_ZTPM0024.
COMMIT WORK.
ENDFORM.
FORM LOOP_OUTPUT.
" CURRENCY,ENTITY,ACCOUNT,AMOUNT,UPDATE_DATE,NEW_COLUMN,P_ENTITY
APPEND GS_ESB TO GT_ESB.
ENDFORM.
【模板】连接外围数据库
于 2024-08-23 17:00:27 首次发布