*&---------------------------------------------------------------------*
*& 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输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: VFLFAG TYPE C.
TYPES: BEGIN 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.
DATA: GT_DATA TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_B TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_C TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_D TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_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.
PARAMETERS: R1 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 .
DATA: GT_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(100) OCCURS 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.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_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.
FI-研发台账(开发笔记)
最新推荐文章于 2022-07-01 16:06:50 发布