壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 371|回复: 0

[FI] 在集成业务中应付及其他应付如何根据对方科目取得利润中心

[复制链接]
发表于 2012/7/22 12:20:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
增加一个小程序

我们现在处理的方法是增加一个程序来重新让所有的凭证都能从对方科目中取得利润中心.

参照程序

REPORT  ZZUPDATE_GLPCA.

tables : GLPCA , FAGLFLEXA.
TYPE-POOLS:slis.

PARAMETERS :  PYEAR LIKE FAGLFLEXA-RYEAR DEFAULT SY-DATUM(4),
              PFROMD LIKE GLPCA-BLDAT,
              PDOC LIKE GLPCA-GL_SIRID.
PARAMETERS :  PTEST AS CHECKBOX DEFAULT 'X'.

DATA : LDATE LIKE SY-DATUM .
DATA : BEGIN OF IT_ID OCCURS 0 ,
          GL_SIRID  LIKE GLPCA-GL_SIRID,
          REFRYEAR  LIKE GLPCA-REFRYEAR,
          REFDOCNR   LIKE GLPCA-REFDOCNR ,
          RPRCTR LIKE GLPCA-RPRCTR ,
       END OF IT_ID.

DATA : BEGIN OF  IT_DIS  OCCURS 0 ,
          GL_SIRID  LIKE GLPCA-GL_SIRID,
          REFRYEAR  LIKE GLPCA-REFRYEAR,
          REFDOCNR   LIKE GLPCA-REFDOCNR ,
          RPRCTR LIKE GLPCA-RPRCTR ,
          RPRCTROK LIKE GLPCA-RPRCTR ,
       END OF  IT_DIS .

DATA LPRCTR LIKE GLPCA-RPRCTR .

CLEAR : IT_ID , IT_ID[] ,IT_DIS,IT_DIS[], LDATE, LPRCTR.

LDATE  = SY-DATUM - 1 .
IF PDOC IS INITIAL .
  IF NOT PFROMD IS INITIAL AND PFROMD <= SY-DATUM.
    LDATE = PFROMD.
  ENDIF.
  SELECT GL_SIRID REFRYEAR REFDOCNR RPRCTR
  FROM GLPCA INTO TABLE IT_ID
  WHERE CPUDT <= SY-DATUM
    AND CPUDT >= LDATE.
ELSE.
  SELECT GL_SIRID REFRYEAR REFDOCNR RPRCTR
FROM GLPCA INTO TABLE IT_ID
WHERE  GL_SIRID = PDOC.

ENDIF.
LOOP AT IT_ID  WHERE RPRCTR <>  '9999999999'.
  DELETE IT_ID.

ENDLOOP .

LOOP AT IT_ID .
  CLEAR LPRCTR .
  SELECT SINGLE PRCTR FROM FAGLFLEXA INTO  LPRCTR
    WHERE RYEAR = IT_ID-REFRYEAR
      AND  DOCNR =  IT_ID-REFDOCNR .
*      AND PRCTR <> SPACE.        " 若对应Profit Center为空是否更新?

  IF SY-SUBRC = 0 AND  LPRCTR <> IT_ID-RPRCTR
   AND NOT LPRCTR  IS INITIAL.
    TRY.
*    For test .
        IF PTEST = '' .
          UPDATE GLPCA
          SET RPRCTR = LPRCTR
          WHERE  GL_SIRID = IT_ID-GL_SIRID.
        ENDIF.
        MOVE-CORRESPONDING IT_ID TO IT_DIS.
        IT_DIS-RPRCTROK = LPRCTR.
        APPEND IT_DIS.
      CATCH cx_sy_dynamic_osql_error.
        MESSAGE `Error in update!` TYPE 'E'.
    ENDTRY.

  ELSEIF  SY-SUBRC = 0 AND  LPRCTR <> IT_ID-RPRCTR
     AND  LPRCTR  IS INITIAL. .
      MOVE-CORRESPONDING IT_ID TO IT_DIS.
      APPEND IT_DIS.
  ENDIF.
  CLEAR IT_DIS.
ENDLOOP.

DATA l_tab_fieldcat TYPE slis_t_fieldcat_alv.
DATA L_LAYOUT TYPE SLIS_LAYOUT_ALV.
L_LAYOUT-f2code            = '&ETA'.

IF NOT IT_DIS[] IS INITIAL .

* 取得ALV表格
  PERFORM alv_fill_fieldcat CHANGING l_tab_fieldcat.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
*      i_callback_pf_status_set = 'alv_event_pf_status'
*      i_callback_user_command  = 'ALV_EVENT_USER_COMMAND'
       i_callback_html_top_of_page  = 'ALV_TOP_OF_PAGE'
       is_layout                = L_LAYOUT
      it_fieldcat              = l_tab_fieldcat
*      i_save                   = 'A'
*      is_variant               = l_variant
*      it_event_exit            = l_tab_exit
*      it_events                = l_tab_event
    TABLES
      t_outtab                 = IT_DIS
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDIF.


*&---------------------------------------------------------------------*
*&      Form  alv_fill_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_L_TAB_FIELDCAT  text
*----------------------------------------------------------------------*
FORM alv_fill_fieldcat  CHANGING tab_fieldcat  TYPE slis_t_fieldcat_alv.
  DATA rec_fieldcat TYPE LINE OF slis_t_fieldcat_alv.
  CLEAR tab_fieldcat.
  CLEAR rec_fieldcat.
  rec_fieldcat-fieldname = 'GL_SIRID'.
  rec_fieldcat-intlen = 20.
  rec_fieldcat-seltext_s = '行项目记录的记录编号'.
  rec_fieldcat-seltext_l =  '行项目记录的记录编号'.
  APPEND rec_fieldcat TO tab_fieldcat.
  CLEAR rec_fieldcat.

  rec_fieldcat-fieldname = 'REFRYEAR'.
  rec_fieldcat-seltext_s = '会计年度'.
  rec_fieldcat-seltext_l = '会计年度'.
  APPEND rec_fieldcat TO tab_fieldcat.

  rec_fieldcat-fieldname = 'REFDOCNR'.
  rec_fieldcat-seltext_s = '会计凭证号码'.
  rec_fieldcat-seltext_l = '会计凭证号码'.
  APPEND rec_fieldcat TO tab_fieldcat.

  rec_fieldcat-fieldname = 'RPRCTR'.
  rec_fieldcat-seltext_s = '错误利润中心'.
  rec_fieldcat-seltext_l = '错误利润中心'.
  APPEND rec_fieldcat TO tab_fieldcat.

  rec_fieldcat-fieldname = 'RPRCTROK'.
  rec_fieldcat-seltext_s = '正确利润中心'.
  rec_fieldcat-seltext_l = '正确利润中心'.
  APPEND rec_fieldcat TO tab_fieldcat.

ENDFORM.                    " alv_fill_fieldcat
*&---------------------------------------------------------------------*
*&      Form  ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_TOP_OF_PAGE USING cl_dd
                     TYPE REF TO cl_dd_document.            "#EC *
  data: lstring type SDYDO_TEXT_ELEMENT.
  if ptest is initial .
    lstring = '更新利润中心记录列表'.
  else.
    lstring = '更新利润中心记录列表(测试运行不会真正的修改数据库)'.
  endif.

  CALL METHOD cl_dd->add_text
    EXPORTING
      text         = lstring  "
      SAP_style    = cl_dd_document=>heading
      SAP_color    = cl_dd_document=>list_heading_int
      SAP_fontsize = cl_dd_document=>large
      SAP_emphasis = cl_dd_document=>strong
      style_class  = space.
*  CALL METHOD cl_dd->new_line
*    EXPORTING
*      repeat = 1.


ENDFORM.                    " ALV_TOP_OF_PAGE




该贴已经同步到 xiaoerp的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 01:07 , Processed in 0.019560 second(s), 18 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表