sapsap系统财务怎么做账导出应收余额

【图文】SAP应收帐款模块使用教程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SAP应收帐款模块使用教程
阅读已结束,下载本文到电脑
定制HR最喜欢的简历
你可能喜欢*----------------------------------------------------------------------*
LINE ITEMS ACCOUNTS RECEIVABLE
THIS REPORT SELECTS DATA TO BE DISPLAYED BY ALV
*----------------------------------------------------------------------*
REPORT ZFICO01 MESSAGE-ID MSITEM NO STANDARD PAGE HEADING.
INCLUDE RFITEM_DEF.
*... ICONS AND SYMBOLS:
INCLUDE &LIST&.
TABLES: KNA1, KNB1, BSID, BSIK, ADMI_FILES.
TABLES: LFA1.
TABLES: T001.
TABLES: T005.
DATA: IT_H_T001
TYPE TPIT_T_VT001 WITH HEADER LINE,
TYPE TPIT_T_VKNA1 WITH HEADER LINE,
TYPE TPIT_T_VKNB1 WITH HEADER LINE.
data: begin of it_kunnr occurs 3,
bukrs like bkpf-bukrs,
kunnr like kna1-kunnr,
end of it_kunnr.
DATA: BEGIN OF IT_HEADER OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
WRBTR LIKE BSEG-WRBTR,"凭证货币金额
DMBTR LIKE BSEG-DMBTR,"本位币别金额
WAERS LIKE rfposxext-WAERS,"凭证币别
KKBWR LIKE rfposxext-HWAER, "本币
ZTERM LIKE BSID-ZTERM,
BUTXT LIKE T001-BUTXT,
DELAY TYPE I,
END OF IT_HEADER.
DATA: BEGIN OF IT_ITEM OCCURS 1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
WRBTR LIKE BSEG-WRBTR,"凭证货币金额
DMBTR LIKE BSEG-DMBTR,"按本位币计的金额
WAERS LIKE rfposxext-WAERS,"凭证币别
KKBWR LIKE rfposxext-HWAER, "本币
FKIMG LIKE VBRP-FKIMG,"实际已开票数量
VRKME LIKE VBRP-VRKME,"销售单位
ZFBDT LIKE BSEG-ZFBDT,"付款基准日期
DELAY LIKE EKPO-KTMNG,
BELNR LIKE BSEG-BELNR,"会计凭证编号
VBELN LIKE VBRP-VBELN,"发票号
bukrs like ekko-bukrs,
zterm like rfposxext-ZTERM,
jamon like rfposxext-jamon,
BUTXT LIKE T001-BUTXT,
ZFAEL like t052-ZFAEL,
BUDAT like rfposxext-BUDAT,
END OF IT_ITEM.
DATA: BEGIN OF it_item_show OCCURS 1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
WRBTR LIKE BSEG-WRBTR,"凭证货币金额
DMBTR LIKE BSEG-DMBTR,"按本位币计的金额
WAERS LIKE rfposxext-WAERS,"凭证币别
KKBWR LIKE rfposxext-HWAER, "本币
FKIMG LIKE VBRP-FKIMG,"实际已开票数量
VRKME LIKE VBRP-VRKME,"销售单位
ZFBDT LIKE BSEG-ZFBDT,"付款基准日期
DELAY LIKE EKPO-KTMNG,
BELNR LIKE BSEG-BELNR,"会计凭证编号
VBELN LIKE VBRP-VBELN,"发票号
bukrs like ekko-bukrs,
zterm like rfposxext-ZTERM,
jamon like rfposxext-jamon,
BUTXT LIKE T001-BUTXT,
ZFAEL like t052-ZFAEL,
BUDAT like rfposxext-BUDAT,
END OF it_item_show.
SELECTION-SCREEN BEGIN OF BLOCK STATUS WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF BLOCK CUSTOMER WITH FRAME TITLE TEXT-W02.
PARAMETERS: PA_WLKUN LIKE RF42B-IDNTD MODIF ID WKL.
SELECT-OPTIONS: SO_WLKUN FOR KNB1-KUNNR MODIF ID WKL NO DATABASE
SELECTION.
SELECTION-SCREEN END OF BLOCK CUSTOMER.
SELECTION-SCREEN BEGIN OF BLOCK COMPANY WITH FRAME TITLE TEXT-W03.
PARAMETERS: PA_WLBUK LIKE RF42B-IDNTB MODIF ID WKL.
SELECT-OPTIONS: SO_WLBUK FOR KNB1-BUKRS MODIF ID WKL NO DATABASE
SELECTION.
SELECTION-SCREEN END OF BLOCK COMPANY.
OPEN ITEMS:
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS X_OPSEL LIKE ITEMSET-XOPSEL RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 3(20) TEXT-003 FOR FIELD X_OPSEL.
SELECTION-SCREEN END OF LINE.
PARAMETERS PA_STIDA LIKE RFPDO-ALLGSTID DEFAULT SY-DATLO.
SELECTION-SCREEN SKIP.
ALL ITEMS:
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS X_AISEL LIKE ITEMSET-XAISEL RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 3(20) TEXT-005 FOR FIELD X_AISEL.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS SO_BUDAT FOR BSID-BUDAT NO DATABASE SELECTION.
SELECTION-SCREEN SKIP.
PARAMETER IS_DELAY TYPE C AS CHECKBOX.
PARAMETER IS_INTER TYPE C AS CHECKBOX DEFAULT 'X'.
PARAMETER IS_DESC
TYPE C AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK STATUS.
* INNER FRAME 2:
SELECTION-SCREEN BEGIN OF BLOCK TYPE WITH FRAME TITLE TEXT-006.
PARAMETERS: X_NORM LIKE ITEMSET-XNORM NO-DISPLAY DEFAULT 'X',
X_SHBV LIKE ITEMSET-XSHBV NO-DISPLAY,
X_MERK LIKE ITEMSET-XMERK NO-DISPLAY,
X_PARK LIKE ITEMSET-XPARK NO-DISPLAY,
X_APAR LIKE ITEMSET-XARIT NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK TYPE.
* END OF INNER FRAMES.
* NET DUE DATE SELECTION:
SELECT-OPTIONS SO_FAEDT FOR IT_POS-FAEDT NO-DISPLAY NO DATABASE SELECTION
MODIF ID DUE.
* END OF OUTER FRAME.
* LIST LAYOUT FRAME:
SELECTION-SCREEN BEGIN OF BLOCK LIST WITH FRAME TITLE TEXT-001.
PARAMETERS: PA_VARI TYPE SLIS_VARI NO-DISPLAY,
PA_NMAX LIKE ITEMSET-NMAX NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK LIST.
*... END OF SELECTION SCREEN LAYOUT.
*... DARK PARAMETERS:
* BRANCH: READ ITEMS POSTED ON CENTRAL OFFICE?
VALUES: (Y)ES, (N)O, ( ) PROMPT USER, (C) SELECTION CANCELLED
PARAMETERS: PA_CENT TYPE C NO-DISPLAY.
* COMBINED FISCAL YEAR/POSTING PERIOD
DATA: LD_YRPER LIKE RWCOOM-FISCPER.
SELECT-OPTIONS: SO_YRPER FOR LD_YRPER NO-DISPLAY.
* INTERNET TRANSACTION MODE?
PARAMETERS: PA_INET TYPE C NO-DISPLAY.
* GRID CONTROL DISPLAY?
VALUES: (Y)ES, (N)O, ( ) GET PARAMETER
PARAMETERS: PA_GRID TYPE C NO-DISPLAY.
*... INCLUDE INTERNAL SELECT-OPTIONS FOR DERIVED ITEM FIELDS:
INCLUDE RFITEM_SEL.
INITIALIZATION.
G_REPID = SY-REPID.
DD_NOAUT = 'X'.
DD_NOOAP = 'X'.
* EXPIRING CURRENCIES:
PERFORM INIT_EXPCUR.
* DEACTIVATE USER COMMANDS:
PERFORM CHANGE_STATUS.
* GET DUE DATE SELECTION PID VALUE:
PERFORM DD_GET_FLAG.
* INITIALIZE WORKLIST BUTTON:
PERFORM WL_FLAG_AND_BUTTON.
* GET T021S AND MAKE FIELD ADMINISTRATION TABLES:
PERFORM INIT_ADMIN_TABLES.
* MAKE FIELD CATALOG, EXCLUDE ALL UNNECESSARY FIELDS:
PERFORM MAKE_FIELDCATALOG.
* PREPARE KKBER CURRENCY LOOKUP TABLE:
PERFORM INIT_KKCURR_TABLE.
* GET PARAMETERS:
PERFORM GET_GENERAL_PARAM.
* SET ACCOUNT AND COMPANY CODE:
PERFORM SET_ACCT_AND_CCODE.
* SET FIELDS FOR TRANSFER PRICES
PERFORM INSERT_TP_FIELDS.
AT SELECTION-SCREEN OUTPUT.
* CHECK FOR "SUPPRESS DIALOG":
GD_DYNP_FUN = 7.
GD_DYNP_VAL = 1.
PERFORM DYNP_GET_STATUS USING
GD_DYNP_FUN
CHANGING GD_DYNP_VAL.
LOOP AT SCREEN.
PERFORM WL_MODIFY_SCREEN.
PERFORM DD_MODIFY_SCREEN.
MODIFY SCREEN.
AT SELECTION-SCREEN ON BLOCK CUSTOMER.
IF NOT GD_WL_ON IS INITIAL.
" WORKLISTS ON &
IF GD_DYNP_VAL EQ 0.
" REBUILD DD_BUKRS AND DD_KUNNR &
REFRESH DD_KUNNR.
IF NOT PA_WLKUN IS INITIAL.
" CUSTOMER WORKLIST GIVEN &
PERFORM RESOLVE_WORKLIST TABLES GT_COSEL
WORKLIST OVERRIDES VENDOR SELECT-OPTION:
REFRESH SO_WLKUN.
CLEAR SO_WLKUN.
LOOP AT GT_COSEL.
MOVE-CORRESPONDING GT_COSEL TO DD_KUNNR.
APPEND DD_KUNNR.
APPEND LINES OF SO_WLKUN TO DD_KUNNR.
" CUSTOMER WORKLIST GIVEN &
" REBUILD DD_BUKRS AND DD_KUNNR &
" WORKLISTS ON &
AT SELECTION-SCREEN ON BLOCK COMPANY.
IF NOT GD_WL_ON IS INITIAL.
" WORKLISTS ON &
IF GD_DYNP_VAL EQ 0.
" REBUILD DD_BUKRS AND DD_KUNNR &
COMPANY CODES:
REFRESH DD_BUKRS.
IF NOT PA_WLBUK IS INITIAL.
" CCODE WORKLIST GIVEN &
PERFORM RESOLVE_WORKLIST TABLES GT_COSEL
WORKLIST OVERRIDES COMPANY CODE SELECT-OPTION:
REFRESH SO_WLBUK.
CLEAR SO_WLBUK.
LOOP AT GT_COSEL.
MOVE-CORRESPONDING GT_COSEL TO DD_BUKRS.
APPEND DD_BUKRS.
APPEND LINES OF SO_WLBUK TO DD_BUKRS.
" CCODE WORKLIST GIVEN &
" REBUILD DD_BUKRS AND DD_KUNNR &
" WORKLISTS ON &
AT SELECTION-SCREEN.
CASE SY-UCOMM.
*...SWITCH WORKLIST ON OR OFF:
WHEN 'FC01'.
PERFORM WORKLIST_ON_OFF.
PERFORM SET_ACCT_AND_CCODE.
*...PROCESS WORKLISTS AND CHECK SELECTIONS:
WHEN 'ONLI' OR 'PRIN' OR 'INIT' OR 'PICK' OR 'ENTR' OR SPACE.
CALL FUNCTION 'BUKRS_AUTHORITY_CHECK'
XDATABASE = 'D'
= DD_BUKRS.
CALL FUNCTION 'BUKRS_AUTHORITY_CHECK'
XDATABASE = 'B'
= DD_BUKRS.
CHECK INPUT:
PERFORM SEL_ACCOUNT_CHECK.
CHECK DATE (TPC)
PERFORM CHECK_DATE TABLES DD_BUKRS
AT SELECTION-SCREEN ON BLOCK TYPE.
* CHECK ITEM TYPE ONLY WHEN ACTION = EXECUTE:
IF SY-UCOMM = 'ONLI'.
PERFORM SEL_TYPE_CHECK.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_VARI.
PERFORM ALV_VARIANT_F4 CHANGING PA_VARI.
*** START OF SELECTION
START-OF-SELECTION.
CLEAR: X_STOP.
* SET PARAMETERS:
PERFORM SET_PARAMETERS.
* MAP SELECTIONS TO LDB LOGIC:
PERFORM MAP_SEL_TO_LDB.
* DETERMINE COMPANY CODES WHICH USE TRANSFER PRICES
SELECT * FROM T001A INTO TABLE IT_TP_AUTH WHERE BUKRS IN DD_BUKRS.
LOOP AT IT_TP_AUTH.
IF IT_TP_AUTH-CURTP+1(1) = '1' OR IT_TP_AUTH-CURTP+1(1) = '2'
OR IT_TP_AUTH-CURTP2+1(1) = '1' OR IT_TP_AUTH-CURTP2+1(1) = '2'.
DELETE IT_TP_AUTH.
* CHECK TP AUTHORITY AND SET 'TECH'-ATTRIBUTE IF AUTHORITY IS MISSING
PERFORM MAKE_FIELDCATALOG2.
* GENERAL ACCOUNT MASTER DATA:
PERFORM KNA1_INFO_FILL.
* PERFORM T005_INFO_FILL USING 'D'.
* COMPANY MASTER DATA AND CURRENCIES:
PERFORM T001_INFO_FILL.
* COMPANY ACCOUNT MASTER DATA:
PERFORM KNB1_INFO_FILL.
GET KNB1 LATE.
* VENDOR ITEMS REQUESTED?
IF NOT X_APAR IS INITIAL AND NOT KNA1-LIFNR IS INITIAL.
PERFORM READ_VENDOR_ITEMS.
* IMPORTING BKPF AND BSEG DATA FROM ARCHIVE
PERFORM IMPORT_ARCH_FROM_MEMORY.
* LINE ITEMS, BASIC FIELDS:
LD_YRPER(4) = BSID-GJAHR.
LD_YRPER+5
= BSID-MONAT.
CHECK LD_YRPER IN SO_YRPER.
PERFORM POS_TABLE_FILL
END-OF-SELECTION.
* ANY BRANCH ACCOUNTS? PROMPT USER IF NECESSARY:
PERFORM KNB1_CHECK_BRANCH.
* SAVE ALL SELECTION CRITERIA FOR REFRESH:
PERFORM SAVE_ALL_SELECTIONS.
* SELECTION CANCELLED IF CHOOSEN AT THE BRANCH/HEAD POPUP.
IF PA_CENT = 'C'.
MESSAGE S050.
* DETERMINE LIST DISPLAY MODE:
PERFORM DISPLAY_GRID_OR_CLASSIC.
* READ ITEMS POSTED ON CENTRAL OFFICE:
PERFORM READ_CENTRAL_ITEMS.
* SET VARIANT:
GS_VARIANT-REPORT
= G_REPID.
GS_VARIANT-USERNAME = SY-UNAME.
GS_VARIANT-VARIANT
= PA_VARI.
* READ SPECIAL FIELDS IF NECESSARY:
PERFORM SPECIAL_FIELDS_INIT USING GS_VARIANT.
* NUMBER OF SELECTED ITEMS:
IF X_STOP = 'X'.
MESSAGE I023 WITH PA_NMAX.
DESCRIBE TABLE IT_POS LINES N_LINES.
IF N_LINES & 0.
MESSAGE S024 WITH N_LINES.
ELSEIF PA_INET IS INITIAL AND GD_DYNP_VAL IS INITIAL.
MESSAGE S033.
MESSAGE I033.
LEAVE PROGRAM.
* EXPORT GENERAL DATA USED IN HEADER INFO:
PERFORM EXPORT_FILITEXTS_DATA.
* AUTHORITY DISPLAY OR CHANGE
PERFORM AUTHORITY_TCODE USING 'FB02' SUBRC.
IF SUBRC EQ 0.
X_CHANGE = 'X'.
X_CHANGE = SPACE.
CLEAR:IT_ITEM.REFRESH:IT_ITEM.
DATA: GT_VBRP TYPE STANDARD TABLE OF VBRP WITH KEY VBELN WITH HEADER LINE.
DATA: WA_VBRP LIKE VBRP.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_VBRP FROM VBRP FOR ALL ENTRIES IN IT_POS WHERE VBELN = IT_POS-REBZG.
LOOP AT IT_POS.
CLEAR:IT_ITEM.
LOOP AT IT_H_KNA1 WHERE KUNNR = IT_POS-KONTO.
IT_ITEM-NAME1 = IT_H_KNA1-NAME1.
LOOP AT IT_H_T001 WHERE BUKRS = IT_POS-BUKRS.
IT_ITEM-BUTXT = IT_H_T001-BUTXT.
LOOP AT IT_H_KNB1 WHERE BUKRS = IT_POS-BUKRS AND KUNNR = IT_POS-KONTO.
IT_ITEM-ZTERM = IT_H_KNB1-ZTERM.
SINGLE ZFAEL INTO IT_ITEM-ZFAEL FROM T052 WHERE ZTERM = IT_ITEM-ZTERM.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
= IT_POS-KONTO
= IT_POS-KONTO.
IT_ITEM-KUNNR = IT_POS-KONTO.
CLEAR:WA_VBRP.
READ TABLE GT_VBRP WITH TABLE KEY VBELN = IT_POS-REBZG INTO WA_VBRP.
IF WA_VBRP IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
= WA_VBRP-MATNR
= IT_ITEM-MATNR.
IT_ITEM-MAKTX = WA_VBRP-ARKTX.
IT_ITEM-VBELN = WA_VBRP-VBELN.
IT_ITEM-BELNR = IT_POS-BELNR.
IT_ITEM-WRBTR = IT_POS-WRSHB."记账金额
IT_ITEM-DMBTR = IT_POS-DMSHB."凭证
IT_ITEM-WAERS = IT_POS-WAERS."DOC 币
IT_ITEM-KKBWR = IT_POS-KKBWR."本币
IT_ITEM-ZFBDT = IT_POS-ZFBDT."付款基准日期
IF SY-DATUM & IT_POS-BUDAT.
IT_ITEM-DELAY = SYST-DATUM - ( IT_POS-BUDAT + IT_ITEM-ZFAEL ) + 1. "超期天数 = 当前日期 - ( 付款基准日期 + 付款天数 )"IT_POS-ZFBDT
it_item-BUDAT = it_pos-budat.
IT_ITEM-FKIMG = 0.
CLEAR:WA_VBRP.
LOOP AT GT_VBRP INTO WA_VBRP WHERE VBELN = IT_POS-REBZG.
IT_ITEM-FKIMG = WA_VBRP-FKIMG + IT_ITEM-FKIMG.
CLEAR:WA_VBRP.
it_item-bukrs = it_pos-bukrs.
"it_item-zterm = it_pos-zterm."取客主档中的付款条件
it_item-jamon = it_pos-jamon.
clear:it_kunnr.
it_kunnr-BUKRS = IT_POS-bukrs.
it_kunnr-kunnr = it_item-kunnr.
IF IS_INTER = 'X'.
IF IT_KUNNR-KUNNR+0(1) && 'S'.
append it_kunnr.
append it_kunnr.
IF IS_DELAY = 'X'.
IF IT_ITEM-DELAY & 0.
APPEND IT_ITEM.
APPEND IT_ITEM.
DELETE ADJACENT DUPLICATES FROM it_kunnr COMPARING bukrs kunnr.
refresh:IT_HEADER.
loop at it_kunnr.
data:l_WRBTR LIKE BSEG-WRBTR.
clear:l_WRBTR.
CLEAR: IT_HEADER.
loop at it_item where bukrs = it_kunnr-bukrs and kunnr = it_kunnr-kunnr.
IT_HEADER-BUKRS = IT_ITEM-BUKRS.
IT_HEADER-KUNNR = IT_ITEM-KUNNR.
IT_HEADER-NAME1 = IT_ITEM-NAME1.
IT_HEADER-DMBTR = IT_HEADER-DMBTR + IT_ITEM-DMBTR.
IT_HEADER-WRBTR = IT_HEADER-WRBTR + IT_ITEM-WRBTR.
IT_HEADER-WAERS
= IT_ITEM-WAERS .
IT_HEADER-KKBWR
= IT_ITEM-KKBWR
IT_HEADER-BUTXT = IT_ITEM-BUTXT.
IF IT_HEADER-DELAY & IT_ITEM-DELAY.
IT_HEADER-DELAY = IT_ITEM-DELAY.
if IT_HEADER-DMBTR && 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
= IT_KUNNR-KUNNR
= IT_KUNNR-KUNNR.
LOOP AT IT_H_KNB1 WHERE BUKRS = IT_KUNNR-BUKRS AND KUNNR = IT_KUNNR-KUNNR.
IT_HEADER-ZTERM = IT_H_KNB1-ZTERM.
APPEND:IT_HEADER.
CLEAR:IT_HEADER.
perform outasalv_header.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
if r_ucomm = '&IC1'.
CLEAR:it_item_show.REFRESH:it_item_show.
READ TABLE IT_HEADER
INDEX RS_SELFIELD-TABINDEX.
LOOP AT IT_ITEM WHERE KUNNR = IT_HEADER-KUNNR AND BUKRS = IT_HEADER-BUKRS.
APPEND IT_ITEM TO it_item_show.
CLEAR:IT_ITEM.
if IS_DESC = 'X'.
sort it_item_show by DELAY descending.
sort it_item_show by DELAY.
PERFORM outasalv.
FORM user_command2 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
if r_ucomm = '&IC1'.
read table it_item_show index RS_SELFIELD-TABINDEX.
SET PARAMETER ID: 'BLN' FIELD it_item_show-BELNR,
'BUK' FIELD it_item_show-BUKRS,
'GJR' FIELD it_item_show-jamon+0(4).
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
FORM outasalv_header.
DATA dis_filed TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA : gs_layout
TYPE slis_layout_alv .
data: i_fieldcat type line of slis_t_fieldcat_alv. "ALV字段信息结构
DEFINE add_field.
dis_filed-fieldname = &1.
dis_filed-reptext_ddic = &2.
dis_filed-outputlen
"dis_filed-lzero = 'X'. "不显示值为0的数据和前导0
dis_filed-no_zero = &4.
append dis_filed.
clear: dis_filed.
"gs_layout-colwidth_optimize
= 'X'."自动设置宽度
END-OF-DEFINITION.
add_field 'BUKRS' '公司' '10' 'X'.
add_field 'BUTXT' '公司名称' '30' 'X'.
add_field 'KUNNR' '客户'
add_field 'NAME1' '客户名称' '30' 'X'.
add_field 'WRBTR' '会计凭证金额' '15' 'X'.
add_field 'WAERS' '会计凭证币别'
add_field 'DMBTR' '本位币金额' '15' 'X'.
add_field 'KKBWR' '本位币'
add_field 'ZTERM' '付款条件' '10' 'X'.
add_field 'DELAY' '收款延期天数' '10' 'X'.
if IS_DESC = 'X'.
sort it_header by DELAY descending..
sort it_header by DELAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
i_callback_program = 'ZFICO01'
it_fieldcat
= dis_filed[]
= gs_layout
i_callback_user_command
= 'USER_COMMAND'
= it_header.
IF sy-subrc && 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
FORM outasalv.
DATA dis_filed TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA : gs_layout
TYPE slis_layout_alv .
data: i_fieldcat type line of slis_t_fieldcat_alv. "ALV字段信息结构
DEFINE add_field.
dis_filed-fieldname = &1.
dis_filed-reptext_ddic = &2.
"dis_filed-lzero = 'X'. "不显示值为0的数据和前导0
dis_filed-no_zero = &3.
append dis_filed.
clear: dis_filed.
gs_layout-colwidth_optimize
= 'X'."自动设置宽度
END-OF-DEFINITION.
add_field 'KUNNR' '客户' 'X'.
add_field 'NAME1' '客户名称' 'X'.
add_field 'MATNR' '产品型号' 'X'.
add_field 'MAKTX' '产品描述' 'X'.
add_field 'WRBTR' '会计凭证金额' 'X'.
add_field 'WAERS' '会计凭币别' 'X'.
add_field 'DMBTR' '本位币金额' 'X'.
add_field 'KKBWR' '本位币别' 'X'.
add_field 'FKIMG' '数量' 'X'.
"add_field 'VRKME' '销售单位'.
add_field 'BELNR' '财务凭证号' 'X'.
add_field 'VBELN' '销售发票号' 'X'.
add_field 'BUDAT' '过账日期' 'X'.
add_field 'ZTERM' '付款条件' 'X'.
add_field 'ZFAEL' '付款期限(天)' 'X'.
add_field 'DELAY' '过期天数' 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
i_callback_program = 'ZFICO01'
it_fieldcat
= dis_filed[]
= gs_layout
i_callback_user_command
= 'USER_COMMAND2'
= it_item_show.
IF sy-subrc && 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*----------------------------------------------------------------------*
FORM SEL_ACCOUNT_CHECK
*----------------------------------------------------------------------*
FORM SEL_ACCOUNT_CHECK.
DATA: LD_LINES LIKE SY-INDEX,
LD_SINGLE_ACCOUNT TYPE C,
LD_SINGLE_BUKRS
READ TABLE DD_KUNNR INDEX 1.
IF SY-SUBRC NE 0.
READ TABLE DD_BUKRS INDEX 1.
IF SY-SUBRC NE 0.
MESSAGE W019.
READ TABLE DD_KUNNR INDEX 1.
IF SY-SUBRC EQ 0.
LOOP AT DD_KUNNR TRANSPORTING NO FIELDS
WHERE OPTION NE 'EQ' OR
SUBRC = SY-SUBRC.
"ARBEITSVORRAT: SUBRC NE 0
SUBRC = 0.
IF SUBRC EQ 0.
SELECT SINGLE KUNNR FROM KNB1 INTO KNB1-KUNNR
WHERE KUNNR IN DD_KUNNR
AND BUKRS IN DD_BUKRS.
SELECT KUNNR FROM KNB1 INTO KNB1-KUNNR
UP TO 1 ROWS
FOR ALL ENTRIES IN DD_KUNNR
WHERE KUNNR EQ DD_KUNNR-LOW
AND BUKRS IN DD_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E030(MSITEM).
CLEAR KNB1.
*...WRITE DD_KUNNR UND DD_BUKRS INTO MEMORY
*...(IMPORTANT LATER FOR DISPUTE-MANAGEMENT).
EXPORT DD_KUNNR TO MEMORY ID 'FILITEXTS_KUNNR'.
EXPORT DD_BUKRS TO MEMORY ID 'FILITEXTS_BUKRS'.
*...FIND OUT, IF SINGLE ACCOUNTS AND COMPANY CODES HAVE BEEN SELECTED..*
*...(IMPORTANT FOR HEADER DISPLAY).....................................*
CLEAR LD_SINGLE_ACCOUNT.
DESCRIBE TABLE DD_KUNNR LINES LD_LINES.
IF LD_LINES EQ 1.
READ TABLE DD_KUNNR INDEX 1.
IF ( DD_KUNNR-SIGN EQ 'I' AND DD_KUNNR-OPTION EQ 'EQ' ) OR
( DD_KUNNR-SIGN EQ 'I' AND DD_KUNNR-OPTION EQ 'BT' AND
DD_KUNNR-LOW
EQ DD_KUNNR-HIGH ).
LD_SINGLE_ACCOUNT = 'X'.
CLEAR LD_SINGLE_BUKRS.
DESCRIBE TABLE DD_BUKRS LINES LD_LINES.
IF LD_LINES EQ 1.
READ TABLE DD_BUKRS INDEX 1.
IF ( DD_BUKRS-SIGN EQ 'I' AND DD_BUKRS-OPTION EQ 'EQ' ) OR
( DD_BUKRS-SIGN EQ 'I' AND DD_BUKRS-OPTION EQ 'BT' AND
DD_BUKRS-LOW
EQ DD_BUKRS-HIGH ).
LD_SINGLE_BUKRS = 'X'.
EXPORT LD_SINGLE_BUKRS LD_SINGLE_ACCOUNT TO MEMORY ID
'FILITEXTS_SINGLE'.
"SEL_ACCOUNT_CHECK
*----------------------------------------------------------------------*
FORM SEL_TYPE_CHECK
*----------------------------------------------------------------------*
FORM SEL_TYPE_CHECK.
IF X_NORM IS INITIAL AND X_SHBV IS INITIAL AND X_MERK IS INITIAL
AND X_PARK IS INITIAL AND X_APAR IS INITIAL.
MESSAGE E020.
"SEL_TYPE_CHECK
*----------------------------------------------------------------------*
POS_TABLE_FILL
*----------------------------------------------------------------------*
FORM POS_TABLE_FILL
DATA: TEXT_INDEX TYPE I,
TYPE C VALUE SPACE.
CLEAR WA_POS.
MOVE-CORRESPONDING BSID
TO WA_POS.
*... CHECK ITEM AGAINST SELECTION FLAGS:
PERFORM CHECK_ITEM_OK
USING X_NORM
CHANGING OKAY.
CHECK OKAY = 'X'.
WA_POS-KOART = C_KOART_AR.
WA_POS-KONTO = BSID-KUNNR.
WA_POS-DMSHB = BSID-DMBTR.
WA_POS-WRSHB = BSID-WRBTR.
WA_BSEGP-BDIFF = BSID-BDIFF.
WA_BSEGP-BDIF2 = BSID-BDIF2.
WA_BSEGP-BDIF3 = BSID-BDIF3.
* DERIVE NONTRIVIAL ITEM FIELDS:
CALL FUNCTION 'ITEM_DERIVE_FIELDS'
= IT_H_T001
= WA_BSEGP
= P_KEYDATE
= T005-KALSM
EXCEPTIONS
BAD_INPUT = 1
IF SY-SUBRC NE 0.
MESSAGE A022.
* CHECK AND MODIFY TEXT FIELD IN INTERNET CASE:
IF NOT PA_INET IS INITIAL.
IF WA_POS-SGTXT(1) NE '*'.
TAKE POSTING KEY TEXT:
CLEAR WA_POS-SGTXT.
SELECT SINGLE LTEXT FROM TBSLT INTO WA_POS-SGTXT
WHERE SPRAS = SY-LANGU
BSCHL = WA_POS-BSCHL
UMSKZ = WA_POS-UMSKZ.
TAKE LINE ITEM TEXT:
SHIFT WA_POS-SGTXT.
* FILL CURRENCY FIELDS:
PERFORM ITEM_CURRENCY_FIELDS.
* CHECK DARK SELECT-OPTIONS AND ADD ITEM TO TABLE:
PERFORM ITEM_CHECK_APPEND.
* CHECK MAX NUMBER:
DESCRIBE TABLE IT_POS LINES N_LINES.
IF PA_NMAX & 0 AND N_LINES GE PA_NMAX.
P_STOP = 'X'.
"POS_TABLE_FILL
*----------------------------------------------------------------------*
POS_TABLE_FILL_VENDOR
*----------------------------------------------------------------------*
FORM POS_TABLE_FILL_VENDOR
DATA: TEXT_INDEX TYPE I,
TYPE C VALUE SPACE.
CLEAR WA_POS.
MOVE-CORRESPONDING BSIK
TO WA_POS.
*... CHECK ITEM AGAINST SELECTION FLAGS:
PERFORM CHECK_ITEM_OK
USING X_NORM
CHANGING OKAY.
CHECK OKAY = 'X'.
WA_POS-KOART = 'K'.
WA_POS-KONTO = KNA1-LIFNR.
WA_POS-DMSHB = BSIK-DMBTR.
WA_POS-WRSHB = BSIK-WRBTR.
WA_BSEGP-BDIFF = BSIK-BDIFF.
WA_BSEGP-BDIF2 = BSIK-BDIF2.
WA_BSEGP-BDIF3 = BSIK-BDIF3.
* DERIVE NONTRIVIAL ITEM FIELDS:
CALL FUNCTION 'ITEM_DERIVE_FIELDS'
= IT_H_T001
= WA_BSEGP
= P_KEYDATE
= T005-KALSM
EXCEPTIONS
BAD_INPUT = 1
IF SY-SUBRC NE 0.
MESSAGE A022.
* CHECK AND MODIFY TEXT FIELD IN INTERNET CASE:
IF NOT PA_INET IS INITIAL.
IF WA_POS-SGTXT(1) NE '*'.
CLEAR WA_POS-SGTXT.
SHIFT WA_POS-SGTXT.
* FILL CURRENCY FIELDS:
PERFORM ITEM_CURRENCY_FIELDS.
* CHECK DARK SELECT-OPTIONS AND ADD ITEM TO TABLE:
PERFORM ITEM_CHECK_APPEND.
* CHECK MAX NUMBER:
DESCRIBE TABLE IT_POS LINES N_LINES.
IF PA_NMAX & 0 AND N_LINES GE PA_NMAX.
P_STOP = 'X'.
" POS_TABLE_FILL_VENDOR
*&---------------------------------------------------------------------*
KNA1_INFO_FILL
*&---------------------------------------------------------------------*
FORM KNA1_INFO_FILL.
CLEAR IT_H_KNA1.
MOVE-CORRESPONDING KNA1 TO IT_H_KNA1.
INSERT TABLE IT_H_KNA1.
"KNA1_INFO_FILL
*&---------------------------------------------------------------------*
KNB1_INFO_FILL
*&---------------------------------------------------------------------*
FORM KNB1_INFO_FILL.
CLEAR IT_H_KNB1.
MOVE-CORRESPONDING KNB1 TO IT_H_KNB1.
INSERT TABLE IT_H_KNB1.
* TABLE OF ACCOUNTS:
PERFORM FILL_ACCT_TABLE
C_KOART_AR
KNB1-KUNNR
KNB1-BUKRS
KNA1-LIFNR
KNA1-NAME1
"KNB1_INFO_FILL
*&---------------------------------------------------------------------*
KNB1_CHECK_BRANCH
*&---------------------------------------------------------------------*
FORM KNB1_CHECK_BRANCH.
DATA: LS_SELECTION
LIKE ADDR1_SEL,
LS_BRANCH_ADDR
LIKE ADDR1_VAL,
LS_CENTRAL_ADDR LIKE ADDR1_VAL,
LIKE KNA1,
DATA: LD_MANDT LIKE KNB1-MANDT.
DATA: LD_BUKRS LIKE KNB1-BUKRS.
DATA: LD_KNRZE LIKE KNB1-KNRZE.
DATA: LD_TEXT(2) TYPE C.
LOOP AT IT_H_KNB1 WHERE NOT KNRZE IS INITIAL.
IF PA_CENT NE 'N'.
LD_MANDT = IT_H_KNB1-MANDT.
LD_BUKRS = IT_H_KNB1-BUKRS.
LD_KNRZE = IT_H_KNB1-KNRZE.
READ TABLE IT_H_KNB1 WITH KEY MANDT = LD_MANDT
KUNNR = LD_KNRZE
BUKRS = LD_BUKRS
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
CLEAR IT_CENTRAL.
IF PA_CENT IS INITIAL.
CHECK PERMANENT USER SETTING:
GET PARAMETER ID 'FIT_BRANCH' FIELD LD_TEXT.
IF LD_TEXT+1(1) = 'X'.
'NEVER AGAIN' CASE:
LB_OKAY = LD_TEXT(1).
GET CENTRAL ADDRESS RECORD FOR BRANCH ACCOUNT:
READ TABLE IT_H_KNA1 WITH KEY MANDT = IT_H_KNB1-MANDT
KUNNR = IT_H_KNB1-KUNNR
BINARY SEARCH.
IF SY-SUBRC = 0.
LS_SELECTION-ADDRNUMBER = IT_H_KNA1-ADRNR.
CALL FUNCTION 'ADDR_GET'
ADDRESS_SELECTION = LS_SELECTION
ADDRESS_VALUE
= LS_BRANCH_ADDR
EXCEPTIONS
PARAMETER_ERROR
GET CENTRAL ADDRESS RECORD FOR CENTRAL ACCOUNT:
SELECT SINGLE NAME1 ADRNR FROM KNA1
INTO CORRESPONDING FIELDS OF LS_KNA1
WHERE KUNNR = IT_H_KNB1-KNRZE.
IF SY-SUBRC = 0.
LS_SELECTION-ADDRNUMBER = LS_KNA1-ADRNR.
CALL FUNCTION 'ADDR_GET'
ADDRESS_SELECTION = LS_SELECTION
ADDRESS_VALUE
= LS_CENTRAL_ADDR
EXCEPTIONS
PARAMETER_ERROR
SHOW POPUP:
CALL FUNCTION 'FI_ITEMS_BRANCH_CENTRAL'
ID_BRANCH_ACCT
= IT_H_KNB1-KUNNR
ID_BRANCH_NAME1
= LS_BRANCH_ADDR-NAME1
ID_CENTRAL_ACCT
= IT_H_KNB1-KNRZE
ID_CENTRAL_NAME1 = LS_CENTRAL_ADDR-NAME1
= IT_H_KNB1-BUKRS
EB_CENTRAL_ITEMS = LB_OKAY.
* RETURN TO SELECTION SCREEN, IF SELECTION IS CANCELLED IN BRANCH/HEAD
IF LB_OKAY = 'C'.
PA_CENT = 'C'.
CLEAR IT_CENTRAL.
REFRESH IT_CENTRAL.
* ADD ACCOUNT TO MEMORY, AND FILL CENTRAL ACCOUNT, IF REQUIRED:
IF PA_CENT = 'Y' OR LB_OKAY = 'X'.
IT_CENTRAL-CENTRAL = IT_H_KNB1-KNRZE.
IT_CENTRAL-BRANCH
= IT_H_KNB1-KUNNR.
IT_CENTRAL-BUKRS
= IT_H_KNB1-BUKRS.
APPEND IT_CENTRAL.
"KNB1_CHECK_BRANCH
*&---------------------------------------------------------------------*
T001_INFO_FILL
*&---------------------------------------------------------------------*
FORM T001_INFO_FILL.
READ TABLE IT_H_T001 WITH KEY MANDT = SY-MANDT
BUKRS = KNB1-BUKRS
BINARY SEARCH.
IF SY-SUBRC NE 0.
CLEAR: IT_H_T001.
SELECT SINGLE * FROM T001 INTO IT_H_T001
WHERE BUKRS = KNB1-BUKRS.
INSERT TABLE IT_H_T001.
TABLE OF COMPANIES:
PERFORM FILL_COMP_TABLE
KNB1-BUKRS
IT_H_T001-WAERS
IT_H_T001-KKBER.
IF WA_X001-BUKRS NE KNB1-BUKRS.
CLEAR: WA_X001.
CALL FUNCTION 'FI_CURRENCY_INFORMATION'
= KNB1-BUKRS
EXCEPTIONS
CURRENCY_2_NOT_DEFINED = 1
CURRENCY_3_NOT_DEFINED = 2
IF SY-SUBRC = 0.
"T001_INFO_FILL
*&---------------------------------------------------------------------*
MAP_SEL_TO_LDB
*&---------------------------------------------------------------------*
FORM MAP_SEL_TO_LDB.
DATA: LD_STIDA LIKE SY-DATUM.
DD_AUGDT, DD_BUDAT, DD_OPOPT, DD_APOPT, DD_STIDA .
REFRESH: DD_AUGDT, DD_BUDAT.
* DETERMINE WHETHER PARKED (XSTAV) AND/OR NORMAL ITEMS
* (XSTAN) MUST BE SELECTED BY THE LOG. DATABASE
IF X_PARK = 'X'.
B0SG-XSTAV = 'X'.
CLEAR B0SG-XSTAV.
IF ( X_NORM = 'X' OR X_SHBV = 'X' OR X_MERK = 'X' ).
B0SG-XSTAN = 'X'.
CLEAR B0SG-XSTAN.
* DETERMINE RELEVANT KEYDATES FOR THE SELECTION BY THE LOG. DATABASE
* (DD_STIDA)
GET PARAMETER ID 'FI_STIDA' FIELD LD_STIDA.
IF NOT LD_STIDA IS INITIAL AND SY-SUBRC EQ 0.
PA_STIDA = LD_STIDA.
SET PARAMETER ID 'FI_STIDA' FIELD ''.
WHEN X_OPSEL.
IF PA_STIDA IS INITIAL.
B0SG-XNOPL
= PA_STIDA.
= PA_STIDA.
WHEN X_AISEL.
DD_BUDAT[]
= SO_BUDAT[].
PA_STIDA_DEFAULT = DD_STIDA.
* FOR READING FROM ARCHIVES:
* NUMBER OF ARCHIVED ITEMS AS I-MESSAGE:
DD_IARCH = 'X'.
DD_MEMOR = 'X'.
"MAP_SEL_TO_LDB
*&---------------------------------------------------------------------*
SET_PARAMETERS
*&---------------------------------------------------------------------*
FORM SET_PARAMETERS.
* SET GENERAL PARAMETERS:
PERFORM SET_GENERAL_PARAM.
* SET ACC.TYPE SPECIFIC PARAMETERS:
CLEAR: DD_KUNNR, DD_BUKRS.
CLEAR: SO_WLKUN, SO_WLBUK.
IF GD_WL_ON IS INITIAL.
READ TABLE DD_KUNNR INDEX 1.
IF SY-SUBRC = 0 AND DD_KUNNR-SIGN = 'I' AND DD_KUNNR-OPTION = 'EQ'
AND NOT DD_KUNNR-LOW IS INITIAL.
SET PARAMETER ID 'KUN' FIELD DD_KUNNR-LOW.
READ TABLE DD_BUKRS INDEX 1.
IF SY-SUBRC = 0 AND DD_BUKRS-SIGN = 'I' AND DD_BUKRS-OPTION = 'EQ'
AND NOT DD_BUKRS-LOW IS INITIAL.
SET PARAMETER ID 'BUK' FIELD DD_BUKRS-LOW.
SET PARAMETER ID 'AVD' FIELD SPACE.
SET PARAMETER ID 'AVB' FIELD SPACE.
WORKLISTS SWITCHED ON:
SET PARAMETER ID 'AVD' FIELD PA_WLKUN.
SET PARAMETER ID 'AVB' FIELD PA_WLBUK.
READ TABLE SO_WLKUN INDEX 1.
IF SY-SUBRC = 0 AND SO_WLKUN-SIGN = 'I' AND SO_WLKUN-OPTION = 'EQ'
AND NOT SO_WLKUN-LOW IS INITIAL.
SET PARAMETER ID 'KUN' FIELD SO_WLKUN-LOW.
READ TABLE SO_WLBUK INDEX 1.
IF SY-SUBRC = 0 AND SO_WLBUK-SIGN = 'I' AND SO_WLBUK-OPTION = 'EQ'
AND NOT SO_WLBUK-LOW IS INITIAL.
SET PARAMETER ID 'BUK' FIELD SO_WLBUK-LOW.
* SET PARAMETERS FOR READING FROM ARCHIV
GD_USEAR = DD_USEAR.
GD_USEDB = DD_USEDB.
GD_MEMOR = 'X'.
"SET_PARAMETERS
*&---------------------------------------------------------------------*
READ_VENDOR_ITEMS
*&---------------------------------------------------------------------*
FORM READ_VENDOR_ITEMS.
* PREPARE SELECTION SCREEN TABLE:
PERFORM KDF_SELSCREEN.
IF SY-SUBRC && 0 .
SY-SUBRC = 0.
* PREPARE DYNAMIC SELECTIONS:
PERFORM KDF_DYNAMICS.
* PREPARE CALLBACKS FOR LDB_PROCESS:
PERFORM FILL_KDF_CALLBACK.
* EXPORT B0SG FLAGS FOR LDB
EXPORT B0SG TO MEMORY ID 'KDF_B0SG'.
* READ LDB KDF:
CALL FUNCTION 'LDB_PROCESS'
EXPRESSIONS
= IT_DYN_TEXPR[]
= IT_CALLBACK
SELECTIONS
= IT_SELSCREEN
EXCEPTIONS
LDB_SELECTIONS_ERROR
LDB_SELECTIONS_NOT_ACCEPTED = 2
FREE_SELECTIONS_ERROR
CALLBACK_NO_EVENT
CALLBACK_NO_PROGRAM
CALLBACK_NO_CBFORM
IF SY-SUBRC NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
PERFORM IMPORT_ARCH_FROM_MEMORY.
" READ_VENDOR_ITEMS
*&---------------------------------------------------------------------*
READ_CENTRAL_ITEMS
*&---------------------------------------------------------------------*
FORM READ_CENTRAL_ITEMS.
* LOOP OVER ALL IDENTIFIED CENTRAL OFFICE ACCTS:
LOOP AT IT_CENTRAL WHERE NOT CENTRAL IS INITIAL.
PREPARE SELECTION SCREEN TABLE:
PERFORM DDF_SELSCREEN.
PREPARE DYNAMIC SELECTIONS:
PERFORM DDF_DYNAMICS.
PREPARE CALLBACKS FOR LDB_PROCESS:
PERFORM FILL_DDF_CALLBACK.
EXPORT B0SG FLAGS FOR LDB
EXPORT B0SG TO MEMORY ID 'DDF_B0SG'.
READ LDB DDF:
CALL FUNCTION 'LDB_PROCESS'
EXPRESSIONS
= IT_DYN_TEXPR[]
= IT_CALLBACK
SELECTIONS
= IT_SELSCREEN
EXCEPTIONS
LDB_NOT_REENTRANT
LDB_INCORRECT
LDB_ALREADY_RUNNING
LDB_SELECTIONS_ERROR
LDB_SELECTIONS_NOT_ACCEPTED = 6
FREE_SELECTIONS_ERROR
CALLBACK_NO_EVENT
CALLBACK_NODE_DUPLICATE
CALLBACK_NO_PROGRAM
CALLBACK_NO_CBFORM
IF SY-SUBRC = 0 .
PERFORM IMPORT_ARCH_FROM_MEMORY.
" READ_CENTRAL_ITEMS
*&---------------------------------------------------------------------*
KDF_SELSCREEN
*&---------------------------------------------------------------------*
FORM KDF_SELSCREEN.
BEGIN OF ACCCOCO,
LIFNR LIKE KNA1-LIFNR,
BUKRS LIKE KNB1-BUKRS,
END OF ACCCOCO.
LD_SELECTIONS_OLD TYPE ACCCOCO.
STATICS: ST_SELECTIONS_OLD TYPE SORTED TABLE OF ACCCOCO
WITH UNIQUE KEY LIFNR BUKRS.
LD_SELECTIONS_OLD-LIFNR = KNA1-LIFNR.
LD_SELECTIONS_OLD-BUKRS = KNB1-BUKRS.
INSERT LD_SELECTIONS_OLD INTO TABLE ST_SELECTIONS_OLD.
IF SY-SUBRC && 0.
REFRESH: IT_SELSCREEN.
* FILL SELECTIONS: FIRST SINGLE VALUES & PARAMETERS
IT_SELSCREEN-SELNAME = 'KD_LIFNR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= KNA1-LIFNR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_BUKRS'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= KNB1-BUKRS.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_OPOPT'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_OPOPT.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_APOPT'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_APOPT.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_STIDA'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_STIDA.
APPEND IT_SELSCREEN.
* NOW SELECT OPTION TABLES:
LOOP AT DD_AUGDT.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_AUGDT'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_AUGDT TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
LOOP AT DD_BUDAT.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_BUDAT'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_BUDAT TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
IF SY-SUBRC && 0.
SY-SUBRC = 0.
* PARAMETERS AND SELECT OPTIONS FOR ARCHIVES
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_USEDB'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEDB.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_USEAR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEAR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_USEAS'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEAS.
APPEND IT_SELSCREEN.
IF NOT DD_FILES[] IS INITIAL.
LOOP AT DD_FILES.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_FILES'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_FILES TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_MEMOR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_MEMOR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_IARCH'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_IARCH.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'KD_NOOAP'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_NOOAP.
APPEND IT_SELSCREEN.
" KDF_SELSCREEN
*&---------------------------------------------------------------------*
DDF_SELSCREEN
*&---------------------------------------------------------------------*
FORM DDF_SELSCREEN.
REFRESH: IT_SELSCREEN.
* FILL SELECTIONS: FIRST SINGLE VALUES & PARAMETERS
IT_SELSCREEN-SELNAME = 'DD_KUNNR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= IT_CENTRAL-CENTRAL.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_BUKRS'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= IT_CENTRAL-BUKRS.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_OPOPT'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_OPOPT.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_APOPT'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_APOPT.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_STIDA'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_STIDA.
APPEND IT_SELSCREEN.
* NOW SELECT OPTION TABLES:
LOOP AT DD_AUGDT.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_AUGDT'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_AUGDT TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
LOOP AT DD_BUDAT.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_BUDAT'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_BUDAT TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
* PARAMETERS AND SELECT OPTIONS FOR ARCHIVES
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_USEDB'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEDB.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_USEAR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEAR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_USEAS'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_USEAS.
APPEND IT_SELSCREEN.
IF NOT DD_FILES[] IS INITIAL.
LOOP AT DD_FILES.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_FILES'.
IT_SELSCREEN-KIND
MOVE-CORRESPONDING DD_FILES TO IT_SELSCREEN.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_MEMOR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_MEMOR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_MEMOR'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_MEMOR.
APPEND IT_SELSCREEN.
CLEAR IT_SELSCREEN.
IT_SELSCREEN-SELNAME = 'DD_NOOAP'.
IT_SELSCREEN-KIND
IT_SELSCREEN-SIGN
IT_SELSCREEN-OPTION
IT_SELSCREEN-LOW
= DD_NOOAP.
APPEND IT_SELSCREEN.
" DDF_SELSCREEN
*&---------------------------------------------------------------------*
KDF_DYNAMICS
*&---------------------------------------------------------------------*
FORM KDF_DYNAMICS.
DATA: RT_DYN_TRANGE
TYPE RSDS_TRANGE.
REFRESH: IT_DYN_TEXPR.
* GET REPORT DYNAMIC SELECTIONS:
CALL FUNCTION 'RS_REFRESH_FROM_DYNAMICAL_SEL'
CURR_REPORT
MODE_WRITE_OR_MOVE = 'M'
= RT_DYN_TRANGE
EXCEPTIONS
WRONG_TYPE
IF SY-SUBRC NE 0.
DELETE RT_DYN_TRANGE WHERE TABLENAME NE 'BSID'.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
FIELD_RANGES = RT_DYN_TRANGE
EXPRESSIONS
= IT_DYN_TEXPR[].
* REPLACE TABLENAMES: CUSTOMER -& VENDOR
LOOP AT IT_DYN_TEXPR.
CASE IT_DYN_TEXPR-TABLENAME.
WHEN 'KNA1'.
IT_DYN_TEXPR-TABLENAME = 'LFA1'.
WHEN 'KNB1'.
IT_DYN_TEXPR-TABLENAME = 'LFB1'.
WHEN 'BSID'.
IT_DYN_TEXPR-TABLENAME = 'BSIK'.
WHEN OTHERS.
DELETE IT_DYN_TEXPR.
MODIFY IT_DYN_TEXPR.
* CREATE DUMMY IF IT_DYN_TEXPR IS EMPTY, DUE TO TECHNICAL REASONS
* IN LDB RUNTIME ENVIRONMENT (REFRESH DYN_SEL)
READ TABLE IT_DYN_TEXPR INDEX 1.
IF SY-SUBRC NE 0.
APPEND INITIAL LINE TO IT_DYN_TEXPR.
" KDF_DYNAMICS
*&---------------------------------------------------------------------*
DDF_DYNAMICS
*&---------------------------------------------------------------------*
FORM DDF_DYNAMICS.
DATA: RT_DYN_TRANGE
TYPE RSDS_TRANGE,
LIKE RSDSEXPR.
REFRESH: IT_DYN_TEXPR,
IT_DYN_TEXPR-EXPR_TAB.
* GET REPORT DYNAMIC SELECTIONS:
CALL FUNCTION 'RS_REFRESH_FROM_DYNAMICAL_SEL'
CURR_REPORT
MODE_WRITE_OR_MOVE = 'M'
= RT_DYN_TRANGE
EXCEPTIONS
WRONG_TYPE
IF SY-SUBRC & 1.
DELETE RT_DYN_TRANGE WHERE TABLENAME NE 'BSID'.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
FIELD_RANGES = RT_DYN_TRANGE
EXPRESSIONS
= IT_DYN_TEXPR[].
* ADD SELECTION: ITEMS BELONGING TO BRANCH
IT_DYN_TEXPR-TABLENAME = 'BSID'.
LS_EXPR-FIELDNAME = 'FILKD'.
LS_EXPR-OPTION
LS_EXPR-LOW
= IT_CENTRAL-BRANCH.
APPEND LS_EXPR TO IT_DYN_TEXPR-EXPR_TAB.
APPEND IT_DYN_TEXPR.
" DDF_DYNAMICS
*&---------------------------------------------------------------------*
FILL_KDF_CALLBACK
*&---------------------------------------------------------------------*
FORM FILL_KDF_CALLBACK.
REFRESH: IT_CALLBACK.
IT_CALLBACK-LDBNODE = 'LFA1'.
IT_CALLBACK-GET
IT_CALLBACK-CB_PROG = C_REPID_AR.
IT_CALLBACK-CB_FORM = 'CB_KDF_GET_LFA1'.
APPEND IT_CALLBACK.
IT_CALLBACK-LDBNODE = 'BSIK'.
IT_CALLBACK-GET
IT_CALLBACK-CB_PROG = C_REPID_AR.
IT_CALLBACK-CB_FORM = 'CB_KDF_GET_BSIK'.
APPEND IT_CALLBACK.
" FILL_KDF_CALLBACK
*&---------------------------------------------------------------------*
FILL_DDF_CALLBACK
*&---------------------------------------------------------------------*
FORM FILL_DDF_CALLBACK.
REFRESH: IT_CALLBACK.
IT_CALLBACK-LDBNODE = 'KNA1'.
IT_CALLBACK-GET
IT_CALLBACK-CB_PROG = C_REPID_AR.
IT_CALLBACK-CB_FORM = 'CB_DDF_GET_KNA1'.
APPEND IT_CALLBACK.
IT_CALLBACK-LDBNODE = 'BSID'.
IT_CALLBACK-GET
IT_CALLBACK-CB_PROG = C_REPID_AR.
IT_CALLBACK-CB_FORM = 'CB_DDF_GET_BSID'.
APPEND IT_CALLBACK.
" FILL_DDF_CALLBACK
*&---------------------------------------------------------------------*
CB_KDF_GET_BSIK
*&---------------------------------------------------------------------*
FORM CB_KDF_GET_BSIK
LIKE LDBN-LDBNODE
SELECTED TYPE C.
BSIK = LS_BSIK.
PERFORM POS_TABLE_FILL_VENDOR
" CB_KDF_GET_BSIK
*&---------------------------------------------------------------------*
CB_DDF_GET_BSID
*&---------------------------------------------------------------------*
FORM CB_DDF_GET_BSID
LIKE LDBN-LDBNODE
SELECTED TYPE C.
BSID = LS_BSID.
* HWAER WOULD BE FILLED INCORRECT IN THE CASE THE IT_H_T001
* STANDS ON THE WRONG ENTRY
IF BSID-BUKRS && IT_H_T001-BUKRS.
READ TABLE IT_H_T001 WITH KEY BUKRS = BSID-BUKRS.
* ATTENTION: CHANGE ACCOUNT NUMBER!!
BSID-KUNNR = BSID-FILKD.
PERFORM POS_TABLE_FILL
" CB_DDF_GET_BSID
*&---------------------------------------------------------------------*
SET_ACCT_AND_CCODE
*&---------------------------------------------------------------------*
FORM SET_ACCT_AND_CCODE.
REFRESH: DD_KUNNR, DD_BUKRS, SO_WLKUN, SO_WLBUK.
DD_KUNNR, DD_BUKRS, SO_WLKUN, SO_WLBUK,
PA_WLKUN, PA_WLBUK.
IF GD_WL_ON IS INITIAL.
GET PARAMETER ID 'KUN' FIELD DD_KUNNR-LOW.
IF SY-SUBRC = 0 AND NOT DD_KUNNR-LOW IS INITIAL.
DD_KUNNR-SIGN
DD_KUNNR-OPTION = 'EQ'.
APPEND DD_KUNNR.
GET PARAMETER ID 'BUK' FIELD DD_BUKRS-LOW.
IF SY-SUBRC = 0 AND NOT DD_BUKRS-LOW IS INITIAL.
DD_BUKRS-SIGN
DD_BUKRS-OPTION = 'EQ'.
APPEND DD_BUKRS.
WORKLISTS SWITCHED ON:
GET PARAMETER ID 'AVD' FIELD PA_WLKUN.
GET PARAMETER ID 'AVB' FIELD PA_WLBUK.
IF PA_WLKUN IS INITIAL.
GET PARAMETER ID 'KUN' FIELD SO_WLKUN-LOW.
IF SY-SUBRC = 0 AND NOT SO_WLKUN-LOW IS INITIAL.
SO_WLKUN-SIGN
SO_WLKUN-OPTION = 'EQ'.
APPEND SO_WLKUN.
IF PA_WLBUK IS INITIAL.
GET PARAMETER ID 'BUK' FIELD SO_WLBUK-LOW.
IF SY-SUBRC = 0 AND NOT SO_WLBUK-LOW IS INITIAL.
SO_WLBUK-SIGN
SO_WLBUK-OPTION = 'EQ'.
APPEND SO_WLBUK.
" SET_ACCT_AND_CCODE
*&---------------------------------------------------------------------*
INCLUDE RFITEM_INC
*&---------------------------------------------------------------------*
INCLUDE RFITEM_INC.
alv多层显示及分类汇总
没有更多推荐了,

我要回帖

更多关于 sap系统好学吗 的文章

 

随机推荐