FI-研发台账(开发笔记)

*&---------------------------------------------------------------------*
*& Report ZFIR109
*&---------------------------------------------------------------------*
*& Author              :  NathanSun
*& Create Date         :  2019-01-27
*& Program Type        :  Report
*& Description         :  研发台账
*&---------------------------------------------------------------------*
REPORT ZFIR109.

*&---------------------------------------------------------------------*
*& 包含               ZFIR092_TOP
*&---------------------------------------------------------------------*

TABLES:T001,BKPF,AUFK,PRPS.

TYPE-POOLS:SLIS.

"定义ALV输出所需变量
DATAS_LAYOUT       TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT    TYPE SLIS_T_FIELDCAT_ALV.
DATAVFLFAG         TYPE  C.
TYPESBEGIN OF GTS_DATA,

        RBUKRS            TYPE  ACDOCA-RBUKRS,           "公司代码
        BUTXT             TYPE  T001-BUTXT,              "公司名称
        ZUONR             TYPE  ACDOCA-ZUONR,            "项目:订单模式
        PS_PSP_PNR        TYPE  ACDOCA-PS_PSP_PNR,       "项目:WBS模式
        KTEXT             TYPE  AUFK-KTEXT,              "项目描述:订单模式
        POST1             TYPE  PRPS-POST1,              "项目描述:WBS模式
        RFAREA            TYPE  ACDOCA-RFAREA,           "功能范围
        FKBTX             TYPE  TFKBT-FKBTX,             "功能范围名称
        RACCT             TYPE  ACDOCA-RACCT,            "明细科目
        TXT20             TYPE  SKAT-TXT20,              "明细科目名称
        BUDAT             TYPE  ACDOCA-BUDAT,            "过账日期
        RYEAR             TYPE  ACDOCA-RYEAR,            "年度
        POPER             TYPE  ACDOCA-POPER,            "期间
        BELNR             TYPE  ACDOCA-BELNR,            "会计凭证
        DOCLN             TYPE  ACDOCA-DOCLN,            "行项目
        SGTXT             TYPE  ACDOCA-SGTXT,            "摘要
        DRCRK             TYPE  ACDOCA-DRCRK,            "借方/贷方标识
        HSL_S             TYPE  ACDOCA-HSL,              "借方本币金额
        HSL_H             TYPE  ACDOCA-HSL,              "贷方本币金额
        HSL               TYPE  ACDOCA-HSL,              "本币金额
        AUFEX             TYPE  AUFK-AUFEX,              "备注

      END OF GTS_DATA.

DATAGT_DATA   TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_B TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_C TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_D TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_E TYPE TABLE OF GTS_DATA WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS      P_GJAHR  LIKE BKPF-GJAHR  MODIF ID C1 OBLIGATORY.    "年度
SELECT-OPTIONS:
                S_BUKRS  FOR T001-BUKRS   MODIF ID C1 OBLIGATORY,    "公司代码
                S_MONAT  FOR BKPF-MONAT   MODIF ID C1 OBLIGATORY,    "期间
                S_AUFNR  FOR AUFK-AUFNR   MODIF ID C2,               "订单
                S_PSPNR  FOR PRPS-PSPNR   MODIF ID C3.               "WBS元素
SELECTION-SCREEN END   OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
PARAMETERSR1 RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND SINGLECLICK,
            R2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF BLOCK B3.
*&---------------------------------------------------------------------*
*& 包含               ZFIR092_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_MONTH_LASTDAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_MONTH_LASTDAY .
P_GJAHR SY-DATUM(4) .
S_BUKRS-LOW '1000' .
APPEND S_BUKRS .
S_MONAT-LOW SY-DATUM+4(2) .
APPEND S_MONAT .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SCREEN_OUTPUT .
  IF R1 'X'.
    LOOP AT SCREEN.
      IF SCREEN-GROUP1 'C3' .
        SCREEN-ACTIVE '0'.
      ENDIF.
      MODIFY SCREEN.
    ENDLOOP.
  ELSEIF R2 'X'.
    LOOP AT SCREEN.
      IF SCREEN-GROUP1 'C2'.
        SCREEN-ACTIVE '0'.
      ENDIF.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
  DATAGT_T001 TYPE TABLE OF T001 WITH HEADER LINE.
  DATA  LV_FLAG TYPE C.
  CLEAR LV_FLAG .
  CLEAR GT_T001[].
  SELECT BUKRS INTO CORRESPONDING FIELDS OF TABLE GT_T001[] FROM T001
    
WHERE BUKRS IN S_BUKRS .
  LOOP AT GT_T001.
   AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
    ID 'BUKRS' FIELD GT_T001-BUKRS.
    IF SY-SUBRC <> 0.
      LV_FLAG 'X' .
      EXIT .
    ENDIF.
    CLEAR GT_T001 .
  ENDLOOP.
  IF LV_FLAG IS NOT INITIAL.
    MESSAGE '您没有公司:'&& GT_T001-BUKRS && 的权限!TYPE 'E' .
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
*---------------------------------------动态SQL
  DATA WHERE_TAB(100OCCURS 10 WITH HEADER LINE.
  CLEAR WHERE_TAB .
  CLEAR GT_DATA[].
*  选择订单的radiobutton
  IF R1 IS NOT INITIAL.

*根据公司代码、年度、期间、记录类型(RRCTY = 0,分类账(RLDNR = 0L、功能范围=3000
*取表ACDOCA的相关数据、项目(ACDOCA-ZUONR);根据订单(AUFK-AUFNR=项目,取项目描述(AUFK-KTEXT)、外部订单号(AUFK-AUFEX
    SELECT
         ACDOCA~RBUKRS
         ACDOCA
~ZUONR
         ACDOCA
~PS_PSP_PNR
         ACDOCA
~RFAREA
         ACDOCA
~RACCT
         ACDOCA
~BUDAT
         ACDOCA
~RYEAR
         ACDOCA
~POPER
         ACDOCA
~BELNR
         ACDOCA
~DOCLN
         ACDOCA
~SGTXT
         ACDOCA
~DRCRK
         ACDOCA
~HSL
    
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
      
FROM ACDOCA
      
WHERE ACDOCA~RBUKRS  IN S_BUKRS
        
AND ACDOCA~RYEAR   =  P_GJAHR
        
AND ACDOCA~POPER   IN S_MONAT
        
AND ACDOCA~RRCTY   =  '0'
        AND ACDOCA~RLDNR   =  '0L'
        AND ACDOCA~RFAREA  =  '3000'
        AND ACDOCA~ZUONR   IN S_AUFNR
*        AND ACDOCA~NPLNR   = ''
*        AND ACDOCA~PS_PSP_PNR  <> '00000000'   .
        .

    LOOP AT GT_DATA.
      SELECT SINGLE KTEXT AUFEX INTO GT_DATA-KTEXT,GT_DATA-AUFEX FROM AUFK
        
WHERE AUFNR GT_DATA-ZUONR
        
.
      SELECT SINGLE FKBTX INTO  GT_DATA-FKBTX FROM TFKBT
        
WHERE FKBER GT_DATA-RFAREA
          
AND SPRAS 1
          .
      SELECT SINGLE TXT20 INTO  GT_DATA-TXT20 FROM SKAT
        
WHERE SAKNR GT_DATA-RACCT
          
AND KTOPL 'CP11'
          AND SPRAS 1
          .
      SELECT SINGLE BUTXT INTO  GT_DATA-BUTXT FROM T001
        
WHERE BUKRS GT_DATA-RBUKRS
          
.
      IF GT_DATA-DRCRK 'S'.
        GT_DATA-HSL_S GT_DATA-HSL .
      ELSEIF GT_DATA-DRCRK 'H'.
        GT_DATA-HSL_H GT_DATA-HSL .
      ENDIF.
      MODIFY GT_DATA .
      CLEAR  GT_DATA .
    ENDLOOP.

*  选择WBS元素的radiobutton
  ELSE.

*根据公司代码、年度、期间、记录类型(RRCTY = 0
*分类账(RLDNR = 0L、功能范围=3000、网络(NPLNR=空、WBS元素(ACDOCA-PS_PSP_PNR)不等于空,
*取表ACDOCA的相关数据;根据WBS元素(PRPS-PSPNR= WBS元素,取项目描述(PRPS-POST1)。
    SELECT
     ACDOCA~RBUKRS
     ACDOCA
~ZUONR
     ACDOCA
~PS_PSP_PNR
     ACDOCA
~RFAREA
     ACDOCA
~RACCT
     ACDOCA
~BUDAT
     ACDOCA
~RYEAR
     ACDOCA
~POPER
     ACDOCA
~BELNR
     ACDOCA
~DOCLN
     ACDOCA
~SGTXT
     ACDOCA
~DRCRK
     ACDOCA
~HSL
    
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
      
FROM ACDOCA
      
WHERE ACDOCA~RBUKRS  IN S_BUKRS
        
AND ACDOCA~RYEAR   =  P_GJAHR
        
AND ACDOCA~POPER   IN S_MONAT
        
AND ACDOCA~RRCTY   '0'
        AND ACDOCA~RLDNR   '0L'
        AND ACDOCA~RFAREA  '3000'
        AND ACDOCA~NPLNR   ''
        AND ACDOCA~PS_PSP_PNR  <> '00000000'
        AND ACDOCA~PS_PSP_PNR  IN S_PSPNR   .
        .

    LOOP AT GT_DATA.
      SELECT SINGLE POST1 INTO GT_DATA-POST1 FROM PRPS
        
WHERE PSPNR GT_DATA-PS_PSP_PNR
        
.
      SELECT SINGLE FKBTX INTO  GT_DATA-FKBTX FROM TFKBT
        
WHERE FKBER GT_DATA-RFAREA
          
AND SPRAS 1
          .
      SELECT SINGLE TXT20 INTO  GT_DATA-TXT20 FROM SKAT
        
WHERE SAKNR GT_DATA-RACCT
          
AND KTOPL 'CP11'
          AND SPRAS 1
          .
      SELECT SINGLE BUTXT INTO  GT_DATA-BUTXT FROM T001
        
WHERE BUKRS GT_DATA-RBUKRS
          
.
      IF GT_DATA-DRCRK 'S'.
        GT_DATA-HSL_S GT_DATA-HSL .
      ELSEIF GT_DATA-DRCRK 'H'.
        GT_DATA-HSL_H GT_DATA-HSL .
      ENDIF.
      MODIFY GT_DATA .
      CLEAR  GT_DATA .
    ENDLOOP.

  ENDIF.

  SORT GT_DATA[] BY RBUKRS ZUONR PS_PSP_PNR RYEAR POPER BELNR DOCLN .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
  CLEAR S_LAYOUT.
  S_LAYOUT-ZEBRA 'X'.
  S_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
*  s_layout-box_fieldname    = 'BOX'.
  PERFORM FRM_FILL_FIELD .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IS_LAYOUT                S_LAYOUT
      IT_FIELDCAT              
GT_FIELDCAT
      I_CALLBACK_PROGRAM       
SY-REPID
      I_CALLBACK_PF_STATUS_SET 
'PF_STATUS_SET'
*     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      I_CALLBACK_USER_COMMAND  'USER_COMMAND'
    TABLES
      T_OUTTAB                 GT_DATA[].
ENDFORM.

FORM FRM_FILL_FIELD .
  DATA:  WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  DEFINE FILL_FIELD.
    WA_FIELDCAT-FIELDNAME &1.
    WA_FIELDCAT-SELTEXT_L &2.

    IF WA_FIELDCAT-FIELDNAME 'HSL_S'
       OR WA_FIELDCAT-FIELDNAME 'HSL_H'
       OR WA_FIELDCAT-FIELDNAME 'HSL'
       .
       WA_FIELDCAT-DO_SUM    'X'.
    ENDIF.

    CASE WA_FIELDCAT-FIELDNAME.
      WHEN 'ZUONR'.
        IF R1 IS NOT INITIAL.
          APPEND WA_FIELDCAT TO GT_FIELDCAT.
        ENDIF.
      WHEN 'KTEXT'.
        IF R1 IS NOT INITIAL.
          APPEND WA_FIELDCAT TO GT_FIELDCAT.
        ENDIF.
      WHEN 'PS_PSP_PNR'.
        IF R2 IS NOT INITIAL.
          APPEND WA_FIELDCAT TO GT_FIELDCAT.
        ENDIF.
      WHEN 'POST1'.
        IF R2 IS NOT INITIAL.
          APPEND WA_FIELDCAT TO GT_FIELDCAT.
        ENDIF.
      WHEN OTHERS.
        APPEND WA_FIELDCAT TO GT_FIELDCAT.
    ENDCASE.
    CLEAR WA_FIELDCAT.

  END-OF-DEFINITION.

  FILL_FIELD :
        'RBUKRS'      '公司代码',
        'BUTXT'       '公司名称',
        'ZUONR'       '项目:订单模式',
        'KTEXT'       '项目描述:订单模式',
        'PS_PSP_PNR'  '项目:WBS模式',
        'POST1'       '项目描述:WBS模式',
        'RFAREA'      '功能范围',
        'FKBTX'       '功能范围名称',
        'RACCT'       '明细科目',
        'TXT20'       '明细科目名称',
        'BUDAT'       '过账日期',
        'RYEAR'       '年度',
        'POPER'       '期间',
        'BELNR'       '会计凭证',
        'DOCLN'       '行项目',
        'SGTXT'       '摘要',
        'DRCRK'       '借方/贷方标识',
        'HSL_S'       '借方本币金额',
        'HSL_H'       '贷方本币金额',
        'HSL'         '本币余额',
        'AUFEX'       '备注'.

ENDFORM.

FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.

FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
                    IS_SELFIELD 
TYPE SLIS_SELFIELD.
  DATAREF TYPE REF TO CL_GUI_ALV_GRID.
  DATA LV_STABLE TYPE LVC_S_STBL.   "刷新稳定性
  RANGESL_WERKS FOR T001W-WERKS.
  RANGESL_MATNR FOR MARA-MATNR.
  DATA:L_BUKRS TYPE T001K-BUKRS.

  LV_STABLE-ROW '1'.
  LV_STABLE-COL '1'.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID REF.
  CALL METHOD REF->CHECK_CHANGED_DATA.

  CASE I_UCOMM.
    WHEN 'DEL_DJ'.
  ENDCASE.

  CALL METHOD REF->REFRESH_TABLE_DISPLAY
    
EXPORTING
      IS_STABLE LV_STABLE.

ENDFORM.

INITIALIZATION .
  PERFORM GET_MONTH_LASTDAY.

AT SELECTION-SCREEN OUTPUT.
  PERFORM SCREEN_OUTPUT.

AT SELECTION-SCREEN.
  PERFORM SCREEN_SETTING.

START-OF-SELECTION.
  PERFORM FOM_GETDATA.
  PERFORM FRM_DISPLAY.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值