abap 批量创建供应商

因为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

欢迎各位友友交流

相关推荐
独自破碎E2 小时前
Java是怎么实现跨平台的?
java·开发语言
墨有6662 小时前
C++ string 部分功能详解:迭代器、初始化与常用函数
开发语言·c++
Evand J3 小时前
【MATLAB例程】三维环境下,EKF融合INS与DVL的核心程序,用于惯导和速度传感器的数据融合滤波。附下载链接
开发语言·matlab
枫叶丹43 小时前
【Qt开发】Qt系统(二)-> 事件分发器
c语言·开发语言·数据库·c++·qt·系统架构
独自破碎E3 小时前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
工业HMI实战笔记3 小时前
【拯救HMI】让老设备重获新生:HMI低成本升级与功能拓展指南
linux·运维·网络·信息可视化·人机交互·交互·ux
澜莲花3 小时前
python图色之opencv基础---验证码实战
开发语言·python·opencv
沐知全栈开发3 小时前
Numpy 数组操作
开发语言
yaoxin5211233 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言