资产主数据同步接口

FUNCTION zrfc_mm008.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CALLNO) TYPE  ZCALLNO
*"     VALUE(ZDATE) LIKE  SY-DATUM DEFAULT SY-DATUM
*"  EXPORTING
*"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
*"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
*"  TABLES
*"      ZANLA STRUCTURE  ZANLA OPTIONAL
*"----------------------------------------------------------------------
TYPES:BEGIN OF ty_zanla,
  bukrs      LIKE anla-bukrs,
  anln1      LIKE anla-anln1,
  anlkl      LIKE anla-anlkl,
  txt50      LIKE anla-txa50,
  deakt      LIKE anla-deakt,
  xspeb      LIKE anla-xspeb,
  ktansw  LIKE t095-ktansw,
  END OF ty_zanla.

DATA :lv_datano TYPE zdatano,
      lv_index  TYPE i,
      lt_zanla  TYPE TABLE OF ty_zanla,  "资产主数据
      ls_zanla  TYPE ty_zanla,
      lt_t095   TYPE TABLE OF t095,      "资产科目表
      ls_t095   TYPE t095.

IF zdate IS INITIAL OR zdate = '00000000'.
SELECT bukrs
       anln1
       anlkl
       txt50
       deakt
       xspeb
             INTO TABLE lt_zanla
       FROM  anla.
ELSE.
SELECT bukrs
       anln1
       anlkl
       txt50
       deakt
       xspeb
        INTO TABLE lt_zanla
       FROM  anla
       WHERE erdat = zdate
        OR   aedat = zdate.
ENDIF.

*查询资产科目
SELECT * INTO TABLE lt_t095 FROM t095 WHERE ktopl = 'GFFA'.

SORT  lt_t095 BY  ktogr.
LOOP AT lt_zanla INTO ls_zanla.
  lv_index = sy-tabix.
  READ TABLE  lt_t095 INTO  ls_t095 WITH KEY ktogr = ls_zanla-anlkl
                                             BINARY SEARCH.
  IF sy-subrc = 0.
     ls_zanla-ktansw  =  ls_t095-ktansw.
     MODIFY lt_zanla FROM ls_zanla  TRANSPORTING ktansw.
  ENDIF.
ENDLOOP.


IF lt_zanla IS NOT INITIAL.
     flag = 'S'.
     message = '执行成功'.
ELSE.
     flag = 'E'.
     message = '没有数据'.
ENDIF.

zanla[] = lt_zanla.

CLEAR:gt_log,gs_log.
LOOP AT zanla INTO ls_zanla.
*日志记录
    lv_datano = lv_datano + 1.
    gs_log-datano = lv_datano.
    gs_log-name   = 'ZRFC_MM008'.
    gs_log-cdate  = sy-datum.
    GET TIME.
    gs_log-ctime  = sy-uzeit.
    gs_log-callno = callno.
    gs_log-flag   = flag.
    gs_log-log    = message.

    CONCATENATE zdate
    ls_zanla-bukrs  ls_zanla-anln1  ls_zanla-anlkl ls_zanla-txt50  ls_zanla-deakt  ls_zanla-xspeb ls_zanla-ktansw
    INTO gs_log-content SEPARATED BY ''.
    CONDENSE gs_log-content NO-GAPS.
    SHIFT message LEFT DELETING LEADING  ''.
    gs_log-length = STRLEN( gs_log-content ).
    APPEND gs_log TO gt_log.
    CLEAR: gs_log,ls_zanla.
ENDLOOP.

   IF gt_log IS NOT INITIAL.
     INSERT zrfc_mm01in_log FROM TABLE gt_log.
     IF sy-subrc = 0.
       COMMIT WORK.
     ENDIF.
   ENDIF.
ENDFUNCTION.

 

posted @ 2016-11-17 16:14  学习笔记NO.1  阅读(706)  评论(0编辑  收藏  举报