需求,定制化打印,替换标准的F.27打印
类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下:
T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP provides standard Corresponding Types, printing programs and forms that can be used as reference when customizing the required correspondence for business users.
Correspondence Type SAP13 is the standard one for Customer Statement:
For User, we will create a new Correspondence Type ZSTU1.
Standard printing program RFKORD11 is assigned to SAP13 with the program variant as well:
将上面的程序复制出来,替换进自己的打印代码。位置如下:
关键部分代码示例如下:
*-------------------------------------------自定义输出--------------------------------------------------------*
IF BKORM-EVENT EQ 'SEG01'.
DATA: LV_SSFCRESPD TYPE SSFCRESPD. "Smart Forms: 返回文档信息
DATA: LW_OUTPUT_OPTIONS TYPE SSFCOMPOP .
DATA: LV_FUNC_NAME TYPE RS38L_FNAM, "数据元素
LV_SMARTFORM TYPE TDSFNAME,
LV_CONTROL_PARAMETERS TYPE SSFCTRLOP. "Smart Forms: 控制结构
DATA: LV_DOCUMENT_OUTPUT TYPE SSFCRESPD,
LV_JOB_OUTPUT TYPE SSFCRESCL,
LV_JOB_OPTIONS TYPE SSFCRESOP.
DATA: LS_HEAD TYPE ZFIS_SF_CUSTOMER_HEAD.
DATA: LS_ITEM TYPE ZFIS_SF_CUSTOMER_ITEM.
DATA: LS_BLANK TYPE ZFIS_SF_CUSTOMER_ITEM.
DATA: LT_ITEM TYPE STANDARD TABLE OF ZFIS_SF_CUSTOMER_ITEM.
DATA: LT_BLANK TYPE STANDARD TABLE OF ZFIS_SF_CUSTOMER_ITEM.
DATA: LV_BALANCE TYPE WRBTR.
LS_HEAD-KUNNR = KNA1-KUNNR.
LS_HEAD-NAME1 = KNA1-NAME1.
LS_HEAD-STRAS = KNA1-STRAS.
CONCATENATE KNA1-ORT01 ',' KNA1-REGIO ',' KNA1-PSTLZ ',' KNA1-LAND1 INTO LS_HEAD-ADDRESS.
LOOP AT DOPOS.
CLEAR:LS_ITEM.
IF DOPOS-XBLNR IS NOT INITIAL.
LS_ITEM-BELNR = DOPOS-XBLNR.
ELSE.
LS_ITEM-BELNR = DOPOS-BELNR.
ENDIF.
LS_ITEM-BLDAT = DOPOS-BLDAT.
CASE DOPOS-BLART.
WHEN 'DR' OR 'RV'.
LS_ITEM-ZTEXT = 'Invoice'.
WHEN 'DZ'.
LS_ITEM-ZTEXT = 'Payment'.
WHEN 'DG'.
LS_ITEM-ZTEXT = 'Credit memo'.
WHEN OTHERS.
ENDCASE.
LS_ITEM-SGTXT = DOPOS-SGTXT.
LS_ITEM-WAERS = DOPOS-WAERS.
IF DOPOS-SHKZG = 'S'.
LS_ITEM-AMOUNT = DOPOS-WRBTR.
ELSE.
LS_ITEM-AMOUNT = DOPOS-WRBTR * -1.
ENDIF.
LV_BALANCE = LV_BALANCE + LS_ITEM-AMOUNT.
LS_ITEM-BALANCE = LV_BALANCE.
CONDENSE: LS_ITEM-BALANCE,LS_ITEM-AMOUNT.
APPEND LS_ITEM TO LT_ITEM.
ENDLOOP.
IF LT_ITEM IS NOT INITIAL .
CLEAR LV_CONTROL_PARAMETERS.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_SF_CUSTOMER'
IMPORTING
FM_NAME = LV_FUNC_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LV_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
LV_CONTROL_PARAMETERS-PREVIEW = 'X'.
CALL FUNCTION LV_FUNC_NAME
EXPORTING
CONTROL_PARAMETERS = LV_CONTROL_PARAMETERS
OUTPUT_OPTIONS = LW_OUTPUT_OPTIONS
LS_HEAD = LS_HEAD
IMPORTING
DOCUMENT_OUTPUT_INFO = LV_DOCUMENT_OUTPUT
JOB_OUTPUT_INFO = LV_JOB_OUTPUT
JOB_OUTPUT_OPTIONS = LV_JOB_OPTIONS
TABLES
LT_ITEM = LT_ITEM
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.
ENDIF.
ENDIF.
ELSE.
PERFORM CHECK_OUTPUT. "N854148
PERFORM FORM_OPEN.
PERFORM AUSGABE_KONTOAUSZUG. "#EC CI_SORTED
PERFORM FORM_CLOSE.
PERFORM PAYMED_PRINT_OPENCLOSE.
ENDIF.
*-------------------------------------------自定义输出--------------------------------------------------------*
User will fill up the parameters like below: