-
2020-11-29 19:49:32
report zfi005.
*----------------------------------------------------------------------*
* 数据库表声明
*----------------------------------------------------------------------*
tables sscrfields."选择屏幕控件定义
*----------------------------------------------------------------------*
* 声明类型
*----------------------------------------------------------------------*
*&---文件上载/file upload
types: begin of ty_upload,
number type text20, " 序号
comp_code type bapiache09-comp_code, " 公司代码
pstng_date type bapiache09-pstng_date, " 过账日期
doc_date type bapiache09-doc_date, " 凭证日期
doc_type type bapiache09-doc_type, " 凭证类型
currency type bapiaccr09-currency , " 货币
kursf type bapiaccr09-exch_rate, " 汇率
ref_doc_no type bapiache09-ref_doc_no, " 参照
numpg type char03, " 页数
header_txt type bapiache09-header_txt, " 凭证抬头文本
buzei type buzei, " 行项目
bschl type bschl, " 过账码
gl_account type bapiacap09-gl_account , " 总账科目
customer type bapiacar09-customer , " 客户编号
vendor_no type bapiacap09-vendor_no , " 供应商编号
umskz type bseg-umskz , " 特别总账标识
asset_no type bapiacgl09-asset_no , " 资产号
anln2 type anla-anln2, " 资产子编号
anbwa type bseg-anbwa, " 事物类型
wrbtr type bseg-wrbtr, " 交易货币金额
dmbtr type bseg-dmbtr, " 本位币金额
dmbe2 type bseg-dmbe2, " 本位币2金额
gsber type bseg-gsber, " 业务范围
kkber type bseg-kkber, " 信用控制范围
costcenter type bapiacgl09-costcenter , " 成本中心
orderid type bapiacgl09-orderid , " 订单(统计型内部订单)
pernr type bseg-pernr, " 人员编号
zuonr type bapiacgl09-alloc_nmbr, " 分配
item_text type bapiacgl09-item_text , " 文本(凭证行文本)
xnegp type bseg-xnegp , " 反记账
menge type bseg-menge, " 数量
meins type bseg-meins, " 单位
xref1 type bseg-xref1 , " 参考代码1
xref2 type bseg-xref2 , " 参考代码2
xref3 type bseg-xref3 , " 参考代码3
zfbdt type bseg-zfbdt , " 基限日期(汇票到期日)
zterm type bseg-zterm, " 付款条件
rstgr type bseg-rstgr, " 原因代码
vbund type bseg-vbund, " 贸易伙伴
"获利能力段
kndnr type kunde_pa, " 客户
artnr type artnr, " 生产
fkart type fkart, " 开票类型
kaufn type kdauf, " 销售订单
kdpos type kdpos, " 销售订单项目
rkaufnr type aufnr, " 订单
werks type werks_d, " 工厂
fkber type fkber, " 功能范围
segment type fb_segment, " 段
vkorg type vkorg, " 销售机构
vtweg type vtweg, " 分销渠道
spart type spart, " 产品组
pspnr type ps_psp_pnr, " WBS 要素
copa_kostl type copa_kostl, " 成本中心
kstrg type kstrg, " 成本对象
prctr type prctr, " 利润中心
pprctr type pprctr, " 伙伴 PC
budget_pd type bseg-budget_pd, " 预算期间
zlsch type bseg-zlsch, " 付款方式
zzcoalr type bseg-zzcoalr, " 辅助核算科目
kmmakl type matkl, " 物料组
kmvkbu type vkbur, " 销售办事处
kmvkgr type vkgrp, " 销售组
*&---用来显示消息的字段
belnr type bseg-belnr, " 会计凭证编号
gjahr type bseg-gjahr, " 财年
bukrs type bseg-bukrs, " 公司代码
msg type string, " 返回消息
msg_belnr type string, " 返回凭证号
light type c length 4, " 消息指示灯
type type c length 1, " 消息类型
* slbox,
* newbw TYPE bwasl, " 事物类型 模板已将该字段删除该字段在该程序中已无用
end of ty_upload,
begin of ty_criteria_field,
name type fieldname,
end of ty_criteria_field.
*&---------------------------------------------------------------------*
*& globle/全局变量声明
*&---------------------------------------------------------------------*
*&---接收上传数据的内表和工作区
data:
gt_upload type standard table of ty_upload,
gt_criteria_field type table of ty_criteria_field,
gt_t001 type sorted table of t001 with unique key bukrs,
gt_finsc_001a type sorted table of finsc_001a with unique key bukrs curtype.
data: gs_upload type ty_upload.
data: gt_upload_add type standard table of ty_upload.
data: g_flag.
data: gt_bak type standard table of ty_upload.
field-symbols: <fs_upload> type ty_upload.
*&---ALV参数
data: gt_fieldcat type lvc_t_fcat.
data: gs_layout type lvc_s_layo.
data: gt_tbsl type table of tbsl,
gs_tbsl type tbsl.
data: g_re.
*&---------------------------------------------------------------------*
*& 宏声明
*&---------------------------------------------------------------------*
define build_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = &1.
ls_fieldcat-coltext = &2.
* ls_fieldcat-outputlen = &3.
"读取定义的长度和小数位
READ TABLE lr_struct->components INTO ls_components
WITH KEY name = &1.
IF sy-subrc = 0.
ls_fieldcat-inttype = ls_components-type_kind.
ls_fieldcat-outputlen = ls_components-length.
ls_fieldcat-decimals = ls_components-decimals.
ENDIF.
IF ls_fieldcat-fieldname = 'GL_ACCOUNT' OR
ls_fieldcat-fieldname = 'CUSTOMER' OR
ls_fieldcat-fieldname = 'VENDOR_NO' OR
ls_fieldcat-fieldname = 'COSTCENTER' OR
ls_fieldcat-fieldname = 'ORDERID' OR
ls_fieldcat-fieldname = 'VBUND' OR
ls_fieldcat-fieldname = 'ASSET_NO' OR
ls_fieldcat-fieldname = 'ANLN2' OR
ls_fieldcat-fieldname = 'KNDNR' OR
ls_fieldcat-fieldname = 'KAUFN' OR
ls_fieldcat-fieldname = 'RKAUFNR' OR
ls_fieldcat-fieldname = 'COPA_KOSTL' OR
ls_fieldcat-fieldname = 'PRCTR' OR
ls_fieldcat-fieldname = 'PPRCTR' OR
ls_fieldcat-fieldname = 'MSG_BELNR'.
ls_fieldcat-convexit = 'ALPHA'.
ENDIF.
IF ls_fieldcat-fieldname = 'MEINS'.
ls_fieldcat-convexit = 'CUNIT'.
ENDIF.
IF ls_fieldcat-fieldname = 'ARTNR'.
ls_fieldcat-convexit = 'MATN1'.
ENDIF.
IF ls_fieldcat-fieldname = 'MSG' OR
ls_fieldcat-fieldname = 'LIGHT' OR
ls_fieldcat-fieldname = 'MSG_BELNR' OR
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-key = 'X'.
ENDIF.
APPEND ls_fieldcat TO gt_fieldcat.
end-of-definition.
define fill_ftpost.
clear ls_ftpost.
ls_ftpost-stype = &1.
ls_ftpost-count = &2.
ls_ftpost-fnam = &3.
ls_ftpost-fval = &4.
condense ls_ftpost-fval no-gaps.
append ls_ftpost to lt_ftpost.
end-of-definition.
*&---------------------------------------------------------------------*
*& selection screen/选择屏幕
*&---------------------------------------------------------------------*
selection-screen begin of block blk1 with frame title text-001.
parameters: p_up radiobutton group grp1 default 'X' user-command create, "EXCEL导入
p_down radiobutton group grp1. "EXCEL下载
parameters: p_file type rlgrap-filename modif id m4."文件名
selection-screen end of block blk1.
*--------------------------------------------------------------------*
* initialization/选择屏幕前初始化
*--------------------------------------------------------------------*
initialization.
*&---初始化变量
perform initializtion.
*&---------------------------------------------------------------------*
*& at selection-screen/选择屏幕开始 *
*&---------------------------------------------------------------------*
at selection-screen.
*&---文件路径搜索帮助
at selection-screen on value-request for p_file.
data: l_filename like rlgrap-filename.
call function 'WS_FILENAME_GET'
exporting
* DEF_FILENAME = ',*.XLSX,*.XLSX;,*.XLS,*.XLS;'
* DEF_PATH = ' '
mask = ',Excel file,*.xls;*.xlsx;' "
mode = 'O'
* TITLE = ' '
importing
filename = l_filename
* RC =
exceptions
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
others = 5.
if sy-subrc = 0.
p_file = l_filename.
endif.
*
* CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
* CHANGING
* file_name = p_file.
*&---屏幕动态显示隐藏设置
at selection-screen output.
*&---------------------------------------------------------------------*
*& start-of-selection/开始选择屏幕
*&---------------------------------------------------------------------*
start-of-selection.
if p_up = abap_true .
*&---检查文件格式
perform frm_check_filename.
*&---上载数据
perform frm_get_data_from_file.
*&---ALV 展示(file data VS itab data check)
perform get_tbsl_data.
perform frm_alv_show.
*&---EXCEL模板下载
elseif p_down = abap_true .
perform frm_download.
endif.
*&---------------------------------------------------------------------*
*& end-of-selection/结束选择屏幕(程序结束处理,输出等) *
*&---------------------------------------------------------------------*
end-of-selection.
*&---------------------------------------------------------------------*
*& form check_filename
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_check_filename .
data: lv_s1 type string,
lv_s2 type string.
split p_file at '.' into lv_s1 lv_s2.
translate lv_s2 to upper case.
if p_file is initial.
message text-013 type 'S' display like 'W'. "请输入数据路径!
leave list-processing.
endif.
endform. " CHECK_FILENAME
*&---------------------------------------------------------------------*
*& form get_data_from_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_get_data_from_file .
data:
* lt_return TYPE bapiret2_t,
* ls_return TYPE LINE OF bapiret2_t,
l_string type string,
ls_path type rlgrap-filename.
field-symbols: <fs>.
data:l_filename type rlgrap-filename,
l_endrow type i.
data:itab type table of zsalsmex_tabline2 with header line.
clear: gt_upload.
if p_file is initial .
message text-012 type 'E'. "'文件路径不存在'
endif.
* ls_path = p_file.
l_filename = p_file.
l_endrow = 900000.
call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = l_filename
i_begin_col = 1
i_begin_row = 2
i_end_col = 59
i_end_row = l_endrow
tables
intern = itab
exceptions
inconsistent_parameters = 1
upload_ole = 2
others = 3.
if sy-subrc <> 0.
endif.
if itab[] is not initial.
loop at itab.
on change of itab-row.
if sy-tabix ne 1.
append gs_upload to gt_upload.
clear gs_upload.
endif.
endon.
try.
assign component itab-col of structure gs_upload to <fs>.
<fs> = itab-value.
catch cx_sy_conversion_no_number.
call function 'UNITS_STRING_CONVERT'
exporting
units_string = itab-value
dcpfm = 'X'
importing
units = <fs>
exceptions
invalid_type = 1
error_message = 2
others = 3.
endtry.
endloop.
append gs_upload to gt_upload.
clear gs_upload.
endif.
** TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.
* TYPE-POOLS truxs.
* DATA: tab_raw_data TYPE truxs_t_text_data."局部变量——导入excel文件时用到的工作区
* CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
* EXPORTING
** I_FIELD_SEPERATOR =
* i_line_header = 'X' "不带表头
* i_tab_raw_data = tab_raw_data "导入excel文件时用到的工作区
* i_filename = ls_path "文件的全路径
* TABLES
* i_tab_converted_data = gt_upload
* EXCEPTIONS
* conversion_failed = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
** Implement suitable error handling here
* ENDIF.
* CALL FUNCTION 'Z_UPLOAD_FILE'
* EXPORTING
* i_filename = ls_path
* i_skip = 'X'
* TABLES
* t_data = gt_upload[]
* t_return = lt_return.
* READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
* IF sy-subrc EQ 0.
*
* LOOP AT lt_return INTO ls_return WHERE type = 'E'.
*
* CONCATENATE l_string ls_return-message INTO l_string SEPARATED BY space.
*
* ENDLOOP.
*
* MESSAGE l_string TYPE 'I' .
* LEAVE LIST-PROCESSING.
*
* ENDIF.
if gt_upload is initial.
message text-014 type 'E'. "上传文件不包含任何有效数据!
stop.
endif.
loop at gt_upload assigning <fs_upload>.
" 补充前导0
<fs_upload>-gl_account = |{ <fs_upload>-gl_account alpha = in }|.
<fs_upload>-customer = |{ <fs_upload>-customer alpha = in }|.
<fs_upload>-vendor_no = |{ <fs_upload>-vendor_no alpha = in }|.
<fs_upload>-costcenter = |{ <fs_upload>-costcenter alpha = in }|.
<fs_upload>-orderid = |{ <fs_upload>-orderid alpha = in }|.
<fs_upload>-vbund = |{ <fs_upload>-vbund alpha = in }|.
<fs_upload>-asset_no = |{ <fs_upload>-asset_no alpha = in }|.
<fs_upload>-anln2 = |{ <fs_upload>-anln2 alpha = in }|.
<fs_upload>-kndnr = |{ <fs_upload>-kndnr alpha = in }|.
<fs_upload>-kaufn = |{ <fs_upload>-kaufn alpha = in }|.
<fs_upload>-rkaufnr = |{ <fs_upload>-rkaufnr alpha = in }|.
<fs_upload>-copa_kostl = |{ <fs_upload>-copa_kostl alpha = in }|.
<fs_upload>-prctr = |{ <fs_upload>-prctr alpha = in }|.
<fs_upload>-pprctr = |{ <fs_upload>-pprctr alpha = in }|.
if <fs_upload>-zzcoalr is not initial.
<fs_upload>-zzcoalr = |{ <fs_upload>-zzcoalr alpha = in }|.
endif.
call function 'CONVERSION_EXIT_MATN1_INPUT'
exporting
input = <fs_upload>-artnr
importing
output = <fs_upload>-artnr
exceptions
length_error = 1
others = 2.
call function 'CONVERSION_EXIT_CUNIT_INPUT'
exporting
input = <fs_upload>-meins
importing
output = <fs_upload>-meins
exceptions
unit_not_found = 1.
endloop.
gt_bak = gt_upload.
endform. " GET_DATA_FROM_FILE
*&---------------------------------------------------------------------*
*& form call_bapi
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form call_bapi using flag type abap_bool.
*&---bapi参数
data:
ls_documentheader type bapiache09,
lt_accountgl type standard table of bapiacgl09, " 总账
lt_accountreceivable type standard table of bapiacar09, " 客户
lt_accountpayable type standard table of bapiacap09, " 供应商
lt_currencyamount type standard table of bapiaccr09, " 金额
lt_extension2 type standard table of bapiparex, " 自定义字段增强
lt_return type standard table of bapiret2, " 返回参数
lt_criteria type standard table of bapiackec9. " 获利能力段
data:
ls_criteria_field type ty_criteria_field, "获利能力字段
ls_accountgl type bapiacgl09, " 总账
ls_accountreceivable type bapiacar09, " 客户
ls_accountpayable type bapiacap09, " 供应商
ls_currencyamount type bapiaccr09, " 金额
ls_criteria type bapiackec9, " 获利能力段
ls_extension2 type bapiparex, " 自定义字段增强
ls_return type bapiret2, " 返回参数。
ls_zsfi001 type zsfi001 . " 增强结构
*&---根据客户编号和公司代码取出付款条件
data: begin of ls_knb1,
kunnr like knb1-kunnr,
bukrs like knb1-bukrs,
zterm like knb1-zterm,
end of ls_knb1.
data: lt_knb1 like table of ls_knb1.
*&---根据供应商编号和公司代码取出付款条件
data: begin of ls_lfb1,
lifnr like lfb1-lifnr,
bukrs like lfb1-bukrs,
zterm like lfb1-zterm,
akont like lfb1-akont,
end of ls_lfb1.
data: lt_lfb1 like table of ls_lfb1.
data: begin of ls_skb1,
bukrs like skb1-bukrs,
saknr like skb1-saknr,
xintb like skb1-xintb,
end of ls_skb1.
data lt_skb1 like table of ls_skb1 .
data:lv_str_count type i.
*&---其它字段定义
data lv_num type i value 0. " 凭证行项目编号
data lv_umskz_flag type flag. " 用来判断要创建的会计凭证是否有特别总账标识
data:
lv_flag_case,
lv_funcname type rs38l_fnam,
ls_t001 type t001,
ls_finsc_001a type finsc_001a,
ls_upload type ty_upload.
field-symbols: <fs_field> type any.
clear gt_upload.
if flag = abap_true.
lv_funcname = 'BAPI_ACC_DOCUMENT_POST'.
else.
lv_funcname = 'BAPI_ACC_DOCUMENT_CHECK'.
endif.
gt_upload = gt_bak." 获取最原始的备份值
if gt_upload is not initial .
select kunnr
bukrs
zterm
into corresponding fields of table lt_knb1
from knb1
for all entries in gt_upload
where kunnr = gt_upload-customer
and bukrs = gt_upload-comp_code.
endif.
if gt_upload is not initial .
select bukrs
saknr
xintb
into corresponding fields of table lt_skb1
from skb1
for all entries in gt_upload
where saknr = gt_upload-gl_account .
endif.
if gt_upload is not initial .
select lifnr
bukrs
zterm
akont
into corresponding fields of table lt_lfb1
from lfb1
for all entries in gt_upload
where lifnr = gt_upload-vendor_no
and bukrs = gt_upload-comp_code.
endif.
select *
from ztfi007
into table @data(lt_ztfi007).
sort lt_knb1 by kunnr bukrs.
sort lt_lfb1 by lifnr bukrs.
sort lt_skb1 by bukrs saknr .
sort lt_ztfi007 by bukrs hkont zzcoalr.
*&---凭证数据整理
loop at gt_upload assigning <fs_upload>.
lv_num = lv_num + 1.
at new number.
clear:
ls_documentheader,
ls_t001.
free: lt_accountgl,
lt_accountreceivable,
lt_accountpayable,
lt_currencyamount,
lt_extension2,
lt_criteria,
lt_return.
ls_documentheader-comp_code = <fs_upload>-comp_code. " 公司代码
ls_documentheader-doc_date = <fs_upload>-doc_date. " 凭证日期
ls_documentheader-pstng_date = <fs_upload>-pstng_date. " 过账日期
ls_documentheader-doc_type = <fs_upload>-doc_type. " 凭证类型
ls_documentheader-ref_doc_no = <fs_upload>-ref_doc_no. " 参考凭证号
ls_documentheader-header_txt = <fs_upload>-header_txt. " 凭证抬头文本
ls_documentheader-username = sy-uname.
read table gt_t001 into ls_t001 with key bukrs = <fs_upload>-comp_code.
endat.
clear:
ls_accountgl,
ls_accountreceivable,
ls_accountpayable,
ls_currencyamount,
ls_extension2.
if <fs_upload>-xnegp eq 'X' or <fs_upload>-xnegp eq 'x' or <fs_upload>-xnegp is initial.
else.
<fs_upload>-msg = text-015 . "'反记账标识只能为x'
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
return.
endif.
clear lv_flag_case.
perform frm_upper_lower_case changing lv_flag_case <fs_upload>-xnegp.
if lv_flag_case eq 'E'.
<fs_upload>-msg = text-016 ."'大小写转化异常'
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
return.
endif.
"检查辅助科目
if <fs_upload>-zzcoalr is not initial.
if <fs_upload>-vendor_no is initial.
read table lt_ztfi007 with key bukrs = <fs_upload>-comp_code
hkont = <fs_upload>-gl_account
zzcoalr = <fs_upload>-zzcoalr
binary search
transporting no fields.
else.
if line_exists( lt_lfb1[ lifnr = <fs_upload>-vendor_no bukrs = <fs_upload>-comp_code ] ).
read table lt_ztfi007 with key bukrs = <fs_upload>-comp_code
hkont = lt_lfb1[ lifnr = <fs_upload>-vendor_no bukrs = <fs_upload>-comp_code ]-akont
zzcoalr = <fs_upload>-zzcoalr
binary search
transporting no fields.
endif.
endif.
if sy-subrc <> 0.
<fs_upload>-msg = text-022 .
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
return.
endif.
endif.
"当FS00的“创建/银行/利息” TAB页勾选了“只能自动过账” 时,对应的总账科目不能通过F-02做账,必须报错
read table lt_skb1 into ls_skb1 with key bukrs = <fs_upload>-comp_code
saknr = <fs_upload>-gl_account
binary search .
if sy-subrc = 0 .
if ls_skb1-xintb = 'X'.
" CONCATENATE '账户' <fs_upload>-gl_account '只能内部记帐到公司代码' <fs_upload>-comp_code '中' INTO <fs_upload>-msg .
concatenate text-017 <fs_upload>-gl_account text-018 <fs_upload>-comp_code text-019 into <fs_upload>-msg .
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
return.
endif.
endif.
if <fs_upload>-customer is not initial.
ls_accountreceivable-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_accountreceivable-customer = <fs_upload>-customer. " 客户
if <fs_upload>-umskz is not initial .
ls_accountreceivable-sp_gl_ind = <fs_upload>-umskz. " 特别总账标识
endif.
read table lt_knb1 into ls_knb1 with key kunnr = <fs_upload>-customer
bukrs = <fs_upload>-comp_code
binary search.
if sy-subrc = 0.
ls_accountreceivable-pmnttrms = ls_knb1-zterm . " 付款条件
endif.
ls_accountreceivable-pmnttrms = <fs_upload>-zterm. " 付款条件
ls_accountreceivable-bline_date = <fs_upload>-zfbdt. " 付款基准日期
* ls_accountreceivable-tax_code = <fs_upload>-tax_code. " 税码
ls_accountreceivable-item_text = <fs_upload>-item_text. " 凭证行文本
ls_accountreceivable-ref_key_1 = <fs_upload>-xref1. " 参考代码1
ls_accountreceivable-ref_key_2 = <fs_upload>-xref2. " 参考代码2
ls_accountreceivable-ref_key_3 = <fs_upload>-xref3. " 参考代码3
ls_accountreceivable-bus_area = <fs_upload>-gsber. " 业务范围
ls_accountreceivable-alloc_nmbr = <fs_upload>-zuonr. " 分配
ls_accountreceivable-gl_account = <fs_upload>-gl_account. " 科目代码
ls_accountreceivable-c_ctr_area = <fs_upload>-kkber. " 信用控制范围
ls_accountreceivable-budget_period = <fs_upload>-budget_pd. " 预算期间
ls_accountreceivable-pymt_meth = <fs_upload>-zlsch. "付款方式
append ls_accountreceivable to lt_accountreceivable.
elseif <fs_upload>-vendor_no is not initial.
ls_accountpayable-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_accountpayable-vendor_no = <fs_upload>-vendor_no. " 供应商
if <fs_upload>-umskz is not initial .
ls_accountpayable-sp_gl_ind = <fs_upload>-umskz. " 特别总账标识
endif.
read table lt_lfb1 into ls_lfb1 with key lifnr = <fs_upload>-vendor_no
bukrs = <fs_upload>-comp_code
binary search.
if sy-subrc = 0.
ls_accountpayable-pmnttrms = ls_lfb1-zterm . " 付款条件
endif.
* ls_accountpayable-tax_code = <fs_upload>-tax_code. " 税码
ls_accountpayable-pmnttrms = <fs_upload>-zterm . " 付款条件
ls_accountpayable-bline_date = <fs_upload>-zfbdt. " 付款基准日期
ls_accountpayable-item_text = <fs_upload>-item_text. " 凭证行文本
ls_accountpayable-ref_key_1 = <fs_upload>-xref1. " 参考代码1
ls_accountpayable-ref_key_2 = <fs_upload>-xref2. " 参考代码2
ls_accountpayable-ref_key_3 = <fs_upload>-xref3. " 参考代码3
ls_accountpayable-bus_area = <fs_upload>-gsber. " 业务范围
ls_accountpayable-alloc_nmbr = <fs_upload>-zuonr. " 分配
ls_accountpayable-gl_account = <fs_upload>-gl_account. " 科目代码
ls_accountpayable-budget_period = <fs_upload>-budget_pd. " 预算期间
ls_accountpayable-pymt_meth = <fs_upload>-zlsch. " 付款方式
append ls_accountpayable to lt_accountpayable.
else.
if <fs_upload>-asset_no is not initial .
ls_accountgl-asset_no = <fs_upload>-asset_no. " 资产号
ls_accountgl-sub_number = <fs_upload>-anln2.
ls_accountgl-acct_type = 'A'.
endif.
ls_accountgl-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_accountgl-gl_account = <fs_upload>-gl_account. " 科目代码
ls_accountgl-costcenter = <fs_upload>-costcenter. " 成本中心
ls_accountgl-orderid = <fs_upload>-orderid. " 统计型内部订单
ls_accountgl-item_text = <fs_upload>-item_text. " 凭证行文本
ls_accountgl-ref_key_1 = <fs_upload>-xref1. " 参考代码1
ls_accountgl-ref_key_2 = <fs_upload>-xref2. " 参考代码2
ls_accountgl-ref_key_3 = <fs_upload>-xref3. " 参考代码3
ls_accountgl-bus_area = <fs_upload>-gsber. " 业务范围
ls_accountgl-person_no = <fs_upload>-pernr. " 员工号
ls_accountgl-quantity = <fs_upload>-menge.
ls_accountgl-base_uom = <fs_upload>-meins.
ls_accountgl-alloc_nmbr = <fs_upload>-zuonr. " 分配
ls_accountgl-trade_id = <fs_upload>-vbund. " 贸易伙伴
ls_accountgl-budget_period = <fs_upload>-budget_pd. " 预算期间
append ls_accountgl to lt_accountgl.
endif.
clear gs_tbsl.
read table gt_tbsl into gs_tbsl with key bschl = <fs_upload>-bschl binary search.
if sy-subrc eq 0 and gs_tbsl-shkzg = 'H'.
<fs_upload>-dmbtr = - <fs_upload>-dmbtr.
<fs_upload>-wrbtr = - <fs_upload>-wrbtr.
<fs_upload>-dmbe2 = - <fs_upload>-dmbe2.
endif.
if <fs_upload>-wrbtr is not initial.
clear: ls_currencyamount.
ls_currencyamount-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_currencyamount-currency = <fs_upload>-currency. " 货币码
ls_currencyamount-curr_type = '00'. " 凭证中输入的币别类型
ls_currencyamount-amt_doccur = <fs_upload>-wrbtr. " 交易货币金额
ls_currencyamount-exch_rate = <fs_upload>-kursf.
append ls_currencyamount to lt_currencyamount.
endif.
if <fs_upload>-dmbtr is not initial and
<fs_upload>-currency <> ls_t001-waers. " 输入的货币类别不是公司币种
clear: ls_currencyamount.
ls_currencyamount-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_currencyamount-currency = ls_t001-waers. " 货币码
ls_currencyamount-curr_type = '10'. " 本位币类型
ls_currencyamount-amt_doccur = <fs_upload>-dmbtr.
ls_currencyamount-exch_rate = <fs_upload>-kursf.
append ls_currencyamount to lt_currencyamount.
endif.
if <fs_upload>-dmbe2 is not initial.
read table gt_finsc_001a into ls_finsc_001a with key bukrs = <fs_upload>-comp_code
curtype = '30'.
if sy-subrc = 0.
clear: ls_currencyamount.
ls_currencyamount-itemno_acc = <fs_upload>-buzei. " 行项目编号
ls_currencyamount-currency = SWITCH #( ls_finsc_001a-waers when '' then ls_t001-waers else ls_finsc_001a-waers ). " 货币码
ls_currencyamount-curr_type = '30'. " 本位币类型
ls_currencyamount-amt_doccur = <fs_upload>-dmbe2.
ls_currencyamount-exch_rate = <fs_upload>-kursf.
append ls_currencyamount to lt_currencyamount.
endif.
endif.
"另外还需要在ACC_DOCUMENT change中加一个增强
ls_zsfi001-posnr = <fs_upload>-buzei.
ls_zsfi001-rstgr = <fs_upload>-rstgr. "原因代码
ls_zsfi001-xnegp = <fs_upload>-xnegp. "反记账
ls_zsfi001-bschl = <fs_upload>-bschl. "过账码
ls_zsfi001-anbwa = <fs_upload>-anbwa. "资产交易类型
ls_zsfi001-numpg = <fs_upload>-numpg. "页数
ls_zsfi001-zzcoalr = <fs_upload>-zzcoalr.
clear ls_extension2 .
ls_extension2-structure = 'ZSFI001' .
ls_extension2+30 = ls_zsfi001 .
append ls_extension2 to lt_extension2 .
" 获利能力段
loop at gt_criteria_field into ls_criteria_field.
assign component ls_criteria_field-name of structure <fs_upload> to <fs_field>.
if <fs_field> is assigned and <fs_field> is not initial.
clear ls_criteria.
ls_criteria-itemno_acc = lv_num.
ls_criteria-fieldname = ls_criteria_field-name.
ls_criteria-character = <fs_field>.
append ls_criteria to lt_criteria.
unassign:
<fs_field>.
endif.
endloop.
at end of number.
perform frm_author_check using ls_documentheader-comp_code .
if g_re is not initial.
continue.
endif.
*&---检查凭证是否正确
call function lv_funcname
exporting
documentheader = ls_documentheader
tables
accountgl = lt_accountgl
accountreceivable = lt_accountreceivable
accountpayable = lt_accountpayable
currencyamount = lt_currencyamount
criteria = lt_criteria
return = lt_return
extension2 = lt_extension2.
sort lt_return by type .
read table lt_return with key type = 'E' transporting no fields.
if sy-subrc = 0.
call function 'BAPI_TRANSACTION_ROLLBACK'.
loop at lt_return into ls_return from sy-tabix.
if ls_return-type = 'E'.
concatenate <fs_upload>-msg ls_return-message '_' into <fs_upload>-msg.
else.
exit.
endif.
endloop.
clear:lv_str_count.
lv_str_count = strlen( <fs_upload>-msg ) - 1. "去掉最后一个 _
<fs_upload>-msg = <fs_upload>-msg+(lv_str_count).
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
else.
read table lt_return with key type = 'A' transporting no fields.
if sy-subrc = 0.
call function 'BAPI_TRANSACTION_ROLLBACK'.
loop at lt_return into ls_return from sy-tabix.
if ls_return-type = 'A'.
concatenate <fs_upload>-msg ls_return-message '_' into <fs_upload>-msg.
else.
exit.
endif.
endloop.
clear:lv_str_count.
lv_str_count = strlen( <fs_upload>-msg ) - 1. "去掉最后一个 _
<fs_upload>-msg = <fs_upload>-msg+(lv_str_count).
<fs_upload>-type = 'A'.
<fs_upload>-light = '@5C@'.
else.
read table lt_return into ls_return with key id = 'RW' number = '605'.
if sy-subrc <> 0.
read table lt_return into ls_return with key id = 'RW' number = '614'.
endif.
if sy-subrc = 0.
<fs_upload>-type = 'S'.
<fs_upload>-light = '@5B@'.
concatenate <fs_upload>-msg ls_return-message into <fs_upload>-msg.
<fs_upload>-msg_belnr = ls_return-message_v2+0(10).
<fs_upload>-belnr = ls_return-message_v2+0(10).
<fs_upload>-bukrs = ls_return-message_v2+10(4).
<fs_upload>-gjahr = ls_return-message_v2+14(4).
endif.
*&---正式凭证创建
if flag = abap_true.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
endif.
endif.
endif.
"清空工作&内表
clear:
ls_documentheader,
ls_return,
lv_num.
refresh:lt_accountgl,
lt_accountreceivable,
lt_accountpayable,
lt_currencyamount,
lt_criteria,
lt_extension2,
lt_return.
"更新所有 相同number的 相同 提示 信息相同;
clear ls_upload.
loop at gt_upload into ls_upload where number = <fs_upload>-number.
ls_upload-msg = <fs_upload>-msg.
ls_upload-type = <fs_upload>-type.
ls_upload-light = <fs_upload>-light.
ls_upload-msg_belnr = <fs_upload>-msg_belnr.
ls_upload-belnr = <fs_upload>-belnr.
ls_upload-bukrs = <fs_upload>-bukrs.
ls_upload-gjahr = <fs_upload>-gjahr.
modify gt_upload from ls_upload .
endloop.
endat.
endloop.
endform. " CALL_BAPI
*&---------------------------------------------------------------------*
*& form frm_alv_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_alv_fieldcat .
data:
ls_fieldcat type lvc_s_fcat,
ls_upload type ty_upload,
lr_struct type ref to cl_abap_structdescr,
ls_components type abap_compdescr.
clear: gt_fieldcat.
lr_struct ?= cl_abap_typedescr=>describe_by_data( ls_upload ).
build_fieldcat 'MSG' text-h57. "返回消息
build_fieldcat 'TYPE' text-h58."消息类型
build_fieldcat 'LIGHT' text-h59."消息指示灯
build_fieldcat 'MSG_BELNR' text-h60."会计凭证号
build_fieldcat 'NUMBER' text-h01. "序号
build_fieldcat 'COMP_CODE' text-h02 ."公司代码
build_fieldcat 'PSTNG_DATE' text-h03."过账日期
build_fieldcat 'DOC_DATE' text-h04."凭证日期
build_fieldcat 'DOC_TYPE' text-h05."凭证类型
build_fieldcat 'CURRENCY' text-h06."凭证类型
build_fieldcat 'KURSF' text-h07."汇率
build_fieldcat 'REF_DOC_NO' text-h08."参照
build_fieldcat 'NUMPG' text-h61."页数
build_fieldcat 'HEADER_TXT' text-h09."凭证抬头文本
build_fieldcat 'BUZEI' text-h10."凭证行项目
build_fieldcat 'BSCHL' text-h11."记账码
build_fieldcat 'GL_ACCOUNT' text-h12."总账科目
build_fieldcat 'CUSTOMER' text-h13."客户编码
build_fieldcat 'VENDOR_NO' text-h14."供应商编码
build_fieldcat 'UMSKZ' text-h15."特殊总账标识
build_fieldcat 'ASSET_NO' text-h16."资产编号
build_fieldcat 'ANLN2' text-h17."次级资产编号
build_fieldcat 'ANBWA' text-h18."资产操作事务类型
build_fieldcat 'WRBTR' text-h19."交易货币金额
build_fieldcat 'DMBTR' text-h20."本位币金额
build_fieldcat 'DMBE2' text-h62."本位币2金额
build_fieldcat 'GSBER' text-h21."业务范围
build_fieldcat 'KKBER' text-h63."信用控制范围
build_fieldcat 'COSTCENTER' text-h22."成本中心
build_fieldcat 'ORDERID' text-h23."内部订单
build_fieldcat 'PERNR' text-h24."人员编号
build_fieldcat 'ZUONR' text-h25."分配
build_fieldcat 'ITEM_TEXT' text-h26."凭证行项目文本
build_fieldcat 'XNEGP' text-h27."反记账标识
build_fieldcat 'MENGE' text-h28."数量
build_fieldcat 'MEINS' text-h29."单位
build_fieldcat 'XREF1' text-h30."参考码1
build_fieldcat 'XREF2' text-h31."参考码2
build_fieldcat 'XREF3' text-h32."参考码3
build_fieldcat 'ZFBDT' text-h33."基准日期(汇票到日期)
build_fieldcat 'ZTERM' text-h34."付款条件
build_fieldcat 'RSTGR' text-h35."原因代码
build_fieldcat 'VBUND' text-h36."贸易伙伴
build_fieldcat 'KNDNR' text-h37."COPA客户号
build_fieldcat 'ARTNR' text-h38."COPA物料号
build_fieldcat 'FKART' text-h39."COPA开票类型
build_fieldcat 'KAUFN' text-h40."COPA销售订单
build_fieldcat 'KDPOS' text-h41."COPA销售订单行项目
build_fieldcat 'RKAUFNR' text-h42."COPA订单
build_fieldcat 'WERKS' text-h43."COPA工厂
build_fieldcat 'FKBER' text-h44."COPA功能范围
build_fieldcat 'SEGMENT' text-h45."COPA段
build_fieldcat 'VKORG' text-h46."COPA销售组织
build_fieldcat 'VTWEG' text-h47."COPA分销渠道
build_fieldcat 'SPART' text-h48."COPA产品组
build_fieldcat 'PSPNR' text-h49."COPA WBS元素
build_fieldcat 'COPA_KOSTL' text-h50."COPA成本中心
build_fieldcat 'KSTRG' text-h51."COPA成本对象
build_fieldcat 'PRCTR' text-h52."COPA利润中心
build_fieldcat 'PPRCTR' text-h53."COPA伙伴利润中心
* build_fieldcat 'KMMAKL' text-h54."COPA物料组
* build_fieldcat 'KMVKBU' text-h55."COPA销售办公室
* build_fieldcat 'KMVKGR' text-h56."COPA销售组
build_fieldcat 'BUDGET_PD' text-h64. "预算期间
build_fieldcat 'ZLSCH' text-h65. "付款方式
build_fieldcat 'ZZCOALR' text-h66. "辅助核算科目
endform. " F_ALV_FIELDCAT
*&---------------------------------------------------------------------*
*& form frm_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form frm_layout .
gs_layout-zebra = 'X'.
gs_layout-cwidth_opt = 'X'.
endform. " F_LAYOUT
*&---------------------------------------------------------------------*
*& form frm_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form frm_display .
*&---设置变式保存
call function 'REUSE_ALV_GRID_DISPLAY_LVC'
exporting
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_save = 'A'
tables
t_outtab = gt_upload.
if sy-subrc <> 0.
endif.
endform. "F_DISPLAY
*&---------------------------------------------------------------------*
*& form frm_set_status
*&---------------------------------------------------------------------*
* alv状态栏设置
*----------------------------------------------------------------------*
form frm_set_status using pt_extab type slis_t_extab .
set pf-status 'STANDARD' excluding pt_extab.
endform. "Frm_SET_STATUS
*&---------------------------------------------------------------------*
*& form frm_set_status
*&---------------------------------------------------------------------*
* alv按钮处理
*----------------------------------------------------------------------*
form frm_user_command using pv_ucomm like sy-ucomm
ps_selfield type slis_selfield.
ps_selfield-refresh = abap_true.
ps_selfield-row_stable = abap_true.
ps_selfield-col_stable = abap_true.
case pv_ucomm.
when 'SAVE1'.
*&--------------调用BAPI
if g_flag = 1.
message text-020 type 'E'. "'该界面不允许连续两次过账'
endif.
perform save using abap_true.
g_flag = 1.
when 'TEST'.
*&--------------调用BAPI
perform save using abap_false.
when others.
endcase.
endform. "user_command
*&---------------------------------------------------------------------*
*& form frm_download
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p_1 text
* <-- p_2 text
*----------------------------------------------------------------------*
form frm_download .
*&---变量定义
data: lv_text type string, "message
lv_filename type string, "download file name
lv_path type string, "download file path
ls_functxt type smp_dyntxt, "menu name
lv_filepath type rlgrap-filename value 'c', "file patch
lv_title type string , "title
lv_title_name type string, "title name
lv_mod(20) type c, "model
lv_fullpath type string, "full path
ls_object type wwwdatatab, "object name
lv_rc type sy-subrc. "return code
*&---SMWO 模板名称
lv_mod = 'ZFI005'. "下载文件名
*&---调用OS 操作系统对话框
lv_title = text-002. "会计凭证导入模板下载
lv_title_name = text-003. "会计凭证导入模板
call method cl_gui_frontend_services=>file_save_dialog
exporting
window_title = lv_title
default_extension = 'xlsx'
default_file_name = lv_title_name
" with_encoding =
file_filter = 'EXCEL文件(*.XLSX)|*.XLSX|全部文件 (*.*)|*.*|'
initial_directory = 'D:\'
prompt_on_overwrite = 'X'
changing
filename = lv_filename "默认文件名称
path = lv_path "文件路径
fullpath = lv_fullpath "文件路径
" user_action =
" file_encoding =
exceptions
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
invalid_default_file_name = 4
others = 5.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
*&---操作系统文件路径
concatenate lv_path
lv_filename
* '.xlsx'
into lv_filepath.
check lv_filepath is not initial.
*&---OS长度控制/*&---下载模板
if strlen( lv_filepath ) <> 4.
*&---查询模板.
select single
relid objid
from wwwdata
into corresponding fields of ls_object
where srtf2 = '0'
and objid = lv_mod. "smw0里对象名称
if sy-subrc <> 0 or ls_object-objid = space .
lv_text = text-010. "模板文件不存在,请联系相关人员维护!
message lv_text type 'E'.
stop.
endif.
*&---下载模板
call function 'DOWNLOAD_WEB_OBJECT'
exporting
key = ls_object
destination = lv_filepath
importing
rc = lv_rc.
if lv_rc <> 0.
lv_text = text-011. "下载失败,请联系技术人员!
message lv_text type 'E'.
stop.
endif.
*&---'已成功下载'
message text-106 type 'S'.
else.
*&---'已取消下载'
message text-107 type 'S'.
endif.
endform.
*&---------------------------------------------------------------------*
*& form get_tbsl_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
form get_tbsl_data .
select *
into corresponding fields of table gt_tbsl
from tbsl.
sort gt_tbsl by bschl.
endform.
*&---------------------------------------------------------------------*
*& form frm_alv_show
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_alv_show .
perform frm_alv_fieldcat. " 设置ALV要显示的字段和字段格式
perform frm_layout. " ALV整体布局设置
perform frm_display. " ALV展示
endform. " FRM_ALV_SHOW
*&---------------------------------------------------------------------*
*& form frm_author_check
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->p_ls_documentheader_comp_code text
*&---------------------------------------------------------------------*
form frm_author_check using p_comp_code type bukrs .
clear g_re.
authority-check object 'F_BKPF_BUK'
id 'BUKRS' field p_comp_code
id 'ACTVT' dummy.
if sy-subrc <> 0.
<fs_upload>-msg = text-021. "'公司代码权限检查不通过'
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
g_re = '1'.
endif.
endform.
*&---------------------------------------------------------------------*
*& form frm_add_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
form frm_add_data .
data num_add(5).
data num_now(20).
data number_new(20).
data account(4) type p.
data l_dmbtr type dmbtr.
loop at gt_upload into gs_upload.
at new number.
if num_now is not initial .
gs_upload-dmbtr = - l_dmbtr.
gs_upload-gl_account = '9999990030'.
clear: gs_upload-dmbtr ,gs_upload-gl_account,gs_upload-bschl.
if l_dmbtr > 0.
gs_upload-bschl = '50'.
append gs_upload to gt_upload_add.
elseif l_dmbtr < 0.
gs_upload-bschl = '40'.
append gs_upload to gt_upload_add.
endif.
endif.
clear account.
clear num_now.
clear l_dmbtr.
endat.
if num_now is not initial .
gs_upload-number = number_new.
append gs_upload to gt_upload_add.
else.
append gs_upload to gt_upload_add.
endif.
if gs_upload-bschl eq '19'.
l_dmbtr = l_dmbtr - gs_upload-dmbtr.
else.
l_dmbtr = l_dmbtr + gs_upload-dmbtr.
endif.
account = account + 1.
if account = 900.
gs_upload-dmbtr = - l_dmbtr.
gs_upload-gl_account = '9999990030'.
clear: gs_upload-dmbtr ,gs_upload-gl_account,gs_upload-bschl.
if l_dmbtr > 0.
gs_upload-bschl = '50'.
append gs_upload to gt_upload_add.
elseif l_dmbtr < 0.
gs_upload-bschl = '40'.
append gs_upload to gt_upload_add.
endif.
num_now = gs_upload-number. "记录超过 900 的当前行 用来判断后续需要从新生成number的行
num_add = num_add + 1."超过 900行 的次数 用于生成新的 number
shift num_add left deleting leading space.
* SHIFT num_now RIGHT DELETING TRAILING space.
condense num_now no-gaps.
concatenate num_now 'a' num_add into number_new.
clear account.
clear l_dmbtr.
endif.
endloop.
endform.
*&---------------------------------------------------------------------*
*& form frm_upper_lower_case
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
form frm_upper_lower_case changing p_re type c p_str type c .
data p_dem.
if p_str is initial.
p_re = 'S'.
return.
endif.
call function 'STRING_UPPER_LOWER_CASE'
exporting
delimiter = p_dem
string1 = p_str
importing
string = p_str
exceptions
not_valid = 1
too_long = 2
too_small = 3
others = 4.
if sy-subrc <> 0.
* Implement suitable error handling here
p_re = 'E'.
else.
p_re = 'S'.
endif.
endform.
*&---------------------------------------------------------------------*
*& Form INITIALIZTION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
form initializtion .
" 获利能力段字段
gt_criteria_field = value #(
( name = 'KNDNR' )"客户
( name = 'ARTNR' )"生产
( name = 'FKART' )"开票类型
( name = 'KAUFN' )"销售订单
( name = 'KDPOS' )"销售订单项目
( name = 'RKAUFNR' )"订单
( name = 'WERKS' )"工厂
( name = 'FKBER' )"功能范围
( name = 'SEGMENT' )"段
( name = 'VKORG' )"销售机构
( name = 'VTWEG' )"分销渠道
( name = 'SPART' )"产品组
( name = 'PSPNR' )"WBS 要素
( name = 'COPA_KOSTL' )"成本中心
( name = 'KSTRG' )"成本对象
( name = 'PRCTR' )"利润中心
( name = 'PPRCTR' )"伙伴 PC
( name = 'KMMAKL' )"物料组
( name = 'KMVKBU' )"销售办事处
( name = 'KMVKGR' )"销售组
).
select *
into corresponding fields of table gt_t001
from t001.
select *
into corresponding fields of table gt_finsc_001a
from finsc_001a.
endform.
*&---------------------------------------------------------------------*
*& Form save
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> ABAP_TRUE
*&---------------------------------------------------------------------*
form save using p_post type abap_bool.
data:
lt_t074u type table of t074u,
ls_t074u type t074u,
lv_bdc type char01,
lv_koart type t074u-koart.
select *
into corresponding fields of table lt_t074u
from t074u.
sort lt_t074u by koart umskz.
loop at gt_upload into data(ls_upload) where customer <> space
or vendor_no <> space.
if ls_upload-customer <> space.
lv_koart = 'D'.
endif.
if ls_upload-vendor_no <> space.
lv_koart = 'K'.
endif.
clear: ls_t074u.
read table lt_t074u into ls_t074u with key koart = lv_koart
umskz = ls_upload-umskz
binary search.
if ls_t074u-umsks = 'W'.
lv_bdc = abap_true.
exit.
endif.
endloop.
if lv_bdc = abap_true.
perform call_bdc using p_post.
else.
perform call_bapi using p_post.
endif.
endform.
*&---------------------------------------------------------------------*
*& Form call_bdc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_POST
*&---------------------------------------------------------------------*
form call_bdc using p_post type abap_bool.
data:
lt_ftpost type table of ftpost,
ls_ftpost type ftpost,
lt_blntab type table of blntab,
lt_fttax type table of fttax,
lv_bschl type bschl,
lv_index type i,
lv_mode type rfpdo-allgazmd value 'N',
ls_sy type syst.
if p_post <> abap_true.
message e001(00) with '票据类型不支持凭证检查' .
exit.
endif.
loop at gt_upload assigning <fs_upload>.
at new number.
clear:
lt_ftpost,
lv_index,
lt_fttax,
lt_blntab.
fill_ftpost 'K' '0001' 'BKPF-BUKRS' <fs_upload>-comp_code. " 公司代码
fill_ftpost 'K' '0001' 'BKPF-BLART' <fs_upload>-doc_type. " 凭证类型
fill_ftpost 'K' '0001' 'BKPF-MONAT' <fs_upload>-pstng_date+4(2). " 期间
fill_ftpost 'K' '0001' 'BKPF-BLDAT' <fs_upload>-doc_date. " 凭证日期
fill_ftpost 'K' '0001' 'BKPF-BUDAT' <fs_upload>-pstng_date. " 过账日期
fill_ftpost 'K' '0001' 'BKPF-BKTXT' <fs_upload>-header_txt. " 凭证抬头文本
fill_ftpost 'K' '0001' 'BKPF-XBLNR' <fs_upload>-ref_doc_no. " 参考凭证号
fill_ftpost 'K' '0001' 'BKPF-WAERS' <fs_upload>-currency.
fill_ftpost 'K' '0001' 'BKPF-NUMPG' <fs_upload>-numpg.
if <fs_upload>-kursf is not initial.
fill_ftpost 'K' '0001' 'BKPF-KURSF' <fs_upload>-kursf. " 汇率
endif.
* if <fs_upload>-xmwst is not initial .
* fill_ftpost 'K' '0001' 'BKPF-XMWST' <fs_upload>-xmwst."计算税额
* endif.
endat.
lv_index = lv_index + 1.
fill_ftpost 'P' lv_index 'BSEG-BSCHL' <fs_upload>-bschl. " 记账码
fill_ftpost 'P' lv_index 'BSEG-UMSKZ' <fs_upload>-umskz.
* 如果客户不为空,则为客户行
if <fs_upload>-customer is not initial.
fill_ftpost 'P' lv_index 'BSEG-KUNNR' <fs_upload>-customer. " 客户编号
endif.
* 如果供应商不为空,则为供应商行
if <fs_upload>-vendor_no is not initial.
fill_ftpost 'P' lv_index 'BSEG-LIFNR' <fs_upload>-vendor_no. " 供应商编码
endif.
if <fs_upload>-gl_account is not initial.
fill_ftpost 'P' lv_index 'BSEG-HKONT' <fs_upload>-gl_account." 科目代码
endif.
if <fs_upload>-xnegp is not initial.
fill_ftpost 'P' lv_index 'BSEG-XNEGP' <fs_upload>-xnegp. " 反记账
endif.
* if <fs_upload>-wdate is not initial.
* fill_ftpost 'P' lv_index 'BSED-WDATE' <fs_upload>-wdate. "汇票签发日期
* endif.
* if <fs_upload>-wname is not initial.
* fill_ftpost 'P' lv_index 'BSED-WNAME' <fs_upload>-wname. "收款人
* endif.
*
* if <fs_upload>-wbzog is not initial.
* fill_ftpost 'P' lv_index 'BSED-WBZOG' <fs_upload>-wbzog. "付款人
* endif.
*
* if <fs_upload>-wlzbp is not initial.
* fill_ftpost 'P' lv_index 'BSED-WLZBP' <fs_upload>-wlzbp. "票据号
* endif.
*
* if <fs_upload>-wbank is not initial.
* fill_ftpost 'P' lv_index 'BSED-WBANK' <fs_upload>-wbank. "付款银行
* endif.
*
* if <fs_upload>-wstat is not initial.
* fill_ftpost 'P' lv_index 'BSED-WSTAT' <fs_upload>-wstat. "票据状态
* endif.
*
* if <fs_upload>-wevwv is not initial.
* fill_ftpost 'P' lv_index 'BSED-WEVWV' <fs_upload>-wevwv. "收票业务类型
* endif.
* fill_ftpost: 'P' lv_index 'RF05A-NEWBS' lv_bschl, "
* 'P' lv_index 'RF05A-NEWKO' <fs_upload>-hkont. "
"'P' lv_index 'RF05A-NEWUM' <fs_upload>-newum. "
<fs_upload>-wrbtr = abs( <fs_upload>-wrbtr ).
fill_ftpost: 'P' lv_index 'BSEG-WRBTR' <fs_upload>-wrbtr,"原币科目余额
* 'P' lv_index 'BSEG-DMBTR' <fs_upload>-dmbtr,"本位币金额
'P' lv_index 'BSEG-ZUONR' <fs_upload>-zuonr,"分配/接收银行描述
'P' lv_index 'BSEG-SGTXT' <fs_upload>-item_text."文本
if <fs_upload>-rstgr is not initial.
fill_ftpost 'P' lv_index 'BSEG-RSTGR' <fs_upload>-rstgr. "原因代码
endif.
if <fs_upload>-zfbdt is not initial.
fill_ftpost 'P' lv_index 'BSEG-ZFBDT' <fs_upload>-zfbdt." "付款基准日期/到期日
endif.
if <fs_upload>-vbund is not initial. "贸易伙伴 200325
fill_ftpost 'P' lv_index 'BSEG-VBUND' <fs_upload>-vbund.
endif.
if <fs_upload>-costcenter is not initial.
fill_ftpost 'P' lv_index 'COBL-KOSTL' <fs_upload>-costcenter. "成本中心
endif.
if <fs_upload>-prctr is not initial.
fill_ftpost 'P' lv_index 'COBL-PRCTR' <fs_upload>-prctr. "利润中心
endif.
if <fs_upload>-orderid is not initial.
fill_ftpost 'P' lv_index 'COBL-AUFNR' <fs_upload>-orderid. "内部订单
endif.
* if <fs_upload>-tax_code is not initial.
* fill_ftpost 'P' lv_index 'BSEG-MWSKZ' <fs_upload>-tax_code. "税码
* endif.
at end of number.
call function 'POSTING_INTERFACE_START'
exporting
* I_CLIENT = SY-MANDT
i_function = 'C'
* I_GROUP = ' '
* I_HOLDDATE = ' '
* I_KEEP = ' '
i_mode = lv_mode
i_user = sy-uname
exceptions
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
others = 6.
if sy-subrc <> 0.
endif.
call function 'POSTING_INTERFACE_DOCUMENT'
exporting
i_tcode = 'FB01'
* I_SGFUNCT = ' '
* i_no_auth = ' '
importing
e_msgid = ls_sy-msgid
e_msgno = ls_sy-msgno
e_msgty = ls_sy-msgty
e_msgv1 = ls_sy-msgv1
e_msgv2 = ls_sy-msgv2
e_msgv3 = ls_sy-msgv3
e_msgv4 = ls_sy-msgv4
tables
t_blntab = lt_blntab
t_ftpost = lt_ftpost
t_fttax = lt_fttax
exceptions
account_missing = 1
company_code_missing = 2
posting_key_invalid = 3
posting_key_missing = 4
record_type_invalid = 5
transaction_code_invalid = 6
amount_format_error = 7
too_many_line_items = 8
company_code_invalid = 9
screen_not_found = 10
no_authorization = 11
error_message = 12
others = 13.
if sy-subrc <> 0.
message id sy-msgid
type sy-msgty number sy-msgno
with sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
into <fs_upload>-msg .
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
else.
if ls_sy-msgty = 'S'"
and ( ls_sy-msgno = '312' or ls_sy-msgno = '323' ).
message id ls_sy-msgid
type ls_sy-msgty number ls_sy-msgno
with ls_sy-msgv1
ls_sy-msgv2
ls_sy-msgv3
ls_sy-msgv4
into <fs_upload>-msg .
<fs_upload>-type = 'S'.
<fs_upload>-msg_belnr = ls_sy-msgv1.
<fs_upload>-light = '@5B@'.
else.
message id ls_sy-msgid
type ls_sy-msgty number ls_sy-msgno
with ls_sy-msgv1
ls_sy-msgv2
ls_sy-msgv3
ls_sy-msgv4
into <fs_upload>-msg .
<fs_upload>-type = 'E'.
<fs_upload>-light = '@5C@'.
endif.
endif.
call function 'POSTING_INTERFACE_END'
exporting
i_bdcimmed = 'X'
* I_BDCSTRTDT = NO_DATE
* I_BDCSTRTTM = NO_TIME
exceptions
session_not_processable = 1
others = 2.
if sy-subrc <> 0.
endif.
endat.
endloop.
endform.更多相关内容 -
查看会计凭证
2020-12-20 22:06:49按创建类型划分,SAP系统中的会计凭证有两种类型:手工创建和其它业务自动创建。本文档显示的是向客户开票生成的会计凭证。在查看会计凭证的同时,还可以查看关联的凭证,包括凭证、IDOC等,在此需在界面点击菜单...一.说明
查看会计凭证码是FB03,它可以查询最近一次生成的会计凭证。如果未知凭证号,也可以在操作中进行搜索。
按创建类型划分,SAP系统中的会计凭证有两种类型:手工创建和其它业务自动创建。本文档显示的是向客户开票生成的会计凭证。
在查看会计凭证的同时,还可以查看关联的凭证,包括凭证、IDOC等,在此需在界面点击菜单“环境→凭证环境→关系浏览器”,更多信息参见《
二.常规凭证查看
在前台输入事物码FB03,进入初始屏幕界面,输入凭证编号和公司代码(此两项为必填项),年份为选输项,如图 1所示。按回车键进入图 2界面。
图 1 初始屏幕
图 2 凭证总览
图 2是会计凭证总览界面,可以看到凭证的抬头和三个项目数据。抬头部分显示了凭证编号、公司代码、凭证日期、过账日期等信息。其中参照条目(值1)表明了此会计凭证是由此参照凭证转账过来,参照凭证的类型还未知,可通过以下步骤查询。
条目部分显示了三条行项目,标明了记账码、科目、金额、税等信息。在行项目上用鼠标点击成选择状态,再点击条目查看按钮(
),可以看不同的条目信息,如图 3、图 4分别显示了第1个、第2个行项目信息。
图 3 第1个行项目信息
图 4 第2个行项目信息
在图 2的界面上,用鼠标点击查看凭证抬头按钮(
),弹出对话框如图 5所示。从此图可以看到凭证的类型是RV(开票凭证转账),知会计凭证是由事物码VF01(事物代码条目值)开票时创建的开票凭证0090000003(参考码条目值)自动转账生成的。双击参考码条目中的值,可以进入另一界面查看开票凭证。
图 5 抬头信息对话框
本例的参考凭证还可以用事物码VF03查看。根据不同的的参考事物或参考交易,可用不同的事物码进行查看,常见的如表1所示:
参考事物/参考交易
参考凭证类型
查看事物码
PRCHG 价格修改
价格修改
CKMPCD
RMRP发票收据
发票校验
MIR4
VBRK出具发票
发票
VF03
MKPF材料凭证
物料凭证
MB03 / MIGO
表1 参考凭证查看事物码
-
SAP LSMW会计凭证导入操作手册
2020-06-22 07:00:00以下内容是基于ECC版中LSMW实现会计凭证导入操作手册,仅供大家参考。1.登录界面执行事务代码LSMW显示如下界面:输入项目(project)、子项目(subproject)和对象(...以下内容是基于ECC版中LSMW实现会计凭证导入操作手册,仅供大家参考。
1. 登录界面
执行事务代码LSMW显示如下界面:
输入项目(project)、子项目(subproject)和对象(object),点击创建按钮()输入相应的描述,点击执行按钮或F8(
)进入分步操作界面,项目(project)、子项目(subproject)可以选择系统内已有的,对象(object)需要新增。
1. 操作界面
2.1维护对象属性(Maintain Object Attributes)
选择标准批量直接导入(standard batch/direct input),并且在对象(object)中维护“0100-财务单据”,在方法(method)中维护“0000”,点击保存(
),后退。
2.2维护源结构(Maintain Source Structures)
点击创建(
)定义凭证抬头源结构,见下图:
选中凭证抬头源结构,点击创建(
)定义凭证行项目源结构,见下图:
选择较低层次(lower level):
点击确认(
),完成源结构维护:
点击保存(
),并退出。
2.3维护源字段(Maintain Source Fields)
由于财务会计凭证的导入不是通过录屏方式导入,所以源结构的字段需要用户自行维护,用户可以根据系统标准选择导入会计凭证需要的字段。通过以下方式查找字段
点击上图中的对象预览(object overview)出现下图:
选择列表(list)或表格(table)显示会计凭证的字段,包括凭证抬头字段(表BKPF)和行项目字段(表BSEG):
对于显示结果也可以保存为EXCEL(路径:系统→列表→保存→本地文件),由于系统中的表字段很多,并且从翻译为中文的字面意思也不容易确定具体的字段内容,为了方便查询到所需要的字段,可以在凭证录入界面(事务代码F-02)使用F1查看需要的字段名,然后在上图中或保存为EXCEL中查询该字段信息,维护源字段需要的信息有字段名、类型、长度、描述。收集完需要的字段后执行“2.3维护源字段”。
分别选中会计凭证抬头和会计凭证行项目,点击内容(
)维护需要的相应的凭证抬头字段和行项目字段。
l 会计凭证抬头字段:
l 会计凭证行项目字段:
根据所导入凭证内容需要可以增加如WBS、订单、特别标识等字段。
由于导入会计凭证时需要导入一个抬头和多个行项目。所以在外部文件和系统中需要给出凭证抬头和行项目的标识。
Ø 定义凭证抬头标识
选中会计凭证抬头(DOCUMENTHEAD),点击创建按钮()定义标识字段:
输入抬头标识字段名、字段描述、长度和字段值,确认。
Ø 定义凭证行项目标识
选中会计凭证行项目(DOCUMENTITEM),点击创建按钮(
)定义标识字段:
输入行项目标识字段名、字段描述、长度和字段值,确认。
点击保存(
),并退出。
2.4维护结构联系(Maintain Structure Relations)
将定义的源结构(凭证抬头和凭证行项目)与系统中的表结构进行关联
将上图中的“BGR00”、“BBKPF”与源结构“DOCUMENTHEAD”关联;“BBSEG”与源结构“DOCUMENTITEM”关联。
选中“BGR00”,点击
,选择“DOCUMENTHEAD”进行关联:
“BBKPF”和“BBSEG”的关联方法相同。关联结果如下:
2.5维护字段映射和转化规则(Maintain Field Mapping and Conversion Rules)
将维护的源字段与系统内凭证表字段进行对应设置。
将维护的源字段与系统内凭证表字段进行的方法有两种。一种是选择某一系统中的字段,然后点击
与源结构字段对应;第二种为点击“Extras→Auto-Field Mapping”由系统根据源字段与系统字段的名称自动对应,如下图:
全部点击确认或一直压着回车键直到全部对应完毕。对应结果如下图:
对应完成后,点击保存(
),并退出。
2.6维护字段值、转换、自定义事务(Maintain Fixed Values, Translations, User-Defined Routines)
该步骤不操作,直接跳过。
2.7指定文件(Specify Files)
在执行此步操作前,需要用户先制作好导入用的外部TXT文件,用户可以先在EXCEL文件中整理,整理好后复制到TXT文本中。
对于一些会计科目,某些字段可能不需要输入,则用“/”表示。
制作外部文件后,执行“2.7指定文件(Specify Files)”操作。
选中上图的“Legacy Data”,点击创建按钮(
);或者双击“Legacy Data”:
按照上图选中内容维护即可,维护完成后如下图:
对应完成后,点击保存(
),并退出。
2.8分配文件(Assign Files)
将“2.7指定文件(Specify Files)”中指定的文件分配给源结构(抬头和行项目):
分别选中上图中“DOCUMENTHEAD”和“DOCUMENTITEM”,点击
分配文件,分配结果如下图:
点击保存(
),并退出。
2.9读取数据(Read Data)
读取上传文件中的数据,按系统提示操作即可。
退出执行下一步。
2.10显示读取的数据(Display Read Data)
显示文件中的数据,可检查源字段与文件中的字段对应是否正确。
双击某一行可显示具体数据,检查对应关系。
退出执行下一步。
2.11转换数据(Convert Data)
查看可以导入系统中的条目数,如果在“2.5维护字段映射和转化规则”步骤中源字段与系统字段对应有问题,则在此处会报错。
点击执行:
没有报错,退出执行下一步。
2.12显示转换数据(Display Converted Data)
显示导入系统字段内的数据,可检查源字段与系统字段的对应关系。
双击某一行可查看导入系统中的字段和内容:
没有报错,退出执行下一步。
2.13生成批输入会话(Start Direct Input Program)
将文件中的导入内容生成批处理会话。
选择“Program RFBIBL00”。
传输类型选择“B”,点击执行,如果文件内容有错误,或者不规范,则会提示错误信息,用户需要根据具体的错误信息查明原因,一般会提示“会计科目不存在”、“记账码和SG标识不匹配”等一些制证时常出现的问题,如果文件维护正确,则只有以下三步提示,多于这些提示可能说明文件维护不规范,需要调整后重新读取数据。
1. 执行界面
执行“2.操作界面”中生成的批处理会话,执行事务代码“/nSM35”:
在上图中选中生成的批处理会话,点击处理(
):
按照上图提示维护处理方法,点击
,处理完成会出现下图:
你“在看”我吗?
-
在sap系统设置纸张打印格式(针式打印机)
2021-02-11 09:06:35在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表:1、运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】...在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表:
1、运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】页面(在该页面上有四个按钮:【设备类型】、【打印控制】、【格式类型】、【页格式】);
2、选择【页格式】进入页格式列表界面,选择工具栏上的【修改】图标,工具栏左边会出现【新建】图标(注:不点【修改】图标是不会出现【新建】图标的);选择【新建】图标进入新建页格式界面,输入页格式名称“zkz”,方向选择肖像“Portrait”即竖向,纸张大小为:纸宽“215mm”、纸长“140mm”;(注:方向选为竖向则纸打印时是按竖向来作打印,如方向选横向则按横向打印,当你纸张设为140*215时才可横向打印);保存退出;
3、选择【格式类型】进入格式列表界面,选择工具栏上的【新建】图标进入新建格式界面,格式类型输入“215*140”,类型选择“sapscript”或“abap列表”均可;属性选择前面设置的页格式名称“zkz”,填写注释“xxxxx”;保存退出;
4、选择【设备类型】进入设备类型列表界面,在列表中选择设备类型为“CNSAPWIN”双击进入设备类型(更改)界面,选择工具栏上的【格式】按钮图标进入设备类型格式修改界面,选择【新建】图标,在弹出的对话框的“格式化”框内填入上面所设置的格式类型“215*140”,确定即可。
(备注:嵌入的代码为:1:# CNSAPWIN SAPscript spool form
# Selectformlength fromthe windows printmanager!
# changeWinCharSet to134(GB2312)
\eW134;
2:# Nocontrolcodes!
3:# FormFeed
\f
4: # NewLine
\n )
5、对于是使用write输出报表的,可以双击上述做好的格式类型“215*140”进入maintain format界面,双击要编辑的地方,进入代码编写界面,可在代码中写打印的行间距、字间距、字体、字体大小。
至此就为SAP的报表打印设置了针孔纸的纸张打印格式,接着是在报表中的使用:
6、write输出的方式,不需要在程序中设置,只是在打印时要求用户选择“格式类型”为上面所设置的“215*140”;
7、smarform方式,在使用事务代码smartforms画表格时,在“表格属性”栏的“输出选项”中的“页格式”选择上面所设置的“215*140”即可。
8、对于针式打印机,其默认纸张都是A4,我们需要自定义一种纸张的大小,定义纸张格式为215*140,实际尺寸可设置为214.5mm/139.5mm。
至此,你的ABAP报表就可以使用针式打印打印出正确的格式出来了。
注意:由于SAP与针式打印机之间接口的问题,如果表格线太细,打印出来的表格会有时缺少部分横线和竖线,纠正办法是:加粗表格的表框线,最好设置到20TW。
-
SAP会计凭证查看
2018-05-23 21:19:36根据来源划分,有两种会计凭证:手工创建凭证和其它业务自动创建。该文章显示的是给客户开票生成的会计凭证。 二、凭证查看 在前台输入事务代码FB03,进入初始界面,输入凭证编号、公司代码、会计年度,如图1... -
SAP 发票凭证冻结下达
2020-04-15 16:39:37发票凭证冻结下达: 业务场景: 当MIRO或其他方式做发票校验时,可能会由于超过容差限制、等待付款等原因,出现发票凭证冻结的情况;需要用户下达或释放冻结的凭证后,才能向供应商付款并产生付款等凭证。 可以... -
SAP-SAP预制凭证相关的表
2018-11-13 03:20:12SAP-SAP预制凭证相关的表 -
金色传说:SAP-ABAP-物料凭证增强:锁定库存地点不能生成物料凭证(限制库存物料进出)
2022-02-17 11:45:06金色传说:SAP-ABAP-物料凭证增强:锁定库存地点不能生成物料凭证(限制库存物料进出) -
SAP PCA凭证分割相关配置
2020-02-27 19:09:07目录 相关概念 把方案和客户字段分配到分类帐 为文档拆分给总分类帐科目分类 为文档拆分给文档类型分类 定义零余额清算科目 定义总帐会计核算的凭证分解特征 定义成本控制的凭证拆分特征 编辑... -
SAP中关于发票日期和凭证日期的异同原因分析
2021-09-10 08:37:53比如应收中,FB60和F-43两个事务界面上一个是发票日期(英文Invoice),一个是凭证日期;在应付中也有相同的情况; 通过对帮忙帮助,中英文信息的对尝试找寻两者区别的线索。似乎也是一个意思。 这个问题我尚无... -
SAP FI 系列 (021) - 周期性凭证
2020-05-08 23:27:27周期性凭证 (Recurring document) 是 SAP 提供的另一种辅助凭证录入的方法,它也是一种模板,但除了模板功能之外,还包括对凭证输入的一些控制参数,比如首次运行时间,末次运行时间,间隔时间等。 创建周期性凭证 ... -
SAP FI 系列 (019) - 会计凭证的冲销和反记账
2020-12-30 05:48:42对做错的会计凭证,SAP 并不提供常规的删除操作,需要通过冲销 (reversal) 的方式来消除数据影响。对会计凭证的冲销,财务有红字冲销和蓝字冲销的概念。假设我们做了一张会计凭证,需要冲销,下图展示了红字冲销和蓝... -
SAP中维护销售凭证的复制控制应用问题实例
2022-01-05 14:46:19销售订单的创建是比较常规的业务操作,在此基础上,创建新的订单时通过参照创建是 后台配置路径如下:SPRO——销售与分销——销售凭证——维护销售凭证的复制控制 -
SAP MM MIGO界面上的Freight标签页
2022-01-05 23:04:52SAP MM MIGO界面上的Freight标签页 事务代码MIGO针对采购订单收货的时候,能出现Freigth Tab。 这是笔者玩SAP系统十多年来第一次知道的,就在今天,就在刚刚。自然引起了笔者强烈的好奇心。经过上网查资料,... -
SAP FI 系列 (015) - 手工录入会计凭证
2020-05-04 17:07:38SAP 需要手工录入的凭证很少,主要是零星费用、收款付款等操作。...SAP 提供两种凭证录入的界面,一种是以 FB50 为代表的界面: SAP 将这种界面成为 Enjoy Screen。但由于 SAP 有 posting key 的概念,F... -
SAP FI 系列 (013) - 会计凭证的配置
2020-04-16 17:58:41创建会计凭证后,生成会计凭证号码,SAP 系统根据 company code, fiscal year 以及 document number 三个条件唯一标识一个会计凭证。会计凭证一般基于年度,每年重新开始凭证编号。这个与国内的惯例不同。 Document ... -
销售凭证至销售凭证的复制
2021-02-11 09:09:11在销售凭证范围内,除独自创建外,还可以参照其它凭证创建,这就需要有相关的复制配置。以最为常用的销售订单为例,可以参照协议、合同等创建,也可以参照其它销售订单创建。销售凭证到销售凭证的复制配置,包含表头... -
SAP MM - MIGO界面里的Via Delivery选项
2020-06-11 12:59:35SAP MM MIGO界面里的'Via Delivery'选项 MIGO界面,选择A02-Return Delivery, R02-Material document,输入物料凭证号,此时界面上会出现'Via Delivery'选项,如下图示,勾选这个选项, 保存后,不会生成... -
SAP那些事-实战篇-1-号码段配置和维护
2022-03-13 21:38:25所有文章在公众号“MZ信息化咨询杂谈”同步更新! 郑重声明:本博客所发文章全部为原创,其他地方所看到同样文章如无授权,均为盗用!以下为本篇正文(文章是多年以来积累...我们都知道SAP中每个模块都需要对号 -
外行假装内行,我也来谈谈SAP BAPI和BADI
2021-12-30 17:53:30外行假装内行,我也来谈谈SAP BAPI和BADI A, 什么是BAPI? BAPI是business application programming interface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/... -
SAP CO操作手册 创建成本中心主数据
2020-12-19 23:51:27菜单路径会计->控制->成本中心会计->主数据->成本中心->单个处理->创建事务代码KS01双击或在处输入SAP事务代码:KS01进入下一屏幕(如果已在SAP系统中登录过成本控制范围的窗口时,该步将不会出现而直接... -
释疑の手工凭证界面不显示页数
2017-02-24 09:18:02创建手工凭证F-02 或者 FB50时候不显示页数一栏。 这个实则是针对特定国家的设定,我们仅需设置个人参数即可。 进入Su3——参数 参数ID : CSF 参数值:AR 保存即可。 -
SAP WM初阶之WM层面的移动类型可以配置成后续TO单据自动产生
2022-02-10 16:40:42SAP WM初阶之WM层面的移动类型可以配置成后续TO单据自动产生 在SAP WM模块里,可以通过后台配置,使得相关WM层面移动类型相关的TO单据自动生成。这样可以减轻业务人员手工操作的工作量。 具体配置如下: ... -
SAP 可配置BOM创建
2017-02-28 10:03:26SAP 可配置BOM -
SAP MM 第一节 后台配置
2021-10-03 23:10:06SAP MM配置2 MM2.1 组织2.1.1 工厂SM30 V_T001W,建8810和88112.1.2 OX18公司代码分配工厂2.1.3 OX08定义采购组织2.1.4 OX01采购组织分配公司代码2.1.5 OX17给工厂分配采购组织2.1.6 OMKI给工厂分配标准采购组织... -
SAP S4 MM配置详解之六:采购订单和采购申请的凭证类型及号码范围及屏幕字段控制配置
2020-05-28 19:38:34创建采购申请的号码段01,创建一个采购申请凭证类型Z01,分配号码范围内部号码范围01,配置允许的项目类别L,项目类别为L 的申请项目只能转换成项目类别为L 的RFQ 项目(凭证类型为AN). 配置步骤 配置1: 上面... -
SAP中使用LSMW批量导入总账科目
2021-12-17 09:27:51再检查公司代码是否是我们需要导入的公司代码(如:将HNBC的科目导入到SOFT公司代码下,就需要将HNBC改为SOFT) 无误后将excel另存为文本格式(sap不认excel格式) 准备就绪后,双击第七步进入下图,再点击新建按钮 ... -
SAP MM MI01界面上的‘Freeze book inventory’标记初探
2018-12-05 12:02:33IM 层面盘点凭证创建事务代码MI01的初始界面,有一个选项叫做‘Freeze book inventory’的, 在之前的项目里,基本也没有用到它。项目实践中,这个盘点凭证的创建界面一般会勾选Posting Block选项。那对于... -
SAP License:SAP权限对象文集
2021-02-24 10:13:27但这里通过后,并不代表你可以将所要操作的业务进行完毕,在不同的地方,系统还会检查其他的授权对象,比如在操作到与会计凭证的公司代码相关的事务时,系统会检查f_bkpf_buk 这个授权对象,只有这个检查通过后,...