因为S4是用BP创建供应商的,ECC系统用不了,只能用XK01事务码创建供应商,调用的BAPI也不一样,由于之前写过一版创建供应商的函数,所以这次写的程序就是调用之前的函数,之前只能创建基础视图,现在是各个视图的数据都有维护。
首先是上传模版,我的模版是这样设计的:


字段的设计也是因人而异了,看大家需求
然后是函数的部分
导出就是很简单的消息和字符标识

表的设计是这样



函数代码:
java
FUNCTION zrfc_vendor.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(L_RETUN) TYPE CHAR1
*" VALUE(L_RTMSG) TYPE Z_RTMSG
*" TABLES
*" GT_ITAB STRUCTURE ZST_VENDOR_BASIS
*"----------------------------------------------------------------------
DATA: ls_return TYPE bapiret2."返回消息结构
DATA: ls_master_data TYPE vmds_ei_main."供应商主数据结构
DATA: ls_master_data_correct TYPE vmds_ei_main, "成功处理的供应商主数据
ls_message_correct TYPE cvis_message, "成功消息
ls_master_data_defective TYPE vmds_ei_main, "处理失败的供应商主数据
ls_message_defective TYPE cvis_message. "失败消息
DATA: ls_vmds_ei_extern TYPE vmds_ei_extern ."外部数据接口
DATA: ls_correct_extern TYPE vmds_ei_extern."存储已验证通过的外部数据
DATA: ls_remarks TYPE cvis_ei_rem."供应商备注或附加说明信息
DATA: ls_bank TYPE cvis_ei_cvi_bankdetail."存储供应商银行账户信息
DATA: ls_communication_phone TYPE cvis_ei_phone_str, "存储电话
ls_communication_fax TYPE cvis_ei_fax_str, "传真
ls_communication_smtp TYPE cvis_ei_smtp_str. "邮箱
DATA: lv_string TYPE string .
DATA: lv_approved_date TYPE string,
lv_approved_date1 TYPE string.
DATA: lv_adrnr TYPE adrnr, "存储地址编号
ls_knvk TYPE knvk, "存储供应商联系人
lv_retcode TYPE nrreturn, "存储操作返回代码
lv_person_number TYPE ad_persnum. "存储联系人的人员编号(?)
DATA: ls_cvi_bankdetail TYPE cvis_ei_cvi_bankdetail,
ls_bankdetail_key TYPE cvis_ei_bankdetail_key,
ls_bankdetail_data TYPE cvis_ei_bankdetail_data,
ls_bankdetail_datax TYPE cvis_ei_bankdetail_datax.
DATA: lv_max_lifnr TYPE lifnr."存储系统中当前最大的供应商编号
DATA: ls_vmds_cmp TYPE vmds_ei_company, "存储供应商在公司代码视图(Company Code View)的财务数据
ls_vmds_pur TYPE vmds_ei_purchasing. "存储供应商在采购组织视图(Purchasing Organization View)的采购数据
* LS_VMDS_FUN TYPE VMDS_EI_FUNCTIONS."定义供应商的合作伙伴功能(Partner Functions)
DATA: zlfbk TYPE lfbk.
DATA:iv_flag TYPE c,
iv_flag_bukrs TYPE c,
iv_flag_ekorg TYPE c.
DATA:lt_msg TYPE bapiret2_t,
ls_msg TYPE bapiret2.
DATA:lt_get TYPE vmds_ei_extern_t,
ls_get TYPE vmds_ei_extern.
CLEAR:ls_return ,
ls_master_data ,
ls_master_data_correct ,
ls_message_correct ,
ls_master_data_defective ,
ls_message_defective ,
ls_vmds_ei_extern ,
ls_correct_extern ,
ls_remarks ,
ls_bank ,
ls_communication_phone ,
ls_communication_fax ,
ls_communication_smtp ,
lv_string ,
lv_approved_date ,
lv_approved_date1 ,
lv_adrnr ,
ls_knvk ,
lv_retcode ,
lv_person_number ,
ls_cvi_bankdetail ,
ls_bankdetail_key ,
ls_bankdetail_data ,
ls_bankdetail_datax ,
lv_max_lifnr ,
ls_vmds_cmp ,
ls_vmds_pur ,
* LS_VMDS_FUN ,
zlfbk ,
iv_flag .
CLEAR ls_vmds_ei_extern.
**防呆,有些数据是必输项目
* LOOP AT gt_itab.
*
* IF gt_itab-bukrs IS INITIAL.
* CONCATENATE '请输入公司代码BUKRS' gt_itab-msg_err_text INTO gt_itab-msg_err_text.
* ENDIF.
*
* ENDLOOP.
LOOP AT gt_itab.
* 维护标识:插入、更新
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gt_itab-lifnr
IMPORTING
output = gt_itab-lifnr.
SELECT SINGLE COUNT(*) FROM lfa1 WHERE lifnr = gt_itab-lifnr.
IF sy-subrc = 0.
iv_flag = 'U' .
ELSE.
iv_flag = 'I' .
ENDIF.
ls_vmds_ei_extern-header-object_task = iv_flag.
IF gt_itab-lifnr IS NOT INITIAL.
ls_vmds_ei_extern-header-object_instance-lifnr = gt_itab-lifnr. "供应商
ENDIF.
**处理公司层面的数据
CLEAR ls_vmds_cmp.
SELECT SINGLE COUNT(*) FROM lfb1 WHERE lifnr = gt_itab-lifnr AND bukrs = gt_itab-bukrs.
IF sy-subrc = 0.
iv_flag_bukrs = 'U' .
ELSE.
iv_flag_bukrs = 'I' .
ENDIF.
ls_vmds_cmp-task = iv_flag_bukrs.
ls_vmds_cmp-data_key-bukrs = gt_itab-bukrs.
ls_vmds_cmp-data-akont = gt_itab-akont."统御科目
ls_vmds_cmp-data-zterm = gt_itab-zterm."付款条件
ls_vmds_cmp-data-zwels = gt_itab-zwels."付款方式
ls_vmds_cmp-datax-akont = 'X'.
ls_vmds_cmp-datax-zterm = 'X'.
ls_vmds_cmp-datax-zwels = 'X'.
APPEND ls_vmds_cmp TO ls_vmds_ei_extern-company_data-company.
*
**处理采购组织层面的数据
CLEAR ls_vmds_pur.
SELECT SINGLE COUNT(*) FROM lfM1 WHERE lifnr = gt_itab-lifnr AND ekorg = gt_itab-ekorg.
IF sy-subrc = 0.
iv_flag_ekorg = 'U' .
ELSE.
iv_flag_ekorg = 'I' .
ENDIF.
ls_vmds_pur-task = iv_flag_ekorg.
ls_vmds_pur-data_key-ekorg = gt_itab-ekorg.
ls_vmds_pur-data-waers = gt_itab-waers."订单货币
ls_vmds_pur-data-zterm = gt_itab-zterm1."付款条件
ls_vmds_pur-data-inco1 = gt_itab-inco1.
ls_vmds_pur-data-inco2 = gt_itab-inco2.
ls_vmds_pur-data-webre = gt_itab-webre.
ls_vmds_pur-data-ekgrp = gt_itab-ekgrp.
ls_vmds_pur-data-kalsk = gt_itab-kalsk.
ls_vmds_pur-datax-waers = 'X'.
ls_vmds_pur-datax-zterm = 'X'.
ls_vmds_pur-datax-inco1 = 'X'.
ls_vmds_pur-datax-inco2 = 'X'.
ls_vmds_pur-datax-webre = 'X'.
ls_vmds_pur-datax-ekgrp = 'X'.
ls_vmds_pur-datax-kalsk = 'X'.
APPEND ls_vmds_pur TO ls_vmds_ei_extern-purchasing_data-purchasing.
*处理基础层的数据
ls_vmds_ei_extern-central_data-central-data-ktokk = gt_itab-ktokk.
ls_vmds_ei_extern-central_data-central-datax-ktokk = 'X'.
ls_vmds_ei_extern-central_data-address-task = iv_flag.
ls_vmds_ei_extern-central_data-address-postal-data-title = gt_itab-title_medi.
ls_vmds_ei_extern-central_data-address-postal-data-name = gt_itab-name1.
ls_vmds_ei_extern-central_data-address-postal-data-name_2 = gt_itab-name2.
ls_vmds_ei_extern-central_data-address-postal-data-name_3 = gt_itab-name3.
ls_vmds_ei_extern-central_data-address-postal-data-sort1 = gt_itab-sort1.
ls_vmds_ei_extern-central_data-address-postal-data-sort2 = gt_itab-sort2.
ls_vmds_ei_extern-central_data-address-postal-data-street = gt_itab-street.
ls_vmds_ei_extern-central_data-address-postal-data-postl_cod1 = gt_itab-post_code1.
ls_vmds_ei_extern-central_data-address-postal-data-city = gt_itab-city1.
ls_vmds_ei_extern-central_data-address-postal-data-country = gt_itab-country.
ls_vmds_ei_extern-central_data-address-postal-data-region = gt_itab-region.
ls_vmds_ei_extern-central_data-address-postal-data-langu = gt_itab-langu.
ls_vmds_ei_extern-central_data-address-postal-datax-title = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-name = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-name_2 = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-name_3 = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-sort1 = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-sort2 = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-street = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-postl_cod1 = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-city = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-country = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-region = 'X'.
ls_vmds_ei_extern-central_data-address-postal-datax-langu = 'X'.
*处理电话
ls_communication_phone-contact-task = iv_flag.
ls_communication_phone-contact-data-telephone = gt_itab-tel_number.
ls_communication_phone-contact-datax-telephone = 'X'.
APPEND ls_communication_phone TO ls_vmds_ei_extern-central_data-address-communication-phone-phone.
*处理传真
ls_communication_fax-contact-task = iv_flag.
ls_communication_fax-contact-data-fax = gt_itab-fax_number.
ls_communication_fax-contact-datax-fax = 'X'.
APPEND ls_communication_fax TO ls_vmds_ei_extern-central_data-address-communication-fax-fax.
**处理银行数据
* LS_BANK-TASK = IV_FLAG.
* LS_BANK-DATA_KEY-BANKS = gt_itab-banks.
* LS_BANK-DATA_KEY-BANKL = gt_itab-bankl.
* LS_BANK-DATA_KEY-BANKN = gt_itab-bankn.
* LS_BANK-DATA-KOINH = gt_itab-koinh.
* LS_BANK-DATA-BVTYP = gt_itab-bvtyp.
* LS_BANK-DATAX-KOINH = 'X'.
* LS_BANK-DATAX-BVTYP = 'X'.
* APPEND LS_BANK TO LS_VMDS_EI_EXTERN-CENTRAL_DATA-BANKDETAIL-BANKDETAILS.
APPEND ls_vmds_ei_extern TO ls_master_data-vendors.
SET UPDATE TASK LOCAL.
* 调用api维护供应商
CALL METHOD vmd_ei_api=>maintain_bapi
EXPORTING
iv_collect_messages = 'X'
is_master_data = ls_master_data
IMPORTING
es_master_data_correct = ls_master_data_correct
es_message_correct = ls_message_correct
es_master_data_defective = ls_master_data_defective
es_message_defective = ls_message_defective.
* 返回结果处理
lt_msg = ls_message_correct-messages.
LOOP AT lt_msg INTO ls_msg WHERE type = 'E'.
CONCATENATE gt_itab-msg_err ls_msg-type ':' ls_msg-message '。' INTO gt_itab-msg_err.
MODIFY gt_itab.
ENDLOOP.
lt_msg = ls_message_defective-messages.
LOOP AT lt_msg INTO ls_msg WHERE type = 'E'.
CONCATENATE gt_itab-msg_err ls_msg-type ':' ls_msg-message '。' INTO gt_itab-msg_err.
MODIFY gt_itab.
ENDLOOP.
lt_get[] = ls_master_data_correct-vendors.
LOOP AT ls_message_defective-messages
TRANSPORTING NO FIELDS
WHERE type CA 'EA'.
EXIT.
ENDLOOP.
READ TABLE lt_get INTO ls_get INDEX 1.
IF ls_get-header-object_instance-lifnr IS INITIAL. "失败
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* IT_LIFNR-FLAG = 'N' .
CONCATENATE '供应商创建失败:' gt_itab-lifnr gt_itab-msg_err INTO gt_itab-msg_err.
MODIFY gt_itab.
l_retun = 'E'.
l_rtmsg = gt_itab-msg_err.
ELSE."成功
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
READ TABLE lt_get INTO ls_get INDEX 1.
gt_itab-lifnr = ls_get-header-object_instance-lifnr.
CONCATENATE '供应商创建成功,供应商编号是:' gt_itab-lifnr INTO gt_itab-msg_err.
MODIFY gt_itab.
l_retun = 'S'.
l_rtmsg = 'S:成功'.
* IT_LIFNR-FLAG = 'Y' .
ENDIF.
ENDLOOP.
ENDFUNCTION.
有了函数,程序写起来就简单多了,程序的代码是:
java
*&---------------------------------------------------------------------*
*& Report ZVENDOR
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvendor.
* 定义类型池
TYPE-POOLS: vrm.
TYPE-POOLS: slis.
INCLUDE zpub_lvc_func."包含功能模块
INCLUDE <icon>."包含图标定义
TABLES:sscrfields,ekpo.
DATA: functxt TYPE smp_dyntxt."定义动态文本类型变量
*定义接收excel数据的内表
DATA: BEGIN OF gt_itab OCCURS 0.
* ebeln LIKE ekpo-ebeln,
* ebelp LIKE ekpo-ebelp,
* netpr LIKE ekpo-netpr,
INCLUDE TYPE zst_vendor_basis.
DATA:
icon TYPE char4,
return TYPE char1,
message TYPE z_rtmsg,
END OF gt_itab.
FIELD-SYMBOLS:<wa_itab> LIKE LINE OF gt_itab.
*PARAMETERS p1 RADIOBUTTON GROUP grp1 USER-COMMAND cmd1 ."上传数据
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
*PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY DEFAULT '.XLS' MODIF ID m_f .
PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY DEFAULT '.XLS'.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
sscrfields-ucomm = 'FC01' .
functxt-icon_id = icon_export. "文本字
functxt-icon_text = '下载导入模版'. "菜单制作器:
sscrfields-functxt_01 = functxt.
SELECTION-SCREEN: FUNCTION KEY 1.
AT SELECTION-SCREEN .
CASE sscrfields-ucomm.
WHEN 'FC01'."下载模版
CALL FUNCTION 'ZDOWNLOAD_TEMPLE_FILE'
EXPORTING
p_templename = 'ZVENDOR'.
WHEN OTHERS .
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask = ',*.xls,*.xls;,*.xlsx,*.xlsx.'
CHANGING
file_name = p_file
EXCEPTIONS
mask_too_long = 1
OTHERS = 2.
START-OF-SELECTION.
PERFORM excel_data.
*PERFORM deal_data.
PERFORM alv_data.
*&---------------------------------------------------------------------*
*& Form excel_data
*&---------------------------------------------------------------------*
* excel取数,读取excel导入的目标数据
*----------------------------------------------------------------------*
FORM excel_data.
DATA: i_excel TYPE TABLE OF alsmex_tabline .
DATA w_excel TYPE alsmex_tabline.
DATA: zitem TYPE i.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = '1' "从第一列开始读取
i_begin_row = '3' "从第2行开始读取
i_end_col = '25' "Excel的列数,一共读取八列
i_end_row = '9999'
TABLES
intern = i_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Read excel error' RAISING error_msg.
ENDIF.
FIELD-SYMBOLS : <fs> .
SORT i_excel BY row col .
DATA num_col TYPE i .
LOOP AT i_excel INTO w_excel.
CASE w_excel-col.
WHEN 1.
gt_itab-lifnr = w_excel-value.
WHEN 2.
gt_itab-bukrs = w_excel-value.
WHEN 3.
gt_itab-ekorg = w_excel-value.
WHEN 4.
gt_itab-ktokk = w_excel-value.
WHEN 5.
gt_itab-name1 = w_excel-value.
WHEN 6.
gt_itab-name2 = w_excel-value.
WHEN 7.
gt_itab-name3 = w_excel-value.
WHEN 8.
gt_itab-sort1 = w_excel-value.
WHEN 9.
gt_itab-street = w_excel-value.
WHEN 10.
gt_itab-post_code1 = w_excel-value.
WHEN 11.
gt_itab-city1 = w_excel-value.
WHEN 12.
gt_itab-country = w_excel-value.
WHEN 13.
gt_itab-langu = w_excel-value.
WHEN 14.
gt_itab-tel_number = w_excel-value.
WHEN 15.
gt_itab-fax_number = w_excel-value.
WHEN 16.
gt_itab-akont = w_excel-value.
WHEN 17.
gt_itab-zwels = w_excel-value.
WHEN 18.
gt_itab-zterm = w_excel-value.
WHEN 19.
gt_itab-waers = w_excel-value.
WHEN 20.
gt_itab-inco1 = w_excel-value.
WHEN 21.
gt_itab-inco2 = w_excel-value.
WHEN 22.
gt_itab-ekgrp = w_excel-value.
WHEN 23.
gt_itab-kalsk = w_excel-value.
WHEN 24.
gt_itab-webre = w_excel-value.
WHEN 25.
gt_itab-zterm1 = w_excel-value.
WHEN OTHERS.
ENDCASE.
AT END OF row.
APPEND gt_itab.
CLEAR:gt_itab.
ENDAT .
" ENDIF.
CLEAR w_excel.
ENDLOOP.
ENDFORM. "excel_data
*&---------------------------------------------------------------------*
*& Form deal_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM deal_data.
LOOP AT gt_itab ASSIGNING <wa_itab>.
IF <wa_itab>-ktokk IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入供应商账户组KTOKK。' INTO <wa_itab>-message .
ENDIF.
IF <wa_itab>-name1 IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入供应商名称1NAME1。' INTO <wa_itab>-message .
ENDIF.
IF <wa_itab>-sort1 IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入搜索指引1SORT1。' INTO <wa_itab>-message .
ENDIF.
IF <wa_itab>-country IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入城市country。' INTO <wa_itab>-message .
ENDIF.
IF <wa_itab>-langu IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入语言langu。' INTO <wa_itab>-message .
ENDIF.
IF <wa_itab>-lifnr IS INITIAL.
<wa_itab>-icon = icon_red_light.
CONCATENATE <wa_itab>-message 'E:请输入供应商编号lifnr。' INTO <wa_itab>-message .
ENDIF.
data: GT_itab1 TYPE TABLE OF ZST_VENDOR_BASIS WITH HEADER LINE .
DATA:ls_itab TYPE ZST_VENDOR_BASIS.
CLEAR ls_itab.
CLEAR GT_itab1[].
MOVE-CORRESPONDING <wa_itab> to ls_itab.
APPEND ls_itab to GT_itab1[].
IF <wa_itab>-icon NE icon_red_light.
CALL FUNCTION 'ZRFC_VENDOR'
IMPORTING
l_retun = <wa_itab>-return
l_rtmsg = <wa_itab>-message
TABLES
gt_itab = GT_itab1[].
<wa_itab>-MSG_ERR = GT_itab1-msg_err .
ENDIF.
ENDLOOP.
ENDFORM. "deal_data
*&---------------------------------------------------------------------*
*& Form alv_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_data.
alv_clear_data.
status = 'X'. "保存按钮
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'ICON' '标识'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'MSG_ERR' '标识'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'RETURN' '返回表示'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'MESSAGE' '消息'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'LIFNR' '供应商编号'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'BUKRS' '公司代码'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'EKORG' '采购组织'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'KTOKK' '账户组'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'NAME1' '名称1'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'NAME2' '名称2'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'NAME3' '名称3'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'SORT1' '搜索项'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'STREET' '街道'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'POST_CODE1' '邮政编码'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'CITY1' '城市'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'COUNTRY' '国家'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'LANGU' '语言'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'TEL_NUMBER' '电话'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'FAX_NUMBER' '传真'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'AKONT' '统驭科目'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'ZWELS' '付款方式'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'ZTERM' '付款条件'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'WAERS' '订单货币'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'INCO1' '国际贸易条款1'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'INCO2' '国际贸易条款2'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'EKGRP' '采购组'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'KALSK' '方案组 供应商'.
alv_add_data 'GT_ITAB' '' '' '' '' '' '' 'WEBRE' '基于收货的发票校验'.
PERFORM get_leng TABLES gt_itab i_fieldcat. "使ALV长度默认为其本身的字段
alv_show_data gt_itab.
ENDFORM. "ALV_data
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSAVE'.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_o_grid1.
CALL METHOD l_o_grid1->check_changed_data.
CASE r_ucomm.
WHEN '&ZPY'.
* READ TABLE gt_itab WITH KEY zicon = icon_red_light.
IF sy-subrc = 0.
* MESSAGE 'E:数据有误,请检查' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
ENDIF.
* ztext1 = '是否确定保存数据'.
* PERFORM do_message.
* PERFORM sava_data.
* rs_selfield-refresh = 'X'.
PERFORM deal_data.
rs_selfield-refresh = 'X'.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
欢迎各位友友交流