【模板】连接外围数据库


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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值