经过了一系列的大餐,就不能再少了SmartForm的应用咯。当然这个例子还包括了include,和去前导零 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
先来看看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.
再来看它所包括的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.
紧跟着就来欣赏一下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
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
当然SmartForm就得先在Tcode:SMARTFORMS下建立相应的,有不熟悉的童鞋可以参考:
Smart Form 系列教程
http://blog.youkuaiyun.com/jiali765/article/details/7204118