码迷,mamicode.com
首页 > 其他好文 > 详细

生成预付款会计凭证

时间:2016-11-17 18:03:48      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:app   reg   time   strlen   ctime   duplicate   like   for   log   

FUNCTION zrfc_mm014.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CALLNO) TYPE  ZCALLNO
*"  TABLES
*"      ZMMS002 STRUCTURE  ZMMS002
*"----------------------------------------------------------------------
TYPES:BEGIN OF ty_regup,
  bukrs      TYPE regup-bukrs,
  belnr      TYPE regup-belnr,
  gjahr      TYPE regup-gjahr,
  retn_date  TYPE regup-retn_date,
  zzbelnr    TYPE regup-zzbelnr,
  zzgjahr    TYPE regup-zzgjahr,
  END OF ty_regup.

DATA: lt_zmmt002  TYPE TABLE OF zmmt002,
      lt_zmmt002s TYPE TABLE OF zmmt002,
      ls_zmmt002  LIKE LINE  OF lt_zmmt002,
      lt_regup    TYPE TABLE OF ty_regup,
      ls_regup    TYPE ty_regup,
      lv_datano   TYPE i.

*---查询未发给费控的会计凭证
SELECT * INTO TABLE lt_zmmt002 FROM zmmt002
  WHERE flag =  .

lt_zmmt002s = lt_zmmt002.
SORT lt_zmmt002 BY bukrs gjahr belnr.
DELETE ADJACENT DUPLICATES FROM lt_zmmt002 COMPARING bukrs gjahr belnr.

IF lt_zmmt002 IS NOT INITIAL.
  SELECT bukrs belnr gjahr retn_date zzbelnr zzgjahr INTO TABLE lt_regup
    FROM regup
    FOR ALL ENTRIES IN lt_zmmt002
    WHERE bukrs = lt_zmmt002-bukrs
     AND  belnr = lt_zmmt002-belnr
     AND  gjahr = lt_zmmt002-gjahr.
ENDIF.

*---删除未产生清帐凭证的数据
DELETE lt_regup WHERE zzbelnr IS INITIAL.


*---数据编辑
LOOP AT  lt_regup INTO  ls_regup.
zmms002-bukrs       = ls_regup-bukrs.
zmms002-gjahr       = ls_regup-gjahr.
zmms002-belnr       = ls_regup-belnr.
zmms002-retn_date   = ls_regup-retn_date.
zmms002-flag        = S.
APPEND zmms002.
ENDLOOP.

*---记录已发给费控系统的凭证
CLEAR:gt_log,gs_log.
LOOP AT zmms002.
  lv_datano     = lv_datano + 1.
  gs_log-name   = ZRFC_MM014.
  gs_log-cdate  = sy-datum.
  GET TIME.
  gs_log-ctime  = sy-uzeit.
  gs_log-callno = callno.
  gs_log-datano = lv_datano.
  gs_log-flag   = S.
  gs_log-log    = Success.
  CONCATENATE zmms002-bukrs  zmms002-gjahr zmms002-belnr zmms002-retn_date
              zmms002-flag
  INTO gs_log-content SEPARATED BY |.
  CONDENSE gs_log-content NO-GAPS.
  gs_log-length = STRLEN( gs_log-content ).
  APPEND gs_log TO gt_log.
ENDLOOP.
IF gt_log IS NOT INITIAL.
  INSERT zrfc_mm01out_log FROM TABLE gt_log.
  IF sy-subrc = 0.
    COMMIT WORK.
  ENDIF.
ENDIF.


*---更新客制会计凭证表
CLEAR ls_zmmt002.
ls_zmmt002-flag = X.
MODIFY lt_zmmt002s FROM ls_zmmt002 TRANSPORTING flag WHERE flag IS INITIAL.

MODIFY zmmt002 FROM TABLE lt_zmmt002s.
IF sy-subrc = 0 .
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.

ENDFUNCTION.

 

生成预付款会计凭证

标签:app   reg   time   strlen   ctime   duplicate   like   for   log   

原文地址:http://www.cnblogs.com/caizjian/p/6074248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!