经过了一系列的大餐,就不能再少了SmartForm的应用咯。当然这个例子还包括了include,和
去前导零 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
先来看看ZFI006
紧跟着就来欣赏一下ZFI006F00跟ZFI006F01
ZFI006F00
当然SmartForm就得先在Tcode:SMARTFORMS下建立相应的,有不熟悉的童鞋可以参考:
先来看看ZFI006
- REPORT ZFI006.
- TABLES: BSEG,BKPF,SKAT,LFA1,VBSEGS .
- TYPE-POOLS: SLIS.
- INCLUDE ZFI006TOP.
- SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
- SELECT-OPTIONS:
- S_BUKRS FOR BKPF-BUKRS Default 5000, "CoCode
- S_BELNR FOR BKPF-BELNR OBLIGATORY, "FI Doc
- S_GJAHR FOR BKPF-GJAHR , "Fiscal Year
- S_BLART FOR BKPF-BLART no-display, "Doc Type
- S_BLDAT FOR BKPF-BLDAT no-display, "Doc Date
- S_BUDAT FOR BKPF-BUDAT. "Posting Date
- SELECTION-SCREEN END OF BLOCK b1.
- INCLUDE ZFI006F00.
- INCLUDE ZFI006F01.
- INITIALIZATION.
- AT SELECTION-SCREEN OUTPUT.
- START-OF-SELECTION.
- PERFORM GET_BSEG.
- PERFORM PROCESS_DATA.
- PERFORM CAL_DATA.
- PERFORM EVENTS_BUILD.
- PERFORM LAYOUT_BUILD.
- PERFORM FIELDS_BUILD.
- PERFORM DISPLAY_DATA.
- END-OF-SELECTION.
- TOP-OF-PAGE.
- AT USER-COMMAND.
- AT LINE-SELECTION.
REPORT ZFI006.
TABLES: BSEG,BKPF,SKAT,LFA1,VBSEGS .
TYPE-POOLS: SLIS.
INCLUDE ZFI006TOP.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_BUKRS FOR BKPF-BUKRS Default 5000, "CoCode
S_BELNR FOR BKPF-BELNR OBLIGATORY, "FI Doc
S_GJAHR FOR BKPF-GJAHR , "Fiscal Year
S_BLART FOR BKPF-BLART no-display, "Doc Type
S_BLDAT FOR BKPF-BLDAT no-display, "Doc Date
S_BUDAT FOR BKPF-BUDAT. "Posting Date
SELECTION-SCREEN END OF BLOCK b1.
INCLUDE ZFI006F00.
INCLUDE ZFI006F01.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
START-OF-SELECTION.
PERFORM GET_BSEG.
PERFORM PROCESS_DATA.
PERFORM CAL_DATA.
PERFORM EVENTS_BUILD.
PERFORM LAYOUT_BUILD.
PERFORM FIELDS_BUILD.
PERFORM DISPLAY_DATA.
END-OF-SELECTION.
TOP-OF-PAGE.
AT USER-COMMAND.
AT LINE-SELECTION.
再来看它所包括的ZFI006Top(主要是定义数据)
- *&---------------------------------------------------------------------*
- *& 包括 ZFI006TOP
- *&---------------------------------------------------------------------*
- DATA:
- I_FIELDCAT_ALV TYPE SLIS_T_FIELDCAT_ALV,
- I_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
- I_LAYOUT TYPE SLIS_LAYOUT_ALV,
- I_EVENTS TYPE SLIS_T_EVENT,
- W_EVENTS LIKE LINE OF I_EVENTS,
- I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
- W_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS,
- W_REPID LIKE SY-REPID.
- DATA: G_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_02'. "加工具栏
- DATA: BEGIN OF I_BKPF OCCURS 0,
- BUKRS LIKE BKPF-BUKRS, "CoCode
- BELNR LIKE BKPF-BELNR, "FI Doc
- GJAHR LIKE BKPF-GJAHR, "Fiscal Year
- BLART LIKE BKPF-BLART, "Doc Type
- BLDAT LIKE BKPF-BLDAT, "Doc Date
- BUDAT LIKE BKPF-BUDAT, "Posting Date
- BKTXT LIKE BKPF-BKTXT, "抬头文本
- TCODE LIKE BKPF-TCODE, "Transaction Code
- AWKEY LIKE BKPF-AWKEY, "Reference Doc
- BSTAT LIKE BKPF-BSTAT, "Document Status
- USNAM LIKE BKPF-USNAM,
- WAERS LIKE BKPF-WAERS, "币别
- XBLNR LIKE BKPF-XBLNR, "参照号
- END OF I_BKPF.
- DATA: BEGIN OF I_BSEG OCCURS 0,
- BUKRS LIKE BKPF-BUKRS,
- BELNR LIKE BKPF-BELNR, "
- GJAHR LIKE BKPF-GJAHR,
- BUZEI LIKE BSEG-BUZEI,
- SHKZG LIKE BSEG-SHKZG, "借/贷
- PSWSL LIKE BSEG-PSWSL,
- WRBTR LIKE BSEG-WRBTR, "本位币金额
- PSWBT LIKE BSEG-PSWBT,
- SAKNR LIKE BSEG-SAKNR, "总帐科目
- HKONT LIKE BSEG-HKONT, "会计科目
- BSCHL LIKE BSEG-BSCHL,
- LIFNR LIKE BSEG-LIFNR,
- UMSKZ LIKE BSEG-UMSKZ,
- SGTXT LIKE BSEG-SGTXT, "摘要
- ZUONR LIKE BSEG-ZUONR, "分配号码
- NAME1 LIKE LFA1-NAME1,
- TXT20 LIKE SKAT-TXT20, "会计科目名称
- END OF I_BSEG.
- DATA: BEGIN OF T_SKAT OCCURS 0,
- SAKNR LIKE SKAT-SAKNR,
- TXT20 LIKE SKAT-TXT20,
- END OF T_SKAT.
- DATA W_LEN TYPE I.
- *
- DATA: BEGIN OF T_DATA OCCURS 0,
- BUKRS LIKE BKPF-BUKRS,
- BELNR LIKE BKPF-BELNR,
- GJAHR LIKE BKPF-GJAHR,
- BLART LIKE BKPF-BLART,
- BLDAT LIKE BKPF-BLDAT,
- BUDAT LIKE BKPF-BUDAT,
- TCODE LIKE BKPF-TCODE,
- AWKEY LIKE BKPF-AWKEY,
- BSTAT LIKE BKPF-BSTAT,
- USNAM LIKE BKPF-USNAM,
- WAERS LIKE BKPF-WAERS, "币别
- XBLNR LIKE BKPF-XBLNR, "参照号
- BUZEI LIKE BSEG-BUZEI,
- SHKZG LIKE BSEG-SHKZG,
- PSWSL LIKE BSEG-PSWSL,
- WRBTR LIKE BSEG-WRBTR,
- PSWBT LIKE BSEG-PSWBT,
- SAKNR LIKE BSEG-SAKNR,
- HKONT LIKE BSEG-HKONT,
- BSCHL LIKE BSEG-BSCHL,
- LIFNR LIKE BSEG-LIFNR,
- UMSKZ LIKE BSEG-UMSKZ,
- SGTXT LIKE BSEG-SGTXT,
- NAME1 LIKE LFA1-NAME1,
- TXT20 LIKE SKAT-TXT20,
- BKTXT LIKE BKPF-BKTXT,
- ZUONR LIKE BSEG-ZUONR, "分配号码
- BOX(1),
- END OF T_DATA.
- DATA: BEGIN OF ZITAB OCCURS 0.
- INCLUDE STRUCTURE ZMDOC_A.
- DATA: END OF ZITAB.
- DATA: W_ZITAB LIKE LINE OF ZITAB.
- DATA: I_ZITAB LIKE ZITAB OCCURS 0 WITH HEADER LINE.
- DATA: W_LOOP TYPE SY-TABIX.
- DATA: NN TYPE I.
- DATA: RCOUNT TYPE I.
- DATA SCOUNT(8).
- DATA LSTR(20).
- DATA: P_CLASS(4).
- DATA: DIFF TYPE I.
- DATA: DIFT TYPE I.
- DATA: FNAME(30) VALUE 'ZFI06_SMARTFORM'.
- DATA: FM_NAME TYPE RS38L_FNAM.
- DATA: S1(8),S2(5),S3(8).
- DATA: LABNOTE(30).
- DATA: _BELNR TYPE BKPF-BELNR, "付款凭证号
- WRBTR1 LIKE BSEG-WRBTR, "合计贷方金额
- WRBTR2 LIKE BSEG-WRBTR, "合计借方金额
- WAERS1 LIKE BKPF-WAERS, "币别
- XBLNR1 LIKE BKPF-XBLNR. "分配号
- DATA: HDATE TYPE SY-DATUM.
- DATA: P1(255).
- DATA: CMP TYPE I.
- DATA: P_NUM TYPE I.
*&---------------------------------------------------------------------*
*& 包括 ZFI006TOP
*&---------------------------------------------------------------------*
DATA:
I_FIELDCAT_ALV TYPE SLIS_T_FIELDCAT_ALV,
I_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
I_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_EVENTS TYPE SLIS_T_EVENT,
W_EVENTS LIKE LINE OF I_EVENTS,
I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
W_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS,
W_REPID LIKE SY-REPID.
DATA: G_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_02'. "加工具栏
DATA: BEGIN OF I_BKPF OCCURS 0,
BUKRS LIKE BKPF-BUKRS, "CoCode
BELNR LIKE BKPF-BELNR, "FI Doc
GJAHR LIKE BKPF-GJAHR, "Fiscal Year
BLART LIKE BKPF-BLART, "Doc Type
BLDAT LIKE BKPF-BLDAT, "Doc Date
BUDAT LIKE BKPF-BUDAT, "Posting Date
BKTXT LIKE BKPF-BKTXT, "抬头文本
TCODE LIKE BKPF-TCODE, "Transaction Code
AWKEY LIKE BKPF-AWKEY, "Reference Doc
BSTAT LIKE BKPF-BSTAT, "Document Status
USNAM LIKE BKPF-USNAM,
WAERS LIKE BKPF-WAERS, "币别
XBLNR LIKE BKPF-XBLNR, "参照号
END OF I_BKPF.
DATA: BEGIN OF I_BSEG OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR, "
GJAHR LIKE BKPF-GJAHR,
BUZEI LIKE BSEG-BUZEI,
SHKZG LIKE BSEG-SHKZG, "借/贷
PSWSL LIKE BSEG-PSWSL,
WRBTR LIKE BSEG-WRBTR, "本位币金额
PSWBT LIKE BSEG-PSWBT,
SAKNR LIKE BSEG-SAKNR, "总帐科目
HKONT LIKE BSEG-HKONT, "会计科目
BSCHL LIKE BSEG-BSCHL,
LIFNR LIKE BSEG-LIFNR,
UMSKZ LIKE BSEG-UMSKZ,
SGTXT LIKE BSEG-SGTXT, "摘要
ZUONR LIKE BSEG-ZUONR, "分配号码
NAME1 LIKE LFA1-NAME1,
TXT20 LIKE SKAT-TXT20, "会计科目名称
END OF I_BSEG.
DATA: BEGIN OF T_SKAT OCCURS 0,
SAKNR LIKE SKAT-SAKNR,
TXT20 LIKE SKAT-TXT20,
END OF T_SKAT.
DATA W_LEN TYPE I.
*
DATA: BEGIN OF T_DATA OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
BLART LIKE BKPF-BLART,
BLDAT LIKE BKPF-BLDAT,
BUDAT LIKE BKPF-BUDAT,
TCODE LIKE BKPF-TCODE,
AWKEY LIKE BKPF-AWKEY,
BSTAT LIKE BKPF-BSTAT,
USNAM LIKE BKPF-USNAM,
WAERS LIKE BKPF-WAERS, "币别
XBLNR LIKE BKPF-XBLNR, "参照号
BUZEI LIKE BSEG-BUZEI,
SHKZG LIKE BSEG-SHKZG,
PSWSL LIKE BSEG-PSWSL,
WRBTR LIKE BSEG-WRBTR,
PSWBT LIKE BSEG-PSWBT,
SAKNR LIKE BSEG-SAKNR,
HKONT LIKE BSEG-HKONT,
BSCHL LIKE BSEG-BSCHL,
LIFNR LIKE BSEG-LIFNR,
UMSKZ LIKE BSEG-UMSKZ,
SGTXT LIKE BSEG-SGTXT,
NAME1 LIKE LFA1-NAME1,
TXT20 LIKE SKAT-TXT20,
BKTXT LIKE BKPF-BKTXT,
ZUONR LIKE BSEG-ZUONR, "分配号码
BOX(1),
END OF T_DATA.
DATA: BEGIN OF ZITAB OCCURS 0.
INCLUDE STRUCTURE ZMDOC_A.
DATA: END OF ZITAB.
DATA: W_ZITAB LIKE LINE OF ZITAB.
DATA: I_ZITAB LIKE ZITAB OCCURS 0 WITH HEADER LINE.
DATA: W_LOOP TYPE SY-TABIX.
DATA: NN TYPE I.
DATA: RCOUNT TYPE I.
DATA SCOUNT(8).
DATA LSTR(20).
DATA: P_CLASS(4).
DATA: DIFF TYPE I.
DATA: DIFT TYPE I.
DATA: FNAME(30) VALUE 'ZFI06_SMARTFORM'.
DATA: FM_NAME TYPE RS38L_FNAM.
DATA: S1(8),S2(5),S3(8).
DATA: LABNOTE(30).
DATA: _BELNR TYPE BKPF-BELNR, "付款凭证号
WRBTR1 LIKE BSEG-WRBTR, "合计贷方金额
WRBTR2 LIKE BSEG-WRBTR, "合计借方金额
WAERS1 LIKE BKPF-WAERS, "币别
XBLNR1 LIKE BKPF-XBLNR. "分配号
DATA: HDATE TYPE SY-DATUM.
DATA: P1(255).
DATA: CMP TYPE I.
DATA: P_NUM TYPE I.
紧跟着就来欣赏一下ZFI006F00跟ZFI006F01
ZFI006F00
- *&---------------------------------------------------------------------*
- *& 包括 ZFI006F00
- *&---------------------------------------------------------------------*
- *-----------------------------------------------------------------------
- * FORM PF_STATUS_SET 加工具栏
- *-----------------------------------------------------------------------
- FORM STANDARD_02 USING EXTAB TYPE SLIS_T_EXTAB.
- SET PF-STATUS 'STD' EXCLUDING EXTAB.
- ENDFORM. "STANDARD_02
- *&---------------------------------------------------------------------*
- *& Form DISPLAY_DATA
- *&---------------------------------------------------------------------*
- FORM DISPLAY_DATA .
- * CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
- EXPORTING
- I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "用户触发事件
- I_CALLBACK_PF_STATUS_SET = G_STATUS "调用用户事件和按钮事件
- I_CALLBACK_PROGRAM = W_REPID "当前程序
- IS_LAYOUT = I_LAYOUT "子函数layout_build填充的格式定义
- IT_FIELDCAT = I_FIELDCAT_ALV[] "子函数fields填充的各列
- IT_EVENTS = I_EVENTS[]
- I_SAVE = 'A' "保存变式
- TABLES
- T_OUTTAB = T_DATA. "T_DATA. "假设数据都在itab内表中
- ENDFORM. " DISPLAY_DATA
- *&---------------------------------------------------------------------*
- *& Form LAYOUT_BUILD
- *&---------------------------------------------------------------------*
- FORM LAYOUT_BUILD .
- * i_layout-detail_popup = 'X'. "弹出详细信息窗口
- * i-layout-no_vline = 'X'. "设置列间隔线
- I_LAYOUT-INFO_FIELDNAME = 'COLOR'. "颜色值
- * I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽选项
- I_LAYOUT-DETAIL_INITIAL_LINES = 'X'.
- I_LAYOUT-DETAIL_TITLEBAR = '会计报表'.
- I_LAYOUT-NO_COLHEAD =' '.
- W_REPID = SY-REPID.
- ENDFORM. " LAYOUT_BUILD
- *&---------------------------------------------------------------------*
- *& Form EVENTS_BUILD
- *&---------------------------------------------------------------------*
- FORM EVENTS_BUILD .
- CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
- EXPORTING
- I_LIST_TYPE = 0
- IMPORTING
- ET_EVENTS = I_EVENTS.
- ** 页眉
- * READ TABLE I_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' INTO W_EVENTS.
- * IF SY-SUBRC = 0.
- * MOVE 'ALV_TOP_OF_PAGE' TO W_EVENTS-FORM.
- * MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
- * ENDIF.
- * 页尾
- READ TABLE I_EVENTS WITH KEY NAME = 'END_OF_LIST' INTO W_EVENTS.
- IF SY-SUBRC = 0.
- MOVE 'ALV_END_OF_LIST' TO W_EVENTS-FORM.
- MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
- ENDIF.
- * 页跳转
- READ TABLE I_EVENTS WITH KEY NAME = 'USER_COMMAND' INTO W_EVENTS.
- IF SY-SUBRC = 0.
- MOVE 'USER_COMMAND' TO W_EVENTS-FORM.
- MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
- ENDIF.
- ENDFORM. " EVENTS_BUILD
- *&--------------------------------------------------------------------*
- *& Form ALV_TOP_OF_PAGE
- *&--------------------------------------------------------------------*
- FORM ALV_TOP_OF_PAGE.
- * DATA: DEP(20),
- * SDATE(50).
- * CONCATENATE '部 门:' DEPNAME INTO DEP.
- * CONCATENATE '方 式:' P1 INTO SDATE.
- *
- * CLEAR: I_LIST_COMMENTS.
- * W_LIST_COMMENTS-TYP = 'S'.
- * W_LIST_COMMENTS-KEY = ''.
- * W_LIST_COMMENTS-INFO = DEP.
- * APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
- * CLEAR W_LIST_COMMENTS.
- *
- * CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
- * EXPORTING
- * IT_LIST_COMMENTARY = I_LIST_COMMENTS
- * I_END_OF_LIST_GRID = 'X'.
- ENDFORM. "ALV_END_OF_LIST
- *&--------------------------------------------------------------------*
- *& Form ALV_END_OF_LIST
- *&--------------------------------------------------------------------*
- FORM ALV_END_OF_LIST.
- CLEAR: I_LIST_COMMENTS.
- W_LIST_COMMENTS-TYP = 'H'.
- W_LIST_COMMENTS-KEY = ''.
- W_LIST_COMMENTS-INFO = LSTR.
- APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
- CLEAR W_LIST_COMMENTS.
- W_LIST_COMMENTS-TYP = 'S'.
- W_LIST_COMMENTS-KEY = ''.
- W_LIST_COMMENTS-INFO = ' 报表开发者:IT部--Jasson.Lee 开发日期:2011/06/02'.
- APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
- CLEAR W_LIST_COMMENTS.
- CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
- EXPORTING
- IT_LIST_COMMENTARY = I_LIST_COMMENTS
- I_END_OF_LIST_GRID = 'X'.
- ENDFORM. "ALV_END_OF_LIST
- *&---------------------------------------------------------------------*
- *& Form USER_COMMAND
- *&---------------------------------------------------------------------*
- FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
- SELFIELD TYPE SLIS_SELFIELD.
- CLEAR T_DATA.
- READ TABLE T_DATA INDEX SELFIELD-TABINDEX.
- CASE I_UCOMM.
- WHEN '&IC1'.
- CASE SELFIELD-SEL_TAB_FIELD.
- WHEN 'T_DATA-BELNR'.
- SET PARAMETER ID 'BLN' FIELD T_DATA-BELNR.
- SET PARAMETER ID 'BUK' FIELD T_DATA-BUKRS.
- SET PARAMETER ID 'GJR' FIELD T_DATA-GJAHR.
- CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
- ENDCASE.
- WHEN '&PRT'.
- PERFORM GET_ZITAB.
- PERFORM PRINT_FROM.
- WHEN OTHERS.
- ENDCASE.
- ENDFORM. "callback_ucomm
- *&---------------------------------------------------------------------*
- *& Form GET_BSEG
- *&---------------------------------------------------------------------*
- FORM GET_BSEG .
- SELECT BUKRS BELNR GJAHR BLART BLDAT BUDAT BKTXT TCODE AWKEY BSTAT USNAM WAERS XBLNR
- INTO TABLE I_BKPF
- FROM BKPF
- WHERE BUKRS IN S_BUKRS AND BELNR IN S_BELNR AND BLDAT IN S_BLDAT
- AND GJAHR IN S_GJAHR AND BLART IN S_BLART AND BUDAT IN S_BUDAT.
- IF I_BKPF[] IS INITIAL.
- MESSAGE I000(ZMSG) WITH '没找到对应的数据,请更改查询条件'.
- LEAVE LIST-PROCESSING.
- ENDIF.
- SELECT BUKRS BELNR GJAHR BUZEI SHKZG PSWSL WRBTR PSWBT SAKNR HKONT BSCHL LIFNR UMSKZ SGTXT ZUONR
- INTO TABLE I_BSEG
- FROM BSEG
- FOR ALL ENTRIES IN I_BKPF
- WHERE BUKRS = I_BKPF-BUKRS AND BELNR = I_BKPF-BELNR AND GJAHR = I_BKPF-GJAHR.
- SELECT BUKRS BELNR GJAHR BUZEI SHKZG WRBTR SAKNR SAKNR AS HKONT BSCHL SGTXT ZUONR
- INTO CORRESPONDING FIELDS OF TABLE I_BSEG
- FROM VBSEGS "BSEG
- FOR ALL ENTRIES IN I_BKPF
- WHERE BUKRS = I_BKPF-BUKRS AND BELNR = I_BKPF-BELNR AND GJAHR = I_BKPF-GJAHR.
- ENDFORM. " GET_MSEG
- *&---------------------------------------------------------------------*
- *& Form PROCESS_DATA
- *&---------------------------------------------------------------------*
- FORM PROCESS_DATA .
- DATA: _NAME1 LIKE LFA1-NAME1.
- DATA: _TXT20 LIKE SKAT-TXT20.
- SORT I_BSEG BY BUKRS GJAHR BELNR.
- SORT I_BKPF BY BUKRS GJAHR BELNR.
- LOOP AT I_BSEG.
- W_LOOP = SY-TABIX.
- CLEAR I_BKPF.
- READ TABLE I_BKPF WITH KEY BUKRS = I_BSEG-BUKRS BELNR = I_BSEG-BELNR GJAHR = I_BSEG-GJAHR BINARY SEARCH.
- IF SY-SUBRC = 0.
- T_DATA-BLART = I_BKPF-BLART.
- T_DATA-BLDAT = I_BKPF-BLDAT.
- T_DATA-BUDAT = I_BKPF-BUDAT.
- T_DATA-TCODE = I_BKPF-TCODE.
- T_DATA-AWKEY = I_BKPF-AWKEY.
- T_DATA-BSTAT = I_BKPF-BSTAT.
- T_DATA-USNAM = I_BKPF-USNAM.
- T_DATA-BKTXT = I_BKPF-BKTXT.
- T_DATA-WAERS = I_BKPF-WAERS.
- T_DATA-XBLNR = I_BKPF-XBLNR.
- MODIFY I_BSEG INDEX W_LOOP.
- ENDIF.
- T_DATA-BUKRS = I_BSEG-BUKRS.
- T_DATA-BELNR = I_BSEG-BELNR.
- T_DATA-GJAHR = I_BSEG-GJAHR.
- T_DATA-BUZEI = I_BSEG-BUZEI.
- T_DATA-SHKZG = I_BSEG-SHKZG.
- T_DATA-PSWSL = I_BSEG-PSWSL.
- IF I_BSEG-SHKZG = 'H'.
- T_DATA-WRBTR = I_BSEG-WRBTR * ( -1 ).
- ELSE.
- T_DATA-WRBTR = I_BSEG-WRBTR.
- ENDIF.
- T_DATA-PSWBT = I_BSEG-PSWBT.
- T_DATA-SAKNR = I_BSEG-SAKNR.
- T_DATA-HKONT = I_BSEG-HKONT.
- T_DATA-BSCHL = I_BSEG-BSCHL.
- T_DATA-LIFNR = I_BSEG-LIFNR.
- T_DATA-UMSKZ = I_BSEG-UMSKZ.
- T_DATA-SGTXT = I_BSEG-SGTXT.
- T_DATA-ZUONR = I_BSEG-ZUONR.
- T_DATA-NAME1 = I_BSEG-NAME1.
- T_DATA-TXT20 = I_BSEG-TXT20.
- *供应商
- _NAME1 = ''.
- SELECT NAME1 INTO _NAME1 FROM LFA1 WHERE LIFNR = I_BSEG-LIFNR.
- IF _NAME1 <> ''.
- T_DATA-NAME1 = _NAME1.
- ENDIF.
- ENDSELECT.
- *科目名称
- _TXT20 = ''.
- SELECT TXT20 INTO _TXT20 FROM SKAT WHERE SAKNR = T_DATA-HKONT AND SPRAS = SY-LANGU AND KTOPL = 'INT'.
- IF _TXT20 <> ''.
- T_DATA-TXT20 = _TXT20.
- ENDIF.
- ENDSELECT.
- APPEND T_DATA.
- SY-TABIX = W_LOOP + 1.
- ENDLOOP.
- ENDFORM. " PROCESS_DATA
- *&---------------------------------------------------------------------*
- *& Form CAL_DATA
- *&---------------------------------------------------------------------*
- FORM CAL_DATA .
- DESCRIBE TABLE T_DATA LINES RCOUNT.
- SCOUNT = RCOUNT.
- CONCATENATE '要打印的付款凭证数:' SCOUNT INTO LSTR.
- IF T_DATA[] IS INITIAL.
- MESSAGE I000(ZMSG) WITH '没找到对应的查询数据,请更改查询条件.'.
- LEAVE LIST-PROCESSING.
- ENDIF.
- ENDFORM. " CAL_DATA
- *&---------------------------------------------------------------------*
- *& Form GET_ZITAB
- *&---------------------------------------------------------------------*
- FORM GET_ZITAB .
- DATA: OUTPUT1(10) TYPE C.
- LABNOTE = ''.
- _BELNR =
- WRBTR1 = 0.
- WRBTR2 = 0.
- WAERS1 = ''. "币别
- XBLNR1 = ''. "分配号
- CLEAR ZITAB[].
- SORT T_DATA BY BELNR BUZEI .
- CLEAR ZITAB[].
- LOOP AT T_DATA WHERE BOX = 'X'.
- W_LOOP = SY-TABIX.
- _BELNR = T_DATA-BELNR.
- WAERS1 = T_DATA-WAERS. "币别
- XBLNR1 = T_DATA-XBLNR. "分配号
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
- EXPORTING
- INPUT = T_DATA-HKONT
- IMPORTING
- OUTPUT = OUTPUT1.
- IF OUTPUT1+0(3) = '113'.
- CONCATENATE T_DATA-TXT20 ' ('OUTPUT1 ')' INTO LABNOTE. "银行名称
- ENDIF.
- ZITAB-WERKS = T_DATA-BUKRS. "公司
- ZITAB-AUFNR = T_DATA-BELNR. "付款凭证单号
- ZITAB-LDDAT = T_DATA-BUDAT. "过帐日期
- ZITAB-PAKTX = T_DATA-SGTXT+0(39). "摘要
- ZITAB-PATNR = T_DATA-ZUONR. "分配号码
- IF T_DATA-SHKZG = 'S'.
- ZITAB-SID = 'DR'. "借
- ZITAB-MBLNR = T_DATA-WRBTR. "贷方金额
- ZITAB-EBELN = ''.
- WRBTR1 = WRBTR1 + T_DATA-WRBTR.
- ELSE.
- ZITAB-SID = 'CR'. "贷
- ZITAB-MBLNR = ''.
- ZITAB-EBELN = T_DATA-WRBTR * ( -1 ). "贷方金额
- WRBTR2 = WRBTR2 + T_DATA-WRBTR * ( -1 ).
- ENDIF.
- IF T_DATA-LIFNR = ''.
- CONCATENATE T_DATA-TXT20 ' ('OUTPUT1 ')' INTO ZITAB-MAKTX. "会计科目名称
- ELSE.
- CONCATENATE T_DATA-NAME1 ' ('OUTPUT1 ')' INTO ZITAB-MAKTX. "会计科目名称
- ENDIF.
- APPEND ZITAB.
- SY-TABIX = W_LOOP.
- ENDLOOP.
- ENDFORM. " GET_ZITAB
- *&---------------------------------------------------------------------*
- *& Form PRINT_FROM
- *&---------------------------------------------------------------------*
- FORM PRINT_FROM .
- DATA: LS_CONTROL_PARAM TYPE SSFCTRLOP .
- DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP .
- DATA: OUTOPT TYPE SSFCRESOP.
- DATA: I_JOB_OUTPUT_INFO TYPE SSFCRESCL.
- LS_CONTROL_PARAM-LANGU = '1'.
- LS_CONTROL_PARAM-NO_OPEN = 'X'.
- LS_CONTROL_PARAM-NO_CLOSE = 'X'.
- CALL FUNCTION 'SSF_OPEN'
- EXPORTING
- CONTROL_PARAMETERS = LS_CONTROL_PARAM
- OUTPUT_OPTIONS = LS_COMPOSER_PARAM
- IMPORTING
- JOB_OUTPUT_OPTIONS = OUTOPT
- EXCEPTIONS
- FORMATTING_ERROR = 1
- INTERNAL_ERROR = 2
- SEND_ERROR = 3
- USER_CANCELED = 4
- OTHERS = 5.
- IF SY-SUBRC <> 0.
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- EXIT.
- ENDIF.
- * 根据SmartForm 名称获得Form的 Function Name
- FNAME = 'ZFI06_SMARTFORM'. "列印格式
- CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
- EXPORTING
- FORMNAME = FNAME
- * VARIANT = ' '
- * DIRECT_CALL = ' '
- IMPORTING
- FM_NAME = FM_NAME
- EXCEPTIONS
- NO_FORM = 1
- NO_FUNCTION_MODULE = 2
- OTHERS = 3 .
- IF SY-SUBRC <> 0.
- MESSAGE 'Call SSF_FUNCTION_MODULE_NAME Error' TYPE 'E'.
- ENDIF.
- IF SY-SUBRC <> 0.
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- ENDIF.
- * LOOP AT ZITAB INTO W_ZITAB.
- * MOVE-CORRESPONDING W_ZITAB TO I_ZITAB.
- CALL FUNCTION FM_NAME
- EXPORTING
- CONTROL_PARAMETERS = LS_CONTROL_PARAM
- OUTPUT_OPTIONS = LS_COMPOSER_PARAM
- PARA1 = _BELNR
- PARA2 = LABNOTE
- PARA3 = WRBTR1
- PARA4 = WRBTR2
- PARA5 = WAERS1
- PARA6 = XBLNR1
- TABLES
- ZITAB = ZITAB
- EXCEPTIONS
- FORMATTING_ERROR = 1
- INTERNAL_ERROR = 2
- SEND_ERROR = 3
- USER_CANCELED = 4
- OTHERS = 5.
- IF SY-SUBRC <> 0.
- MESSAGE 'Call SmartForms Error' TYPE 'E'.
- ENDIF.
- IF OUTOPT-TDPREVIEW = 'X'.
- * EXIT. "是否全部预览
- ENDIF.
- * CLEAR I_ZITAB[].
- * ENDLOOP.
- CALL FUNCTION 'SSF_CLOSE'
- IMPORTING
- JOB_OUTPUT_INFO = I_JOB_OUTPUT_INFO
- EXCEPTIONS
- FORMATTING_ERROR = 1
- INTERNAL_ERROR = 2
- SEND_ERROR = 3
- OTHERS = 4.
- IF SY-SUBRC <> 0.
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- ENDIF.
- ENDFORM. " PRINT_FROM
*&---------------------------------------------------------------------*
*& 包括 ZFI006F00
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* FORM PF_STATUS_SET 加工具栏
*-----------------------------------------------------------------------
FORM STANDARD_02 USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STD' EXCLUDING EXTAB.
ENDFORM. "STANDARD_02
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM DISPLAY_DATA .
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "用户触发事件
I_CALLBACK_PF_STATUS_SET = G_STATUS "调用用户事件和按钮事件
I_CALLBACK_PROGRAM = W_REPID "当前程序
IS_LAYOUT = I_LAYOUT "子函数layout_build填充的格式定义
IT_FIELDCAT = I_FIELDCAT_ALV[] "子函数fields填充的各列
IT_EVENTS = I_EVENTS[]
I_SAVE = 'A' "保存变式
TABLES
T_OUTTAB = T_DATA. "T_DATA. "假设数据都在itab内表中
ENDFORM. " DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
FORM LAYOUT_BUILD .
* i_layout-detail_popup = 'X'. "弹出详细信息窗口
* i-layout-no_vline = 'X'. "设置列间隔线
I_LAYOUT-INFO_FIELDNAME = 'COLOR'. "颜色值
* I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽选项
I_LAYOUT-DETAIL_INITIAL_LINES = 'X'.
I_LAYOUT-DETAIL_TITLEBAR = '会计报表'.
I_LAYOUT-NO_COLHEAD =' '.
W_REPID = SY-REPID.
ENDFORM. " LAYOUT_BUILD
*&---------------------------------------------------------------------*
*& Form EVENTS_BUILD
*&---------------------------------------------------------------------*
FORM EVENTS_BUILD .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = I_EVENTS.
** 页眉
* READ TABLE I_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' INTO W_EVENTS.
* IF SY-SUBRC = 0.
* MOVE 'ALV_TOP_OF_PAGE' TO W_EVENTS-FORM.
* MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
* ENDIF.
* 页尾
READ TABLE I_EVENTS WITH KEY NAME = 'END_OF_LIST' INTO W_EVENTS.
IF SY-SUBRC = 0.
MOVE 'ALV_END_OF_LIST' TO W_EVENTS-FORM.
MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
ENDIF.
* 页跳转
READ TABLE I_EVENTS WITH KEY NAME = 'USER_COMMAND' INTO W_EVENTS.
IF SY-SUBRC = 0.
MOVE 'USER_COMMAND' TO W_EVENTS-FORM.
MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " EVENTS_BUILD
*&--------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&--------------------------------------------------------------------*
FORM ALV_TOP_OF_PAGE.
* DATA: DEP(20),
* SDATE(50).
* CONCATENATE '部 门:' DEPNAME INTO DEP.
* CONCATENATE '方 式:' P1 INTO SDATE.
*
* CLEAR: I_LIST_COMMENTS.
* W_LIST_COMMENTS-TYP = 'S'.
* W_LIST_COMMENTS-KEY = ''.
* W_LIST_COMMENTS-INFO = DEP.
* APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
* CLEAR W_LIST_COMMENTS.
*
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
* EXPORTING
* IT_LIST_COMMENTARY = I_LIST_COMMENTS
* I_END_OF_LIST_GRID = 'X'.
ENDFORM. "ALV_END_OF_LIST
*&--------------------------------------------------------------------*
*& Form ALV_END_OF_LIST
*&--------------------------------------------------------------------*
FORM ALV_END_OF_LIST.
CLEAR: I_LIST_COMMENTS.
W_LIST_COMMENTS-TYP = 'H'.
W_LIST_COMMENTS-KEY = ''.
W_LIST_COMMENTS-INFO = LSTR.
APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
CLEAR W_LIST_COMMENTS.
W_LIST_COMMENTS-TYP = 'S'.
W_LIST_COMMENTS-KEY = ''.
W_LIST_COMMENTS-INFO = ' 报表开发者:IT部--Jasson.Lee 开发日期:2011/06/02'.
APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS.
CLEAR W_LIST_COMMENTS.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_LIST_COMMENTS
I_END_OF_LIST_GRID = 'X'.
ENDFORM. "ALV_END_OF_LIST
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CLEAR T_DATA.
READ TABLE T_DATA INDEX SELFIELD-TABINDEX.
CASE I_UCOMM.
WHEN '&IC1'.
CASE SELFIELD-SEL_TAB_FIELD.
WHEN 'T_DATA-BELNR'.
SET PARAMETER ID 'BLN' FIELD T_DATA-BELNR.
SET PARAMETER ID 'BUK' FIELD T_DATA-BUKRS.
SET PARAMETER ID 'GJR' FIELD T_DATA-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
WHEN '&PRT'.
PERFORM GET_ZITAB.
PERFORM PRINT_FROM.
WHEN OTHERS.
ENDCASE.
ENDFORM. "callback_ucomm
*&---------------------------------------------------------------------*
*& Form GET_BSEG
*&---------------------------------------------------------------------*
FORM GET_BSEG .
SELECT BUKRS BELNR GJAHR BLART BLDAT BUDAT BKTXT TCODE AWKEY BSTAT USNAM WAERS XBLNR
INTO TABLE I_BKPF
FROM BKPF
WHERE BUKRS IN S_BUKRS AND BELNR IN S_BELNR AND BLDAT IN S_BLDAT
AND GJAHR IN S_GJAHR AND BLART IN S_BLART AND BUDAT IN S_BUDAT.
IF I_BKPF[] IS INITIAL.
MESSAGE I000(ZMSG) WITH '没找到对应的数据,请更改查询条件'.
LEAVE LIST-PROCESSING.
ENDIF.
SELECT BUKRS BELNR GJAHR BUZEI SHKZG PSWSL WRBTR PSWBT SAKNR HKONT BSCHL LIFNR UMSKZ SGTXT ZUONR
INTO TABLE I_BSEG
FROM BSEG
FOR ALL ENTRIES IN I_BKPF
WHERE BUKRS = I_BKPF-BUKRS AND BELNR = I_BKPF-BELNR AND GJAHR = I_BKPF-GJAHR.
SELECT BUKRS BELNR GJAHR BUZEI SHKZG WRBTR SAKNR SAKNR AS HKONT BSCHL SGTXT ZUONR
INTO CORRESPONDING FIELDS OF TABLE I_BSEG
FROM VBSEGS "BSEG
FOR ALL ENTRIES IN I_BKPF
WHERE BUKRS = I_BKPF-BUKRS AND BELNR = I_BKPF-BELNR AND GJAHR = I_BKPF-GJAHR.
ENDFORM. " GET_MSEG
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
FORM PROCESS_DATA .
DATA: _NAME1 LIKE LFA1-NAME1.
DATA: _TXT20 LIKE SKAT-TXT20.
SORT I_BSEG BY BUKRS GJAHR BELNR.
SORT I_BKPF BY BUKRS GJAHR BELNR.
LOOP AT I_BSEG.
W_LOOP = SY-TABIX.
CLEAR I_BKPF.
READ TABLE I_BKPF WITH KEY BUKRS = I_BSEG-BUKRS BELNR = I_BSEG-BELNR GJAHR = I_BSEG-GJAHR BINARY SEARCH.
IF SY-SUBRC = 0.
T_DATA-BLART = I_BKPF-BLART.
T_DATA-BLDAT = I_BKPF-BLDAT.
T_DATA-BUDAT = I_BKPF-BUDAT.
T_DATA-TCODE = I_BKPF-TCODE.
T_DATA-AWKEY = I_BKPF-AWKEY.
T_DATA-BSTAT = I_BKPF-BSTAT.
T_DATA-USNAM = I_BKPF-USNAM.
T_DATA-BKTXT = I_BKPF-BKTXT.
T_DATA-WAERS = I_BKPF-WAERS.
T_DATA-XBLNR = I_BKPF-XBLNR.
MODIFY I_BSEG INDEX W_LOOP.
ENDIF.
T_DATA-BUKRS = I_BSEG-BUKRS.
T_DATA-BELNR = I_BSEG-BELNR.
T_DATA-GJAHR = I_BSEG-GJAHR.
T_DATA-BUZEI = I_BSEG-BUZEI.
T_DATA-SHKZG = I_BSEG-SHKZG.
T_DATA-PSWSL = I_BSEG-PSWSL.
IF I_BSEG-SHKZG = 'H'.
T_DATA-WRBTR = I_BSEG-WRBTR * ( -1 ).
ELSE.
T_DATA-WRBTR = I_BSEG-WRBTR.
ENDIF.
T_DATA-PSWBT = I_BSEG-PSWBT.
T_DATA-SAKNR = I_BSEG-SAKNR.
T_DATA-HKONT = I_BSEG-HKONT.
T_DATA-BSCHL = I_BSEG-BSCHL.
T_DATA-LIFNR = I_BSEG-LIFNR.
T_DATA-UMSKZ = I_BSEG-UMSKZ.
T_DATA-SGTXT = I_BSEG-SGTXT.
T_DATA-ZUONR = I_BSEG-ZUONR.
T_DATA-NAME1 = I_BSEG-NAME1.
T_DATA-TXT20 = I_BSEG-TXT20.
*供应商
_NAME1 = ''.
SELECT NAME1 INTO _NAME1 FROM LFA1 WHERE LIFNR = I_BSEG-LIFNR.
IF _NAME1 <> ''.
T_DATA-NAME1 = _NAME1.
ENDIF.
ENDSELECT.
*科目名称
_TXT20 = ''.
SELECT TXT20 INTO _TXT20 FROM SKAT WHERE SAKNR = T_DATA-HKONT AND SPRAS = SY-LANGU AND KTOPL = 'INT'.
IF _TXT20 <> ''.
T_DATA-TXT20 = _TXT20.
ENDIF.
ENDSELECT.
APPEND T_DATA.
SY-TABIX = W_LOOP + 1.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form CAL_DATA
*&---------------------------------------------------------------------*
FORM CAL_DATA .
DESCRIBE TABLE T_DATA LINES RCOUNT.
SCOUNT = RCOUNT.
CONCATENATE '要打印的付款凭证数:' SCOUNT INTO LSTR.
IF T_DATA[] IS INITIAL.
MESSAGE I000(ZMSG) WITH '没找到对应的查询数据,请更改查询条件.'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " CAL_DATA
*&---------------------------------------------------------------------*
*& Form GET_ZITAB
*&---------------------------------------------------------------------*
FORM GET_ZITAB .
DATA: OUTPUT1(10) TYPE C.
LABNOTE = ''.
_BELNR =
WRBTR1 = 0.
WRBTR2 = 0.
WAERS1 = ''. "币别
XBLNR1 = ''. "分配号
CLEAR ZITAB[].
SORT T_DATA BY BELNR BUZEI .
CLEAR ZITAB[].
LOOP AT T_DATA WHERE BOX = 'X'.
W_LOOP = SY-TABIX.
_BELNR = T_DATA-BELNR.
WAERS1 = T_DATA-WAERS. "币别
XBLNR1 = T_DATA-XBLNR. "分配号
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = T_DATA-HKONT
IMPORTING
OUTPUT = OUTPUT1.
IF OUTPUT1+0(3) = '113'.
CONCATENATE T_DATA-TXT20 ' ('OUTPUT1 ')' INTO LABNOTE. "银行名称
ENDIF.
ZITAB-WERKS = T_DATA-BUKRS. "公司
ZITAB-AUFNR = T_DATA-BELNR. "付款凭证单号
ZITAB-LDDAT = T_DATA-BUDAT. "过帐日期
ZITAB-PAKTX = T_DATA-SGTXT+0(39). "摘要
ZITAB-PATNR = T_DATA-ZUONR. "分配号码
IF T_DATA-SHKZG = 'S'.
ZITAB-SID = 'DR'. "借
ZITAB-MBLNR = T_DATA-WRBTR. "贷方金额
ZITAB-EBELN = ''.
WRBTR1 = WRBTR1 + T_DATA-WRBTR.
ELSE.
ZITAB-SID = 'CR'. "贷
ZITAB-MBLNR = ''.
ZITAB-EBELN = T_DATA-WRBTR * ( -1 ). "贷方金额
WRBTR2 = WRBTR2 + T_DATA-WRBTR * ( -1 ).
ENDIF.
IF T_DATA-LIFNR = ''.
CONCATENATE T_DATA-TXT20 ' ('OUTPUT1 ')' INTO ZITAB-MAKTX. "会计科目名称
ELSE.
CONCATENATE T_DATA-NAME1 ' ('OUTPUT1 ')' INTO ZITAB-MAKTX. "会计科目名称
ENDIF.
APPEND ZITAB.
SY-TABIX = W_LOOP.
ENDLOOP.
ENDFORM. " GET_ZITAB
*&---------------------------------------------------------------------*
*& Form PRINT_FROM
*&---------------------------------------------------------------------*
FORM PRINT_FROM .
DATA: LS_CONTROL_PARAM TYPE SSFCTRLOP .
DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP .
DATA: OUTOPT TYPE SSFCRESOP.
DATA: I_JOB_OUTPUT_INFO TYPE SSFCRESCL.
LS_CONTROL_PARAM-LANGU = '1'.
LS_CONTROL_PARAM-NO_OPEN = 'X'.
LS_CONTROL_PARAM-NO_CLOSE = 'X'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAM
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
IMPORTING
JOB_OUTPUT_OPTIONS = OUTOPT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
* 根据SmartForm 名称获得Form的 Function Name
FNAME = 'ZFI06_SMARTFORM'. "列印格式
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = FNAME
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE 'Call SSF_FUNCTION_MODULE_NAME Error' TYPE 'E'.
ENDIF.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* LOOP AT ZITAB INTO W_ZITAB.
* MOVE-CORRESPONDING W_ZITAB TO I_ZITAB.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAM
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
PARA1 = _BELNR
PARA2 = LABNOTE
PARA3 = WRBTR1
PARA4 = WRBTR2
PARA5 = WAERS1
PARA6 = XBLNR1
TABLES
ZITAB = ZITAB
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE 'Call SmartForms Error' TYPE 'E'.
ENDIF.
IF OUTOPT-TDPREVIEW = 'X'.
* EXIT. "是否全部预览
ENDIF.
* CLEAR I_ZITAB[].
* ENDLOOP.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = I_JOB_OUTPUT_INFO
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " PRINT_FROM
ZFI006F01的code也出来吧:
- *&---------------------------------------------------------------------*
- *& 包括 ZFI006F01
- *&---------------------------------------------------------------------*
- FORM FIELDS_BUILD .
- DATA TMP_POS TYPE I.
- REFRESH I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BOX'.
- I_FIELDCAT-REPTEXT_DDIC = '主项'.
- I_FIELDCAT-KEY = 'X'.
- I_FIELDCAT-OUTPUTLEN = '4'.
- I_FIELDCAT-INPUT = 'X'.
- I_FIELDCAT-CHECKBOX = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BUKRS'.
- I_FIELDCAT-SELTEXT_L = '公司'.
- I_FIELDCAT-OUTPUTLEN = 6.
- I_FIELDCAT-NO_ZERO = 'X'.
- I_FIELDCAT-KEY = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BELNR'.
- I_FIELDCAT-SELTEXT_L = '付款凭证号'.
- I_FIELDCAT-OUTPUTLEN = 10.
- I_FIELDCAT-NO_ZERO = 'X'.
- I_FIELDCAT-KEY = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BUZEI'.
- I_FIELDCAT-SELTEXT_L = '行项目'.
- I_FIELDCAT-OUTPUTLEN = 6.
- I_FIELDCAT-NO_ZERO = 'X'.
- I_FIELDCAT-KEY = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BUDAT'.
- I_FIELDCAT-SELTEXT_L = '过帐日期'.
- I_FIELDCAT-OUTPUTLEN = 8.
- I_FIELDCAT-NO_ZERO = 'X'.
- I_FIELDCAT-KEY = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'XBLNR'.
- I_FIELDCAT-SELTEXT_L = '参照'.
- I_FIELDCAT-OUTPUTLEN = 16.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'UMSKZ'.
- I_FIELDCAT-SELTEXT_L = '科目类型'.
- I_FIELDCAT-OUTPUTLEN = 8.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- *
- * TMP_POS = TMP_POS + 1.
- * I_FIELDCAT-COL_POS = TMP_POS.
- * I_FIELDCAT-FIELDNAME = 'SAKNR'.
- * I_FIELDCAT-SELTEXT_L = '科目编号'.
- * I_FIELDCAT-OUTPUTLEN = 8.
- * I_FIELDCAT-NO_ZERO = 'X'.
- * APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- * CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'HKONT'.
- I_FIELDCAT-SELTEXT_L = '科目编号'.
- I_FIELDCAT-OUTPUTLEN = 8.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'TXT20'.
- I_FIELDCAT-SELTEXT_L = '科目名称'.
- I_FIELDCAT-OUTPUTLEN = 20.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'SGTXT'.
- I_FIELDCAT-SELTEXT_L = '会计摘要'.
- I_FIELDCAT-OUTPUTLEN = 30.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'SHKZG'.
- I_FIELDCAT-SELTEXT_L = '借/贷'.
- I_FIELDCAT-OUTPUTLEN = 8.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'WRBTR'.
- I_FIELDCAT-SELTEXT_L = '金额'.
- I_FIELDCAT-OUTPUTLEN = 12.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'WAERS'.
- I_FIELDCAT-SELTEXT_L = '币别'.
- I_FIELDCAT-OUTPUTLEN = 4.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'LIFNR'.
- I_FIELDCAT-SELTEXT_L = '供应商'.
- I_FIELDCAT-OUTPUTLEN = 10.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'NAME1'.
- I_FIELDCAT-SELTEXT_L = '供应商名称'.
- I_FIELDCAT-OUTPUTLEN = 20.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'BKTXT'.
- I_FIELDCAT-SELTEXT_L = '抬头文本'.
- I_FIELDCAT-OUTPUTLEN = 30.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'ZUONR'.
- I_FIELDCAT-SELTEXT_L = '分配号码'.
- I_FIELDCAT-OUTPUTLEN = 8.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- TMP_POS = TMP_POS + 1.
- I_FIELDCAT-COL_POS = TMP_POS.
- I_FIELDCAT-FIELDNAME = 'USNAM'.
- I_FIELDCAT-SELTEXT_L = '制单人'.
- I_FIELDCAT-OUTPUTLEN = 10.
- I_FIELDCAT-NO_ZERO = 'X'.
- APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
- CLEAR I_FIELDCAT.
- ENDFORM. " FIELDS_BUILD
*&---------------------------------------------------------------------*
*& 包括 ZFI006F01
*&---------------------------------------------------------------------*
FORM FIELDS_BUILD .
DATA TMP_POS TYPE I.
REFRESH I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BOX'.
I_FIELDCAT-REPTEXT_DDIC = '主项'.
I_FIELDCAT-KEY = 'X'.
I_FIELDCAT-OUTPUTLEN = '4'.
I_FIELDCAT-INPUT = 'X'.
I_FIELDCAT-CHECKBOX = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BUKRS'.
I_FIELDCAT-SELTEXT_L = '公司'.
I_FIELDCAT-OUTPUTLEN = 6.
I_FIELDCAT-NO_ZERO = 'X'.
I_FIELDCAT-KEY = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BELNR'.
I_FIELDCAT-SELTEXT_L = '付款凭证号'.
I_FIELDCAT-OUTPUTLEN = 10.
I_FIELDCAT-NO_ZERO = 'X'.
I_FIELDCAT-KEY = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BUZEI'.
I_FIELDCAT-SELTEXT_L = '行项目'.
I_FIELDCAT-OUTPUTLEN = 6.
I_FIELDCAT-NO_ZERO = 'X'.
I_FIELDCAT-KEY = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BUDAT'.
I_FIELDCAT-SELTEXT_L = '过帐日期'.
I_FIELDCAT-OUTPUTLEN = 8.
I_FIELDCAT-NO_ZERO = 'X'.
I_FIELDCAT-KEY = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'XBLNR'.
I_FIELDCAT-SELTEXT_L = '参照'.
I_FIELDCAT-OUTPUTLEN = 16.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'UMSKZ'.
I_FIELDCAT-SELTEXT_L = '科目类型'.
I_FIELDCAT-OUTPUTLEN = 8.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
*
* TMP_POS = TMP_POS + 1.
* I_FIELDCAT-COL_POS = TMP_POS.
* I_FIELDCAT-FIELDNAME = 'SAKNR'.
* I_FIELDCAT-SELTEXT_L = '科目编号'.
* I_FIELDCAT-OUTPUTLEN = 8.
* I_FIELDCAT-NO_ZERO = 'X'.
* APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
* CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'HKONT'.
I_FIELDCAT-SELTEXT_L = '科目编号'.
I_FIELDCAT-OUTPUTLEN = 8.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'TXT20'.
I_FIELDCAT-SELTEXT_L = '科目名称'.
I_FIELDCAT-OUTPUTLEN = 20.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'SGTXT'.
I_FIELDCAT-SELTEXT_L = '会计摘要'.
I_FIELDCAT-OUTPUTLEN = 30.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'SHKZG'.
I_FIELDCAT-SELTEXT_L = '借/贷'.
I_FIELDCAT-OUTPUTLEN = 8.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'WRBTR'.
I_FIELDCAT-SELTEXT_L = '金额'.
I_FIELDCAT-OUTPUTLEN = 12.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'WAERS'.
I_FIELDCAT-SELTEXT_L = '币别'.
I_FIELDCAT-OUTPUTLEN = 4.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'LIFNR'.
I_FIELDCAT-SELTEXT_L = '供应商'.
I_FIELDCAT-OUTPUTLEN = 10.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'NAME1'.
I_FIELDCAT-SELTEXT_L = '供应商名称'.
I_FIELDCAT-OUTPUTLEN = 20.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'BKTXT'.
I_FIELDCAT-SELTEXT_L = '抬头文本'.
I_FIELDCAT-OUTPUTLEN = 30.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'ZUONR'.
I_FIELDCAT-SELTEXT_L = '分配号码'.
I_FIELDCAT-OUTPUTLEN = 8.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
TMP_POS = TMP_POS + 1.
I_FIELDCAT-COL_POS = TMP_POS.
I_FIELDCAT-FIELDNAME = 'USNAM'.
I_FIELDCAT-SELTEXT_L = '制单人'.
I_FIELDCAT-OUTPUTLEN = 10.
I_FIELDCAT-NO_ZERO = 'X'.
APPEND I_FIELDCAT TO I_FIELDCAT_ALV.
CLEAR I_FIELDCAT.
ENDFORM. " FIELDS_BUILD
当然SmartForm就得先在Tcode:SMARTFORMS下建立相应的,有不熟悉的童鞋可以参考: